Rails I18n的CSS文件

lul*_*ala 6 css ruby-on-rails internationalization ruby-on-rails-3 asset-pipeline

我正在尝试将我的网站国际化,有一件事是为不同的语言使用不同的字体大小.还需要替换一些文本图像.

我认为唯一的方法是在公共文件夹中添加其他特定于语言环境的CSS文件,并根据我视图中的语言环境加载它们.这可以避免资产管道编译那些特定的CSS文件.但是我想知道是否有更好的方法来做到这一点?

eri*_*aio 11

组织中最好的选择是具有特定于本地化的不同样式表,然后在布局中根据区域设置在要呈现的样式表上设置条件.

只是把本地特定的风格,如果你考虑它...它不应该影响加载时间那么多因为我相信你只是改变字体大小.

OP的更新:

以下是我配置的工作原理:

  • 我创建了一个locales目录app/assets/stylesheets
  • 我把语言环境特定的样式表放在里面,比如 fr.sass
  • 我在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.


usa*_*don 6

我同意 Onno 的观点。我只需要非常简单的更改,所以我添加了语言环境作为语言标签,如本答案所述:https : //stackoverflow.com/a/11577356/1822977

网址:

<html lang="<%= I18n.locale || 'en' %>">
Run Code Online (Sandbox Code Playgroud)

萨斯:

body {
    font-family:verdana,arial,helvetica,sans-serif;
    html[lang="jp"] & {
        font-family:"?????? Pro W3", "Hiragino Kaku Gothic Pro", sans-serif;
     }
}
Run Code Online (Sandbox Code Playgroud)