Vim Cookbook/cp1251encodings

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

Перейти до: навігація, пошук


Як змусити gVim правильно відображати українськомовні довідку та меню

Оскільки редактор vim з самого початку створювався для Unix-подібних систем, то для локалізації він використовує кодування koi-8u, яке по замовчуванні некоректно відображається в системах Windows. Для вирішення цієї проблеми ви просто можете перекодувати перекладені файли локалізації в кодування cp1251.

Зауваження в версії gvim64 проблема частково вирішена, локалізація меню виконана в кодуванні cp1251, проте допомога все ще незрозумілими гачками. Для тих хто не може чи не хоче міняти свою версію на останню публікую цей рецетп. Зауважу, що він є можливо надлишковим тому відкритий для ідей.

Отже попередні умови

Необхідне програмне забезпечення: Cygwin з пакетом gettext та gettext-devel, а також треба встановити бібліотеку ICU(International Components for Unicode) Перше можна отримати тут: http://www.cygwin.com/, друге тут http://www.ibm.com/software/globalization/icu/downloads.jsp. Компілятор c++, якщо ви бажаєте самі побудувати бібліотеку ICU. На сайті є попередньо побудована двійкова версія бібліотеки. Детальніше про їх встановлення дивіться на їхніх сторінках.

1. На всякий випадок збережіть файли ВАШ_ШЛЯХ_ДО_ВСТАНОВЛЕНОГО_VIM\vim64\lang\uk\LC_MESSAGES\vim.mo (в мене наприклад D:\Vim\vim64\lang\uk\LC_MESSAGES\vim.mo )та ВАШ_ШЛЯХ_ДО_ВСТАНОВЛЕНОГО_VIM\vim64\lang\menu_uk_ua.koi8-u.vim десь в надійному місці, щоб у випадку їх пошкодження мож було їх відновити.

Для локалізації повідомлень Vim використовує бібліотеку gettext, портована версія якої входить в пакет Cygwin. З цього пакету нам потрібно утиліти msgfmt.exe та msgunfmt.exe.

2. Декомпіляція двійкового vim.mo з основними повідомлення в .po формат. Утиліта msgunfmt.exe саме для цього. Рядок запуску: msgunfmt.exe vim.mo -o vim.po (vim.mo ви повинні перемістити в папку з msgunfmt.exe, найпростіше скопіювати його до домашньої папки встановленого Cygwin в мене це наприклад 'D:\cygwin\home\Administrator').

3. Перекодовуємо текстовий vim.po в кодування cp1251, для цього в пакеті gettext нібито є msgconv.exe, але змусити перекодовувати я його не зміг, ось рядок виклику: msgconv.exe vim.po -t CP1251 -o vom1251.po
тому для цього я використав утиліту з айбіемівської бібліотеки ICU uconv.exe рядок запуску: uconv.exe -f koi8-u vim.po -t cp1251 -o vim1251.po ,де vim.po це файл отриманий на попередньому етапі koi8-u та vim1251.po це результуючий файл повідомлень в кодуванні cp1251. В результаті отримаємо файл повідомлень в кодуванні 1251, так само чинимо з переводом меню, тільки без кроку декомпіляції(Для версії 6.4 цього робити не потрібно).

4. В vim1251.po міняємо в рядку (він на самому початку файлу) "Content-Type: text/plain; charset=koi8-u\n" на "Content-Type: text/plain; charset=cp1251\n"

5. Компляція назад в двійковий формат(Найпростіше знову скопіювати vim1251.po в домашню папку Cygwin ) msgfmt.exe vim1251.po -o vim.mo

6. заміняємо старий vim.mo за шляхом ВАШ_ШЛЯХ_ДО_ВСТАНОВЛЕНОГО_VIM\vim64\lang\uk\LC_MESSAGES\vim.mo на перекодований vim.mo 7. Запускаємо gvim.exe і насолоджуємося результатом.

x. Для старіших версій gVim потрібно повторити кроки 2,3,4 для файлу menu_uk_ua.koi8-u.vim (за шляхом ВАШ_ШЛЯХ_ДО_ВСТАНОВЛЕНОГО_VIM\vim64\lang\) , замінивши відповідно назви файлів, результуючий файл потрібно назвати menu_uk_ua.cp1251.vim, щоб Vim його правильно розпізнав.

Особисті інструменти