Comments 16
А как обрабатывается ситуация, когда пользователь в системный настройках выбрал страну и язык, а потом заменил запятую на точку?
О том, что культура может не соответствовать дефолтным настройкам, сигнализирует свойство
CultureInfio.UseUserOverride
. Этот же параметр отражен в перегрузках конструкторов CultureInfo
. Для культур потока значение true
, а, например, для полученных через CultureInfo.GetCultureInfo(String)
— false
.Как раз сегодня столкнулся при парсинге числа из строки в double, что надо не запятую, а точку :)
Почему в .NET нет культуры MD? Потому что это расшифровывается как Must Die:)
Environment.NewLine
Так вот откуда его брать! Спасибо!
А я помню багу в одном разрабатываемом на .net продукте, которая проявлялась только при использовании турецкого языка.
Суть баги в том, что в турецком языке есть две буквы «i» — одна с точкой и одна без точки. Поэтому если например делать toUpper для маленькой английской буквы «i», то в результате получится большая турецкая буква "İ" с точкой.
В результате все методы сравнения строк в которых использовалось изменение регистра давали ложные срабатывания.
Бага фиксается путем замены методов сравнения на специальные, которые используют invariant culture, но тогда конечно об этом никто не думал.
Суть баги в том, что в турецком языке есть две буквы «i» — одна с точкой и одна без точки. Поэтому если например делать toUpper для маленькой английской буквы «i», то в результате получится большая турецкая буква "İ" с точкой.
В результате все методы сравнения строк в которых использовалось изменение регистра давали ложные срабатывания.
Бага фиксается путем замены методов сравнения на специальные, которые используют invariant culture, но тогда конечно об этом никто не думал.
Это давно известно как The Turkey Test.
Владислав, плюсую!
Если ваш продукт очень тесно связан с глобализацией и локализацией, то скорее всего вы подписаны на уведомления об изменениях в стандарте www.iso.org/iso/home/standards/country_codes.htm
За последнее время Microsoft сильно причесала информацию по языкам, переименовала страны, вынесла из названия Latin и Cyrillic, добавила много новых культур (Windows 7). В .Net с этим всё попроще, а вот в плюсах приходится иметь дело с LCID и там всё куда запутанней. Одно разделение хорватского на три языка (primary language остался одинаковым) столько геморроя создало. Сейчас существует уже несколько языков у которых название зависит от страны Sami, Norway Bokmal, Upper Sorbian. Так что приходится постоянно следить, чтобы языки в интерфейсе отображались адекватно и группировка по primary language ничего не сломала.
За последнее время Microsoft сильно причесала информацию по языкам, переименовала страны, вынесла из названия Latin и Cyrillic, добавила много новых культур (Windows 7). В .Net с этим всё попроще, а вот в плюсах приходится иметь дело с LCID и там всё куда запутанней. Одно разделение хорватского на три языка (primary language остался одинаковым) столько геморроя создало. Сейчас существует уже несколько языков у которых название зависит от страны Sami, Norway Bokmal, Upper Sorbian. Так что приходится постоянно следить, чтобы языки в интерфейсе отображались адекватно и группировка по primary language ничего не сломала.
> Да, код региона был MO, а не MD как сейчас. Стандарт ISO поменялся?
Да, в 2008 году из ISO убрали молдавский, как отдельный язык.
www.loc.gov/standards/iso639-2/php/code_changes.php
Да, в 2008 году из ISO убрали молдавский, как отдельный язык.
www.loc.gov/standards/iso639-2/php/code_changes.php
Sign up to leave a comment.
Локализация и глобализация