如何在应用程序内的运行时切换语言?

时间:2011-08-29 11:34:29

标签: iphone ios cocoa-touch internationalization

我需要通过打开并选择弹出菜单来在运行时切换UI语言。我对可可的国际化进行了一些阅读,但发现它不适合我的项目,因为它要求用户对系统设置进行更改。

像“http://stackoverflow.com/questions/1669645/how-to-force-nslocalizedstring-to-use-a-specific-language”这样的帖子建议设置AppleLanguages也需要一个应用程序重新启动。

我想知道我是否可以(a)创建多个NIB并根据当前语言调用initWithNib或(b)使用一个NIB但创建一个字符串plist并创建一个函数来为所有的字符串设置标题字符串所有viewWillAppear中的文字。哪种解决方案听起来更好,或者如果有第三种方式请让我。

由于 利奥

1 个答案:

答案 0 :(得分:0)

我能想到的最简单的方法是重新加载所有视图,并更新所有文本组件的文本属性(例如UILabelUITextField等)。要设置的语言特定文本可以通过您的方法返回,例如 -

-(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...
    }

} 

HTH,

阿克沙伊

P.S:我在这里返回硬编码值,但你可以从你自己的特定语言中读取它们。