如何在 Xcode 5 中更改语言
我在 ChangeLanguageViewController
上有 3 个按钮
这是:
- 英语
- 简体中文
- 马来西亚语
代码如下:
#import <UIKit/UIKit.h>
@interface ChangeLanguageViewController :UIViewController
-(IBAction)changeEnglish:(id)sender;
-(IBAction)changeChinesesimplified:(id)sender;
-(IBAction)changeBahasaMalaysia:(id)sender;
-(IBAction)changeEnglish:(id)sender{
[[NSUSerDefaults standardUSerDefaults] setObject:[NSArray arrayWithObjects:@"en", @"zh-Hans", @"ms", nil] forKey:@"AppleLanguage"];
}
-(IBAction)changeChinesesimplified:(id)sender{
[[NSUSerDefaults standardUSerDefaults] setObject:[NSArray arrayWithObjects:@"zh-Hans", @"ms", @"en", nil] forKey:@"AppleLanguage"];
}
-(IBAction)changeBahasaMalaysia:(id)sender{
[[NSUSerDefaults standardUSerDefaults] setObject:[NSArray arrayWithObjects:@"ms",@"en",@"zh-Hans", nil] forKey:@"AppleLanguage"];
}
我想在用户按下按钮时看到语言发生变化,它不会终止应用程序,但会更改应用程序内部的语言
最佳答案
通常当你在 iOS 中支持 Apple 支持的官方语言时,没有必要在应用程序中提供语言切换,只需在你的项目中适当设置翻译,界面语言就会随系统自动切换。但由于您需要从应用程序中获取它,因此有几种方法可以解决此问题:
1) 您可以使用以下代码为您的应用强制使用特定语言:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"zh-Hans", @"en", @"fr", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
我建议将此代码放在 main.m 文件中的“int main”函数中,就在“return UIApplicationMain”之前。但是这个方法需要你杀掉应用或者告诉用户重启应用才能生效。
您可以终止应用程序而无需用户使用 exit(0)
强制退出应用程序,但要确保用户有机会使用 UIAlertView
或类似的方式中止操作,否则 Apple 可能会拒绝您的应用。
2) 替代方案是实现您自己的本地化逻辑,您只需从自己的语言文件中获取翻译。一种方式is this example从官方 lproj 文件中获取翻译。通过这种方式,您可以在不重新启动的情况下即时更改语言,但您必须从代码中手动加载所有标签文本。当您更改翻译时,您必须重新填充屏幕上的文本。
关于ios - 在 iOS 中以编程方式更改应用程序中的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22061402/