Я наткнулся на слово "Тест Турции", узнав о тестировании кода. Я не знаю, что это значит.
Что такое тест в Турции? Почему это называется так?
Я наткнулся на слово "Тест Турции", узнав о тестировании кода. Я не знаю, что это значит.
Что такое тест в Турции? Почему это называется так?
Проблема Турции связана с интернационализацией программного обеспечения или просто с его неправильным поведением в различных языковых культурах.
В разных странах существуют разные стандарты написания дат (14.04.2008 в Турции и 4/14/2008 в США), цифры (т.е. 123,45 в Польше и 123,45 в США) и правила о верхнем индексе характера (например, в Турция с письмами i, я и №).
Как Джефф Мозер указал, что проблема была названа турецким пользователем, который впервые обнаружил ошибку в функции ToUpper()
. Более подробная информация приведена ниже.
Однако проблема не ограничивается Турцией и строкой конверсий.
В Польше и во многих других странах даты и числа также написаны с разными манерами и проблемы, связанные с интерпретацией даты или числа, также называют проблемой Турции.
Ссылки из Google поиск Турции Проблема с деталями уже дана:
Здесь описывается тест индейки
Забудьте об Турции, это даже не пройдет в США. Вам нужно нечувствительное к регистру сравнение. Итак, вы пытаетесь:
String.Compare(string,string,bool ignoreCase):
....
Проходите ли какие-либо из них "Тест Турции?"
Не случайно!
Причина: вы попали в проблему "Турецкий я".
Как обсуждалось много и много людей, "я" на турецком языке ведет себя иначе, чем на большинстве языков. В стандарте Unicode наш строчный "i" становится "İ" (U + 0130 "Письменное письмо с буквой я с точкой выше" ), когда он перемещается в верхний регистр. Аналогично, наш верхний регистр "I" становится "ı" (U + 0131 "Латинская малая буква Dotless I" ), когда он перемещается в нижний регистр.
мы записываем даты, меньшие по размерам, как день-месяц-год 28.10.2010
мы, турецкие, используем цифры, такие как 4.567,9
У нас есть ö, Ö ç, Ç ş, Ş ğ, Ğ ü, Ü, но мы не разделяем точку с i, когда она больше "İ", и если у нее нет точки, мы не добавляем "ı" = > ' Я'.
Но более важным, чем эти, люди могут уделять много внимания, и у нас есть возможность неопределенной творческой ошибки.
Если ваш код правильно работает в Турции, он, вероятно, будет работать где угодно.
Так называемый "тест Турции" связан с интернационализацией программного обеспечения. Одна из проблем глобализации/интернационализации заключается в том, что форматы даты и времени в разных культурах могут различаться на многих уровнях (день/месяц/год, разделитель дат и т.д.).
Кроме того, у Турции есть специальные правила капитализации, которые могут привести к проблемам. Например, турецкий символ "i" является общей проблемой для многих программ, которые используют его неправильно.
Ссылка, предоставленная @Luixv, дает исчерпывающее описание проблемы.
Резюме состоит в том, что если вы собираетесь проверить свой код только на одном неанглийском языке, проверьте его на турецком языке.
Это связано с тем, что у турецкого языка есть случаи большинства случаев с крайностями, с которыми вы, вероятно, столкнетесь с локализацией, включая "необычные" строки формата и нестандартные символы (например, различные правила капитализации для i).
У Джеффа Этвуда есть статья блога на том же самом, что и первое место, на которое я столкнулся сам. в резюме попытки запустить ваше приложение под турецким Locale - отличный тест вашего I18n.
here jeffs статья