iOS:如何检索特定区域设置的区域设置字符串,而不是用户在OS中设置的区域设置字符串?

时间:2014-04-01 21:11:07

标签: ios localization nslocale

是否可以以编程方式检索特定区域设置的字符串,而不管手机设置的区域设置是什么?例如,用户可能正在使用英语运行手机,但我希望在不更改操作系统区域设置的情况下检索法语字符串。

注意:这不是上述问题的副本。我不想覆盖我的应用程序中的当前设置,我只是希望能够以编程方式检索我希望的任何语言环境的语言值。我的应用内容可能正在显示英文文本,但我希望我的应用的特定组件显示不同的语言。

1 个答案:

答案 0 :(得分:0)

我通过用这种方法扩展 String 解决了这个问题。您可以通过这种方式获取应用中任何语言环境的本地化字符串。

extension String {
    func localized(forLanguageCode lanCode: String) -> String {
        guard
            let bundlePath = Bundle.main.path(forResource: lanCode, ofType: "lproj"),
            let bundle = Bundle(path: bundlePath)
        else { return "" }
        
        return NSLocalizedString(
            self,
            bundle: bundle,
            value: " ",
            comment: ""
        )
    }
}

示例(当系统语言为英语时,获取乌克兰语的本地化字符串):

"settings_choose_language".localized(forLanguageCode: "uk")