在Rails应用程序中根据区域设置加载不同的css文件或图像

时间:2013-03-09 21:06:55

标签: ruby-on-rails-3.1 internationalization resources globalization

所以我有我的简单rails应用程序(不是数据驱动),我已经管理(在Stackoverflow的帮助下)本地化它。所以我可以用英语或德语查看Web应用程序。我使用捆绑的i18n库完成了这项工作。一切都很好,与之合作很愉快。

然而,现在,我想根据活动的区域设置加载不同的图像和/或css文件。我想要一个简洁的解决方案来解决这个问题。不是:

if i18n.locale = "en"
  // show this particular image
else
  // show that particular image

在我看来,上面的内容并不简洁,想象一下if语句或switch语句会在多长时间内获得更多语言环境。

所以我在想,有没有办法可以扩展 javascript_include_tag stylesheet_link_tag 的功能,最后是 image_tag 的功能用于语言环境处理?

我认为:

stylesheet_link_tag "default.css", :locale => true

如果 if true ,那么插入的样式表就像:

<link href="stylesheets/default.es.css" type="text/css" rel="stylesheet" />

假设我的新位置是西班牙语。那将是可爱和干净的。

这可以在Ruby on Rails中实现吗?如果是的话,我会喜欢一些代码示例,因为我相对来说是一个n00b到rails。

谢谢。

1 个答案:

答案 0 :(得分:6)

您可以在包含资产时引用区域设置。假设您要包含特定于当前区域设置的样式表:

stylesheet_link_tag "custom_#{I18n.locale}.css"

如果当前区域设置为en,则会查找custom_en.css文件。

但请注意:您应该确保为要使用的每个区域设置创建一个文件。