C#(winforms)アプリケーションを多言語にしたいと思います。私の考えは:
- いくつかのテキストファイルに翻訳を入れます。各「文」またはフレーズには、一意のID(整数)が含まれます。
- アプリの起動時に、アプリにあるすべてのフォームのすべてのコントロールを繰り返し処理し(これは、各フォームの「Load」イベントハンドラーで実行する必要があると思います)、そのタイプのコントロールをテストします。
- つまり、ボタンまたはメニュー項目の場合は、デフォルトの「テキスト」プロパティを読み取り、このフレーズを1つのテキストファイルで検索し、一意のIDを読み取り、このIDを介して(他の)テキストファイルで翻訳されたフレーズを検索します。
- 次に、コントロールの「Text」プロパティを翻訳されたフレーズで上書きします
これにより、言語ごとにフレーズを含む個別のテキストファイルを作成できます(将来、個別の翻訳を維持するのは簡単です。txtファイルは1つだけです)。
- 私はあなたから聞きたいです-これを達成するためのより良い/より簡単な/より速い/より多くの「プロ」の方法がある場合は専門家。
- どの形式の翻訳テキストファイルを使用する必要がありますか(プレーンテキスト、XML、ini ....)-人間が読める形式である必要があります。XMLでフレーズを検索する方が、プレーンテキストファイルで行ごとに検索して特定のフレーズ/文字列を検索するよりもC#で高速になるかどうかはわかりません...?
- 編集-ユーザー(コミュニティ)が私のアプリを自分の母国語に翻訳できるようにしたい(つまり、Microsoftのリソースがゲームから外れている)
事前にどうもありがとうございました。
クローズ-私の解決策: 元のコンセプトを維持しているようです-すべてのフレーズはプレーンテキストファイルの別々の行にあります-Unicodeエンコーディング(および行の先頭にあるID)。IDも削除して行番号だけを使用することを考えていましたが、高度なテキストエディタ(メモ帳には行番号が表示されません)が必要で、誰かが誤って「行の削除」のショートカットを押して気付かなかった場合、アプリ全体が夢中になる :)
//sample of my translation text file for one language
0001:Text of my first button
0002:Text of my first label
0003:MessageBox title text
...etc etc