Zend Framework имеет отличный компонент под названием Zend_Locale. Есть все мелкие детали в правильном разборе языка и локали, отчасти потому, что он был взломан в HTTP Accept-Language header .
В Zend Framework locale docs написано:
Примечание: знать, что не существует
только локали с 2 символами
люди думают. Также есть языки
и регионы, которые не только
сокращено до 2 символов.
Для этого вы не должны лишать
регион и язык сами, но используйте
Zend_Locale, когда вы хотите раздеться
язык или регион из локали
строка. В противном случае вы могли бы иметь
неожиданное поведение в вашем коде
когда ты делаешь это сам.
Совершенная. За исключением того, что я тестировал различные языковые переводы. Предполагая, что вы просматриваете с помощью Firefox, измените свои настройки и добавите несколько профилей language_region ... измените порядок по умолчанию. Вы увидите, что Zend тянет только по умолчанию. Документы даже говорят так:
Если пользователь предоставляет более одного
локаль в своем браузере, Zend_Locale
будет использовать первую найденную локаль. Если
пользователь не предоставляет язык или
скрипт вызывается из
командная строка автоматическая локаль
«среда» будет автоматически
Использовано и возвращено.
Это прискорбно. Если у вас есть 5 определенных языков, вы хотите просмотреть все локали, определенные пользователем в браузере, и использовать язык, который соответствует ...
Итак, мой вопрос: какой подход вы бы использовали, чтобы проанализировать полный список и вывести какие-либо совпадения?
UPDATE
Есть метод Zend_Locale :: getBrowser (), который возвращает полный список. Большой! Не уверен, почему Zend_Translate только тянет первый. Я вернусь после проверки того, как это работает ... возможно, потребуется собрать массив языков, для которых у вас есть переводы, и сравнить его с результатами getBrowser () и получить первое совпадение.
UPDATE2
Я реализовал решение, но оно все еще хакерское, потому что Zend_Translate и Zend_Locale не маленькие классы. Интернационализация - большая тема, очевидно. Есть немало интересного для исследования.
Но, по сути, все сводится к проверке соответствия каждого языка списку предпочтений браузера.