مرجع واجهة سطر الأوامر (CLI)
الأوامر
i18n-rosetta init Interactive setup wizard (--yes for quick defaults)
i18n-rosetta sync Translate & sync all locale files
i18n-rosetta watch Auto-sync when the source file changes
i18n-rosetta audit List all untranslated [EN] fallback values
i18n-rosetta lint Scan source code for hardcoded strings
i18n-rosetta wrap Auto-wrap hardcoded strings in t() calls (with undo)
i18n-rosetta seo <sub> Generate hreflang, sitemap.xml, or JSON-LD schema
i18n-rosetta integrity Audit locale files for format/encoding issues
i18n-rosetta verify Verify translations are present and correct (CI gate)
i18n-rosetta status Show pair configuration, plugins, and quality tiers
i18n-rosetta provenance Audit translation resource licensing
i18n-rosetta plugin <sub> Manage method plugins (install, remove, list)
i18n-rosetta fonts <sub> Download web fonts for PUA script converters
i18n-rosetta tm <sub> Manage Translation Memory cache (stats, clear)
i18n-rosetta xliff <sub> Export/import XLIFF 1.2 for professional review
شغّل i18n-rosetta <command> --help للحصول على مساعدة مفصلة حول أي أمر.
الخيارات العامة
--help, -h Show help (global or per-command)
--version, -v Print version and exit
--yes, -y Skip interactive prompts, use defaults
--config <path> Custom config file path
--dir <path> Override locales directory
--content-dir <path> Hugo/Docusaurus content directory for Markdown translation
--source <code> Override source locale (default: en)
--model <model> Override translation model
--method <method> Translation method: llm, google-translate (default: from config)
--format <fmt> Locale file format: json, toml, yaml, or auto
--dry, --dry-run Preview changes without writing files
--concurrency <n> Max parallel API calls (sets both JSON and content, default: 48)
--json-concurrency <n> Max parallel locale translations for JSON keys (default: 200)
--content-concurrency <n> Max parallel API calls for content translation (default: 48)
--force-content Re-translate all content files (clears content lock)
--force-keys <keys> Comma-separated dot-notation keys to force re-translate
--no-tm Skip Translation Memory cache for this sync run
--no-verify Skip post-sync verification pass
--locale <code> Target locale (xliff export, tm clear)
--quiet Errors and warnings only — suppress banner, progress bar, and info lines
--json Machine-readable NDJSON output — one JSON object per event
init
معالج إعداد تفاعلي يقوم بإنشاء i18n-rosetta.config.json. يرشدك عبر لغة المصدر، واللغات المستهدفة، وتنسيق الملف، ونموذج الترجمة.
i18n-rosetta init # interactive wizard
i18n-rosetta init --yes # skip wizard, use defaults
i18n-rosetta init --yes --langs fr,de,ja # quick setup with specific languages
i18n-rosetta init --source en --dir ./i18n # overrides with defaults
خيار --langs: قائمة برموز اللغات المستهدفة مفصولة بفواصل. يتخطى مطالبة اللغة ويطبق الإعدادات المسبقة الافتراضية للأسلوب لكل لغة. ادمجه مع --yes لإعداد غير تفاعلي بالكامل.
الإعدادات المسبقة للغات: عند مطالبتك بإدخال اللغات المستهدفة، يمكنك كتابة أسماء الإعدادات المسبقة:
european→ fr, de, es, it, pt, nlasian→ ja, zh, koglobal→ fr, es, de, ja, zh, ko, pt, arnordic→ da, fi, nb, sv
يمكنك المزج بين الإعدادات المسبقة والرموز الفردية: european, ja → fr, de, es, it, pt, nl, ja
sync
يترجم المفاتيح المفقودة والقديمة عبر جميع ملفات اللغات. يُشغّل عملية التحقق بعد المزامنة افتراضيًا.
i18n-rosetta sync # translate everything
i18n-rosetta sync --dry-run # preview only
i18n-rosetta sync --force-keys "hero.title" # force re-translate
i18n-rosetta sync --force-keys "a.title,a.subtitle" # multiple keys
i18n-rosetta sync --force-content # re-translate all Markdown/MDX
i18n-rosetta sync --content-dir ./content # include Hugo Markdown
i18n-rosetta sync --method google-translate # force Google Translate
i18n-rosetta sync --concurrency 20 # 20 parallel API calls (both phases)
i18n-rosetta sync --json-concurrency 30 # 30 parallel locale translations (JSON)
i18n-rosetta sync --content-concurrency 8 # 8 parallel content translations
i18n-rosetta sync --no-verify # skip post-sync verification
i18n-rosetta sync --no-tm # skip cache, fresh API calls
ذاكرة الترجمة (Translation Memory): افتراضيًا، يقوم sync بتحميل .rosetta/tm.json ويقدم الترجمات المخزنة مؤقتًا للقيم المصدرية غير المتغيرة. استخدم --no-tm لتجاوز ذاكرة التخزين المؤقت (مفيد عند تبديل مزودي الترجمة أو تصحيح أخطاء الجودة). راجع ذاكرة الترجمة.
اكتشاف التغييرات: تقوم rosetta بتخزين تجزئات SHA-256 في .i18n-rosetta.lock. عندما تتغير القيم المصدرية، تقوم المزامنة التالية تلقائيًا بإعادة ترجمة تلك المفاتيح. قم بإيداع (Commit) ملف القفل حتى يتشارك جميع المطورين نفس الأساس.
التوازي (Parallelism): تعمل كل من ترجمة مفاتيح JSON وترجمة المحتوى بالتوازي. تُترجم ملفات لغات JSON في وقت واحد (الافتراضي: 200 لغة متزامنة)، مع توازي الدفعات داخل كل لغة أيضًا (4 دفعات متزامنة). تعمل ترجمة المحتوى (Markdown، وMDX، ومنشورات المدونة) في تجمع عناصر عمل مسطح (الافتراضي: 48 استدعاء API متزامن). يمكنك تجاوز هذه القيم باستخدام --json-concurrency، أو --content-concurrency، أو --concurrency (يضبط كليهما).
المخرجات: تعرض المزامنة لافتة الإصدار، واكتشاف التنسيق/إطار العمل، وتقدير التكلفة، وأشرطة التقدم لكل لغة:
i18n-rosetta v3.3.2
[INFO] Detected format: json (auto)
[INFO] Source: en.json (2,847 keys)
[INFO] Pairs: es-MX:llm, fr:deepl
[INFO] es-MX.json — 2,847 missing
████████████████████████████████ 2,847/2,847 keys
[INFO] fr.json — 2,847 missing
████████████████████████████████ 2,847/2,847 keys
[OK] Synced 5,694 keys total.
تُحدَّث أشرطة التقدم في مكانها بعد كل دفعة (~80 مفتاحًا). استخدم --quiet للأخطاء/التحذيرات فقط، أو --json لمخرجات NDJSON قابلة للقراءة آليًا. كلاهما يخفي شريط التقدم واللافتة.
watch
مزامنة تلقائية عند تغير ملف لغة المصدر. يستمر في العمل حتى تتم مقاطعته باستخدام Ctrl+C.
i18n-rosetta watch
audit
يسرد جميع القيم الاحتياطية غير المترجمة المسبوقة بـ [EN] من عمليات التشغيل السابقة. يخرج بالرمز 1 إذا تم العثور على أي منها — استخدمه كبوابة CI لإفشال عمليات البناء ذات الترجمات غير المكتملة.
i18n-rosetta audit
verify
يعيد قراءة جميع ملفات اللغات من القرص ويتحقق من أن الترجمات موجودة بالفعل وصحيحة. هذا هو نفس التحقق الذي يتم تشغيله تلقائيًا في نهاية كل sync (ما لم يتم تمرير --no-verify).
i18n-rosetta verify # verify all locale files
i18n-rosetta verify --warn-only # non-blocking
i18n-rosetta verify && echo "All good" # CI gate
ما يتحقق منه:
- تطابق المفاتيح — جميع مفاتيح المصدر موجودة في كل هدف
- علامات التراجع
[EN]من عمليات التشغيل السابقة - الترجمات الفارغة
- التوافق مع نظام الكتابة — يجب أن تحتوي اللغات غير اللاتينية على ترجمات غير ASCII
- الحفاظ على العناصر النائبة — تطابق العناصر النائبة لـ ICU مع المصدر
- مشكلات الترميز — علامات BOM، والأحرف غير المرئية
- تكرار المصدر — القيم المطابقة للمصدر (تحذير)
lint
يفحص الكود المصدري بحثًا عن السلاسل النصية الثابتة (hardcoded) الموجهة للمستخدم والتي يجب أن تستخدم استدعاءات ترجمة i18n. يكتشف إطار العمل الخاص بك تلقائيًا (next-intl، react-i18next، vue-i18n، Hugo).
i18n-rosetta lint # exits 1 if issues found
i18n-rosetta lint --warn-only # always exits 0
i18n-rosetta lint --src ./app # custom source directory
i18n-rosetta lint --min-length 4 # minimum string length to flag
ما يكتشفه:
- السلاسل النصية الثابتة في نص JSX، و
placeholder، وalt، وaria-label، وtitle - الملفات التي تحتوي على محتوى موجه للمستخدم ولكن لا تتضمن استيرادًا لإطار عمل i18n
- المفاتيح الميتة — مفاتيح اللغة التي لا يشير إليها أي ملف مصدري
- درجة التغطية — النسبة المئوية للسلاسل النصية التي تمر عبر i18n
الاستثناءات: أنشئ .rosettaignore في جذر مشروعك (أنماط glob، مثل .gitignore).
wrap
يغلف تلقائيًا السلاسل النصية الثابتة المكتشفة بواسطة lint في استدعاءات t(). ينشئ نسخًا احتياطية تلقائية قبل تعديل الملفات.
i18n-rosetta wrap # auto-wrap with backup
i18n-rosetta wrap --dry # preview wrapping changes
i18n-rosetta wrap --undo # restore from .rosetta-backup/
بوابات الأمان:
- التحقق من نظافة Git (يتم تخطيه في التشغيل التجريبي dry-run)
- النسخ الاحتياطي التلقائي إلى
.rosetta-backup/ - معاينة الفروق (Diff) قبل كتابة كل ملف
- دعم
--undoللاستعادة من النسخة الاحتياطية
seo
إنشاء عناصر SEO للمواقع متعددة اللغات.
i18n-rosetta seo hreflang # print hreflang tags
i18n-rosetta seo sitemap --base-url https://example.com --out sitemap.xml
i18n-rosetta seo jsonld --base-url https://example.com # JSON-LD schema
| الأمر الفرعي | المخرجات |
|---|---|
hreflang | وسوم <link rel="alternate" hreflang> |
sitemap | sitemap.xml متعدد اللغات |
jsonld | مخطط لغة موقع الويب JSON-LD |
integrity
يكتشف التلف والانحراف في ملفات اللغات المترجمة.
i18n-rosetta integrity # exits 1 if issues found
i18n-rosetta integrity --warn-only # non-blocking
ما يتحقق منه:
- تلف العناصر النائبة (مثل
{name}الموجود في المصدر ولكنه مفقود في الهدف) - مشكلات الترميز (mojibake، وUnicode غير صالح)
- النسخ غير المترجمة (قيمة الهدف مطابقة للمصدر)
- المفاتيح اليتيمة (المفاتيح في الهدف التي لا وجود لها في المصدر)
- اكتمال فئات الجمع في ICU MessageFormat (على سبيل المثال، تحتاج اللغة العربية إلى 6 فئات)
tm
إدارة ذاكرة التخزين المؤقت لذاكرة الترجمة (.rosetta/tm.json). تخزن ذاكرة الترجمة (TM) الترجمات السابقة وتقدمها في عمليات المزامنة اللاحقة بدلاً من استدعاء واجهة برمجة التطبيقات (API).
i18n-rosetta tm stats # show cache statistics
i18n-rosetta tm clear # clear cache (with confirmation)
i18n-rosetta tm clear --yes # clear without confirmation
i18n-rosetta tm clear --locale fr # clear only French entries
| الأمر الفرعي | المخرجات |
|---|---|
stats | عدد الإدخالات، وحجم الملف، وتفصيل لكل لغة |
clear | حذف ملف ذاكرة التخزين المؤقت (بالكامل أو لكل لغة) |
| الخيار | التأثير |
|---|---|
--locale <code> | مسح الإدخالات للغة واحدة فقط |
--yes | تخطي مطالبة التأكيد |
راجع ذاكرة الترجمة لمعرفة كيفية عمل ذاكرة الترجمة (TM) ومتى يجب مسحها.
xliff
تصدير واستيراد ملفات XLIFF 1.2 لمراجعتها من قبل المترجمين المحترفين. XLIFF هو تنسيق التبادل العالمي المدعوم من أدوات الترجمة بمساعدة الحاسوب (CAT) مثل memoQ، وSDL Trados، وPhrase.
i18n-rosetta xliff export --locale fr # export French XLIFF
i18n-rosetta xliff export --locale ja --out ./review/ # custom output path
i18n-rosetta xliff import .rosetta/xliff/fr.xliff # import reviewed file
i18n-rosetta xliff import ./reviewed.xliff --dry # preview import
| الأمر الفرعي | المخرجات |
|---|---|
export | إنشاء .xliff من ملفات لغة المصدر + الهدف |
import | دمج ترجمات .xliff المراجَعة في ملفات اللغات |
| الخيار | التأثير |
|---|---|
--locale <code> | اللغة المستهدفة للتصدير (مطلوب) |
--out <path> | مسار أو دليل مخرجات مخصص |
--dry | معاينة الاستيراد دون كتابة |
راجع العمل مع المترجمين المحترفين للحصول على سير العمل بالكامل.
status
عرض تكوين الأزواج، والإضافات المثبتة، ومستويات الجودة، ودرجات قياس الأداء.
i18n-rosetta status
provenance
تدقيق تراخيص موارد الترجمة لجميع الإضافات المثبتة.
i18n-rosetta provenance
plugin
إدارة إضافات طرق الترجمة. الإضافات هي وصفات ترجمة معبأة مسبقًا ومثبتة في .rosetta/methods/.
i18n-rosetta plugin list # show installed plugins
i18n-rosetta plugin install ./my-method/ # install from local directory
i18n-rosetta plugin remove crk-coached-v1 # remove a plugin
راجع مواصفات الإضافة لمعرفة تنسيق بيان الإضافة (manifest).
fonts
تنزيل وإدارة خطوط الويب PUA لمحولات نصوص اللغات المصطنعة. تحتاج اللغات التي تستخدم أحرف منطقة الاستخدام الخاص (Private Use Area) مثل (Klingon، وSindarin، وKryptonian) إلى خطوط ويب مخصصة لعرض نصوصها. يقوم هذا الأمر بتنزيلها من مستودعات مفتوحة المصدر تم التحقق منها.
i18n-rosetta fonts list # show needed fonts
i18n-rosetta fonts install # download all needed fonts
i18n-rosetta fonts install --css # also generate CSS snippet
i18n-rosetta fonts install --dir ./public/fonts # custom output directory
| الأمر الفرعي | المخرجات |
|---|---|
list | يعرض خطوط PUA المطلوبة وحالة تثبيتها |
install | ينزل الخطوط للغات المكوّنة |
| الخيار | التأثير |
|---|---|
--dir <path> | تجاوز دليل مخرجات الخطوط (يُكتشف تلقائيًا من نوع المشروع) |
--css | إنشاء مقتطف conlang-fonts.css بجانب الخطوط |
--config <path> | مسار ملف التكوين (يُستخدم لاكتشاف اللغات التي تحتاج إلى خطوط) |
الاكتشاف التلقائي: يُستنتج دليل المخرجات من هيكل مشروعك:
- Docusaurus →
static/fonts/أوwebsite/static/fonts/ - Hugo →
static/fonts/ - الافتراضي →
public/fonts/
محولات Unicode الأصلية (crk → Cree Syllabics، sr → Serbian Cyrillic) لا تتطلب تثبيت خطوط.
راجع اللغات المصطنعة والنصوص وقواعد الإملاء للحصول على التفاصيل الكاملة لخطوط PUA.
مسار العمل ثلاثي الطبقات
استخدم lint، وsync، وaudit معًا للحصول على نظام i18n محكم:
{
"scripts": {
"i18n:lint": "i18n-rosetta lint",
"i18n:sync": "i18n-rosetta sync",
"i18n:audit": "i18n-rosetta audit"
}
}
| الطبقة | الأمر | متى | الغرض |
|---|---|---|---|
| Lint | lint | قبل الإيداع (Pre-commit) | حظر الإيداعات التي تحتوي على سلاسل نصية ثابتة |
| Sync | sync | بعد الإيداع / CI | ترجمة المفاتيح المفقودة والمعدلة |
| Verify | verify | بعد المزامنة / CI | تأكيد وجود الترجمات وصحتها |
| Audit | audit | خطوة البناء | إفشال النشر إذا كانت أي لغة تحتوي على علامات [EN] |
انظر أيضًا
- التكوين — مرجع ملف التكوين
- طرق الترجمة — اختيار الطريقة لكل زوج
- ذاكرة الترجمة — التخزين المؤقت وتوفير التكاليف
- العمل مع المترجمين المحترفين — سير عمل XLIFF
- مواصفات الإضافة — تنسيق بيان الإضافة (manifest)
- دليل CI/CD — أتمتة أوامر CLI في مسار عملك
- كيف تعمل المزامنة — فهم مسار عمل المزامنة
- بوابة الجودة — كيفية التحقق من صحة الترجمات