RusXMMS
RusXMMS is On The Fly Recoding Project















SourceForge Logo

Обратите внимание

  1. Гораздо полезнее о проблемах сообщать мне, чем кричать по разным форумам и майлинг листам, что ни фига не работает.
  2. Если вы хотите, чтобы какие-либо из представленных здесь патчей вошли в основную ветку соответсвующего проекта, - пинайте авторов. Это так же относится к включению LibRCC и LibRCD в различные дистрибутивы Linuxа.
  3. Большинство представленных патчей модифицируют configure.in и Makefile.am файлы, поэтому при сборке следует проводить полную реконфигурацию autoconf: aclocal; automake; autoconf.
  4. Кодировка отображения в большинстве случаев должна соответствовать текущей локали (LC_CTYPE). Если ее выставить от балды, - вместо символов будут закорючки.

Настройки

  • Язык. В Библиотеку встроенна поддержка русского, и большинства восточно-европейских языков. Дополнительные языки могут быть сконфигурированы в "/etc/rcc.xml" или в пользовательском конфигурационном файле: "~.rcc/rcc.xml". По умолчанию язык определяется настройками локали.
  • Текущие кодировки для всех классов. RusXMMS поддерживает следующий набор классов:
    • Кодировка ID3 заголовков
    • Кодировка ID3 v.2 заголовков. Используется при редактирование ID3 тагов, и позволяет сохранять ID3 v.2 тайтлы в юникоде. По умолчанию совпадает c ID3.
    • Кодировка плайлистов. По умолчанию совпадает с ID3.
    • Кодировка имен файлов в плай-листах. По умолчанию используется кодировка файловой системы.
    • Кодировка файловой системы. По умолчанию используется кодировка указанная в локали.
    • Кодировка используемая для отображения. По умолчанию используется кодировка локали.
    Следующая процедура используется для определения кодировки по умолчанию:
    • Если установлена юникодная кодировка для английского языка, - она будет использоваться по умолчанию для всех остальных языков.
    • Если указан родительский класс, будет использована кодировка этого класса.
    • Если в локали задана юникодная кодировка, или текущий язык совпадает с языком локали, - то будет использована кодировка заданная в локали.
    • В остальных случая будет использована первая не запрещенная кодировка из списка.
  • Алгоритм автоопределения кодировки. По умолчанию используется первый из доступных алгоритмов.
  • Опция регулирующая кэширование перекодировок (для поддержки многоязычности):
    • Off: Не использовать кэш перекодировок.
    • On: Искать в кэше перекодировки для заданной строки.
    • ReLearn: Кэшировать все выполняемые перекодировки.
    • Learn: Если в кэше есть перекодировка для заданной строки - использовать ее. В противном случае, перекодировать строку и добавить в кэш.
  • Autodetect File Names: Опция, включающая режим поиска кодировки файлов.
  • Autoengine Set Current Encoding: Опция указывает, что движок авто-определения кодировки будет выставлять текущую кодировку.
  • Autodetect Language: Опция включает режим авто-определения языка. Происходит это довольно медленно.
  • Translate Text: Опция включает режим перевода текста. Требует наличия работающего интернет соединения. Понятное дело работает не быстро. Возможно несколько режимов работы. В "Full" моде библиотека будет пытаться перевести все строк на язык указанный в локали. В случае невозможности перевода на язык локали, строка будет переведена на английский. Так же доступны моды, в которых не будет производится перевод между родственными языками. Языки считаются родственными если в них могут быть использованы слова из друг-друга. Пример: украинский и русский язык. Английский язык считается родственным всем остальным. Последняя мода "Translate to English" позволяет переводить все заголовки на английский язык, в не зависимости от настроек локали.
  • Timeout: Дает возможность ограничить максимальное время перекодировки. Данная опция предназначена чтобы ограничить время, в течение которого ожидается перевод от онлайн-сервисов. Если перевод не выполнен за отведенное время, строка будет возвращена приложению не переведенная, однако, она так же будет добавлена в очередь для перевода. Когда перевод будет выполнен, - он строка вместе с переводом будут закэширован в базе DB4, и при последующих запросах на перевод данной строки возвращенны приложению.
  • В RusXMMS еще дополнительно можно указать фонт, используемый для отображения надписей в затененной (shade) форме плайлиста.


Использование много-язычных плайлистов

Есть две возможности использовать много-язычных плайлистов. Во-первых авто-опеределение языка. В этом необходимо использовать:
  • Юникодную (UTF-8) локаль.
  • LibRCC собранный с поддержкой Aspell.
  • Aspell установленный вместе со словариками для всех используемых языков.
Однако, данный метод довольно рессурсоемок, и в случае преобладания не-словарных слов может ошибаться. Другая возможность использовать кэш перекодировок. Для этого требуется:
  • Установить юникодную (UTF-8) локаль
  • Перед загрузкой новых файлов в настройках кэширования выберать "Learn" моду.
  • После этого при включенном кэширование (Мода "On" или "Learn") данные заголовки будут правильно отображаться при любом активном языке.


Перевод

Библиотека предоставляет возможность переводить строки с помощью библиотеки libtranslate. Для этого библиотека должна быть скомпилирана с поддержкой LibTranslate (В идеальном варианте неплохо бы на LibTranslate наложить патч, доступный на страницах проекта, добовляющий возможность ограничивать время перевода). Libtranslate использует для перевода онлайн сервисы от Googla, Yahoo и т.д., поэтому активное интернет соединение так-же необходимо. Чтобы не тормозить приложения использующие перевод сверх-всякой меры, есть возможность ограничить максимальное время перевода. В этом случае, если libtranslate не успела перевести текст за отведенный промежуток времени, пользователю будет возвращена непереведенная строка. Строка-же будет переведена в фоновом режиме и добавлена в кэш перевода, и при последующих обращения возвращена пользователю.

Прочее

  • В Wiki Fantoo Linux есть неплохое описание, как настроить русский язык в GTK1 приложениях, при установленной юникодной локали. Почитать можно тут.