Исправление кракозябров в региональной локали (en_DE, ru_UA...)
Я с одного немецкого форума украл гениальное решение кракозябров для региональных кодировок типа en_DE и ru_UA (многие репаки и старые игры типа NWN2 и VTMB сыпят кракозябрами, если вы используете эти региональные кодировки).
Рассматривать буду своё решение для кодировки ru_UA.
Первым делом, нужно сгенерировать локаль ru_RU
/etc/locale.gen
ru_RU.UTF-8 UTF-8
# locale-gen
Далее САМОЕ ИНТЕРЕСНОЕ: export LANG=ru_RU.UTF-8 даёт лишь временный эффект, вписывание LANG в locale.conf не даёт ощутимых результатов. И тут я прочитал интересное решение.
Берём делаем:
$ export LANG=ru_RU.UTF-8
$ locale
Получается вот такой вывод:
LANG=ru_RU.UTF-8
LC_CTYPE=ru_RU.UTF-8
LC_NUMERIC=ru_UA.UTF-8
LC_TIME=ru_UA.UTF-8
LC_COLLATE=ru_RU.UTF-8
LC_MONETARY=ru_UA.UTF-8
LC_MESSAGES=ru_RU.UTF-8
LC_PAPER=ru_UA.UTF-8
LC_NAME=ru_UA.UTF-8
LC_ADDRESS=ru_UA.UTF-8
LC_TELEPHONE=ru_UA.UTF-8
LC_MEASUREMENT=ru_UA.UTF-8
LC_IDENTIFICATION=ru_UA.UTF-8
LC_ALL=
Что здесь примечательно:
- в сгенерированный выхлоп добавились значения сразу нескольких полей;
- сгенерированы дополнительные поля, которые отсутствовали в locale.conf;
- кодировка всех сообщений принудительно задана как ru_RU, в то время как региональные стандарты ru_UA не пострадали.
Теперь САМОЕ ВАЖНОЕ: Заменяем содержимое /etc/locale.conf на этот сгенерированный выхлоп программы locale.
Перезагружаемся.
Кому это может быть полезно?
- это хороший воркэраунд для русских кодировок республик бывшего СССР;
- может быть полезно для английских кодировок стран Европы и Америки.
Примечание: Ваше DE может затирать LANG=
, потому по этому вопросу нужно разбираться с конкретным DE. Например, для KDE нужно сделать env-скрипт с экспортом LANG.
Теперь в инсталляторах репаков и старых играх типа NWN2 и VTMB все надписи на русском.
Приятной игры!