首页 > 解决方案 > Rails API Globalize 获取所有翻译

问题描述

在使用 globalize 的仅 API 的 rails 应用程序中 - 如何返回模型的所有翻译?

IE。

[
    {
        "id": 1,
        "name_ar": "كرستوفر نولان",
        "name_en": "Christopher Nolan",
        "name_fr": "Christopher Nolan"
    },
    {
        "id": 2,
        "name_ar": "ميشيل جوندري",
        "name_en": "Michael Gondry",
        "name_fr": "Michael Gondry"
    },
    // ...
]

我已经为此寻找了相当长的一段时间,但我未能找到解决方案。

标签: ruby-on-railsrails-apiglobalize

解决方案


你可以做这样的事情:(不是一个完整的有效解决方案,但如果有帮助,请尝试一下)

# translated attribute names
attrs = %w[title description]

def translated_attributes(objects, attributes)
  result = []
  objects.each do |obj|
    trans = {}
    obj.translations.each do |tr|
      trans['id'] = obj.id
      attributes.each do |attr|
       trans[attr + '_' + tr['locale']] = tr[attr]
     end
    end
    result << trans
  end
  result
end

translated_attributes(objects, attrs)

请根据您的应用程序更改名称并相应地传递属性。


推荐阅读