Я работаю над многоязычным проектом с Zend Framework (немецкий и английский), где у меня есть небольшая форма для заказа продукта. Пользователь должен иметь возможность:
В настоящее время я использую Zend_Locale :: findLocale () для получения локали пользователя. В настройках моего браузера я получаю de_CH, и это хорошо работает. Код языка достаточен для обработки Zend_Translate, но Zend_Currency требуется дополнительная информация. Я думаю, что нет решения получить полную локаль с кодом страны от каждого возможного пользователя. Мой вопрос: как вы справляетесь с такими ситуациями? Вы проверяете _initLocale () своего начального файла, если код страны отсутствует, и используете ли код страны по умолчанию? Существуют ли какие-либо методы Zend Framework для этого?
Неподдерживаемый язык Если язык пользователя «fr», я хотел бы использовать язык по умолчанию, потому что наш веб-сайт не поддерживает французский. Есть ли лучшая возможность, чем добавить массив белого списка в бутстрапе? Например, метод из Zend_Translate?
Неподдерживаемая валюта Что делать, если поддерживается язык пользователя, но не его валюта? Следует ли мне изменить языковой стандарт в начальной загрузке или мне следует сделать копию языкового стандарта и изменить его на Zend_Currency?
Основная проблема Я думаю, что моя главная проблема в том, что я не знаю, как справиться со всеми этими разными проблемами локали. Я предпочитаю проверять языковой стандарт, установленный в _initLocale () начальной загрузки, поэтому я могу быть уверен, что могу поддерживать его язык и валюту.
Спасибо за ваши советы.
С уважением, Нико
Редакция 1 Я сделал себе еще несколько мыслей о способах решения этих проблем. Что вы думаете об этом подходе?
Zend_Locale ()
: фильтрует все короткие локали (без кода страны) и использует белый список с языками, которые поддерживает ваше приложение (только код языка). Если совпадений нет, используйте значение по умолчанию, заданное вашим приложением. Zend_Translate
: начните с кода языка из локали. Но если пользователь меняет предпочтительный язык, оставьте языковой стандарт как есть (возможно, нет подходящего языкового стандарта на основе нового кода языка и старого кода страны) и просто измените код языка в Zend_Translate
. Zend_Currency
: использовать локаль по умолчанию. Если пользователь меняет предпочтительную валюту, просто измените валюту, а не регион. Таким образом, форматирование останется на основе старого языкового стандарта, потому что изменение валюты не означает, что пользователь также хочет изменить свой языковой стандарт. Будет ли этот подход приемлемым? На шаге 1 возникает проблема, если языковой стандарт обозревателя установлен следующим образом:
Возможно, приложение поддерживает немецкий язык, но поскольку это короткий языковой стандарт, приложение будет использовать вместо него en_US. Но я не знаю, какое решение решило бы эту проблему, потому что я не могу «обновить» короткий языковой стандарт до полного языкового стандарта.