简短版本:是否有一种有吸引力的、简单的方法来实现特定于语言的 url 结构,ala. Play 1.2.5 中的 host.com/en/或 host.com/pt/?
我正在寻找一种不需要更改所有 Controller 的解决方案,并且最好只更改路由文件,因为我不想要两组冗余 View - 每种语言一组。
我已经有了 message.pt 和 message.en,并且我有一种在两者之间切换的方法,但在路由方面我是一个新手。
我意识到路由文件可以包含类似以下的路由:“/(en|pt)/”,但我有点卡在这里。
如果问题有点模糊,我深表歉意。 如果有需要,我很乐意进行澄清。
最佳答案
我认为没有办法解决这个问题,你必须对你的 Controller 做一些事情。
我还没有测试过这个,但类似的东西应该可以工作:
public static class LanguageParams extends Controller
{
@Before
static void addLanguageParam(String language)
{
renderArgs.put("lang", language);
}
}
您需要将 @With 添加到每个 Controller ,如下所示:
@With(LanguageParams.class)
public class Foo extends Controller
{
....
}
...在你的 route 你会看到这样的东西:
GET foo/{<en|pt>language>}/whatever Foo.index()
在写这篇文章时,我想到你也许可以使用插件来做到这一点,请参阅:http://www.playframework.org/documentation/api/1.2/play/PlayPlugin.html#beforeActionInvocation(java.lang.reflect.Method )
关于url - Play 中 SEO 友好的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10078940/