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

标签 .net database tsql ado.net

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

这将包括:

  • 轻松同时管理多种语言
  • 从数据库中轻松检索值
  • 后备语言(以防所选语言缺失)

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

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

我正在研究一种解决方案,它可以让我将参数作为“ session /全局变量”发送,或者使用 sql 查询自动发送参数,以及自行检索它的函数(附加自动参数,要么能够读取参数)。

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

1. Send the language using "the method"
2. Execute Query
3. Get the localized results

澄清:

  1. 通常查询看起来像这样(记得使用查找函数):

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

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

函数体应该是这样的:

SELECT @result = LookupValue FROM LookupTable1 WHERE ID=@Lookup_ID and Language=@lang
RETURN @result
  1. 我想要的是能够将函数中的语言参数移除为某种静态变量,仅适用于当前连接/语句/命令,因此查询看起来像

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

最佳答案

如果您像这样构建数据:

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

当您进行查询时,只需提供默认的 languageId(如果为空)或提供的 languageId。为消息使用标准的 token 列表。

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

关于.net - 数据库本地化 - 查找列表 - 更智能的方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/219798/

相关文章:

c# - 模拟套接字硬断开

objective-c - 术语 "Database seeding"是什么意思?

mysql - laravel 中的架构设计 [迁移]

sql - 如何使用 sum(y) 和不同的表优化 select x 除以子查询的 SQL?

sql-server - 从 T-SQL 构建 AST

c# - 在 .NET 中捕获存储过程打印输出

c# - 什么是 EIMI 的好用例?

c# - Task<T>.Result 和字符串连接

database - 访问 2013 年记录计数报告

sql-server - 如何重置 SQL Server 2008 用户名和密码