Ios Localizable.strings(基本)文件字符串未被iPhone中设置的其他语言读取?

Ios Localizable.strings(基本)文件字符串未被iPhone中设置的其他语言读取?,ios,swift,localizable.strings,Ios,Swift,Localizable.strings,我在我的应用程序中实现了多语言,并创建了多个可本地化的.strings文件 我在Localizable.strings(Base)文件中有所有字符串键和值,如果特定语言字符串文件中缺少特定字符串,则将其作为从所有其他语言读取的默认文件,例如Localizable.strings(日语)和一些字符串在日语文件中丢失,因此我希望从Base获得字符串翻译 但它没有发生,这是我的问题 本地化应用程序时,无需使用基本可本地化的.strings文件 将字符串本地化如下 NSLocalizedString(

我在我的应用程序中实现了多语言,并创建了多个
可本地化的.strings
文件

我在
Localizable.strings(Base)
文件中有所有字符串键和值,如果特定语言字符串文件中缺少特定字符串,则将其作为从所有其他语言读取的默认文件,例如
Localizable.strings(日语)
和一些字符串在
日语文件中丢失,因此我希望从
Base
获得字符串翻译


但它没有发生,这是我的问题

本地化应用程序时,无需使用
基本
可本地化的.strings
文件

将字符串本地化如下

NSLocalizedString("DISMISS_BUTTON", value: "Press To Dismiss", comment: "Button used to dismiss the payment screen")
然后使用
key
(第一个参数)查找给定语言的
可本地化.strings
。如果找不到,它将使用字符串中的
参数作为回退

如果使用Xcode的导出进行本地化…,xliff文件将包含所有
NSLocalizedString
中的密钥

唯一需要
可本地化的.strings
的时候是用于源代码中不显示为字符串的键,例如

let localisableName = "LAYOUT_NAME_" + name.uppercased()
NSLocalizedString(localisableName)
在这种情况下,您应该添加

"LAYOUT_NAME_WHATEVER" = "Whatever";

对于您的
基本
文件,它也将包含在生成的xliff中

否,当没有可用文件的特定本地化版本时,将使用基本本地化文件。 例如,如果您的应用程序具有英语的基本本地化,并且您添加了法语本地化,则法语以外的语言将获得英语值

NSLocalizedString(key,comment)
的用法非常清楚-

字符串文件中
key
的初始值将为
key
。使用
NSLocalizedStringWithDefaultValue
宏为指定另一个值 钥匙


你还指望它会回来什么?代码只是在字典中查找键。它不知道什么信息与密钥相关,更不用说如何将该信息翻译成俄语了。

我遇到了同样的问题,并应用了此解决方案:

  • 为英语创建新的默认字符串本地化文件(
    DefaultEnglish.strings
    ) 例如:
    “hello\u key”=“hello”
  • 将其他语言支持添加到
    本地化.strings
    文件 例如:日语字符串:
    “hello_key”=”こんにちは"
  • 创建字符串
    扩展名

    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()

  • 基本字符串文件中是否有多个语言字符串,或者只有日语字符串?基本字符串具有所有英语字符串的翻译,如果调试器没有找到日语字符串,则默认情况下它应该从基本文件中选取。是的,必须这样做。您现在看到的字符串是什么?@AnkitJayaswal我只能看到我正在尝试使用的键当我的iPhone语言是日语时访问。顺便说一句,最好检查NSLocalizedString返回的值,如果我们没有这样的键,我们应该采取一些措施,例如,写一条日志消息。