我们正在建立一个教育平台。该网站将在不同的国家/地区发布,每个国家/地区都有自己的子文件夹。例如,
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。
从业务角度来看,我们选择了一种自下而上的方法,这意味着现在只需要构建必要的东西,并根据需要添加功能。
我认为这是使网站国际化的合理策略。我担心的是选择错误并在新功能到来时遇到麻烦。我希望尽可能具有灵活性。
这是我第一次设计国际项目。我在这类网站上想到了一些常见的方法吗?我应该注意什么,我没有提到?
答案 0 :(得分:0)
我使用navigator.language获取语言环境并从JS重定向到我想要的任何URL,或者将其添加为查询字符串。在您的情况下,因为您只需要该语言,您应该首先拆分它,然后重定向。在我的情况下,我使用完整的区域设置代码,因为en与AU,US,CA,GB等不同,您可能想要考虑做同样的事情,特别是如果您要显示价格,日期等。
我认为有一种方法可以使用Rails获得这个,请参阅Accept-language,接受charset标题。
将语言/语言环境传递给控制器后,您可以根据需要过滤数据。
如果你设置一个自定义的404页面,这也为一些不错的搜索引擎优化提供了空间,引擎会为此而努力。