هل يمكن دمج أنواع العقد؟ (مثلاً: عدة صيغ جمع في جملة واحدة)
نعم، يمكن دمج أنواع العقد في Intlayer. على سبيل المثال، يمكنك تداخل plural() داخل plural() آخر، أو دمج plural() مع insert().
عندما تحتاج إلى التعبير عن متغيرين مستقلين للجمع في جملة واحدة (على سبيل المثال: "ملف واحد في مجلدين" مقابل "3 ملفات في مجلد واحد")، هناك طريقتان رئيسيتان:
- استخدام
insert()مع مفاتيحplural()منفصلة (موصى به): حل نظيف، سهل الصيانة ويحافظ على الترتيب الصحيح للكلمات عبر اللغات المختلفة. - تداخل
plural()داخلplural()(التركيب المباشر): صياغة صالحة، ولكنها قد تؤدي إلى تضخم تركيبي كبير في عدد الفروع بالنسبة للغات ذات قواعد الجمع المعقدة.
دمج insert() مع plural()
النمط الأكثر مرونة وملاءمة هو التصريح عن مفاتيح plural فردية لكل مصطلح مجمع والجمع بينها باستخدام قالب insert().
1. التصريح عن المحتوى
src/fileSummary.content.ts
نسخ الكود
نسخ الكود إلى الحافظة
import { insert, plural, t, type Dictionary } from "intlayer";
const fileSummaryContent = {
key: "file_summary",
content: {
// يحدد قالب الإدراج كيفية ترتيب العناصر لكل لغة
summary: t({
ar: insert("{{files}} في {{folders}}"),
en: insert("{{files}} in {{folders}}"),
fr: insert("{{files}} dans {{folders}}"),
ja: insert("{{folders}}の中に{{files}}"),
}),
files: t({
ar: plural({
one: "{{count}} ملف",
other: "{{count}} ملفات",
}),
en: plural({
one: "{{count}} file",
other: "{{count}} files",
}),
fr: plural({
one: "{{count}} fichier",
other: "{{count}} fichiers",
}),
ja: plural({
other: "{{count}} 個のファイル",
}),
}),
folders: t({
ar: plural({
one: "{{count}} مجلد",
other: "{{count}} مجلدات",
}),
en: plural({
one: "{{count}} folder",
other: "{{count}} folders",
}),
fr: plural({
one: "{{count}} dossier",
other: "{{count}} dossiers",
}),
ja: plural({
other: "{{count}} 個のフォルダー",
}),
}),
},
} satisfies Dictionary;
export default fileSummaryContent;
2. الاستخدام في المكون
src/components/FileSummary.tsx
نسخ الكود
نسخ الكود إلى الحافظة
src/components/FileSummary.vue
نسخ الكود
نسخ الكود إلى الحافظة
src/components/FileSummary.svelte
نسخ الكود
نسخ الكود إلى الحافظة
لماذا يوصى بهذا النهج
- بنية الجملة وترتيب الكلمات: تضع اللغات المختلفة الصفات والأعداد والأسماء بترتيبات مختلفة (على سبيل المثال، قد تعكس اللغتان اليابانية أو الألمانية ترتيب الملفات والمجلدات). يمنح قالب
insert()المترجمين تحكماً كاملاً في ترتيب الكلمات دون التأثير على قواعد الجمع. - تجنب التضخم التركيبي: إذا كانت اللغة A تحتوي على صيغتي جمع (الإنجليزية:
one،other) وكانت اللغة B تحتوي على 4 أو 6 صيغ (كالروسية أو العربية)، فإن تداخل الجمع يتطلب فروعاً مضاعفة بشكل كبير. مع استخدام مفاتيح منفصلة، تعلن فقط عن مجموع الفروع بدلاً من ضربها. - إعادة الاستخدام: يمكنك إعادة استخدام تعريفات صيغ الجمع لـ
filesأوfoldersفي أجزاء أخرى من واجهة المستخدم.