@weglot/translate-react
ترجم
React,
Next.js أو
Vite تطبيق
لا توجد أغلفة t()، ولا ملفات JSON. أضف مكونًا إضافيًّا للبناء ومفتاح Weglot مفتاح API: يتم ترجمة النص الموجود في JSX الخاص بك عند بناء التطبيق، ويقوم فريقك بتحرير الترجمات Weglot دون المساس بالكود.
انسخ المطالبة الخاصة بـ · · · اقرأ الوثائق · عرض على npm
أكثر من 111,368 علامة تجارية عالمية تثق في Weglot لترجمة مواقعها الإلكترونية
// what your users see
كود JSX الذي كتبته، في كل لغة
اكتب النص مرة واحدة. Weglot ويتم ترجمته أثناء عملية البناء.
نفس الزر، خمس لغات. قياس العرض في الوقت الفعلي.
export default function Settings() { return ( <button>Save changes</button> ); } // no key, no t(), no en.json
لا حاجة لمفاتيح، ولا حاجة لـ t(). اكتب النص بلغة JSX، وهذا كل شيء.
// how it works
أربع خطوات. تظل مكوناتك كما هي.
اللغات المصدر والهدف مستمدة من Weglot مشروعك، وليس من الكود الخاص بك. يقوم المكون الإضافي بقراءة النص الموجود في JSX الخاص بك أثناء عملية البناء ويحضر ترجماته.
-
قم بتثبيت الحزمة وأضف مفتاح API الخاص بك
قم بإنشاء Weglot مشروع 2.0، ثم انسخ مفتاح واجهة برمجة التطبيقات (API) الخاص به من صفحة المشروع الإعدادات. يبدأ المفتاح بـ
pk_. احتفظ بـ.envخارج نطاق التحكم في الإصدارات.terminal · .env$ npm install @weglot/translate-react # .env WEGLOT_API_KEY=pk_your_weglot_api_key
-
أضف المكون الإضافي
قم بتغليف إعدادات Next.js الخاصة بك باستخدام
withWeglot. نقطةsourceRootإلى المجلد الذي يحتوي على صفحاتك ومكوناتك.إضافة
weglotPluginإلى ملف التكوين Vite الخاص بك. باستخدام Webpack، قم باستيراده من@weglot/translate-react/webpackبدلاً من ذلك.next.config.tsimport type { NextConfig } from "next"; import { withWeglot } from "@weglot/translate-react/next"; const nextConfig: NextConfig = {}; export default async function (): Promise<NextConfig> { return await withWeglot(nextConfig, { sourceRoot: "./app" }); }
vite.config.tsimport { defineConfig } from "vite"; import { weglotPlugin } from "@weglot/translate-react/vite"; export default defineConfig({ plugins: [weglotPlugin({ sourceRoot: "src" })], });
-
أضف المزود
قم بتضمين تخطيط الجذر الخاص بك بـ
WeglotProviderمن نقطة الدخول في Next.js، بحيث يؤدي تغيير اللغة إلى تحديث مكونات الخادم.قم بتغليف تطبيقك باستخدام
WeglotProvider، في أقرب وقت ممكن.app/layout.tsximport { WeglotProvider } from "@weglot/translate-react/react/next"; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( <html lang="en"> <body> <WeglotProvider>{children}</WeglotProvider> </body> </html> ); }
src/main.tsximport { WeglotProvider } from "@weglot/translate-react/react"; root.render( <WeglotProvider> <App /> </WeglotProvider>, );
-
قم بالتجميع والتوزيع بكل لغات مشروعك
يقوم كل إصدار باسترداد الترجمات المفقودة من Weglot ويكتبها
public/translations/<locale>.json. تجاهل هذا المجلد. أضف أداة لتبديل اللغة باستخدامLocaleSwitcherأوuseWeglotContext..gitignorepublic/translations/
// under the hood
ماذا يحدث عند البناء
- 01 يقرأكود JSX الخاص بك
- 02 إرسالرسالة نصية جديدة
- 03Weglot ترجمات
- 04 يكتبملفًا واحدًا لكل لغة
// every language of your project
إصدار واحد، كل لغة تضيفها
اختر اللغات في Weglot. وسيتم تضمينها في الإصدار التالي.
enأضف لغة في Weglot ، ثم قم بالبناء. يتم نشر ملفات الترجمة مع تطبيقك.
// built for coding agents
يقوم وكيلك بإعداد ذلك
لا توجد أسطر برمجية تحتاج إلى إعادة كتابة، لذا فإن التغيير بسيط وسهل المراجعة.






أي أداة برمجة. قم بلصق إحدى المطالبات في الأداة التي تستخدمها بالفعل.
الملفات التي يمكن لوكلاء Docs قراءتها. ملف فهرس llms.txt وملف Markdown لكل صفحة.
package.jsonnext.config.tslayout.tsx.gitignore.envتغيير يمكنك مراجعته. لم تتم إعادة كتابة أي سلاسل.
الصق في «Claude Code»
لصق في موضع المؤشر (وضع الوكيل)
لصق في كوديكس$ npm install @weglot/translate-react
انسخ المطالبة. اتبع نفس الخطوات الواردة في دليل البدء.
// what gets translated
المكوّن الإضافي قادر على التمييز بين النص والكود
export default function Pricing() { return ( <section className="pricing"> <h2>Choose your plan</h2> <input placeholder="Email address" /> <a href="/signup">{"Start free trial"}</a> <span translate="no">Weglot</span> </section> ); }
تمت ترجمة النص. نص JSX، القيم الثابتة، الثوابت، alt، title، العنصر النائب، aria-label.
يُترك الكود كما هو. أسماء الفئات، وعناوين URL، والمنطق.
الخيار لك. يمكنك إبقاء أي عنصر كما هو، أو استخدام السمة data-weglot-skip.
// for your team
التحرير والمراجعة دون لمس الكود
مراجعة في Weglot. يقوم قسم المنتجات والتسويق والمترجمون بتحرير الصياغة.
لا يُقبل أي طلب سحب لإصلاح كلمة واحدة.
تتبع ما تمت مراجعته. اطلع على التقدم المحرز في كل لغة.
// fit
متى تستخدمها Weglot، ومتى لا يستخدم
الحزمة في مرحلة العرض المسبق. وإليكم المكان الذي تتواجد فيه حاليًا.
موجه التطبيقات في Next.js
مدعومةNext.js 15 أو 16.0.4 أو إصدار أحدث، وReact 19.
Vite
مدعومةReact 19، Node 20.9 أو أحدث. كما يعمل Webpack أيضًا.
مكونات خادم React
مدعومةيؤدي تغيير اللغة إلى تحديث مكونات الخادم.
محتوى CMS و API
مدعومةمع tDynamic في مكونات الخادم في Next.js.
التحرير من قبل غير المطورين
مدعومةالمراجعة والتحرير في Weglot لوحة التحكم.
رابط واحد لكل لغة
ليس بعديتم تخزين اللغة حاليًا في ملف كوكي. نحتاج الآن إلى عناوين URL مفهرسة لكل لغة: استخدم next-intl أو Paraglide JS.
الترجمات كملفات ريبو
ترجمة الإجراءWeglot يقوم بترجمة ملفات الإعدادات المحلية بتنسيق JSON في GitHub Actions ويفتح طلب سحب. راجع الوثائق →
React 18، موجه الصفحات
غير مدعوموكذلك Next.js 14 أو إصدارات أقدم.
نظام إدارة المحتوى (CMS) أو أداة إنشاء المواقع الإلكترونية
ليس هذا الطردموقعك لم يتم إنشاؤه باستخدام React: استخدم Weglotنظام إدارة المحتوى (CMS) الخاص بـ التكاملات.
// compare
لماذا لا نستخدم مكتبة i18n كلاسيكية؟
تطلب منك مكتبات i18n استبدال كل سلسلة نصية بمفتاح، والاحتفاظ بملف واحد لكل لغة. Weglot تقوم بقراءة السلاسل التي كتبتها بالفعل. وفيما يلي مقارنة بين الخيارات.
| المعايير | Weglot@weglot/translate-react |
next-intl / i18next | Paraglide JS | التوطين الأصلي لنظام إدارة المحتوى (CMS) |
|---|---|---|---|---|
| قم بتغليف السلاسل في دالة t() أو دالات الرسائل | لاتم الكشف عن النص في JSX أثناء عملية البناء. | نعمt("key") لكل سلسلة. |
نعمm.key() وظائف الرسائل. |
المحتوى فقطلا تزال السلاسل في الكود الخاص بك تحتاج إلى مكتبة. |
| ملفات الترجمة لكل لغة | لا يوجد ما يجب صيانتهتم إنشاؤها عند البناء، وتم تجاهلها بواسطة git. | نعمعادةً ما يكون هناك ملف JSON واحد لكل لغة. | نعمملف رسالة واحد لكل لغة. | لامخزنة في نظام إدارة المحتوى (CMS). |
| متعدد اللغات التوجيه وتحسين محركات البحث (عنوان URL لكل لغة، hreflang) | ليس بعداللغة مخزنة في ملف تعريف ارتباط. عناوين URL واحدة لجميع اللغات، واللغة المصدر مفهرسة. | next-intl: نعمتوجيه الإعدادات المحلية مدمج. i18next: من خلال إعدادات إطار العمل الخاص بك. | نعمعناوين URL مترجمة مدمجة: بادئات الإعدادات الإقليمية، والمسارات أو النطاقات المترجمة. أضف علامات hreflang بنفسك. | الواجهة الأماميةيقوم نظام إدارة المحتوى (CMS) بدون واجهة بتخزين المحتوى حسب الإعدادات اللغوية. وتأتي عناوين URL وhreflang من الواجهة الأمامية. |
| الترجمات التي تم إنشاؤها من أجلك | نعمWeglot يتم الترجمة باستخدام نموذج اللغة الكبير (LLM) أثناء عملية البناء. | لاأحضر ترجماتك الخاصة أو نظام إدارة الترجمة (TMS). | باستخدام أدواتالترجمة الآلية عبر واجهة inlang CLI، أو وكيل البرمجة الخاص بك. | إضافة مدفوعةالترجمة بالذكاء الاصطناعي في الباقات المدفوعة: Contentful AI Actions، Sanity AI Assist، Strapi AI Translations. |
| تحرير الترجمات دون الحاجة إلى مطور | نعمقم بالمراجعة والتحرير في Weglot لوحة التحكم. | لاقم بتحرير ملفات JSON، أو أضف نظام إدارة النقل (TMS) منفصلاً. | باستخدام Finkمحرر الويب الخاص بـ inlang، باستخدام حساب GitHub. | نعمفي محرر CMS. |
| تم إنشاؤها بواسطة وكيل برمجة في موجه واحد | نعمتثبيت واحد، تعديلان في الإعدادات. يمكنك نسخ الأوامر الواردة أدناه. | مهمة طويلةيقوم الوكيل بإعادة كتابة كل سلسلة إلى مفاتيح وملفات. | مهمة طويلةinit يعمل دون مطالبة بتحديد الوكلاء، وعندئذٍ تصبح كل سلسلة m.key() رسالة. |
غير متوفرتم تكوينه في نظام إدارة المحتوى (CMS). |
الأسئلة الشائعة
هل يدعم تحسين محركات البحث (SEO): عنوان URL واحد لكل لغة وسمة hreflang؟
ليس اليوم. يتم تخزين لغة الزائر في ملف كوكي، ويتم عرض كل لغة على نفس عناوين URL، لذا فإن محركات البحث تقوم بفهرسة اللغة الأصلية فقط.
يمكنك ترجمة عناوين الصفحات وأوصافها باستخدام tDynamicAll في generateMetadata. إذا كنت بحاجة الآن إلى عناوين URL مفهرسة حسب اللغة، فاستخدم مكتبة تدعم التوجيه حسب الإعدادات المحلية، مثل next-intl أو Paraglide JS.
كيف يمكنني ترجمة المحتوى الديناميكي الوارد من نظام إدارة المحتوى (CMS) أو واجهة برمجة التطبيقات (API) أو من المستخدمين؟
يقوم المكون الإضافي بترجمة النصوص المكتوبة في الكود الخاص بك فقط. أما بالنسبة للمحتوى الذي لا يراه الكود الخاص بك أبدًا، فاستدعِ tDynamic, tDynamicAll أو tDynamicHtml من @weglot/translate-react/dynamic في مكونات الخادم في Next.js.
إذا استغرقت واجهة برمجة التطبيقات (API) وقتًا أطول من 500 مللي ثانية، أو إذا تم طلب نص ما للمرة الأولى، فإنها تعرض النص الأصلي. وتكون الترجمة جاهزة عند الطلب التالي. إذا قمت بتخزين البيانات مؤقتًا بنفسك، فاجعل التخزين المؤقت يعتمد على لغة الزائر.
Next.js أم Vite: ما الفرق؟
يستخدم Next.js withWeglot من @weglot/translate-react/next و WeglotProvider من @weglot/translate-react/react/next. تستخدم Vite weglotPlugin من @weglot/translate-react/vite و WeglotProvider من @weglot/translate-react/react. يستخدم Webpack weglotPlugin من @weglot/translate-react/webpack.
لا تعمل وظائف المحتوى الديناميكي إلا في مكونات الخادم في Next.js.
هل يعمل مع مكونات خادم React؟
نعم، باستخدام «Next.js App Router». استيراد WeglotProvider من @weglot/translate-react/react/next بحيث يؤدي تغيير اللغة إلى تحديث مكونات الخادم. tDynamic, tDynamicAll و tDynamicHtml تُشغَّل من جانب الخادم، ضمن مكونات الخادم.
ماذا يحدث عندما أقوم بالبناء؟
يبحث المكون الإضافي عن النص الموجود في JSX تحت sourceRoot ويطلب من Weglot واجهة برمجة التطبيقات (API) عن الترجمات التي تفتقر إليها. Weglot ويقوم بإنشائها باستخدام نموذج لغة كبير (LLM)، وتنتظر عملية البناء لمدة تصل إلى translationTimeout (300 ثانية بشكل افتراضي). ثم يقوم بكتابة public/translations/<locale>.json.
في حالة فشل الترجمة، يفشل عملية البناء ويحتفظ بما تلقّاه في ذاكرة التخزين المؤقتة المحلية: قم بإجراء عملية البناء مرة أخرى للمتابعة. مع buildMode: "cache-only"، لا يقوم هذا الإصدار بإجراء أي اتصالات شبكية.
أين يتم تخزين الترجمات؟
في Weglot المشروع الخاص بك، حيث يمكنك مراجعتها وتحريرها. كما يحتفظ كل إصدار بالترجمات التي تلقاها في <sourceRoot>/weglot/cache/<locale>.json. قم بإدراج هذا المجلد في عملية البناء دون استدعاء واجهة برمجة التطبيقات (API)، أو تجاهله. public/translations/ يتم إنشاؤه ويدخل في .gitignore.
ما الذي يتم ترجمته، وكيف يمكنني استبعاد شيء ما؟
النص في JSX، والقيم الثابتة للسلاسل داخل تعبيرات JSX، والسلاسل التي تُقرأ من الثوابت، والسمات مثل title, alt, placeholder و aria-label. يتم ترك الكود وعناوين URL وأسماء الفئات والسلاسل خارج JSX دون تغيير. أضف translate="no" أو data-weglot-skip للاحتفاظ بعنصر باللغة الأصلية. قم بتعريف خصائص النص الخاصة بك باستخدام translatableAttributes.
اجعل تطبيق React الخاص بك متوافقًا مع متعدد اللغات دون الحاجة إلى إعادة كتابته
قم بتثبيت الحزمة، وأضف مفتاح واجهة برمجة التطبيقات (API) الخاص بك، ثم قم بالبناء.
$ npm install @weglot/translate-react
هل تفضل القيام بذلك بنفسك؟ اقرأ الوثائق أو اطلع على الحزمة على npm