5

Estoy tratando de internacionalizar mi sitio, y una cosa es usar diferentes tamaños de letra para diferentes idiomas. También algunas imágenes de texto deben ser reemplazadas también.Rails I18n del archivo CSS

Creo que la única manera de hacerlo es tener archivos CSS específicos de configuración regional adicionales en la carpeta pública y cargarlos según la configuración regional en mi vista. Esto evita que el inventario de activos compile esos archivos CSS específicos. Pero me pregunto si hay una mejor manera de hacerlo.

Respuesta

11

Su mejor apuesta en la organización es tener diferentes hojas de estilo específicas para la localización, luego establecer una condición en su diseño sobre qué hojas de estilo representar según la configuración regional.

Solo tiene que poner el estilo específico local, y si lo piensa ... no debería afectar los tiempos de carga porque creo que solo está cambiando el tamaño de las fuentes.

actualización desde OP:

Aquí es lo que he configurado para tener este trabajo:

  • He creado un directorio de locales bajo app/assets/stylesheets
  • puse locale hojas de estilo específicas dentro, como fr.sass
  • configuro la condición en el layouts/application.html.erb para hacer referencia a los archivos css: <% if I18n.locale != :en %> <%= stylesheet_link_tag "locales/" + I18n.locale.to_s %> <% end %>
  • I fijó la pre-compilar reglas en config/application.rb

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

en cuenta que estoy lista blanca de los activos que quiero compilar en application.css, por lo que los estilos específicos de entorno local no va a entrar en el application.css .

+0

Eso se ve muy bien a yo. – ericraio

2

También puede usar los atributos de clase específicos de la configuración regional en html prestados. Creo que es una forma mejor/más fácil de lograr lo que quieres. Poner css en público no es tan agradable.

4

Estoy de acuerdo con Onno. Sólo necesitaba cambios muy simples, por lo que añade la configuración regional como etiqueta de idioma, como se describe en esta respuesta: 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; 
    } 
} 
Cuestiones relacionadas