Playframework 如何在Play Framework 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

我正在从Play Framework 2.6迁移到2.7版

在这个版本中,他们不推荐我使用的很多东西。其中一个是
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();
}