2011-02-07 8 views
2

私たちは100以上のフォームを持つ大規模なソリューションを持っています。複数フォームのグローバリゼーション

すべてのフォームに共通のテキストがあります。たとえば、少なくとも20のフォームに「ジョブ」という単語があります。

私たちは異なる市場への移行を検討しており、フォームはすべて異なる言語であることを求めています。 .NETのグローバリゼーション手法を見てみると、標準的なアプローチではそれほどうまくいきません。そのアプローチはコード化された解決策です。複製を避けたいのですが、より簡単な解決法があるかどうかを検討していました。

私たちは、フォームにバインドして、そのリソースファイル内の値を選択してラベルやボタンにバインドできるresx(リソースファイル)を考えました。テキスト。私たちが知る限り、このような簡単な解決策を見つけることはできません。

各フォームの背後に.resxファイルを作成できることがわかっていますが、将来的にはもっと多くの言語を追加したい場合はオーバーヘッドが大きくなります。また、「ジョブ」という単語が1つの形式。

リソースファイル(またはSatellite Assembly)を各フォーム/コンポーネント(コードなし)にバインドして表示する値を選択できる解決策はありますか?または、類似の代替ソリューションがありますか?

+0

コードは自動生成されていますが、費用はかかりません。非標準的な仕事をするためのローカリゼーションサービスを依頼すると、多くの費用がかかります。 –

答えて

0

最後に、プロジェクトのサイズのために、コード化されたソリューションを使用する必要がありました。

新しいソリューションで追加しました。これには、使用したすべての言語とデフォルトセット(英語)を含むリソースファイルが含まれています。Visual Studioは、我々が直接リソースファイルLanguageResourcesとアクセスを呼び出すことができるリソース・ファイルのための強力な型指定されたクラスを作成しますので、我々は

job_label.Text = LanguageResources.job; //example to display "job" on a label 

を使用して、すべてのコンポーネントのテキスト値を変更し、各ページのコンストラクタで

その中の任意のフィールド。 次に、LanguageResources.de-DE.resxを作成し、英語版と同じキーを使用していますが、ドイツ語の値を使用しています。

.NETのグローバリゼーション手法のおかげで、.configファイルで言語を設定できるため、アプリケーションの実行時に表示する必要がある言語を確認して適切なリソースファイルにアクセスできるようになります。言語が認識されない場合は、デフォルトで英語になります。

+0

サンプルコードを共有できますか? – Smith

0

これを非常に簡単に行う方法があります。まず、翻訳したいすべてのフォームのすべてのコントロールのTextプロパティのリストを作成します( "OK"、 "Cancel"、 "Job"、 "Delete"など)。次に、あなたがサポートしたい言語で各用語を翻訳する人を取得します(そして、サポートされている言語ごとに別々の列に翻訳を追加します)。次に、アプリケーションとこのリスト(CSV、データベース、XMLファイルなど)を埋め込みます。

各フォームのLoadイベントでは、フォーム上の各コントロールを反復するメソッド(再帰的にコンテナコントロール上にあるコントロールを選択する)を呼び出し、翻訳リストのコントロールのTextプロパティを検索し、テキストを翻訳された値に変更します(現在の言語に基づいて、あなたが他の場所で決定および/または設定します)。

埋め込みが簡単で、追加の用語や追加の言語が追加されているので、簡単にExcelのスプレッドシートを使用しました。

.Netのビルトイングローバリゼーション機能を使用すると、IMHOという痛みの中でエクササイズが行われます。一般的に、プログラマは、サポートする言語に堪能である必要があります。

+0

この戦略は、さまざまな場所で異なる翻訳を持つ単語が1つ(たとえば、フランス語の動詞としての検索はChercherですが、名詞としての検索はRechercheです)まで機能します。その後、名前空間(例:Search.verb)と管理の頭痛のビットで終わります。 –

+0

面白いアイデアですが、私の上のポストは英語が同じだが、あなたの使い方によっては、異なる言語で異なるスペル/意味を持つかもしれないということを言います。ありがとう、これを念頭に置いておきます。 – Andrew

+0

私はこのことが*問題になる可能性がある場所を見ることができます - この戦略を使用したときに決して上がったことはありませんでしたが、私は主に中国語と日本語に翻訳していました。問題はありましたが、それについて言及するにはあまりにも丁寧でした。 :)これは簡単な方法は、名詞を示すために "N:Search"、動詞を示す "V:Search"のように英語のコントロールにラベルをつけ、 "Search"に "translate"英語モードでは – MusiGenesis

関連する問題