PO-Dateien / Sprachdateien

In Odoo 12 kann es zu einem Fehler beim Laden der Sprache über das Backend kommen. 

Dies kann an korrupten Sprachdateien (.po) liegen. 

Analyse: 

Sobald dieser Fehler im Terminal auftritt:

2019-11-19 09:27:10,753 19128 INFO v12_basis_bug_ter odoo.tools.translate: loading /home/dev/gitbase/v12/v12-addons/eq_purchase/i18n/de.po
2019-11-19 09:27:10,786 19128 ERROR v12_basis_bug_ter odoo.sql_db: bad query: INSERT INTO ir_translation(name, lang, res_id, src, type, value, module, state, comments)
SELECT name, lang, res_id, src, type, value, module, state, comments
FROM tmp_ir_translation_import
WHERE type = 'model'
AND noupdate IS NOT TRUE
ON CONFLICT (type, lang, name, res_id) WHERE type = 'model'
DO UPDATE SET (name, lang, res_id, src, type, value, module, state, comments) = (EXCLUDED.name, EXCLUDED.lang, EXCLUDED.res_id, EXCLUDED.src, EXCLUDED.type, EXCLUDED.value, EXCLUDED.module, EXCLUDED.state, EXCLUDED.comments)
WHERE EXCLUDED.value IS NOT NULL AND EXCLUDED.value != '';

ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time
HINT: Ensure that no rows proposed for insertion within the same command have duplicate constrained values.

2019-11-19 09:27:10,787 19128 ERROR v12_basis_bug_ter odoo.http: Exception during JSON request handling.
Traceback (most recent call last):
File "/home/dev/gitbase/v12/v12-server/odoo/http.py", line 656, in _handle_exception
loading /home/dev/gitbase/v12/v12-account/syscoon_financeinterface/i18n/de.po
2019-11-19 09:34:24,418 19128 ERROR v12_basis_bug_ter odoo.sql_db: bad query: INSERT INTO ir_translation(name, lang, res_id, src, type, value, module, state, comments)
SELECT name, lang, res_id, src, type, value, module, state, comments
FROM tmp_ir_translation_import
WHERE type = 'model'
AND noupdate IS NOT TRUE
ON CONFLICT (type, lang, name, res_id) WHERE type = 'model'
DO UPDATE SET (name, lang, res_id, src, type, value, module, state, comments) = (EXCLUDED.name, EXCLUDED.lang, EXCLUDED.res_id, EXCLUDED.src, EXCLUDED.type, EXCLUDED.value, EXCLUDED.module, EXCLUDED.state, EXCLUDED.comments)
WHERE EXCLUDED.value IS NOT NULL AND EXCLUDED.value != '';


Wenn die Übersetzung lokal geladen wird, kann das betroffene Modul (siehe oben in orange) über das Terminal herausgefiltert werden: 

Deshalb unbedingt darauf achten: 

  1. Versionsnummer: Muss eine 12er-Nummer sein (beim Portieren können hier Fehler entstehen) 
    So nicht:



    Damit beim Portieren nichts schief geht, am besten po-File löschen und neu generieren und in den i18n Ordner einfügen. 

2. Leere Messagestrings
Es dürfen keine leeren Messages mehr in den Dateien vorhanden sein. Übersetzungen prüfen!
So nicht: 


Weitere Informationen zu Sprachdateien:  Tipps im Ablauf bei Übersetzungen / Sprachdateien im ERP System Odoo