LINUX.ORG.RU

Исправление кракозябров в региональной локали (en_DE, ru_UA...)

 ,


1

1

Я с одного немецкого форума украл гениальное решение кракозябров для региональных кодировок типа 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 все надписи на русском.

Приятной игры!



Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 6)
Ответ на: комментарий от grem

Это для тех кто юзает английский язык с немецкими региональными стандартами.

Либо как я: Юзаю русский язык с украинскими.

Set440
() автор топика
Ответ на: комментарий от grem

Хотя, если используется de_DE, то можно просто сгенерировать локаль en_US и прокинуть LANG в Wine

Set440
() автор топика
Ответ на: комментарий от Set440

Да, похоже, что, например, когда хочется отображать числа в другом региональном стандарте или сообщения об ошибках. В таких случаях и создают уже готовые en_DE и прочие, насколько я понял.

grem ★★★★★
()

Я тебе по секрету скажу, эти переменные можно применять только к конкретной программе и не менять системную локаль:

LANG=ru_RU.UTF-8 Wow.exe
MoldAndLimeHoney
()
Ответ на: комментарий от MoldAndLimeHoney

И вписывать эту переменную во все ярлыки руками. Ну нафиг...

И зачем морочиться с ярлыками, если en_DE — это английский, а ru_UA — русский.

Тоесть, в этом случае, то и другое международные языки с местными стандартами. Просто локаль откалибровать, и не надо потом вписывать en_US / ru_RU во все ярлыки, или делать экспорт в консоли

Set440
() автор топика
Последнее исправление: Set440 (всего исправлений: 1)
Ответ на: комментарий от grem

Локаль и раскладка в DE не связаны напрямую, емнип.

Всё так. Но кривых поделий, игнорирующих это, достаточно. А еще есть просто ненативные вещи, которые видя локаль, незамедлительно язык переключают куда-нибудь не туда.

pekmop1024 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.