我正在使用R邮件中的语言,我想知道大写单词时的最佳实践是什么。
en.yml:
hello: "hello"application.html.erb:
<%= link_to t(:hello).capitalize, hello_path %> (with capitalization)
<%= link_to t(:hello), hello_path %> (without capitalization)或
en.yml:
Hello: "Hello"
hello: "hello"application.html.erb:
<%= link_to t(:Hello), hello_path %> (with capitalization)
<%= link_to t(:hello), hello_path %> (without capitalization)发布于 2012-08-29 09:53:16
第二个更有可能是正确的。何时大写和何时不大写取决于区域设置,因此如果不查看周围的上下文,您就无法知道t(:hello).capitalize是否会产生正确的结果。一种比这两种方法都好的方法是在符号中包含上下文,如下所示:
t(:hello_button)然后用英语YAML:
hello_button: "Hello"这样,翻译就可以使用适用于相关语言的任何大小写。此外,有时英语会使用相同的词来表示两件事,而其他语言会使用不同的词:考虑橙色是颜色,橙色是水果;因此上下文在翻译中的重要性。
此外,除非您将mb_chars加入其中,否则capitalize只能处理ASCII字符:
> 'µ'.capitalize
=> "µ"
> 'µ'.mb_chars.capitalize.to_s
=> "Μ"你可能不会遇到前导µ,但单词开头的简单重音是相当常见的:
> 'éclair'.capitalize
=> "éclair"
> 'éclair'.mb_chars.capitalize.to_s
=> "Éclair" 通过假设所有语言都像英语一样,这只是触及了您将面临的困难的皮毛。只需等到您必须开始处理pluralization rules。
L10N中的基本规则是将面向用户的字符串视为不透明的数据斑点,您可以从某种类型的数据库中拉出这些数据,并将其显示给用户,而无需在两者之间进行操作。是的,这使得你的代码更加复杂,但正确性在某种程度上是很重要的。
当我在这里的时候,试图翻译单个单词往往会产生难以理解的混乱,如果你翻译整个句子,你会得到更好的结果。
发布于 2012-08-29 09:38:05
第一个。不要仅仅以大写作为区别来复制数据,这只会使维护变得更加困难。
https://stackoverflow.com/questions/12169785
复制相似问题