asp.net локализовать текст из файлов в файлах папки \bin

Я изо всех сил пытаюсь получить значения из правильного strings.txt в моих файлах ресурсов в моей папке \bin при переключении языков.

[по умолчанию.aspx.vb]

Partial Class _Default
    Inherits System.Web.UI.Page

    Shared rm As ResourceManager = HttpContext.Current.Application("RM")

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Label.Text = rm.GetString("homewelcome") '"Alles over trouwen, voor je perfecte bruiloft"
    End Sub

    Protected Overrides Sub InitializeCulture()
        SetLanguage(Request.Url.ToString)
    End Sub

    Public Shared Sub SetLanguage(ByVal URL As String)
        Dim lang As String = ""
        If URL.Contains("www.domain.nl") Then
            lang = "nl"
        ElseIf URL.Contains("www.domain.com") Then
            lang = "en"
        End If
        System.Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(lang)
        System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(lang)
    End Sub
End Class

[глобальный.asax]

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        Application("RM") = New ResourceManager("strings", Assembly.Load("strings"))
    End Sub

В моей папке bin у меня есть:

bin\strings.txt
bin\nl\strings.nl.txt
bin\en\strings.en.txt

Я генерирую DLL так:

resgen strings.txt strings.resources
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

Теперь все файлы вроде бы созданы корректно.

Однако, когда я перехожу на www.domain.com, используются значения в bin\strings.txt, а НЕ (как я ожидал и хотел бы), значения из bin\en\strings.en.txt

Почему?


person Peter    schedule 01.04.2011    source источник
comment
Любопытно... работает ли www.domain.nl?   -  person Naraen    schedule 02.04.2011


Ответы (1)


Я попробовал ваш фрагмент кода на компьютере .NET 4.0 Windows 2008. Это сработало так, как вы этого хотите.

Единственное, что пришло мне в голову... на компьютере, на котором я пробовал, был установлен Windows MUI. Интересно, это фактор?

person Naraen    schedule 01.04.2011
comment
Я работаю на Windows 7, и здесь только английский язык, поэтому я ожидаю, что эта часть будет работать по крайней мере. Я еще немного отладил и обнаружил, что в методе mu InitializeCulture: Protected Overrides Sub InitializeCulture() SetLanguage(Request.Url.ToString) End Sub Когда я проверяю текущий System.Threading.Thread.CurrentThread.CurrentUICulture.ToString, он равен en , так что кажется, что культура УСТАНОВЛЕНА правильно, единственное, что используется неправильный strings.dll .... помогает ли это мне в дальнейшем? :) - person Peter; 03.04.2011
comment
Но происходят и более странные вещи: также у меня есть это в моем default.aspx ‹asp:Literal ID=Literal1 runat=server Text=‹%$Resources: Lookingfor%› /› Когда я приближаюсь к www.domain.com, Literal1 элементы управления отображают значение из App_LocalResources\default.aspx.en.resx. И когда я проверяю текущий System.Threading.Thread.CurrentThread.CurrentUICulture.ToString, он равен en, поэтому кажется, что культура установлена ​​​​правильно. Таким образом, при использовании www.domain.com используется НЕПРАВИЛЬНАЯ strings.dll, но ПРАВИЛЬНЫЙ файл .resx... мне кажется слишком непоследовательным! - person Peter; 04.04.2011