支持产品描述的多种语言的最佳实践是什么?

时间:2019-08-29 10:35:32

标签: c# asp.net-core asp.net-web-api localization internationalization

我正在编写ASP.Net Core 2.2 Web Api,现在我收到了支持多种语言(de,en)的请求,以描述我们的产品。这种情况下的最佳做法是什么?

我现在两次阅读了很多有关resx文件和本文档的信息:https://docs.microsoft.com/de-de/aspnet/core/fundamentals/localization?view=aspnetcore-2.2,但是我还阅读了这篇帖子(https://stackoverflow.com/a/10533904/11049948),该帖子说我应该只包括多列(每种语言) )以获取我数据库中的说明。

现在最佳做法是

  1. 以多种语言存储说明

  2. 从请求中获取正确的说明

要澄清这个问题:

“产品”是指普通产品(例如衣服)。在前端(角度),管理员应该能够编辑/创建产品=>产品是动态的。 我还不太了解何时使用resx文件(仅用于静态内容,这里不是这种情况吗?)。现在最好的做法是在“产品”表中包含这两列:Description_DE,Description_EN?超过2种语言我该怎么办?

我希望这可以澄清问题...

1 个答案:

答案 0 :(得分:1)

您可以创建一个用于描述产品的表格(而不是varchar列)。

对于products表:

    |--------------|----------------|------------------------|
    |ProductId     | DescriptionId  |Price                   |
    |--------------|----------------|------------------------|
    |  1           | 20             | 150.00                 |
    |  2           | 20             | 370.00                 |

对于Description的新表:

    |--------------|------------|------------------------|
    |DescriptionId | LanguageId |Label                   |
    |------------- | -----------|------------------------|
    |  20          | 1          | This is English bla bla|
    |  20          | 2          | das ist en deutsch bla |

Language也是一个表。

使用这种方法,您可以根据需要管理多种语言,并且在获取数据时,您可以传递用户的languageId

因此,如果您想获取产品1的详细信息:

SELECT * from product p 
INNER JOIN Description d 
ON p.descriptionId = d.descriptionId
WHERE p.podouctId = 1 and d.languageId = 2 -- DE Desciption