4

我想更改我的应用程序的语言。目前我正在按照以下方式进行操作。我有两个按钮可以更改 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

4 回答 4

6

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

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

于 2012-12-11T08:57:50.893 回答
1

有一种方法可以更改应用程序语言而无需重新启动,在本教程帖子中提到了我已经在应用程序中尝试过它并且它大部分工作但仍然如果您使用系统项目,如More选项卡中的选项卡,Edit按钮MoreNavigationControllerCancel按钮UISearchBar等等,有文本在不重新启动应用程序的情况下无法更改所选语言。如果没有这样的项目由 iOS 而不是您的应用程序控制,这对您来说是一个完美的解决方案。

于 2012-12-11T09:13:37.433 回答
1

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

于 2012-12-11T08:52:31.943 回答
0

您使用哪种方式进行本地化,我的意思是要问的是我们只维护文件夹结构或取自 Db 的原生方式。

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

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

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

有任何问题,只要回到我身边。:)

于 2012-12-11T08:52:45.123 回答