我的应用程序需要本地化为两种语言:德语和英语。德语应该是基础语言。这意味着app应该始终本地化为德语,除了设备上的语言是英语(在这种情况下应该是英语)
我有用于本地化的自定义* .string文件,并使用localizedStringForKey:value:table来本地化字符串。
当我只有基础本地化时,一切正常。但是如果我添加英文本地化,在某种程度上本地化的StringForKey:value:table只是忽略Base本地化并始终使用英语(适用于所有语言)
在我添加英语之后看起来如何:
以下是我如何本地化字符串:
[[NSBundle mainBundle] localizedStringForKey:@"key" value:@"" table:@"Shared"]
我在模拟器上测试,这是我的语言屏幕:
有人知道会出现什么问题吗?提前谢谢!
答案 0 :(得分:1)
正如我在评论中提到的,您需要将Localization native development region
中的Info.plist
(CFBundleDevelopmentRegion
)设置为您的语言代码。 Xcode似乎将其设置为en_GB
或de_DE
样式区域代码,将其设置为de
(无区域)将修复它。请注意,默认情况下它是en
,但选择United Kingdom
或Germany
会将其更改为使用较长的代码。
答案 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;
}