连接字符串和资源值时出现问题

我的.aspx页面中有一个奇怪的行为。 我正在国际化一些页面,但由于我想在我的资源中只保留实体或值对象,我希望有一个键值,如:

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

但是当我列出实体时,我想把“:”放在最后。 喜欢:

 <asp:Label ID="LabelCity" runat="server" Text=":"> 

但是,如果我在text属性中放置资源之后的“:”,页面只显示“:”。

我的简单解决方案是在标签的所有定义之后,但我认为这太错了:

 <asp:Label ID="LabelCity" runat="server" Text="">: 

建议?

您正确地命名了这个:连接。 问题是,连接是最严重的(如高严重性)i18n缺陷之一。 我建议你把完整的字符串(或者在最坏的情况下使用占位符的场景字符串)放到资源文件中,即使你必须复制资源(这些重复的资源可能会以不同的方式转换,具体取决于上下文) )。

让我举个例子:当我在L10n团队时,我们有一个包含多个页面的控制台,每个页面都有一个标题是“Something Policy ”,即“防火墙策略 ”,“防病毒和反间谍软件策略 ”。 有人认为保存一些珍贵的东西并简单地将标题连接起来是个好主意:

 String title = Resources.getString("Firewall") + "" + Resources.getString("Policy") + ""; 

我们唯一的问题是正确的波兰语翻译听起来像“ Polityka zapory ogniowej”,即“政策”首先出现。 实际上,我们将它翻译为“Zapora ogniowa Polityka ”,它远不及正确的翻译(注意“防火墙”的翻译应该是属性的…译者不知道他正在翻译什么,因此翻译。它不能因为我们无法重新命令这句话而得到解决。

修复需要将整个字符串外化,所以实际上原始开发人员的所有良好意图都铺平了地狱。

如果您还在阅读本文,请记住,法语中的所有冒号都必须以空格开头(这只是他们的规则)。 重复使用相同的翻译以构建多个句子可能会禁止……

有完全相同的问题,并经过一些搜索改变了这一点

 : 

对此:

  <%= Resources.Resources.color + ":"%>  

表达式 ( <%$ )是一个集合语法,所以如果你想在那里使用表达式它是全有或全无。 您可以执行建议或将代码中的值设置为替代值。

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