ASP.NET MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг

рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд╡рд┐рд╖рдп рдкрд░, рд╣реИрдмреЗ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд▓реЗрдЦ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рдПрдорд╡реАрд╕реА 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ASP.NET MVC рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг: рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ , рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣рдореЗрдВ рд╕рд╛рдЗрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░рдиреЗ (рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ) рдХрд╛ рдХрд╛рд░реНрдп рдорд┐рд▓рд╛ред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ ASP.NET MVC рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ рдФрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ jQuery рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛрдб рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдЕрдиреБрд╡рд╛рджрдХреЛрдВ рдХреЗ рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдХрд╛рд░реНрдп рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордХреНрдЦреА рдкрд░ рд╕рд╛рдЗрдЯ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ред

рдореВрд▓ рд░реВрдк рд╕реЗ, рдЗрд╕ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рд▓реЗрдЦ рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕рдорд╛рдзрд╛рди рд▓рдЪреАрд▓рд╛, рдмреЛрдЭрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд┐рдкрд┐рдпреЛрдВ рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреА рд╕рдорд╕реНрдпрд╛, рдЬреЛ рдХрд┐рд╕реА рднреА рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╣рдордиреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА Knoema.Localization рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рд╣рдорд╛рд░рд╛ рдХреЛрдб рдЧреНрд░рд┐рдлрд┐рди рдХреЗ рдЕрджреНрднреБрдд рд╡рд┐рдХрд╛рд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЕрдиреБрд╡рд╛рдж рдЙрдкрдХрд░рдг, рд╕рд╛рде рд╣реА рдЬреЗрдПрд╕ рдХреЛрдб рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рдЙрдкрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЕрд╡рд╕рд░реЛрдВ

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдкрдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдпрд╛ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЙрд╕ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╣реИрдВред


рдХрдиреЗрдХреНрд╢рди рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ Nuget рдкреИрдХреЗрдЬ Knoema.Localization.Mvc рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред рд╕реНрдерд╛рдиреАрдп рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ Knoema.Localization.EFProvider рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ EF рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЕрдкрдиреЗ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ ILocalizationRepository рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИред

Global.asax рдореЗрдВ Application_Start (), рдмрдирд╛рдП рдЧрдП рднрдВрдбрд╛рд░ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:
Knoema.Localization.LocalizationManager.Repository = new Knoema.Localization.EFProvider.LocalizationRepository(); 

рдФрд░ RegisterRoutes рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рд┐рдЦреЗрдВ:
 routes.IgnoreRoute("_localization/{*route}"); 

рдпрджрд┐ рдЖрдк Nuget рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд╛рдирд╕рднрд╛рдУрдВ рдХреЛ web.config рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдирд┐рдореНрди рдорд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рдПрдВрдЧреЗ:
  <system.webServer> <modules> <add name="Knoema.Localization" type="Knoema.Localization.Web.LocalizationModule"/> </modules> <handlers> <add name="Knoema.Localization" verb="*" path="_localization/*" type="Knoema.Localization.Web.LocalizationHandler" allowPathInfo="true" resourceType="Unspecified" /> </handlers> </system.webServer> 

рдпрджрд┐ рдЖрдк рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рддреИрдпрд╛рд░ рд╣реИ, рдЕрдм рдореИрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рд┐рдЦреВрдВрдЧрд╛ред

рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рджреЗрдЦреЗрдВ

Web.config рдореЗрдВ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ LocalizedWebViewPage рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
  <system.web.webPages.razor> ... <pages pageBaseType="Knoema.Localization.Mvc.LocalizedWebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> ... </namespaces> </pages> </system.web.webPages.razor> 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡реНрдпреВ рдХреЛрдб рдореЗрдВ, Html рд╣реЗрд▓реНрдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛:
 public string R(string text, params object[] formatterArguments); 

рдЙрджрд╛рд╣рд░рдг

 <p>@R("Hello world!")</p> 

рдкрд╛рда рдХреЛ рдорд╛рдирдХреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 <p>@R("Hello {0}!", username)</p> 

рдХреЛрдб рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдореЗрдВ рд▓рд╛рдЗрдиреЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╣реИрдВ:
 public static string Resource(this string value, object obj) 

рдпрд╛, рдпрджрд┐ рд╡рд┐рдзрд┐ рд╕реНрдерд┐рд░ рд╣реИ, рдЬрд╣рд╛рдБ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 public static string Resource(this string value, Type type) 

рдЙрджрд╛рд╣рд░рдг

 "The given input does not refer to a valid Search.".Resource(this) 

рдореЙрдбрд▓ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг

рдореЙрдбрд▓ рдХреЛ рд╕реНрдерд╛рдиреАрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдорд╛рдирдХ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Global.asax рдореЗрдВ Application_Start () рдЬреЛрдбрд╝реЗрдВ:
 ModelValidatorProviders.Providers.Clear(); ModelValidatorProviders.Providers.Add(new ValidationLocalizer()); ModelMetadataProviders.Current = new MetadataLocalizer(); 

рд╕рднреА рдореЙрдбрд▓ рдЬрд┐рдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг

 [Localized] public class SignInViewModel { [Required(ErrorMessage = "Please provide your e-mail")] [Display(Name = "E-mail")] public string EMail { get; set; } [Required(ErrorMessage = "Please type your password")] public string Password { get; set; } } 

рдЧреБрдг рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рднреА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрд╡рд╛рдж рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ HTML рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ jQuery рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 $.localize(text, scriptSource); 

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рд╕рд╣рд╛рдпрдХ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкреГрд╖реНрда рдкрд░ рдХрд╣реАрдВ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рддреБрд░рдВрдд рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ:
 @RenderLocalizationIncludes(User.IsInRole("Admin")) 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, RenderLocalizationIncludes рд╕рд╛рдЗрдЯ рдкрд░ рдПрдХ рд╡рд┐рдЬреЗрдЯ рдПрдореНрдмреЗрдб рдХрд░реЗрдЧрд╛ (рдмрд╢рд░реНрддреЗ рдХрд┐ рдЖрдк рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реИрдВ), рдЬрд╣рд╛рдВ рдЖрдк рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╕рдм рдХреБрдЫ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг

 $.localize("Layout options", "~/js/shared/site.js"); 

рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЖрдкрдХреЛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдо рдХреИрд╕реЗрдЯ рд╕рдВрд╕рд╛рдзрди рдорд┐рдирд┐рдлрд╛рдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВрдбрд▓рд░ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕ рдЙрджрд╛рд╣рд░рдг:
 public class CassetteConfiguration : ICassetteConfiguration { private void CustomizeScript(ScriptBundle bundle) { bundle.Processor = new ScriptPipeline().Prepend(new LocalizationResourceProcessor()); } public void Configure(BundleCollection bundles, CassetteSettings settings) { bundles.AddPerIndividualFile<ScriptBundle>("js/shared/site.js", customizeBundle: CustomizeScript); } } 

рдЕрдм $ .localize ("рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдХрд▓реНрдк", "~ / js / рд╕рд╛рдЭрд╛ / site.js") рдХреА рд▓рдВрдмреА рдХреЙрд▓ рдХреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 __R("Layout options"); 

рд╕реНрдерд╛рдиреАрдпрдХрд░рдгред рд╕реНрд░реЛрддрдкреНрд░реЛрд╕реЗрд╕рд░ __R рдХреЛ $ .localize рд╕реЗ рдмрджрд▓ рджреЗрдЧрд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЛ рджреВрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред

рдЕрдиреБрд╡рд╛рдж рдЬреЛрдбрд╝рдирд╛

рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрд╡рд╛рдж рдХреЛ рд╕реАрдзреЗ рд╕рд╛рдЗрдЯ рдкрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЙрди рдЕрднреНрдпрд╛рд╡реЗрджрди рдпрд╛ рдореЙрдбрд▓ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рдЧреНрд░реЗ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдВрдкрд╛рджрди:


рдЖрдк рдПрдХ рдирдИ рднрд╛рд╖рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдореМрдЬреВрджрд╛ рдПрдХ рдХреЛ рдирд┐рд░реНрдпрд╛рдд / рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдкрд╣рд▓реЗ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рд╕рдВрджрд░реНрдн:
GitHub рд╕реНрд░реЛрдд рдХреЛрдб
Knoema.Localization.Core
Knoema.Localization.MVC
Knoema.Localization.Cassette

Source: https://habr.com/ru/post/In149802/


All Articles