Запрос на интернационализацию в SQL SERVER и C # - PullRequest
2 голосов
/ 14 ноября 2011

Я должен подать заявку, которая будет использоваться в США с десятичным разделителем как. И в Скандинавия, которая имеет десятичный разделитель как, Также в скандинавских странах есть дополнительные символы, такие как ø ø å и т. Д.

Я довольно новичок в таком типе интернационализации. Приложение и база данных будут одинаковыми как для США, так и для Скандинавии.

Мне нужна ваша помощь с этими вопросами: -

  1. Какой тип сортировки следует использовать в базе данных?

  2. Возможно ли во внешнем интерфейсе (C #), что в США я могу показать числовые значения, отображаемые как 100,00, а в Скандинавии - 100,00 и как-то убедиться, что вычисления и сохранение в базе данных работает без проблем?

Спасибо

Ответы [ 3 ]

2 голосов
/ 14 ноября 2011

В SQL Server сопоставление используется для таких операций, как сортировка текстовых данных, поэтому я не думаю, что это решение повлияет на валюту и т. Д.

Из внешнего интерфейса .NET(и sql back-end), вы должны выбрать правильный тип данных (например, Decimal, DateTime) для манипулирования данными - для целей отображения и ввода вы можете выполнить форматирование, зависящее от языка (например, см. спецификатор формата валюты в числовой строке форматирования).Вы можете указать формат в таких функциях, как Decimal.ToString или String.Format .Они будут использовать вашу текущую локаль , но вы можете иметь переопределения для указания поставщиков форматов, специфичных для локали.Аналогично у вас есть Parse метод для преобразования из строки в фактический тип данных.

0 голосов
/ 14 ноября 2011

Сделайте так, чтобы все ваши строковые типы данных были NVARCHAR (или NCHAR, если фиксированная длина), чтобы вы поддерживали символы Юникода.

Поскольку вы говорите, что ваша «база данных» будет такой же, выозначает, что сервер - это тот же физический экземпляр или просто та же схема?

Если у вас будет отдельный сервер для США для Скандинавии, это означает, что вы просто установите параметры сортировки SQL-сервера и параметры локализации Windows Server наСША или Скандинавии, вам нужно будет постоянно тестировать ваше решение в обеих средах в процессе разработки, чтобы убедиться, что любая ошибка не распространяется слишком долго и незаметно.

Также возможно иметь один экземпляр базы данных, а затем просто изменитьлокализация на стороне WS / приложения, например, это означает, что вы передаете все времена и числа в формате США.Но вы отображаете значения в формате США или Скандинавии, если вы установили (а не веб-приложение), вы можете запустить этот элемент управления с настройкой локализации локального компьютера пользователя, которая сделает большую часть тяжелой работы для вас безпроблема.

например: DateTime.Now.ToString() сообщит «16:34 14/11/2011» для одного параметра локализации, но «16:34 14.11.2011» для локализации в США, внутренне данные такие же.

Наконец, если вы используете одну центральную базу данных, убедитесь, что вы сохраняете свои даты как время UTC, а не местное время, иначе вы будете игнорировать различия часовых поясов между данными.

0 голосов
/ 14 ноября 2011
  1. Здесь вы можете выбрать параметры сортировки Выбор параметров сортировки SQL Server существуют скандинавские параметры сортировки.

  2. Десятичный разделитель зависит от настроек Windows и не повлияет на ваши расчеты.

У вас возникнут проблемы с преобразованием символьных выражений в числовой тип данных.

Преобразование типов данных :

Символьные выражения, которые преобразуются в точное числовое значение тип данных должен состоять из цифр, десятичной точки и необязательного плюс (+) или минус (-). Ведущие пробелы игнорируются. Запятые, такие как разделитель тысяч в 123 456,00, не допускаются в строка.

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