我正在对一个应用程序进行本地化,在该应用程序中我遇到了有关一国语言的方言的问题。我的主要问题是,是否有添加自定义语言的规定。
例如:
假设有两种语言:
PL for Poland
UK for Ukraine
我需要支持pl-uk,即波兰乌克兰语
答案 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)
}
}
根据代码的组织,您可以在单例中或在处理本地化的类中实现该功能。