سؤال

لدي موقع على شبكة الإنترنت مع ثلاثة مجالات .com، .de و.

يحتاج كل مجال إلى التقصير إلى اللغة / ثقافة البلد المحلية. لقد قمت بإنشاء صفحة أساسية وأضاف بتربية التمارين

  Protected Overrides Sub InitializeCulture()

    Dim url As System.Uri = Request.Url
    Dim hostname As String = url.Host.ToString()
    Dim SelectedLanguage As String

    If HttpContext.Current.Profile("PreferredCulture").ToString Is Nothing Then

        Select Case hostname
            Case "www.domain.de"
                SelectedLanguage = "de"

                Thread.CurrentThread.CurrentUICulture = New CultureInfo(SelectedLanguage)
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage)

            Case "www.domain.it"
                SelectedLanguage = "it"

                Thread.CurrentThread.CurrentUICulture = New CultureInfo(SelectedLanguage)
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage)

            Case Else
                SelectedLanguage = "en"

                Thread.CurrentThread.CurrentUICulture = New CultureInfo(SelectedLanguage)
                Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage)
        End Select
    End If
End Sub

هذا جيد. تحدث المشكلة الآن لأننا نريد أيضا ثلاثة أزرار اختيار لغة على الصفحة الرئيسية حتى يتمكن المستخدم من تجاوز لغة المجال.

لذلك في My Default.asp.vb لدينا ثلاثة أحداث زر مثل هذا ...

Protected Sub langEnglish_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles langEnglish.Click

    Dim SelectedLanguage As String = "en"
    'Save selected user language in profile'
   HttpContext.Current.Profile.SetPropertyValue("PreferredCulture", SelectedLanguage)

    'Force re-initialization of the page to fire InitializeCulture()'
    Context.Server.Transfer(Context.Request.Path)


End Sub

ولكن بطبيعة الحال، فإن تربية الأحياء المائية ثم تجاوز أي اختيار زر الزر. هل هناك أي طريقة يمكن أن تحقق تربية الأبعاد ما إذا كان النقر فوق الزر قد حدث وإذا كان الأمر كذلك تخطي الروتين؟

سيتم تقدير أي نصيحة إلى حد كبير، شكرا.

هل كانت مفيدة؟

المحلول

Protected Overrides Sub InitializeCulture()

    'Set the PreferredCulture as the SelectedLanguage by default'
    Dim SelectedLanguage As String = HttpContext.Current.Profile("PreferredCulture").ToString()

    'If there is no PreferredCulture, use these defaults'
    If [String].IsNullOrEmpty(SelectedLanguage) = True Then

        Select Case Request.Url.Host.ToString()
            Case "www.domain.de"
                SelectedLanguage = "de"

            Case "www.domain.it"
                SelectedLanguage = "it"

            Case Else
                SelectedLanguage = "en"

        End Select
    End If

    'Finally set the culture'
    Thread.CurrentThread.CurrentUICulture = New CultureInfo(SelectedLanguage)
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(SelectedLanguage)
End Sub

نصائح أخرى

الحل الخاص بي هو تقسيم هذا في جزأين:

  1. في الجلسة تبدأ في تخزين الثقافة المستمدة من المجال في متغير الجلسة
  2. في تربية الإيمان، أتخذ القيمة من متغير الجلسة لتهيئة الثقافة

لتغيير اللغة، يجب علي تغيير متغير الجلسة وإعادة تهيئة الصفحة.

إذا حدد المستخدم اللغة، فيمكنك إعادة توجيه المجال المناسب؟ إذا قام المستخدم بتحويل لغته إلى "الإيطالية"، فيمكنك الاستجابة. توجيهه إلى "www.domain.it". بعد ذلك سوف تعتني الطريقة "تربية الإيمان".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top