Çoğullaştırma ve Stringsdict
Diller arasındaki çoğul kurallarını işleyin.
Çoğullaştırma ve Stringsdict, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.
Çoğul Biçimler Sorunu
İngilizcede iki biçim vardır — 1 öğe, 2 öğe — bu nedenle geliştiriciler çoğu zaman "\(n) item" + (n == 1 ? "" : "s") yazar. Bu yaklaşım ciddi biçimde bozulur: Arapçada altı çoğul kategorisi, Rusçada üç, Japoncada ise bir kategori vardır. Çoğul mantığını sabit kodlamak, ortaya çıkmayı bekleyen bir yerelleştirme hatasıdır.
// FRAGILE — only works for English
let n = 5
let bad = "\(n) item" + (n == 1 ? "" : "s")
print(bad)Çoğul Kategorileri
Unicode çoğul kategorilerini tanımlar: zero, one, two, few, many, other. Her dil bunların bir alt kümesini kullanır. Sistem, yerel ayar kurallarına göre bir sayı için doğru kategoriyi seçer; kuralları kendiniz yazmazsınız.
// English uses: one, other
// Russian uses: one, few, many, other
// Japanese uses: other (only)
// You provide a variant string per category needed.Dize Kataloğunda Çoğul Varyantlar
Bir Dize Kataloğunda, bir dizenin çoğul varyantları olduğunu belirtirsiniz. Ardından Xcode her kategori için metin sağlamanıza olanak tanır. Çalışma zamanında doğru varyant, ara değeri yerleştirilen sayıya ve kullanıcının yerel ayarına göre otomatik olarak seçilir.
// 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)Eski .stringsdict
Dize Kataloglarından önce çoğul biçimler, bir anahtarı biçim dizesiyle ve kategori başına varyantlarla eşleyen bir özellik listesi olan .stringsdict dosyasında tutulurdu. Bunları eski projelerde hâlâ görebilirsiniz ve bu dosyalar tamamen desteklenmeye devam eder.
// Localizable.stringsdict (plist) structure:
// key: "items_count"
// NSStringLocalizedFormatKey: "%#@items@"
// items: NSStringPluralRuleType
// one: "%lld item"
// other: "%lld items"Bir stringsdict Girdisinin Yapısı
Her girdide, %#@name@ içine sarılmış bir veya daha fazla adlandırılmış değişkene başvuran bir biçim anahtarı bulunur. Her değişken, kural türünü (NSStringPluralRuleType), değer türü belirtecini (%lld) ve her çoğul kategorisi için bir dizeyi bildirir.
// 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"))Çoğullaştırılmış Bir Dizeyi Bulma
Kod açısından çağrı noktası, yerelleştirilmiş herhangi bir dizeyle aynı görünür; yalnızca sayıyı araya yerleştirirsiniz. Çoğul seçimi çerçevenin içinde gerçekleştiğinden Swift'in aynı satırı her dilde çalışır.
func messagesLabel(_ count: Int) -> String {
return String(localized: "You have \(count) messages")
}
print(messagesLabel(0))
print(messagesLabel(1))
print(messagesLabel(7))‘Bir’ Yalnızca 1 Değildir
Yaygın bir hata, bir kategorisinin tam olarak 1 sayısını ifade ettiğini varsaymaktır. Bazı dillerde bu kategori, 21 ve 31 gibi 1 ile biten tüm sayıları kapsar; sıfır kategorisi de ayrı olabilir veya olmayabilir. Her kategori için metin sağlayın ve kararı kurallara bırakın.
// Russian: 1, 21, 31 -> 'one'
// 2, 3, 4 -> 'few'
// 5..20, 0 -> 'many'
// Never assume one == 1.Çoğulları Diğer Değerlerle Birleştirme
Bir biçimde birden fazla değişken bulunabilir; örneğin bir sayı ve bir ad. Bunların her biri bağımsız olarak çoğullaştırılabilir. Dize Kataloğu'nda hangi araya yerleştirmenin değiştiğini belirtirsiniz; geri kalan bölüm varyantlar arasında sabit kalır.
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)Genişlik ve Cihaz Varyantları
Aynı katalog mekanizması cihaz ve genişlik varyasyonlarını da destekler. Böylece saatte kısa, iPad'de daha uzun bir etiket gösterebilir veya alan dar olduğunda kısaltma yapabilirsiniz. Bunlar çoğul varyantlarla birlikte çalışır.
// Catalog can vary by:
// plural: one / other
// device: iPhone / iPad / watch
// width: short / medium / long
let label = String(localized: "Notifications")
print(label)Çoğullaştırmayı Test Etme
Varyantlarınızı doğrulamak için uygulamayı Xcode'un şema yerelleştirme geçersiz kılma ayarını kullanarak her hedef dilde çalıştırın veya sözde dili ve locale başına önizlemeleri kullanın. Sınır değerlerini örnek olarak kontrol edin: 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"))
}En İyi Uygulamalar
Doğru çoğullar için:
sson eklerini asla birleştirmeyin veya sabit kodlamayın.- Hedef dillerin ihtiyaç duyduğu her kategoriyi sağlayın.
- Çoğulu, önceden hesaplanmış bir dizeden değil, araya yerleştirilen tam sayıdan türetin.
- Yeni kodlar için Dize Kataloglarını tercih edin;
.stringsdictdosyasını yalnızca eski hedefler için koruyun.
func cartSummary(_ items: Int) -> String {
String(localized: "Your cart has \(items) items",
comment: "Cart count; pluralized")
}
print(cartSummary(1))Hızlı Kontrol
Çoğul seçiminin nasıl ele alınması gerektiğini hatırlayın.
Özet
locale kurallarına uygun çoğullaştırmayı öğrendiniz:
- Unicode çoğul kategorileri sıfır, bir, iki, az, çok, diğer şeklindedir; her dil bunların bir alt kümesini kullanır.
- Dize Katalogları, her anahtar için çoğul varyantları eklemenizi sağlar; eski
.stringsdictdosyası da bunu bir plist aracılığıyla yapar. - Çağrı noktaları basit kalır; sayıyı araya yerleştirirsiniz ve çerçeve varyantı seçer.
- Çoğul mantığını asla sabit kodlamayın; bir kategorisi yalnızca 1 sayısı değildir.
Sıkça Sorulan Sorular
“Çoğullaştırma ve Stringsdict” dersi ücretsiz mi?
Evet — “Çoğullaştırma ve Stringsdict” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.
“Çoğullaştırma ve Stringsdict” dersinde ne öğreneceğim?
Diller arasındaki çoğul kurallarını işleyin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Swift Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Çoğullaştırma ve Stringsdict” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Dize Katalogları ve Yerelleştirilmiş Dizeler
- Çoğullaştırma ve Stringsdict
- Yerel Ayara Duyarlı Biçimlendirme
- Sağdan Sola ve Düzen Yönü