2012-04-19 9 views
2

C#でWindows CEデバイス用のプログラムを作成しており、アプリケーション自体の言語設定に従ってアプリケーションを翻訳したいと考えています。C# - Windows CE:OSカルチャ設定とは無関係のフォーム変換

私は、リソースファイルを使用してローカライゼーションに関する記事を読み、 'Localizable'プロパティと 'Language'プロパティを使用してフォームを翻訳しました。私が読んだところでは、このタイプのフォーム翻訳はOS言語設定と一緒に動作することを理解しています(私が間違っていれば私を修正します)。

今私は自分自身のプログラム内の言語設定に依存して、好ましくはリソースファイルを使用してフォーム変換を行う方法を探しています。

私は既に各フォームのLoadイベントでこの変換を行うことを考えていましたが、おそらく他の解決策やベストプラクティスがあります。どんな助けもありがとうございます。

答えて

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

0

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

+0

おかげで、私はすでに同じ考えを持っていた、私はそれで行くと思いますよ – jdetaeye

関連する問題