I18N 翻译“.”或“%”导致所有翻译的完整数组
I18N translate "." or "%" causes a full array of ALL translations
我的 Rails 应用程序使用 I18n 进行翻译时遇到问题。我在像这样 [:this_is_a, 5, :which_is_a_number, "."]
的数组中创建动态句子,我将每个单词一个一个地翻译。
当我遍历它并翻译 I18n.t(".") 时,我得到了我整个应用程序中所有翻译的完整数组,它输出了 1000 多个数组文本。 I18n.t("%").
似乎也是如此
是否有阻止这种情况发生的设置?目前我唯一的破解方法是更改所有“。”到“。”,但我希望有更好的解决方案。有什么建议吗?
“。”用于命名空间翻译键。如果你有这样的文件:
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")
您似乎无法将“%”更改为其他内容,因为它是硬编码的。但是不应该return整个数组编译。它应该只是 return "translation missing" 错误。至少我的 I18n gem.
版本是这样的
我的 Rails 应用程序使用 I18n 进行翻译时遇到问题。我在像这样 [:this_is_a, 5, :which_is_a_number, "."]
的数组中创建动态句子,我将每个单词一个一个地翻译。
当我遍历它并翻译 I18n.t(".") 时,我得到了我整个应用程序中所有翻译的完整数组,它输出了 1000 多个数组文本。 I18n.t("%").
似乎也是如此是否有阻止这种情况发生的设置?目前我唯一的破解方法是更改所有“。”到“。”,但我希望有更好的解决方案。有什么建议吗?
“。”用于命名空间翻译键。如果你有这样的文件:
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")
您似乎无法将“%”更改为其他内容,因为它是硬编码的。但是不应该return整个数组编译。它应该只是 return "translation missing" 错误。至少我的 I18n gem.
版本是这样的