1

Id、English、Norwegian の 3 つの列を持つ SQL テーブルがあります。Id は主キーです。私のアプリケーションでは、ラベル (GUI のボタン ++) に使用する言語を決定するためのフラグ (EN/NO) があります。アプリケーションは現在、アプリケーションがロードされるたびに select * を実行しており、アプリケーションは実行時にすべての必要な値を検索しています。しかし、すべてのインスタンスのデータセット全体をロードする代わりに、これらの値をエクスポートして dll を作成し、これらの値をローカルに保存できるようにしたいと考えています。

ビルドごとに dll が更新されるように、このコード内で作成する可能性はありますか? または、exを動的に作成するために外部プログラムを実行する必要がありますか? クラスにコピー/貼り付けする.csコード? (新しいラベル/テキストが必要になるたびに行が追加されるため、プロセスを再実行できるようにする必要があります)

これまで、エクスポートを構造化する方法について 3 つの解決策を考えてきましたが、データをエクスポートする方法についての手がかりはありません。

  1. 静的コンテキストで DataTable の状態を保持し、値を取得する方法を標準化するためのヘルプ メソッドを提供します。

  2. それぞれの一意の ID をメソッド名として含むクラスと、返す値を決定するパラメーターを作成します。

    public static class Names
    {
      public static string 12345(string language)
      {
        switch (language)
        {
            case "EN":
                return "Hello";
            case "NO":
                return "Hei";
            default:
                return "Hello";
        }
      }
    }
    
  3. ID をキーとして、値 (値として) を使用して、各言語の検索可能なリストを含むクラスを作成します。

4

2 に答える 2

10

言語ごとに異なるリソース ファイルを作成し、設定に応じて適切なリソース ファイルを読み込んでみませんか。を使用してこれを行うことができますSystem.Resources.ResourceManagerこちらの記事で詳しく説明しています。

編集: 次の SO 投稿では、C#/WinForms で多言語アプリケーションを作成するためのベストプラクティスについても詳しく説明していますか?

于 2012-05-25T10:35:43.283 に答える
1

いいえ、国際化文字列をクラス ライブラリに入れるという考えは好きではありません。フレームワークに既に組み込まれている.NET 国際化機能を使用しないのはなぜですか?

この種の作業にはクラス ライブラリではなく、リソース ファイルが最適なソリューションです ...

于 2012-05-25T10:36:31.197 に答える