2012-01-03 11 views
5

Çoklu dil desteği olan bir uygulama üzerinde çalışıyorum. Tahmin edilebilir gibi, zaman zaman böyle bir kod kullanarak bazı uç dosyaları yüklemek:iOs içinde farklı bir yerelleştirilmiş uç yerleştirme

self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:nil]; 

uygulama söz konusu ise bunun dilinizi klasöründen gelen yerelleştirilmiş xib sürümünü yükleyecektir. Şimdi, yerelleştirilmiş nib dosyasını el ile yüklemek mümkün olup olmadığını merak ediyorum. Örneğin yerine sadece, CustomController yükleme CustomController arasında İngiliz/Fransız/Alman/vb versiyonu yükleme.

Bunu başarabileceğim bir yol var mı?

Yardımlarınız için şimdiden teşekkür ederiz!

P.S. Bunun bir iphone/ipad uygulamasında dilleri değiştirmek için uygun bir yol olmayabilir biliyorum, ama bu

[sonradan değiştir] Bu biraz garip ve kesmek gibi görünüyor

benim kararım değil, ama görünüyor (Alman kalem ucunu yükleme) çalışır:

NSString* path= [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"]; 
NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 
self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:languageBundle]; 

burada ucu bulundu: http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html

olsa tamamen doğru gelmiyor başka çözümlerin de varsa, merak ediyorum. Yeni başlayanlar için, IO'ların eski sürümleriyle sorun yaratacağına inanıyorum, çünkü dil klasöründe farklı bir adlandırma kuralı var:

+1

Bunun size yardımcı olabileceğini kontrol edin: http://stackoverflow.com/questions/598020/objective-c-cocoa-internationalization-with-nibs-is-that-really-a-good-idea – Peres

+0

Lakin bu durumda değil. Yerelleştirilmiş uç kullanmadan böyle bir etkiye nasıl ulaşılacağına dair bazı fikirlerim var. Ne yazık ki, uygulama şu anda bunları kullanır ve fikir uygulamayı yeniden yazmak/yeniden düşünmek zorunda kalmadan, mümkün olan en kısa sürede bunu yapmaktır. Yerelleştirilmiş xib'leri manuel olarak yükleyebildiysem, onu dönüştürmek gerçekten çok kolay olurdu – BBog

+0

Ama biz bunu çalışır durumda yapmaktan mı bahsediyoruz?Mesela ingilizcede ingiltere'ye inanıyorum, ve sonra da ayarlara gidip dili değiştireceğim ve sadece değişecek? – Peres

cevap

17

Düzenlemede söylediğim gibi, bu çözüm olarak bulduğum şey:

NSString* path= [[NSBundle mainBundle] pathForResource:@"de" ofType:@"lproj"]; 

NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 

self.currentController = [[newClass alloc] initWithNibName:@"CustomController" bundle:languageBundle]; 

Ve

NSString* path= [[NSBundle mainBundle] pathForResource:[[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0] ofType:@"lproj"]; 

NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 

someLabel.text = [languageBundle localizedStringForKey:@"textKey" value:@"" table:nil];  

diğer bilgiler burada yerelleştirilmiş etikete bir metin yüklemek gerekirse: http://learning-ios.blogspot.com/2011/04/advance-localization-in-ios-apps.html

Kime ilgiliyse, bu yöntem oldukça fazla problem ortaya çıkarmaktadır. Yeni başlayanlar için, herkesi etkileyebilecek bir şey: Yerelleştirilmiş bir xib tarafından kullanılan her kaynağın da yerelleştirilmiş olması gerekir. Bu yöntemi kullanarak yeni bir yerelleştirilmiş xib yüklüyorsam ve bu xib düzenli yerel olmayan bir görüntü içeriyorsa, yerelleştirilene kadar gösterilmez. Diğer sorunlar daha özeldir ve yerelleştirilmiş verileri aldığınız şekilde bağlanır.

Sonunda, bunu kullanacağımı sanmıyorum çünkü mevcut uygulama için sorun çok fazla, ama gelecekte işe yarayabilir.