2012-11-15 17 views
6

私のシステムのデフォルトロケール(Linux) - en_US。ロケールをロシア語(LANG = ru_RU ./show_form.py)に変更すると、Pythonの文字列 "hello to me"が正しく(コンソールで)表示され、他の(glade形式) - 英語で表示されます。 (LANG = ru_RU.utf-8 ./show_form.py - 同じ結果)。pygtk + glade +ローカライゼーション

私は間違っていますか?いくつかの言語までのため

#!/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() 

と.moのファイル:

は、私は簡単な例(show_form.py)のためのPythonコードを持っています。 .poファイル以下:(異なるmsgStrを持つこのような)

# Russian translations for PACKAGE package.          
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER        
# This file is distributed under the same license as the PACKAGE package.  
# <[email protected]>, 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: <[email protected]>\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 "галочка" 

とen_USのファイル。ラベル、ボタン、チェックボックスが付いた小さい隙間のフォーム。

UPD:

マイ.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 

私はこの後に.poファイルを修正します。

と終了時:

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 

UPD2:ソリューション

-wTree = gtk.glade.XML("localize.glade") 
gtk.glade.bindtextdomain(APP, DIR) 
+wTree = gtk.glade.XML("localize.glade", "window1", APP) 

答えて

1

あなたのグレイドのファイルを変換するためにintltoolを使用する必要があります。

+1

明日私の.moファイル作成コマンドをセクション「Upd:」に追加します –

+0

私はintltoolを使用していますが、これは役に立ちません。 –

+0

翻訳を 'intltool-merge'してgladeファイルに戻す必要があります。 – ptomato

関連する問題