האם ניתן להרכיב טיפוסי צמתים (node types)? (למשל, מספר צורות רבים במשפט אחד)
כן, ניתן להרכיב טיפוסי צמתים (node types) ב-Intlayer. לדוגמה, ניתן לקנן plural() בתוך plural() אחר, או להרכיב plural() יחד עם insert().
כאשר עליך לבטא שני משתני רבים (plural) בלתי תלויים במשפט יחיד (למשל: "1 file in 2 folders" לעומת "3 files in 1 folder"), קיימות שתי גישות עיקריות:
- שימוש ב-
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({
"he-IL": insert("{{files}} ב-{{folders}}"),
en: insert("{{files}} in {{folders}}"),
fr: insert("{{files}} dans {{folders}}"),
ja: insert("{{folders}}の中に{{files}}"), // שים לב לסדר המילים הייחודי ביפנית
}),
files: t({
"he-IL": 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({
"he-IL": 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()מעניקה למתרגמים שליטה מלאה בסדר המילים מבלי להשפיע על כללי צורת הרבים. - מניעת התפוצצות קומבינטורית: אם לשפה א' יש 2 צורות רבים (אנגלית:
one,other) ולשפה ב' יש 4 צורות (רוסית:one,few,many,other), קינון צורות רבים דורש $4 \times 4 = 16$ ענפים עבור רוסית. בעזרת מפתחות נפרדים, מגדירים רק $4 + 4 = 8$ ענפים. - שימוש חוזר (Reusability): ניתן לעשות שימוש חוזר בהגדרות ה-plural של
filesאוfoldersבחלקים אחרים של ממשק המשתמש (UI).