什么时候应该使用 Localize 控件而不是 Literal?
Posted
技术标签:
【中文标题】什么时候应该使用 Localize 控件而不是 Literal?【英文标题】:When should I use a Localize control instead of a Literal? 【发布时间】:2011-07-04 15:26:12 【问题描述】:我最近在 ASP.NET 4.0 MCTS 认证课程的实验室中了解到System.Web.UI.WebControls.Localize 控件。我不清楚这种控制的目的。
在示例中,Literal
控件和Localize
控件似乎或多或少可以互换。经检查,Localize
控件似乎继承自Literal
,但没有提供其他功能。它使用不同的设计器类,在我看来,它的能力不如文字设计器类。
所以,让我感到困惑。文字是可本地化的已经。 Localize 控件有什么用? 应该使用它,在什么情况下使用?
【问题讨论】:
【参考方案1】:我很欣赏这已被标记为已回答,但这是另一种查看方式。
<asp:Localize>
用于指定资源定义项,它强制 IDE 显示一些指定的文本,并且仍然允许它在运行时解析为网站的语言。
这对于网站内容实际上是不同语言的网站的开发可能很有用。因此,您将能够成为一名说英语的程序员,用土耳其语创建一个网站,并且仍然知道 <asp:Label>
应该做什么,而无需学习土耳其语。
举个例子:
<asp:Localize runat="server" Text="<%$Resources : Label, Price%>">
Price
</asp:Localize>
现在,如果我的默认 Label.resx
被翻译成 土耳其语,Labels.resx
映射将是:
Key="Price"
Value="fiyat"
在设计时,IDE 将显示Price
(因为<asp:Localize>
元素的内部文本是Price
),但网页浏览器中的实际实时视图将解析为fiyat
。
因此:
<div>
<asp:Localize runat="server"
Text="<%$Resources : Label, Price%>">
Price
</asp:Localize>
</div>
呈现为:
<div>fiyat</div>
但在 IDE 设计器中,这将显示为“价格”。
与标签的区别在于,<asp:Label>
将在 IDE 设计器和运行时解析为 fiyat
。
【讨论】:
感谢您的解释。我现在明白为什么这样做很方便了。 +1!【参考方案2】:这描述得最好:
本地化控件允许您本地化 .aspx 页面上的任何元素。 它提供了其基类 Literal 控件所不具备的设计时功能;特别是,Localize 控件提供静态内容的设计时编辑,因此您可以在页面设计模式下查看默认值。
发现于:http://wiki.asp.net/page.aspx/357/localize/
MSDN(底部有很好的描述)
【讨论】:
您引用的 MSDN 文档指出“Localize 控件继承自 Literal 控件,并且在各个方面都与它相同。在设计时使用 Localize 控件来区分可以本地化的静态文本与其他文本静态文本。”我是否将其解读为“Localize 控件的主要好处是它明显 文字已本地化”?文字控件已经是可本地化的。以上是关于什么时候应该使用 Localize 控件而不是 Literal?的主要内容,如果未能解决你的问题,请参考以下文章
如何在js中使用wp_localize_script()变量作为变量? (不是字符串)
什么时候应该使用 Redux Saga 而不是 Redux Thunk,什么时候应该使用 Redux Thunk 而不是 Redux Saga?