多语言 NodeJs API
Multilingual NodeJs API
我正在用 swagger 和 mongoDB.
在 nodejs 中开发 REST API
我正在寻找一个模块或一个好的实践来帮助我 multi-language 支持。
collections 中的每个 objects 都应该有自己的翻译,我不确定最好的翻译方式。
我查看了几个模块,但我发现的都是静态数据。
翻译由用户决定,可以随时以任何语言发布。我需要确保用户可以用他发布的每种语言检索他的数据。
这是我想做的事情的一个例子,但我不确定这是推荐的做法。
Collection:公寓
英文数据:
var apartment = {
"id": "1x213"
"name": "Flat 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "A wonderful apartment at 2 minutes from the eiffel tower"
}
法语数据:
var apartment = {
"id": "1x214"
"name": "Appartement 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "Un magnifique appartement, à 2 minutes de la tour eiffel"
}
Collection : 多语言
var multilanguage = {
"id": "1y679"
"language": [{'en': '1x213' },
{ 'fr': '1x214'}]
}
我读到了一些其他的做法 here 但我不确定它是否适合大用途。我觉得有点乱。
谢谢
最后我选择了下面的方法。
我认为这是最简单且更具可扩展性的方法。
我从 ruby 的 rails 良好实践中获得灵感。
英文数据:
var apartment = {
"id": "1x213",
"group_id": "c3por2d2",
"language": "en",
"name": "Flat 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "A wonderful apartment at 2 minutes from the eiffel tower"
}
法语数据:
var apartment = {
"id": "1x214",
"group_id": "c3por2d2",
"language": "fr",
"name": "apartment 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "Un magnifique appartement, à 2 minutes de la tour eiffel"
}
我现在有一个通用的 group_id,我可以查询它以获取用户发布的每种语言的数据,我也可以查询特定语言的数据。
在像 mongoDB 这样的文档存储中,我通常将依赖于语言的信息作为对象数组,如下所示:
var apartment = {
"id": "1x214",
"group_id": "c3por2d2",
"price": 100000,
"rooms": 2,
"city": "Paris",
"country": "France",
"zipcode": 75016,
"address": "11 Avenue du Général de Gaulle",
"names": [{
"language": "fr_FR",
"text": "Appartement 1"
}, {
"language": "en_US",
"text": "Apartment 1"
}, {
"language": "en_GB",
"text": "Flat 1"
}],
"descriptions": [{
"language": "fr_FR",
"text": "Un magnifique appartement, à 2 minutes de la tour eiffel"
}, {
"language": "en_US",
"text": "A wonderful apartment at 2 minutes from the eiffel tower"
}, {
"language": "en_GB",
"text": "A wonderful flat at 2 minutes from the eiffel tower"
}]
}
或像这样的键值对象:
var apartment = {
"id": "1x214",
"group_id": "c3por2d2",
"price": 100000,
"rooms": 2,
"city": "Paris",
"country": "France",
"zipcode": 75016,
"address": "11 Avenue du Général de Gaulle",
"names": {
"fr_FR": "Appartement 1",
"en_US": "Apartment 1",
"en_GB": "Flat 1"
},
"descriptions": {
"fr_FR": "Un magnifique appartement, à 2 minutes de la tour eiffel",
"en_US": "A wonderful apartment at 2 minutes from the eiffel tower",
"en_GB": "A wonderful flat at 2 minutes from the eiffel tower"
}
}
它们都是灵活的解决方案。它们还允许前端在不重新加载对象的情况下在语言之间切换。
您不需要在多个对象中重复不可翻译的内容。数组往往与静态类型语言一起工作得更好。
我知道已经有一段时间了,但你可能想看看这个:http://dnd1.com/blog/2016/08/19/multilanguage-api-mongo/
它设置了一个框架来管理您 API 中的多种语言。也许 "response hook" 部分会对您有所帮助。
我正在用 swagger 和 mongoDB.
在 nodejs 中开发 REST API我正在寻找一个模块或一个好的实践来帮助我 multi-language 支持。 collections 中的每个 objects 都应该有自己的翻译,我不确定最好的翻译方式。
我查看了几个模块,但我发现的都是静态数据。
翻译由用户决定,可以随时以任何语言发布。我需要确保用户可以用他发布的每种语言检索他的数据。
这是我想做的事情的一个例子,但我不确定这是推荐的做法。
Collection:公寓
英文数据:
var apartment = {
"id": "1x213"
"name": "Flat 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "A wonderful apartment at 2 minutes from the eiffel tower"
}
法语数据:
var apartment = {
"id": "1x214"
"name": "Appartement 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "Un magnifique appartement, à 2 minutes de la tour eiffel"
}
Collection : 多语言
var multilanguage = {
"id": "1y679"
"language": [{'en': '1x213' },
{ 'fr': '1x214'}]
}
我读到了一些其他的做法 here 但我不确定它是否适合大用途。我觉得有点乱。
谢谢
最后我选择了下面的方法。 我认为这是最简单且更具可扩展性的方法。 我从 ruby 的 rails 良好实践中获得灵感。
英文数据:
var apartment = {
"id": "1x213",
"group_id": "c3por2d2",
"language": "en",
"name": "Flat 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "A wonderful apartment at 2 minutes from the eiffel tower"
}
法语数据:
var apartment = {
"id": "1x214",
"group_id": "c3por2d2",
"language": "fr",
"name": "apartment 1",
"price": 100000,
"rooms": 2,
"city": "paris",
"country": "france",
"zipcode": 75016,
"address": "11 avenue du general de Gaulles",
"description": "Un magnifique appartement, à 2 minutes de la tour eiffel"
}
我现在有一个通用的 group_id,我可以查询它以获取用户发布的每种语言的数据,我也可以查询特定语言的数据。
在像 mongoDB 这样的文档存储中,我通常将依赖于语言的信息作为对象数组,如下所示:
var apartment = {
"id": "1x214",
"group_id": "c3por2d2",
"price": 100000,
"rooms": 2,
"city": "Paris",
"country": "France",
"zipcode": 75016,
"address": "11 Avenue du Général de Gaulle",
"names": [{
"language": "fr_FR",
"text": "Appartement 1"
}, {
"language": "en_US",
"text": "Apartment 1"
}, {
"language": "en_GB",
"text": "Flat 1"
}],
"descriptions": [{
"language": "fr_FR",
"text": "Un magnifique appartement, à 2 minutes de la tour eiffel"
}, {
"language": "en_US",
"text": "A wonderful apartment at 2 minutes from the eiffel tower"
}, {
"language": "en_GB",
"text": "A wonderful flat at 2 minutes from the eiffel tower"
}]
}
或像这样的键值对象:
var apartment = {
"id": "1x214",
"group_id": "c3por2d2",
"price": 100000,
"rooms": 2,
"city": "Paris",
"country": "France",
"zipcode": 75016,
"address": "11 Avenue du Général de Gaulle",
"names": {
"fr_FR": "Appartement 1",
"en_US": "Apartment 1",
"en_GB": "Flat 1"
},
"descriptions": {
"fr_FR": "Un magnifique appartement, à 2 minutes de la tour eiffel",
"en_US": "A wonderful apartment at 2 minutes from the eiffel tower",
"en_GB": "A wonderful flat at 2 minutes from the eiffel tower"
}
}
它们都是灵活的解决方案。它们还允许前端在不重新加载对象的情况下在语言之间切换。 您不需要在多个对象中重复不可翻译的内容。数组往往与静态类型语言一起工作得更好。
我知道已经有一段时间了,但你可能想看看这个:http://dnd1.com/blog/2016/08/19/multilanguage-api-mongo/
它设置了一个框架来管理您 API 中的多种语言。也许 "response hook" 部分会对您有所帮助。