توی کلاس Start چنین تنظیماتی رو دارم:
با این تنظیمات، زبان برنامه فقط با تغییر DefaultRequestCulture تغییر میکنه، توی تنظیمات بالا، زبان سایت فقط فارسی هست، حتی اگه lang به en تغییر کنه. آیا تنظیمات دیگری باید صورت بگیره؟
public class LanguageRouteConstraint : IRouteConstraint
{
public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
{
if (!values.ContainsKey("lang"))
{
return false;
}
var lang = values["lang"].ToString();
var result = lang == "fa" || lang == "en";
return result;
}
}
public void ConfigureServices(IServiceCollection services) { services.AddLocalization(o => o.ResourcesPath = "Resources"); services.Configure<RouteOptions>(options => { options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint)); }); services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_2) .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization();
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseRequestLocalization(new RequestLocalizationOptions { DefaultRequestCulture = new RequestCulture(new CultureInfo("fa-IR")), SupportedCultures = new[] { new CultureInfo("en-US"), new CultureInfo("fa-IR"), }, SupportedUICultures = new[] { new CultureInfo("en-US"), new CultureInfo("fa-IR"), }, RequestCultureProviders = new List<IRequestCultureProvider>() { new RouteDataRequestCultureProvider() { UIRouteDataStringKey = "lang", RouteDataStringKey = "lang" } } }); app.UseMvc(routes => { routes.MapRoute( name: "LocalizedAreas", template: "{lang:lang}/{area:exists}/{controller=Home}/{action=Index}/{id?}"); routes.MapRoute( name: "LocalizedDefault", template: "{lang:lang}/{controller=Home}/{action=Index}/{id?}" ); routes.MapRoute( name: "default", template: "{*catchall}", defaults: new { controller = "Home", action = "RedirectToDefaultLanguage" }); });