Я хочу добавить несколько списков поиска в базу данных, но я хочу, чтобы они были легко локализуемыми (SQL 2005, ADO.NET)
Это будет включать:
- Простое управление несколькими языками одновременно
- Простой поиск значений из базы данных
- Резервный язык (в случае отсутствия выбранного языка)
Я думал о том, чтобы иметь таблицу, в которой будет храниться многоязычный справочный список (использующий для разных языков один и тот же идентификатор) и использовать функцию, которая будет возвращать значение справочного списка - путем получения идентификатора и Язык.
Одна из ловушек заключается в том, что мне нужно вручную добавлять языковой параметр в каждый запрос, использующий список поиска.
Я ищу решение, которое позволило бы мне отправить параметр в виде "сеанса / глобальной переменной" или которое автоматически отправило бы параметр с помощью запроса sql, а также функцию для его извлечения (либо для присоединения параметр автоматически, либо для возможности чтения параметра).
Решение может выглядеть примерно так, но я не против, если оно будет другим, если оно явно не передает параметр в Запрос (псевдокод):
1. Send the language using "the method"
2. Execute Query
3. Get the localized results
Пояснение:
Обычно запрос будет выглядеть так (не забывайте использовать функцию поиска):
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