我有以下情况:假设我必须以下列格式显示数据。
I am 20 years old
。我需要数字20以粗体显示。
我从像这样的资源文件中获取此字符串
string.Format(HttpContext.GetGlobalResourceObject("ResourceFile","Key"),age);
我应该考虑在资源文件中添加标记<b>
和</b>
吗?这被认为是“最佳做法”吗?任何人都可以提供有关本地化的有用链接吗?
答案 0 :(得分:7)
对于代码/数据/表示分离目的,我建议您不要在资源文件中存储标记。它将使维护更加困难(通过在aspx / ascx文件以及资源中使用标签,甚至可能在数据库中使用标签)
您应该遵循关注点分离模式并将事物分开。
Key Value
"UserAge" "It seems you are {0} year(s) old."
一些宽松的限制可能会有所帮助
但是当使用一些嵌套标记时,大多数安全要做的事情就是拥有不提供任何样式的标签。在你的情况下,我最多使用<span>
标签(因为它是内联样式,这正是你需要的)。 CSS最终会定义它的视觉表现。
Key Value
"UserAge" "It seems you are <span>{0}</span> year(s) old."
但你应该理解其含义。这样做可能仍然比没有标签更糟糕。想象一下当您更改表示层时会发生什么。让我们说服务或Windows桌面应用程序。像<span>
这样的标签在这种情况下没有任何意义。它们可以省略,但是你为什么要把它们放在第一位呢。
答案 1 :(得分:1)
如果您希望某些部分以粗体或其他方式装饰,您可以将它们存储为资源文件中的Markdown字符串,然后在渲染页面时将Markdown应用于它们。实际上,这个网站使用降价库来取得巨大成功。这样您就不必担心在资源文件中存储HTML了,如果您必须在HTML之外使用它们,那么您的字符串仍然可读。
答案 2 :(得分:0)
通常,您希望保持查看逻辑独立于您的资源,这也不例外。
我会将字符串分成3个部分:粗体部分之前的子字符串,粗体部分本身以及粗体部分之后的子字符串。将第一个和第三个项目放入资源,并根据需要在页面上格式化第二个项目。