【问题标题】:New Line in localization string in C#C# 本地化字符串中的新行
【发布时间】:2012-05-24 22:19:41
【问题描述】:

我有一个用 C#.net 和 VS2010 开发的网站。它是本地化的,总体上运行良好。但是,某些本地化字符串看起来并不是最好的。

例如,我在登录页面顶部有一条消息

目前显示如下:
您的会话已过期。请登录
继续。

我希望它看起来像这样:
您的会话已过期。
请登录以继续。

我无法更改包含 div 的大小,因为每种语言的宽度可能不同。

我正在寻找一种将布局功能放入本地化文件的方法。最简单的方法(表面上)是在字符串中放入换行符。但是,\n、\r\n 和 <br/> 都出现在字符串中,因为它在字符串周围用 " 呈现。

还有其他可行的方法吗?这是一个坏主意吗?我们还能如何弥补多种语言之间的长度差异?

【问题讨论】:

  • 如果不出意外,您是否考虑过将文本分成两个字符串?
  • 我考虑过,但不希望。在许多情况下,这是一个问题并试图翻译紧密连接,但不同的字符串可能成为一场噩梦。此外,其他语言可能有一种很好的方式来在一行中传达完整的概念。相反,另一种语言可能需要三行才能以视觉上令人愉悦的格式传达相同的概念。

标签: visual-studio-2010 c#-4.0 localization


【解决方案1】:

在这种情况下,最好的方法是在您的字符串中使用 HTML 格式(在英语和您的翻译中),并在必要时调整翻译。 没有理由不能在字符串中包含 <br /> 并使其按预期呈现。我不知道您使用的是 WebForms 还是 ASP.NET MVC,但在 MVC 的情况下,您可以通过使用 Html.Raw 帮助程序来避免默认行为(字符串的自动 HTML 编码),例如,而不是这个:

<div class='whatever'>@Resources.MyString</div>

这样做:

<div class='whatever'>@Html.Raw(Resources.MyString)</div>

【讨论】:

    猜你喜欢
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-10
    相关资源
    最近更新 更多