我正在尝试国际化我的网站,其中一件事是为不同的语言使用不同的字体大小。另外,也需要更换一些文本图像。

我认为,这样做的唯一方法是在我看来,在公共文件夹中将其他特定于特定环境的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公开放置不是很好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top