2

Windows CE デバイス用に C# でプログラムを作成しており、アプリケーション自体の言語設定に従ってアプリケーションを翻訳したいと考えています。

リソース ファイルを使用したローカリゼーションと、'Localizable' および 'Language' プロパティを使用したフォームの翻訳に関するいくつかの記事を既に読みました。私が読んだことから、このタイプのフォーム翻訳は OS の言語設定で機能することがわかりました (間違っていたら訂正してください)。

現在、できればリソース ファイルを使用して、プログラム内の言語設定に応じてフォームの翻訳を行う方法を探しています。

各フォームの Load イベントでこの変換を行うことは既に考えていますが、これには他の解決策やベスト プラクティスがあるかもしれません。どんな助けでも大歓迎です。

4

2 に答える 2

0

Language.resx、Language.[language]-[country].resx のローカライズ方法を使用する場合、生成されたクラス Language には Culture という名前のプロパティがあり、現在のシステム カルチャをオーバーライドするように設定できます。

Language.Culture = new CultureInfo("sv-SE");
label1.Text = Language.my_language_string;

ResourceManager クラスを使用する場合は、CultureInfo パラメーターを受け取るメンバー GetResourceSet() があります。GetResourceSet を自分で使用しようとしたことはありませんが、使用できるもののように思えます。

ResourceManager CultureResourceManager = new ResourceManager("My.Language.Assembly", System.Reflection.Assembly.GetExecutingAssembly());
ResourceSet resourceSet = CultureResourceManager.GetResourceSet("sv-SE", true, true);
resourceSet.GetString("my_language_resource");

MSDN リンク: http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.getresourceset(v=vs.80).aspxo

于 2012-04-19T11:32:05.867 に答える
0

Load イベントに配置する場合は、テンプレート フォームを作成することを検討してください。テンプレート フォームのどこかに、ローカライズ チェックを追加します。次に、他のフォームにテンプレートを継承させると、デフォルトで Load イベントが発生します。

于 2012-04-19T09:13:12.657 に答える