如何在ActiveAdmin中使UI和内容本地化保持独立

时间:2018-09-07 14:28:48

标签: ruby-on-rails internationalization activeadmin globalize3

我们需要开始通过我们的不同应用程序以多种语言提供动态内容。

应考虑两种类型的本地化:UI本地化和内容本地化。 UI本地化是界面交付时使用的语言(静态文本),而内容本地化是查看/编辑语言内容(Rails模型)

我们基本上有3种类型的应用

  1. 移动应用程序-点击用于CRUD操作的API端点
  2. 客户端Web应用程序-使用ribs.js构建,因此也可以使用API​​终结点通过主干模型/集合进行CRUD操作
  3. 管理网络应用-使用activeadmin(https://github.com/activeadmin/activeadmin)构建

我应该注意,我们正在使用Rails 3.2,ActiveAdmin 0.6.6(需要升级,但不是优先级:))

要本地化内容,我们正在寻找全球化的宝石(https://github.com/globalize/globalize

在与API端点进行接口时使用globalize似乎没有任何问题。我们可以使用Accept-Language标头,并在before_filter中设置I18n.locale属性,一切似乎都可以正常工作。这意味着应该涵盖移动应用程序和客户端Web应用程序。

对于ActiveAdmin,这变得有些困难。对于ActiveAdmin应用,我们希望以用户首选的语言提供UI静态文本,同时允许他们在内容的语言之间进行切换。

全球化gem利用I18n.locale属性来确定要为内容翻译更新/读取的语言环境。由于ActiveAdmin未使用AJAX,因此设置I18n.locale也将影响UI静态文本。

目前,这没什么大不了的,因为我们对于UI仅有一个语言环境(config / locales仅包含en yml文件)。这意味着我们可以使用https://github.com/activeadmin/activeadmin/wiki/Specifying-locale中描述的方法,并设置I18n.locale属性以通过全球化更新正确的动态内容,而UI界面将继续以英语提供

但是,考虑到未来,我们可能会在其中添加UI的其他语言,我正在寻找有关如何保持UI区域设置和内容区域设置分离的想法。其他语言(例如Java和C#)在其I18n等效库中具有不同的属性,但是Rails似乎不接受这一点

有想法吗?

预先感谢

1 个答案:

答案 0 :(得分:0)

经过进一步调查,我最终使用了activeadmin-globalize gem。最初,我认为它与基于文档的global gem不兼容,但是它是