1

UI を英語以外の 5 つの異なる言語で表示する必要があるという要件があります。

2 つの DLL を作成しました

  1. Component.dll
  2. Component.resources.dll

Component.resources.dllUI に表示されるすべての文字列とクラスのみが含まれます

public class PResources
    {
        private static System.Resources.ResourceManager resourceMgr = new System.Resources.ResourceManager(typeof(PEditResources));

        /// <summary>
        /// Get NLS String method string method
        /// </summary>
        /// <param name="identifier"></param>
        /// <returns></returns>
        public static string GetNLSString(string identifier)
        {
            return resourceMgr.GetString(identifier, Thread.CurrentThread.CurrentUICulture);
        }
        /// <summary>
        /// Returns the NLS Resource Mgr.
        /// </summary>
        /// <returns></returns>
        public static System.Resources.ResourceManager GetNLSResourceMgr()
        {
            return resourceMgr;
        }
}

Component.dllラベルテキストを表示するには、次を使用します

label1.text = PResources.GetNLSString("IDS_LABEL1");

英語では正常に動作します...しかし、言語設定をフランス語などに変更しても、表示される文字列は引き続き英語のテキストです。

注:Component.Resources.dll文字列はすべての言語に翻訳されています。

GetNLSStringデバッグすると...関数Thread.Current.UICultureがフランス語であることがわかりました...しかし、resourceMgrオブジェクトはまだ英語の.dllパスを指しており、英語でもありますThread.Current.Culture!

これに対する解決策はありますか?私は何かを逃したことがありますか。

4

1 に答える 1

0

カルチャごとに、サポートするカルチャごとに(メインプログラムがあるフォルダに)フォルダを作成する必要があります(id = 2文字のISOコード+オプションの2文字の領域)。

このフォルダー内に、ターゲットカルチャの文字列/定数のみを含む*.resources.dllを配置します。

同じプロジェクト内にexample.resxファイル(デフォルトのカルチャ用)とフランス語用のexample.fr.resxファイルを作成すると、VisualStudioがこれを自動的に実行します。

于 2010-09-08T07:26:54.130 に答える