Многоязыковый сайт?

Программирование Web-приложений и Web-сервисов.

Модератор: Ramzes

Ничи
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 24.01.2005 (Пн) 17:29
Откуда: Питер

Сообщение Ничи » 10.11.2007 (Сб) 21:17

можно сделать из http://mysite.ru/en редирект на http://mysite.ru/, и смотреть urlreferrer

Ничи
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 24.01.2005 (Пн) 17:29
Откуда: Питер

Сообщение Ничи » 10.11.2007 (Сб) 21:28

еще так:

Код: Выделить всё
Imports System.Net
Imports System.IO


Код: Выделить всё
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.Write(GetResponse("http://mysite.ru/default.aspx?ln=en"))
End Sub

Private Function GetResponse(ByVal url As String) As String
        Dim request As HttpWebRequest
        Dim response As HttpWebResponse
        request = CType(WebRequest.Create(url), HttpWebRequest)
        response = CType(request.GetResponse, HttpWebResponse)
        Dim stream As Stream = response.GetResponseStream
        Return New StreamReader(stream).ReadToEnd
End Function

Алексей Немиро
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 7
Зарегистрирован: 05.01.2008 (Сб) 5:52
Откуда: Kbyte.Ru

Сообщение Алексей Немиро » 05.01.2008 (Сб) 6:13

1. Используй ресурсы для своих страниц и компонентов. Например, есть страница /Default.aspx, создай для нее ресурсы для разных культур:
/App_LocalResources/Default.resx - дефолтный
/App_LocalResources/Default.ru-RU.resx - русский
/App_LocalResources/Default.en-US.resx - английский

2. Как уже было сказано, передавать язык лучше через Url. Для красивости можно использовать подмену url-ов. Хотя если сайт использует темы, с этим могут возникнуть проблемы, но это уже мелочи. Для подмены url-ов можно написать свой компонент, либо использовать готовый, например UrlRewritingNet.

3. Для установки нужной культуры, лучше состряпать какой-нибудь класс наследований от Page и все страницы наследовать от этого класса. Устанавливать культуру можно в событие Page_PreInit:

Код: Выделить всё
Dim CurrentLanguage As String = Request("lang")
If Not Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLower() =  CurrentLanguage.ToLower() Then
   Threading.Thread.CurrentThread.CurrentUICulture = New System.Globalization.CultureInfo(CurrentLanguage)
  Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(CurrentLanguage)
End If


Естественно грубовато, но, думаю, общая суть понятна.

В общем как оно у тебя будет работать уже зависть от твоей фантазии :)

Кстати, редирект лучше делать с 301 кодом, чтоб зря поисковиков не пугать. Еще один момент, для дефолтного языка редирект лучше вообще не делать. Что касается url-ов, то можно либо руками приписывать к ним Request("lang") – в данном случае лучше сделать глобальную отдельную функцию для этого, которая будет возвращать код языка. С подменой url-ов гемора будет меньше.

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 10.01.2008 (Чт) 17:44

:oops:
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali


Вернуться в ASP.NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

    TopList