I18n Валидации

Think Global, Act Local

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

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

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

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

Ответы

Ответ 1

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

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

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

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

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

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

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

Ответ 2

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

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

Ответ 4

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