Programsal olarak metin atadığımda, NSLocalizedString (....) kullanabilirim, ancak metni doğrudan IB'de yazıyorsam (bir UILabel'e), nasıl yerelleştirebilirim?IB'de [iPhone SDK] NSLocalizedString nasıl kullanılır?
cevap
Bir çözüm birden çok yerelleştirilmiş nib dosyası oluşturmaktır. Bu, yerelleştirme ihtiyaçlarınız çok basitse ve kaynaklarınızı geliştirmenin sonunda uzman yazılım yerelleştiricilerine bırakıyorsanız, muhtemelen en iyi sonucu verir.
Gelişmekte olduğunuz sırada yerelleştiriyorsanız ve kullanıcı arabirimi hızla değişiyorsa, her UI ayırmanın ara parçasının her yerel sürümünde çoğaltılması gerektiğinden, yinelenen nib dosyaları büyük bir acı olabilir. Bunu önlemek için, genellikle denetleyicinin -viewDidLoad
yönteminde yerelleştirilmiş dizeleri ayarlama işlemek için görünüm denetleyicilerinize bir kod yazmanız gerekir. Yerelleştirilmiş metin içeren her denetimin bir IBOutlet
olduğundan emin olun ve bunları IB'de görünüm denetleyicinize bağlayın.
- (void)viewDidLoad {
[super viewDidLoad];
hello.text = NSLocalizedString(@"Hello", @"Hello label");
world.text = NSLocalizedString(@"world", @"world label");
// ... etc
}
sonra -init
yöntem bitene kadar sizin uçlu nesneler tamamen oluşturulmaz beri -viewDidLoad
görünüm kurulum bu tip yapın: Sonra görünümü denetleyicisi en -viewDidLoad
bu gibi bir şey olacaktır. -viewDidLoad
, -init
'dan sonra çalışır, ancak görünümünüz görünür hale gelmeden önce.
Her yerel ayar için .nib dosyasının birden çok sürümünü oluşturabilirsiniz. Dizeleri kolayca düzenlemenize izin veren araçlar da vardır. Apple'da bunun üzerinde pretty good documentation var.
Bu büyük ve karmaşık bir konu. İyi bir başlangıç yeri Introduction to Internationalization Programming Topics ve ayrıca Preparing Your Nib Files for Localization
Ayrıca iPhone için değil, genel olarak XCode/IB için bir çözüm arıyordum. Tüm referanslar, bir durumu belirtmek için dahili olarak bir anahtara ihtiyaç duyabileceğiniz ve kullanıcı için bu tuşa karşılık gelen bir etiket veya metin hücresindeki yerelleştirilmiş dizesini görüntülemek isteyebileceğiniz gerçeğiyle ilgilenmedi. İlk adımda standart bir yaklaşımın nasıl saklanacağını, örn. Paylaşılan kullanıcı varsayılanlarında bir anahtar için bir anahtar değer ve bir etiketteki bu anahtar değeri için yerelleştirilmiş dizeyi görüntüler.
Birçok kodlamaya ihtiyaç duymayan ve ib bağlamaları ile uyumlu bir çözüm buldum.
Önce bir dosya localizable.strings örn. NSLocalizedString (aKeyValue nil): Artık birlikte anahtar değeri yerelleştirebilirsiniz
"MyKeyValue" = "Localized display label";
içeren bir çizgi ile.
Etiketde, NSLocalized String ile ilgili herhangi bir değer trafosu bulamadınız.
@interface KeyToLocalizedStringTransformer : NSValueTransformer {}
@implementation KeyToLocalizedStringTransformer
+ (Class)transformedValueClass
{
return [NSString class];
}
+ (BOOL)allowsReverseTransformation
{
return NO;
}
- (id)transformedValue:(id)aValue
{
NSString *NLString = [NSString stringWithString:NSLocalizedString(aValue,nil)];
return NLString;
}
hazırlamak için
Son adım örneğin trafo kayıt etmek: yüzden yerelleştirilmiş bir dizeye bir anahtar değeri dönüştürmek için bir sınıf KeyToLocalizedStringTransformer yarattı + Başlatılamadı: Bunu yalnızca NSUnArchiveFromData görmek ve eğer
NSValueTransformer *transformer = [[KeyToLocalizedStringTransformer alloc] init];
[NSValueTransformer setValueTransformer:transformer forName:@"KeyToLocalizedStringTransformer"];
Şimdi metin alanına veya hücre için bağlantılarında bir değer trafosu kullanabilirsiniz (Basitçe adını yazın ...)
IB'den buraya görüntü yok üzgünüm, çünkü burada yeniyim ve "hiçbir itibara sahip değilim": paylaşılan kullanıcı varsayılan denetleyicisine bağlanmayı hayal etmelisiniz, Kontroller anahtarı: değerler, Model Anahtar Yolu: MyStateKey ve bir değer tarif edildiği gibi transformatör. Sonuç olarak, nl etiketli etiket üzerinde nl etiketinde hiçbir şey yapmanız gerekmez, sadece Localizable.strings dizgisini çevirmeniz yeterli olmaz.
iOS 7'den itibaren & Xcode 5, Mümkün olduğunda NSLocalizedString kullanmaktan kaçınmalısınız. Tercih edilen yönteme 'taban lokalizasyonu' denir ve Storyboard üzerinden çalışır. Size çok iş kazandıracak. Eğer 'base localisation' için google'ı kullanırsanız,
- 1. iPhone sdk
- 2. iPhone SDK ile Ping
- 3. Sharekit iphone sdk
- 4. iPhone SDK: IBAction
- 5. Android SDK eklentisi nasıl kullanılır?
- 6. Xcode iPhone - Baz SDK Aktif SDK farkı?
- 7. Nasıl iphone sdk bir Projesi'nde faaliyet (ingilizce veya arapça) iki dil entegre etmek nasıl iphone sdk
- 8. Iphone sdk içinde NSError mesajını nasıl alabilirim?
- 9. iPhone sdk üzerinde NSData CGDataProviderRef dönüştürmek nasıl?
- 10. iPhone SDK: Uygulamamda kaydırma görünümünü nasıl ekleyebilirim?
- 11. iphone SDK: İmza yakalama nasıl uygulanır?
- 12. iphone SDK - 2 kontrol cihazı nasıl bağlanır?
- 13. Çevrilmemiş dizeler nasıl bulunur? NSLocalizedString()
- 14. iphone sdk göz kırpma algılama
- 15. Leopard için iPhone 3.1.3 sdk
- 16. Resimdeki metni okuyun iPhone SDK
- 17. UITableViewCell ve UISwitches - iPhone SDK
- 18. PDF Manipulation on iPhone SDK
- 19. Değişkenler ile NSLocalizedString Swift
- 20. linux içinde awesomium sdk nasıl kullanılır
- 21. dSYM nedir ve nasıl kullanılır? (iOS SDK)
- 22. Etiketler nasıl kullanılır Python Azure SDK?
- 23. Placeholder ve NSLocalizedString
- 24. IBInspectable ve NSLocalizedString
- 25. Iphone SDK: Arka planda iPhone uygulamasında e-posta gönder
- 26. Bir Klavyenin yukarısındaki UIToolbar - iPhone SDK
- 27. Objective-C NaN değeri (iphone sdk)
- 28. NSLocalizedString() tarafından döndürülen dizeleri kaydetmem gerekir mi?
- 29. Ham Derinlik haritası IPhone için SDK X
- 30. Bir UIView taşıma - newbie iphone sdk