Skip to content

translation-format-truncated (ODE8301)

Preview (since 0.16.2.9) · Related issues · View source

Derived from the odoo linter.

This rule is unstable and in preview. The --preview flag is required for use.

What it does

Checks for translation terms ending in the middle of a printf conversion specifier, e.g. _("Hello %", name).

The rule only applies from Odoo 14.0 on, the version whose translation functions take the interpolation arguments themselves; up to 13.0 translation-contains-variable covers the eager interpolation instead. Configure the version with the odoo-version setting; without it the rule stays enabled.

Why is this bad?

The translation function formats the term with %, so a truncated conversion specifier raises a ValueError at runtime.

Example

_("Progress: 100 %", progress)

Use instead:

_("Progress: %s %%", progress)