Skip to Content
Menu
This question has been flagged
1 Reply
2570 Views

I am trying to add translations of terms via data file as following:

id="language_one_ru" model="hr.language">
name="lang">ru_Ru
name="name">Казахский

Here is the original record in English:

id="language_one" model="hr.language">
name="name">Kazakh

Language was activated with local ru_RU but I can not add translation. Is there other way around of importing translations of terms with xml file.

Here is the error:

RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
File "/home/jonerbay/src/odoo/odoo/tools/convert.py", line 680, in _tag_root
f(rec)
File "/home/jonerbay/src/odoo/odoo/tools/convert.py", line 583, in _tag_record
record = model._load_records([data], self.mode == 'update')
File "/home/jonerbay/src/odoo/odoo/models.py", line 4422, in _load_records
records = self._load_records_create([data['values'] for data in to_create])
File "/home/jonerbay/src/odoo/odoo/models.py", line 4338, in _load_records_create
return self.create(values)
File "", line 2, in create
File "/home/jonerbay/src/odoo/odoo/api.py", line 413, in _model_create_multi
return create(self, arg)
File "/home/jonerbay/src/odoo/odoo/addons/base/models/ir_fields.py", line 613, in create
recs = super().create(vals_list)
File "", line 2, in create
File "/home/jonerbay/src/odoo/odoo/api.py", line 413, in _model_create_multi
return create(self, arg)
File "/home/jonerbay/src/odoo/odoo/models.py", line 4027, in create
raise ValueError("Invalid field %r on model %r" % (key, self._name))
ValueError: Invalid field 'lang' on model 'hr.language'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/jonerbay/src/odoo/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
result = request.dispatch()
File "/home/jonerbay/src/odoo/odoo/http.py", line 687, in dispatch
result = self._call_function(**self.params)
File "/home/jonerbay/src/odoo/odoo/http.py", line 359, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/jonerbay/src/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/home/jonerbay/src/odoo/odoo/http.py", line 348, in checked_call
result = self.endpoint(*a, **kw)
File "/home/jonerbay/src/odoo/odoo/http.py", line 916, in __call__
return self.method(*args, **kw)
File "/home/jonerbay/src/odoo/odoo/http.py", line 535, in response_wrap
response = f(*args, **kw)
File "/home/jonerbay/src/odoo/addons/web/controllers/main.py", line 1346, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/home/jonerbay/src/odoo/addons/web/controllers/main.py", line 1334, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/jonerbay/src/odoo/odoo/api.py", line 464, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/jonerbay/src/odoo/odoo/api.py", line 451, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "", line 2, in button_immediate_install
File "/home/jonerbay/src/odoo/odoo/addons/base/models/ir_module.py", line 74, in check_and_log
return method(self, *args, **kwargs)
File "/home/jonerbay/src/odoo/odoo/addons/base/models/ir_module.py", line 486, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "/home/jonerbay/src/odoo/odoo/addons/base/models/ir_module.py", line 603, in _button_immediate_function
registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "/home/jonerbay/src/odoo/odoo/modules/registry.py", line 87, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "/home/jonerbay/src/odoo/odoo/modules/loading.py", line 474, in load_modules
processed_modules += load_marked_modules(cr, graph,
File "/home/jonerbay/src/odoo/odoo/modules/loading.py", line 363, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/jonerbay/src/odoo/odoo/modules/loading.py", line 222, in load_module_graph
load_data(cr, idref, mode, kind='data', package=package)
File "/home/jonerbay/src/odoo/odoo/modules/loading.py", line 69, in load_data
tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
File "/home/jonerbay/src/odoo/odoo/tools/convert.py", line 745, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate)
File "/home/jonerbay/src/odoo/odoo/tools/convert.py", line 811, in convert_xml_import
obj.parse(doc.getroot())
File "/home/jonerbay/src/odoo/odoo/tools/convert.py", line 731, in parse
self._tag_root(de)
File "/home/jonerbay/src/odoo/odoo/tools/convert.py", line 680, in _tag_root
f(rec)
File "/home/jonerbay/src/odoo/odoo/tools/convert.py", line 693, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
Exception

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "/home/jonerbay/src/odoo/odoo/http.py", line 643, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/jonerbay/src/odoo/odoo/http.py", line 301, in _handle_exception
raise exception.with_traceback(None) from new_cause
odoo.tools.convert.ParseError: while parsing /home/jonerbay/src/custom/*/data/languages.xml:58, somewhere inside

ru_Ru
Казахский


Avatar
Discard
Best Answer

Hi Beshbarmak,

the translations should be added through .po file, not through XML file.

Just follow these steps :):

  1. Turn on the debug mode
  2. Go to Settings → Languages → Export translations
  3. Choose the modules you want to translate (either base, or your custom ones)
  4. Odoo will generate a .po file 
  5. Edit the .po file (e.g. in Notepad ++, or in VS Code, whatever text editor works)
  6. And here, you can decide, whether you want to make it a part of your custom module (if yes, just add the file into the i18n folder of your custom module) or you can import it back through Settings → Import translations (+ do not forget to set overwrite existing terms)
  7. (Optional) In case you added your file through custom module, and you are changing existing Odoo translations and you are on v15 or older, firstly come to Settings → Languages → Generate missing terms of the language you are changing in your .po file
  8. (Optional) In case you added your file through custom module, and you are changing existing Odoo translations, you need to go to the settings of that language and Update the language (translations). Warning: If in v15 (or older) you translated something directly in the database, you will lose these changes! Recommendation is not to rewrite any translations directly in the Settings → Languages → Translated terms.

Hope my answer helped!

Ivana from edoo.is

Avatar
Discard
Related Posts Replies Views Activity
0
Dec 24
31
2
Feb 24
1525
4
Nov 23
1103
1
Apr 24
917
1
Aug 22
2419