在iOS App中添加自定义语言方言

时间:2018-12-12 09:11:03

标签: ios xcode localization

我正在对一个应用程序进行本地化,在该应用程序中我遇到了有关一国语言的方言的问题。我的主要问题是,是否有添加自定义语言的规定。

例如:

假设有两种语言:

PL for Poland

UK for Ukraine

我需要支持pl-uk,即波兰乌克兰语

1 个答案:

答案 0 :(得分:1)

如果可以从系统偏好设置中选择方言,那么添加pl-UK.lproj就很有意义了,事实并非如此。如果您使用的是本地设置,那么恐怕没有其他解决方案,只能自己管理本地化-而且不适用于Interface Builder文件。

最简单的方法是将所有pl-UK差异存储在一个单独的文件中(可以是存储在.strings文件夹中的pl.lproj(您可以在波兰语中本地化-到尊重系统的语义),然后在自定义函数中加载这些字符串:

func localize(_ string : String, comment: comment) {
    guard !isUkrainianPolish else {
       return NSLocalizedString(string, comment: comment)
    }
    // retrieve the cache and check if a key with string exists

    if let url = Bundle.main.url(forResource: "localizable_pl_UK" /* or any other name*/, withExtension: "strings", subdirectory: nil, localization:"pl"),
        let data = try? Data(contentsOf: url),
        let plist = (try? PropertyListSerialization.propertyList(from: data, options: [], format: nil)) as? [String:String] {
        // cache the dictionary where you want
        return plist[string] ?? NSLocalizedString(string, comment: comment)
    }
}

根据代码的组织,您可以在单例中或在处理本地化的类中实现该功能。