i18n Валидации

Думайте глобально, действуйте на местном уровне

Это то, что они говорят вам, однако на протяжении всего моего времени, как я разработчик, я всегда видел крупные компании, такие как Google, Microsoft, Oracle, а также делает проверки локализованно: они знают, в какой стране я, поэтому они попытаются подтвердить мой номер телефона, почтовый индекс и другие данные, такие как номера банковских счетов, с надлежащими методами проверки для моей страны. Вчера я подписался на проверку Google, и они даже показали мне некоторые примеры форматов почтовых индексов в моей стране!

Поэтому мой вопрос: как они это делают? Я знаю, что у них есть тысячи сотрудников, но мне трудно поверить, что все они должны были изобрести колодец. Есть множество методов валидации для США, но как насчет остального мира? Я еще не видел ни одной доступной библиотеки с открытым исходным кодом (кроме очень неполной и устаревшей попытки PEAR ) для проведения валидации по различным общим аспектам таких стран, как:

  • Гражданский идентификатор
  • ID налога
  • SSN (номер социального страхования)
  • BBAN (базовый номер банковского счета)
  • Факс, телефон и мобильные номера
  • Почтовые / Почтовые коды
  • Номерные знаки
  • Серийные номера в банкноте
  • и так далее…

Есть ли хорошо скрытый ресурс, о котором я не знаю?

Существует огромная разница между простой и полной проверкой. Часто невозможно стандартизировать валидацию полностью через локали, вот несколько примеров:

  • Номера CivilID / SSN и т. Д. Могут разрешать / запрещать заменяющие значения (системные), внешние значения, исторические значения и т. Д. У нас есть две различные системы валидации в одном из наших приложений для одного и того же поля, в зависимости от контекста, и другие ИТ-системы могут иметь другие системы валидации.

  • Для проверки почтового индекса может потребоваться доступ к списку допустимых значений, для чего вам необходимо подписаться. Во многих странах эта подписка не автоматизирована, и из-за правил авторского права нет необходимости распространять ее.

  • Аналогичные проблемы имеют номера телефонов. Вы разрешаете дорогие номера, номера мобильных телефонов? Как вы их обнаруживаете?

Вы можете утверждать, что в большинстве случаев возможна простая проверка, но для простой проверки часто проще использовать сопоставление шаблонов и позволить локальному отделу на каждом рынке определять правильные шаблоны.

Также существует проблема с контрактом на обслуживание программного обеспечения. Если вы покупаете программное обеспечение и хотите его использовать в течение 5 лет, важно, чтобы вы изменили правила проверки, если что-то изменится. У меня было 4 изменения системы номеров телефонов в моей стране, которые повлияли на простую проверку, например «количество цифр» и «что может означать первая цифра».

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

PEAR один не так уж плох. Например, валидатор для Новой Зеландии имеет все виды полезных вещей, таких как почтовые коды, номера IRD, номера телефонов, номера банковских счетов http://pear.php.net/manual/en/package.validate.validate-nz.php

Его все еще в Альфе, но охватывает довольно много стран. Может быть стоит пересмотреть?

Википедия собирает информацию о номерных знаках по странам. Аналогично для почтовых индексов .

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

Возможно, из http://www.geonames.org/ у них тоже замечательная апи