两个目标和两个Localizable.Strings(一个基地)

Two targets and two Localizable.Strings (one base)

我有一个简单的问题,我不知道如何让它工作。

示例: 我有一个按钮、一段文字或其他东西。在每个应用程序上它应该不同。

我试着为两个目标保留第一个 Localizable.strings,而只为第二个目标制作第二个 Localizable.strings。问题是一次只能加载一个 Localizable.strings。我想知道如何让 TargetApp2 使两者 Localizable.strings 相互补充。

如果我没有正确理解您的问题,您需要为 Localizable.strings 文件指定不同的名称,然后使用 NSLocalizedStringFromTable,否则,如您所见,它们会发生冲突并且只有一个在运行时使用。

例如

  • 保持 Target1 的 Localizable.strings 不变
  • 将 Target2 的 Localizable.strings 重命名为 Extra.strings
  • 任何使用第二个 table 中的字符串的地方,请使用 NSLocalizedStringFromTable(key, @"Extra", comment)

我第一次遇到这个问题是在添加包含自己的 Localizable.strings 的 Amazon AWS 库时,该库会被任意使用而不是我的。但是,由于该文件中只有几个字符串,本地化似乎不起作用。那是有趣的 2 天调试!


Swift

NSLocalizedStringFromTable 在 Swift 中不存在具有该确切名称的名称。相反,tableNSLocalizedString

中的可选参数
func NSLocalizedString(
    key: String,
    tableName: String? = default,
    bundle: NSBundle = default,
    value: String = default,
    #comment: String) -> String

使用 Swift,您只需将受影响的字符串的 NSLocalizedString(key: key, comment: "") 更改为 NSLocalizedString(key: key, table:"Extra" comment: "")