Как изменить изображение в соответствии с выбором языка (гем i18n в Rails)? - PullRequest
0 голосов
/ 08 мая 2019

Я готов изменить картинку в зависимости от выбора языка. Это потому, что мое изображение содержит некоторый текст, и я сделал три разных варианта изображения в зависимости от выбора языка (голландский, французский и английский). Как мне это сделать?

Я пытался добавить свой <%= image_tag("lansink_en.png", class: "center-image") %> в моих разных en.yml, fr.yml и nl.yml файлах, но это не сработало.

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Я считаю, что файлы переводов не должны содержать код или более конкретную разметку, чем строго семантическая.

Если они будут отправлены переводчикам (или автоматически переведены с помощью чего-то вроде Google Translate), тогда английский код может быть переведен, оставив вам что-то сломанное на одном или нескольких языках и что-то работающее в др.

Если вы меняете имена классов, для этого особого случая не требуется раунд перевода или обхода.

Я бы предпочел старый добрый вспомогательный метод:

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
0 голосов
/ 22 мая 2019

Вы можете избежать содержания html в ваших файлах yaml. Скажем, у вас есть yml, как

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

Затем, чтобы отобразить его, вы делаете:

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

Затем просто установите другие файлы локали, и все готово

...