App_LocalResources ファイルを使用する Web ページがあり、2 つの言語に翻訳しています。
これは本当にうまくいきます。しかし、2 つのページを開くと、かなり奇妙な問題が発生します。英語版を開くと、私のデンマーク語の URL も英語です。最初にデンマーク語の URL を開くと、英語の URL はデンマーク語です。CTRL+F5 を押すと、言語が変わります。
ここで結果を見ることができます:
- http://www.btcglobe.com/buybtc.aspx (英語版)
- http://www.btcglobe.com/buybtc/da (デンマーク語版)
適切な言語をすぐにロードする必要があるため、これは本当に面倒です。
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");