i18n / gettext: конфигурация setlocale в веб-приложениях

Поэтому я начал возиться с gettext но я все еще озадачен некоторыми вещами, было бы здорово, если бы кто-нибудь мог помочь мне и заполнить пробелы для меня.

  1. Обычно большинство реализаций просто вызывают setlocale на основе параметра языка. Есть ли какой-нибудь случай, когда мне нужно использовать putenv , возможно, для краевых случаев в настройках Windows?

  2. Язык по умолчанию для моей инфраструктуры php – английский, UTF-8 – поэтому я установил LC_ALL в en_US.utf-8 , поскольку en_US – ISO-8859-1 / Latin1, и, очевидно, это не так удобно, как UTF-8?

  3. Есть ли какие-либо ошибки, о которых я должен знать после вызова setlocale(LC_ALL, 'en_US.utf-8') ? Поскольку он изменяет все из них: LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES – мне придется обновлять любые скрипты, например, генерирующие время или что-то в этом роде?

  4. Скажем, например, у недавно настроенного сервера не было es_ES.utf-8 , я знаю, как создать локаль, но если он не был доступен, я должен предоставить резервные копии в массиве? Было бы здорово, если бы кто-то мог представить практический пример, например:

    setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') )

    Есть ли какой-то веб-сайт, который предлагает такие примеры, или люди обычно придумывают порядок приоритетов?

  5. Я где-то читал, что обычная структура locale или папки i18n – это что-то вроде ниже.

    Действительно ли структура имеет значение? Кажется, что все это происходит, когда вы выполняете bindtextdomain('messages', 'locale') он рекурсивно ищет этот каталог для messages.mo , я, возможно, не замечаю, но это может привести к учету каталогов.

Насколько строго я должен быть со структурой?

 locale en_US LC_MESSAGES messages.po es_ES LC_MESSAGES messages.po действия locale en_US LC_MESSAGES messages.po es_ES LC_MESSAGES messages.po 

6. Должен ли я даже пытаться проверить, действительно ли система поддерживает локаль или нет? Например, если на сервере не было языкового стандарта, и я попытался установить его с помощью setlocale он не выходил бы из строя или что-то еще, он просто молчал бы пропустить его.

Solutions Collecting From Web of "i18n / gettext: конфигурация setlocale в веб-приложениях"

Это не квалифицированный ответ на ваш вопрос, и я не говорю, что использование gettext плохое – я никогда не работал с ним, чтобы иметь по-настоящему глубокое мнение об этом, но я решил оставить gettext в одиночку из-за его сложности и массивной непредсказуемости на разных платформах с разными локалями. Я разместил вопрос, ищущий альтернативы здесь, и, хотя вокруг не так много, пакет Zend_translate, похоже, стоит посмотреть. Я еще не добрался до него.

Если вы работаете с gettext, обязательно ознакомьтесь с примечаниями, внесенными пользователем вручную вручную в Gettext .