gpt4 book ai didi

ios - en 系统区域设置中 ru 语言的 strigsdict 文件的错误值

转载 作者:行者123 更新时间:2023-11-28 06:55:44 25 4
gpt4 key购买 nike

我有 ru/en 应用程序,我需要手动更改应用程序的语言。

所以,对于本地化,我有一个这样的函数:

    func localizedFormat(args : CVarArgType...) -> String  {
let path = NSBundle.mainBundle().pathForResource(Localize.currentLanguage(), ofType: "lproj")
let bundle = NSBundle(path: path!)
let string = bundle?.localizedStringForKey(self, value: nil, table: nil)
return withVaList(args) {
NSString(format: string!, arguments: $0)
} as String
}

Localize.currentLanguage() 我总是得到 ru

我还有一个包含复数形式的 sringsdict 文件。问题如下:当我使用 ru 语言运行模拟器时 - 一切正常。但是,如果我在 en 中运行 - 复数取自 stringsdict 是错误的,因为它们采用了 en 复数规则。

所以值取自俄语 stringsdict 但只有 oneother

我试着做这样的事情:

NSUserDefaults.standardUserDefaults().setObject([Localize.currentLanguage()], forKey: "AppleLanguages")
NSUserDefaults.standardUserDefaults().synchronize()

但这没有帮助。

为什么 iOS 从正确的 stringsdict 获取信息,但因为它是 en 应用程序语言?

最佳答案

  1. 您需要将 Bundle path 更改为本地化路径,以便从 sringsdict 文件中获取正确的参数
  2. 在创建 String 时,您需要将正确的区域设置传递给初始化程序

final方法如下所示:

func localizePlural(key: String, count: UInt) -> String? {
let language = "ru"
guard let path = Bundle.main.path(forResource: language, ofType: "lproj"), let bundle = Bundle(path: path) else {
return nil
}
let formatString = NSLocalizedString(key, tableName: nil, bundle: bundle, value: "", comment: "")
let resultString = String(format: formatString, locale: Locale.init(identifier: "ru_RU"), count)
return resultString
}

关于ios - en 系统区域设置中 ru 语言的 strigsdict 文件的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33708150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com