我使用GWT I18N,它依赖于带参数的消息的注释 例如:
@DefaultMessage("Here is a message <br/> with a param:{0}")
String messageToLocalize(String param);
如果没有本地化翻译,将使用默认消息 我有一些很长的字符串要处理,我想输入几行代码可读性(我不会谈论渲染消息的多行)。
我试过了:
@DefaultMessage("Here is a long \
message <br/> with a \
param:{0}")
String messageToLocalize(String param);
失败(GWT PlugIn 4.2和SDK 2.5.1),错误为“无效的转义序列”。
我错过了什么吗?
它是Java注释或GWT的约束吗? (我很害怕,但在那找不到任何东西)
有解决方法吗?
感谢
编辑:给出第一个答案,问题必须改写:是否可能,我应该用哪个角色来表示延续(如果有的话)?
注释处理器显然需要一些东西来告诉他。
我试过“\”因为它是在属性文件中使用的字符...
“+”也不起作用。
答案 0 :(得分:6)
Java不支持C风格的字符串行表示,因此您无法在注释声明中使用此类多行样式,也不能在其他代码位置使用。
如果你想要单个字符串的多行,你必须做这样的事情:
@DefaultMessage("Here is a long " +
"message <br/> with a " +
"param:{0}")
答案 1 :(得分:1)
正如Andremoniy所说,必须使用Java风格来削减它。
但除此之外,我建议你去看看i18nCreator。它允许您在属性文件中管理i18n并自动生成这些消息接口文件: https://developers.google.com/web-toolkit/doc/latest/RefCommandLineTools#i18nCreator
(还有一个maven插件:http://mojo.codehaus.org/gwt-maven-plugin/user-guide/i18n.html)
答案 2 :(得分:0)
尝试在编译时完成的字符串连接,所以:
@DefaultMessage("Here is a long"+
"message <br/> with a " +
"param:{0}"")