我是ruby &的新手,並已開始構建應用程序。國際化最佳實踐/ Rails應用程序
我的目標是通過一種方式來構建此應用程序,我可以輕鬆地翻譯rails應用程序的內容,並在註冊用戶首選的區域顯示網站內容。
欣賞任何關於某些最佳實踐或對任何文檔的引用來閱讀的建議,以構建一個易於翻譯的Web應用程序?
謝謝, 克里希。
我是ruby &的新手,並已開始構建應用程序。國際化最佳實踐/ Rails應用程序
我的目標是通過一種方式來構建此應用程序,我可以輕鬆地翻譯rails應用程序的內容,並在註冊用戶首選的區域顯示網站內容。
欣賞任何關於某些最佳實踐或對任何文檔的引用來閱讀的建議,以構建一個易於翻譯的Web應用程序?
謝謝, 克里希。
查看Rails Internationalization (I18n) API。它完成你所描述的一切。
您可以使用ready_for_i18n插件將您的erb轉換爲所需的形式。它可以節省一些時間。
肯定會試試艾瑪。這看起來很有趣。謝謝! – happyfeet 2011-01-20 13:13:32
這是我使用的迷你圖案。你可以檢查出來:http://developers-note.blogspot.com/2012/01/rails-i18n-good-practice.html
你會definetely觀看這次談話:http://www.youtube.com/watch?v=CTu4iHWGDyE
下面是我通過Rails應用程序的國際化工作,同時注意一些小技巧或最佳實踐。 (有些可能現在已經過時)。
在我進入名單這裏的本地化和翻譯之間的一些澄清,這是對我很有幫助:
定義:
應用本地化和翻譯模型是分開的擔憂。找出你需要的是哪一個(或兩者)。
我在這裏用他們的方式:
應用本地化:本地化您的應用程序的語言環境。
模型翻譯:將您的模型/數據翻譯成語言。
例子:給我資源的法語翻譯(模型轉換)在我的西班牙語網站(應用本地化)
我用Globalize爲模型的翻譯。
溫馨提示/最佳實踐:
以下一些顯然只是有用的技巧在Rails的全球化時代+的環境中工作的同時,他們中的一些可能比...可能是最佳做法的詳細。
I18n.locale
引用並設置應用的區域設置。使用全球化時,Globalize.locale
引用並設置模型/數據轉換的區域設置。
對每個請求都設置I18n.locale
和Globalize.locale
。由於這些變量設置爲Thread
,它將避免一些難以複製的錯誤。
將Globalize.locale
設置爲I18n.locale
剛好在設置I18n.locale
之後。這允許模型翻譯默認爲應用程序的語言環境。 (在我的西班牙網站上,我預計數據默認爲西班牙文)。
更改Globalize.locale
(而不是I18n.locale
)更改模型翻譯。
重置I18n.locale
和Globalize.locale
每次測試後。在rspec的
RSpec.configure do |config|
config.after(:each) do
I18n.locale = :en
Globalize.locale = :en
end
end
要麼使用子域名,或在URL子文件夾指的是應用程序的語言環境。
使用語言參數來指定數據的語言。
當您在Rails應用程序時,您可能會使用default_url_options
使用I18n.locale
爲您的路線/路徑的助手默認的語言環境參數。但是這在測試中不起作用。我在rspec-rails上找到了一個來自this github問題的解決方案。
我猴子補丁ActionDispatch::Routing::RouteSet
像這樣:
class ActionDispatch::Routing::RouteSet
def url_for_with_locale_fix(options={})
url_for_without_locale_fix(options.merge(:locale => I18n.locale))
end
alias_method_chain :url_for, :locale_fix
end
建立一個翻譯助手t
周圍的I18n.t方法的包裝
module I18nHelper
def t string, options = {}
I18n.t string, options
end
end
RSpec.configure do |config|
config.include I18nHelper
end
感謝idlefingers。這有幫助。你有任何建議/監督/鏈接轉載的特定語言,如中文/越南/日本等,? – happyfeet 2011-01-20 10:57:02
這只是某種你好的世界。 當你有完全不同的語言(比如說:英語,俄語,阿拉伯語,中文)時,沒有描述如何組織文件/後端/ locale_data的實踐 - 這是一個非常複雜的問題,我猜(英文很簡單,不像其他語言那些)。 – DeTeam 2013-04-26 09:34:49