I recently became aware of the System.Web.UI.WebControls.Localize control in a lab for the ASP.NET 4.0 MCTS certification course. The purpose of this control is unclear to me.
In the examples, the Literal
control and the Localize
control appear to be more-or-less interchangeable. Upon inspection, it appears that the Localize
control inherits from Literal
, but provides no additional functionality. It uses a different designer class, which appears to me to be less capable than the designer class for literals.
So, color me confused. Literals are localizable already. What is the Localize control used for? Should I use it, and under what circumstances?
I appreciate this has already been marked as answered, but here is another way to look at it.
<asp:Localize>
is used to specify a Resource defined item, which forces the IDE to display some specified text, and still allows it to resolve at runtime, to the language of the website.
This may be useful for the development of a site where the content of the site is actually in a different language. So you would be able to be an English-speaking programmer, creating a website in Turkish, and still know what a <asp:Label>
is supposed to without having to learn Turkish.
So as an example:
<asp:Localize runat="server" Text="<%$Resources : Label, Price%>">
Price
</asp:Localize>
Now, if my default Label.resx
was translated into Turkish, the Labels.resx
mapping would be:
Key="Price"
Value="fiyat"
At design time, the IDE would display Price
(as the inner text of the <asp:Localize>
element is Price
) but the actual live view of the page in a web browser, would resolve to fiyat
.
Therefore:
<div>
<asp:Localize runat="server"
Text="<%$Resources : Label, Price%>">
Price
</asp:Localize>
</div>
Becomes rendered as:
<div>fiyat</div>
But in the IDE Designer, this would be displayed as "Price".
The difference with labels, is that <asp:Label>
will resolve to fiyat
in both the IDE Designer and at run-time.