2013-03-12 16 views
5

私はC#アプリケーションをほぼ完成させました。今のところ残っていることは多言語サポートを実装することだけです。Winformsアプリケーションで複数の言語をサポートする

すでに画面に表示されているすべてのテキストの文字列を含むリソースファイルを作成しました。私の英語のリソースファイルの

例:私のオランダのリソースファイルの

Name     | Value      | Comment 
------------------------------------------------------------------------------ 
lblName     | Name:      | Name EN 

例:

Name     | Value      | Comment 
------------------------------------------------------------------------------ 
lblName     | Naam:      | Name NL 

がどのように私は私のLabellblName)のTextプロパティにフィールドValueをバインドすることができますか?

私は.NET Framework 3.5を使用しています。

+1

これは、指定しなかったGUIフレームワークに完全に依存します。 –

+0

私はWinformsを使用しています – Max

+2

この記事を見てください[.NETのリソースファイルを使用したローカリゼーションプロセス](http://www.codeproject.com/Articles/79397/Localization-process-by-using-resource-files-in -NE) –

答えて

-3

異なる言語の値を1つのデータベーステーブルに入れます。

ユーザーに言語を選択させます。

言語の選択に応じて、特定の言語に関するデータベースからデータを取得します。

そしてラベルテキストでバインドします。私はこの質問を知って

<asp:Label runat="server" Text="<%$ Resources:DutchLanguage, Value %>"></asp:Label> 
+1

-1 - OPはデータベースではなく、リソースファイルを使用しています。 –

+3

これは正しい方法ではないと思います。リソースファイルは作成されていません。 – Max

+0

これは実際には良い解決策ですが、データベースからフェッチされたデータを翻訳するには、たとえばルックアップテーブルのテキストセルを使用します。この場合は役に立たない。 +1の努力。 :) –

-2

これを試してみてください

はあなたが使用することができますC#でリソースファイルにアクセスするにはResourceManager。 まず、言語に応じてリソースマネージャを作成します。 これには2つのオプションがあります。スイッチまたはif文(言語がメニューによって決定されている場合)を使用するか、ローカリゼーションを使用してコンピュータの現在のカルチャを使用することができます。最後に、両方の方法で、GetString()メソッドを呼び出すことができます。私はあなたのケースではlblNameと信じているキーを提供しています。

N.B:以下の例では、メニューから言語を取得する最初の方法を使用します。

string selectedLanguage = comboBoxLang.Text; // Comes from a menu option 
string resourceFile = string.Empty; 

/***/ 
Logic to retrieve the proper resourceFile depending on the selectedLanguage. 
/***/ 

ResourceManager rm = new ResourceManager(resourceFile, Assembly.GetExecutingAssembly()); 

// Set your label text. 
lblName.Text = rm.GetString("lblName"); 
+0

私はWindowsフォームを使用しています。これはWebページ(ASP)ではなく、デスクトップのC#アプリケーションです。 – Max

+0

C#アプリケーションについて言及しましたが、最初から指定していません –

+1

Webアプリケーションを使用してASPタグを使用し、タグ:WinFormsが必要です。 – Max

0

前に長い時間を尋ねてきたのが、何の返事がなかったので、ここで私が提案するものです::

関連する問題