This question has been flagged
13 Replies
59851 Views

I have edited some of the .po translation files in addons directory, to fix a few missing translated words to my language, but it seems none of these changes are effective.

I have tried restarting OpenERP and rebooting the whole server, but to no avail.

What am I missing here? Do I have to update the module/addon somehow so that OpenERP updates the translation?

The OpenERP version I'm using is 7.0 and platform Ubuntu Linux 12.10.

Avatar
Discard
Author

Ok, I found that all translations are stored to database in 'ir_translation' table. While it would be convenient to somehow force the translation table to update from changed .po files, I resolved just to edit the necessary missing translations directly in database.

Searching for specific translation entry is actually faster using database search, than hunting it from the addons subdirectories and .po files.

Best Answer

Follow below steps:

1) Go to

Settings ‣ Translations ‣ Import / Export ‣ Export Translations

leave the language to the default (new language/empty template) # DO NOT CHANGE THIS

select the PO File format

select your module

click Export and download the file

2) Add your translation terms in the downloaded file. i.e. msgstr "" section depending on your translation language

3) change the filename to language_iso_code.po

e.g. for portugese => pt.po

4) create i18n folder under your module and add po file in it.

5) restart Odoo

6) Go to:

Settings ‣ Translations ‣ Load a Translation

select translation language (in my eg. Portugese)

make sure you check this : Overwrite Existing Terms

click LOAD.

DONE

Avatar
Discard
Best Answer

After spending lots of time for struggling with exports, imports, updates, overwrites for a long time, this is how i manage to fix all empty/duplicated/not updated translation problems:

1) Stop odoo

2) Update all po files (in source folders)

3) Delete all translations from database (DELETE FROM ir_translation WHERE lang = 'tr_TR')

4) Run odoo with load language option. This will reload all po files from source folders back to database  (./odoo.py --stop-after-init --load-language=tr_TR -c odoo.conf)

5) Start odoo

And all translations are updated to latest...


Avatar
Discard

This procedure works for me. At step 4, you just have to to add database option ./odoo.py --stop-after-init --load-language=tr_TR -c odoo.conf -d

I found that in some cases there're `#, fuzzy` lines in the .po files and then not all translations get updated.

Best Answer

Hi,

for version6 (perhaps 7 too), to have the translation loaded for you modules with inheritance, you have to add in __openerp__.py line section :

'sequence': 150,

in fact, translations are read by sequence and by alphabetic order (lower to greater). Default value for sequence parameter (which you should not have add) is 100. And if you have a module beginning by a letter < first letter of module inherited, your translation will be read first and your modifications will not be used. Restart openerp server to valid modification naturally.

Bye

Avatar
Discard
Best Answer

AFAIK, there was a design decision to be made: either to allow users to change translations from the GUI, or to always override user's translations with .po files.

Currently the tradeoff is made in favour of being able to manually change translations from the GUI.

See the corresponding bug report here: bugs.launchpad.net/openobject-server/+bug/1166776

If you don't need the ability to change translations from the GUI (Settings => Translations => Application Terms => Translated Terms), then you could apply the fixes proposed in the bug report and its comments.


Another solution is to manually re-import the changed .po file from Settings => Translations => Import/Export => Import Translation. In some cases the records imported this way may fail to have 'module' value set correctly (it may be empty), which prevents the translation from working properly. This can be fixed by setting the right module value from within PgAdmin.

Avatar
Discard
Best Answer

I get the same issue. All my updates in po files are not updated even if I restart the server with option -u all.

Did anyone find a solution?

Avatar
Discard
Best Answer

Although this is not a solution to your problem, a have chosen a different approach. I have a folder with all the .po files in my language. I have written a script to load all the po files in that folder. Here is the script:

#!/bin/bash

shopt -s nullglob
# Path and the list of files to import. 
FILES=/opt/openerp/mk_MK/*-mk.po
# Database in which to import the files.
DATABASE=openerp_db
# Language you are importing.
LANG=mk_MK

for f in $FILES
do
  echo "Processing $f file..."
  # take action on each file. $f store current file name
./openerp-server -d $DATABASE -l $LANG --i18n-import=$f --i18n-overwrite
done

I'm running my testing server on ubuntu 12.10

Avatar
Discard

Hey you! I like this post... Will try it soon. Thanks

Best Answer

For me just do like this and it works fine:
Settings / Languages / Manage Languages
In the language list click "Update" the current language does not update the new text.

Avatar
Discard
Best Answer

try to remove all tranlations like this

delete from public.ir_model_fields where model like 'your_module'

then update your module in odoo

Avatar
Discard
Best Answer

I removed the rights for the specific module (which translation should be updated) from user, logoff/log in to check if the module removed succefully. 

After, I gave the same module again to the same user, logoff/login. 

Finally, I discovered the module rights just given above is coming with the updated translation. 

Avatar
Discard
Best Answer

Hello,

I've the same problems, Transalation are finished in .po file and imported in openerp but all fielsd and words are not transale untill now!

any helps please

Avatar
Discard
Best Answer

 I am new to odoo and facing the exact same issue. I updated the .po files and I don't know to force odoo to ignore the cached translation/ir_translation and use the ones in po files. I will appreciate your kind help on this as I need to deploy it in many places so I can't just translate it from GUI all from the beginning for every deployment. Thanks!

Avatar
Discard
Best Answer

Several times i recognised to update base module before seeing the results of your modified .po files

  1. Go to Settings / Installed Modules
  2. In search field enter "base" as a filter
  3. Open "base" module in form view
  4. Click on upgrade

This should load and update all .po files, because all addons have base as minimum requirement (dependency).

Avatar
Discard

This loads all Translation but old translations will be in some sort of cache. The only way I know to be sure all your translations are updated is be restarting the server.

Author

I tried this (upgrade base module) but changes to .po files did not update. Uninstalling and re-installing a module does seem to update some of .po translations, but not all of them.

I have gotten around the .po files translation problem by using the builtin 'Technical Translation' -feature which is available in developer/debug mode. I assume, that OpenERP stores the translations done in debug/developer mode into the database? I wonder if there is any way to refresh the translation cache in database.