2013-06-21 27 views
0

我有我想用於將Rails應用程序本地化爲法語的PO文件(en.po & fr.po)。我最近提交了問題https://stackoverflow.com/questions/17203622/translating-a-rails-application-3-2-13-using-po-gettext-files,看看我能否得到任何幫助。我提到我已經閱讀了關於Fast-Gettext和另一個寶石的一些信息。我決定看看Fast-Gettext gem,因爲它允許在不使用數據庫的情況下使用PO文件。Fast_Gettext無法在Rails中顯示翻譯3.2.13應用程序

我在我的Gemfile中添加了fast_gettext和gettext_i18n_rails的最新版本。我安裝了後者gem以擺脫未定義的方法「_」錯誤消息,即使我目前沒有計劃使用數據庫功能。

我在config/application.rb中添加了下面的代碼。

# add FastGettext configuration 
FastGettext.add_text_domain 'my_app', :path => 'config/locales', :type => :po, :ignore_fuzzy => true, :report_warning => false 
FastGettext.default_text_domain = 'my_app' # set the default textdomain 
FastGettext.default_available_locales = ["en","fr"] # set available locales # (note: the first one is used as a fallback if you try to set an unavailable locale) 
FastGettext.default_locale = 'en' 

這是我在application_controller.rb中的設置,允許使用cookie設置和保存區域設置。

include FastGettext::Translation 

before_filter :set_users_locale 

def set_users_locale 
    I18n.locale = FastGettext.set_locale(params[:locale] || cookies[:locale] || 
    request.env['HTTP_ACCEPT_LANGUAGE'] || 'en') 
    cookies[:locale] = I18n.locale if cookies[:locale] != I18n.locale.to_s 
end 

我添加了邏輯,用戶可以點擊一個標誌並設置locale的值。

<%= link_to_unless_current image_tag("flag_us_30px.jpg", :alt => "Set Language to English"), locale: "en" %> 
<%= link_to_unless_current image_tag("flag_fr_30px.jpg", :alt => "Set Language to French"), locale: "fr" %> 

當一個人點擊標誌時,它會正確設置locale的值。我的路線格式爲domain.com/:locale/link。現在,根將包含語言環境,直到我添加邏輯來覆蓋它。

下面是我的看法兩種說法,我與測試:

<%= _("Language") %> 

<%= _("Note: If you do not understand the text on the icons, use the text links at the bottom of the page.") %> 

當我點擊了法國國旗改變的值:區域適當地「FR」的鏈接改變爲既但代碼字符串仍然是英文。 PO文件具有這兩個術語的法語翻譯。我會認爲,如果它沒有找到PO文件,我應該看到錯誤信息,說明它沒有找到它們。

我第一次嘗試在config/initializers/fast_gettext.rb中使用配置代碼,但沒有得到任何結果,所以我決定把它放在config/application.rb中,看看我能否得到它的工作。我還刪除了':ignore_fuzzy => true,:report_warning => false',看看這是否會改變事情。但是我得到了同樣的結果。

我正在使用fast_gettext,因爲2011年@svenfuchs推薦使用Gettext。我可能會嘗試在Twitter上與他聯繫,因爲看起來這是我現在唯一可以找到他活躍的地方。

任何幫助,將不勝感激。

回答

0

爲什麼你使用PO文件而不是普通Rails translations? 或globalize3如果您希望將翻譯保存到數據庫並添加模型翻譯。 還有一個寶石可以幫助你轉換你現有的翻譯:i18n-translators-tools

+0

我發現了一個由Sven Fuchs提供的2010視頻,裏面提到了Gettext,並且它已經很老了:) 2011年,他在另一個Stack Overflow帖子的回覆中推薦了fast_gettext。 PO文件已經有了初始翻譯。根據文檔,它可以處理PO文件,但我無法實現它的工作。我在我的研究中看到了全球化3。它看起來我不得不寫一個我試圖避免的DB維護接口。我會看看i18n-translator-tools。我可能會先嚐試數據庫。如果一切都失敗了,我會轉換成yaml文件。非常感謝您的意見,Paulo。 –

+0

檢查完所有其他選項後,我決定使用yaml文件的簡單翻譯工具來進行翻譯。由於我在電子表格中包含了所有翻譯數據,因此我只需添加一個包含我將在yaml文件中使用的標籤的列,而不是使用i18n-translator-tools。當我創建了gem時,我可以快速創建csv文件,重新格式化它們並將代碼複製到yaml文件中。再次非常感謝您的意見,Pablo。 –

相關問題