多言語にしたいwxPythonで書かれたアプリケーションがあります。 私たちの選択肢はwxPythonアプリケーションを多言語化する
- ある messages.pyファイルにすべてのUIのテキストをseprating、および にそれを使用してgettextのhttp://docs.python.org/library/gettext.html
- を使用してテキスト
を翻訳私は非常に傾いた第二の方だと 2番目の方法を使用して私はすべての私のメッセージを1つの場所でコードにすることはできませんので、私はメッセージを変更する必要がある場合、コードを変更する必要はありませんgettextの場合は、私がちょうどラッピングするように - 定数orginal MSGの代わりmessages.py
基本的に代わりの
wx.MessageBox(_("Hi stackoverflow!"))
で定数に変換私はgettextの方法と短所のいずれかの利点がある
wx.MessageBox(messages.GREET_SO)
が、優れていると思います第二の方法? 3つ目の方法はありますか?
編集: gettextの言語ファイルもコードに縛られているように見えますが、2つのメッセージが英語では同じですがフランス語では異なる場合はどうなりますか?フレンチは、英語のための異なるシナリオのためのより微妙な翻訳を持っていると思うok
経験: 私はすでに2番目の方法を行っていると私はすべてのアプリケーションは、コードからUIテキストを抽出しようとする必要がありますリファクタリング、 UIがどこに入り込んでいるのか、UIテキストが改善できるのか、gettextは整備士で、コーダーには何も入力していないし、メンテナンスが難しいと思う。
などです。 PRINT_PROGRESS_MSGは、多くの場所で同じメッセージが少しずつ異なって使用されていることを知る機会を与え、後でmsgを一度変更する必要があるときに役立つ単一の名前にマージできます。
結論:私はまだgettextを使用する利点がないと私自身のメッセージファイルを使用しています。私は少なくとも、gettextが有益になる理由をいくつか説明した答えを選択しました。 最終的な解決策は、IMO両方の方法から最高のは、私自身のメッセージ識別子は、私はいつもで複数の言語ファイルを作成し、(これはPHPですが、考え方は同じです)Web用のgettext例えば
wx.MessageBox(_("GREET_SO"))
i18nのwxPyWikiレシピページで、gettextを使用した例はありますか? http://wiki.wxpython.org/RecipesI18n – DrBloodmoney
はい私はそれを見ました、そしてそれは私がgettext方法に行きたくない理由の一つです –
あなた自身のメッセージファイルを使って言及したすべての "プロ" gettextにも存在します。しかし、その逆は真ではない。 –