mieki256's diary



2008/03/09() [n年前の日記]

#1 [python] wxPythonを勉強中

iアプリ用のツールを作ろうと思い立って、せっかくだからGUIのツールでも、と。で、wxPythonを勉強しようかと。

wxGladeを使ってみたり。 :

GUIの設計ができるらしいのでインストールして使ってみたり。とにかく Panel と Sizer を置いて入れていくみたいな感じなのだなと。

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 アプリケーションを地域化する というページには、
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

  を使って _ を使えるようにしなければなりません。

  この操作は _ をモジュール内だけのグローバル名前空間に 組み入れるので、モジュール内の _ の呼び出しだけに影響 します。

Python日本語マニュアル - The Japanese manual of Python より

という記述が。こっちを使えばいいのかな?

_6.28.3 プログラムやモジュールを国際化する によると、
  • pythonスクリプト中から翻訳すべき文字列を取り出す pygettext.py なるスクリプト。
  • 翻訳ファイル(?)に変換する msgfmt.py なるスクリプト。
があるらしい。pythonインストールフォルダ/Tools/i18n/以下に入ってた。

試してみたり。
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%.py
ja.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 をコピー。

以上です。

過去ログ表示

Prev - 2008/03 - Next
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project