Загрузка различных файлов css или изображений в зависимости от локали в приложении Rails

Итак, у меня есть простое приложение rails (не управляемое данными), и мне удалось (с помощью Stackoverflow) его локализовать. Таким образом, я могу просматривать веб-приложение на английском или немецком языках. Я сделал это, используя встроенную библиотеку i18n. Все хорошо, работать было одно удовольствие.

Однако теперь я хочу загружать разные изображения и файлы css в зависимости от того, какая локаль активна. Я хочу аккуратное решение этой проблемы. Не:

if i18n.locale = "en"
  // show this particular image
else
  // show that particular image

На мой взгляд, вышеизложенное не очень аккуратно, и представьте, как долго оператор if или оператор switch будет получать больше локалей, которые вы добавляете.

Итак, я подумал, есть ли способ расширить функциональность javascript_include_tag, stylesheet_link_tag и, наконец, image_tag, чтобы разрешить обработку локали ?

Я думаю что-то вроде:

stylesheet_link_tag "default.css", :locale => true

Было бы неплохо иметь, где если true, вставленная таблица стилей будет выглядеть так:

<link href="stylesheets/default.es.css" type="text/css" rel="stylesheet" />

Предполагая, что мой новый язык - испанский. Было бы красиво и чисто.

Можно ли этого добиться в Ruby on Rails? Если да, мне бы хотелось получить образец кода, так как я относительно n00b для рельсов.

Благодарю вас.


person J86    schedule 09.03.2013    source источник


Ответы (1)


Вы можете просто указать локаль при включении актива. Допустим, вы хотите включить таблицу стилей, специфичную для текущей локали:

stylesheet_link_tag "custom_#{I18n.locale}.css"

Если текущая локаль en, будет искаться файл custom_en.css.

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

person tigrish    schedule 10.03.2013
comment
Не могу поверить, что я не подумал об этом. :) Спасибо тигриш. - person J86; 10.03.2013