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:
Kullanılmayan veya eksik çeviriler için güvenlik kontrolleri eksikliği
Farklı dil dosyaları arasında manuel senkronizasyon ihtiyacı
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.
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.
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:
✨ 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.

