مخزن اللغة (locale store)
كل ما هو تفاعلي في Langsys يعتمد على قطعة صغيرة واحدة من الحالة: مخزن يحتفظ باللغة الحالية. عيّنها، وستُعاد تهيئة كل ترجمة في الشجرة. بلا إعادة تحميل ولا تغيير في المسار.
مخزن واحد يحرّك كل شيء
تمرّر إلى LangsysApp.init() قيمة UserLocaleStore — وهي قيمة تفاعلية تحمل سلسلة نصية للغة المحلية. وهي أيًّا كان ما يسميه إطار عملك تفاعليًا: إشارة Langsys، أو writable في Svelte، أو ref في Vue. اكتب فيها وسيعيد SDK حلّ كل t() و<Translate> و<Phrase> وفق اللغة المحلية الجديدة.
import { LangsysApp, createLocaleStore } from 'langsys-js-react';
const locale = createLocaleStore('en-US'); // one reactive store
await LangsysApp.init({
projectid,
key, // read-only in the browser
UserLocaleStore: locale,
});
// Later — anywhere in the app:
locale.set('es-ES'); // every t(), <Translate>, <Phrase> re-renders كل إطار عمل يقرؤها بشكل أصلي
تختلف آلية التفاعلية من إطار عمل إلى آخر، لكن النموذج واحد — مصدر وحيد للحقيقة للغة المحلية النشطة، يُعرض عبر الأساليب التي تستخدمها بالفعل.
// React — a hook returns the current t, re-rendering on change
const t = useT();
// Vue — a composable ref, auto-unwrapped in templates
const t = useT();
// Svelte — a store, auto-subscribed with $
$t('Hello, {name}!', 'Greetings', { name }); التبديل يعيد الترجمة في مكانها
عندما يتغيّر المخزن، يجلب SDK فهرس اللغة الجديدة — بطلب واحد ودون إعادة تحميل الصفحة — ويعيد ترجمة كل شيء عند وصوله. وإلى ذلك الحين تحتفظ الصفحة باللغة التي كانت تعرضها، فلا يعود أي شيء إلى النص الأصلي.
الاستيفاء وصيغ الجمع
تملأ المعاملات قيم {placeholders}. وتبقى الجمل التي تتضمن عددًا بصيغة واحدة في شيفرتك: إذ تولّد Langsys صيغ الجمع لكل لغة أثناء الترجمة، وتعرض الحزمة SDK الصيغة المطابقة — وقت العرض، وفق اللغة النشطة.
t('You have {count} items', 'Cart', { count });
// You write that one flat sentence. Langsys generates each locale's plural
// forms during translation, and the SDK renders the branch your count matches:
// en → "1 item" / "3 items" · es → "1 artículo" / "3 artículos" حيلة العرض جنبًا إلى جنب. تفوّض كل واجهة ربط عملها إلى نواة langsys-js-typescript مشتركة واحدة، بحيث يمكن لمخزن واحد تشغيل React وVue وSvelte في الوقت نفسه — وهذا بالضبط ما يجعل العرض التوضيحي للمقارنة يُبقي الثلاثة متزامنة تمامًا من مبدّل واحد.
جرّبه مباشرة: تتيح لك ساحة التجربة التفاعلية تعديل العبارة والمعاملات، وتبديل اللغة، ومشاهدة SDK الحقيقية وهي تعيد الترجمة.