سجل التغييرات

ما تم إصداره، وما هو التالي.

التالي خارطة الطريق

  • لقطات الشاشة قيد المراجعة

    اعرف مكان ظهور النص في التطبيق أثناء مراجعة ترجمته.

  1. الإصدار 0.33.4

    11 نوفمبر 2026

    Astro: نص في ثوابت frontmatter، وأيقونات متروكة من نص الزر

    • Astro: يتم الاحتفاظ بالنص في ثوابت frontmatter، مثل بيانات التعريف للصفحة أو قائمة البطاقات (const items = [{ title, description }])، ويصبح t() حيثما تمت كتابته. يتم تضمين القوائم داخل القوائم والقوالب الحرفية ذات القيم. يتم ترك الثابت الذي يقرأه frontmatter لنصه كما هو مكتوب
    • يظل الرمز الموجود قبل نص الزر أو بعده، مثل رمز <svg> للانتقال، خارج الرسالة، بحيث تتم ترجمة النص بمفرده بدلاً من ترجمته في <Trans> مع وجود الرمز بالداخل
  2. الإصدار 0.33.3

    11 نوفمبر 2026

    خادم MCP مستضاف، مع تسجيل الدخول عبر OAuth

    • خادم MCP مستضاف على https://uselocalize.dev/api/mcp، للوكلاء الذين لا يمكنهم تشغيل npx. يحتوي على نفس الأدوات. تحمل كل مكالمة الملفات التي تحتاجها الأداة وتعيد الملفات للكتابة؛ يتم الاحتفاظ بها في مجلد مؤقت لتلك المكالمة وحذفها عند الرد
    • تتصل العملاء التي تدعم تسجيل الدخول إلى MCP باستخدام OAuth: توافق على الاتصال على localize.dev وتختار مساحة العمل. يظهر الاتصال ضمن مفاتيح API، وحذف المفتاح يفصله. يرسل الآخرون مفتاح API كرمز حامل أو في رأس x-api-key
    • تحتوي صفحة MCP على إعداد لـ Lovable و Bolt و v0، والخادم موجود في سجل MCP كخادم بعيد أيضًا
    • يصدر الحزمة handleRemoteMessage و REMOTE_TOOLS، أدوات الخادم المستضاف، لتشغيل نفس الخادم في مكان آخر
  3. الإصدار 0.33.2

    10 نوفمبر 2026

    ملحقات لـ Claude Code و Cursor، وإدراج في سجل MCP

    • يضيف مكون Claude Code الإضافي خادم MCP ومهارة تخبر Claude بموعد التوطين. قم بتثبيته باستخدام claude plugin marketplace add ufortstephen/localize-dev، ثم claude plugin install localize-dev@uselocalize
    • يعمل نفس المكون الإضافي في Cursor، مع قاعدة للتطبيقات التي تحتوي على ملف localize.config.json
    • يتم إدراج خادم MCP في سجل MCP باسم io.github.ufortstephen/localize-dev، لذا يمكن للعملاء الذين يقرؤون السجل العثور عليه وتثبيته
  4. الإصدار 0.33.1

    10 نوفمبر 2026

    مشاريع Create React App و Compose Multiplatform و XcodeGen

    • يتم أيضًا فحص ملفات مشاريع React و React Native و Solid التي تحتفظ بـ JSX في ملفات .js، كما تفعل Create React App. في السابق، كانت ملفات .tsx و .jsx فقط هي التي يتم فحصها، ما لم يذكر include ملفات .js مدرجة
    • يُبلغ check عن الترجمات الناقصة في String Catalogs وstrings.xml وملفات ARB عندما لا يحتوي المشروع على ملف مصدر JSON. في السابق كان يفعل ذلك لكتالوجات .po في Django فقط، ويقول إن كل ما عداها مُترجَم
    • يتم اكتشاف المشاريع التي تنشئ مشروع Xcode الخاص بها باستخدام XcodeGen (project.yml) أو Tuist (Project.swift) كتطبيقات iOS
    • يتم العثور على سلاسل Compose Multiplatform في composeResources/values/ وترجمتها بنفس طريقة Android res/values/
    • يتم تخطي الملفات الموجودة في مجلدات __tests__ و __mocks__ افتراضيًا، مثل ملفات .test و .spec
  5. الإصدار 0.33.0

    10 نوفمبر 2026

    localize-dev seo، Remix، واللغات المحملة على الخادم

    • localize-dev seo <url> يتحقق مما تراه محركات البحث لكل لغة على موقع مباشر أو بناء محلي: خريطة الموقع، روابط hreflang التي تشير للخلف وتتضمن x-default، <html lang>، العنوان الأساسي و og:locale
    • تطبيقات Remix 2 مع v3_routeConfig تحصل على عنوان لكل لغة، بنفس طريقة تطبيقات React Router
    • تقوم تطبيقات React Router و Remix التي تحتوي على أكثر من ثلاث لغات بتحميل كل لغة في مُحمّل المسار (route's loader)، لذا يقوم الخادم بعرض /fr/about باللغة الفرنسية حتى عندما لا تكون الفرنسية ضمن الحزمة. تأتي عناوين hreflang الكاملة من الطلب، لذا لا يلزم وجود siteUrl
    • بدون siteUrl، يأتي عنوان الموقع من ملف CNAME أو الصفحة الرئيسية في package.json، وعلى Netlify و Render و Railway من العنوان الذي يمنحه المضيف للبناء (build)، كما كان يحدث بالفعل على Vercel
    • تحصل صفحات Qwik City على <html lang> و dir للغة عنوانها، والتي يتم تعيينها في entry.ssr.tsx
    • عندما يتم تحميل اللغات عند الطلب، تسرد قائمة اللغات جميعها، وليس فقط تلك التي تم تحميلها حتى الآن
    • لم يعد الفحص (check) يبلغ عن أسماء الفئات (class names) أو المفاتيح (keys) داخل عينات التعليمات البرمجية المكتوبة كسلاسل نصية، أو العناصر المتمركزة (left-1/2 with -translate-x-1/2) كمشاكل من اليمين إلى اليسار، أو الخطوط التي تغطي مجموعاتها النص (script)
  6. الإصدار 0.32.1

    10 نوفمبر 2026

    Django و ERB و Blade: علامات القالب بين السمات

    • لم يعد علامة القالب بين سمات العلامة، مثل كتلة if التي تضيف aria-current، تجعل الفحص يبلغ عن بقية العلامة كنص. يتم العثور على عنوان أو aria-label داخل الكتلة وترجمتها
    • ينضم الرابط إلى رسالة الجملة فقط عندما تكون الكلمات بجواره مباشرة. في السابق، كان الفاصل مثل · أو النص في مكان آخر في الكتلة يحول رابطًا منفردًا إلى رسالة
    • يتم ترك الخيارات التي لا تحتوي على سمة قيمة كما هي، لأن نصها هو ما يقدمه النموذج
    • تحقق من التقارير الفارغة والإدخالات غير الواضحة في كتالوجات .po لمشروع Django عندما لا يحتوي على كتالوج إنجليزي، وهو ما يتم إعداده في معظم مشاريع Django. من قبل، كان يقول كل شيء مترجم
    • قائمة doNotTranslate في localize.config.json تسرد الأسماء والاختصارات التي يجب الاحتفاظ بها كما هي مكتوبة، مثل Metron أو TPB. النص المكون فقط منها ومن الأرقام والرموز لا يتم استخراجه ولا الإبلاغ عنه بواسطة الفحص
  7. الإصدار 0.32.0

    10 نوفمبر 2026

    عنوان لكل لغة في React Router

    • تطبيقات React Router (وضع الإطار) تحصل على عنوان لكل لغة (/es/about). يمر ملف routes.ts عبر مساراته عبر withLanguageRoutes، والذي يضيف نسخة من كل مسار تحت كل لغة، لذلك لا تتغير ملفات المسارات
    • يقوم الخادم بعرض كل صفحة بلغة عنوانها، مع روابط hreflang، وعنوان أساسي و og:locale. تفتح قائمة اللغة نفس الصفحة باللغة الجديدة، وتحتفظ الروابط التي لا تحتوي على لغة بلغة الصفحة
    • مسار sitemap.xml مبني من مسارات التطبيق، لذا يتم سرد الصفحات الجديدة دون تشغيل، ومسار robots.txt، عندما لا يحتوي التطبيق على أي منهما
    • توضع وحدة i18n في app/ ويتم استيرادها من app/root.tsx. في السابق، لم يتمكن الإعداد من العثور على ملف الإدخال لتطبيق React Router
    • لم يعد الفحص يتوقف بخطأ في قائمة الفئات التي تحتوي على متغير بدون فئة بعده، مثل cn(active && 'hover:', 'ml-2')
  8. الإصدار 0.31.0

    10 نوفمبر 2026

    SvelteKit 3، و Qwik City، وكل لغة على مواقع SvelteKit الثابتة

    • يعمل SvelteKit 3: لا يحتوي على $lib، لذا تستورد الملفات التي تم إنشاؤها من #lib عندما يعلن التطبيق عنه. تم إعداد تخطيط جذر بخصائص مُعرفة، كما يكتبه npx sv create.
    • في SvelteKit، تحتفظ الروابط إلى صفحات التطبيق الخاصة بنفس لغة الصفحة التي توجد عليها، لذا يرتبط /es/about بـ /es/ بدلاً من /.
    • إنشاءات SvelteKit الثابتة (adapter-static) تكتب صفحات كل لغة: يتم تشغيل الإنشاء على العنوان الموجود في siteUrl، لذا يعثر عليها من خلال روابط hreflang.
    • تحصل تطبيقات Qwik City على مكون LanguageHead في root.tsx مع روابط hreflang و og:locale، ومسار sitemap.xml، ومسار robots.txt عندما لا يحتوي التطبيق على أي منهما.
    • تستخدم خريطة موقع Astro نفس عناوين الصفحات (مثل /about/ في بناء ثابت)، لذا فهي تتطابق مع الروابط الأساسية الخاصة بها.
  9. الإصدار 0.30.0

    10 نوفمبر 2026

    خريطة موقع للمواقع الثابتة

    • تحصل مواقع HTML الثابتة مع htmlPages و siteUrl على sitemap.xml يسرد كل صفحة، والصفحات المترجمة بكل لغة مع روابط hreflang بينها. تتم إعادة كتابته في كل مرة تشغيل، ولكن يتم الاحتفاظ بملف sitemap الذي يمتلكه الموقع بالفعل كما هو
    • ملف robots.txt يشير إلى خريطة الموقع، عندما لا يكون للموقع أي منها
    • صياغتان على الموقع الألماني، من مراجعة لترجماته
  10. الإصدار 0.29.0

    10 نوفمبر 2026

    كل لغة في نتائج البحث، لـ Astro و SvelteKit

    • تحصل تطبيقات SvelteKit على عنوان لكل لغة (/es/about) من خلال خطاف إعادة توجيه، لذلك لا تحتاج المسارات إلى مجلد [lang]. تحصل كل صفحة على روابط hreflang وعنوان أساسي و og:locale، وتنتقل قائمة اللغة إلى نفس الصفحة باللغة الجديدة. يتطلب هذا SvelteKit 2.3 أو أحدث
    • تحصل تخطيطات Astro على مكون I18nHead في <head> الخاص بها، مع روابط hreflang وعنوان أساسي و og:locale للصفحة
    • كلاهما يحصل على sitemap.xml يسرد كل صفحة بكل لغة. يتم بناؤه من مجلد الصفحات أو المسارات، لذلك تظهر الصفحات الجديدة دون تشغيل localize مرة أخرى. تتم إضافة robots.txt عندما لا يحتوي التطبيق على أي منهما
  11. الإصدار 0.28.0

    10 نوفمبر 2026

    كل لغة في نتائج البحث

    • تحصل تطبيقات Next.js App Router على عنوان معياري و og:locale لكل عنوان URL للغة، مضافًا عبر generateMetadata في التخطيط الجذري. يتم الاحتفاظ بالبيانات الوصفية الخاصة بالتخطيط، وتفوز قيمه
    • ملف sitemap.ts يسرد كل صفحة بعنوان ثابت بكل لغة، مع بدائل hreflang، وملف robots.ts يشير إليه. يتم كتابتهما فقط عندما لا يحتوي التطبيق على أي منهما، وهما ملكك للتعديل
    • تحتاج محركات البحث إلى عناوين كاملة: تأتي من siteUrl في localize.config.json، أو من VERCEL_PROJECT_PRODUCTION_URL على Vercel
    • التطبيقات التي تم إعدادها من قبل تحصل على كل هذا عند تشغيلها التالي
  12. الإصدار 0.27.0

    9 نوفمبر 2026

    ترجمة أثناء الكتابة

    • يقوم init --agent بإعداد وكلاء الترميز: خادم MCP لـ Claude Code و Cursor، وخطاف بعد التحرير يخبر Claude Code بالنص الذي تركه غير مترجم في الملف الذي قام بتحريره للتو، وتعليمات في AGENTS.md وقاعدة Cursor.
    • يأخذ check و run --files و --changed و --staged، لذا فإن فحص الملفات التي لمستها يستغرق حوالي ثانية؛ يضيف init --agent --pre-commit هذا الفحص إلى خطاف git.
    • يطلب خادم MCP من الوكلاء ترجمة الملفات التي يغيرونها، وتأخذ أداة الفحص الخاصة به المسارات.
    • تعرض صفحة الاستخدام مكان ترجمة السلاسل: أثناء الكتابة، في CI أو من سطر الأوامر.
  13. الإصدار 0.26.6

    9 نوفمبر 2026

    التصحيحات في طلب الدمج تبقى

    • عندما يتقدم الفرع الأساسي ويُعاد بناء طلب الدمج، تُحفظ التغييرات التي أجراها الأشخاص فيه. تُدمج ملفات اللغة مفتاحًا بمفتاح، والترجمة التي غيّرها الطرفان تحتفظ بنسخة الشخص
    • الملف الذي غيّره الاقتراح الجديد أيضًا يأخذ نسخة الاقتراح، ويذكر التشغيل هذه الملفات حتى يمكن إجراء التغيير مرة أخرى
    • يكتب الموقع الأرقام والأسعار كما تكتبها كل لغة: 10.000 بالألمانية و10 000 بالفرنسية
  14. الإصدار 0.26.5

    4 نوفمبر 2026

    من اليمين إلى اليسار من أول عرض في تطبيقات Next.js

    • تحصل تطبيقات Next.js على ‎<html dir>‎ من اللغة، فتُعرض العربية والعبرية والفارسية من اليمين إلى اليسار منذ أول عرض؛ والتطبيقات المُعدّة سابقًا تحصل عليه في تشغيلها التالي
    • اللغة التي يكون رمزها كلمة أيضًا بعد القائمة مباشرة (it وno) تُضاف إليها رغم ذلك، وتبقى الكلمة كما هي
  15. الإصدار 0.26.4

    4 نوفمبر 2026

    لغات رمزها كلمة أيضًا

    • تنضم اللغة الجديدة إلى كل قائمة مُنشأة تنقصها، حتى إن كان رمزها كلمة في مكان آخر من الملف (it للإيطالية، وno للنرويجية)
    • الموقع: تُقرأ العربية من اليمين إلى اليسار منذ أول تحميل للصفحة، ويتبع الرأس وقوائمه اتجاه القراءة
  16. الإصدار 0.26.3

    4 نوفمبر 2026

    اللغات الجديدة تصل إلى قائمة اللغات في التطبيق

    • اللغة التي تُضاف بعد الإعداد تنضم إلى القوائم التي أنشأها localize.dev: قائمة اللغات والتوجيه والاستيرادات وجداول المبدّل، باسمها وعلمها واتجاه كتابتها
    • يحصل Astro وQwik على نسخة من كل صفحة للغة الجديدة، ويحصل Django على ملف ‎.po الخاص بها
  17. الإصدار 0.26.2

    4 نوفمبر 2026

    اختر اللغات عند التشغيل

    • يطلب التشغيل الآن تحديد اللغات التي سيتم الترجمة إليها: تنضم اللغة التي تضيفها إلى المشروع، ويتم ترجمتها في هذا التشغيل، وتتم إضافتها إلى localize.config.json في طلب السحب الخاص بها
    • تترجم كل عملية تشغيل للإجراء إلى لغات المشروع على لوحة التحكم، لذا فإن اللغة المضافة هناك لم تعد بحاجة إلى تغيير في سير العمل
  18. الإصدار 0.26.1

    3 نوفمبر 2026

    اللغات المستهدفة محسوبة عبر الحساب

    • عدد اللغات المستهدفة للخطة عبر مساحات العمل الخاصة بها: أي لغة تمت ترجمتها في آخر 30 يومًا أو تم تعيينها في مشروع. يتوقف التشغيل الذي سيتجاوز الحد قبل كتابة أي شيء ويذكر اللغات المستخدمة
    • يعرض localize-dev whoami عدد اللغات المستهدفة للخطة قيد الاستخدام، وأيها هي
  19. الإصدار 0.26.0

    3 نوفمبر 2026

    خادم MCP لوكلاء الترميز، وترجمات تمت مراجعتها في طلب السحب

    • localize-dev mcp: خادم MCP لوكلاء الترميز مثل Claude Code و Cursor و Codex و GitHub Copilot، مع أدوات التحقق والترجمة المحلية والترجمة وإضافة اللغة والإعداد
    • تتضمن أداة الإعداد مسرد المشروع عند تعيين مفتاح API، بحيث يحتفظ الوكيل بالأسماء والمصطلحات كما قرر الفريق
    • تتلقى طلبات السحب تعليقًا بجدول للترجمات الجديدة، يتم نشره بواسطة تطبيق GitHub، أو بواسطة الإجراء عندما لا يستخدم المستودع التطبيق
    • تُتعلم الترجمات التي تم تحريرها في طلب السحب قبل دمجه للجولات القادمة، بكل تنسيقات اللغات وللصيغ الجمع، ويتم تمييزها كـ "تم التحرير" على GitHub في المراجعة
  20. الإصدار 0.25.0

    3 نوفمبر 2026

    مبدلات لغة لكل إطار عمل

    • يضيف الإعداد قائمة لغات و useLanguage() لتطبيقات Vue و Nuxt و Svelte و Solid و Qwik و Angular و Astro و Lit و Ember، بجوار وحدة i18n التي ينشئها
    • تحصل تطبيقات Rails و Django و Laravel على قائمة لغات لقوالبها تتذكر الاختيار؛ تحصل تطبيقات Flutter و iOS و Android و React Native على قائمة أصلية
    • localize-dev/switcher: القائمة كعنصر مخصص، مصممة بنفس متغيرات CSS مثل عنصر React
    • الإعداد التلقائي لم يعد يقوم بتنزيل المستودع، لذا فإنه يكتمل على المستودعات الكبيرة
  21. الإصدار 0.24.6

    3 نوفمبر 2026

    إعداد تلقائي والإجراء، للتطبيقات في monorepo

    • الإعداد يجد التطبيق تلقائيًا في مستودع متعدد (المجلد الذي يحتوي على localize.config.json) ويشغل سير العمل هناك باستخدام working_directory
    • في جذر المستودع المتعدد، يسمي الإجراء working_directory لتعيينه لكل تطبيق، بدلاً من أوامر cd
  22. الإصدار 0.24.5

    3 نوفمبر 2026

    طلبات السحب التي يفتحها تطبيق localize.dev GitHub، والملفات المتجاهلة تُترك كما هي

    • تطبيق localize.dev GitHub يفتح طلبات السحب الخاصة بالإجراء على المستودعات المتصلة: لا يوجد إعداد workflow-permissions لتحديده، وتعمل فحوصات طلبات السحب
    • النسخ في وحدة يتجاهلها التكوين يبقى كما هو مكتوب، حتى عندما تقرأه مكون
  23. الإصدار 0.24.4

    3 نوفمبر 2026

    تطبيق واحد في monorepo: working_directory الخاص بالإجراء

    • المستودعات المتعددة: working_directory الخاص بالإجراء يوطّن تطبيقًا واحدًا (apps/web)، ويقوم طلب السحب الخاص به بتغيير الملفات في مكانها
    • الوضع: التحقق في دليل عمل يضيف تعليقًا لكل مشكلة في مسارها من جذر المستودع، بحيث تظهر في الفرق
  24. الإصدار 0.24.3

    31 أكتوبر 2026

    حزمة أسهل في التدقيق: لا يوجد كود مُقيّم، ملفات قابلة للقراءة، وتثبيتات لا تُشغّل أي نصوص برمجية

    • يتم قراءة Plural-Forms الخاصة بـ gettext بواسطة محلل صغير لقواعدها الخاصة بدلاً من تقييمها كرمز
    • حزمة npm ليست مصغرة: ما تم نشره يقرأ مثل المصدر
    • مترجمات القوالب هي تبعيات نظير اختيارية؛ يتم تثبيتها عند الاستخدام الأول دون تشغيل نصوص الحزمة، أو لا يتم تثبيتها على الإطلاق مع LOCALIZE_DEV_NO_INSTALL=1
  25. الإصدار 0.24.2

    31 أكتوبر 2026

    ترقيات تظل خضراء: إدخالات قفل Vue القديمة، مستودعات ملفات اللغة فقط، أقفال monorepo، وطلبات سحب ترجمة أوضح

    • الترقية: تعتبر صيغ الجمع في الأنابيب لـ Vue و Nuxt في ملف قفل مكتوب بواسطة 0.23.0 محدثة، لذا يظل التحقق أخضر ولا يعيد طلب سحب كتابة القفل
    • التحقق (CLI والإجراء) في مستودع يحتوي فقط على ملفات محلية يتحقق من ترجماتها بدلاً من الفشل بسبب مجلد src/ مفقود
    • المستودعات المتعددة: يسجل التشغيل الأول --workspaces رسائل المكتبات المشتركة في قفل كل تطبيق، لذا لا يغير التشغيل الثاني شيئًا
    • طلب السحب الذي يملأ الترجمات فقط يُعنوَن بعدها (املأ 3 ترجمة/ترجمات) ويسرد الرسائل لكل لغة
    • تطلب الترجمة مرة أخرى عندما تعود صيغة الجمع بدون أشكالها، بدلاً من ترك اللغة للتشغيل التالي
  26. الإصدار 0.24.1

    31 أكتوبر 2026

    إصلاحات الإجراءات من CI: Astro، والمشاريع في جذر المستودع والمواقع الثابتة تفتح طلب السحب الخاص بها، ولا يمكن للتشغيل أن يتعطل، ويتم ملء صيغ الجمع في أنبوب Vue

    • React: يتم إعداد i18next حتى عندما يقوم التشغيل نفسه باستيراده للتواريخ والأرقام، لذلك يعرض التطبيق نصه بدلاً من المفاتيح
    • المستودعات المتعددة: تحقق من عدد المفاتيح التي تستخدمها مكتبات مساحة العمل في التطبيق وقم بتقليمها، ويغطي --workspaces كل تطبيق ومكتبة
    • الإجراء: المشاريع التي تحتوي على رمزها في جذر المستودع تفتح طلب سحبها (المسارات لا تحتوي على ./)، يتم إعادة كتابة صفحات Astro (مترجم WASM يأتي مع الإجراء)، ويتم فحص موقع ثابت بدون تكوين في جذره، كما يفعل CLI
    • الإجراء: يتوقف التشغيل ويفشل بعد timeout_minutes (30 افتراضيًا) بدلاً من التعليق، ويفشل ملف لا يمكن لمحلله تحميله في التشغيل بدلاً من تخطيه
    • Vue: يملأ التشغيل صيغ الجمع في الأنابيب (يتبقى {count} نسخة فقط | …) بكل شكل تحتاجه اللغة، ويتفق التشغيل والترجمة والتحقق على ما هو مفقود أو قديم
  27. الإصدار 0.24.0

    29 أكتوبر 2026

    تشغيلات ثانية لا تغير شيئًا، ولا طلبات بدون نسخ جديدة، وفحص لسير العمل دون اتصال بالإنترنت

    • التشغيل الثاني يلتقط النسخ الجديدة فقط: تتبع فرزات وتواريخ نصوص Vue لغة التطبيق في التشغيل الأول، ورسائل كتالوج السلاسل النصية %@ لم تعد تعيق تشغيل iOS، ولا يتم مسح الصفحات الثابتة المترجمة زائفًا مرة أخرى
    • لا يوجد طلب ترجمة بدون شيء لترجمته: يتم تخطي السلاسل النصية التي تحتوي على مفتاحها وكل ترجمة، وتقول عمليات التشغيل دون اتصال إنها تنشئ مفاتيح فقط
    • يقول عنوان وملخص طلب السحب ما يغيره، مثل التواريخ والأرقام التي تتبع الآن لغة التطبيق، بدون جداول فارغة
    • التحقق والتقليم يحسبان عنوان الصفحة ووصفها التي يحددها وحدة i18n المنشأة على أنها مستخدمة، في كل إطار عمل
    • الإجراء: check_only: تتحقق السلاسل النصية من النسخ المضمنة فقط، لسير العمل الذي يترجم دون اتصال
    • فلاتر: n == 0 ؟ 'لا شيء لسقيه' : '$n نباتات تحتاج إلى الماء' تصبح رسالة جمع واحدة مع =0، ويتم سرد النص المبني بـ + ويفشل التحقق بدلاً من تخطيه
    • يتم التحقق من الترجمات بالطريقة التي تقرأ بها مكتبة i18n الخاصة بالتطبيق قبل كتابتها: نفس العناصر النائبة، لا توجد أقواس متناثرة، كل صيغة جمع، ICU الذي يفسر. يُطلب مرة أخرى من الصيغة التي تفشل، ثم تُترك ويتم الإبلاغ عنها
    • يتجاهل الفحص استدعاءات t() في التعليقات بكل لغة، ولا تعرض الملفات المنشأة أمثلة على شكل مفاتيح بعد الآن؛ تحصل كتالوجات gettext الجديدة على الرأس القياسي
  28. الإصدار 0.23.0

    29 أكتوبر 2026

    Rails و Django و Laravel: الجمل التي تحتوي على روابط تبقى سليمة، ومكتبات المستودع الأحادي تُبنى تحت pnpm

    • Rails: تعبير تم نقله إلى t() يحصل على الأقواس التي تحتاجها Ruby (link_to(book.title, book_path(book.id)))، لذلك يتم تجميع العروض
    • Rails: رسالة تُدخل رابطًا أو علامة أخرى تحصل على مفتاح _html، لذلك يتم عرض الرابط بدلاً من هروبه
    • يبقى الرابط داخل جملة في رسالته: link_to في Rails، و blocktranslate واحد في Django (يتم التقاط {% url %} أولاً)، و {!! __() !!} مع قيم مُهربة في Laravel
    • Monorepos: تعلن مكتبة المكونات عما تستورده شفرتها المعاد كتابتها (react-i18next) كتبعيات نظيرة وتطوير، وتصبح ملفاتها مكونات عميل عند عرض تطبيق Next.js لها
    • إمبر: تتم إضافة @glimmer/tracking و @ember/test-helpers، التي تحتاجها ember-intl دون التصريح عنها، عندما يفتقر إليها التطبيق
  29. الإصدار 0.22.0

    29 أكتوبر 2026

    التطبيقات التي يتم بناؤها بعد التوطين: روابط Svelte تُركت سليمة، ووحدات Angular مع الأنبوب الصحيح، ورمز SvelteKit الذي يتحقق من النوع

    • يتم الآن تحليل قوالب Svelte و Vue، لذلك لا يتم الخلط أبدًا بين عنصر نائب ${ … } داخل سمة وسعر، ولا يتم إعطاء سمات URL (href، src، action) واحدة
    • Angular: تستورد وحدات NgModules والمكونات المستقلة أنبوب الترجمة الذي يمتلكه ngx-translate المثبت (TranslatePipe من الإصدار 16 فصاعدًا)، ويتم إصلاح TranslateModule الذي تركه تشغيل سابق مع ngx-translate 18
    • SvelteKit: يتحقق الكود المُنشأ من الأنواع؛ تأخذ التواريخ $locale ?? undefined، يحتوي I18nT.svelte على خصائص مُعرفة، ويتبع التخطيط الجذري اللغة بعد التنقل دون تحذير
    • يحتفظ ملف package.json بتنسيقه: تعتمد التبعيات الجديدة على نمط الأسطر المحيطة بها بدلاً من إعادة كتابة الملف بأكمله
  30. الإصدار 0.21.0

    29 أكتوبر 2026

    كل طلب SvelteKit بلغته الخاصة، وجمل Astro تُركت سليمة، وأرقام الإصدارات كقيم

    • يقوم SvelteKit بعرض وترجمة كل طلب بلغته الخاصة: يسجل الخطاف ذلك في event.locals، ويتم إعطاء رسائل الخادم له، ولا يقرأ شيء على الخادم اللغة المشتركة لـ svelte-i18n
    • تبقى جمل Astro حول الروابط والنص الغامق رسالة واحدة، يتم عرضها مع عناصر الصفحة الخاصة بها
    • أرقام الإصدار والبناء في النسخ هي قيم، الإصدار {version} (بناء {build})، لذا فإن الإصدار لا يترك كل ترجمة قديمة
    • قوائم التحقق مما لا يمكن تشغيله ترجمته مرة واحدة، تحت تحذير واحد
  31. الإصدار 0.20.0

    29 أكتوبر 2026

    رسائل من التعليمات البرمجية، وأوصاف الصفحات ورسائل الخادم مترجمة في كل مكان، ولا شيء يتم تخطيه دون كلمة

    • يتم دائمًا إدراج تشغيل النسخ الذي لا يمكن ترجمته ويفشل الفحص: نص مساعد في وحدة نمطية عادية، وقوائم جمل، وعناصر خارج المكونات في Solid و Qwik
    • تتم ترجمة التنبيه، والتأكيد، وعنوان المستند، والرسائل المنبثقة في Lit، و Angular، و Ember، و React Native (Alert.alert وأزرارها)، و Java الخاص بـ Android، ونصوص الموقع الثابت الخاصة به
    • تتم ترجمة أوصاف الصفحات والعناوين الاجتماعية في <meta> بجوار عنوان الصفحة في كل إطار عمل، وكذلك Nuxt’s useHead و useSeoMeta
    • تتم ترجمة الرسائل من fail() و error() الخاص بـ SvelteKit ومن useActionState الخاص بـ Next
    • تتم ترجمة عمليات البحث في Angular التي تتم قراءتها عبر computed()، وقيم البداية @state في Lit، والنسخ المقروءة حسب الفهرس (quotes[i].text)
    • يجد الفحص الأنماط النصية واليسرى/اليمنى في css`` و styled-components الخاصة بـ Lit
  32. الإصدار 0.19.0

    29 أكتوبر 2026

    عناوين مسارات Qwik، والثوابت التي تم تمريرها إلى مكونات أخرى، وفحص يلتقط ما يتخطاه التشغيل

    • تُترجم رؤوس مسارات Qwik City: export const head تصبح دالة لعنوان URL للصفحة، مع عنوانها ووصفها بلغة تلك الصفحة
    • الثوابت التي يتم تمريرها بالكامل (useState(TASKS)، data={TASKS}) تُبنى باستخدام t() في المكون الذي يقرأها، مع الحفاظ على نوعها
    • الثوابت التي لا يمكن نقلها، لأنها تُقارن في الكود، أو تبعية تأثير، أو تُقرأ بواسطة مكونين، تُبلغ عنها مع السبب
    • يفشل الفحص عند تشغيل النسخ وكان لا بد من تخطيه، مع سبب التشغيل؛ تظل صيغة القالب والتخطيات الأخرى عن قصد ناجحة
    • لم تعد قوائم الفئات ذات الأدوات المساعدة ذات الكلمات العادية (حدود حدود خارجية)، ومسارات الملفات، والقوائم المرتبطة برمز اللغة تُحتسب كنسخ
  33. الإصدار 0.18.0

    29 أكتوبر 2026

    نسخ في أي حقل يعرضه المكون، وعناوين الصفحات من خلال المساعدات، وعنوان URL لكل لغة بجوار الوكيل الخاص بك

    • تُحسب النسخة في أي حقل يعرضه المكون، وليس فقط التسمية والعنوان (ROWS.map(({ task, manual }) => …))؛ المعرفات والروابط والممرات لا تفعل ذلك أبدًا
    • لا تزال القوائم التي تُقرأ باستخدام length، findIndex، some أو includes تُتبع، طالما أن هذه القراءات لا تمس نسختها
    • عناوين الصفحات التي تم تعيينها عبر مساعد، export const metadata = pageMetadata({ title: … })، تُترجم أيضًا
    • تُترجم العناصر المحفوظة خارج المكونات في ملفات العميل باستخدام <Trans>، والتي لا تحتاج إلى خطاف
    • التطبيقات التي تحتوي على proxy.ts خاص بها تحصل على i18n-proxy.ts: استدعاء واحد هناك يعطي كل صفحة عنوان URL لكل لغة
    • لم تعد قوائم فئات Tailwind تُبلغ عنها كنسخة غير مترجمة
  34. الإصدار 0.17.0

    29 أكتوبر 2026

    صفحات Astro التي تم العثور عليها بالكامل، وكتل القوالب تُركت كما هي، وفحص عبر مستودع أحادي

    • Astro: يتم العثور على النص بعد حرف مُشكَّل أو علامة اقتباس مُقوَّسة، وكذلك كل صفحة يحتوي <head> الخاص بها على <title>
    • تقوم تخطيطات Astro باستيراد وحدة i18n مرة واحدة، مع t ولغة الصفحة من سطر واحد
    • تبقى كتل Django comment و verbatim و blocktranslate، وكتل Blade @verbatim و @php، كما هي مكتوبة، لذا فإن التشغيل الثاني لا يغير شيئًا
    • تبقى عناصر Vue مع v-pre كما هي مكتوبة
    • لم يعد check يبلغ عن النسخ المترجمة في مكانها: عنوان index.html، نص SwiftUI في كتالوج السلاسل، و Django blocktranslate
    • يتحقق check --workspaces (ووضع Action: check مع workspaces: true) من كل تطبيق في monorepo
    • يتم تخطي الحزم أحادية المستودع بدون واجهة مستخدم، مثل خادم API أو حزمة أدوات مساعدة
  35. الإصدار 0.16.0

    29 أكتوبر 2026

    المكونات الخادم التي تم العثور عليها من خلال الاستيرادات، والنسخ الموجود بالفعل بلغة أخرى تُركت كما هي

    • Next.js: المكونات خارج مجلد app/ تُعرض بالطريقة التي تعرض بها مستورداتها؛ تلك الخاصة بالخادم تنتظر المترجم، وتلك التي يستوردها كلا الجانبين تصبح مكونات عميل
    • تطبيقات Next.js التي تثبت أيضًا Svelte أو Vue يتم اكتشافها كـ React، ومع مكونات Cache، يتم عرض التخطيط الجذر لكل طلب
    • يبقى الـ <code> المضمن داخل جملته، لذا فإن الجملة هي رسالة واحدة يمكن للمترجمين إعادة ترتيبها
    • النص المحدد بـ lang="…" بلغة أخرى، والقوائم التي تحتوي على إدخال لكل لغة، تبقى كما هي مكتوبة
    • <Trans> يمنح مكوناتك الخاصة طفلاً بديلاً مُعَرَّفًا، بحيث يتم التحقق من أنواع المكونات ذات الأطفال المطلوبة
    • يتم اتباع النسخ المستوردة من خلال أسماء مستعارة tsconfig مثل @/lib/nav
    • تحتفظ translate بـ `inline code` كما هي مكتوبة، وتملأ أشكال الجمع التي تركها تشغيل سابق، وتقول متى تعود لغة ما فارغة
    • لا تنتهي المفاتيح أبدًا مثل صيغة الجمع، ويبلغ الفحص عن صيغ الجمع التي تفتقدها لغة ما
  36. الإصدار 0.15.0

    28 أكتوبر 2026

    النص الذي كان يتسلل، وعناوين الصفحات، وما يحدث بعد الدمج

    • يتم اختيار اللغات الإقليمية من المتصفح وAccept-Language: pt-PT تصل إلى التطبيق على أنها pt-BR، وzh-cn تصل إلى zh-CN
    • بيانات Next.js تتحول إلى generateMetadata مع مترجم الطلب؛ عنوان ووصف index.html الخاص بـ SPA يتبع اللغة
    • مستودعات الأحادية: مكتبات المكونات تُترجم مع التطبيقات التي تستخدمها، وتُدمج رسائلها في ملفات اللغة الخاصة بتلك التطبيقات
    • pluralize(word, count) من حزمة pluralize هو جمع؛ القوائم المفصولة بفواصل و"أ، ب و ج" تصبح باستخدام Intl.ListFormat
    • الفحص يفشل على المفاتيح التي يفتقر إليها ملف اللغة، ويبلغ عن النصوص في CSS والقيم المخزنة المعروضة كما هي
    • قيمة ARIA، الدور ووصف النص، عناوين SVG في HTML ثابت، وتصميم React Native من اليمين إلى اليسار
    • النص الذي كان يتسرب سابقًا: خصائص المكونات مثل العنوان والوصف، جداول البحث، الدوال المساعدة، والنص المستورد من وحدات مثل nav.ts
    • التواريخ من date-fns و dayjs و moment تتبع لغة التطبيق، وكذلك compare locale وحروف الحالة العليا/السفلى
    • بعد الدمج: تختبر تحميل i18n في ملف الإعداد الخاص بها، وتقوم تطبيقات React متعددة اللغات بتحميل ملفات اللغة عند الطلب، وملفات اللغة تدمج مفتاحًا بمفتاح
    • Remix و React Router يترابطان بدون تطابق؛ تحقق من أعلام الخطوط المفقودة لأحرف اللغة المستهدفة
  37. الإصدار 0.14.0

    28 أكتوبر 2026

    صيغ الجمع في كل إطار عمل، من Angular إلى iOS

    • الجمع في Angular (أنبوب pluralForm المولد)، Django (pluralize لعدد blocktranslate)، Laravel (trans_choice)، Android (<plurals>) و iOS (تvariations في String Catalog)
    • عددان في جملة واحدة وترتيبات ترتيبية في Vue و Svelte و Astro و Lit و Ember و Angular أيضًا؛ عددان في Flutter و Rails و Laravel و Android
    • Vue و Svelte: ما تعيده القيم المحسوبة والدوال يُترجم، والقوائم الممررة للمكونات الفرعية تُترجم
    • مكونات الصف: النص قبل العودة في render()، والبناؤون والطرق الثابتة تُترجم
    • Pug: العلامات المضمنة داخل علامات مضمنة تصبح رسائل متداخلة
    • إجراء GitHub يفحص مجلد كل إطار عمل الخاص به (app/views، resources/views…) بدلاً من دائمًا src/
  38. الإصدار 0.13.0

    28 أكتوبر 2026

    iOS، مستندات Markdown، تم إعادة ترجمة النسخة المعدلة، والنسخة التي كانت تتسلل

    • iOS و macOS: نص SwiftUI و UIKit يُدرج في Localizable.xcstrings مع كل لغة؛ تعيينات UIKit تصبح String(localized:)
    • كود عرض Android في Kotlin و Java (setText، label.text =) يستخدم موارد النص، مثل التصاميم و Compose
    • محتوى localize-dev يترجم مستندات Markdown و MDX إلى نسخة لكل لغة، مع الحفاظ على الكود والروابط و MDX كما هو
    • النص المعدل يُعاد ترجمته: localize.lock.json يتذكر كل رسالة مصدر، والفحص يفشل على الترجمات التي تُركت قديمة
    • المفاتيح غير المستخدمة تُبلغ، و localize-dev prune يزيلها
    • النص في الثوابت المقروءة بواسطة المكونات، السلاسل المجمعة، المُعدِّل، رسائل التوست والتنبيهات، ورسائل التحقق من zod/yup تُستخرج
    • الجمل الموجهة للجنس تصبح رسالة واحدة مع نسخة لكل جنس
    • اللغات من اليمين إلى اليسار: تحقق من أنماط التقارير اليسار/اليمين، وlocalize-dev rtl --fix يستبدل الأنماط الآمنة بأخرى منطقية
    • التواريخ والأرقام والأسعار تتبع لغة التطبيق في مكونات Vue و Svelte أيضًا؛ رموز عملة أكثر، وإعداد عملة لرمز الدولار $ فقط
    • مكونات React الكلاسيكية تُترجم باستخدام withTranslation()، وعنوان الرابط يبقى داخل جملته
    • معاينة طلبات السحب تغطي كل التطبيقات في monorepo وتترك ملفات Git LFS كما هي
    • قوالب Vue المكتوبة بـ Pug تُترجم: العلامات، النصوص الموجهة والمجمعة، والسمات
    • Angular قبل الإصدار 14 يحتفظ بجمل كاملة حول الروابط، ومكونات NgModule تحصل على أنبوب الترجمة من خلال وحدتها
    • جملة تحتوي على عدين تحصل على جمع لكل عبارة محسوبة، والأعداد الترتيبية (الأول، الثاني، الثالث) تصبح جمعًا ترتيبيًا بصيغ كل لغة
    • Vue و Svelte: الثوابت التي تظهرها القوالب (عنوان، قائمة علامات تبويب في v-for أو #each) تصبح مفاتيح، تُقرأ من خلال أو $_()
    • كل مكون React من نوع class يُترجم: <Translation> حول render() عندما لا يكون التصدير الافتراضي
    • رابط عنوانه مضبوط من الكود يبقى داخل جملته؛ علامات #[inline] و #{values} في Pug تُترجم
  39. الإصدار 0.12.0

    28 أكتوبر 2026

    معاينة على مستودعك، وفحص CI، والترجمة الزائفة، والتواريخ والأموال

    • معاينة طلب السحب: قم بتوصيل مستودع و localize.dev يقوم بتوطين فرعه الافتراضي على الخادم (حتى 200 سلسلة نصية) ويفتح طلب سحب، بدون سير عمل أو مفتاح أو سحب
    • فحص localize-dev (ووضع الإجراء: فحص) يفشل في التكامل المستمر عندما يكون النص مبرمجًا بشكل ثابت أو تكون الترجمات مفقودة، مع تعليقات توضيحية على طلب السحب
    • يكتب --pseudo لغة زائفة en-XA (أو ar-XB، من اليمين إلى اليسار) للعثور على النص المقتطع والمبرمج بشكل ثابت قبل الترجمة؛ مجاني، أيضًا في ساحة اللعب
    • التواريخ والأرقام والأسعار المكتوبة بلغة واحدة (toLocaleDateString('en-US')، منسقات Intl، `$${price}`) تتبع لغة التطبيق في React و React Native و Solid
    • يضع النموذج علامة على الترجمات التي ليست متأكدًا منها، مع ذكر السبب؛ تفتح علامة التبويب مراجعة عليها ويترك زر الموافقة الباقي للأشخاص
    • عنوان URL لكل لغة لمحركات البحث: يحصل Next.js على وكيل يخدم /es/... مع روابط hreflang، و Nuxt prefix_except_default مع useLocaleHead
    • حاسبة أسعار مقابل وكالات الترجمة
  40. الإصدار 0.11.0

    28 أكتوبر 2026

    إصدارات Svelte و Angular الأقدم، والتنسيق المتداخل، وسياق التعليمات البرمجية في المراجعة

    • تحافظ Svelte 3 و 4 و Angular 14+ على الجمل حول الروابط كاملة أيضًا، من خلال المكونات التي تم إنشاؤها والتي لا تحتاج إلى ميزات أحدث
    • التنسيق داخل رابط (نص غامق في رابط، يصل إلى ثلاثة مستويات عمق) يصبح رسالة متداخلة في Vue و Svelte و Angular و Ember
    • علامة التبويب مراجعة: في الكود تعرض الأسطر حول مكان استخدام كل سلسلة نصية، مقروءة من طلب السحب الخاص بالتشغيل
    • تُظهر ساحة اللعب المكون الذي تم إنشاؤه والذي تعرض ملف مترجم جمله من خلاله
    • تستخدم رسائل Ember من الملعب والأدلة عناصر نائبة ICU، مثل CLI
    • تظهر Phrase و Lokalise بشعاراتهما الخاصة
  41. الإصدار 0.10.0

    28 أكتوبر 2026

    تبقى الجمل التي تحتوي على روابط سليمة في كل مكان، ومسارات Astro الديناميكية

    • تحتفظ Svelte 5 و Angular 17+ و Ember و Solid و Qwik بجملة حول رابط أو نص غامق كرسالة واحدة، يتم عرضها بواسطة مكون تم إنشاؤه (أو rich() في Solid و Qwik)، حتى يتمكن المترجمون من نقل الرابط
    • Rails: يصبح رابط link_to داخل جملة رسالة _html مع استيفاء الرابط؛ تتم ترجمة نص link_to و button_to و submit و label
    • Astro: تحصل المسارات الديناميكية على نسخة لكل لغة أيضًا، مع الاحتفاظ بـ getStaticPaths و props الخاصة بها
    • Laravel: يختار برنامج SetLocale الوسيط اللغة (?locale=، ملف تعريف ارتباط lang، ثم Accept-Language)، المسجل في bootstrap/app.php أو نواة HTTP
    • Django: يتم العثور على حزم الإعدادات (settings/base.py)، ويتم إضافة LocaleMiddleware حتى بدون SessionMiddleware
    • يأخذ الملعب ملفات Rails و Django و Laravel و Android، ويعرض ملفات اللغة الخاصة بكل منها
    • تُطلب السلاسل المفقودة للغة (أو أشكال الجمع) مرة أخرى قبل التراجع
    • يتطلب Node.js 22 أو أحدث؛ المشاريع التي لا تحتوي على package.json (Rails، Django، Laravel، Android، Flutter) تقوم بتشغيلها عبر npx
  42. الإصدار 0.9.0

    28 أكتوبر 2026

    Rails، Django، Laravel، Android، Astro، Qwik، Lit، Ember، ومراجعة الترجمة

    • Astro: قوالب .astro تصبح استدعاءات t() تقرأ اللغة من عنوان URL، مع نسخة من كل صفحة ثابتة لكل لغة و <html lang dir> معين في التخطيطات
    • جزر Astro (React، Vue، Svelte) تتم ترجمتها مع صفحاتها، كل منها يتبع لغة الصفحة
    • Qwik: useTranslation() تقرأ اللغة من عنوان URL، مع مسار لكل لغة؛ Lit: قوالب html`` إلى t() مع وحدة تحكم تعيد العرض عند تغيير اللغة
    • Ember: قوالب Glimmer (.hbs، .gjs/.gts) إلى {{t}} الخاصة بـ ember-intl، مع صيغ الجمع من {{if (eq n 1) …}} ومسار تطبيق يختار اللغة
    • علامة تبويب المراجعة في كل مشروع: الموافقة على الترجمات الآلية أو تعديلها، بما في ذلك صيغ الجمع؛ التعديلات تغذي ذاكرة الترجمة ويمكن إيداعها في طلب السحب المفتوح
    • ملاحظات المراجعة للمراجع التالي، الذي وافق على ماذا ومتى، واقتراحات المسرد من التصحيحات التي تستمر في إجرائها
    • نص منسق متداخل: الجمل حول الروابط التي تحتوي على نص عريض وما شابه تبقى رسالة واحدة
    • المزيد من أنماط الجمع: n > 1، Intl.PluralRules select()، ومساعدات plural(n, one, other)
    • مزامنة Lokalise و Transifex؛ GitHub Action: tms_pull يجلب الترجمات التي تمت مراجعتها إلى طلب السحب، tms_push يقوم بتحميل الملفات المصدر من الفرع الافتراضي
    • ملعب الاختبار يأخذ ملفات Astro
    • Rails: تصبح طرق عرض ERB استدعاءات t() مع YAML config/locales والعدد: صيغ الجمع؛ يتم إعداد اللغات المتاحة ومفتاح تبديل اللغة
    • Django: تحصل القوالب على علامات translate و blocktranslate، ويتم ملء كتالوجات .po، وتشغيل LocaleMiddleware
    • Laravel: تصبح طرق عرض Blade استدعاءات __() مع ملفات lang/<locale>.json مفهرسة بالنص
    • Android: تنتقل التخطيطات و Jetpack Compose إلى strings.xml (stringResource، عناصر نائبة لـ %1$s)، مع قائمة اللغات لكل تطبيق
    • Vue: تبقى الجمل حول الروابط والنص العريض رسالة واحدة، من خلال <i18n-t>
    • Qwik: تحصل المسارات الديناميكية على نسخة لكل لغة أيضًا
    • تصل عمليات CLI (pr و pr --translate) إلى علامة التبويب مراجعة، مثل علامة تبويب الإجراءات
    • المراجعون لكل لغة، يتم إرسال بريد إلكتروني مرة واحدة لكل تشغيل عند وصول الترجمات؛ كل صف في علامة التبويب مراجعة يرتبط بملفه المصدر
    • تثبيت أصغر: يتم جلب مترجمات Vue و Svelte و Angular و Astro و Ember في المرة الأولى التي يحتاجها فيها المشروع
    • أدلة لكل إطار عمل، مع مخرجات حقيقية قبل وبعد
  43. الإصدار 0.8.0

    27 أكتوبر 2026

    Angular، Flutter، Solid، ومزامنة Crowdin و Phrase

    • Angular: تصبح القوالب والقوالب المضمنة هي أنبوب ngx-translate، مع التعامل مع تدفق التحكم والربط وسمات aria؛ يتم توصيل provideI18n() و TranslatePipe
    • Flutter: تصبح وسيطات Text() و hintText-style عمليات بحث AppLocalizations مع ملفات ARB، وصيغ الجمع ICU وبيانات العناصر النائبة؛ يتم إسقاط const عند الحاجة، وإعداد gen-l10n
    • Solid: JSX مع useTranslation() من وحدة i18next تم إنشاؤها تكون لغتها إشارة
    • localize-dev sync push and pull: ملفات المصدر إلى Crowdin أو Phrase، والترجمات مرة أخرى إلى ملفات اللغة الخاصة بك
    • تأخذ ساحة اللعب قوالب Angular (.component.html) وملفات Dart
  44. الإصدار 0.7.0

    27 أكتوبر 2026

    Vue، Svelte، HTML ثابت، React Native، وملفات اللغة الموجودة

    • localize-dev translate (ووضع الإجراء: translate) يملأ الترجمات المفقودة في ملفات اللغة الموجودة: JSON، Rails YAML، gettext .po، Flutter .arb، Android strings.xml، Apple .xcstrings و .strings، extension messages.json
    • يحافظ الترجمة على مطابقات ICU =0 وفروع select، وينشئ لغات gettext جديدة بقواعد الجمع الخاصة بها
    • مكونات Vue أحادية الملف: يصبح نص القالب والسمات استدعاءات ، مع إعداد وتثبيت vue-i18n
    • Svelte و SvelteKit: يصبح الترميز استدعاءات $_() مع svelte-i18n، ويتم تهيئته من +layout أو main
    • مواقع HTML الثابتة: علامات data-i18n وملف i18n.js تم إنشاؤه يقوم بتحميل ملفات اللغة، مع قائمة لغات اختيارية
    • React Native و Expo: ترجمة تسميات إمكانية الوصول، وإعداد i18n يعمل بدون واجهات برمجة تطبيقات المتصفح
    • يتم اكتشاف الإطار تلقائيًا؛ قم بتجاوزها باستخدام "framework" في localize.config.json
    • الجمع في Vue (تنسيق الأنبوب مع قواعد كل لغة) و Svelte (ICU)؛ يتم عرض الرسائل من البرامج النصية، مثل الإشعارات والتنبيهات
    • يتم عرض صفحات SvelteKit بلغة الزائر على الخادم؛ يحصل Nuxt على @nuxtjs/i18n؛ يتم الاحتفاظ بإعدادات vue-i18n و svelte-i18n الحالية
    • HTML: تبقى الجمل التي تحتوي على روابط ونصوص عريضة سليمة، وتعمل الصفحات من القرص، ويكتب htmlPages نسخة مترجمة لكل لغة لمحركات البحث
    • اللغات من اليمين إلى اليسار تضبط الاتجاه على <html> في كل مكان؛ يبقى نص محرك القوالب و PHP كما هو
    • Monorepos: --workspaces يترجم كل تطبيق (يقوم الإجراء بتحديث ملف القفل الجذر)
  45. الإصدار 0.6.0

    27 أكتوبر 2026

    قائمة لغة مناسبة، و useLanguage()

    • localize-dev/react: قائمة لغات سهلة الاستخدام مع لوحة المفاتيح وقارئ الشاشة، مع الأعلام والأسماء الأصلية
    • تخصيص القائمة والأسماء والأعلام والتخطيط والأنماط، أو استبدال الأجزاء باستخدام render props
    • تمنح useLanguage() اللغة الحالية وعلمها واسمها واتجاهها والقائمة و setLanguage()
    • اللغات من اليمين إلى اليسار تعيّن الاتجاه على <html>؛ يتم ترقية محولات <select> التي تم إنشاؤها تلقائيًا
  46. الإصدار 0.5.0

    27 أكتوبر 2026

    محول اللغة

    • يسرد <LanguageSwitcher /> الذي تم إنشاؤه كل لغة مجمعة باسمها الخاص
    • يتذكر الاختيار (localStorage، أو ملف تعريف الارتباط الخاص باللغة في Next.js حتى تتبعه المكونات الخادمة)
    • المشاريع التي تم إعدادها بواسطة إصدار سابق تحصل عليها عند تشغيلها التالي، في طلب سحب خاص بها
  47. الإصدار 0.4.0

    27 أكتوبر 2026

    الجمع، النص الغني، مكونات خادم Next.js، الفرق

    • رسائل الجمع: مفتاح واحد مع أشكال CLDR بالضبط التي تحتاجها كل لغة
    • يصبح النص حول الروابط والتنسيق رسالة <Trans> واحدة يمكن للمترجمين إعادة ترتيبها
    • Next.js App Router: تستخدم المكونات الخادمة مترجمًا منتظرًا؛ تشارك المكونات العميل لغة الطلب
    • مسرد المشروع: مصطلحات لا تترجم أبدًا، وترجمات مفضلة وملاحظة أسلوب
    • مساحات عمل الفريق مع دعوات، ومبدل مساحات العمل
    • الفواتير مع Stripe، ورسائل البريد الإلكتروني للاستخدام عند 80% و 100%
  48. الإصدار 0.3.0

    26 أكتوبر 2026

    إحصائيات المشروع وتاريخ التشغيل

    • تُظهر صفحات المشروع النصوص المترجمة والمُبدلة، والتشغيلات، والترجمات لكل لغة
    • تُبلغ عملية GitHub عن كل تشغيل: طلب سحب، استبدال النصوص، الترجمات، أو الخطأ
    • يُعزى الاستخدام إلى المستودع الذي جاء منه
    • إعداد مفاتيح API وأذونات طلب السحب خطوة بخطوة، مرتبط بإعدادات المستودع الخاص بك
  49. الإصدار 0.2.0

    26 أكتوبر 2026

    يعمل على التطبيقات بدون التدويل

    • يضيف i18next و react-i18next عند عدم وجودهما، مع تحديث ملف القفل في العملية
    • ينشئ ملف src/i18n.ts الذي يحمل كل ملف لغة ويستورده من ملف الإدخال الخاص بك
    • يُمكن resolveJsonModule في tsconfig.json ويتطابق مع نمط علامات الاقتباس الخاص بك
    • يترك إعدادات i18next الحالية دون تغيير
  50. الإصدار 0.1.0

    26 أكتوبر 2026

    الإصدار العام الأول

    • مُاسح AST لنص JSX، والسمات المسموح بها، والقوالب النصية المعروضة في JSX
    • محول الفروق البسيطة الذي يضيف useTranslation مرة واحدة لكل مكون
    • نموذج ترجمة مستضاف على كل خطة، مع مفاتيح API، وحدود شهرية وطبقة مجانية
    • تسمية المفاتيح الدلالية والترجمة في تمريرة واحدة، مع التحقق من العناصر النائبة قبل كتابة أي شيء
    • واجهة سطر الأوامر: أوامر init، login، whoami، scan، run و pr، بالإضافة إلى وضع عدم الاتصال
    • GitHub Action يبقي فرعًا واحدًا وطلب سحب واحد لكل فرع أساسي محدثًا
    • بيئة لعب ويب تعمل بنفس محرك واجهة سطر الأوامر