如何将翻译映射到数据库

时间:2019-05-30 14:27:05

标签: c# sql sql-server database

我希望用户在我的系统中注册时,选择语言(tbParam [language]),并根据其选择的语言,对他可用的国家/地区进行翻译

当用户在我的系统中注册后,他可以选择一种语言,该语言存储在 tbParam [language] 中,并且使用该选择的语言,网站的其余部分也将得到相应的翻译。

首先,我考虑过通过C#上的资源(带有键和值)来做到这一点: Resources screenshot的左侧是默认语言(葡萄牙语)的名称,值是转换为英语的键,它仅适用于一种语言,但我假装使用西班牙语,德语和英语。然后我考虑了所有要做的工作,然后想到了第二种方法。

第二种方式:使用数据库

我当时正在考虑创建一些包含语言,国家和翻译的表格。在您选择语言时,所有这些语言都相互链接在一起,通过语言键来翻译的数据库,并以我的C#代码处理查询的结果。

我想知道哪种方法是最好的,如果是数据库的话,那么关于表重新分配的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

您可以为每种语言使用资源文件。您需要做的就是在项目中包含几个资源文件:

例如添加资源文件名YourResourceFileName.resx。 它们添加特定语言的资源文件,然后添加名为YourResourceFileName的资源文件。[CULTURECODE] .resx 对于西班牙语,请添加YourResourceFileName.es.resx 对于德语,请添加YourResourceFileName.de.resx (您甚至可以使用来自特定文化的资源文件,例如en-US或en-GB)

然后考虑直接编辑.csproj文件,并将新文件包含为上一个文件的依赖项(您可以右键单击该项目,选择“卸载项目”,然后再次右键单击并选择“编辑.csproj”-完成后,通过右键单击重新加载项目。

您将需要更改:

<Compile Include="YourResourceFileName.es.Designer.cs">
  <DependentUpon>YourResourceFileName.es.resx</DependentUpon>
</Compile>
<Compile Include="YourResourceFileName.es.resx">

收件人:

<Compile Include="YourResourceFileName.es.resx">
  <DependentUpon>YourResourceFileName.resx</DependentUpon>
</Compile>

这会将YourResourceFileName.es.resx和YourResourceFileName.es.Designer.cs都放在YourResourceFileName.resx节点下。

对德语资源文件执行相同操作,更改:

<Compile Include="YourResourceFileName.de.Designer.cs">
  <DependentUpon>YourResourceFileName.de.resx</DependentUpon>
</Compile>
<Compile Include="YourResourceFileName.de.resx">

收件人:

<Compile Include="YourResourceFileName.de.resx">
  <DependentUpon>YourResourceFileName.resx</DependentUpon>
</Compile>

您最终将遇到如下情况: YourResourceFile with several cultures