I'm working on multi language web site. it works fine. but I need some changes in the URL which it creates.
My Resouces files are in App Global Resources Forlder named like this: lang.resx
, lang.ja.resx
, lang.fr.resx
here is my Route Config
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace ML_VoiceRecorderFree1
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{country_code}/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, country_code="" }
);
}
}
}
and the url whch it creates is this : www.example.com/JP?language=jp
and I need this to be like www.example.com/JP
what changes should I do? Appreciate any help. and also here is my controller if needed:
public async Task<ActionResult> Index(string language)
{
if (String.IsNullOrWhiteSpace(language) == false)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
}
else if (String.IsNullOrWhiteSpace(language))
{
try
{
//string userIpAddress = this.Request.UserHostAddress;
string userIpAddress = "202.218.119.10";
var client = new HttpClient
{
BaseAddress = new Uri("http://freegeoip.net/xml/")
};
var response = await client.GetAsync(userIpAddress);
var content = await response.Content.ReadAsStringAsync();
var result = (Response)new XmlSerializer(typeof(Response)).Deserialize(new StringReader(content));
var country_name = result.CountryName;
var country_code = result.CountryCode;
TempData["Country_code"] = country_code;
TempData["Country_name"] = country_name;
if (country_code == "FR")
{
language = "fr-FR";
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
return RedirectToAction("Index", new { language = language, country_code = country_code });
}
else if (country_code == "JP")
{
language = "ja";
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
return RedirectToAction("Index", new { language = language, country_code = country_code });
}
else
{
language = "en";
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
return RedirectToAction("Index", new { language = language, country_code = country_code });
}
}
catch
{
language = "en";
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(language);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(language);
return RedirectToAction("Index", new { language = language });
}
}
// do stuff
return View();
}