ASP.NET MVC & Javascript localization done right
- Singular
- Plural
_
, __
or ___
//var msg = "Some message";
//becomes
var msg = _("Some message");
<div>Some message</div>
<div>@_("Some message")</div>
Both the expression and the arguments will be HTML encodeed
@{ var names = "John&Doe"; }
<div>@_("Welcome {0}. Your age is < 100", name)</div>
//becomes
<div>Welcome John&Doe. Your age is < 100</div>
Make sure that you provide a valid HTML when you translate the expression
@{ var names = "John&Doe"; }
<div>@__("Welcome <b>{0}</b>. Your age is < 100", name)</div>
//becomes
<div>Welcome <b>John&Doe<b>. Your age is < 100</div>
This could be potentially dangerous if the arguments are not trusted i.e. come from user input such as query string, database etc. as it could lead to XSS attacks.
@{ var names = "John <i>Doe</i>"; }
<div>@__("Welcome <b>{0}</b>. Your age is < 100", name)</div>
//becomes
<div>Welcome <b>John <i>Doe</i><b>. Your age is < 100</div>
###Plural
_s
, __s
, ___s
//var msg = count == 1 ? "One item in the basket" : string.Format("{0} items in the basket", count);
//becomes
var msg = _s("One item in the basked", "{0} items in the basket", count);
@if (count == 1) {
<div>One item in the basked</div>
}
else {
<div>@count items in the basked</div>
}
//becomes
<div>@_s("One item in the basked", "{0} items in the basket", count)</div>
[More Documentation to be written]
In the meanwhile you could also navigate to your webiste to /Localization/Help
for more documentation