I think that the best way is using Url ReWrite.
In this way youll have www.xxx.yy/en , www.xxx.yy/fr, www.xxx.yy/gr etc.
It is very easy to implement, and very elegant. Thats how i do it !
Here is a simple code sample (far from optimize):
public class UrlHandler : IHttpModule
{
public UrlHandler()
{
}
public void Dispose()
{
// do nothing
}
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(SetLanguageURL);
}
void SetLanguageURL(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
if (app.Request.RawUrl.ToLower().Contains("/fr/"))
{
app.Context.RewritePath(app.Request.Path.Replace("/fr/", "/"), "", app.Request.QueryString.ToString());
}
if (app.Request.RawUrl.ToLower().Contains("/ru/"))
{
app.Context.RewritePath(app.Request.Path.Replace("/ru/", "/"), "", app.Request.QueryString.ToString());
}
}
}
when you rewright the url u can add to the querystring your LangID value:
something like ---- app.Request.QueryString.ToString() + "&LangID=fr"
it is better practice to use the .net built in globalization and localization support, instead of using a querystring.
For further details end examples see:
http://www.asp.net/learn/videos/video-40.aspx
http://www.asp.net/learn/videos/video-154.aspx
Good luck 