.net – 数据库本地化 – 查找列表 – 更智能的方式

我想在数据库中添加一些查找列表,但我希望它们易于本地化(SQL 2005,ADO.NET)

这将包括:

>轻松管理多种语言
>轻松检索数据库中的值
>后备语言(如果缺少所选语言)

我正在考虑使用一个表来存储多语言查找列表(使用不同语言使用相同的id)并使用一个函数来返回查找列表的值 – 通过接收ID和语言.

其中一个缺陷是我必须为使用查找列表的每个查询手动添加语言参数.

我正在研究一种解决方案,它允许我将参数作为“会话/全局变量”发送,或者通过sql查询自动发送参数,以及自行检索它的函数(要么自动附加参数),要么能够读取参数).

解决方案可能看起来像这样,但我不介意它是否不同,只要它没有明确地将参数提供给Query(伪代码):

06000

澄清:

>通常查询看起来像这样(记得使用查找功能):

SELECT ..,GetLookupList1(lookup_ID,language),.. FROM TABLE

GetLookupList1是用户定义的函数,用于检索查找表的查找值.通过使用此函数,SQL代码更易于阅读和维护.

该函数的主体将是这样的:

SELECT @result = LookupValue FROM LookupTable1 WHERE ID=@Lookup_ID and Language=@lang
RETURN @result

>我想要的是能够将语言参数从函数中删除到某种静态变量,仅适用于当前的连接/语句/命令,因此查询看起来像

SELECT ..,GetLookupList1(lookup_ID),.. FROM TABLE

解决方法

如果您构建数据如下:

MessageToken    DisplayText       LangCode
firewood        Fire wood         en
firewood        Bois de chauffage fr

进行查询时,只提供默认的languageId(如果为空)或提供的languageId.使用标准的标记列表来显示消息.

Select DisplayText from (some table) where MessageToken = 'firewood' and LangId = 'en'

相关文章

发表回复

您的电子邮箱地址不会被公开。