CLI
استخدم @better-translate/cli عندما تريد من Better Translate بناء وتحديث ملفات اللغة نيابة عنك.
لا تحتاج إلى CLI لاستخدام حزم وقت التشغيل. إنه اختياري.
1. تثبيت الحزمة
npm install -D @better-translate/cliيبقى CLI محايداً فيما يتعلق بمزود الخدمة. يقوم تطبيقك بتثبيت وتكوين حزمة مزود SDK للذكاء الاصطناعي مباشرة.
2. إنشاء ملف اللغة المصدر
أنشئ src/messages/en.json:
1{2 "home": {3 "title": "Hello",4 "description": "Welcome to the app"5 }6}يمكنك أيضاً البداية بملف فارغ {} ودع bt extract يملأه.
3. إنشاء إعدادات CLI
أنشئ better-translate.config.ts:
1import { createOllama } from "ollama-ai-provider-v2";2import { defineConfig } from "@better-translate/cli/config";34const ollama = createOllama({5 baseURL: process.env.OLLAMA_BASE_URL ?? "http://localhost:11434/api",6});78export default defineConfig({9 sourceLocale: "en",10 locales: ["es", "fr"],11 model: ollama("qwen3:4b"),12 messages: {13 entry: "./src/messages/en.json",14 },15});إذا كنت تستخدم Ollama، ثبّت ollama-ai-provider-v2. إذا كنت تستخدم مزوداً مستضافاً، ثبّت حزمة ذلك المزود بدلاً من ذلك، مثل @ai-sdk/openai أو @ai-sdk/anthropic أو @ai-sdk/moonshotai.
عنوان URL الافتراضي لـ Ollama API هو محلي: http://localhost:11434/api.
هذا يعمل بنفس الطريقة مع المزودين المستضافين مثل OpenAI وAnthropic وMoonshot AI. لم يعد CLI يتضمن مساعدي المزودين.
4. وضع علامة على السلاسل في الكود
بدلاً من تسمية مفاتيح الترجمة يدوياً، اكتب النص المصدر مباشرة وأضف { bt: true }:
1import { t } from "@better-translate/core";23export function navLabel() {4 return t("Home", { bt: true });5}في وقت التشغيل، يُعيد { bt: true } السلسلة دون تغيير. سيستبدل CLI هذه المكالمات بمفاتيح مناسبة في الاستخراج التالي.
يمكنك أيضاً تمرير خيارات أخرى مثل params — يتم الاحتفاظ بها بعد الاستخراج:
1// ما تكتبه:2t("Hello world", { bt: true })3t("Hello {name}", { bt: true, params: { name: "" } })45// بعد أن يعيد bt extract كتابة الملف:6t("components.nav.helloWorld")7t("components.nav.helloName", { params: { name: "" } })يأتي نطاق المفتاح من مسار الملف المصدر (components/nav.tsx → components.nav). يتم دائماً إزالة bt: true عند إعادة الكتابة.
5. استخراج مفاتيح المصدر
npx bt extractيقوم هذا بفحص مكالمات t(..., { bt: true })، ويضيف المفاتيح المفقودة إلى ملف اللغة المصدر، ويعيد كتابة المكالمات إلى مفاتيح صارمة عادية.
يجد CLI تلقائياً better-translate.config.ts في جذر مشروعك. يُستخدم علم --config فقط إذا كان ملف الإعدادات في موقع مختلف.
6. تشغيل المولد
npx bt generateيقوم هذا بإنشاء ملفات اللغة المستهدفة بجانب ملف المصدر.
إذا كان markdown.rootDir مُمكّناً وكان التشغيل سيُنشئ أو يستبدل ملفات .md أو .mdx مترجمة، يسأل CLI عن التأكيد قبل إجراء التغييرات. استخدم --yes أو -y لتخطي التأكيد:
npx bt generate --yesيجب أن تمرر --yes في التشغيلات غير التفاعلية التي تحتاج إلى كتابة ملفات markdown مترجمة.
7. حذف المفاتيح غير المستخدمة
npx bt purgeيقوم هذا بفحص قاعدة الكود بحثاً عن مفاتيح الترجمة التي لم تعد مرجعاً لها في أي مكالمة t("...") ويحذفها من جميع ملفات اللغة. يطلب CLI تأكيداً لكل مفتاح على حدة قبل حذفه:
1? Purge unused key "home.oldTitle"? (y/N) y2? Purge unused key "sidebar.legacy"? (y/N) nاكتب y لحذف المفتاح من جميع ملفات اللغة، أو n (أو Enter فقط) للاحتفاظ به.
لحذف جميع المفاتيح غير المستخدمة دفعة واحدة بدون تأكيد:
npx bt purge --yesلمعاينة ما سيُحذف دون إجراء أي تغييرات:
npx bt purge --dry-runالمفاتيح الديناميكية: إذا كان كودك يستخدم مفتاحاً ديناميكياً مثل t(`section.${id}`)، لا يستطيع CLI تحليله بشكل ساكن. سيُحذّرك ويحمي المفاتيح التي تشترك في البادئة المكتشفة، أو يُعلّم المفتاح على أنه غير آمن ويتخطاه بدلاً من حذف شيء قد يكون لا يزال قيد الاستخدام بصمت.
8. استخدام الملفات المُنشأة في تطبيقك
بعد وجود الملفات، استوردها إلى إعدادات @better-translate/core الخاصة بك تماماً مثل أي ملف لغة مكتوب يدوياً.
Markdown
إذا كنت تريد أيضاً إنشاء markdown مُترجم، أضف خيار markdown.rootDir:
1import { createOllama } from "ollama-ai-provider-v2";2import { defineConfig } from "@better-translate/cli/config";34const ollama = createOllama({5 baseURL: process.env.OLLAMA_BASE_URL ?? "http://localhost:11434/api",6});78export default defineConfig({9 sourceLocale: "en",10 locales: ["es", "fr"],11 model: ollama("qwen3:4b"),12 messages: {13 entry: "./src/messages/en.json",14 },15 markdown: {16 rootDir: "./content/docs",17 },18});مرجع الأوامر
| الأمر | العلم | الوصف |
|---|---|---|
bt extract | فحص مكالمات bt: true، مزامنة اللغة المصدر، إعادة كتابة المكالمات | |
--config <مسار> | مسار ملف الإعدادات (الافتراضي: اكتشاف تلقائي) | |
--dry-run | معاينة التغييرات دون الكتابة | |
--max-length <n> | الحد الأقصى لطول الجزء في أسماء المفاتيح المُنشأة | |
bt generate | ترجمة اللغة المصدر إلى جميع ملفات اللغة المستهدفة | |
--config <مسار> | مسار ملف الإعدادات | |
--dry-run | معاينة التغييرات دون الكتابة | |
--yes، -y | تخطي تأكيد كتابة ملفات markdown | |
bt purge | حذف مفاتيح الترجمة غير المستخدمة من جميع ملفات اللغة | |
--config <مسار> | مسار ملف الإعدادات | |
--dry-run | معاينة المفاتيح التي ستُحذف دون الكتابة | |
--yes، -y | حذف جميع المفاتيح غير المستخدمة بدون تأكيد |
Examples
أمثلة عملية كاملة متوفرة في GitHub repo: