2

所以我有我的简单 Rails 应用程序(不是数据驱动的),并且我已经管理(在 Stackoverflow 的帮助下)对其进行本地化。所以我可以用英语或德语查看 Web 应用程序。我已经使用捆绑的 i18n 库这样做了。一切都很好,合作很愉快。

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

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

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

所以我在想,有没有办法可以扩展javascript_include_tagstylesheet_link_tag以及最后的image_tag的功能以允许进行语言环境处理?

我认为是这样的:

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

很高兴,如果为 true,插入的样式表将如下所示:

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

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

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

谢谢你。

4

1 回答 1

6

包含资产时,您可以只引用语言环境。假设您要包含特定于当前语言环境的样式表:

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

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

不过有一点警告:您应该确保为您打算使用的每个语言环境创建一个文件。

于 2013-03-10T00:07:07.570 回答