Skip to main content
View as Markdown

Translate documents and printouts

How to send invoices, orders and mails in the customer's language. Applies to iDempiere 11 and later. Checked in October 2026.

In short
  • Set Language on the Business Partner. Documents print in that language. For bulk invoice printing, also turn on Multi Lingual Documents.
  • Built-in print formats translate labels and data for you.
  • Jasper reports get the language as a parameter. The report does the rest.

Which language is used​

PrintoutLanguage
One document printed or emailed from its window (order, invoice, shipment, payment and others)The Business Partner's Language, also with Multi Lingual Documents off. If empty, the Tenant's language.
Dunning letters (Print Dunning Letters)The Business Partner's Language. If empty, the Tenant's language.
Invoices printed in bulk (Print Invoices)The Business Partner's Language only when the Tenant has Multi Lingual Documents on. Otherwise the user's login language.
A report from the menuThe user's login language

What to translate​

TextWhere
Labels of a built-in print formatPrint Format => Item Translation
Labels of a Jasper reportA properties file, or AD_Message / AD_Element
Mail textMail Template => Translation
Business dataTranslation tab of each record, per Tenant: Document Type, Product, Unit of Measure, Payment Term, Tax, Charge, Greeting, Dunning Level

Do not run Synchronize Doc Translation after translating business data. See Processes.

Built-in print formats​

  • Labels: Synchronize Terminology fills them from the element translations. To refresh one print format, run Synchronize Print Format Items.
  • Data: a print format on a view such as C_Invoice_Header_v reads the translated view C_Invoice_Header_vt. Core has these views for order, invoice, shipment and dunning headers. For your own views, see Translated views.
  • File name: can be translated. See Make print filename configurable.

JasperReports​

iDempiere passes the language. The report handles labels and data itself.

  • Language: documents use the Business Partner's Language, otherwise the Tenant's language. Other reports use the login language, unless the process has a parameter named CURRENT_LANG or AD_Language. From iDempiere 12, the report viewer also offers a language drop-down for Jasper documents.

  • Parameters: CURRENT_LANG (for example de_DE) and REPORT_LOCALE (date and number formats, follows CURRENT_LANG).

  • Labels: $R{key} or str("key") is looked up in this order:

    1. the report's properties file, country first (name_sv_SE.properties), then language (name_sv.properties)
    2. AD_Message, including tenant-level messages when they are enabled (discussion)
    3. AD_Element, its Print Name

    See AD_Message+AD_Element Resource Bundle.

  • Data: nothing switches automatically. Query the translated view yourself:

SELECT * FROM C_Invoice_Header_vt
WHERE C_Invoice_ID = $P{RECORD_ID} AND AD_Language = $P{CURRENT_LANG}
  • Amounts in another currency: DisplayType.getCurrencyFormat(language, currencyISOCode) formats them for the language.
tip

Labels and CURRENT_LANG only work when iDempiere runs the report. To preview in Jaspersoft Studio, give CURRENT_LANG a default value.

Test a translated document​

Set Language on a test Business Partner, then print and email a document for it, and run Print Invoices for it. Repeat with the Business Partner's Language empty.

Known issues​

Open in October 2026:

  • IDEMPIERE-4400: the Language field in print preview is empty.
  • IDEMPIERE-6418: payment print and export duplicate lines when three login languages are active and the Business Partner has a non-base language.
  • IDEMPIERE-6913: the web client does not pass the print format to a Jasper process.