Я ищу стандартизованный способ хранения многоязычного контента для веб-приложения. До сих пор я использовал свои собственные функции «translate ()», которые считывали данные из файла или таблицы словарей в базе данных. Однако сохранение актуальности словарей в таблице базы данных очень громоздко, если вы работаете с разными копиями веб-приложения.
Мне нравится gettext, потому что для него доступно множество инструментов. Однако я разрабатываю приложения для разных платформ. Я совершенно не желаю иметь дело с дрянным способом setlocale () и супругов, а именно с десятками разных вариаций языковой строки, отличающихся от системы к системе, которую вы должны обеспечить, чтобы заставить ее работать. Никогда. У меня есть набор языков – скажем de, en и es – и я хочу загрузить соответствующий словарь и работать с _ (), не касаясь одновременно setlocale () или bindtexdomain ().
Возможно ли это с помощью gettext? Или кто-то знает еще одно простое, маленькое, быстрое (!) Решение i18n для PHP, которое может работать с файлами .po / .mo, желательно без необходимости расширения PHP?
Zend_Translate работает с ним
http://framework.zend.com/manual/en/zend.translate.adapter.html#zend.translate.adapter.gettext
Этот метод должен работать даже с нестандартными локалями:
$locale = 'someWeirdLocale'; putenv('LC_MESSAGES=' . $locale); bindtextdomain('domain', './locale'); textdomain('domain');
Наслаждайтесь!