LibreOffice translation process is quite straightforward. The suggested way to work on it is to use Pootle (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.
For every build:
- Translations are extracted from Pootle on Tuesday
- They are committed to Git before tagging, deadline for each tag is Monday
So please, add your changes to Pootle on Monday to make sure they will be included.
TDF Pootle always contains up-to-date localizable strings. Pootle administrators update them rather frequently.
On the right hand side of Pootle home page, 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 Pootle 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 full or partial ZIP archives with PO files (or just separate PO files) from Pootle and use your favourite tool(s) to work on them. You'll find the links in Translate and Overview tabs 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).
If you need more information on how to use Pootle, see the Pootle Guide. We recommend to look at the Check section, this is important for the quality of the localization.
If, when you update the template against your language in Pootle, you see some strings that pertain to another language, do not translate again the strings, we always keep the previous translation files in Git and are able to restore your previous work or you can upload your own previous files and then update the template again.
You'll notice there are a few more projects available in Pootle. Here's a short overview of them:
- Terminology: this is a Pootle helper project which makes localization somewhat easier. If the Terminology project is present and not empty in your language, Pootle will show you hints for terms that exist in the Terminology file when you come across those terms while translating other projects.
- 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.
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 Andras Timar, who will get translations from Pootle (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.freenode.net 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:
export GLADE_CATALOG_SEARCH_PATH=/opt/libreofficedev4.2/share/glade/** then enter the path of the file you want to display: glade /opt/libreofficedev4.2/share/config/soffice.cfg/cui/ui/pageformatpage.ui
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.