动态本地化MainMenu.xib

时间:2016-01-20 00:30:44

标签: objective-c cocoa internationalization

我需要一种方法来更改Cocoa应用程序菜单栏(MainMenu.xib)中的字符串,以根据我设置的语言环境动态呈现。我为不同的语言环境创建了MainMenu.strings文件。目前,显示的所有字符串都是系统区域设置。有没有办法我可以覆盖这个逻辑来显示我想要的语言环境的字符串。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

覆盖系统区域设置不是OS X应用程序通常执行的操作。除非你有充分的理由这样做,否则最好只使用用户首选的语言环境,如系统偏好设置中所设置的那样。

如果您真的想这样做,可以在调用NSApplicationMain之前将“AppleLanguages”用户默认设置为您想要的任何语言环境,并且应用程序将使用该语言环境。

像这样:

// Note: Don't do this.
int main(int argc, const char * argv[]) {
    NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@[@"de"] forKey:@"AppleLanguages"];
    return NSApplicationMain(argc, argv);
}