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