Локаль — это набор параметров, включая набор символов, язык пользователя, страну, часовой пояс, а также другие предустановки, которые пользователь ожидает видеть в пользовательском интерфейсе. В операционных системах Linux в качестве локалей по-умолчанию используются кодировки Unicode, что, несомненно, очень удобно и универсально. Но иногда возникают ситуации, что отдельно взятое приложение необходимо запустить с кодировкой CP1251 (например win32-программу через Wine). О том как это сделать будет рассказано в этой статье.
Все нижеописанное актуально для дистрибутивов Ubuntu, а также будет работать во всех остальных основанных на Debian и RedHat системах. Итак, для начала нам стоит выяснить какие локали уже установлены у вас в системе, для этого введите команду:
locale -a
Она даст вывод всех установленных локалей. Если в этом списке помимо различных вариантов UTF уже присутствует ru_RU.CP1251, то этап генерации локали вы можете пропустить и перейти сразу к команде запуска приложения. Если же ru_RU.CP1251 вы там не обнаружили, то придется ее сгенерировать. В Ubuntu для этого надо отредактировать файл /var/lib/locales/supported.d/ru:
sudo nano /var/lib/locales/supported.d/ru
В других дистрибутивах файл русской локали может находиться по другим путям.
В этот файл последней строкой добавьте:
ru_RU.CP1251 CP1251
Сохраните изменения и приступайте к генерации локалей командой:
sudo locale-gen
Generation complete.
Теперь любое приложение вы можете запустить в windows-кодировке CP1251. Для этого перед командой запуска приложения достаточно добавить LC_ALL=ru_RU.CP1251
, например:
LC_ALL=ru_RU.CP1251 nano
Что запустит текстовый редактор nano в windows-кодировке.
Чтобы запустить таким образом windows-приложение через эмулятор Wine, нужно будет выполнить команду такого типа:
env LC_ALL=ru_RU.CP1251 wine "C:\Program Files\1Cv77\BIN\1cv7.exe"
Если подобный способ запуска программы решает проблемы кодировки, то можете смело создавать кнопку быстрого запуска, куда будет достаточно просто поместить вашу команду.