【问题标题】:localizedStringForKey:value:table ignores Base localization本地化StringForKey:value:table 忽略基本本地化
【发布时间】:2014-06-10 00:42:31
【问题描述】:

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

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

当我只有基本本地化时,一切正常。但是如果我添加英语本地化,由于某种原因,localizedStringForKey:value:table 只是忽略基本本地化并始终使用英语(适用于所有语言)

这是我添加英语后的样子:

这是我本地化字符串的方法:

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

我正在模拟器上进行测试,这是我的语言屏幕:

有人知道可能是什么问题吗?提前致谢!

【问题讨论】:

  • 您正在测试的设备(或模拟器)是什么语言?您能否还包括语言屏幕的屏幕截图 - 该屏幕上的排序很重要:)
  • 同样在您的Info.plist 中,您的Localization native development region (CFBundleDevelopmentRegion) 设置为什么?
  • @Rich,我正在用德语在模拟器上进行测试。我还尝试了其他语言,但我总是在应用程序中看到英语(不是德国女巫在 Base 本地化中)。包括上面的屏幕:) 在 Info.plist 本地化本地开发区域也是德语。
  • 哦 :( 这不是我所希望的。我刚刚注意到Info.plist 中的Germande_DE,如果您手动将其设置为de,祝你好运,也许该地区正在引起问题。
  • @Rich 设置 "de" 解决了这个问题 :) 非常感谢!

标签: ios localization


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      相关资源
      最近更新 更多