【问题标题】:Dealing with missing argument and I18n处理缺失的论点和 I18n
【发布时间】:2010-11-11 18:45:26
【问题描述】:

鉴于我有这个翻译密钥的密钥

t('my.key', :url => @url)

还有多种语言的翻译:

key: "Click %{url}"

我做了以下更改:

t('my.key', :link => @link)

key: "Click %{url}"

密钥是社区翻译的,我有不少。我们只维护英语语言环境。

当然,现在我的测试变红了,因为如果这个视图以英语以外的任何其他语言呈现而不更新所有其他键,它将返回:

missing interpolation argument in "Click %{url}" ({:link=>"..."} given)
(ActionView::TemplateError)

解决这个问题的懒惰程序员方法是什么?耙任务以删除密钥?猴子补丁 I18n 拯救到 :en?

【问题讨论】:

    标签: ruby-on-rails ruby internationalization


    【解决方案1】:

    字符串的可本地化部分没有任何变化。

    %{...} 永远不会被翻译,它只是一个变量名。

    所以在所有语言中将 %{url} 更改为 %{link} 是安全的 (确保不要使用会破坏编码的编辑器来损坏字符串)。

    有点像换html标签:

       <p>Click <b>Print</b> to whatever</p>
    

    改为:

       <p>Click <i>Print</i> to whatever</p>
    

    【讨论】:

    • 我们只维护英语语言环境,所以我们从不手动编辑其他语言环境,这会与我们使用的翻译前端混淆。
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 2011-01-26
    • 2020-05-09
    • 1970-01-01
    相关资源
    最近更新 更多