LibreOffice translation process is quite straightforward. The suggested way to work on it is to use Weblate (our online translation portal). All you need to localize using this method is a browser and an Internet connection. If you prefer to work offline, it also is possible, see below. Before starting a localization, please check with the Language teams if a localization doesn't exist already.
See the Release Plan. Release Plan shows the dates when the source code is tagged for beta, RC or release. Translation deadline is always 2 days before the announced tagging date. Be aware that the translation deadline for the last x.y.0 release candidate (RC3) is also the translation deadline for the final x.y.0 release.
For every build:
- Translations are extracted from Weblate on Tuesday
- They are committed to Git before tagging, deadline for each tag is Monday
So please, add your changes to Weblate on Monday to make sure they will be included.
TDF’s own instance of Weblate always contains up-to-date localizable strings. Weblate administrators update them rather frequently.
You'll find here a Guide on how-to use Weblate for LibreOffice.
At the top of the Weblate home page, click “Languages” and select “Explore all languages”. You will see a list of projects currently available for translation. Their names are self-explanatory. To localize LibreOffice, you'll have to work on projects called LibreOffice master – UI, LibreOffice master – Help, LibreOffice x.x.x – UI and LibreOffice x.x.x – Help. In general, if you're just starting, it probably makes most sense to work on master, but if you want to fix some nasty L10n bug in the current version of LibO, you can do that in the branch too.
What does it mean to translate on master:
The workflow has changed between 4.4 and 5.0, instead of working only on branches, the work can start earlier in between branches by working on master. Once there is a code branch, then it is reflected on Weblate branch and the work done on master is copied to the new created branch:
Regular code workflow:
─────┬─────┬─────┬─────┬─────┬─────> master │ │ │ │ └─────> libreoffice-6-3 │ │ │ └───────────> libreoffice-6-2 │ │ └────────────────> libreoffice-6-1 │ └─────────────────────> libreoffice-6-0 └──────────────────────────> libreoffice-5-4
All branches were once "master", and then were split up to refine stuff. Translations were special project, as basically there was no "in between" updates. Translations did jump from 4-2 to 4-3, from 4-3 to 4-4 without any intermediate updates in between.
Master-based workflow would mean that when libreoffice-5-0 is created, the translations of master will be copied over and reused for that, and master then would be ongoing for libreoffice-5-1. See the whole explanation of Christian in this thread
If you prefer to translate offline, you can download PO files from Weblate and use your favourite tool(s) to work on them. You'll find the links in the “Files” dropdown menu of the desired language/project combination. Assuming you have the appropriate rights for your language, you should be able to upload PO or ZIP files back anytime (in case of ZIP, you must make sure to keep the initial directory structure intact).
You'll notice there are a few more projects available on Weblate. Here's a short overview of them:
- Impress Remote: here you can localize the Impress Remote mobile applications.
- Online: here are the LibreOffice Online web and mobile applications.
- Website: this small project contains localization files that relate to websites. In particular, the mysite file contains our custom strings that appear in libreoffice.org websites (mostly related to the download page experience), the faqs file contains localization of the FAQs module that might (or might not) be used on local websites, extensionssite contains localization for extensions.libreoffice.org, and googleplay contains the strings we use in Google Play store. You don't have to translate all of these files, especially if you know you won't need some of them. Note that many generic things related to the CMS of libreoffice.org are being localized elsewhere. Also, please note that by completing this module, you don't get a "translated website". However, if you want to host a LibreOffice website in your language, you'll most likely want to translate at least the mysite file.
- When uploading a file, I have an error "Please fix errors in the form. Error in parameter method: This field is required"
- Make sure you have marked one of the fields in the File upload mode area
- How do I search for a KeyID?
- Make sure you have picked Exact match in the Search type and check Comment strings
- How do I add members to my language group?
- Currently, only Weblate admins are able to add members to languages groups, either send a mail to the l10n list or to Sophie
POT and PO files
Latest POT files extracted from the source can always be found here:
PO files for each supported language are stored in the source code repository in the module called 'translations'. This module is maintained by Christian Lohmaier and András Tímár, who will get translations from Weblate (or alternative sources) before each release and will push them to git.
- You are encouraged to subscribe to l10nglobal.libreoffice.org mailing list. Apart from being a support channel for localizers, it's also the medium where important information for translators (such as string updates and deadlines) is announced. You can also ask 'timar' on irc.libera.chat in the #libreoffice-dev channel.
- You may edit new .ui files using Glade to see them in context. For that install Glade for your distribution (I only know for Linux, so fix it if you know for other distributions) and either a version from master or the last dev build you want to translate.
- then enter in your terminal:
- then enter the path of the file you want to display:
Other Aspects of Localization
More aspects of LibreOffice localization are covered in the LibreOffice Localization Guide.
Some other aspects are covered in the UI and Help files Content Guide which details what has or has not to be translated, like variables or xml content.