Решения тех проблем, с которым мне приходилось сталкиваться.

понедельник, 7 мая 2007 г.

язык интерфейса и локализация

Иногда хочется использовать англоязычный интерфейс для программ, сохраняя при этом национальные настройки локали (дата, время, валюта и т.д.). Языковые настройки устанавливаются в linux через переменные окружения:


  • LANG. Определяет собственно локаль (национальные особенности в представлении определенного вида данных). Пользуется наименьшим приоритетом, может быть переопределена другими переменными (см. далле);

  • LANGUAGE. Предпочитаемые языки интерфейса программ в порядке убывания. Не входит в POSIX стандарт, поддерживается программами, использующими GNU gettext;

  • Группа переменных LC_*. Позволяет установить раздельные языковые предпочтения для каждого типа локализуемой информации. Отдельно стоит обратить внимание на переменную LC_ALL. Если она определена, то она перекрывает все остальные настройки, т.е. имеет наивысший приоритет. Обычно, эту переменную используют в целях отладки, когда нужно быстро (временно) переключить все настройки локали на другой язык.


Таким образом, чтобы иметь русскую дату/время и английский интерфейс нужно установить две переменные окружения:

LANG=ru_RU.UTF-8
LANGUAGE=en_GB:en

Но не все программы "реагируют" на LANGUAGE. В частности firefox и thunderbird в таком случае продолжают использовать LC_MESSAGES или LANG (в указанном приоритете).
Т.е. более правильно будет сделать даже так:

LANG=ru_RU.UTF-8
LC_MESSAGES=en_GB

Мне пока неизвестны программы, которые "не понимают" LC_MESSAGES, но понимают LANGUAGE.

Комментариев нет: