استخراج مفاتيح i18n باستخدام الذكاء الاصطناعي
تحويل تطبيق React موجود لدعم لغات متعددة هو أحياناً عملية مملة تتطلب إيجاد النصوص المشفرة واستبدالها بمفاتيح الترجمة.
واجهة سطر الأوامر Lingo.dev تعمل بسلاسة مع بيئات التطوير المدعومة بالذكاء الاصطناعي مثل Cursor وGitHub Copilot والأدوات المشابهة لأتمتة استخراج المحتوى القابل للترجمة من مكونات React الخاصة بك.
يمكن استخدام المفهوم الموضح أدناه لأي مجموعة تقنية، ولكن للبساطة ولتوضيح الفكرة، سنستخدم تطبيق React بسيط كمثال.
المتطلبات الأساسية
قبل استخراج المفاتيح، قم بإعداد التدويل الأساسي في تطبيق React الخاص بك. للحصول على تعليمات الإعداد الكاملة، راجع وثائق react-intl.
بعد اتباع إعداد التدويل لمجموعة التقنيات الخاصة بك، يجب أن يحتوي مشروعك على:
- القدرة على التبديل بين اللغات ديناميكياً في التطبيق
- هيكل المشروع الأساسي لتنظيم ملفات الترجمة
عملية الإعداد
تثبيت وتكوين واجهة سطر الأوامر Lingo.dev:
npx lingo.dev@latest init
إنشاء ملف مصدر فارغ:
mkdir -p src/locales
echo '{}' > src/locales/en.json
تكوين i18n.json:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json": {
"include": ["src/locales/[locale].json"]
}
}
}
استخراج المفاتيح باستخدام الذكاء الاصطناعي
حدد مكون React الخاص بك واستخدم بيئة التطوير المدعومة بالذكاء الاصطناعي لاستخراج النصوص المشفرة:
قبل الاستخراج:
function WelcomeCard() {
return (
<div className="card">
<h2>Welcome to our platform</h2>
<p>Start your journey with us today</p>
<button>Get started</button>
</div>
);
}
متطلبات الاستخراج:
- استبدال النصوص المشفرة بخطافات ومكونات react-intl
- استخدام تنسيق ICU للمتغيرات والجموع
- هيكلة المفاتيح بشكل هرمي حسب تنظيم المكونات
- إضافة جميع المفاتيح إلى ملف JSON المصدر
- الحفاظ على اتساق اصطلاحات التسمية
موجه الذكاء الاصطناعي:
Extract all hardcoded strings from React components and:
1. Replace with react-intl:
- Use useIntl hook for dynamic strings
- Use FormattedMessage for static text
- Add ICU formatting for variables ({name}) and plurals ({count})
2. Structure translation keys:
- Group by component hierarchy (components.*, pages.*)
- Use descriptive, nested keys (header.nav.home)
- Match component structure in JSON
3. Update locales:
- Add all keys to src/locales/en.json
- Maintain consistent naming across app
بعد الاستخراج بالذكاء الاصطناعي:
import { useIntl } from "react-intl";
function WelcomeCard() {
const intl = useIntl();
return (
<div className="card">
<h2>{intl.formatMessage({ id: "welcome.title" })}</h2>
<p>{intl.formatMessage({ id: "welcome.description" })}</p>
<button>{intl.formatMessage({ id: "welcome.getStarted" })}</button>
</div>
);
}
ملف en.json المُنشأ:
{
"welcome.title": "Welcome to our platform",
"welcome.description": "Start your journey with us today",
"welcome.getStarted": "Get started"
}
المعالجة الدفعية
للمكونات المتعددة، حدد جميع الملفات واستخدم نفس الأمر الشامل. يمكن لبيئات التطوير المتكاملة المدعومة بالذكاء الاصطناعي مثل Cursor وGitHub Copilot وغيرها معالجة ملفات متعددة في وقت واحد، مع الحفاظ على تسمية متسقة للمفاتيح عبر تطبيقك.
إنشاء الترجمات
بمجرد أن تستخرج بيئة التطوير المتكاملة المدعومة بالذكاء الاصطناعي المفاتيح، قم بإنشاء الترجمات:
npx lingo.dev@latest run
ينشئ هذا نسخاً مترجمة من ملفك المصدر:
src/locales/
en.json (source with extracted keys)
es.json (Spanish translations)
fr.json (French translations)
de.json (German translations)
التحقق
بعد الاستخراج، تحقق من إعدادك:
تحقق من تغطية الترجمة:
npx lingo.dev@latest run --frozen
يفشل هذا الأمر إذا كانت أي ترجمات مفقودة، مما يضمن التغطية الكاملة.
اختبر مع لغات مختلفة:
// Switch locale in your app to verify translations work
<IntlProvider locale="es" messages={spanishMessages}>
<WelcomeCard />
</IntlProvider>