0

App_LocalResources ファイルを使用する Web ページがあり、2 つの言語に翻訳しています。

これは本当にうまくいきます。しかし、2 つのページを開くと、かなり奇妙な問題が発生します。英語版を開くと、私のデンマーク語の URL も英語です。最初にデンマーク語の URL を開くと、英語の URL はデンマーク語です。CTRL+F5 を押すと、言語が変わります。

ここで結果を見ることができます:

適切な言語をすぐにロードする必要があるため、これは本当に面倒です。

butbtc.aspx ページの私のコードは次のとおりです (Page_Load も試しました)。

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    SetupLanguage();

}

私の SetupLanguage メソッドは次のとおりです。

private void SetupLanguage()
    {
        if (!string.IsNullOrEmpty(CurrentLanguage))
        {
            if (CurrentLanguage == "da")
            {
                CultureInfo dkinfo = CultureInfo.CreateSpecificCulture("da-dk");
                CultureInfo.DefaultThreadCurrentCulture = dkinfo;
                CultureInfo.DefaultThreadCurrentUICulture = dkinfo;
                Thread.CurrentThread.CurrentCulture = dkinfo;
                Thread.CurrentThread.CurrentUICulture = dkinfo;

                Page.Title = GetLocalResourceObject("PageTitleString").ToString();
                return;
            }
        }
        CultureInfo info = CultureInfo.CreateSpecificCulture("en-us");
        CultureInfo.DefaultThreadCurrentCulture = info;
        CultureInfo.DefaultThreadCurrentUICulture = info;
        Thread.CurrentThread.CurrentCulture = info;
        Thread.CurrentThread.CurrentUICulture = info;

    }

私の CurrentLanguage プロパティは次のように定義されています。

 public string CurrentLanguage
    {
        get
        {
            var toolValue = Page.RouteData.Values["language"];
            if (toolValue != null && !string.IsNullOrEmpty(toolValue.ToString()))
            {
                return toolValue.ToString();
            }
            return string.Empty;
        }
    }

私のルートに意味がある場合、それは次のとおりです。

  routes.MapPageRoute("Buy Bitcoins",
                        "buybtc/{language}",
                        "~/buybtc.aspx");
4

1 に答える 1

2

次のように InitializeCulture をオーバーライドする必要があります。

protected override void InitializeCulture()
{
    SetupLanguage();
    base.InitializeCulture();
}

これは、ページのライフサイクルの早い段階で呼び出されます。参照: http://msdn.microsoft.com/en-us/library/bz9tc508.aspx

于 2013-05-20T01:23:41.240 に答える