PyGTK + glade + localization

The default locale on my system (Linux) is ru_US. When I change the language to Russian (LANG = ru_RU./show_form.py), the python string "hello to me" is correctly displayed (in the console), the other (field form) is in English. (LANG = ru_RU.utf-8./show_form.py - the same result).

What am I doing wrong?

I have simple python code like (show_form.py):

#!/usr/bin/env python # -*- coding: utf-8 -*- import pygtk, gtk, gtk.glade import locale, gettext APP="show_form" DIR="locale" locale.setlocale(locale.LC_ALL, '') gettext.bindtextdomain(APP, DIR) gettext.textdomain(APP) lang = gettext.translation(APP, DIR) _ = lang.gettext gettext.install(APP, unicode=False, codeset='utf-8', localedir=DIR) print _("hello to me") wTree = gtk.glade.XML("localize.glade") gtk.glade.bindtextdomain(APP, DIR) window = wTree.get_widget("window1") window.connect("delete_event", lambda wid, we: gtk.main_quit()) window.show_all() gtk.main() 

and .mo files for some languages ​​..po files below:

 # Russian translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # < asc@grodno >, 2012. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-11-14 13:54+0300\n" "PO-Revision-Date: 2012-11-14 13:58+0300\n" "Last-Translator: < aaa@bbb >\n" "Language-Team: Russian\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 16bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: show_form.py:14 msgid "hello to me" msgstr " " #: localize.glade.h:1 msgid "label text" msgstr "" #: localize.glade.h:2 msgid "button text" msgstr "" #: localize.glade.h:3 msgid "checkbutton text" msgstr "" 

and en_US (e.g. with another msgstr). And a small glade with a label, button, flag.

Upd:

Lines for creating My.mo:

 intltool-extract --type=gettext/glade localize.glade xgettext --language=Python --keyword=_ --keyword=N_ --output=show_form.pot show_form.py localize.glade.h msginit --locale=ru --input=show_form.pot msginit --locale=en_US --input=show_form.pot msginit --locale=de_DE --input=show_form.pot 

I fix the .po files after that.

And in the end:

 msgfmt ru.po -o locale/ru/LC_MESSAGES/show_form.mo msgfmt en_US.po -o locale/en_US/LC_MESSAGES/show_form.mo msgfmt de.po -o locale/de/LC_MESSAGES/show_form.mo 

Update 2: Solution

 -wTree = gtk.glade.XML("localize.glade") gtk.glade.bindtextdomain(APP, DIR) +wTree = gtk.glade.XML("localize.glade", "window1", APP) 
+6
source share
1 answer

You need to use intltool to translate your Glade files.

+1
source

All Articles