1

wxWidgets を使用して古いアプリケーションを書き直しています。このアプリケーションは、言語辞書の古い自家製gettextメカニズムを使用しており、wxWidgets でサポートされている標準的な方法を使用して置き換えたいと考えています。

問題は、アプリケーションが内部でユーザーが読み取り可能な文字列を使用するのではなく、選択した言語辞書を使用して翻訳する必要がある記号識別子を使用することです。言い換えれば、翻訳は常に行われるべきです。たとえば、コードは次のように述べています。

wxMenu * mnuParamSelect = new wxMenu();
mnuParamSelect->Append(wxID_mnuiParamSelect,
                       _("mnuiParamSelect"),
                       _("hlpParamSelect"));

このように、常に翻訳する必要があるデフォルトの記号言語を使用します (記号をfor English、forなどに変換するなど)。mnuiParamSelectSelect the parametres...Vyber parametry...cs_CZ

を考えると、これは通常のアプローチではないようgettextです。私はに非常に新しいgettextです。シンボリック言語識別アプローチに関連する問題に注意する必要がありますか?

あなたの時間と経験をありがとう、

ペトル

4

2 に答える 2

3

私の知る限り、最初の大きな問題は、新しい翻訳を作成するのが難しい (または少なくとも時間がかかる) ことです。翻訳者はシンボリック ID しか見ることができず、別のファイルで対応する英語のメッセージを見つける必要があるためです。

2 番目の問題: 「%d ファイル」のような printf スタイルのフォーマットを使用している場合、シンボリック ID にこれらのフォーマット指定子が含まれていないと、gettext (つまり msgfmt) は構文チェックを行いません。たとえば、翻訳者が "%d" を 1 つ追加しすぎると、その翻訳を使用するとアプリケーションがクラッシュする可能性があります。

于 2012-12-04T16:27:05.617 に答える