基于区域设置的国际站点信息

时间:2016-01-28 11:27:29

标签: ruby-on-rails internationalization

我们正在建立一个教育平台。该网站将在不同的国家/地区发布,每个国家/地区都有自己的子文件夹。例如,

法国:http://myedusite.com/fr/

西班牙:http://myedusite.com/es/

  • 该网站的courses属于providers
  • courses有不同的themes(艺术,商业,科学),这些主题都有子主题(我打算使用ancestry来建立树形结构模型)

课程

providers可以创建课程,如果他们有帐户。创建的课程将仅在其创建的域中发布。 例如,如果我是课程提供者并且我在http://myedusite.com/fr/中创建了一个帐户,那么我创建的课程应该只在http://myedusite.com/fr/中发布。

为此,我考虑使用字段Country定义iso_3166模型。此字段将填充ISO 3166中定义的国家/地区代码。

然后,courses会有一个target_country(类:Country),可以选择发布课程的位置(如果课程target_country是法国它应该只在http://myedusite.com/fr/)中可见。

主题

对于themes发生类似的事情,对于网站所在的每个国家/地区,可以有不同的主题。当用户到达http://myedusite.com/xx/时,只会显示国家/地区“xx”中存在的themes。这意味着每个theme应属于country

另一方面,每个课程都有一个theme

为了处理与国家相关的信息(例如为某个国家/地区加载城市),我考虑使用country gem

从业务角度来看,我们选择了一种自下而上的方法,这意味着现在只需要构建必要的东西,并根据需要添加功能。

我认为这是使网站国际化的合理策略。我担心的是选择错误并在新功能到来时遇到麻烦。我希望尽可能具有灵活性。

这是我第一次设计国际项目。我在这类网站上想到了一些常见的方法吗?我应该注意什么,我没有提到?

1 个答案:

答案 0 :(得分:0)

我使用navigator.language获取语言环境并从JS重定向到我想要的任何URL,或者将其添加为查询字符串。在您的情况下,因为您只需要该语言,您应该首先拆分它,然后重定向。在我的情况下,我使用完整的区域设置代码,因为en与AU,US,CA,GB等不同,您可能想要考虑做同样的事情,特别是如果您要显示价格,日期等。

我认为有一种方法可以使用Rails获得这个,请参阅Accept-language,接受charset标题。

将语言/语言环境传递给控制器​​后,您可以根据需要过滤数据。

如果你设置一个自定义的404页面,这也为一些不错的搜索引擎优化提供了空间,引擎会为此而努力。