我希望用户在我的系统中注册时,选择语言(tbParam [language]),并根据其选择的语言,对他可用的国家/地区进行翻译
当用户在我的系统中注册后,他可以选择一种语言,该语言存储在 tbParam [language] 中,并且使用该选择的语言,网站的其余部分也将得到相应的翻译。
首先,我考虑过通过C#上的资源(带有键和值)来做到这一点: Resources screenshot的左侧是默认语言(葡萄牙语)的名称,值是转换为英语的键,它仅适用于一种语言,但我假装使用西班牙语,德语和英语。然后我考虑了所有要做的工作,然后想到了第二种方法。
第二种方式:使用数据库
我当时正在考虑创建一些包含语言,国家和翻译的表格。在您选择语言时,所有这些语言都相互链接在一起,通过语言键来翻译的数据库,并以我的C#代码处理查询的结果。
我想知道哪种方法是最好的,如果是数据库的话,那么关于表重新分配的最佳方法是什么。
答案 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>