使用按钮更改iphone应用程序语言,无需重新启动应用程序

时间:2012-12-11 08:39:40

标签: iphone objective-c ios localization nslocalizedstring

我想更改我的应用的语言。目前我正在以下列方式进行。 我有两个按钮可以更改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"];
}

这很好用。但我不希望每次都重启我的应用程序。谁能告诉我怎么做?

亲切的问候!

4 个答案:

答案 0 :(得分:6)

查看HMLocalization:https://github.com/HeshamMegid/HMLocalization

它取代了默认的本地化框架。它有一个演示,演示如何更改语言而无需重新启动应用程序。

答案 1 :(得分:1)

如果您的数据位于UITableView,那么您可以使用[tableView reloadData];。 您甚至可以在appDelegate中设置应用语言,在常量,键中定义,然后在IBAction调用,然后将这些键存储在NSUserDefaults中。

答案 2 :(得分:1)

有一种方法可以在不重新启动的情况下更改应用程序语言tutorial post我已经在应用程序中尝试了它并且它主要起作用,但如果您在tabbar中使用More选项卡等系统项, Edit上的MoreNavigationController按钮和Cancel上的UISearchBar按钮等等,如果不重新启动应用,则无法更改所选语言的文字。如果没有这样的项目由iOS而不是您的应用程序控制,这对您来说是一个完美的解决方案。

答案 3 :(得分:0)

你用于本地化的方式,我的意思是问我们只是维护文件夹结构或从Db中获取的原生。

无论如何,如果您使用的是本机部分,请查看以下链接,这可能对您有所帮助,因为我认为我们可以替换那里的语言选项:

“http://stackoverflow.com/questions/3910244/getting-current-device-language-in-ios” (坦率地说,我不知道)

但是如果您正在使用数据库部分,那么在这种情况下,您只需使用一些基于枚举的机智并根据其获取数据,这种方法很简单,因为我已经在很多应用程序中应用了。

如有任何疑虑,请回复我。 :)