【发布时间】:2011-06-27 16:24:11
【问题描述】:
我正在开发一个 iPhone 应用程序,并希望为其设置一个不同于用户位置的位置。我希望按照 Apple 告诉我的方式获得所有用于国际化的文件,但我希望能够选择语言。
例如:用户使用的是德语,但我希望我的应用程序是英文的!
我希望用户只为应用程序设置语言,无论手机选择哪种语言,我该怎么做?
【问题讨论】:
标签: iphone ios cocoa-touch localization internationalization
我正在开发一个 iPhone 应用程序,并希望为其设置一个不同于用户位置的位置。我希望按照 Apple 告诉我的方式获得所有用于国际化的文件,但我希望能够选择语言。
例如:用户使用的是德语,但我希望我的应用程序是英文的!
我希望用户只为应用程序设置语言,无论手机选择哪种语言,我该怎么做?
【问题讨论】:
标签: iphone ios cocoa-touch localization internationalization
不使用框架类进行国际化。您必须构建自己的管道来更改整个应用程序中的标签、按钮等。
【讨论】:
语言是从 NSUserDefaults 加载的。根据this,您可以使用[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguage"] 之类的内容覆盖它并重新启动应用程序。
现在,问题是您需要重新启动应用程序!一种可怕的方式可能是这样的(未经测试):
UIApplication * app = [UIApplication sharedApplication];
[app openURL:...];
[[NSNotificationCenter defaultCenter] postNotificationName:UIApplicationWillTerminateNotification object:nil userInfo:nil];
[app.delegate applicationWillTerminate:app];
exit(0);
其中... 是一个 HTTP URL,它重定向到您的应用处理的自定义 URL 方案 (ewwww)。
我不知道在不重新启动应用程序的情况下重新加载 UI/语言的简单方法。
【讨论】: