为本地化格式的 APNS 字符串指定基本本地化

Specify base localization for Localized formatted APNS strings

我的基本本地化在故事板中,但也在这样的结构中:

struct Strings {  

  struct Restaurant {
    static let makeCall = NSLocalizedString("Restaurant-makeCall", value: "Call %@", comment: "Restaurant-makeCall: title for button that allows you to call a place")
  }

  //...many more

}

这很好用,因为它将它们放在一个地方,定义了一个与基本翻译值分开的键,并在我使用它们时给我自动完成:Strings.Restaurant.makeCall

要输入翻译,我使用 xliff import/export process: editor > export for localization。我发现 genstrings 对 NSLocalizedString.

的普通形式有问题

这一切都很好,直到我到达 Localized APNS Messages。给定 loc-key 和可选的 loc-args,他们搜索匹配的本地化密钥。

对于翻译,这行得通,因为当我导入翻译后的 xliff 文件时,为每个翻译构建了一个 Localizable.strings。

我的基本翻译没有 Localizable.strings 文件。我试图制作一个,但 xliff 导出没有注意到这些字段添加到其他翻译中,所以我认为这不是正确的方法。

如何以适用于 APNS 的方式添加基本翻译?

一种实用但重复的方法是在两个地方定义它们:

  • Strings 结构中定义键(和未使用的值)。 xliff 导出会注意到这些,这允许其他语言提供翻译
  • 在您为基本翻译创建的 Localizable.strings 文件中定义键和值。这允许 APNS 在您使用基本语言时找到值,但 xliff 导出看不到这些值。

这行得通,但是如果有人更改了一个文件而没有保持另一个文件为最新,翻译中就会出现难以察觉的差异,所以我不太喜欢它。