我在使用I18n进行翻译的Rails应用程序中遇到了问题。我在像[:this_is_a, 5, :which_is_a_number, "."]
这样的数组中创建动态句子,我逐个翻译每个单词。
当我遍历这个并翻译I18n.t(“。”)时,我在我的整个应用程序中获得了所有翻译的完整数组,输出了1000多个数组文本。对于I18n.t(“%”),这似乎也是如此。
是否有设置可以阻止这种情况发生?我目前唯一的解决方案是改变所有“。” “。”但我希望有更好的解决方案。有什么建议吗?
答案 0 :(得分:4)
""用于命名空间转换键。如果您有这样的文件:
module1:
key_a: "Module1 Translation A"
key_b: "Module1 Translation B"
module2:
key_a: "Module2 Translation A"
然后您使用"。"
访问这些内容I18n.t("module1.key_a")
I18n.t("module2.key_a")
如果您只使用I18n.t(".")
,它将提供整个顶级命名空间。您可以通过更改分隔符
I18n.t("module1@key_a", separator: "@")
只需选择一些您知道不会出现的角色。
"%"字符用于插值:
module1:
name: "My name is %{name}"
然后
I18n.t("module1.name", name: "John")
看起来你可以改变"%"因为它是硬编码的。但它不应该返回整个翻译阵列。它应该只是返回"翻译缺失"错误。至少这就是我在我的I18n宝石版本上所拥有的。