Rails I18n из CSS файла - PullRequest
       3

Rails I18n из CSS файла

6 голосов
/ 16 февраля 2012

Я пытаюсь интернационализировать свой сайт, и одно дело - использовать разный размер шрифта для разных языков.Также некоторые текстовые изображения должны быть заменены.

Я думаю, что единственный способ сделать это - это добавить дополнительные CSS-файлы, зависящие от локали, в общую папку и загрузить их в зависимости от локали, на мой взгляд.Это позволяет избежать компиляции этих конкретных файлов CSS конвейером ресурсов.Но мне интересно, есть ли лучший способ сделать это?

Ответы [ 3 ]

11 голосов
/ 16 февраля 2012

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

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

ОБНОВЛЕНИЕ с OP:

Вот что я настроилчтобы это работало:

  • Я создал каталог locales в app/assets/stylesheets
  • Я поместил в него таблицы стилей, специфичные для локали, такие как fr.sass
  • Iустановить условие в layouts/application.html.erb для ссылки на файлы CSS: <% if I18n.locale != :en %> <%= stylesheet_link_tag "locales/" + I18n.locale.to_s %> <% end %>
  • Я устанавливаю правила предварительной компиляции в config/application.rb

config.assets.precompile += 'locales/*.css'

Обратите внимание, что я включаю в белый список ресурсы, которые я хочу скомпилировать в application.css, поэтому стили, специфичные для локали, не попадут в application.css.

4 голосов
/ 31 мая 2013

Я согласен с Онно.Мне потребовались только очень простые изменения, поэтому я добавил язык в качестве языкового тега, как описано в этом ответе: https://stackoverflow.com/a/11577356/1822977

HTML:

<html lang="<%= I18n.locale || 'en' %>">

Sass:

body {
    font-family:verdana,arial,helvetica,sans-serif;
    html[lang="jp"] & {
        font-family:"ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", sans-serif;
     }
}
2 голосов
/ 16 февраля 2012

Вы также можете использовать специфичные для локали атрибуты класса в рендеринге html.Я думаю, что это лучший / более простой способ добиться того, чего вы хотите.Размещать css на публике не так приятно.

...