الأسئلة الشائعة
كيف تعمل، كم تكلف، وماذا يحدث لرمزك وبياناتك. لا تجد سؤالك؟ راسلنا عبر البريد الإلكتروني.
المنتج
هل هو فقط لتطبيقات الويب React؟+
لا. يعمل على React و Next.js و React Native و Expo و Flutter و Angular و Vue و Nuxt و Svelte و SvelteKit و Astro و Solid و Qwik و Lit و Ember و Electron و Tauri ومواقع HTML بسيطة وقوالب Rails و Django و Laravel وتصاميم Android و Jetpack Compose و View و تطبيقات iOS و macOS في SwiftUI و UIKit. يجهز مكتبة i18n المطابقة لكل منها: react-i18next و ngx-translate و vue-i18n أو @nuxtjs/i18n و svelte-i18n و ember-intl و gen-l10n الخاص بـ Flutter و Rails I18n و gettext الخاص بـ Django و موارد سلاسل Android و Apple String Catalogs و .strings و سكربت صغير للصفحات الثابتة.
هل لا زلنا بحاجة إلى ذلك إذا كانت الترجمة الدولية معدة بالفعل؟+
نعم. يملأ localize-dev translate الترجمات المفقودة في ملفات اللغة التي لديك بالفعل، بغض النظر عن التقنية: JSON (i18next، react-intl، vue-i18n، ngx-translate)، YAML الخاص بـ Rails، ملفات gettext .po، ملفات Flutter .arb، موارد سلاسل Android.xml، كتالوجات سلاسل Apple وملفات .strings، ورسائل ملحق المتصفح. لا يتم تعديل الكود، ولا تتغير الترجمات الموجودة، وفي بيئة CI يفتح طلب سحب عند إضافة مفاتيح جديدة.
هل نحتاج إلى Node.js إذا كنا نبني باستخدام Rails أو Django أو Laravel أو Android أو iOS؟+
نعم، فقط Node.js 22 أو أحدث لتشغيل CLI: الأمر npx localize-dev يقوم بتشغيله بدون إضافة ملف package.json لمشروعك. أو يمكنك تخطي التشغيل المحلي واستخدام إجراء GitHub الذي يعمل على أجهزة GitHub.
هل تتعاملون مع Crowdin أو Phrase أو Lokalise أو Transifex؟+
نعم. يرفع الأمر sync push ملفات اللغة المصدر الخاصة بك، ويعيد الأمر sync pull عمل المترجمين إليها، بحيث تظل الترجمات الآلية والمراجعة البشرية ومستودعك متزامنين.
ماذا لو توقفنا عن استخدام localize.dev؟+
ستظل تطبيقاتك تعمل بشكل طبيعي. الناتج هو مكتبة i18n التي يستخدمها إطار عملك بالفعل (react-i18next، vue-i18n، ngx-translate، Rails I18n، gettext، موارد سلاسل Android، كتالوجات سلاسل Apple…) مع ملفات لغة بسيطة في مستودعك. لا يوجد تشغيل أو SDK أو وكيل من localize.dev لإزالته.
هل يمكننا تجربته في مستودعنا الخاص قبل إعداد أي شيء؟+
نعم. قم بتوصيل المستودع في لوحة التحكم واختر فتح طلب سحب معاينة: يقوم localize.dev بترجمة الفرع الافتراضي (حتى 200 سلسلة نصية، لغة واحدة) ويفتح طلب سحب من localize-dev/preview. لا حاجة لسير عمل أو مفتاح أو تسجيل خروج.
هل يمكن لـ CI منع دمج النصوص غير المترجمة؟+
نعم. يفشل الأمر npx localize-dev check (أو الإجراء باستخدام mode: check) عند إضافة تغيير لنص مكتوب بشكل ثابت، أو عند فقدان ترجمات للغة ما، أو عند تعديل اللغة الإنجليزية ولم يتم إعادة ترجماتها، مع شرح لكل مشكلة في طلب السحب. يعمل على جهازك أو المشغل الخاص بك، بدون مفتاح API.
هل يتعامل مع صيغ الجمع بشكل صحيح؟+
نعم. يصبح الاختيار مثل n === 1 ? "ملف" : "ملفات" رسالة جمع واحدة، وتحصل كل لغة على الصيغ التي تحتاجها: البولندية أربع، العربية ست، اليابانية واحدة. تحصل جملة تحتوي على عدّين ("3 ملفات في 2 مجلد") على صيغة جمع لكل عدّ، وتصبح الترتيبية مثل الأول والثاني والثالث صيغ جمع ترتيبية بصيغ كل لغة الخاصة، في React و Next.js و Vue و Svelte و Astro و Ember و Angular وأطر عمل JavaScript الأخرى. تحصل Flutter و Rails و Django و Laravel و Android و iOS على صيغ الجمع بصيغها الخاصة (ARB و YAML و msgid_plural و trans_choice و <plurals> واختلافات String Catalog)؛ مكتباتها لا تحتوي على صيغ ترتيبية.
ماذا يحدث عندما نغير اللغة الإنجليزية لاحقًا؟+
تتم ترجمتها مرة أخرى. يحتفظ localize.lock.json ببصمة لكل رسالة مصدر، لذلك يتم إعادة الرسالة المعدلة في كل لغة عند التشغيل التالي أو طلب السحب، ويفشل الأمر localize-dev check بينما تكون أي ترجمة قديمة. يتم الإبلاغ عن المفاتيح التي لم يعد الكود يستخدمها، ويقوم localize-dev prune بإزالتها.
هل يمكنه ترجمة وثائقنا ومدونتنا أيضًا؟+
نعم. يقوم localize-dev content بترجمة ملفات Markdown و MDX إلى نسخة لكل لغة (intro.es.md، أو مجلدات i18n الخاصة بـ Docusaurus)، مع الاحتفاظ بكتل التعليمات البرمجية والروابط واستيرادات MDX والمكونات كما هي مكتوبة بالضبط. يتم إرسال المستندات التي تم تعديلها فقط منذ آخر ترجمة لها مرة أخرى.
هل يعمل في مستودع أحادي (monorepo)؟+
نعم. شغّلها من الجذر باستخدام --workspaces، أو اضبط workspaces: true في إجراء GitHub، وسيتم تعريب كل تطبيق بملفات اللغات الخاصة به، في طلب سحب واحد. تُترك المكتبات المشتركة بدون سكريبت تطوير أو بدء كما هي. لتعريب تطبيق واحد فقط، اضبط working_directory: apps/web في الإجراء بدلاً من ذلك.
هل يمكن لموتسعي عن الجوال العثور على صفحات الترجمة؟+
في Next.js، SvelteKit و Nuxt، يتم عرض الصفحات باللغة التي يفضلها الزائر على الخادم. بالنسبة للمواقع الثابتة HTML، قم بتشغيل htmlPages، حيث يكتب localize.dev نسخة مترجمة لكل صفحة لكل لغة، مع ربطها باستخدام hreflang، مما يسمح بتدوين كل لغة.
هل تترك كودك جهازك؟+
يتم إرسال فقط النصوص التي يتم ترجمتها إلى API localize.dev، مع مسار ملفها وموقعها (العنصر مثل زر أو عنوان) كسياق. لا يتم إرسال ملفات كاملة أبدًا. تتم إعادة كتابة النصوص محليًا (أو على Runner الخاص بك CI)، ولا تتصل عمليات الفحص والتنفيذ خارج الشبكة.
هل تحتاج إلى إعداد نموذج أو GPUs؟+
لا. تتم الترجمة باستخدام نموذج localize.dev المضيف على جميع الخطط، بما في ذلك الخطة المجانية. إنشاء مفتاح API، تشغيل localize-dev login، وستكون جاهزًا.
هل تحتاج إلى إعداد مكتبة i18n أولًا؟+
لا. إذا لم يكن لديك مكتبة حتى الآن، فإن طلب التحديث يضيف المكتبة المناسبة (شامل ملف lockfile)، ويخلق وحدة تحمّل ملفات كل لغة وتحديد اللغة، ويربطها في ملف الإدخال الخاص بك. يتم أيضًا ضبط اتجاه الصفحة لللغات من اليمين إلى اليسار. التطبيقات التي تستخدم بالفعل i18next، vue-i18n أو svelte-i18n، تحافظ على إعداداتها الخاصة.
ماذا لو كانت جزء من التطبيق قد تم ترجمته بالفعل؟+
يتم ترك استدعاءات t() و و $_() الحالية كما هي، ويتم إعادة استخدام المفاتيح الموجودة بالفعل في en.json عندما يتطابق النص (للنسخ القصيرة مثل "Post"، عندما تتطابق الترجمات أيضًا). من الآمن التشغيل على كود تم ترجمته جزئيًا.
هل يفهم السياق، أم يترجم كلمة بكلمة؟+
تتم الترجمة مع مراعاة السياق. يصل كل نص إلى النموذج مع ملفه ومكونه وعنصره، لذا فإن "Post" على زر يصبح "Veröffentlichen" بالألمانية و "Post" كعنوان بطاقة يصبح "Beitrag"، ولكل منها مفتاحه الخاص؛ النسخ المتطابقة تشترك في مفتاح فقط عندما تتفق ترجماتها. تضمن مسرد المصطلحات وملاحظات الأسلوب الخاصة بك اتساق مصطلحات المنتج والنبرة، بما في ذلك استخدام "أنت" الرسمي أو غير الرسمي لكل لغة، وتحصل الصيغ الجمع على كل شكل تحتاجه كل لغة. يتم ترميز كتالوجات Laravel و Django بالنص الإنجليزي نفسه، لذا هناك نص واحد له ترجمة واحدة.
ما الذي تحتاجه GitHub Action؟+
ملف سير العمل أعلاه وسر مستودع واحد، LOCALIZEDEV_API_KEY. يستخدم GITHUB_TOKEN المدمج مع حق الوصول للكتابة إلى المحتويات وطلبات السحب، ويحافظ على تحديث طلب سحب واحد لكل فرع بدلاً من فتح طلب جديد مع كل دفعة، ويتخطى فروعه الخاصة وطلبات السحب من الشوكات، التي يكون رمزها للقراءة فقط.
هل الترجمات الآلية جيدة بما يكفي لإطلاقها؟+
إنها مسودة أولى قوية مع عناصر نائبة صحيحة ومفاتيح متسقة. بالنسبة للنسخ الخاضعة للتنظيم أو المهمة للعلامة التجارية، قم بتعيين مراجع لكل لغة: يتلقون بريدًا إلكترونيًا عند اكتمال التشغيل، ويوافقون على كل ترجمة أو يصححونها في علامة التبويب "مراجعة"، وتدخل التصحيحات في طلب السحب المفتوح وكل تشغيل لاحق. تصبح التصحيحات التي تستمر في الظهور مصطلحات في المسرد بنقرة واحدة. كما يشير النموذج إلى الترجمات التي ليست متأكدًا منها، مع ذكر السبب، لذا يبدأ المراجعون بتلك الترجمات.
الخطط والدفع
ما الذي يعتبر نصًا؟+
قطعة فريدة من نسخ واجهة المستخدم يتم إرسالها للترجمة. يُحسب النص مرة واحدة بغض النظر عن عدد اللغات التي يدخل فيها. ترجمة "Place order" إلى 10 لغات تستخدم 1، وليس 10. النسخ التي لديها مفتاح بالفعل لا يتم إرسالها مرة أخرى أبدًا.
ماذا يحدث عندما أصل إلى الحد الشهري المسموح به؟+
الترجمة: عند الوصول إلى الحد المسموح به، يتوقف التنفيذ قبل كتابة أي شيء ويخبرك السبب، لذا لن تترك كودك نصف مكتوب. قم بتحديث الاشتراك، أو انتظر حتى تجدد الحد المسموح به في نهاية فترة 30 يومًا، ثم أعد تشغيله. يظهر لوحة التحكم بالتاريخ.
هل تستهلك الفحوصات والتنفيذات hors-line حدك المسموح به؟+
لا. الفحوصات والتنفيذات hors-line تعمل بالكامل على جهازك ولا تتصل أبدًا بالAPI. لا تحتاج إلى مفتاح على الإطلاق.
هل أحتاج إلى خطة مدفوعة لاستخدام GitHub Action؟+
لا. يعمل GitHub Action على جميع الخطط، بما في ذلك الخطة المجانية. أضف مفتاح API الخاص بك كسرية للمخزن، وسيفتح طلبًا لتعديل كل دفع، ضمن 3/5/غير محدود لغات خطةك.
هل يمكنني تجربته دون التسجيل؟+
نعم. يعمل playground على نفس المحرك على مكون أو صفحة تنسخها (React, Vue, Svelte, Angular, Astro, Flutter, Rails, Django, Laravel, Android, iOS أو HTML)، دون الحاجة إلى حساب.
الحساب والبيانات
كيف أحذف حسابي؟+
احذف مساحة العمل الشخصية الخاصة بك في لوحة التحكم → الإعدادات. هذا يحذف حسابك أيضًا: تسجيل الدخول الخاص بك، الروابط إلى GitHub وGoogle، وأعضاء الفريق، وتسجيل الخروج من جميع الأجهزة. إذا كنت مالكًا لمspaces فريق، احذفها أولًا. ستظل الكلمات المستخدمة خلال هذه الفترة تحسب إذا سجلت مرة أخرى باستخدام نفس البريد الإلكتروني.
هل يمكنني الحصول على نسخة من بياناتي؟+
نعم. أرسل بريدًا إلكترونيًا إلى support@uselocalize.dev من عنوان حسابك وسندرسه. يوضح سياسة الخصوصية ما نحتفظ به.
كيف أبلغ عن خطأ أو مشكلة أمنية؟+
أرسل بريدًا إلكترونيًا إلى support@uselocalize.dev مع ما قمت بتشغيله وما رأيت. بالنسبة للأمن، يرجى إرسال البريد الإلكتروني بدلاً من نشر التفاصيل علنًا.
هل لا تزال لديك سؤال؟
البريد الإلكتروني support@uselocalize.dev, أو تحقق من المستندات.