これは私のシナリオです。私は、多言語Asp.Net Mvcアプリケーションを持っています。Asp Mvc Resourcesグローバルが動作しません
routes.MapRoute(
name: "DefaultLocalized",
url: "{lang}/{controller}/{action}/{id}",
constraints: new { lang = @"(\w{2})|(\w{2}-\w{2})" }, // en or en-US
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
マイControllerActivator::私はGlobal.asaxの中で初期化
public class LocalizedControllerActivator : IControllerActivator
{
private string _DefaultLanguage = "it";
public IController Create(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
//Get the {language} parameter in the RouteData
string lang = (string)requestContext.RouteData.Values["lang"] ?? _DefaultLanguage;
if (lang != _DefaultLanguage)
{
try
{
System.Threading.Thread.CurrentThread.CurrentCulture =
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);
}
catch (Exception e)
{
throw new NotSupportedException(String.Format("ERROR: Invalid language code '{0}'.", lang));
}
}
return DependencyResolver.Current.GetService(controllerType) as IController;
}
}
:
ControllerBuilder.Current.SetControllerFactory(new DefaultControllerFactory(new App_Start.LocalizedControllerActivator()));
そして、これは、ローカライズされたルートをリダイレクトする方法であり、ここで は私のローカライズされたデフォルトルートであります:
public ActionResult Language(string languageCode)
{
//ViewBag.lang = languageCode;
string basePath = string.Format("{0}://{1}{2}", Request.UrlReferrer.Scheme, Request.UrlReferrer.Authority, Url.Content("~"));
object lang;
if (!RouteData.Values.TryGetValue("lang", out lang))
return Redirect(Request.UrlReferrer.ToString().Replace(basePath, string.Format("{0}{1}/", basePath, languageCode)));
else
{
string basePathWithLang = string.Format("{0}{1}", basePath, lang.ToString());
return Redirect(Request.UrlReferrer.ToString().Replace(basePathWithLang, string.Format("{0}{1}", basePath, languageCode)));
}
}
問題:私のマシン上で
は魔法のように動作しますが、私は私が仕事外部のホスティングに置いたとき、私はグローバルリソースファイルに使う言葉では、動作しません。私のホームページで 私は、言語の選択をしている:に含まれる
<li><a href="@Url.Action("Language","Home",new { languageCode="it" })">Italiano</a></li>
<li><a href="@Url.Action("Language","Home",new { languageCode="en" })">English</a></li>
言葉:私は、言語を変更した場合Resources.Global.contacts @ が翻訳されていません。おそらく、これは役に立ちます:abcxxx.itで私のウェブサイトを開くと、私のコードでデフォルトとして設定したイタリア語ではなく、開始言語が英語になります。
ブラウズ中のサンプルURLを共有できますか?ローカリゼーションは行われていませんか? –
@ChetanRanpariya http://www.lanavenelbosco.it – SamDroid
「ローカライズされたルートをリダイレクトするメソッド」は必要ありません。 [ルートとURLのASP.NET MVC 5のculture](http://stackoverflow.com/a/32839796/181087)を参照してください。 – NightOwl888