Yerelleşme ve Uluslararasılaştırmayı Anlamak

iOS'ta çok dilli bir destek sistemi inşa etmek, uluslararasılaşma ve yerelleştirme arasındaki ayrımı anlamakla başlar. Uluslararasılaştırma (i18n) Uygulamanızı tasarlama sürecidir, böylece mühendislik değişiklikleri olmadan çeşitli diller ve bölgelere adapte edilebilir. Yerelleştirme (l10n) uygulamanın gerçek çevirisi ve kültürel adaptasyonu belirli bir yerelleştirme için. Apple'ın çerçeveleri çok ağır kaldırma işlemidir, ancak başlangıçtaki çok iyi bir şekilde devam eden stratejiyi kurtarır.

Apple, Xcode, Foundation ve UIKit'te yerelleşmeyi desteklemek için kapsamlı araçlar sunar. Hedef, uygulamanızı her dilde yerel hissettirmek, okuma yönüne saygı göstermek, tarih formatlarına, dizilere ve kültürel kongrelere saygı göstermektir.Bu makale, sağlam çoklu dil desteği uygulamak için pratik adımlarla yürür.

Xcode Project'inizde Yerelleşme

İlk adım, uygulamanızın destekleyeceği Xcode'a söylemektir. Proje ayarlarınızı açın, projenizi Project Navigator'da seçin ve Info sekmesi altında, Localizations bölümünü bulun. Her dil için Xcode otomatik olarak kaynak dosyaları oluşturur (hikaye dosyaları)

Base Internationalization

Apple, Base Internationalization'i kullanmayı önerir. Projenizin Bilgi sekmesinde, “Use Base Internationalization” seçeneğini kontrol eder ve bu, bir temel yerelleştirmede orijinal UI düzeni (genellikle İngilizce) ve her ek dil overrides sadece dizeleri kullanarak, düzeni azaltır.Bu, fikre azaltır ve tutarlılığı garanti eder.

Yerelleştirmeler mevcut dosyalara ekleyin

Mevcut hikayeboards veya XIBs için, File Inspector'daki dosyayı seçin, sonra yerelleştirme altında, yerelleştirmek istediğiniz dilleri kontrol edin. Xcode, hikayeboards için belirli dosyalar üretir.For code-based arabirimler için, you'll rely onFLTR:0 and separate .strings files.

Yerelizable Strings Files'ı oluşturmak ve yönetmek

Koddan metin çevirinin birincil yolu, aşağıdaki dosyaların üzerinden yazılır: File > New > File > Strings File (under Resource) İsim itETHFLT:2. Sonra File Inspector'da, yerelize: Yerelleştirin, sonra her ek dilde, bir alt katerde görünür.

Format anahtar = değer çiftleri:

(Resulüm)

Alman yerelleştirme için:

[FONT: 5)

Her zaman tanımlayıcı anahtarlar kullanın, İngilizce dizenin kendisi değil, yanlışlıkla değişiklikler kırılma gözlerinden kaçınmak. Eğer anahtar olarak İngilizce dizeyi kullanırsanız, daha sonra sorun haline gelir.

Strings'i Yorumla Organize Etmek

Çevirileri açıklamak için yorum ekleyin. Uygulamaya derlenmezler. Örnek:

[FONT: 9) [[B][/FONT=0)

NSLocalizedString'i kullanarak

TANITIM: ● Makro, kullanıcının cihazı diline dayanan uygun şekildeki dizeyi okur.

[Üye: 9)

Çoğu çağrı sadece anahtar ve yorum kullanır:

(Ey Âdem)

Çeviri bulunamadıysa, anahtarın kendisi geri döndü (veya verilen değer parametresi).Her zaman çevirmenleri yönlendirmek için anlamlı bir yorum sağlar.

Format Strings'i Parametrelerle

Dinamik içerik için, format spektralleri [Ücretsizler için:) <>

[Kırklar)

Kod:

[Üye: 16)

Bu, çevirmenlerin uygun bir şekilde kelimeleri yeniden sipariş etmelerine izin verir (örneğin, Japonca cümle yapısı, noun sonrası sayıyı yerine getirebilir). daha iyi, kullanımDANFLT:17).

[Üye: 18)

Plural Kuralları için .stringsdict for Plural Kuralları

Farklı diller çoğu zaman kuralları vardır. Örneğin, İngilizce'nin tekil / basitliği vardır, ancak Arapça'nın altı şekli vardır ve Polonya'nın çoğullaştırma ve diğer değişken metinleri işlemek için üç tane vardır.Aynı yerelleştirme klasörleri aynı şekilde oluşturun.

[FONT]

Ardından kod aynı anahtarı kullanır: ESFLT:23). iOS otomatik olarak yerel kurallara dayanan doğru çoğul formu seçer.

Yerelleştirme Hikayeleri ve XIBs

Bir hikaye dolabını yerelleştirdiğinizde, her etiket, düğme ve metin alanı dil özel dizelerde bir takım bir takım alır.Bu dizeleri doğrudan düzenleyebilir veya kullanıcı başına ayarlama ve değiştirme için Interface Builder kullanabilirsiniz. Ancak, daha dinamik UI için, metin programına tematik olarak Auto Layout ile ayarlamayı tercih edebilirsiniz.

Xcode'da Yerelleştirmeler

Xcode'da, bina olmadan farklı dillerde bir hikaye dolabını önleyebilirsiniz: hikaye dolabı açın, sonra editör menüsünde Preview. bir önizleme cihazı seçin, sonra dili altta aşağıya doğrulayın.Bu, dizelerin genişletip genişletdiğini gösterir.

Text genişleme için ayarlayın

Alman metni genellikle İngilizce'den daha uzundur. Auto Layout'ı dikey veya yatay olarak etiketleyebileceğiniz kısıtlamalarla kullanın. Set etiketinin satır sayısını 0. Sabit geniş kısıtlamalardan kaçının. İçerik kucaklamak ve sıkıştırma direnci önceliklerini uygun şekilde kullanın.For keys, consider usingETHFLT:25 veya dinamik genişlikte test edin.

Doğru-to-Left (RTL) Diller

Arapça, İbranice, Farsça, Urdu ve diğerleri sağ sol tarafta RTL'yi destekler. iOS, manzaralar ve sistemin otomatik görüntülerini ve düzeni kullanıcı arayüzü düzeni yönüne dayanan şekilde döndürür.

RTL için ayar

Hikaye dolabınızın sol / sağın yerine lider/trailing kısıtlamalar kullanmasına izin verin. Xcode's Auto Layout otomatik olarak doğru lider / yüzeysel düzenleri destekler, kullanım kolaylığı için US $ · 7|3|3|3|3|D|Dışlama veya dönüşümler varsa, kullanıcı arayüzü ayarına saygı gösterin veya kontrol edin.

Görüntüler ve RTL

Yönelme anlamındaki görüntüler (örneğin, bir ok işareti) RTL modundan alıntılanmalıdır.In Asset Catalog, RTL için "Mirror" olarak görüntü setleri oluşturabilirsiniz.For şablon görüntüleri için, iOS aynası otomatik olarak görüntüyü ayarlarsanız.

Text Sort

Etiketler ve metin görüşleri için, LTR için otomatik olarak ayrılan ve RTL için doğru olan “HAKK”yı kullanın.

Yerelleştirme Tarihleri, Sayılar ve Currencies

Son kullanıcılar, yerellerine göre tarih ve sayıları formatladılar.UseENFLT:33) ve [[Düzükler / 4|Sessizler için|seçmişler ve kullanım öncesi stilleri kullanmak. Örneğin:

[Üye: 38)

Sayılar için, stilize ile İZFFT:39 veya [[DÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜŞÜŞÜNÜŞÜŞÜNÜŞÜŞÜŞÜNÜŞÜŞÜŞÜNÜ

Format Strings ile Locale kullanımı

numeric specifiers ile birlikte, yerel gruplamaları etkileyebilir. kullanıcı tarafından yüz dizeleri için, yerele saygı duyan İLDİĞİ KENDİĞİ için.

Yerelleştirmeyi Test

Thorough testi kritiktir. Simulate farklı diller, programdaki Uygulama Dili ve Bölge ayarları düzenleme ile simülatörü. Ürün > Scheme > Edit Scheme, sonra Run > Seçenekleri altında, farklı bir Uygulama Dili (örneğin, Almanca) ve Bölge (e.g., Almanya) kurmak ve tüm yerelleştirilmiş dizeleri görmek için koşmak.

Simulator'un Dili Anahtarlamasını Kullanın

Ayrıca Simulator dilini değiştirebilirsiniz: Ayarlar > General > Dil & Bölge. Ancak, program yöntemi tek bir dil test etmek için daha hızlıdır.

Test RTL

Programın Arapça'ya Uygulama Dili Oluşturun. Tüm görüşlerin doğru şekilde çevirdiğini kontrol edin. Özel görüşlere, kaydırma görüşlerine ve web görüşlerine yakın olun.Debug > View Debugging araçlarını inceler.

Pseudolocalization ile test

Xcode, uzun dizeleri veya RTL'yi gerçek çeviriler olmadan simüle etmek için pseudo dili veya “Soyut Pseudo dili”ni mümkün kılar. Bu, transkript ve uyum sorunlarını erken yakalamaya yardımcı olur.

Dinamik İçerik ve Server-Driven UI

Uygulamanız bir sunucudan içerik indiriyorsa, yalnızca www.FLT:46'ye güvenemezsiniz. Kullanıcının yerel tercihlerini sunucuya göndermeniz ve tercüme edilen içeriği elde edebilirsiniz.ŞUygunda veya özel bir parametre kullanın.

Yerel bileşenlerde sunulan sunucu odaklı UI için, uygulama teklifi olmadan yerel çevirilere sunucu anahtarları haritalayabilirsiniz.For server-driven UI provided in a JSON file bringed after appstart to allow over-the-air updates without app submission.

En İyi Uygulamalar Yerelleşme için

  • [FONT:0) Anahtarları açıklayıcı ve tutarlı tut[Dönetici: 1 ) – Adspace anahtarları için [[Ücretsiz ve tutarlı bir şekilde değil.
  • [[Dönetici:0) Tek bir gerçek kaynağı kullanın[[Dönetici:0) – Dosyadaki çevirilerden kaçının.Yerelleşmeyi kullanın ve aynı anahtara atıfta bulunun.
  • [FONT=0)Automate Export/import[[Dönetici: 1) Xcode tüm yerelleştirmeleri çevirmenler için XLIFF dosyaları olarak ihraç edebilir, sonra tercüme dosyaları geri aktarın.UseFLT:52). ve [[Dönetici:0)
  • [FONT:0)Version, dizelerinizi kontrol eder[[DÜT 1: 1 ) – KeepENFLT:54) ve [[GÜNDÜSÜSÜSÜSÜSÜŞÜNÜŞÜNÜŞÜNÜye Olmayan dosyalar. Değişiklikleri takip etmek için diff araçları kullanın.
  • [FONT:0) Asla kodda yerelleştirilebilir metin () - Her zaman ayrılık için [[Ücretsiz) veya [[DÜSÜSÜSÜSÜSÜSÜSÜSÜSÜSÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜN
  • [FONT=0)Köpektif dizeleri dikkatlice gözden geçirmektedir[Döncüler her yer sahibinin neyi temsil ettiğini anlamalılar.([Dönemli tartışmalar) tekrar sipariş etmelerine izin vermek için.

SwiftUI Localization ile çalışmak

SwiftUI yerelleştirmeyi basitleştirir. varsayılan olarak, [[Dönetici:60|Berzde anahtarı kullanarak, dizenin gerçekliğini kullanırsınız.You can open keys with.FLT:61).

Formatlar için, [[BİLMİŞT:62] – SwiftUI otomatik olarak akan anahtarı kullanır:63) Eğer bir USBT'de anahtar “%d eşyanız var” varsa, tam olarak anahtarla eşleştirmeniz gerekir, tam olarak tam olarak tam olarak tam olarak, tam bir anahtar kullanmanız gerekir:

[FONT: 65] doğrudan çalışmaz.

[66]

Ya da SwiftUI'nin İZMİRT:67) interpolasyonla: “ŞAM:68) kullanmak, ancak bu, tam olarak “kullanıcılar say%d” olması için anahtar gerektirir.En güvenli yaklaşım, [[Dönetici:70|69|s counts counts count counts counts counts count|s count|kullanıcı|kullanıcık bir özellik içinde.

SwiftUI'deki yerelleştirme görüntüleri

Kullanım:71) ve her dil için varlık katalogu yerelleştirme sağlamak. veya kullanım:72) erişilebilir etiketler ile yerelleştirilmiş viaurFLT:73).

Ortak Pitfalls ve Them'dan Nasıl Kaçırmak

  • [FONT:0)Missing çevirileri[[Döntgen: 1 ) - Bir İngilizce geri çekilmek için parametre:75|translated dizeleri her dilde düzenli olarak çalıştırın.
  • [FONT=0)Hard-coded düzen[[Dönetici: 1 ) - En uzun Almanca çevirilerle test edin.
  • [FONT=0) Çoğu kuralları görmezden gelir ([Dönetici: 1) Her zaman en çok kullanılan dizeleri için öngörür.
  • [FONT:0) Tarih / sayı parsing[[Dönemli) için yerel yönetim için uygun bir şekilde kullanılır.
  • [[Dönetici:0) Gerçek cihazlarda test edilmez[Dönetici: 1) Programlama dili anahtarlama güvenilirdir, ancak cihaz testleri takvim, zaman bölgesi ve klavye gibi bölgeye özgü davranışlar ortaya çıkarır.
  • [FONT:0)Overlooking accessibility – SesGenel olarak yerelleştirilmiş dizeler hakkında konuşur. erişilebilirlik etiketleri de yerelleştirilmiş ve kullanımlıdır.

Deeper için dış kaynaklar

  • [FONT=0) Apple'ın Uluslararasılaştırma ve Yerelleştirme Kılavuzu[[Dönetici:0)[[Dönetici:0)[[Döneticileştirme ve Yerelleştirme Kılavuzu[[Dönetici:0)[Dönemli destek için her şeyi kapsayan resmi belgeler.
  • [FONT=0]NSHipster'ın NSLocalizedString makalesi[Dönetici: 1)[FONT=0)[FONTDNT=2}[FONTHipster on NSLocalizedString).
  • [FONT=0)Objc.io'nun Uluslararasılaşması) – Derince .stringsdict ve çoğullaştırma.]

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

iOS'ta çok dilli desteğin uygulanması çeviriden daha fazlasıdır: bu, dizelerin, düzenlerin, formatların ve kültürel kongrelerin planlanmasıdır. Apple'ın yerleşik yerelleştirme araçlarına göre -Base Internationalization,ENFLT:77) ve Auto Layout - herhangi bir dilde evde hissettiğiniz bir uygulama oluşturabilirsiniz.You can create an app that feeling at piyonelizasyon ve gerçek cihazlarla erken sorunları yakalamak.