如何根据语言选择更改图像(Rails中的i18n gem)?

时间:2019-05-08 17:15:10

标签: html css internationalization rails-i18n

我愿意根据语言选择来更改图片。这是因为我的图像包含一些文本,并且根据语言选择(荷兰语,法语和英语)制作了三种不同版本的图像。我该怎么做?

我试图添加我的 <%= image_tag("lansink_en.png", class: "center-image") %>位于我不同的en.ymlfr.ymlnl.yml文件中,但没有解决问题。

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我认为翻译文件不应包含代码或比严格语义更具体的标记。

如果将它们运送到翻译人员(或使用Google Translate之类的工具进行自动翻译),则英语 code 可能会被翻译,从而使您无法使用一种或多种语言进行翻译,其他人。

如果您更改类名,则在这种特殊情况下不需要进行任何翻译或绕过任何操作。

我希望使用旧的助手方法:

module SomeHelper
  def lansink_image_tag
    image_tag("lansink_#{I18n.locale}.png", class: "center-image")
  end        
end

或者,如果您不知道所有语言都必须有一个文件,但是您希望使用备用文件:

module SomeHelper
  def lansink_image_tag
    has_image = [:de, :fr, :en]
    suffix = has_image.include?(I18n.locale) ? I18n.locale : :en
    image_tag("lansink_#{suffix}.png", class: "center-image")
  end        
end

答案 1 :(得分:0)

您可以在yaml文件中转义html内容。所以说你有一个像这样的yml

en:
  url: '<%= image_tag("lansink_en.png", class: "center-image") %>'

然后显示它:

<%= raw t('url') %>

然后只需设置您的其他语言环境文件就可以了