ios - 在 iOS 中以编程方式更改应用程序中的语言

标签 ios xcode localization

如何在 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/

相关文章:

ios - UIButton 标题文本颜色

iOS 应用向右移动,无法查看完整表格

javascript - 如何访问在 Swift 3 中输入到 WKWebView 的用户名和密码

ios - iOS 6 中的位置显着变化功能调用频率不如 iOS 5

xcode - 本地化未加载到XCTest中吗?

asp.net-mvc - 使用 ASP.NET MVC 3 本地化非数据注释错误的最佳方法是什么?

iphone - 如何一次找到项目中的所有 'duplicate symbol' 错误

ios - 与启动图像完全一样的启动屏幕

ios - 在 AppDelegate.m 中获取 View Controller 的实例

ios - 如何更改 Xcode Playground 上的语言环境