我正在编写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),该帖子说我应该只包括多列(每种语言) )以获取我数据库中的说明。
现在最佳做法是
以多种语言存储说明
从请求中获取正确的说明
要澄清这个问题:
“产品”是指普通产品(例如衣服)。在前端(角度),管理员应该能够编辑/创建产品=>产品是动态的。 我还不太了解何时使用resx文件(仅用于静态内容,这里不是这种情况吗?)。现在最好的做法是在“产品”表中包含这两列:Description_DE,Description_EN?超过2种语言我该怎么办?
我希望这可以澄清问题...
答案 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