استخدم مساعدك المفضل للملخص واستخدم هذه الصفحة والموفر AI الذي تريده
تاريخ الإصدارات
- "تحديث استخدام واجهة برمجة تطبيقات useIntlayer في Solid للوصول المباشر إلى الخصائص"v8.9.0٤/٥/٢٠٢٦
- "إضافة أمر init"v7.5.9٣٠/١٢/٢٠٢٥
- "بدء السجل"v5.5.10٢٩/٦/٢٠٢٥
تمت ترجمة محتوى هذه الصفحة باستخدام الذكاء الاصطناعي.
اعرض آخر نسخة المحتوى الأصلي باللغة الإنكليزيةIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
ترجم Lynx and React mobile app باستخدام Intlayer | التدويل (i18n)
انظر قالب التطبيق على GitHub.
لماذا Intlayer على البدائل؟
بالمقارنة مع الحلول الرئيسية مثل react-native-localize أو i18next، يعد Intlayer حلاً يأتي مزودًا بتحسينات متكاملة مثل:
تغطية الوشق الكاملة
تم تحسين Intlayer للعمل بشكل مثالي مع Lynx وReact من خلال تقديم نطاق المحتوى على مستوى المكونات، ودعم TypeScript، وجميع الميزات اللازمة لتوسيع نطاق التدويل (i18n).
حجم البندل
بدلاً من تحميل ملفات JSON ضخمة إلى صفحاتك، قم بتحميل المحتوى الضروري فقط. يساعد Intlayer في تقليل أحجام البندل وصفحاتك بنسبة تصل إلى 50%.
الصيانة
يؤدي تحديد نطاق محتوى تطبيقك إلى تسهيل الصيانة للتطبيقات واسعة النطاق. يمكنك تكرار أو حذف مجلد ميزات واحد دون العبء العقلي لمراجعة قاعدة بيانات المحتوى بالكامل. بالإضافة إلى ذلك، تتم كتابة Intlayer بالكامل لضمان دقة المحتوى الخاص بك.
وكيل الذكاء الاصطناعي
يؤدي تحديد موقع المحتوى المشترك إلى تقليل السياق المطلوب بواسطة نماذج اللغات الكبيرة (LLMs). يأتي Intlayer أيضًا مزودًا بمجموعة من الأدوات، مثل CLI لاختبار الترجمات المفقودة،LSP، MCP ومهارات الوكيل، لجعل تجربة المطور (DX) أكثر سلاسة للذكاء الاصطناعي وكلاء.
الأتمتة
استخدم الأتمتة للترجمة في مسار CI/CD الخاص بك باستخدام LLM من اختيارك على حساب مزود الذكاء الاصطناعي الخاص بك. يقدم Intlayer أيضًا مترجمًا لأتمتة استخراج المحتوى، بالإضافة إلى منصة ويب للمساعدة في الترجمة في الخلفية.
أداء
يمكن أن يؤدي ربط ملفات JSON الضخمة بالمكونات إلى حدوث مشكلات في الأداء والتفاعل. يعمل Intlayer على تحسين تحميل المحتوى الخاص بك في وقت الإنشاء.
التحجيم مع عدم وجود مطور
أكثر من مجرد حل i18n، يوفر Intlayer [محررًا مرئيًا] مستضافًا ذاتيًا](/ar/doc/concept/editor) وكامل CMS لمساعدتك في إدارة المحتوى متعدد اللغات في الوقت الفعلي، مما يجعل التعاون مع المترجمين ومؤلفي النصوص وأعضاء الفريق الآخرين سلسًا. يمكن تخزين المحتوى محليًا و/أو عن بعد.
الخطوة 1: تثبيت التبعيات
من مشروع Lynx الخاص بك، قم بتثبيت الحزم التالية:
نسخ الكود إلى الحافظة
npm install intlayer react-intlayer lynx-intlayernpx intlayer initالحزم
intlayer
أداة i18n الأساسية للتكوين، محتوى القاموس، إنشاء الأنواع، وأوامر CLI.react-intlayer
تكامل React الذي يوفر موفري السياق وخطافات React التي ستستخدمها في Lynx للحصول على اللغات وتبديلها.lynx-intlayer
تكامل Lynx الذي يوفر المكون الإضافي لدمج Intlayer مع Lynx bundler.
الخطوة 2: إنشاء تكوين Intlayer
في جذر مشروعك (أو في أي مكان مناسب)، قم بإنشاء ملف تكوين Intlayer. قد يبدو كالتالي:
نسخ الكود إلى الحافظة
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [
Locales.ENGLISH,
Locales.FRENCH,
Locales.SPANISH,
// ... أضف أي لغات أخرى تحتاجها
],
defaultLocale: Locales.ENGLISH,
},
};
export default config;داخل هذا التكوين، يمكنك:
- تكوين قائمة اللغات المدعومة.
- تعيين لغة افتراضية.
- لاحقًا، يمكنك إضافة خيارات أكثر تقدمًا (مثل السجلات، أدلة المحتوى المخصصة، إلخ).
- راجع وثائق تكوين Intlayer للمزيد.
الخطوة 3: إضافة المكون الإضافي Intlayer إلى Lynx bundler
لاستخدام Intlayer مع Lynx، تحتاج إلى إضافة المكون الإضافي إلى ملف lynx.config.ts الخاص بك:
نسخ الكود إلى الحافظة
import { defineConfig } from "@lynx-js/rspeedy";import { pluginIntlayerLynx } from "lynx-intlayer/plugin";export default defineConfig({ plugins: [ // ... مكونات إضافية أخرى pluginIntlayerLynx(), ],});الخطوة 4: إضافة موفر Intlayer
للحفاظ على تزامن لغة المستخدم عبر تطبيقك، تحتاج إلى تغليف المكون الجذري الخاص بك باستخدام المكون IntlayerProvider من react-intlayer.
أيضًا، تحتاج إلى إضافة ملف وظيفة intlayerPolyfill لضمان عمل Intlayer بشكل صحيح.
نسخ الكود إلى الحافظة
import { root } from "@lynx-js/react";import { App } from "./App.js";import { IntlayerProvider } from "react-intlayer";import { intlayerPolyfill } from "lynx-intlayer";intlayerPolyfill();root.render( <IntlayerProvider> <App /> </IntlayerProvider>);if (import.meta.webpackHot) { import.meta.webpackHot.accept();}الخطوة 5: إعلان المحتوى الخاص بك
قم بإنشاء ملفات إعلان المحتوى في أي مكان في مشروعك (عادةً داخل src/)، باستخدام أي من تنسيقات الامتداد التي يدعمها Intlayer:
.content.json.content.ts.content.tsx.content.js.content.jsx.content.mjs.content.mjx.content.cjs.content.cjx- إلخ.
مثال:
نسخ الكود إلى الحافظة
import { t, type Dictionary } from "intlayer";
const appContent = {
key: "app",
content: {
title: "React",
subtitle: t({
en: "on Lynx",
fr: "sur Lynx",
es: "en Lynx",
}),
description: t({
ar: "اضغط على الشعار واستمتع!",
en: "Tap the logo and have fun!",
fr: "Appuyez sur le logo et amusez-vous!",
es: "¡Toca el logo y diviértete!",
}),
hint: [
t({
ar: "تعديل",
en: "Edit",
fr: "Modifier",
es: "Editar",
}),
" src/App.tsx ",
t({
ar: "لرؤية التحديثات!",
en: "to see updates!",
fr: "pour voir les mises à jour!",
es: "para ver actualizaciones!",
}),
],
},
} satisfies Dictionary;
export default appContent;لمزيد من التفاصيل حول إعلانات المحتوى، راجع وثائق محتوى Intlayer.
الخطوة 4: استخدام Intlayer في مكوناتك
استخدم الخطاف useIntlayer في المكونات الفرعية للحصول على المحتوى المحلي.
نسخ الكود إلى الحافظة
import { useCallback, useState } from "@lynx-js/react";import { useIntlayer } from "react-intlayer";import "./App.css";import arrow from "./assets/arrow.png";import lynxLogo from "./assets/lynx-logo.png";import reactLynxLogo from "./assets/react-logo.png";import { LocaleSwitcher } from "./components/LocaleSwitcher.jsx";export const App = () => { const [alterLogo, setAlterLogo] = useState(false); const { title, subtitle, description, hint } = useIntlayer("app"); const onTap = useCallback(() => { // تغيير الخلفية فقط setAlterLogo(!alterLogo); }, [alterLogo]); return ( <view> <view className="Background" /> <view className="App"> <view className="Banner"> <view className="Logo" bindtap={onTap}> {alterLogo ? ( <image src={reactLynxLogo} className="Logo--react" /> ) : ( <image src={lynxLogo} className="Logo--lynx" /> )} </view> <text className="Title">{title}</text> <text className="Subtitle">{subtitle}</text> </view> <view className="Content"> <image src={arrow} className="Arrow" /> <text className="Description">{description}</text> <text className="Hint"> {hint[0]} <text style={{ fontStyle: "italic" }}>{hint[1]}</text> {hint[2]} </text> </view> <LocaleSwitcher /> <view style={{ flex: 1 }}></view> </view> </view> );};عند استخدامcontent.someKeyفي الخصائص النصية (مثل خاصيةtitleللزر أو خاصيةchildrenلمكونText)، قم باستدعاءcontent.someKey.valueللحصول على النص الفعلي.
(اختياري) الخطوة 5: تغيير لغة التطبيق
لتبديل اللغات من داخل مكوناتك، يمكنك استخدام طريقة setLocale من الخطاف useLocale:
نسخ الكود إلى الحافظة
import { type FC } from "react";import { getLocaleName } from "intlayer";import { useLocale } from "react-intlayer";export const LocaleSwitcher: FC = () => { const { setLocale, availableLocales, locale } = useLocale(); return ( <view style={{ display: "flex", flexDirection: "row", justifyContent: "center", alignItems: "center", gap: 10, }} > {availableLocales.map((localeEl) => ( <text key={localeEl} style={{ color: localeEl === locale ? "#fff" : "#888", fontSize: "12px", }} bindtap={() => setLocale(localeEl)} > {getLocaleName(localeEl)} </text> ))} </view> );};هذا يؤدي إلى إعادة رسم جميع المكونات التي تستخدم محتوى Intlayer، مما يعرض الآن الترجمات للغة الجديدة.
راجع وثائق useLocale لمزيد من التفاصيل.
إعداد TypeScript (إذا كنت تستخدم TypeScript)
يقوم Intlayer بإنشاء تعريفات الأنواع في مجلد مخفي (افتراضيًا .intlayer) لتحسين الإكمال التلقائي واكتشاف أخطاء الترجمة:
نسخ الكود إلى الحافظة
// tsconfig.json{ // ... إعدادات TypeScript الحالية "include": [ "src", // كود المصدر الخاص بك ".intlayer/types/**/*.ts", // <-- تأكد من تضمين الأنواع التي تم إنشاؤها تلقائيًا // ... أي شيء آخر تقوم بتضمينه بالفعل ],}هذا ما يتيح ميزات مثل:
- الإكمال التلقائي لمفاتيح القاموس.
- التحقق من النوع الذي يحذرك إذا قمت بالوصول إلى مفتاح غير موجود أو عدم تطابق النوع.
إعداد Git
لتجنب الالتزام بالملفات التي يتم إنشاؤها تلقائيًا بواسطة Intlayer، أضف التالي إلى ملف .gitignore الخاص بك:
نسخ الكود إلى الحافظة
# تجاهل الملفات التي يتم إنشاؤها بواسطة Intlayer.intlayerإضافة VS Code
لتحسين تجربة التطوير الخاصة بك مع Intlayer، يمكنك تثبيت إضافة Intlayer الرسمية لـ VS Code.
تقدم هذه الإضافة:
- الإكمال التلقائي لمفاتيح الترجمة.
- كشف الأخطاء في الوقت الحقيقي للترجمات المفقودة.
- معاينات داخلية للمحتوى المترجم.
- إجراءات سريعة لإنشاء الترجمات وتحديثها بسهولة. لمزيد من التفاصيل حول كيفية استخدام الإضافة، راجع توثيق إضافة Intlayer لـ VS Code.
المزيد من الاستكشاف
- المحرر المرئي: استخدم المحرر المرئي لـ Intlayer لإدارة الترجمات بشكل مرئي.
- تكامل CMS: يمكنك أيضًا استخراج محتوى قاموسك وجلبه من نظام إدارة المحتوى (CMS).
- أوامر CLI: استكشف CLI الخاص بـ Intlayer للمهام مثل استخراج الترجمات أو التحقق من المفاتيح المفقودة.