RusXMMS is On The Fly Recoding Project

SourceForge Logo

Important Notes

  1. It have much more sense to report problems here, then just claiming nothing is working on miscellaneous forums and mailing lists.
  2. If you want patches presented here to be included in the correspondent project trees, please, ask authors. The same thing should be concerned about inclusion of LibRCC and LibRCD in the various Linux distributions.
  3. Most of the patches will modify and files, so the full autoconfiguration should be performed. You should run "aclocal; automake; autoconf" prior to using configure script.
  4. Output encoding normally must correspond to current "LC_CTYPE" locale. If you would set it to another value without really knowing what are you doing, it can raise problems.


  • Current Language. The English, Russian, Ukrainian, Belarussian, Bulgarian, Czech, Estonian, Croatian, Hungarian, Lithuanian, Latvian, Polish, Slovak, Slovenian and Chinese are embeded in the library. To get other languages you should configure them in the "/etc/rcc.xml" or in user-defined configuration "~.rcc/rcc.xml". By default the language will be determined using LC_CTYPE environmental variable
  • Current encoding for supported encoding classes. For RusXMMS the following classes are defined:
    • ID3 Encoding
    • ID3 v.2 Encoding (uses ID3 by default)
    • PlayList Encoding (uses ID3 by default)
    • Encoding for Filenames in the Playlists (uses FileSystem encoding by default)
    • FileSystem Encoding (uses locale encoding by default)
    • Output Encoding (uses locale encoding by default)
    The default encoding will be resolved using:
    • The unicode encoding selected for english language.
    • The encoding of the parrent class if any.
    • The unicode encoding defined by locale variable or any locale encoding in the case of locale language is used.
    • First available usable encoding.
  • Encoding autodetection engine. First available is used by default.
  • Mode for recoding cache:
    • Off: Do not use recoding cache
    • On: Use recoding cache to find out encoding and language
    • ReLearn: Fill recoding cache with detected values
    • Learn: Try to use recoding cache to find out encoding. If there are no cached encoding for current title try to detect it and store in the cache
  • Autodetect File Name: If option is switched on the encoding of the file will be resolved using search over file system.
  • Autoengine Set Current Encoding: Encoding autodetection engine will automatically set detected encoding to be used by default.
  • Autodetect Language: Try to autodetect used language. Quite slow.
  • Translate Text: Translate text from detected language to the locale language. Very slow and requires internet connection. The different modes is available. In the full mode the string will be translated to the current locale language. If translation to locale language is failed, the string will be translated to english. With "Skip Related" and "Skip parrent" options the translation between related languages will be omited (The language is considered to be parrent language in the case then it is expected to have words from that language in the strings of child language. The english language is considered to be parrent language for any other.). With "Translate to English" option it is possible to translate all strings to english.
  • Since the translation is slow, it is possible to limit maximum time used to recode/translate string. In this case if translation in the specified amount of time is not finished, untranslated string will be returned. However, the string will be queued for translation and in the next access the translated and cached value will be returned.
  • Additionally, for RusXMMS only it is possible to specify font used by shade form of xmms playlist.

Using Multi-Language Playlist

There are two ways of using multi-language playlists. The first is to use Language autodetection:
  • The UTF-8 locale should be set.
  • The LibRCC should be compiled with aspell support.
  • The aspell dictionaries for all languages used should be installed
However this is quite slow, and errnous in the cases then mostly non-dictionary words are used. The second option, is to use recodings cache:
  • The UTF-8 locale should be set.
  • Select "Learn" mode for recoding caching policy in the preferences prior to loading new files.
  • Afterwards the titles for the loaded files will be recoded correctly whenever the recoding caching is enabled.

Using Language Translation

It is possible to translate titles to your languages using libtranslate. The LibRCC should be compiled with LibTranslate support (It will be quite good idea to use patched libtranslated with posibility to limit maximum amount of time spent for translation) and you should have internet connection. Since libtranslate utilizes online translation services it takes a lot of time to get translation. To solve this problem the translation queueing and caching is used. If translation is failed in considered amount of time error will be returned to caller and string will be queued for translation. The translated string will be stored in the DB4 cache and will be returned to caller on the following requests for translation.