我正在尝试将我的网站国际化,其中一件事是为不同的语言使用不同的字体大小。此外,一些文本图像也需要替换。
我认为唯一能做到这一点的方法是在公共文件夹中有额外的特定于区域设置的CSS文件,并根据我的视图中的区域设置加载它们。这样可以避免资产管道编译那些特定的CSS文件。但我想知道是否有更好的方法?
您在组织中的最佳选择是拥有特定于本地化的不同样式表,然后在布局中根据区域设置要呈现的样式表的条件。
只需放入本地特定的样式,如果你仔细想想……它不会对加载时间产生太大影响,因为我相信你只是在更改字体大小。
OP更新:
以下是我配置的功能:
- 我在
app/assets/stylesheets
下创建了一个locales
目录 - 我在里面放了特定于区域设置的样式表,比如
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
。
我同意Onno的观点。我只需要非常简单的更改,所以我添加了语言环境作为语言标记,如下所述: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;
}
}
您还可以在html渲染中使用特定于区域设置的类属性。我认为这是实现你想要的更好/更容易的方式。把css放在公共场合不太好。