2012-07-27 60 views
1

我有一个视图以下代码设置郎咸平:游戏框架:在helper.form在斯卡拉视图

@(lang:Lang)... 
... 
<div> 
... 
@helper.form(action = routes.item.add) { 
    <p>@helper.inputText(myItem("name"))</p> 
    ... 
    } 
... 
</div> 

在我的国际文件,我有条目name。 例如:

  • messages.enname=Name
  • messages.frname=Nom

的观点总是与法国标签渲染这个inputText,我不知道如何为另一个langage,例如改变使用我的视图中定义的全局参数lang

我一直在寻找像一些解决方案:@helper.form(action = routes.item.add, lang)inputText的水平不变样的代码。

回答

1

我的解决办法:

@(lang:Lang)... 

@import play.i18n._ 

@translate(text: String) = @{ 
Message.get(lang, text) 
} 
... 
<div> 
... 
@helper.form(action = routes.item.add) { 
    <p>@helper.inputText(myItem("name"), '_label -> translate("name"))</p> 
    ... 
    } 
... 
</div> 

在Play中,可以使用'_约定为表单添加属性。我通过应用自己的翻译功能来覆盖标签。

+0

为什么你将lang作为String? – 2012-07-30 06:11:57

+0

好问题:我认为通过lang是没有用的,因为我已经将它放入cookie中。我稍后再看看并更新我的答案。感谢这个想法。但也许你有另一种选择? – 2012-07-30 12:44:05

+0

你使用Scala还是Java?我直接把lang当作'Lang'。 – 2012-07-30 13:42:45

1

您是否使用ScalaJava?通过Scala,你可以设置一个隐含的语言。但是,对Java这并不容易,因为在游戏1.2.4:

Lang.set(...) or .change() 

这将在2.1解决:https://play.lighthouseapp.com/projects/82401/tickets/174-20-i18n-add-ability-to-define-implicit-lang-for-java-api

见谷歌论坛前面的讨论:https://groups.google.com/forum/?fromgroups#!topic/play-framework/dE1SPBaTM6w

是使用具有阶看看帖子:i18n error: controller and templates uses different implicit languages

+0

感谢您的好链接!我找到了从这些派生出来的解决方案我会发布这个解决方案的信息。 – 2012-07-28 11:42:36