Skip to content

Translating Cura

Remco Burema edited this page Mar 26, 2024 · 4 revisions

UltiMaker maintains 11 languages with a professional translation bureau. Other languages are maintained by external contributors. The current translation maintainers are:

Contributing


= Please Note When we're in the release-window (so that's when we have the beta out for the next Cura, but not the final release yet), we're also in the process of updating translations. If you make a PR with updated or fixed translations within this timespan, it's likely that your additions/changes will be ignored in favour of the 'official' ones, due to how our process is set up. =


If you'd like to contribute a translation of Cura, please first look for any existing translation. If your language is already there in the source code but not in Cura's interface, it may be partially translated.

There are four files that need to be translated for Cura:

  1. https://github.com/Ultimaker/Cura/blob/main/resources/i18n/cura.pot
  2. https://github.com/Ultimaker/Cura/blob/main/resources/i18n/fdmextruder.def.json.pot
  3. https://github.com/Ultimaker/Cura/blob/main/resources/i18n/fdmprinter.def.json.pot (This one is the most work.)
  4. https://github.com/Ultimaker/Uranium/blob/main/resources/i18n/uranium.pot

Copy these files and rename them to *.po (remove the t). Then create the actual translations by filling in the empty msgstr entries. These are gettext files, which are plain text so you can open them with any text editor such as Notepad or GEdit, but it is probably easier with a specialised tool such as POEdit or Virtaal.

Do not hestiate to ask us about a translation or the meaning of some text via Github Issues.

Once the translation is complete, it's probably best to test them in Cura. Use your favourite software to convert the .po file to a .mo file (such as GetText). Then put the .mo files in the .../resources/i18n/<language code>/LC_MESSAGES folder in your Cura installation. Then find your Cura configuration file (next to the log as described above, except on Linux where it is located in ~/.config/cura) and change the language preference to the name of the folder you just created. Then start Cura. If working correctly, your Cura should now be translated.

To submit your translation, ideally you would make two pull requests where all *.po files are located in that same <language code> folder in the resources of both the Cura and Uranium repositories. Put cura.po, fdmprinter.def.json.po and fdmextruder.def.json.po in the Cura repository, and put uranium.po in the Uranium repository. Then submit the pull requests to Github. For people with less experience with Git, you can also e-mail the translations to the e-mail address listed at the top of the cura.pot file as the Report-Msgid-Bugs-To entry and we'll make sure it gets checked and included.

After the translation is submitted, the Cura maintainers will check for its completeness and check whether it is consistent. We will take special care to look for common mistakes, such as translating mark-up <message> code and such. We are often not fluent in every language, so we expect the translator and the international users to make corrections where necessary. Of course, there will always be some mistakes in every translation.

When the next Cura release comes around, some of the texts will have changed and some new texts will have been added. Around the time when the beta is released we will invoke a string freeze, meaning that no developer is allowed to make changes to the texts. Then we will update the translation template .pot files and ask all our translators to update their translations. If you are unable to update the translation in time for the actual release, we will remove the language from the drop-down menu in the Preferences window. The translation stays in Cura however, so that someone might pick it up again later and update it with the newest texts. Also, users who had previously selected the language can still continue Cura in their language but English text will appear among the original text.

Clone this wiki locally