Last modified: January 26, 2023

This page is about how to make KMid support Russian karaoke and avaialable only in Russian.

Русификация и интернационализация KMid

Предуведомление

Инструкции по пересборке KMid подразумевают, что Вы знаете, о чем идет речь, и имеете некоторый опыт пересборки софта для Linux вообще.

Предыстория

Версия KMid с караоке на русском, до и после улучшения Я начал эту страницу, когда пара недель поисков и выспрашиваний насчет нормального Караоке-плеера для Linux ничего не дали. Тогда я решил разобраться наименее плохим доступным плеером - KMid. Несмотря на отстутствие некоторых жизненно важных для караоке функций (например, регулировки тональности и удобной смены темпа), это вполне подходящая для использования программа. Первое время у меня ушло на то, чтобы заставить KMid играть через синтезатор ALSA. Освещение этой проблемы выходит за рамки повествования, особенно в свете того, что свежие сборки KMid (например, в ASP 9) играют через ALSA без вопросов. Второй проблемой оказалось воспроизведение караоке на русском. После безуспешной битвы с KMid я отправился на KDE Bugzilla. Вот что я там нашел:

[Bug 33152] Doesn't show the lyrics of karaoke files encoded in cp-1251

http://bugs.kde.org/show_bug.cgi?id=33152

Пришлось браться за исходники. Результат обследования вылился вот в этот багрепорт:

[Bug 58083] New: KMid doesn't support international characters (AT ALL; I've checked source code and there are errors)

http://bugs.kde.org/show_bug.cgi?id=58083
Investigating how to make KMid playing Russian karaoke files, I've found that it doesn't support any non-ASCII characters. Not in lyrics nor in comments nor in file names nor in collection editor!!!!! Even if system locale is set to e.g. KOI8R, I cannot display any Cyrillic characters!
Investigating sources, I've found that the problem is because when KMid passes lyrics or filenames to GUI, it simply passes it as char* instead of calling QString::fromLocal8bit().
Unfortunately, I don't know enough about making patches and I don't know submit a fix myself :( It took me about 2 hours just to make it working for myself. However, any experienced programmer could make a fix in about half an hour.
It would be also great if someone added an option to select charset of karaoke lyrics manually from list because all karaoke files are in 8bit-ASCII, not UTF.

При отсутствии какой-либо реакции на этот репорт, пришлось взяться за лом самому, и написать "быстрый хак" - Хак для KMid - версия 1. Я не взялся делать полный фикс проблемы по упомянутым выше (в багрепорте) причине - отсутствия опыта работы с QT и свободного времени. Тем не менее, через пару часов экспериментов, русские буквы в KMid таки появились.

Хак для KMid (версия 1)

Это хак для KMid 3.1.1, позволяющий использовать караоке в кодировке Windows-1251 под Linux. Рассчитан на локаль KOI8-R, но может использоваться и под другой локалью (см. ниже). Хак очень примитивный и "частичный", но работает. Поддерживает русификацию только субтитров.

Установка

1) Скачайте исходники пакета kdemultimedia-3.1.1. Должна подходить и другая близкая версия (KDE 3.0-3.1.2, например).

Найти исходники можно по ссылкам с http://www.kde.org.

2) Распакуйте исходники kdemultimedia. Примените патч к kdisptext.cpp (patch -i kmid-cp1251-koi8r-hack-1.patch). В каталоге исходников запустите ./configure с нужными параметрами, потом в подкаталоге kmid - make. Потом:
a) ./kmid Программа слинкуется и запустится. Закройте ее. Потом из подкаталога kmid/.libs можно вытащить бинарник kmid (или lt-kmid) и libkmidpart.so.
б) Можно просто сделать make install (если Вы понимаете, что это такое и чем это грозит :)))

Настройка

В хакнутой версии KMid следует установить в настройках моноширинный шрифт с поддержной русского (типа Courier).

Подсказка: если ваша локаль не KOI8-R, а другая русская, Вы все равно можете запустить этот хакнутый KMid, не меняя системных настроек:
$ LANG="ru_RU.KOI8-R" /path/to/hacked/kmid

Посмотреть (пробовать не надо):

Get kmid-cp1251-koi8r-hack-1.patch kmid-cp1251-koi8r-hack-1.patch (4 Kb) [7148 d/l]

Нормальный русский патч (версия 2)

Добавлено: 23/07/2003

Этот патч был сделан после появления патча от Артема Астафьева <ace at insurer dot com ua>:

recodes lyrics from cp1251 to display properly
Here is a patch for kdemultimedia-3.1.1. It works for me fine. It may work for other versions, even you can try to modify sources by hands (only 2 additional lines and 1 changed).

По этому патчу я сориентировался, как можно сделать перекодировку по умолчанию, чтобы исправить проблемы с именами файлов.

Второе, я применил немножко подросшее знание QT, чтобы сделать кодек, независимый от локали, и нашел, как избавится от необходимости использовать моноширинный шрифт.

Этот патч достаточно хорош для "официальной русской сборки KMid".

Посмотреть (пробовать тоже не надо):

Get kmid-russian-patch-2.patch kmid-russian-patch-2.patch (4 Kb) [6226 d/l]

Окончательная Интернационализация KMid (версия 3)

Добавлено: 24/07/2003

Окончательный (в смысле того, что решающий все поставленные задачи) и рулезный патч. На главное окно программы добавлен выпадающий список всех поддерживаемых кодировок, позволяющий переключать кодировку субтитров "на лету". Таким образом, этот патч является не только русификацией, но и 100% интернационализацией.

Кстати, пока делал патч, получил немало удовольствия и знаний по QT ;)

Скачать, поставить, заценить:

Get kmid-international-2.patch kmid-international-2.patch (10 Kb) [6014 d/l] - Мой патч для KDE 3.1.x.

Get kmid-int2patch-20040406.tar.bz2 kmid-int2patch-20040406.tar.bz2 (100 Kb) [6262 d/l] - Бинарники (lt-kmid, libkmidpart.so), откомпилированные под ASP Linux 9.2/KDE 3.2.1
Для установки рекомендую распаковать файлы из архива в ~/bin, или положить их в отдельный каталог под вашим домашним или /usr/local.

Get kmid-int2-Galin-Chudnovsky-KDE3.2.2-20040504.patch.bz2 kmid-int2-Galin-Chudnovsky-KDE3.2.2-20040504.patch.bz2 (16 Kb) [6726 d/l] - Патч для KDE 3.2.2, присланный Алексеем Чудновским.

Go to Start page
© Sergey A. Galin, 1998-2024http://sageshome.net/oss/KMid-Russian.ph...>>
Time: 0.014s · KMid: 20645/21502 Total: 2670471/2950415