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 його правильно розпізнав.

