Comments 16
А как обрабатывается ситуация, когда пользователь в системный настройках выбрал страну и язык, а потом заменил запятую на точку?
+2
О том, что культура может не соответствовать дефолтным настройкам, сигнализирует свойство
CultureInfio.UseUserOverride
. Этот же параметр отражен в перегрузках конструкторов CultureInfo
. Для культур потока значение true
, а, например, для полученных через CultureInfo.GetCultureInfo(String)
— false
.+1
Как раз сегодня столкнулся при парсинге числа из строки в double, что надо не запятую, а точку :)
0
Почему в .NET нет культуры MD? Потому что это расшифровывается как Must Die:)
-14
Environment.NewLine
Так вот откуда его брать! Спасибо!
+2
А я помню багу в одном разрабатываемом на .net продукте, которая проявлялась только при использовании турецкого языка.
Суть баги в том, что в турецком языке есть две буквы «i» — одна с точкой и одна без точки. Поэтому если например делать toUpper для маленькой английской буквы «i», то в результате получится большая турецкая буква "İ" с точкой.
В результате все методы сравнения строк в которых использовалось изменение регистра давали ложные срабатывания.
Бага фиксается путем замены методов сравнения на специальные, которые используют invariant culture, но тогда конечно об этом никто не думал.
Суть баги в том, что в турецком языке есть две буквы «i» — одна с точкой и одна без точки. Поэтому если например делать toUpper для маленькой английской буквы «i», то в результате получится большая турецкая буква "İ" с точкой.
В результате все методы сравнения строк в которых использовалось изменение регистра давали ложные срабатывания.
Бага фиксается путем замены методов сравнения на специальные, которые используют invariant culture, но тогда конечно об этом никто не думал.
+4
Это давно известно как The Turkey Test.
+1
Владислав, плюсую!
0
Если ваш продукт очень тесно связан с глобализацией и локализацией, то скорее всего вы подписаны на уведомления об изменениях в стандарте 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 ничего не сломала.
+2
> Да, код региона был 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
+1
Sign up to leave a comment.
Локализация и глобализация