11

私はRailsの言語を使用していますが、単語を大文字にする場合のベストプラクティスは何でしょうか。

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)
4

2 に答える 2

23

2つ目は、正しい可能性が高くなります。いつ大文字にするか、いつ使わないかはロケールに依存するためt(:hello).capitalize、周囲のコンテキストを見ずに正しい結果が得られるかどうかはわかりません。どちらよりも優れたアプローチは、次のようなコンテキストをシンボルに含めることです。

t(:hello_button)

次に、英語のYAMLで:

hello_button: "Hello"

そうすれば、翻訳では、問題の言語に適したケースを使用できます。また、他の言語が異なる単語を使用する場合、英語が2つのことに同じ単語を使用することがあります。オレンジは色、オレンジは果物と考えてください。したがって、翻訳における文脈の重要性。

さらに、ミックスにcapitalizeスローしない限り、ASCII文字でのみ機能します。mb_chars

> 'µ'.capitalize
=> "µ" 
> 'µ'.mb_chars.capitalize.to_s
=> "Μ"

µ単語の先頭にある先頭の単純なアクセントに出会うことはないかもしれませんが、かなり一般的です。

> 'éclair'.capitalize
=> "éclair" 
> 'éclair'.mb_chars.capitalize.to_s
=> "Éclair" 

これは、すべての言語が英語のように動作すると仮定することによって直面する困難の表面をかじっただけです。複数化ルールの処理を開始する必要があるまでお待ちください。

L10Nの基本的なルールは、ユーザー向けの文字列を、ある種のデータベースから引き出して、間に操作することなくユーザーに表示する不透明なデータの塊として扱うことです。はい、これによりコードはより複雑になりますが、正確さはある意味重要です。


私がここにいる間、個々の単語を翻訳しようとすると、理解できない混乱が生じる傾向がありますが、文全体を翻訳すると、より良い結果が得られます。

于 2012-08-29T01:53:16.190 に答える
4

最初。違いとして大文字だけでデータを複製しないでください。維持が難しくなります。

于 2012-08-29T01:38:05.047 に答える