Изменить язык приложения iphone с помощью кнопок и без перезапуска приложения

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

Вот мой код.

- (IBAction)changeDutch:(id)sender {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"nl", @"en", nil] forKey:@"AppleLanguages"];

}
- (IBAction)changeEnglish:(id)sender {
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", @"nl", nil] forKey:@"AppleLanguages"];
}

Это прекрасно работает. Но я не хочу каждый раз перезапускать свое приложение. Кто-нибудь может сказать мне, как это сделать?

С уважением!


person Sarah Geebelen    schedule 11.12.2012    source источник
comment
Попробуйте использовать это решение stackoverflow.com/a/20257557/1013897, оно мне помогло   -  person mohammad alabid    schedule 15.05.2014


Ответы (4)


Ознакомьтесь с HMLocalization: https://github.com/HeshamMegid/HMLocalization.

Это замена стандартному стандарту локализации. В нем есть демонстрация, показывающая, как изменить язык без перезапуска приложения.

person Hesham    schedule 11.12.2012

Существует способ изменить язык приложения без перезагрузки, упомянутый здесь обучающий пост Я попробовал это в приложении, и в основном это работает, но все же, если вы используете системные элементы, такие как вкладка More на панели вкладок, кнопка Edit на MoreNavigationController и кнопка Cancel на UISearchBar и т. д., текст может быть нельзя изменить выбранный язык без перезапуска приложения. Если нет такого элемента, которым управляет iOS вместо вашего приложения, это идеальное решение для вас.

person Atif Azad    schedule 11.12.2012

Если ваши данные находятся в UITableView, вы можете использовать [tableView reloadData];. Вы даже можете установить языки приложения в appDelegate, определенные в константах, ключах, а затем в IBAction вызвать эти ключи, а затем сохранить их в NSUserDefaults.

person Augustine93    schedule 11.12.2012

какой способ вы используете для локализации, я имею в виду спросить, это тот родной, в котором мы просто сохраняем структуру папок или взяты из БД.

В любом случае, если вы используете нативную часть, посмотрите следующую ссылку, которая может вам помочь, поскольку я думаю, что мы можем заменить там языковую опцию:

"http://stackoverflow.com/questions/3910244/getting-current-device-language-in-ios" (Честно говоря, понятия не имею)

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

В любой заботе, только спиной ко мне. :)

person Mohit_Jaiswal    schedule 11.12.2012