我正在本地化遗留应用程序(使用VB.net开发的Winform应用程序),并且在一些表单上,帐户状态的结果直接显示给用户。
这些单词(存储在数据库中)如何进行本地化?我尝试过使用资源文件,比如我如何使用其他应用程序,但(毫不奇怪)它没有用。
是否有通用的做法或方法来翻译来自数据库但实际上不在代码或表单中的项目?
例如,在我的解决方案的XSLT中,我有以下内容:
<xsl:attribute name="Session_State">
<xsl:value-of select="@TSSS"/>
</xsl:attribute>
它包含大约8个不同的会话状态,这些会话状态都存储在数据库中,所有这些都需要翻译。这是资源文件和资源管理器不为我做的诀窍。
我正在使用Resx Manager来本地化应用程序的其余部分。所有字符串当前都在资源文件中,整个应用程序都会翻译,除了这个特定部分,我不确定如何去做。
答案 0 :(得分:1)
在本例中,我将向您展示如何使用DB进行本地化
Table Language
---------------
languageId description culture cultureId
1 American English en-Us 0x0409
2 Mexican Spanish es-MX 0x080A
Table StringMaster
------------------
stringId
1
Table StringLocal
------------------
stringId language text
1 1 name
1 2 nombre
Table SystemUser
---------------
userId Name languageId
1 John Smith 1
2 Jesus Navas 2
在您的代码中,您需要根据字符串ID和用户语言加载应用程序字符串。如果这是Web应用程序,您可以加载和缓存元数据,并从内存中选择所需的子集以实现性能目的。同样的事情适用于桌面应用程序。
您的代码将在form_load
上显示,例如,设置标签
lblName.Text = localizer.GetString(1, "Name"); //1 - stringId;
// "Name" - default value, if metadata call fails
构建本地化程序时,请设置语言
var localizer = new Localizer(currentUser.LanguageId);
我们走了。这只是众多方法中的一种。