2008/03/09(日) [n年前の日記]
#1 [python] wxPythonを勉強中
iアプリ用のツールを作ろうと思い立って、せっかくだからGUIのツールでも、と。で、wxPythonを勉強しようかと。
◎ wxGladeを使ってみたり。 :
GUIの設計ができるらしいのでインストールして使ってみたり。とにかく Panel と Sizer を置いて入れていくみたいな感じなのだなと。
python のソースコードの形で出力もできるらしいのだけど、該当ソースはそのままでは動かなかった。IDが定義されてない云々のエラーが出る。うーむ。
python のソースコードの形で出力もできるらしいのだけど、該当ソースはそのままでは動かなかった。IDが定義されてない云々のエラーが出る。うーむ。
◎ XRCedも使ってみたり。 :
xml の形で出力してくれるらしい。
◎ gettextにも手を伸ばす。 :
文字列を、環境の国別設定によって変えてくれるらしい。翻訳ファイル?があれば、の話みたいだけど。
以下のページを参考にしながら作業。
_Pythonによる国際化プログラミング - Heretic Programmer(2007-09-08)
_国際化(i18n)メモ - 2006-01-18 - himainuの日記
_wxPythonの国際化について ? Plone en sourdine
文字列をことごとく「_("english message.")」と書いておけばいいらしいのだけど。class の中にそういう記述を書いたら、「'_' なんて文字は知らねえよ」とエラーが。 _6.28.3.2 アプリケーションを地域化する というページには、
_6.28.3 プログラムやモジュールを国際化する によると、
試してみたり。
スクリプトのあるフォルダに、locale/ja/LC_MESSAGES/ とうフォルダを作成。hoge.mo をコピー。
以下のページを参考にしながら作業。
_Pythonによる国際化プログラミング - Heretic Programmer(2007-09-08)
_国際化(i18n)メモ - 2006-01-18 - himainuの日記
_wxPythonの国際化について ? Plone en sourdine
文字列をことごとく「_("english message.")」と書いておけばいいらしいのだけど。class の中にそういう記述を書いたら、「'_' なんて文字は知らねえよ」とエラーが。 _6.28.3.2 アプリケーションを地域化する というページには、
import gettext gettext.install('myapplication', '/usr/share/locale', unicode=1)てな感じに書け、とあるのだけど…。む。 _6.28.3.1 モジュールを地域化する というページに、
import gettext t = gettext.translation('spam', '/usr/share/locale') _ = t.ugettextというのがあった。 _6.28.2.1 NullTranslations クラス の中に、
install( [unicode])という記述が。こっちを使えばいいのかな?
unicode フラグが偽の場合、このメソッドは self.gettext() を組み込み名前空間に組み入れ、"_" と結び付けます。 unicode が真の場合、self.gettext() の代わりに self.ugettext() を結び付けます。 標準では unicode は偽です。
この方法はアプリケーションで _ 関数を利用できるようにする ための最も便利な方法ですが、唯一の手段でもあるので注意してください。 この関数はアプリケーション全体、とりわけ組み込み名前空間に影響する ので、地域化されたモジュールで _ を組み入れることが できないのです。その代わりに、以下のコード:
import gettext
t = gettext.translation('mymodule', ...)
_ = t.gettext
を使って _ を使えるようにしなければなりません。
この操作は _ をモジュール内だけのグローバル名前空間に 組み入れるので、モジュール内の _ の呼び出しだけに影響 します。
_6.28.3 プログラムやモジュールを国際化する によると、
- pythonスクリプト中から翻訳すべき文字列を取り出す pygettext.py なるスクリプト。
- 翻訳ファイル(?)に変換する msgfmt.py なるスクリプト。
試してみたり。
set MYSCRIPTNAME=hoge set GETTEXT_TOOLS_INSTALL_PATH=c:\usr\local\Python25\Tools\i18n %GETTEXT_TOOLS_INSTALL_PATH%\pygettext.py -k_ -o ja.po %MYSCRIPTNAME%.pyja.po なるファイルが出来上がった。該当ファイルの中身を日本語に書き換えていくらしい。
"Language-Team: LANGUAGE <LL@li.org>\n" ↓ "Language-Team: japanese\n"
"Content-Type: text/plain; charset=CHARSET\n" ↓ "Content-Type: text/plain; charset=UTF-8\n"
#: hoge.py:61 msgid "E&xit" msgstr "" ↓ #: hoge.py:61 msgid "E&xit" msgstr "終了(&X)"で、.moに変換。
%GETTEXT_TOOLS_INSTALL_PATH%\msgfmt.py -o %MYSCRIPTNAME%.mo ja.poしようとしたけどエラーが。どうも ja.po は utf-8 じゃなくて utf-8n で保存しないといけないっぽい。再度変換。今度は hoge.mo が出来た。
スクリプトのあるフォルダに、locale/ja/LC_MESSAGES/ とうフォルダを作成。hoge.mo をコピー。
[ ツッコむ ]
以上です。