agm*_*eod 61 ruby-on-rails internationalization rails-i18n
在rails 3应用程序上工作,我想在输出之前检查翻译是否存在,如果它不存在则回退到某些静态文本.我可以这样做:
if I18n.t("some_translation.key").to_s.index("translation missing")
Run Code Online (Sandbox Code Playgroud)
但我觉得应该有比这更好的方法.如果将来的rails将"缺少翻译"更改为"未找到翻译",该怎么办?或者,如果出于某种奇怪的原因,文本包含"翻译缺失".有任何想法吗?
Chr*_*erg 108
根据你所描述的,这应该工作:
I18n.t("some_translation.key", :default => "fallback text")
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅文档
alb*_*uer 58
你也可以使用
I18n.exists?(key, locale)
I18n.exists?('do_i_exist', :en)
Run Code Online (Sandbox Code Playgroud)
Now*_*ker 34
:default并不总是一个解决方案.用于更高级的案例:
佣工/ application.rb中:
def i18n_set? key
I18n.t key, :raise => true rescue false
end
Run Code Online (Sandbox Code Playgroud)
任何ERB模板:
<% if i18n_set? "home.#{name}.quote" %>
<div class="quote">
<blockquote><%= t "home.#{name}.quote" %></blockquote>
<cite><%= t "home.#{name}.cite" %></cite>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
Jer*_* F. 18
那这个呢 ?
I18n.t('some_translation.key', :default => '').empty?
Run Code Online (Sandbox Code Playgroud)
我觉得它感觉更好,更像是没有翻译
警告:如果你故意将空字符串作为翻译值,则不起作用.
小智 11
使用:默认参数:
I18n.t("some_translation.key", :default => 'some text')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27143 次 |
| 最近记录: |