اكتشاف الرموز
"اكتشاف الرموز" هو الطريقة التي تحدد بها SDK ما يحتاج إلى ترجمة — تلقائيًا، من الطريقة التي تكتب بها واجهتك. هناك أربع لبنات أساسية، لكل منها شكل مختلف من المحتوى.
t() — سلسلة نصية مضمّنة
الدالة الأساسية التي تعتمد عليها. استدعِها بالنص المصدر لتعيد الترجمة الخاصة بلغة الواجهة الحالية (أو النص المصدر نفسه إن لم تكن تلك اللغة جاهزة بعد). تجمع الفئة الاختيارية العبارات المترابطة وتُمرَّر إلى المترجم الآلي بوصفها سياقًا، بينما تملأ المعاملات قيم {placeholders}.
const t = useT();
// t(phrase, category?, params?)
t('Hello, {name}!', 'Greetings', { name }); <Translate> — كتلة محتوى
غلِّف منطقة من الترميز وسيقوم SDK بتحويلها إلى رموز ضمن كتلة محتوى — إذ يصبح كل عقدة نصية عبارة — ثم يعيد ترجمة الكتلة بأكملها عند كل تغيير في اللغة. وتُعرَّف الكتلة بمعرّف ثابت مشتق من محتواها وفئتها، ولذلك يتم التعرف على الكتلة نفسها عبر عمليات العرض وإعادة التحميل.
<Translate category="Home">
<p>Welcome to our store. Browse the catalog in your language.</p>
</Translate> <Phrase> — جملة واحدة تحتوي على وسوم
عندما تحتوي الجملة على ترميز مضمّن أو قيم مدمجة، يحتفظ <Phrase> بها كوحدة واحدة قابلة للترجمة — فتُترجم "Hi Sarah, you have 3 items" كجملة واحدة طبيعية بدلًا من أجزاء متفرقة. ويدعم المعاملات وصيغ الجمع.
<Phrase category="Cart" params={{ name: 'Sarah', count: 3 }}>
Hi %name%, you have %count% items in your cart.
</Phrase> علامات العناصر النائبة. اكتب الاستيفاء على هيئة {name}. وداخل الترميز الذي يستخدم فيه إطار العمل { } بالفعل (JSX وVue وSvelte)، اكتب %name% بدلًا من ذلك — تعيدها حزمة SDK تلقائيًا إلى {name} عند التقاطها للعبارة.
<DontTranslate> — اتركه كما هو
أسماء العلامات التجارية والشيفرة البرمجية والمعرّفات والعناوين — حدّد منطقة لعدم ترجمتها أبدًا. تُعرض بالسمة translate="no" ويتجاوزها الاكتشاف تمامًا.
<p>Welcome! <DontTranslate>This sentence always stays in English.</DontTranslate> Thanks for visiting!</p> لا يحدث الاكتشاف إلا بمفتاح كتابة. ففي المتصفح تُرسِل مفتاح للقراءة فقط، ولذلك لا تسجّل حزمة SDK أي شيء، بل تجلب الترجمات الموجودة فعلًا فحسب. التسجيل نشاط يتم في مرحلة التطوير. راجع المفاتيح والبيئات.