0

これは多言語のコードです:

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Text;
using System.Threading;
using System.Windows.Forms;

namespace WindowsFormsMultiLanguage
{
    public partial class Form1 : Form
    {
        ResourceManager m_resourceManger;
        public Form1()
        {
            InitializeComponent();

            m_resourceManger = new ResourceManager("WindowsFormsMultiLanguage.Localization", Assembly.GetExecutingAssembly());
            // Init UICulture to CurrentCulture
            Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
            // Init Controls
            UpdateUIControls();
        }



        private void UpdateUIControls()
        {
            try
            {
                if (m_resourceManger != null)
                {

                    this.label1.Text = m_resourceManger.GetString("test1");
                    this.label2.Text = m_resourceManger.GetString("test2");
                }
            }
            catch (System.Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
        private void OnLanguageChange(object sender, EventArgs e)
        {
            RadioButton radioButton = sender as RadioButton;
            string culture = string.Empty;

            switch (radioButton.Text)
            {

                case "French - France (fr-FR)":
                    culture = "fr-FR";
                    break;

                case "U.S. English (en-US)":
                    culture = "en-US";
                    break;

            }

            // This is used for the language of the user interface
            Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture);

            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culture);
        }

    }


}

エラーメッセージが表示されます。この時点でリソースアイテムtest&、test2を解決できません。 this.label1.Text = m_resourceManger.GetString("test1"); this.label2.Text = m_resourceManger.GetString("test2");

英語用に1つ、フランス語用に2つ目のリソースファイルを2つ追加しましたが、何が間違っているのかわかりません。

![ここに画像の説明を入力してください] [1]![ここに画像の説明を入力してください] [2]

4

1 に答える 1

0

Localizationリソースが名前空間にない可能性があるため、コンストラクターLocalizationのパラメーターが間違っています。問題を見つけるのに十分な情報がないので、私はここで推測しています。"Localization.Localization"ResourceManager

編集:プロジェクトをダウンロードし、使用しているVisual Studio 2008にダウングレードし(.slnでは11から10に、.csprojでは2か所で4.0から3.5に変更)、コンポーネントMicrosoft.CSharpへの参照を削除しました。プロジェクトが構築され、実行しましたが、エラーはありませんでした。関数UpdateUIControlsは最初に一度だけ呼び出されましたが、言語を変更したときは呼び出されませんでした。UpdateUIControls私は2つの主要な行をから最後までコピーしOnLanguageChange、その後、言語を変更するとテキストが変更されていました。

ですから、問題はありません。問題はどこかにあります。

于 2012-11-02T10:56:59.667 に答える