Лучшие практики для многоязычного сайта в разных поддоменах - PullRequest
4 голосов
/ 16 февраля 2010

Я хочу построить сайт в ASP.NET. Мне нужно, чтобы он был на французском и английском с настройкой доменов, например:

en.mysite.com fr.mysite.com

Я не хочу дублировать код или загружать файлы в оба домена, если это возможно.

Было бы идеально иметь все файлы на www.mydomain.com, а затем использовать файлы ресурсов для сортировки переводов.

Как лучше всего настроить это в ASP.NET?

Ответы [ 3 ]

3 голосов
/ 16 февраля 2010

Мое решение было установить lang в BeginRequest in global.asax

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    Dim lang As String = "es" ''//default
    If Request.Url.ToString.ToLower.StartsWith("http://es.") 
        lang = "es"
    ElseIf Request.Url.ToString.ToLower.StartsWith("http://en.") Then
        lang = "en"
    End If
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(lang)
    Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(lang)

    Site.Idioma = lang ''//static variable that I use in other parts of the site
End Sub

Не забудьте установить перенаправление, когда пользователь заходит на www.mysite.com, используя языковые предпочтения браузера пользователя

Imports System.Globalization
Partial Class redirect_Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal s As Object, ByVal e As System.EventArgs) _
                                                                 Handles Me.Load

        Select Case Mid(Request.UserLanguages(0).ToString(), 1, 2).ToLower
            Case "en"
                Response.Redirect("http://en.mysite.com")
            Case Else
                Response.Redirect("http://es.mysite.com")
        End Select

    End Sub
End Class

В качестве дополнительной информации, я рекомендую вам использовать http://www.mysite.com/en, потому что это лучше с точки зрения SEO (если это важно для вашего сайта)

0 голосов
/ 16 февраля 2010

Если бы я реализовал это, я бы сделал это: сопоставьте en.mysie.com с www.mysite.com/page?lang=en сопоставьте fr.mysite.com с www.mysite.com/page?lang=fr

и затем на главной странице установите свой язык в соответствии с параметром, используя глобализацию, и страницы asp.net будут автоматически обслуживаться на этом языке, если они найдут правильный файл app_localresource с тем же языковым кодом.

Надеюсь, это поможет

0 голосов
/ 16 февраля 2010

Как я правильно понимаю, вы хотите поместить все файлы в корневой каталог, но использовать субдомены для разных языков.

Я думаю, что en.mysite.com и fr.mysite.com должны быть просто псевдонимами и сообщать приложению asp.net, какой язык использовать. Вы можете изменить настройки культуры с помощью кода. Это хорошо описано здесь .

Но, с моей точки зрения, это лучший способ предоставить языковые настройки в основном домене с некоторым языком по умолчанию и возможностью переключения между языками. И если пользователю советуют сменить язык - он просто нажмет одну ссылку. Языковые настройки в этом случае могут храниться где угодно (профиль пользователя, cookie, сеанс, база данных, если зарегистрированный пользователь и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...