Localizable.strings(基本)文件字符串未被 iPhone 中设置的其他语言读取?
Localizable.strings (Base) file strings not read by other language set in iPhone?
我在我的应用程序中实现了多语言并创建了多个 Localizable.strings
文件。
我在 Localizable.strings (Base)
文件中有所有字符串键和值,作为它的默认文件,如果特定语言字符串文件中缺少特定字符串,则从所有其他语言读取,例如Localizable.strings (Japanese)
并且 Japanese
文件中缺少一些字符串,所以我希望从 Base
.
获得字符串翻译
但这并没有发生,这是我的问题。
本地化应用程序时,无需使用 Base
Localizable.strings
文件。
将您的字符串本地化如下…
NSLocalizedString("DISMISS_BUTTON", value: "Press To Dismiss", comment: "Button used to dismiss the payment screen")
然后 key
(第一个参数)用于在 Localizable.strings
中查找给定语言。如果未找到,它将使用字符串中的 value
参数作为后备。
如果您使用 Xcode 的 Export For Localization…,xliff 文件将包含您所有 NSLocalizedString
的密钥
您唯一需要 Base
Localizable.strings
的情况是用于在您的源代码中未显示为字符串的键,例如
let localisableName = "LAYOUT_NAME_" + name.uppercased()
NSLocalizedString(localisableName)
在这种情况下,您应该添加
"LAYOUT_NAME_WHATEVER" = "Whatever";
添加到您的 base
文件中,它也将包含在生成的 xliff
中
否,当没有可用文件的特定本地化版本时使用基本本地化文件。
例如。如果您的应用程序具有英语的基本本地化并且您添加了法语本地化,则法语以外的语言将获得英语值。
NSLocalizedString(key,comment)
的 documentation 非常清楚 -
The initial value for key
in the strings file will be key
. Use the
NSLocalizedStringWithDefaultValue
macro to specify another value for
key.
您还希望 return 做什么?该代码只是在字典中查找键。它不知道与密钥关联的消息是什么,更不用说如何将该消息翻译成俄语了。
我遇到了同样的问题并应用了这个解决方案:
- 为英语创建新的默认字符串本地化文件 (
DefaultEnglish.strings
)
例如:"hello_key" = "Hello"
- 向
Localizable.strings
文件添加其他语言支持
例如:日语字符串:"hello_key" = "こんにちは"
创建字符串extension
extension String {
func localizedStringKey(bundle _: Bundle = .main, tableName: String = "Localizable") -> String {
return NSLocalizedString(self, tableName: tableName, value: "\(NSLocalizedString(self, tableName: "DefaultEnglish", bundle: .main, value: self, comment: ""))", comment: "")
} }
并设置字符串"hello_key".localizedStringKey()
我在我的应用程序中实现了多语言并创建了多个 Localizable.strings
文件。
我在 Localizable.strings (Base)
文件中有所有字符串键和值,作为它的默认文件,如果特定语言字符串文件中缺少特定字符串,则从所有其他语言读取,例如Localizable.strings (Japanese)
并且 Japanese
文件中缺少一些字符串,所以我希望从 Base
.
但这并没有发生,这是我的问题。
本地化应用程序时,无需使用 Base
Localizable.strings
文件。
将您的字符串本地化如下…
NSLocalizedString("DISMISS_BUTTON", value: "Press To Dismiss", comment: "Button used to dismiss the payment screen")
然后 key
(第一个参数)用于在 Localizable.strings
中查找给定语言。如果未找到,它将使用字符串中的 value
参数作为后备。
如果您使用 Xcode 的 Export For Localization…,xliff 文件将包含您所有 NSLocalizedString
的密钥
您唯一需要 Base
Localizable.strings
的情况是用于在您的源代码中未显示为字符串的键,例如
let localisableName = "LAYOUT_NAME_" + name.uppercased()
NSLocalizedString(localisableName)
在这种情况下,您应该添加
"LAYOUT_NAME_WHATEVER" = "Whatever";
添加到您的 base
文件中,它也将包含在生成的 xliff
否,当没有可用文件的特定本地化版本时使用基本本地化文件。 例如。如果您的应用程序具有英语的基本本地化并且您添加了法语本地化,则法语以外的语言将获得英语值。
NSLocalizedString(key,comment)
的 documentation 非常清楚 -
The initial value for
key
in the strings file will bekey
. Use theNSLocalizedStringWithDefaultValue
macro to specify another value for key.
您还希望 return 做什么?该代码只是在字典中查找键。它不知道与密钥关联的消息是什么,更不用说如何将该消息翻译成俄语了。
我遇到了同样的问题并应用了这个解决方案:
- 为英语创建新的默认字符串本地化文件 (
DefaultEnglish.strings
) 例如:"hello_key" = "Hello"
- 向
Localizable.strings
文件添加其他语言支持 例如:日语字符串:"hello_key" = "こんにちは"
创建字符串
extension
extension String { func localizedStringKey(bundle _: Bundle = .main, tableName: String = "Localizable") -> String { return NSLocalizedString(self, tableName: tableName, value: "\(NSLocalizedString(self, tableName: "DefaultEnglish", bundle: .main, value: self, comment: ""))", comment: "") } }
并设置字符串
"hello_key".localizedStringKey()