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
Его все еще в Альфе, но охватывает довольно много стран. Возможно, стоит пересмотреть?
Ответ 3
Википедия собирает информацию о номерных знаках, по странам. Аналогично для почтовых кодов.
Ответ 4
Ну, я думаю, что все, что требуется, это один программист из этой страны и пару дней для повторного поиска и написания валидаций.. ничего особенного.. + есть тонны информации в википедии
Ответ 5
Возможно, из http://www.geonames.org/
у них тоже замечательная апи.