1

プログラムを別の言語で使用できるようにしようとしています。language_en という名前のリソース ファイルがあります。

実行時に、language_en の各文字列の値を変更したいと考えています。

language_en のすべての文字列とフォーム上のコントロールを保持する .ini ファイルを作成しました。ロード中にそのファイルを使用すると、コントロールのテキストを簡単に変更できます。例: 「Yes」から「Ja」までの Button1 のテキスト。

リソースファイルは読み取り専用であるため、同じことはできません。私ができる 1 つの方法は、言語ごとに複数のリソース ファイルを作成することです。ただし、.ini ファイル内ですべて実行できるようにしたいと考えています。

私はこのようなことを試みていました:

ResourceSet RSet = English.ResourceManager.GetResourceSet(
                        CultureInfo.CurrentCulture, true, true);

foreach (DictionaryEntry Entry in RSet)
{
    Entry.Value = ? 
}

しかし、反復中にコレクションを変更しようとしているだけでなく、値が読み取り専用であるため、明らかに機能しません。

誰でも私が取ることができるアプローチを知っていますか?

PS Application.CultureInfo はどこで定義すればよいですか? InitializeComponent()の前?

4

1 に答える 1

4

.NET でこれを行う正しい方法は、次のように複数のリソース ファイルを作成することです。

リソース ファイル Resource.resx があるとします。これは、UI の既定の英単語として機能します。スペイン語のサポートを追加する場合は、Resource.es.resx という名前のリソース ファイルを追加するだけです (このファイルにはまったく同じものが含まれます)。キーは元のファイルと同じですが、値はスペイン語の翻訳になります)、同じディレクトリにあります。ユーザーがシステム言語をスペイン語に変更すると、.NET は自動的に正しいリソース ファイルを利用します。同様に、正しい拡張子のリソース ファイルを追加するだけで、必要な数の言語のサポートを追加できます。

于 2013-09-09T09:23:28.353 に答える