2011-03-14 19 views
3

我在.aspx页面中出现了一个奇怪的行为。我在一些国际化的页面,但我想只保留在我的资源实体或值对象我想有一个键值,如:连接字符串和资源值时出现问题

(pt-br) 
    CITY - Cidade 
    STATE - Estado 
    ... 

但是当我列出的实体,我想把“:”结束。像:

<asp:Label ID="LabelCity" runat="server" Text="<%$ Resources:Localizacao, CITY %>:"></asp:Label> 

但是,如果我把文本属性中的资源后面的“:”,该页面只显示“:”。

我简单的解决方案标签的所有定义后放,但我认为这也错了:

<asp:Label ID="LabelCity" runat="server" Text="<%$ Resources:Localizacao, CITY %>"></asp:Label>: 

建议?

回答

1

您正确命名了:串联。问题是,级联是最严重的(如高严重性)国际缺陷之一。 而不是做你所做的,我建议你把整个字符串(或在最坏的情况下带有占位符的字符串)放入资源文件中,即使你必须重复资源(这些重复资源可能以不同方式翻译,具体取决于上下文)。

让我给你举个例子:回来时,我在本地化团队,我们与多个页面的控制台,每个页面有一个标题这是“有事政策”,即“防火墙政策”,“防病毒和反间谍软件政策“。有人认为这是一个好主意,以节省一些宝贵位,简单地串接标题在一起:

String title = Resources.getString("Firewall") + "<b>" + Resources.getString("Policy") + "</b>"; 

我们唯一的问题是正确的波兰语翻译听起来像“Polityka zapory ogniowej”,那就是“政策”第一。实际上,我们把它翻译为“Zapora ogniowa Polityka”,这是远远不够正确的翻译(注意,“防火墙”的翻译应该是属格...译者不知道他在翻译什么,因此翻译。它可能无法修复,因为我们无法重新排序的句子。

需要外在的整串的修复,所以实际上所有的原始开发商的良好愿望去铺平了地狱。

如果您请继续阅读,请记住,所有使用法语的冒号必须以空格开头(这只是他们的规则)。重复使用相同的翻译以建立多个句子可能会不允许......

+0

完美的论点!我是我的案子,我只会翻译成葡萄牙语和西班牙语。但我会改变我现在所做的。 tks – Custodio 2011-03-15 21:12:45

0

Expressions<%$)是一组语法,所以如果你想在那里使用表达式,它是一个全部或全部。您可以按照您的建议进行操作,也可以将代码中的值设置为替代选项。

但是,我认为你的角色应该在你的资源文件中。所有的语言都会使用同一个字符吗?这是否适用于从右到左的lanugages?

+0

只是左至右的语言,但关键将在多个地方使用。例如:字段{0}是必需的。当{0}是资源 – Custodio 2011-03-14 13:44:21

4

有完全相同的问题,经过一番搜索转化这个

<asp:Label ID="label" runat="server" Text="<%$ Resources: Resources, color %>" />: 

这样:

<asp:Label ID="label" runat="server"> 
    <%= Resources.Resources.color + ":"%> 
</asp:Label> 
+0

这种方法也为您提供智能感知。谢谢。 – 2015-02-26 14:32:57

+0

您还可以摆脱串联并将冒号移出标签 <%= Resources.Resources.color%>: – 2015-02-26 14:51:15