2012-08-29 61 views
9

我正在使用R ails中的語言,並且我想知道大寫單詞時最佳做法是什麼。在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) 
+2

值得一提的是語言的東西可以變得非常複雜非常快。這是一個非常簡單的例子。你有更實際的用例嗎? – tybro0103

回答

21

第二個擁有的是正確一個更好的機會。何時大寫,何時不取決於語言環境,因此您無法知道t(:hello).capitalize是否會在不查看周圍環境的情況下產生正確的結果。比任何一個更好的辦法是包括在符號的背景下,這樣的事情:

t(:hello_button) 

,然後在你的英語YAML:

hello_button: "Hello" 

這樣的翻譯可以任意使用的情況下是合適的爲有問題的語言。此外,有時英語會用同一個詞的兩件事情,當其他語言將使用不同的單詞:考慮橙色顏色和橙色水果;因此翻譯中語境的重要性。

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

你可能不會在單詞的開頭遇到的主要µ,但簡單的口音是相當普遍:

此外,除非你拋出一個mb_chars到混合capitalize僅適用於ASCII字符

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

這只是刮傷你會假設所有的語言行爲,如英語面臨的困難表面。等到你必須開始處理pluralization rules

在本地化的基本規則是把面向用戶的字符串作爲你拉出來某種形式的數據庫中,並顯示給用戶,而不操縱之間的數據不透明的斑點。是的,這會讓你的代碼更加複雜,但正確性很重要。


雖然我在這裏,試圖翻譯單個詞往往會產生不可理解的混亂,你將有更好的結果,如果你翻譯完整的句子。

3

第一。不要僅以大小寫來重複數據,因爲它只是使維護變得更加困難。

+6

對不起,我不同意你的看法,大寫取決於上下文。 –

+0

當然,我也在考慮使用第一個。但是,如果發送語言var或使用方法進行資本化,性能會更高? – Gabamnml

+1

@Gabamnml在我的機器上運行''hello'.capitalize' 1,000,000次需要820ms。這種每頁執行幾次的小性能不值得維護。 –

相關問題