繁体   English   中英

Xcode本地化

[英]Xcode localization

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

每次未在“系统设置”中选择英语时,默认语言为德语。 我想将默认语言切换为英语,以便非德语用户获得英语界面。 将Plist文件中的“本地化本机开发区域”更改为英语并不能解决问题。 我尝试在代码中执行此操作,但这不是Apple在其HIG中建议的。

Sampleproject托管在Github上。

https://github.com/christian123456/xcodelocalization

Xcode版本是5.1.1

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

测试与分析

我已经将-NSShowNonLocalizedStrings YES添加到scheme-editor> Run .app> Arguments> Arugments Pass on Launch中 这会将找不到它的本地化变体的所有字符串变成大写。 结果是,我看到所有大写字母。

切换语言以进行开发使用-AppleLanguages(it) 结果,出现en本地化。

要切换应用程序的语言,您还可以使用以下应用程序: https : //itunes.apple.com/de/app/app-language-chooser/id451732904?l=zh_CN&mt=12

欲了解更多信息, 请点击这里

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

[[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应用程序的帮助?

https://itunes.apple.com/mg/app/generate-localizable-strings/id890673579?mt=12

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM