2012-05-24 17 views
0

我有一个在C#.net和VS2010中开发的站点。它是本地化的,整体运行良好。但是,某些本地化字符串看起来并不是最好的。
您的会话已过期:C本地化字符串中的新行#

例如,我在登录页面

目前看来这样的顶部有一个消息。请登录到
继续。

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

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

我正在寻找一种方法将布局功能置于本地化文件中。最简单的方法(在表面上)是在字符串中添加新的行字符。但是,\ n,\ r \ n和<br/>都显示在字符串中,因为它是以“围绕字符串呈现的。”

是否有另一种方法可行?这是一个坏主意吗?我们还能如何补偿对于许多语言的长度差异?

+0

如果不出意外,你有没有考虑文本分成两个字符串? –

+0

我已经考虑过了,但不喜欢。有很多情况下,这是一个问题,并试图翻译紧密连接,但不同的字符串可能会成为一场噩梦。 此外,其他语言可能有一个很好的方式来传达完整的概念在一行。相反,另一种语言可能需要三行来以视觉愉悦的格式传达相同的概念。 – davids

+0

查看http://stackoverflow.com/questions/931114/carriage-return-line-feed-in-net-resource-file-app-globalresources –

回答

1

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

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

这样做:

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

完美地工作!谢谢。 – davids