localizedStringForKey:value:table忽略Base本地化

时间:2014-04-24 15:51:52

标签: ios localization

我的应用程序需要本地化为两种语言:德语和英语。德语应该是基础语言。这意味着app应该始终本地化为德语,除了设备上的语言是英语(在这种情况下应该是英语)

我有用于本地化的自定义* .string文件,并使用localizedStringForKey:value:table来本地化字符串。

当我只有基础本地化时,一切正常。但是如果我添加英文本地化,在某种程度上本地化的StringForKey:value:table只是忽略Base本地化并始终使用英语(适用于所有语言)

在我添加英语之后看起来如何: enter image description here

以下是我如何本地化字符串:

[[NSBundle mainBundle] localizedStringForKey:@"key" value:@"" table:@"Shared"]

我在模拟器上测试,这是我的语言屏幕: enter image description here

有人知道会出现什么问题吗?提前谢谢!

2 个答案:

答案 0 :(得分:1)

正如我在评论中提到的,您需要将Localization native development region中的Info.plistCFBundleDevelopmentRegion)设置为您的语言代码。 Xcode似乎将其设置为en_GBde_DE样式区域代码,将其设置为de(无区域)将修复它。请注意,默认情况下它是en,但选择United KingdomGermany会将其更改为使用较长的代码。

答案 1 :(得分:0)

我有另一个解决方案,我认为它适合你:

NSString* NSCustomLocalizedString( NSString *key , NSString *comment)
{
NSString *rs = nil;

if( [[NSUserDefaults standardUserDefaults] integerForKey:KEY_LANGUAGE ] == e_language_japanese)
{
rs = NSLocalizedStringFromTable(key,@"Localizable.strings-ja",nil);
}
else
{
rs = NSLocalizedStringFromTable(key,@"Localizable.strings-en",nil);
}
return rs;
}