【问题标题】:NSLocalizedString not getting value for the keyNSLocalizedString 没有得到键的值
【发布时间】:2017-11-19 11:07:09
【问题描述】:

我有 2 个本地化字符串文件,一个用于罗马尼亚语,一个用于英语。在这两个文件中我都有这一行:

英语:

"invalidSum" = "Invalid amount"

罗马尼亚语:

"invalidSum" = "Suma invalida"

我在这样的警报中使用此消息:

  let titleAlert = NSLocalizedString("invalidSum", comment: "")

    let sumAlert = UIAlertController(title: titleAlert, message: nil, preferredStyle: .alert)
    sumAlert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
    present(sumAlert, animated: true, completion: nil)
    }

但是,每当警报显示时,我都会收到消息“invalidSum”,而不是英语本地化的“Invalid amount”和罗马尼亚语本地化的“Suma invalida”。我做错了什么?

【问题讨论】:

  • 字符串文件中每个键/值对的末尾应该有一个分号。
  • 你确定你设置了 Localizable.strings 对吗?它们是为期望的目标指定的吗?相关:stackoverflow.com/questions/35732333/…
  • @MartinR 我认为缺少分号会导致“无法读取数据,因为它的格式不正确”编译时错误,至少这是发生的情况就我而言...
  • 我添加了分号,但它仍然无法正常工作。当我在 Project Info 中选择一种新语言时,这些字符串文件是手动创建的。它创造了我 Main.strings(英语)和 Main.strings(罗马尼亚语)。这就是我放置自定义警报消息的地方。
  • @AhmadF 好的,localizable.strings 没有设置好。现在要回答我的问题

标签: ios swift nslocalizedstring


【解决方案1】:

将 Localized.string 文件重命名为 Localizable.strings。就是这样。

【讨论】:

    【解决方案2】:

    解决了

    我的问题是我在 Main.strings 文件中创建了这些新字符串(当您在项目信息中选择新语言时 Xcode 自动为您创建的文件。

    我必须创建 2 个名为“Localizable.strings”的新字符串文件并将其本地化,一个用于英语,一个用于罗马尼亚语。我将写入Main.strings 的字符串复制到Localizable.strings,现在它就像魅力一样工作。

    【讨论】:

      【解决方案3】:

      可本地化文件的名称应为“Localizable.strings”。

      【讨论】:

        【解决方案4】:

        就我而言,问题是格式不正确。 问题并没有立即出现,而是在下一次构建清理(或类似的 tms)之后出现。 所以,我发现文件末尾的行没有被翻译,而是从开始被翻译。 我发现其中一条线看起来像

        = "some value";

        也就是说,根本就没有钥匙。并且构建没有错误。但是下面的所有行都没有翻译。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-09-09
          • 2023-03-04
          • 2016-06-27
          • 2012-09-21
          • 1970-01-01
          • 2013-11-17
          • 2012-03-04
          相关资源
          最近更新 更多