【问题标题】:iOS wrong localizationiOS错误的本地化
【发布时间】:2015-04-09 09:53:30
【问题描述】:

我有一个以多种语言本地化的 iOS 应用程序。我有英语、荷兰语和荷兰语(比利时)的 Localizable.strings 文件。问题是当荷兰语被设置为设备语言并且比利时作为国家时,使用荷兰语字符串而不是荷兰语-比利时字符串。

我添加了一些日志记录以确保在设备上设置了正确的语言,并且看起来是正确的:

NSLocale *locale = [NSLocale currentLocale];    
NSString *language = [locale displayNameForKey:NSLocaleIdentifier
                                             value:[locale localeIdentifier]];
NSLog(@"language %@", language);

打印出来

2015-04-09 11:49:26.227 MyTestApp[222:7459] language Nederlands (België)

但如果我尝试使用 NSLocalizedString 获取字符串,我会得到荷兰语资源,而不是荷兰语比利时资源。

我已经在运行 8.1 的 iPhone 5s 和几个 7.1/8.1 模拟器上对此进行了测试,但我无法让它工作。有趣的是,如果我在 XCode 中的 Edit Scheme -> Application Language 下强制将语言设置为荷兰语(比利时),则会使用正确的语言。

【问题讨论】:

    标签: ios localization


    【解决方案1】:

    事实证明,问题在于 Xcode 为每种语言创建资源文件夹,并用连字符分隔语言和区域,例如nl-BE.proj。但是,语言环境代码使用下划线,例如nl_BE,因此该区域永远不会匹配。这似乎是一个 XCode 错误。

    解决方案是更改语言环境,使其包含连字符,如此处所述https://stackoverflow.com/a/14357315/416214

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多