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