0Pricing
Swift Academy · Pelajaran

Pluralisasi dan Stringsdict

Tangani aturan jamak di berbagai bahasa.

Pluralisasi dan Stringsdict adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.

Masalah Bentuk Jamak

Bahasa Inggris memiliki dua bentuk—1 item, 2 item—sehingga pengembang sering menulis "\(n) item" + (n == 1 ? "" : "s"). Cara ini bermasalah: bahasa Arab memiliki enam kategori jamak, bahasa Rusia tiga, dan bahasa Jepang satu. Menulis logika bentuk jamak secara langsung adalah bug pelokalan yang tinggal menunggu waktu.

// FRAGILE — only works for English
let n = 5
let bad = "\(n) item" + (n == 1 ? "" : "s")
print(bad)

Kategori Bentuk Jamak

Unicode mendefinisikan kategori jamak: nol, satu, dua, sedikit, banyak, lainnya. Setiap bahasa menggunakan sebagian dari kategori tersebut. Sistem memilih kategori yang tepat untuk suatu angka berdasarkan aturan lokal—Anda tidak perlu menulis aturannya sendiri.

// English uses: one, other
// Russian uses: one, few, many, other
// Japanese uses: other (only)
// You provide a variant string per category needed.

Varian Bentuk Jamak dalam Katalog String

Dalam Katalog String, Anda menandai string sebagai string yang memiliki variasi bentuk jamak. Xcode kemudian memungkinkan Anda menyediakan teks untuk setiap kategori. Saat program berjalan, varian yang tepat dipilih secara otomatis berdasarkan count yang diinterpolasikan dan lokal pengguna.

// Catalog entry, key "message_count":
//   one:   "You have %lld message"
//   other: "You have %lld messages"
let count = 1
let text = String(localized: "You have \(count) messages")
print(text)

Berkas .stringsdict Lama

Sebelum Katalog String tersedia, bentuk jamak disimpan dalam berkas .stringsdict—daftar properti yang memetakan sebuah key ke string format beserta varian untuk setiap kategori. Anda masih akan melihat berkas ini di proyek lama, dan berkas ini tetap didukung sepenuhnya.

// Localizable.stringsdict (plist) structure:
// key: "items_count"
//   NSStringLocalizedFormatKey: "%#@items@"
//   items: NSStringPluralRuleType
//     one:   "%lld item"
//     other: "%lld items"

Struktur Entri stringsdict

Setiap entri memiliki key pemformatan yang merujuk pada satu atau beberapa variabel bernama yang dibungkus dalam %#@name@. Setiap variabel menyatakan jenis aturannya (NSStringPluralRuleType), penentu jenis nilainya (%lld), dan satu string untuk setiap kategori jamak.

// The %#@items@ token expands to the chosen
// plural variant. %lld is the integer placeholder
// substituted inside each variant string.
let n = 3
print(String(localized: "\(n) items selected"))

Mencari Teks Berbentuk Jamak

Dari kode, lokasi pemanggilannya terlihat sama seperti string terlokalisasi mana pun—Anda hanya perlu menyisipkan jumlahnya. Pemilihan bentuk jamak berlangsung di dalam kerangka kerja, sehingga baris Swift yang sama dapat digunakan dalam setiap bahasa.

func messagesLabel(_ count: Int) -> String {
    return String(localized: "You have \(count) messages")
}
print(messagesLabel(0))
print(messagesLabel(1))
print(messagesLabel(7))

Mengapa 'one' Bukan Hanya 1

Kesalahan umum adalah menganggap kategori one berarti tepat angka 1. Dalam beberapa bahasa, kategori ini mencakup angka apa pun yang berakhiran 1 (seperti 21, 31), sedangkan zero mungkin dibedakan atau tidak. Selalu sediakan teks untuk setiap kategori dan biarkan aturannya menentukan pilihan.

// Russian: 1, 21, 31 -> 'one'
//          2, 3, 4    -> 'few'
//          5..20, 0   -> 'many'
// Never assume one == 1.

Menggabungkan Bentuk Jamak dengan Nilai Lain

Sebuah format dapat memiliki beberapa variabel—misalnya jumlah dan nama. Masing-masing dapat berubah ke bentuk jamak secara mandiri. Dalam Katalog Teks, Anda menandai interpolasi mana yang berubah; bagian lainnya tetap sama di semua varian.

let files = 2
let folder = "Photos"
let text = String(
    localized: "\(files) files in \(folder)")
// 'files' drives the plural; 'folder' is substituted as-is
print(text)

Varian Lebar dan Perangkat

Mekanisme katalog yang sama mendukung variasi perangkat dan lebar, sehingga Anda dapat menampilkan label singkat pada jam tangan dan label yang lebih panjang pada iPad, atau menyingkatnya saat ruang terbatas. Semua ini dapat digunakan bersama varian bentuk jamak.

// Catalog can vary by:
//   plural: one / other
//   device: iPhone / iPad / watch
//   width:  short / medium / long
let label = String(localized: "Notifications")
print(label)

Menguji Pembentukan Bentuk Jamak

Untuk memverifikasi varian Anda, jalankan aplikasi dalam setiap bahasa target menggunakan penggantian lokalisasi skema Xcode, atau gunakan pseudobahasa dan pratinjau per locale. Periksa angka-angka batas: 0, 1, 2, 5, 11, 21, 100.

let samples = [0, 1, 2, 5, 11, 21, 100]
for n in samples {
    print(String(localized: "\(n) items"))
}

Praktik Terbaik

Untuk bentuk jamak yang benar:

  • Jangan pernah menggabungkan atau menulis akhiran s secara langsung.
  • Sediakan setiap kategori yang diperlukan oleh bahasa target.
  • Tentukan bentuk jamak dari bilangan bulat yang diinterpolasikan, bukan dari teks yang telah dihitung sebelumnya.
  • Utamakan Katalog Teks untuk kode baru; gunakan .stringsdict hanya untuk target lama.
func cartSummary(_ items: Int) -> String {
    String(localized: "Your cart has \(items) items",
           comment: "Cart count; pluralized")
}
print(cartSummary(1))

Pemeriksaan Singkat

Ingat kembali cara menangani pemilihan bentuk jamak.

Ringkasan

Anda telah mempelajari pembentukan bentuk jamak yang sesuai dengan locale:

  • Kategori bentuk jamak Unicode adalah zero, one, two, few, many, other; setiap bahasa menggunakan sebagian di antaranya.
  • Katalog Teks memungkinkan Anda menambahkan varian bentuk jamak untuk setiap kunci; .stringsdict lama melakukan hal yang sama melalui plist.
  • Lokasi pemanggilan tetap sederhana—sisipkan jumlahnya dan kerangka kerja akan memilih variannya.
  • Jangan pernah menulis logika bentuk jamak secara langsung; kategori one bukan hanya angka 1.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pluralisasi dan Stringsdict” gratis?

Ya — teks lengkap “Pluralisasi dan Stringsdict” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pluralisasi dan Stringsdict”?

Tangani aturan jamak di berbagai bahasa. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Swift Academy?

Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Pluralisasi dan Stringsdict” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?

Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Katalog String dan String Terlokalisasi
  2. Pluralisasi dan Stringsdict
  3. Pemformatan yang Peka Lokal
  4. Kanan-ke-Kiri dan Arah Tata Letak
← Kembali ke Swift Academy