Aslında nasıl başka bir fikir düşünüyordum uygulamalarınızdaki dili değiştirin ui, ancak sizi 1'e zorlar. Tüm dizeleri manuel olarak ayarlayın. 2. Dil ayarı değiştiğinde tüm kullanıcı arayüzlerini güncelleyen bir yöntem (bildirim) sağlayın. Fikir, bir dizenin yerelleştirilmiş sürümünü bulmak için iOS'un kullandığı yöntemle aynıdır. Bu nedenle, bir ön koşul olarak, dil_id.lproj klasör yapısıyla birlikte bir paket (ör. AppNameStrings.bundle) sağlamanız gerekir; burada, dil_id, sağlamak istediğiniz dillerin tanımlayıcısıdır. Bir paket oluşturarak böyle bir paket oluşturabilir, Finder'da açabilir ve root.plist dosyasını silebilirsiniz. Ardından, paketinizden okumak için kullanabileceğiniz bir işleve ihtiyacınız var. Burada yerel dizeleri okumak için kullandığım 2 yöntem var. Sen
[yourBundle localizedStringForKey:stringToken value:@"" table:@"Root" language:language]
için NSBundle bir kategori oluşturmak zorunda senin GlobalDefinitions.m dosyası
NSBundle *yourNameBundle(void) {
static NSBundle* bundle = nil;
if (!bundle) {
NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YouNameBundle.bundle"];
bundle = [NSBundle bundleWithPath:path];
}
return bundle;
}
NSString *YourNameLocalized(NSString *stringToken, NSString *language) {
if (yourNameBundle()) {
return [yourBundle localizedStringForKey:stringToken value:@"" table:@"Root" language:language];
} else {
return stringToken;
}
}
bu kodu GlobalDefinitions.h dosyası
#ifdef __OBJC__
NSBundle *yourNameBundle(void);
NSString *YourNameLocalized(NSString *stringToken, NSString *language);
#endif
aşağıdaki yöntemleri koyun ve standart yöntem olarak dil parametresini özlüyor. Yönteminizde ilgili language.lproj/Root.strings dosyasını açar ve stringToken için tararsınız. Bulamıyorsanız, aksi takdirde metin dizgisini belirtin. Bazı metnin yerelleştirilmiş bir sürümüne ihtiyacınız olduğunda, ör. label.text = YourNameLocalized (@ "Token", [self supplyLanguageIdentifier); ve sen bitti. Şimdiye kadar yapmadım ama işe yaramalı.
Bu gönderinin iyi bir başlangıç noktası olduğunu düşünüyorum: http: // stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-spesifik-dil –
Bence cihazınız olmadan sadece uygulamanızın dilini değiştiremezsiniz. –
@VineeshTP Gelişirken cihaz ve simülatörün dil ayarlarını değiştirebilirsiniz. Cevabıma bir bak. – Abizern