Internationalisation of Mu ========================== A really useful and relatively simple way to contribute to Mu is to translate the user interface into a different language. The steps to do this are very simple and there exist plenty of tools to help you. You can contribute in three ways: * Improve or extend an existing translation. * Create a completely new translation for a new language. * Make a translation of `Mu's website `_ (see the :doc:`website` guide for how to do this). In both cases you'll be using assets found in the ``mu/locale`` directory. Mu uses Python's standard `gettext `_ based internationalization API so we can make use of standard tools to help translators, such as `babel `_ or `Poedit `_. .. admonition:: Non-technical users If you are not a technical user and you are not familiar with the tools and jargon we use in this guide, please reach out to us by `creating a new issue in GitHub `_. We will help you set up a user-friendly tool that you can use to contribute new or improved translations, and integrate them into the next Mu release. We welcome translations from all users! How To ------ Updating or creating a new translation for Mu's user interface requires :doc:`setting up a development environment ` beforehand and, from there, is a four-step process: 1. Produce an up to date ``mu.po`` file ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Open a CLI shell, change the working directory to Mu's repository root, and run:: $ make translate_begin LANG=xx_XX Where ``xx_XX`` is the identifier for the target language. This creates (or updates, if it already exists) the ``mu.po`` file under the ``mu/locale/xx_XX/LC_MESSAGES/`` directory -- this is where the original British English messages are associated with their localized translations. 2. Translate Mu user interface strings ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Use a tool of your choice to edit the ``mu.po`` file: * Those looking for a GUI based tool can try out `Poedit `__. * Others might prefer a plain text editor, which will be sufficient. 3. Check the translation result ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ As you progress, check the translation results by launching Mu with:: $ make translate_test LANG=xx_XX As before, ``xx_XX`` is the identifier for the target language. When done checking, quit Mu, and go back to step 2. as many times as needed. 4. Submit your translation work ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This process produced two new or updated files, both under the ``mu/locale/xx_XX/LC_MESSAGES/`` directory: * ``mu.po`` containing the text based source of the translation strings. * ``mu.mo`` containing a compiled version of the above, used by Mu at runtime. Commit your changes and create a pull request via GitHub. Thanks!