【问题标题】:how to switch language at runtime inside the app?如何在应用程序内运行时切换语言?
【发布时间】:2011-08-29 11:34:29
【问题描述】:
我需要在运行时通过打开并选择一个弹出菜单来切换 UI 语言。我对可可的国际化做了一些阅读,但发现它不适合我的项目,因为它需要用户更改系统设置。
类似“http://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language”的帖子建议设置AppleLanguages 还需要重新启动应用程序。
我想知道我是否可以 (a) 创建多个 NIB 并根据当前语言调用 initWithNib 或 (b) 使用一个 NIB 但创建一个字符串列表并创建一个函数来为所有文本设置标题字符串我所有的viewWillAppear。哪种解决方案听起来更好,或者如果有第三种方法,请告诉我。
谢谢
狮子座
【问题讨论】:
标签:
iphone
ios
cocoa-touch
internationalization
【解决方案1】:
我能想到的最简单的方法是重新加载所有视图,并更新所有文本组件的文本属性(例如UILabel、UITextField 等)。要设置的语言特定文本可以通过您的方法返回,例如-
-(NSString*) localizedStringForKey: (NSString*)key andLanguage: (NSString*)lang
{
if([lang isEqualToString:@"en"])
{
if(key == @"hello")
return @"Hello";
//and so on...
}
else if([lang isEqualToString:@"fr"])
{
if(key == @"hello")
return @"Bonjour";
//and so on...
}
}
P.S:这里我返回的是硬编码值,但您可以从您的特定语言的 plist 中读取它们。