Перевод языка в зависимости от языка SQL (число в название месяца) - PullRequest
1 голос
/ 22 февраля 2012

Я хотел бы преобразовать число в название месяца, в зависимости от языка. Например:

  • 1 = январь на индонезийском языке
  • 1 = 一月 на китайском языке.
  • 1 = gennaio на итальянском языке.

Как это сделать? Моя цель - перевести на язык моей страны БАХАСА МАЛАЙЗИЯ (JANUARI, FEBRUARI, MAC ... dismber).

Ответы [ 3 ]

3 голосов
/ 22 февраля 2012

Нельзя локализовать в SQL Server таким образом: вы можете использовать один язык для запроса
Этот языковой параметр используется DATENAME

Так что, если вам не нужно огромное количество таблиц поиска (однадля каждого языка), а затем выполните это на клиенте.

DATENAME также ненадежен для некоторых языков.См. DATENAME (MONTH, GETADATE ()) возвращает числовое значение месяца как «09»

SQL Server 2012 добавляет некоторые настройки культуры через FORMAT, но вам придется передать это вSQL Server.Как я уже сказал, сделайте это на клиенте.

Редактировать:

Индонезийский язык не поддерживается в SQL Server 2005 через SET LANGUAGE.

Итак, для этого один язык, который вам нужен CASE

CASE DATEPART(month, GETDATE())
  WHEN 1 THEN 'januari '
  WHEN 2 THEN '...'
  ...
END

В противном случае, SET LANGUAGE или сделайте это в клиенте

1 голос
/ 22 февраля 2012

По моему мнению, локализация не должна выполняться на уровне серверной / бизнес-логики, если вы можете избежать этого.Поэтому я бы вернул дату / месяц в хранимой процедуре как DATETIME или INT и локализовал бы эту информацию в клиенте, который обрабатывает данные.

0 голосов
/ 22 февраля 2012

Я не знаю, как правильно написать это для вашей базы данных.Основная идея:

result = to_char(date, MM)
result = REPLACE('1', "JANUARI", result)
result = REPLACE('2', "FEBRUARI", result)
....

И по крайней мере в Oracle это можно написать без хранимых процедур

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...