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

这将包括:

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

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

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

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

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



    澄清:
  • 通常查询看起来像这样(记住使用查找函数):
    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。对消息使用标准的 token 列表。
    Select DisplayText from (some table) where MessageToken = 'firewood' and LangId = 'en'
    

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

    10-17 00:43