如何更改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"];
}
我想看到当用户按下按钮时语言发生变化,它不会杀死应用程序,但会改变应用程序内部的语言
3 回答
通常当您支持Apple在iOS中支持的官方语言时,没有理由在应用程序内提供语言切换,只需在项目中正确设置翻译,界面语言将自动切换到系统 . 但是既然你想从应用程序中获取它,那么几乎没有办法解决这个问题:
1)您可以使用以下代码强制您的应用程序使用特定语言:
我建议在“返回UIApplicationMain”之前将此代码放在main.m文件中的“int main”函数中 . 但是此方法要求您终止应用程序或告诉用户重新启动应用程序才能使其生效 .
您可以使用
exit(0)
杀死应用程序而无需用户强制退出应用程序,但请确保用户有机会使用UIAlertView
或类似功能中止操作,否则Apple可能拒绝您的应用程序 .2)替代方案是实现您自己的本地化逻辑,您只需从您自己的语言文件中获取翻译 . 单程is this example从官方lproj文件中获取翻译 . 这样,您可以在不重新启动的情况下动态更改语言,但必须手动加载代码中的所有标签文本 . 更改翻译时,必须在屏幕上重新填充文本 .
如果不重新启动应用程序,则无法执行此操作 . 因此,您需要在
NSUserDefaults
中保存所选语言,并在main.h
中添加以下行后重新启动应用程序 .EDIT: SWIFT 3 .
根据您的要求使用此助手类 .
我在github做了一个演示项目 .