İçeriğe geç

2025'te Swift Yerelleştirmesi: Daha Önce Kullanamadığın En İyi Pratikler

String Catalogs yerelleştirmeyi iyileştirdi ama yeni zorluklar da getirdi. Bu yazıda modern en iyi pratikler ve yerelleştirme şeklini değiştirebilecek yeni bir açık kaynak araçla yapıyı ve verimliliği nasıl geri kazanacağını keşfedeceksin.

2025'te Swift Yerelleştirmesi: Daha Önce Kullanamadığın En İyi Pratikler

iOS Yerelleştirmesinin Evrimi

Yerelleştirmenin ne kadar ilerlediğini — ve hâlâ nerede yetersiz kaldığını — anlamak için kısa bir geriye bakış yapalım: String Catalogs öncesi dönemde, geliştiriciler en.lproj gibi dile özgü klasörlerde düzenlenmiş .strings ve .stringsdict dosyalarının bir kombinasyonuna güveniyordu. Bu sistem, işlevsel olmakla birlikte, birçok dezavantaja sahipti:

  1. Kullanılmayan veya eksik çeviriler için güvenlik kontrolleri eksikliği

  2. Farklı dil dosyaları arasında manuel senkronizasyon ihtiyacı

  3. Koddan string’leri çıkarmak için yerleşik destek yok

SwiftGen ve BartyCrouch gibi araçlar bu sorunları çözmek için ortaya çıktı; tip güvenliği ve otomatik çıkarım sağladılar. Ve topluluk, çevirmenlere bağlam sağlamak ve ilgili string’leri gruplamak için semantik key’ler (örn. "Onboarding.Page1.title") kullanma konusunda en iyi pratikler oluşturdu.

String Catalogs: Ödünlerle Gelen Oyun Değiştirici

Apple tarafından 2023’te tanıtılan String Catalogs, uzun süredir var olan birçok sorunu çözdü:

✅ Koddan otomatik key çıkarımı ✅ Eksik çeviriler için yerleşik güvenlik kontrolleri ✅ Xcode’da görsel ilerleme takibi ✅ Tüm diller için birleşik dosya formatı ✅ Eski iOS sürümleriyle geriye dönük uyumluluk

Ancak Apple’ın İngilizce string’leri key olarak kullanma önerisi, koddaki okunabilirliği artırırken yeni zorluklar da getirdi:

❌ İlgili string’ler alfabetik olarak dağılıyor ❌ Çevirmenler için azalan bağlam ❌ Özellik veya ekrana göre gruplama yok

String Catalogs’taki gruplama eksikliği çeviri yaparken yardımcı olmuyor. String Catalogs’taki gruplama eksikliği çeviri yaparken yardımcı olmuyor.

En az bunun kadar önemli olan, iOS geliştirme ekosisteminde yerelleştirme konusunda SF Symbols’dan önce ikonlarla aynı noktada olduğumuz önemli bir boşluk var. SF Symbols’dan önce, her geliştirici kendi ikonlarını oluşturmak veya bulmak zorundaydı, bu da uygulamalar arasında tutarsız deneyimlere yol açıyordu. SF Symbols, tutarlılık sağlayan ve muazzam geliştirme zamanı tasarrufu eden standartlaştırılmış, kapsamlı bir ikon seti sunarak bunu çözdü.

Yerelleştirme alanı benzer bir çözüme şiddetle ihtiyaç duyuyor. Her uygulamanın “Kaydet”, “İptal”, “Tamam”, “Gizlilik Politikası” veya “Kullanım Koşulları” gibi ortak arayüz string’lerine ihtiyacı var – ve bunlar tıpkı ikonlar gibi uygulamalar arasında tutarlı olmalı. Kullanıcılar bu tutarlılıktan, tutarlı ikonografiden yararlandıkları gibi yararlanıyor. Ama şu anda her geliştirici bu ortak arayüz öğelerini bağımsız olarak çevirmek zorunda, bu da farklı dillerde farklı uygulamalarda aynı kavramlar için değişen çevirilere yol açıyor.

TranslateKit: Eksik Olan Parça

Açık kaynak TranslateKit SDK bu boşlukları dolduruyor ve String Catalogs’un faydalarını tam olarak benimserken en iyi pratikleri koruyan kapsamlı bir çözüm sunuyor. SF Symbols’ın iOS uygulamalarında ikon kullanımını devrimleştirdiği gibi, bu yeni Swift paketi de yerelleştirme için aynısını yapmayı hedefliyor.

1. Zahmetsiz Semantik Key Üretimi

#tk makrosu, kodu temiz ve okunabilir tutarken semantik key’leri geri getiriyor:

struct OnboardingView: View {
  var body: some View {
    // Generates key: OnboardingView.Body.welcomeToMyApp
    Text(#tk("Welcome to MyApp"))
  }
}

Bu yaklaşım:

  • Kod bağlamına dayalı olarak otomatik semantik key’ler üretiyor

  • Kodun okunabilirliğini koruyor

  • Çevirmenler için gerekli bağlamı sağlıyor

  • İlgili string’leri String Catalogs’ta doğal olarak grupluyor

Otomatik üretilen semantik key’ler, ilgili string’leri doğal olarak bir araya getiriyor. Otomatik üretilen semantik key’ler, ilgili string’leri doğal olarak bir araya getiriyor.

Ve tek yapman gereken String literal’lerinin etrafına #tk() yazmak. Çok basit!

2. Önceden Yerelleştirilmiş Ortak Arayüz Öğeleri

SF Symbols’ın ikon kullanımını standartlaştırması gibi, arayüz metinlerinde de tutarlılığa ihtiyacımız var. TranslateKit, Apple’ın iOS işletim sisteminde desteklediği 40 dilin tümüne önceden yerelleştirilmiş 2.000’den fazla string sunuyor.

Bunlar ihtiyacını kolayca bulmayı sağlayan 4 kategoriye ayrılmış:

// Actions
Button(TK.Action.save) { saveData() }
// => en: "Save", de: "Sichern", etc.

// Labels
Text(TK.Label.privacyPolicy)
// => en: "Privacy Policy", de: "Sichern", etc.

// Messages
Text(TK.Message.areYouSure)
// => en: "Privacy Policy", de: "Datenschutzerklärung", etc.

// Placeholders
ProgressView(TK.Placeholder.loadingDots)
// => en: "Loading…", de: "Laden…", etc.

Faydaları:

  • Apple’ın sistem arayüzü çevirileriyle eşleşiyor (Tutarlılık)

  • Ortak arayüz öğeleri için profesyonel kalite sağlıyor (Doğruluk)

  • Yerelleştirme yükünü azaltıyor (Zaman ve Para tasarrufu)

3. Bağlam Duyarlı Çeviriler

Modern yerelleştirme sadece kelimeleri çevirmekle ilgili değil — bağlamı anlamakla ilgili. Otomatik key üretimi vakaların %90’ında buna yardımcı olsa da, bazı durumlarda ek olarak isteğe bağlı c parametresini belirtmen gerekebilir:

struct DocumentView: View {
    let fileName: String

    var body: some View {
        Button(#tk("Delete '\(fileName)'?",
                   c: "Example: Delete 'MyStats.csv'?")) {
            handleDelete()
        }
    }
}

Bu yorum parametresi en çok yukarıdaki örnekteki gibi string’inde dinamik veri olduğunda gerekli oluyor. Durumu netleştirmek için yorumda her zaman tipik örnek veriler sağlamak önemli. Aksi takdirde çevirmenler nasıl çevireceklerini bilemeyebilir.

Sırada Ne Var?

Bu yazı, TranslateKit SDK’nın temel yerelleştirme iş akışını nasıl modernleştirdiğini ele aldı. Çoğullaştırma, formatlayıcılar ve daha fazlası gibi ileri konularla ilgileniyorsan, daha ayrıntılı videolara olan ilgini göstermek için YouTube kanalıma abone ol:

FlineDev

✨ TranslateKit SDK, uygulamanın geri kalanını yerelleştirmek için doğru, yapay zeka destekli bir çeviri aracı olan TranslateKit for Mac ile mükemmel çalışıyor! Süper hızlı ve uygun fiyatlı, daha fazla kullanıcıya ulaşmak için şimdi ücretsiz dene.

Bu yazıyı beğendin mi? Swift ipuçları ve indie geliştirici güncellemeleri için Bluesky ve Mastodon üzerinden takip et.