2012-08-02 74 views
0

我想爲Globalize3 on Rails提供一些客戶端回退。您可以爲Globalize3實現自定義回退嗎?

我知道你可以設置

config.i18n.fallbacks = true 

,並有未翻譯的文本退回到其默認的語言環境,但我寧願有一些會表明它翻譯,有點像#not tnranslated#之前或之後的地方自然落下回文本。

例如,如果默認語言環境文本

Foo bar 

我想以未翻譯的文本顯示的備用文字是

Foo bar #not translated!# 

我可以計算要做到這一點是有唯一的辦法如果在文本週圍,檢查當前的語言環境是否翻譯過,而且看起來不夠高雅,就像這樣。

<% if article.is_translated?(I18n.locale) %> 
    <%= article.title %> 
<% else %> 
    <%= article.title %>#not translated# 
<% end %> 

任何意見將不勝感激。

回答

2

如何添加補丁程序是這樣的:

Globalize::ActiveRecord::Adapter.class_eval do 
    def fetch(locale, name) 
    record.globalize_fallbacks(locale).each do |fallback| 
     value = stash.contains?(fallback, name) ? fetch_stash(fallback, name) : fetch_attribute(fallback, name) 

     unless fallbacks_for?(value) 
     set_metadata(value, :locale => fallback, :requested_locale => locale) 
     return value if (fallback == locale) 
     return value + " #not translated#" 
     end 
    end 
    return nil 
    end 
end 

如果它是不明確的,那我換了兩行是這些的:

 return value if (fallback == locale) 
     return value + " #not translated#" 
+0

行之有效,感謝您的諮詢! – Saifis 2012-08-02 08:07:57

相關問題