5

Próbuję umiędzynarodowić moją witrynę, a jedną z nich jest użycie różnych rozmiarów czcionek dla różnych języków. Również niektóre obrazy tekstowe wymagają również wymiany.Szyny I18n pliku CSS

Myślę, że jedynym sposobem, aby to zrobić, jest posiadanie dodatkowych plików CSS specyficznych dla ustawień narodowych w folderze publicznym i załadowanie ich w oparciu o ustawienia regionalne w moim widoku. Zapobiega to kompilacji tych plików CSS z zasobów. Ale zastanawiam się, czy istnieje lepszy sposób na zrobienie tego?

Odpowiedz

11

Najlepszym wyborem w organizacji jest posiadanie różnych arkuszy stylów specyficznych dla lokalizacji, a następnie ustawienie warunku w layoucie na arkuszu stylów do renderowania na podstawie ustawień narodowych.

Wystarczy tylko umieścić lokalny określony styl, a jeśli się nad tym zastanowić ... nie powinno to wpływać zbytnio na czas ładowania, ponieważ uważam, że zmieniasz tylko rozmiary czcionek.

UPDATE z OP:

Oto co mam skonfigurowane tak, aby mieć tę pracę:

  • utworzonego katalogu locales pod app/assets/stylesheets
  • kładę locale konkretnych stylów wewnątrz, jak fr.sass
  • Ustawiam warunek w layouts/application.html.erb, aby odnieść się do plików css: <% if I18n.locale != :en %> <%= stylesheet_link_tag "locales/" + I18n.locale.to_s %> <% end %>
  • mogę skonfigurować wstępnie opracować zasady w config/application.rb

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

Zauważ, że jestem biały z wykazu aktywów chcę skompilować do application.css, więc konkretne style locale nie dostanie się do application.css .

+0

To wygląda całkiem nieźle mnie. – ericraio

2

Można również użyć atrybutów klasy specyficznych dla regionu w renderowanym html. Myślę, że to lepszy/łatwiejszy sposób na osiągnięcie tego, co chcesz. Publiczne umieszczanie css nie jest takie miłe.

4

Zgadzam się z Onno. Potrzebowałem tylko bardzo prostych zmian, więc dodałem ustawienia regionalne jako znacznika języka, jak to opisano w tej odpowiedzi: 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; 
    } 
}