Подтвердить что ты не робот

Установите uiCulture автоматически на основе языка браузера

Как я могу настроить культуру ui автоматически на основе браузера users? Все, что я нашел об этом, это Globalize.culture("pt-BR"); Но он устанавливает pt-BR по умолчанию, и я не хочу устанавливать это по умолчанию! Я хочу установить только это, если пользователь pt-BR! Как я могу это сделать? И методы валидатора, как я могу установить их для определенной культуры?

4b9b3361

Ответ 1

В ASP.NET MVC web.config - правильное место. Существует краткое резюме, первый фрагмент показывает, как может быть, например, pt-BR культура принудительная

<globalization 
    enableClientBasedCulture="false" 
    uiCulture="pt-BR" 
    culture="pt-BR" />

Если приложение готово принять культуру от клиента (браузера), настройки должны быть

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto" 
    culture="auto" />

В приведенном выше параметре будет выбран язык, выбранный в браузере клиента (например, cs-CZ в моем случае). Если ни один не определен, будут использоваться системные настройки. Заключительный фрагмент показывает, как разрешить клиенту устанавливать и отправлять намеченную культуру, но в случае, если язык не выбран заранее, переопределите системный параметр с другим значением по умолчанию pt-BR

<globalization 
    enableClientBasedCulture="true" 
    uiCulture="auto:pt-BR" 
    culture="auto:pt-BR" />

Расширенные: настройки культуры для jQuery validator и числового ввода

Примечание. Я определенно не эксперт в jQuery и методах глобализации. Это пример того, как я настраиваю validator для правильной обработки любого числового ввода

razor Просмотреть часть (X() является ярлыком для new HtmlString()):

var defaultThousandSeprator = "@X(culture.NumberFormat.NumberGroupSeparator)";
var defaultDecimalSeprator = "@X(culture.NumberFormat.NumberDecimalSeparator)";

часть jQuery (пользовательские методы для min и max)

$.validator.addMethod("min", function (value, element, param)
{
  var num = value.replace(RegExp(" ", "g"), "") // remove spaces
          .replace(RegExp('\\' + defaultThousandSeprator, "g"), "") // thousand separator
          .replace(RegExp("\\" + defaultDecimalSeprator, "g"), "."); // fix decimals
  return this.optional(element) || num >= param;
});
$.validator.addMethod("max", function (value, element, param)
{
  var num = value.replace(RegExp(" ", "g"), "") // remove spaces
          .replace(RegExp('\\' + defaultThousandSeprator, "g"), "") // thousands
          .replace(RegExp("\\" + defaultDecimalSeprator, "g"), "."); // decimals
  return this.optional(element) || num <= param;
});

И затем jQuery.validator правильно оценивает входные значения для cs-CZ: 10 000,00, а также en-US: 10,000.00.

Ответ 2

Вам нужно записать script с веб-страницы (или главной страницы):

<script type="text/javascript">
    Globalize.culture("<% = CultureInfo.CurrentCulture.ToString() %>");
</script>

Что это. Имейте в виду, что я использовал CurrentCulture вместо CurrentUICulture, так как это то, что вы должны использовать для форматирования. Если вам нужны переводы (которые я бы так не сделал, так как это повредило бы локализуемость), вам понадобится ваш оригинальный CurrentUICulture.