0

私はすでに多言語ウェブサイトのソリューションを持っていますが、それが良いソリューションであるかどうかはわかりません..そして可能な限り柔軟です. まず、Visual WebGUI を使用してプロジェクトを開発しています。簡単に言うと、webgui は Web プログラミングですが、WinForms に非常に似ています。

だから、ここにあります:

  1. MDI アプリケーションがあります。これは、上部に MainMenu があり、内部で多くのウィンドウを開く機能を備えたシンプルな Web ページです。

  2. まず、メインのスタートアップ プロジェクトで resx ファイルを作成します。"myStrings.resx"デフォルトの言語と「」をドイツ語の翻訳としましょう"myStrings.de-DE.resx

  3. 翻訳されるすべての文字列は、その 2 つのリソース ファイルに含まれている必要があります。

  4. さて、私の最大の関心事。すべてのクラス (フォームまたはフォームなし) で、次のようなメソッドが必要です (この例では、変換するコントロールは 1 つだけです)。

    private void adjustCulture()
        {
            System.Resources.ResourceManager rm = new System.Resources.ResourceManager("MyApp.myStrings", typeof(testWindow).Assembly);
            label2.Text = rm.GetString("DefaultString", culture);
        }
    

そして、この関数をすべてのウィンドウに個別に実装する必要があるため、これは非常に気になります。また、そのウィンドウ内のすべてのコントロール (翻訳されるもののみ) とは限りません。そのため、少し「柔軟性がありません」。

5.また、デザイナーでラベルを初期化することはできません。コンストラクターですべての初期化を手動で行う必要があります。

label2.Text = rm.GetString("DefaultString", culture);

(or in Designer partial class inside InitializeComponent method - but also, manually).

6.最後に、誰かが言語を変更した場合:

すべてのウィンドウの Load イベントで、常にadjustCulture関数を呼び出す必要があります。まず第一に、初期化する..第二に、誰かが (MDI メニューで) 言語をドイツ語に変更し、その瞬間に MDI で 3 つのウィンドウを開いたときに..全員を個別に翻訳する必要があります。そのため、開いているウィンドウ ハンドラーをどこかに保存し、全員の Load イベントを呼び出す必要があります。

それは多言語 webgui アプリケーションの良い解決策ですか? または、より良い解決策はありますか?より柔軟ですか?

4

1 に答える 1

0

これを行う 1 つの方法は、各言語ごとにキーと値のペアを含む xml ファイルを用意し、それをさまざまな言語の翻訳者として使用することです。この場合、キャッシング、rtl/ltr、および各式に必要なその他の必要な属性を実装することもできます。そのためのライブラリを作成して、さまざまな言語のサポートを簡単に追加し、翻訳やその他の機能を自動化することもできます。

于 2012-10-18T08:32:01.270 に答える