gpt4 book ai didi

ios - 框架的字符串本地化

转载 作者:可可西里 更新时间:2023-10-31 23:58:52 26 4
gpt4 key购买 nike

我正在构建一个包含 UI 组件的框架。我正在检索本地化字符串:

var bundle = Bundle(identifier: "com.my.identifier")
bundle.localizedString(forKey: "myKey", value: nil, table: nil)

我看到的问题是无论父应用程序与我的框架集成,还必须为我的相同本地化启用本地化(例如,如果我有 es-ES 的本地化,父应用程序也必须在项目设置中为 es-ES 开启本地化:

enter image description here

否则我的本地化字符串总是默认为英语。

我找到了一种解决方法,即根据设备的首选语言手动获取语言包:

var bundle = Bundle(identifier: "com.my.identifier")

guard let deviceLanguage = Locale.preferredLanguages.first else {
return notFound
}

guard let languagePath = bundle.path(forResource: deviceLanguage, ofType: "lproj") else {
return notFound
}

guard let languageBundle = Bundle(path: languagePath) else {
return notFound
}

return NSLocalizedString(self, tableName: "Localizable", bundle: languageBundle, value:"KEY_NOT_FOUND", comment: "")

但此解决方案的问题是我失去了内置的 iOS 语言回退(例如,如果设备首选语言是 es-MX,它将自动选择 es- ES 字符串覆盖我拥有的 en 字符串)。

对于我的框架,有没有一种方法可以避免强制父应用程序为我的所有本地化字符串打开本地化,同时仍然保留 iOS 语言回退逻辑?

最佳答案

为什么您希望您的框架使用应用程序不支持的本地化?这是糟糕的用户体验。

假设使用您的框架的应用仅支持英语和西类牙语。现在想象一下,该应用的用户将他们的设备设置为首先使用德语,然后再使用英语。

由于该应用不支持德语,因此该应用显示英语。整个应用程序应显示英语。如果您的应用程序框架在这种情况下设法显示德语,则该应用程序的用户体验现在会非常困惑,因为该应用程序的大部分内容都是英文的,但您的框架支持的部分却显示为德语。

tl;dr - 不要做任何事情。让默认行为按原样工作。它带来了更好的用户体验。

关于ios - 框架的字符串本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40643695/

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