我有一个文件conf / messages.en 我想用整个句子作为关键,比如
Hello my name is Vlad=Hello my name is Vlad
所以在布局中我可以这样做
<p>@Messages("Hello my name is Vlad")</p>
但问题是
`=' expected but `m' found
我曾尝试使用引号,但它不起作用。
我想要这个,因为如果你没有某些密钥的翻译,那么代替
my.name
是实际的句子
谢谢
答案 0 :(得分:2)
我们为项目使用自定义i18n后端,因此我最终扩展了默认MessagesPlugin
。在我们的例子中,插件抓取消息密钥,进行一些解析,并在我们的系统上查找i18n值。如果密钥没有匹配,那么它只是将其传递给Play的默认插件(以防万一)。
在biesior的回答基础上,您可以根据自己的需要获得自己的观点:
<p>@Messages("Hello my name is Vlad")</p>
你的messages
文件的密钥没有空格(或点,下划线,等等)
HellomynameisVlad=Hello my name is Vlad
然后让你的自定义消息插件从密钥中删除空格(我想象的所有非字母数字),然后将其传递给默认插件以查找文本。如果找到它然后使用它。如果找不到,则返回原始密钥。
在伪代码中(如果你认为你想要走这条路线,我可以扩展):
public String get(String originalKey)
{
// originalKey -> "Hello my name is Vlad"
String lookupKey = removeSpaces(originalKey);
// lookupKey -> "HellomynameisVlad"
if (keyExists(lookupKey))
return getMessage(lookupKey);
else
return originalKey;
}
答案 1 :(得分:1)
我看到了你的观点,无论如何它是不可能的,键必须是键而不是自由文本(在翻译不完整时可能是默认值),最终你可以使用点分隔键,如:
Hello.my.name.is.Vlad = Hello my name is Vlad