【问题标题】:grails i18n line breakgrails i18n 换行符
【发布时间】:2013-08-24 00:37:41
【问题描述】:

使用 Grails 国际化 messages.properties 我正在尝试创建多行消息,但似乎无法找到不使用 <br> 元素来创建新行的方法,我更愿意保留演示文稿消息中的逻辑。我试过使用“\n”,但没有渲染。

我知道我可以使用多条消息“message.1=...”、“message.2=...”,但这似乎也不干净。

这是我想做的事情:

messages.properties

helptext=First Line\nSecond Line\nThird Line

page.gsp

<g.message code="helptext"/>

结果:

First Line
Second Line
Third Line

我发现的所有内容要么使用&lt;br&gt; 元素,要么在\n 上执行replaceAll,但我希望不必使用额外的处理来处理此问题。

【问题讨论】:

  • 既然是属性文件,我认为你应该在this way中换行
  • 感谢@SérgioMichels,我也尝试了反斜杠,但它似乎不起作用,我不确定它是否是 Java 特定的并且没有正确转移到 grails。

标签: grails internationalization


【解决方案1】:

我认为你必须直接在消息中使用&lt;br&gt;

//messages.properties
helptext=First Line<br>Second Line<br>Third Line

//Gsp
<p><g:message code="helptext"/><p>

\ 可以在属性文件中换行,但在视图中呈现为单行。

【讨论】:

  • 选择这个答案是因为它最适合我的用例,因为只有几个地方我需要这样做。
【解决方案2】:

对我来说(Grails 2.0 项目中的 i18n 消息属性)工作如下:

属性 = Line1\\nLine2\\nLine3

如果在 HTML 页面上显示,HTML 标记 BR 也可以正常工作,但对我没有任何好处,因为在我的情况下,此文本需要是文本字符串而不是 HTML。

【讨论】:

  • 它也对我有用。我正在为调用 JS alert() 的 onclick 事件创建一条消息。 default.somebutton.message=bla bla bla1\\n\\nbla bla bla2
【解决方案3】:

您也可以编写一个自定义标签,将 \n 转换为 br 标签。它只需要调用 messageSource bean 并解析结果。因此,您的消息不必是特定于 HTML 的

【讨论】:

  • 这个答案需要更多的开销,但我真的很喜欢它作为替代解决方案,并将在未来牢记这一点,因为它可能需要更多的范式转变才能在整个应用程序中使用.谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-10-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多