Objective c Xcode本地化

Objective c Xcode本地化,objective-c,xcode,macos,localization,Objective C,Xcode,Macos,Localization,我有一个关于如何在Xcode项目中设置默认语言的问题。 我的Mac OS X应用程序支持德语和英语 每次在系统设置中未选择英语时,默认语言为德语。 我想将默认语言切换为英语,以便非德语用户获得英语用户界面。 将Plist文件中的本地化本地开发区域更改为英语并没有解决问题。 我试图在代码中做到这一点,但这不是苹果公司在HIGs中推荐的 Sampleproject托管在Github上 Xcode版本是5.1.1 我最近将截图添加到存储库中。正如您在german.png屏幕截图中看到的,选择了法语和葡

我有一个关于如何在Xcode项目中设置默认语言的问题。 我的Mac OS X应用程序支持德语和英语

每次在系统设置中未选择英语时,默认语言为德语。 我想将默认语言切换为英语,以便非德语用户获得英语用户界面。 将Plist文件中的本地化本地开发区域更改为英语并没有解决问题。 我试图在代码中做到这一点,但这不是苹果公司在HIGs中推荐的

Sampleproject托管在Github上

Xcode版本是5.1.1

我最近将截图添加到存储库中。正如您在german.png屏幕截图中看到的,选择了法语和葡萄牙语,但Mac OS选择德语作为语言。我希望语言是英语

测试与分析 我在scheme editor>Run.app>Arguments>Arumings中添加了-NSShowNonLocalizedStrings YES,并在启动时传递。这会将找不到本地化变体的任何字符串转换为大写。 结果是,我看到了所有的大写字母

要切换开发语言,请使用AppleLanguages。 结果,出现了en定位

要切换应用程序的语言,您还可以使用以下应用程序:

了解更多信息

解决方案 经过一番搜索和测试,我找到了以下解决方案:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", @"de", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

这会将语言英语设置为默认语言。

另一个选项是创建自己的本地化类。调用您的类,它可以强制本地化为您想要的任何语言:

- (NSString*) MyLocalizedString:(NSString*) label;
{
    NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
    NSString* preferredLanguage = [defs objectForKey:@"LocalizedLanguage"];
    NSString *path = [[NSBundle mainBundle] pathForResource:preferredLanguage ofType:@"lproj"];

    NSBundle* languageBundle = [NSBundle bundleWithPath:path];
    NSString *result = [NSString stringWithFormat:@"%@",[languageBundle localizedStringForKey:label value:@"" table:nil]];

    return(result);
}

- (NSLocale *) forceEnglishLocalization;
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];     
    [defaults setObject:@"en" forKey:@"LocalizedLanguage"];  

    NSLocale * currentLocale;

    currentLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en"];

    return(currentLocale);
}
需要帮助本地化您的Xcode应用程序吗


请添加一些屏幕截图并提供更多信息。