7

以下の短い記事を使用して多言語を追加しました。

たとえばドイツ語を追加すると、次のファイルが作成されます。 formMain.resx formMain.de-DE.resx formMain.Designer.cs formMain.cs

最初のファイルには、文字列、画像などのニュートラル言語のリソースがあります..

そのため、コードで使用される文字列のリソースも追加する必要があります。新しいリソース ファイルを追加し、formMain.Strings.resx という名前を付けます。次に、翻訳する必要があるすべての文字列の名前と値のペアを入力します。リソース ファイルを追加すると、resx デザイナーを閉じるたびに formMain.Strings.Designer.cs という名前の別のファイルが自動的に再生成されるため、自動的に入力されます。

formMain.Strings.de-DE.resx という名前の別のリソースを追加します。前のリソースと同じ名前キーを追加し、値を対応するドイツ語に変更します。ソースから作成したリソースにアクセスするには、このようになります。

MessageBox.Show(formMain_Strings.SameStringName);

ただし、タイ語に変更しました。VS でアプリを実行すると、すべて正常に動作します。

ただし、セットアップ プロジェクトを追加してクライアント マシンにインストールするとすぐに、言語がタイ語に変更されず、デフォルトの言語のままになります。

そのため、リソース ファイルと th-TH dll をプロジェクト セットアップに追加しました。そして、私はまだ同じ問題を抱えています。

Packaging file 'Lang.Strings.resx'...
Packaging file 'MultiLanguage.resources.dll'...
Packaging file 'MultiLanguage.exe'...
Packaging file 'Lang.Strings.th-TH.resx'...

ビジュアルスタジオで実行すると、すべてが正常に機能します。インストールしたら実行するために必要なことはありますか。私が持っている各ファイルのすべてのプロパティはデフォルトのままです。

どうもありがとう、

=========

static void Main()
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = 
new System.Globalization.CultureInfo("th-TH");

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
4

2 に答える 2

1

アプリの起動時にこれを追加してみてください (存在しない場合):

Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture;

これを機能させる方法のいくつかのオプションと、実行時にロケールを選択するためのオプションについて説明している短い記事を次に示します。


コメントの後に編集:

サテライト アセンブリが適切な場所にあり、正しくビルドされていることを確認してください。私が参照したその記事から:

「.NET ランタイムがアプリケーションを開始すると、可能なサテライト アセンブリ ファイルが検索されます。サテライト アセンブリ ファイルは、.exe ir .dll の代わりに .resources.dll 拡張子を持つリソースのみのアセンブリ ファイルです (メイン アセンブリがライブラリの場合)。 . サテライト アセンブリ ファイルは、常にアプリケーションのメイン ディレクトリの言語固有のサブ ディレクトリにあります。アプリケーション ファイルが Converter.exe の場合、日本語のサテライト アセンブリ ファイルは ja\Converter.resources.dll です。

ここで確認すべき点がいくつかあります。アセンブリの名前を確認してください。また、適切な場所にあることを確認してください。あなたの場合、実行可能ファイルの下の適切な名前の th-TH サブディレクトリにある必要があります。そこにある場合は、適切に見つけて使用する必要があります。

このトピックに関する別の優れた情報源を次に示します。

于 2009-04-28T16:59:22.747 に答える