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.
- 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
| Printout | Language |
|---|---|
| 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 menu | The user's login language |
What to translate
| Text | Where |
|---|---|
| Labels of a built-in print format | Print Format => Item Translation |
| Labels of a Jasper report | A properties file, or AD_Message / AD_Element |
| Mail text | Mail Template => Translation |
| Business data | Translation 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_vreads the translated viewC_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_LANGorAD_Language. From iDempiere 12, the report viewer also offers a language drop-down for Jasper documents. -
Parameters:
CURRENT_LANG(for examplede_DE) andREPORT_LOCALE(date and number formats, followsCURRENT_LANG). -
Labels:
$R{key}orstr("key")is looked up in this order:- the report's properties file, country first (
name_sv_SE.properties), then language (name_sv.properties) AD_Message, including tenant-level messages when they are enabled (discussion)AD_Element, its Print Name
- the report's properties file, country first (
-
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.
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.