User Tools

Site Tools


Translating Mixxx

FIXME Work in progress-jus 2013/07/21


Why translate ?

Mixxx is written and documented in English, and use English for communication between developers, maintainers and users from all countries. However, English is not the primary language of most people, and they are more comfortable with their own native language.

Translating helps to reach a wider audience, provides a better user experience, and you can DJ using Mixxx in your mother tongue.

About Locales

Locales customize programs to languages and regional dialects. Often locales correspond to countries, as is the case with Portuguese (Portugal) and Portuguese (Brazil). The default locale of Mixxx is English (United States) (en_US).

You can do a translation for any locale, such as German (Germany) (de_DE) or German (Austria) (de_AT), to adjust for regional spelling and idioms. A locale will define how characters are sorted, how the date and time are represented, the names of the days of the week and months of the year.

Getting Started

I want to help translate Mixxx, what do I need to do ?

You need a translator account to access Transifex, our translation site. Sign up for a free translator account or use your existing social network credentials to login

What about the skills required for translating ?

  • Bilingual – fluent in both written English and the language(s) you will be translating into. Casual knowledge of either one will make translating difficult for you, or make the localization you create confusing to native speakers.
  • You should be familiar with human language constructs: nouns, verbs, articles, etc., different types of each, and be able to identify variations of their contexts in English.
  • Experience in Djìng and using audio software in general – you'll benefit from it because you already know the typical concepts and terms.

To keep your translations consistent with those of other translators, our glossary helps you to get familiar with the core features of Mixxx. It contains a collection of terms with definitions, uses, and associated notes.

Ok, I have my Transifex account and I am ready to get busy. How to translate then?

Log in, go to the Mixxx Translation Project Overview and request access to a translation team for the item(s) and language(s) you want to translate (German in this example). One of the developers or translation coordinators will approve your request. You should get an e-mail answer within 48 hours that you have been accepted to the team for the requested language.

Request to join a translation team on Transifex

Now that you have been accepted to the translation team, you are ready to to translate Mixxx from English to your language.

  • Click on your team's language, you will see available “language resources” to be translated.
  • Click on a available resource to proceed.
  • A pop-up window opens, click the Translate Now button.
  • The Web Editor opens, and displays all translatable strings.
  • Click on the Untranslated tab to search for all strings with missing translations.
  • Select a source string from the navigation panel to the left and type your translation into the box to the right.
  • Click the Save button to save your translated string.
  • Congrats, you just translated your first string in Mixxx. Easy.
Submit a translation using the web editor

As a translator, you will be spending most of your time in the translation editor. It's the place where you can see all the text (strings) that need to be translated, submit translations, and collaborate with others. Take a look at Transifex' Introduction to the Web Editor to get acquainted with the basics.

Should you run into any questions about using Transifex, check out their support portal.

How can i be notified for languages I translate?

You can get notified whenever the translation of a resource is modified. When watching Mixxx or one of its languages, you will receive email notifications, whenever the translation sources are updated and there is translation work to be done.

You can find the links to watch Mixxx or a specific language at the bottom of the main project and language page respectively. You can also subscribe to the Mixxx translation RSS-feed



A glossary makes the translation process much easier for translators as terms have agreed-upon definitions and translations, shortening the amount of time required to translate Mixxx.

Translation memory (TM)

TM systems promote quality and consistency. They provide automatic suggestions based on similarities between source strings, allowing translators to leverage previous translations. Translators can use TM suggestions or adjust them to create new, more contextually appropriate translations.

  • Mixxx TM - The available TM entries are under the ‘suggestions’ tab of each translatable string of your language.
  • - Memory Translation database of open source projects.
  • - The world largest collaborative translation archive.

Online Translation and Dictionaries

  • Mixxx Auto Translate - Click ‘Machine Translation’ next to the ‘Submit’ button of the translatable string of your language.
  • - The easiest to use on-line dictionary and thesaurus. Clear. Clean. Uncluttered.
  • - Translate in real time with definitions and forums for your questions.
  • - A multilingual dictionary with lexicological, terminological and thesaurus information.
  • - Provides dictionaries and instant translation of words, phrases and texts in many languages.

Offline Translation software

If you are more comfortable translating locally on your computer, instead online in a web browser.

  • Qt Linguist - Provides a set of tools that speed the translation and internationalization of applications. Windows, Linux, MacOS X FIXME Add DL Links to standalone Linguist binaries jus 2013/07/21
  • Lingoes - An easy and intuitive dictionary and text translation software. Windows
  • Virtaal - A feature rich translation tool that allows you to focus on translation. Windows, Linux, MacOS X
  • Lokalize - A computer-aided translation system that focuses on productivity and quality assurance. Windows, Linux

Common Pitfalls in Translation

Ampersands (&)

Some texts in the translation template contain an ampersand (&) followed by one char. This marks the letter which can be used to quickly access that particular menu or other GUI element when holding the ALT key, often called “Accelerator key”.

If a string to be translated has an ampersand (&) in it, then the translation for that string should also have an ampersand in it, preferably in front of the same character. Accelerators should not show up twice in the same menu to prevent “accelerator clashes”. E.g. something like “&Save” and “&Save as” won't work, but “&Save” and “Save &as” will do.

Source (English,en_US) Translation (German,de_DE) Comment
&File &Datei Pressing the shortcut Alt+F on the keyboard will access the File menu on top of the Mixxx application window. Using Mixxx with the german translation, the shortcut will be Alt+D.

Variables (%1,%2, ...)

Variables like %1, %2, %3, etc. will be replaced with actual contents on runtime of the program. The variables of the original string must all show up in the translation, Only change the variable placement inside the translation if it is necessary to adapt to the sentence structure and word order of your language.

Source (English,en_US) Translation (German,de_DE) Comment
Analyzing %1/%2 %3% Analysiere %1/%2 %3% When analyzing tracks, a progress label is displayed which shows the current track number (%1), the overall number of tracks in the analyze queue (%2) and the analysis progress of the current track (%3) in percent (%). So it becomes Analyzing 10/15 50% or, using Mixxx with the german translation, Analysiere 10/15 50%.

HTML tags (</a>, <br/>, </b>, </ul>)

Here and there you may encouter some small bits of HTML code in the source strings. Simply copy/paste them onto your translated string. When translating in the Transifex Web editor, red arrows indicate that there is a newline character (Enter) in that position of the source string. Since that newline can be extremely important when the string is displayed in Mixxx being localized, translators are highly encouraged to adjust their translations as accurately as possible, by pressing the “Enter” key in the closest position possible.

Source (English,en_US) Translation (German,de_DE) Comment
<a href=“”>Official Website</a> <a href=“”>Offizielle Webseite</a> A link to the Mixxx website is shown in the About window, like Official Website or, using Mixxx with the german translation, Offizielle Webseite.

Developers - i18n/l10n and Mixxx


The following tools are used to update the Mixxx translation templates and to merge updated translations submitted by translators.



  • Zsh (Z shell), a powerful shell that operates as both an interactive shell and as a scripting language interpreter.

Installation example


  • Install Homebrew, a package manager for Mac OSX
  • Install the libxml2 dependency
    • brew install libxml2
  • Install lxml, a library for processing XML
    • easy_install lxml
  • Download, unpack,and install the Translate toolkit
    • sudo ./ install
  • Optional, install Zsh
    • brew install zsh

Updating translation templates

This procedure extracts translatable strings from Mixxx's code into template files (Qt/POT) so that Launchpad's interface can present the most current strings to translators.

  • Make a clean checkout of the Mixxx code branch you are in. NO EXCEPTIONS
  • lupdate src -recursive -extensions cpp,h,ui -ts res/translations/mixxx.ts
  • ts2po -P -i res/translations/mixxx.ts -o res/translations/mixxx/mixxx.pot
  • Commit, push.

Launchpad will pick up the changes to the template automatically.

TODO: make the sconscript do this as part of a normal build so code changes that change or add strings automatically update the templates.

Updating translations

This procedure updates Mixxx with translations (PO files) that have been contributed by Launchpad users.

  • For every PO file in res/translations/mixxx/, po2ts res/translations/mixxx/xx.po res/translations/mixxx_xx.ts
    • In ZSH: for XX in res/translations/mixxx/*.po; do po2ts -i $XX -o res/translations/mixxx_${$(basename $XX)%.*}.ts; done
  • For every mixxx_xx.ts file in res/translations/, lrelease res/translations/mixxx_xx.ts -qm res/translations/mixxx_xx.qm
    • In ZSH: for XX in res/translations/mixxx_*.ts; do lrelease -nounfinished $XX -qm res/translations/${$(basename $XX)%.*}.qm; done
    • If you are testing a translation and would like untranslated strings to show up as blank, do not give the 'nounfinished' argument to lrelease.
  • Add all new translation translation TS and QM files to Git
    • In ZSH: git add res/translations/mixxx_*.(ts|qm)
  • Update res/mixxx.qrc file to add any new languages that were not previously present.
  • Commit, push.

TODO: make the sconscript do this as part of a normal build so Mixxx contains the latest translations.

Translations of this page:
internationalization.txt · Last modified: 2018/01/23 10:55 by pegasus