Odoo Help


This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Translations, best way to manage them

Giovanni Bianchi
on 6/20/16, 6:05 AM 334 views

I need to print the company documents (price lists, orders, invoices, etc) in different languages, depending on the customers language (and not the logged user language). I don't need (yet) to translate the user interface since English is the standard for internal use. I created in Settings, Translations, Languages five more languages (German, Italian, Spanish, French, Dutch) and will insert some more when available (Chinese, Korean, etc)

Since we are trying to migrate from the old software (based on DBF archives), I was used to have a translation table with all the report texts; they were coded using:

- a table number (i.e. 0023 = Week days, 0012 = Service, etc)

- a table record number (i.e. [0023]0001 = Monday, [0023]0002 = Tuesday, or [0012]0004 = Excluded, [0012]0003 = Replacement, etc)

- a language code ([0023][0001]0001 = English = Monday, [0023][0001]0002 = German = Montag, [0023][0001]0003 = Italian = Lunedì, etc or [0012][0004]0001 = English = Excluded, [0012][0004]0002 = German = Ohne, [0012][0004]0003 = Italian = Esclusa, etc)

Now, based on your experience with Odoo (my skills are still near zero), which is the best approach to this? keep the old "Translation table" and build my reports/printouts using some code to link the proper translated texts or use the internal langage management? In the second case, that I think is the proper way, can you provide a link to a basic procedure to import all my existing texts in a "texts table" to use in my reports? I have 35 different tables, from Weekdays, to Service, to Product types, to Colors, to Payment methods, Qualifications, Discounts, Months, Countries, Transport means, etc. Everything that could be translated, had been translated, to give to the customer the best and most understandable document, to avoid translation errors.

I had a look to the forum, searching "language" and getting 371 posts, i.e.:




I think the most interesting should be this:

Address : <https://www.odoo.com/forum/help-1/question/translation-of-custom-report-to-multi-languages-in-odoo8-94784>



I have created one custom report in odoo 8.And wish to print report in more than one language (e.g. English & Dutch) on single report.Is it possible with odoo8, if yes please suggest how to achieve. Thanks in advance.


Yes you can achieve the report in multi-language please refer sale order report

<template id="report_saleorder">

<t t-call="report.html_container">

<t t-foreach="doc_ids" t-as="doc_id">

<t t-raw="translate_doc(doc_id, doc_model, 'partner_id.lang', 'sale.report_saleorder_document')"/>




You can print report in partner language using template.

Also you can define the po file for the words are used in your report. In Setting->Import/Export->Export Translation where you can export the translation file of your module and put that file into i18n folder. then upgrade the module and load the translation again you will get the translation words from the po file.

This custom defined po file is interesting... If I give a look to the exported translation (I used reports) I can see 6 columns:







So what now? let me try with the "Payment terms"

module is the name of my module, i.e. "MyCompanyName", where I'll put all my custom data, models, views, etc

type is "model" (or "selection" or "code", I haven't yet studied this: selection looks like a list of selectable options, i.e. the paper format; code is used to run a command, .py or .js or else)

name can be "ir.model.fields,field_description" that identifies the field title

res_id is consequently "MyCompanyName.field_order_payment_term_id" that is the field I'm working on

src is "Payment Term" (English)

value is "Condizioni di pagamento" (example for Italian)

with such line, I'm able to print "Payment term" in the English report and "Condizioni di pagamento" in the Italian version, ok?

but what about the list of "payment terms"? We coded 250-more different payment terms, and even if most of them are obsolete or never used, I still have a lot of different values, i.e.:

30 Days shipment date net net by swift transfer

60 Days delivery date net net by Swift transfer

90 Days shipment date 5% by Swift transfer

Cash in advance 3%

At receipt of goods by cheque

14 Days shipment date 3% by Swift transfer

Confirmed irrevoc.L/C at 120 days shipment date to be opened 30 days in advance of scheduled shipment

Conf.irrevoc.L/C at 60 days shipment date

By telegraphic transfer on receipt of proof of shipment

Payment on delivery

50% at the order, 50% bill of lading

30% at order, 50% at delivery, 20% at 30 days after installation

...and many more I don't put here

Question is: where can I store all those items, each one with its translation in 6 different languages?

Should I create 35 different modules, one for each type of texts, or can I put all of them together in a single module, using a field to separate them?

I'm sorry I'm a "little" confused, but I hope I have explained my needs.

Thank you

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

2 follower(s)


Asked: 6/20/16, 6:05 AM
Seen: 334 times
Last updated: 6/21/16, 3:58 AM