Bisakah tipe node digabungkan? (cth. beberapa bentuk jamak dalam satu kalimat)
Ya, tipe node di Intlayer dapat digabungkan (dikomposisikan). Misalnya, Anda dapat menyarangkan plural() di dalam plural() lain, atau menggabungkan plural() dengan insert().
Ketika Anda perlu menyatakan dua variabel jamak independen dalam satu kalimat (contoh: "1 berkas dalam 2 folder" vs. "3 berkas dalam 1 folder"), terdapat dua pendekatan utama:
- Menggunakan
insert()dengan kunciplural()terpisah (Disarankan): Rapi, mudah dirawat, dan mempertahankan urutan kata yang tepat di berbagai bahasa. - Menyarangkan
plural()di dalamplural()(Komposisi langsung): Sintaks yang valid, tetapi dapat menyebabkan ledakan kombinatorial percabangan untuk bahasa dengan aturan jamak yang rumit.
Menggabungkan insert() dengan plural()
Pola yang paling fleksibel dan idiomatis adalah mendeklarasikan kunci plural individual untuk setiap istilah jamak dan menggabungkannya dengan templat insert().
1. Deklarasikan Konten
src/fileSummary.content.ts
Salin kode
Salin kode ke clipboard
import { insert, plural, t, type Dictionary } from "intlayer";
const fileSummaryContent = {
key: "file_summary",
content: {
// Templat penyisipan menentukan bagaimana elemen diatur per bahasa
summary: t({
id: insert("{{files}} dalam {{folders}}"),
en: insert("{{files}} in {{folders}}"),
fr: insert("{{files}} dans {{folders}}"),
ja: insert("{{folders}}の中に{{files}}"),
}),
files: t({
id: plural({
other: "{{count}} berkas",
}),
en: plural({
one: "{{count}} file",
other: "{{count}} files",
}),
fr: plural({
one: "{{count}} fichier",
other: "{{count}} fichiers",
}),
ja: plural({
other: "{{count}} 個のファイル",
}),
}),
folders: t({
id: plural({
other: "{{count}} folder",
}),
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. Gunakan dalam komponen Anda
src/components/FileSummary.tsx
Salin kode
Salin kode ke clipboard
src/components/FileSummary.vue
Salin kode
Salin kode ke clipboard
src/components/FileSummary.svelte
Salin kode
Salin kode ke clipboard
Mengapa ini adalah pendekatan yang disarankan
- Struktur Kalimat & Urutan Kata: Bahasa yang berbeda menempatkan kata sifat, hitungan, dan objek dalam urutan yang berbeda (misalnya bahasa Jepang atau Jerman mungkin membalik urutan berkas dan folder). Templat
insert()memberikan kendali penuh kepada penerjemah atas urutan kata tanpa memengaruhi aturan jamak. - Mencegah Ledakan Kombinatorial: Jika bahasa A memiliki 2 bentuk jamak (Inggris:
one,other) dan bahasa B memiliki 4 bentuk (Rusia:one,few,many,other), menyarangkan bentuk jamak memerlukan $4 \times 4 = 16$ cabang untuk bahasa Rusia. Dengan kunci terpisah, Anda hanya perlu mendeklarasikan $4 + 4 = 8$ cabang. - Dapat Digunakan Kembali: Anda dapat menggunakan kembali definisi jamak
filesataufoldersdi bagian lain antarmuka Anda.