我想更改我的应用的语言。目前我正在以下列方式进行。 我有两个按钮可以更改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"];
}
这很好用。但我不希望每次都重启我的应用程序。谁能告诉我怎么做?
亲切的问候!
答案 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” (坦率地说,我不知道)
但是如果您正在使用数据库部分,那么在这种情况下,您只需使用一些基于枚举的机智并根据其获取数据,这种方法很简单,因为我已经在很多应用程序中应用了。
如有任何疑虑,请回复我。 :)