我正在使用 Rails 中的语言,我想知道将单词大写时的最佳做法是什么。
zh.yml:
hello: "hello"
应用程序.html.erb:
<%= link_to t(:hello).capitalize, hello_path %> (with capitalization)
<%= link_to t(:hello), hello_path %> (without capitalization)
或
zh.yml:
Hello: "Hello"
hello: "hello"
应用程序.html.erb:
<%= link_to t(:Hello), hello_path %> (with capitalization)
<%= link_to t(:hello), hello_path %> (without capitalization)
最佳答案
第二个更有可能是正确的。何时大写何时不大写取决于语言环境,因此如果不查看周围的上下文,您将无法知道 t(:hello).capitalize
是否会产生正确的结果。比任何一种更好的方法是在符号中包含上下文,如下所示:
t(:hello_button)
然后在您的英文 YAML 中:
hello_button: "Hello"
这样,翻译就可以使用适合相关语言的任何大小写。此外,有时英语会使用同一个词来表示两种事物,而其他语言会使用不同的词:考虑 orange 颜色和 orange 水果;因此上下文在您的翻译中很重要。
此外,capitalize
仅适用于 ASCII 字符,除非您将 mb_chars
放入组合中:
> 'µ'.capitalize
=> "µ"
> 'µ'.mb_chars.capitalize.to_s
=> "Μ"
您可能不会遇到前导 µ
,但单词开头的简单重音很常见:
> 'éclair'.capitalize
=> "éclair"
> 'éclair'.mb_chars.capitalize.to_s
=> "Éclair"
假设所有语言的行为都像英语,这只是您将面临的困难的冰山一角。等到你必须开始处理pluralization rules .
L10N 的基本规则是将面向用户的字符串视为不透明的数据 block ,您可以从某种数据库中提取这些数据,并在中间不进行任何操作地显示给用户。是的,这会使您的代码更加复杂,但正确性很重要。
虽然我在这里,但尝试翻译单个单词往往会产生难以理解的困惑,如果你翻译整个句子,你会得到更好的结果。
关于ruby-on-rails - 在 Rails 中大写单词的最佳做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12169785/