iPhone - выбор языка - PullRequest
       9

iPhone - выбор языка

0 голосов
/ 01 февраля 2012

В моем приложении пользователи могут выбирать язык, поэтому я бы хотел, чтобы мое приложение изменило язык соответствующим образом, но оно не работает.Я нашел этот код в Интернете:

// Force languages
NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"];
NSLog(@"language %@",[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleLanguages"]);
if ([lang isEqualToString:@"castella"]) {

    [[NSUserDefaults standardUserDefaults]
     setObject:[NSArray arrayWithObject:@"es"]
     forKey:@"AppleLanguages"];
} //else just default user lang

Этот код не работает.Я думаю, что я просто настраиваю другую настройку предпочтений.Я действительно хочу изменить язык.У меня есть несколько локализованных строк, а также некоторые файлы NIB , поэтому я хотел бы добавить список испанских языков в список предпочтительных локалей на первой позиции, но я не совсем понимаю, как это сделать.

В настройках приложения у меня есть возможность выбрать язык.Это не просто из моего упрямства;просто здесь важны региональные языковые стандарты, и иногда iPhone не обеспечивает их поддержку, но я произношу переводы.

Из ответов я решил отказаться от работы с локалью, но можно ли будет показать другой файл NIB (из en.proj или es.proj)?У меня уже есть первая часть:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"];

        if ([lang isEqualToString:@"castella"]) {
            //Load NIB filer from "es.proj".
        }
    }
    return self;
}

Это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2012

Язык должен быть задан пользователем в настройках iPhone, я думаю, что если вы принудительно установите этот параметр в своем приложении, вы выйдете из песочницы и ваше приложение может быть отклонено.

Вместо этого добавьте localizations в свои файлы NIB и / или Localizable.strings в своем проекте. Ваше приложение автоматически покажет лучший язык для пользователя.

Если вы все еще хотите изменить язык внутри своего приложения, не пытайтесь изменить настройку локали, а просто измените то, что вы показываете на экране в вашем приложении.

Вы можете сохранить нужный язык в [NSUserDefaults standardUserDefaults] и показывать свои метки в соответствии с этим параметром:

if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"English"]) {
    aLabel.text = @"This is English.";
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Italian"]) {
    aLabel.text = @"Questo e' italiano.";
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Japanese"]) {
    aLabel.text = @"これは日本語です。";
}
0 голосов
/ 01 февраля 2012

Не рекомендуется заставлять пользователей выбирать язык во второй раз (в первый раз, когда они настраивали свой iPhone). Вам лучше взять текущую локаль и получить оттуда настройки языка.

...