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

J86*_*J86 2 globalization resources internationalization ruby-on-rails-3.1

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

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

if i18n.locale = "en"
  // show this particular image
else
  // show that particular image
Run Code Online (Sandbox Code Playgroud)

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

所以我在想,有没有办法可以扩展javascript_include_tag,stylesheet_link_tagimage_tag的功能,以便进行语言环境处理?

我想是这样的:

stylesheet_link_tag "default.css", :locale => true
Run Code Online (Sandbox Code Playgroud)

很高兴有,如果是真的,插入的样式表将是:

<link href="stylesheets/default.es.css" type="text/css" rel="stylesheet" />
Run Code Online (Sandbox Code Playgroud)

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

这可以在Ruby on Rails中实现吗?如果是的话,我会喜欢一些代码示例,因为我相对于rails而言是n00b.

谢谢.

tig*_*ish 6

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

stylesheet_link_tag "custom_#{I18n.locale}.css"
Run Code Online (Sandbox Code Playgroud)

如果当前语言环境是en,则将查找该custom_en.css文件.

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