ASP.NET وضع الثقافة مع تربية الأحياء
-
18-09-2019 - |
سؤال
لدي موقع على شبكة الإنترنت مع ثلاثة مجالات .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
نصائح أخرى
الحل الخاص بي هو تقسيم هذا في جزأين:
- في الجلسة تبدأ في تخزين الثقافة المستمدة من المجال في متغير الجلسة
- في تربية الإيمان، أتخذ القيمة من متغير الجلسة لتهيئة الثقافة
لتغيير اللغة، يجب علي تغيير متغير الجلسة وإعادة تهيئة الصفحة.
إذا حدد المستخدم اللغة، فيمكنك إعادة توجيه المجال المناسب؟ إذا قام المستخدم بتحويل لغته إلى "الإيطالية"، فيمكنك الاستجابة. توجيهه إلى "www.domain.it". بعد ذلك سوف تعتني الطريقة "تربية الإيمان".