什么时候应该使用 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(因为&lt;asp:Localize&gt; 元素的内部文本是Price),但网页浏览器中的实际实时视图将解析为fiyat

因此:

<div>
   <asp:Localize runat="server" 
                 Text="<%$Resources : Label, Price%>">
                      Price
   </asp:Localize>
</div>

呈现为:

<div>fiyat</div>

但在 IDE 设计器中,这将显示为“价格”。

与标签的区别在于,&lt;asp:Label&gt; 将在 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?

什么时候应该在 C# 中使用结构而不是类?

什么时候应该使用任务而不是协程?

什么时候应该使用列表而不是 ICollection 或 IEnumerable? [关闭]