2016-09-07 2 views
1

У меня есть приложение, которое переведено на иврит, кроме английского и немецкого..net локализация - исключение исключения на иврите на операционной системе englisch

Чтобы проверить ввод пользователя, я создал правило проверки, которое выдает ArgumentOutOfRangeException, если значение превышает его пределы.

public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
{ 
    double validationValue = 0; 
    validationValue = double.Parse(value.ToString()); 

    if(validationValue < Min) 
    { 
    ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException(); 
    return new ValidationResult(false, ex.Message); 
    } 
    else if(validationValue > Max) 
    { 
    ArgumentOutOfRangeException ex = new ArgumentOutOfRangeException(); 
    return new ValidationResult(false, ex.Message); 
    } 

    return new ValidationResult(true, null); 
} 

Валидация работает.
Однако, если я установил язык приложения на иврит, используя CultureInfo.DefaultThreadCurrentCulture и CultureInfo.DefaultThreadCurrentUICulture, я получаю исключение на английском языке. Установка языка на немецкий или английский язык, я получаю правильное сообщение об исключении. Операционная система - Windows 7 english.

  • Является ли текст исключения зависящим от установленных языков ОС?
  • Могу ли я решить проблему, установив языковой пакет на иврите (только для Win 7 Enterprise/Ultimate Edition)?

Я попытался установить регион в Израиль, но я не могу установить иврит в моей текущей тестовой среде.

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

+0

Почему имеет значение, на каком языке находится текст исключения, поскольку тип всегда один и тот же? Если вы не показываете сообщение об ошибке непосредственно пользователю? – stuartd

+0

Вы пытались установить .Net Framework Language Pack? – Pikoh

+0

Вы не должны возвращать сообщение об ошибке клиенту, исключения не переводится на все языки. Вы должны использовать какой-то механизм перевода, например, здесь -http: //stackoverflow.com/questions/26469667/custom-validation-message-language-specific –

ответ

0

Работает языковой пакет .Net. Хотя я реорганизовал мое правило проверки. Пользовательское сообщение теперь возвращается, если значение вне диапазона.

  • Я могу включить минимальное и максимальное возможное значение.
  • Будущие переводы не зависят от установленных языковых пакетов .NET.