重複の可能性:
CurrentThread.CurrentUICulture は正しく設定されていますが、asp.net では無視されているようです
私は多くのフォーラムで尋ねましたが、誰も私を助けることができないようです!
default.aspx:
<asp:Literal ID="Literal1" Text="<%$Resources:lookingfor %>" runat="server"/>
default.aspx.vb:
Shared rm As ResourceManager = HttpContext.Current.Application("RM")
Protected Overrides Sub InitializeCulture()
Dim cultureInfo As Globalization.CultureInfo = Globalization.CultureInfo.CreateSpecificCulture("en")
Threading.Thread.CurrentThread.CurrentCulture = cultureInfo
Threading.Thread.CurrentThread.CurrentUICulture = cultureInfo
'Here I log the value of currentculture
ReportError("default.aspx:InitializeCulture.CurrentCulture", System.Threading.Thread.CurrentThread.CurrentCulture.ToString)
ReportError("default.aspx:InitializeCulture.CurrentUICulture", System.Threading.Thread.CurrentThread.CurrentUICulture.ToString)
'log file shows that:
'CurrentCulture = "en-US"
'CurrentUICulture= "en-US"
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
'again logging the currentculture:
ReportError("default.aspx:page_load.CurrentCulture", System.Threading.Thread.CurrentThread.CurrentCulture.ToString)
ReportError("default.aspx:page_load.CurrentUICulture", System.Threading.Thread.CurrentThread.CurrentUICulture.ToString)
'log file shows that:
'CurrentCulture = "en-US"
'CurrentUICulture= "en-US"
Me.Page.Title = rm.GetString("homewelcome")
End If
End Sub
グローバル.asax:
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
Application("RM") = New ResourceManager("strings", Assembly.Load("strings"))
End Sub
\bin フォルダー: bin フォルダーには次のものがあります。
bin\strings.txt ビン\nl\strings.nl.txt bin\en\strings.en.txt
私は次のようにdllを生成します:
resgen 文字列.txt 文字列.リソース al /embed:strings.resources,strings.resources /out:strings.dll resgen nl\strings.nl.resources al /embed:nl\strings.nl.resources,strings.nl.resources /out:nl\strings.resources.dll /c:nl resgen en\strings.en.resources al /embed:en\strings.en.resources,strings.en.resources /out:en\strings.resources.dll /c:en
今、default.aspxをロードすると
Literal1 コントロールには、「何をお探しですか?」と表示されます。これは App_LocalResources\default.aspx.en.resx の値なので、正しいです。
しかし、ページ タイトル (Me.Page.Title = rm.GetString("homewelcome")) には、bin\strings.txt の値が表示されます。bin\en\strings.txt の値を表示したいので、それはもちろん正しくありません
つまり、リソース マネージャーはカルチャを無視していますが、リテラルは正しいカルチャを使用しています!
ここで何が欠けていますか?