0Pricing
Swift Academy · Ders

Ç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:

  • s son 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; .stringsdict dosyası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 .stringsdict dosyası 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

  1. Dize Katalogları ve Yerelleştirilmiş Dizeler
  2. Çoğullaştırma ve Stringsdict
  3. Yerel Ayara Duyarlı Biçimlendirme
  4. Sağdan Sola ve Düzen Yönü
← Swift Academy Sayfasına Dön