CSS文件的Rails I18N
-
26-10-2019 - |
题
我正在尝试国际化我的网站,其中一件事是为不同的语言使用不同的字体大小。另外,也需要更换一些文本图像。
我认为,这样做的唯一方法是在我看来,在公共文件夹中将其他特定于特定环境的CSS文件放在公共文件夹中,并根据语言环境加载它们。这避免了资产管道编译那些特定的CSS文件。但是我想知道是否有更好的方法?
解决方案
组织中最好的选择是具有特定于本地化的不同样式表,然后在您的布局中设置条件,以基于该语言环境的渲染方式。
仅仅是放置本地特定样式,如果您考虑一下……它不应该影响加载时间太多,因为我相信您只是更改字体尺寸。
从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
.
其他提示
我同意Onno。我只需要非常简单的更改,因此我将语言环境添加为语言标签,如本答案中所述:https://stackoverflow.com/a/11577356/1822977
html:
<html lang="<%= I18n.locale || 'en' %>">
萨斯:
body {
font-family:verdana,arial,helvetica,sans-serif;
html[lang="jp"] & {
font-family:"ヒラギノ角ゴ Pro W3", "Hiragino Kaku Gothic Pro", sans-serif;
}
}
您也可以在渲染的HTML中使用特定于区域的类属性。我认为这是实现自己想要的更好/更轻松的方法。将CSS公开放置不是很好。
不隶属于 StackOverflow