Playframework 如何在Play Framework 2.7中获取当前语言
我正在从Play Framework 2.6迁移到2.7版 在这个版本中,他们不推荐我使用的很多东西。其中一个是Playframework 如何在Play Framework 2.7中获取当前语言,playframework,migration,translation,Playframework,Migration,Translation,我正在从Play Framework 2.6迁移到2.7版 在这个版本中,他们不推荐我使用的很多东西。其中一个是Lang方法,您可以在迁移页面中看到: 因为我主要使用Play作为一个普通的后端API,所以我不使用任何视图,而是使用一些调用,我需要知道当前的语言是什么,以便返回翻译后的值 问题是我找不到任何方法来获取当前语言。所有示例都显示了更改/清除当前语言的方法,或者如何在视图中使用它,但我只想查询当前语言 例如,我的旧代码: play.api.i18n.Lang Lang=ctx().Lan
Lang
方法,您可以在迁移页面中看到:
因为我主要使用Play作为一个普通的后端API,所以我不使用任何视图,而是使用一些调用,我需要知道当前的语言是什么,以便返回翻译后的值
问题是我找不到任何方法来获取当前语言。所有示例都显示了更改/清除当前语言的方法,或者如何在视图中使用它,但我只想查询当前语言
例如,我的旧代码:
play.api.i18n.Lang Lang=ctx().Lang()代码>
或者这个:
lang().code()
如何使用Play 2.7+获得类似的结果?
谢谢您可以通过注射MessagesApi获得它
类似于控制器中的这种情况(直接用所见即所得编写,未经测试):
我在考虑首选的方法,但由于它不是一个“get”方法,并且基于某种查询,所以我不确定。你说的“它不是一个“get”是什么意思?你的函数完全是从后端(例如从调度程序)触发的“它自己的”还是由外部请求触发的?它是由控制器触发的,不用担心,我有一个外部请求。我正在测试这一切,稍后将在这里发表评论:)
@Inject
private MessagesApi messagesApi;
public Result index(Http.Request request) {
Lang currentLang = messagesApi.preferred(request).lang()
String langStr = currentLang.code();
return ok();
}