Rails API Globalize 获取所有翻译



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

即。

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

我一直在寻找这个问题很长一段时间,但我未能找到解决方案。

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

# 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)

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

你可以做这样的事情:

result = {}
Director.find_each do |director|
result[:id] = director.id
director.translations.each { |t| result["name_#{t[:locale]}"], result["description_#{t[:locale]}"] = t.title, t.description }
end

要得到

{
"id": 1,
"name_ar": "كرستوفر نولان",
"name_en": "Christopher Nolan",
"name_fr": "Christopher Nolan",
"description_ar": "...",
"description_en": "...",
"description_fr": "..."
},

最新更新