Как я (американец) могу проверить, правильно ли обрабатывает мое приложение ASP.NET/SQL Server десятичные дроби для Германии? - PullRequest
6 голосов
/ 04 апреля 2009

В США вы используете "." в качестве разделителя, но в Германии вы используете ",". Я пытаюсь проверить, достаточно ли умна моя логика, чтобы справиться с какой-либо из них, но мне кажется, что я не могу перевести мою машину с Windows 2000 в немецкий режим.

Я зашел в Панель управления, Региональные параметры и изменил «Ваш язык» на «Германия». Затем я перезапустил IIS и SQL Server. Но мои изменения, похоже, не вступили в силу.

Эти строки все еще показывают "." быть разделителем.

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo ( System.Threading.Thread.CurrentThread.CurrentCulture.Name);

Response.Write (ci.NumberFormat.NumberDecimalSeparator);

Что я делаю не так?

Ответы [ 10 ]

6 голосов
/ 04 апреля 2009

Лучший способ проверить это - добавить элемент глобализации в ваш web.config, например ::

<system.web>
   <globalization culture="de-DE" uiCulture="en-US" />
</system.web>

Изменение культуры на de-DE повлияет на дату и числовые форматы: вы также можете изменить uiCulture, если хотите, оставив uiCulture как en-US, что означает, что вы получите сообщения об исключениях на американском английском языке.

3 голосов
/ 04 апреля 2009

Когда вы устанавливали свои региональные настройки, обязательно ли «Применить все настройки к текущей учетной записи пользователя и к профилю пользователя по умолчанию» (вкладка «Дополнительно»)?

Это должно делать это в большинстве случаев. Я также предполагаю, что ваша культура не настроена на "en-us" в элементе globalization в Web.config.

Похоже, что вы не хотите делать это, устанавливая свои настройки Культуры вручную в коде, скорее, вы хотите, чтобы они унаследовали Системные настройки. Это, IMO, является хорошим способом проверки, поскольку ваши изменения должны распространяться и на SQL-сервер.

1 голос
/ 04 апреля 2009

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

Также довольно часто для системного языкового стандарта устанавливают что-то неподходящее из-за унаследованных проблем (например, приложений, которые работают только на японском языке, или производственных серверов во всем мире, работающих под управлением en-US как «каноническая версия Windows») ).

Обычно лучше обрабатывать это на уровне приложения, используя один вариант локали на развертывание кода вашего сайта или (при необходимости) один вариант локали на пользователя сайта. Тогда любой желающий может войти в приложение и получить соответствующее форматирование номера.

Наконец, если интерфейс вашего приложения исключительно английский, в любом случае может быть целесообразнее придерживаться форматирования чисел на английском языке. Немцы привыкли к этому; на самом деле это может быть больше путаницей, когда нужно смешивать английские и немецкие соглашения о пользовательском интерфейсе. ИМО: Локализовать полностью или не делать совсем.

0 голосов
/ 28 апреля 2009

Вот статья

легко проверить свой код для нескольких культур

http://haacked.com/archive/2007/06/14/easily-test-your-code-for-multiple-cultures.aspx

0 голосов
/ 04 апреля 2009

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

Когда это работает по-настоящему, можем ли мы предположить, что сервер может быть размещен за пределами Германии (или, может быть, в Германии, но на машине, настроенной на язык США - это часто случается). Если это так, настройка культуры на сервере не совсем то, что вам нужно, и вы, вероятно, не сможете сделать это, когда все равно развернетесь.

У вас также есть другая проблема, нет надежного способа определить, какую культуру хочет использовать ваш пользователь. Вы можете обнаружить все виды информации из заголовков HTTP, выполнить поиск домена по IP-адресу, но что делать, если говорящий по-немецки хотел использовать ваш сайт из США, или американец находился в Германии и хотел видеть "." а не "," для десятичного разделителя?

Другими словами, я говорю, что не имеет значения, какую культуру использует компьютер вашего клиента - это не имеет значения, потому что когда вы переходите в Интернет, все ставки отключаются - даже если ваше приложение правильно распознало вашу культуру это может быть не то, что хочет ваш пользователь!

Итак, я бы хотел спросить пользователя, какой язык он хочет, а затем явно установить языковой стандарт в приложении во время выполнения. Это означает, что нужно попросить пользователя выбрать язык, но это единственный способ убедиться, что он использует правильную локаль для пользователя. Если все ваши пользователи немецкие, то вам не нужно спрашивать, вы можете просто жестко закодировать его. Если его подход звучит так, как будто он может работать, то здесь есть хороший пример кода: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx.

Удачи, точнее, Вила Глюка!

0 голосов
/ 04 апреля 2009

Если вы просто тестируете один раз, вы можете изменить строку так:

System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("de-DE");

и измените его позже. Вы можете использовать такие строки, если хотите выполнить несколько юнит-тестов.

0 голосов
/ 04 апреля 2009

Я не думаю, что IIS использует настройку региона. Вам необходимо явно указать CultureInfo в своем коде.

0 голосов
/ 04 апреля 2009

Если вы действительно хотите поразить этого ... Виртуальные машины - ваш друг. Но вам действительно нужна подписка msdn, чтобы получить немецкую версию операционной системы.

Загрузите ОС (WinXP или Vista) в виртуальную машину, затем перейдите на веб-сайт.

0 голосов
/ 04 апреля 2009

Вы можете установить свою текущую культуру как немецкую.

Думаю, это будет проще, чем переключение региональных настроек

0 голосов
/ 04 апреля 2009

Думаю, вам нужна вкладка Форматы (первая там).

...