-
Notifications
You must be signed in to change notification settings - Fork 33.2k
Translations
Within Odoo source code, all translatable strings (source strings) are written in American English (language code en_US). The administrator of an Odoo instance can load additional languages from the official translations.
As a result, the corresponding translations of all installed modules will be loaded in the database and used to replace the default English strings in the application interface for users changing their preferred language.
The easiest way to contribute to Odoo's translations is to use our dedicated Weblate Translations platform.
Weblate provides a web-based translation interface, which can be used to translate. Its main features are:
- It's web-based, accessible everywhere for anyone, and does not require any developer skills.
- It offers a Translation Memory that can automatically translate identical strings present in other versions and modules.
- It provides collaborative reviewing features, and allows marking the strings that one thinks should be reviewed by other translators.
- It's automatically synchronized with the source code files (
.pot) containing the translations, removing the need for manual updates.
By default, when you sign up on the platform, you will be assigned to the Suggesters team. This allows you to submit translation suggestions for any language currently available in the projects. To request access to directly change translations, email translations@odoo.com.
Every language is managed by a dedicated Translators team, and optionally a Reviewers team. Depending on the team, members can do the following:
- Translators can change translations that are not marked as Approved.
- Reviewers can change all translations and mark a translation as Approved. (i.e. verified that it is correct)
- Coordinators can manage the members of the team and appoint Translators and/or Reviewers.
If your language is not yet present in the project you would like to translate and you are motivated enough to manage the team, you can request the addition of this language at translations@odoo.com.
Do not request the addition of a localized version for the main country (e.g. no need for a fr_FR or de_DE) or localized version of a language (e.g. fr_BE). We accept localized versions of a language but only to store the translations different than the master language (e.g. fr) and this should be submitted through a pull request on this repository.
For all languages that we have an in-house translator for, you'll only be allowed to submit suggestions. These suggestions will be reviewed and validated and/or replicated in all relevant components by our translator. This setup helps us ensure consistency across all projects and components and maintain a smooth workflow.
Languages with in-house translators: Arabic (ar), Chinese (Simplified) (zh_CN), Chinese (Traditional) (zh_TW), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Hindi (hi), Indonesian (id), Italian (it), Japanese (ja), Korean (ko), Polish (pl), Portuguese (pt), Portuguese (Brazil) (pt_BR), Russian (ru), Spanish (es), Spanish (Latin America) (es_419), Swedish (sv), Thai (th), Turkish (tr)
For a better translation, it is often useful to know the context in which a string is used. While this part requires more technical knowledge of Odoo, it can be useful to check the Source string location of the string.
-
Source string description contains the module the string comes from, in above example, the
accountmodule. -
Source string location contains the reference (or list of references) where this string is used. Here are a few examples of references used in Odoo:
-
model:ir.model.fields,field_description:purchase.field_purchase_order__date_approve: The label of the fielddate_approve(Confirmation Date) on a purchase order. -
model:ir.ui.view,arch_db:sale.view_order_form: The content of the form view of a sales order. -
model:ir.ui.menu,name:account.menu_finance_entries: The name of the Accounting menu. -
model:ir.model.fields.selection,name:crm.selection__crm_lead2opportunity_partner__name__convert: One of the possible values in a selection field in the CRM app. -
code:addons/hr/models/hr_employee.py:0: A string inside Python code (e.g. an error message for the user). The pathaddons/hr/models/hr_employee.pyindicates the file where it's defined. -
code:addons/project/static/src/js/tours/project.js:0A string inside JavaScript code (e.g. button labels, dynamic content).
-
But in the end, the best way is often to check on an Odoo instance directly. To do so, the easiest is probably to use Runbot, where you can test the different Odoo versions with all modules installed.
Yes! But you will still need to upload your .po files within Weblate. Check the Weblate documentation on how to download and upload translation files.
The translations are synchronized from Weblate to GitHub every weekend. The availability of the translation depends of the way your Odoo instance is installed:
-
Hosted on
odoo.comor Odoo.sh: Translation updates are available on Monday or Tuesday the next week. - Source install: Fetch the latest sources from GitHub.
- Packaged install: Download the latest nightly builds on Monday.
After updating the installation, an administrator has to reload the language in the menu Settings > Translations > Languages, by clicking Update next to the language. In order to overwrite the current translations, make sure to check Overwrite Existing Terms.
CAUTION: Doing this will also overwrite translations you might have modified manually.
We prefer not to do it for stable Odoo versions at all. Changing the source strings (even a simple typo) would discard every existing translation for this string.
It is okay to make a Pull Request on GitHub for changing source strings in the development version (master), however.
A localization module (named l10n_*) contains the list of accounts, journals, taxes, etc. in a specific country. Most strings (journals, tax names, etc.) present in the localizations are typically defined in English (so developers who do not know the language can still understand it) and their corresponding official terms (i.e. in the country's language(s)) are added in at development time to ensure correct term usage. These are considered special translations that are encoded within the code and are not available in Weblate. All non-official terms in the localization modules are available on Weblate.
To submit translations for localization terms, please use the following steps:
- Find or create the translation inside the corresponding module.
- If it is in a
.csvor.xmlfile, then modify the file directly and go to step 3. - If it is in a localization's
i18nfolder (e.g. the Dutch translations ofl10n_bewill be inaddons/l10n_be/i18n/nl.po) either in a.pofile or the.potfile, then go to step 2.
- If it is in a
- Find the module on Weblate and submit your translation or suggestion there.
- Add/change the translation in the source file and create a Pull Request to submit your translations.
As was the case on Launchpad previously, Odoo translations are contributed and published under the Simplified BSD License. By contributing translations to the Odoo project you agree to publish them under the terms of the license. This does not affect your original copyright on the translations. The text of the license is as follows:
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those
of the authors and should not be interpreted as representing official policies,
either expressed or implied, of Odoo S.A.
Website | Online Demo | Community | eLearning | Help | Scale-Up business game
Boost Sales: CRM | Point of Sale | Quote Builder | Mass Mailing | Survey | Events
Build Websites: CMS | eCommerce | Blogs | Forum | Get a Free Website
Run Operations: Projects | Billing | Accounting | Inventory | Manufacturing | Procurements
Delight Employees: Employees | Recruit | Expenses | Appraisals | Fleet