如何在 Play Framework 2.7 中获取当前语言

How do I get the current language in Play Framework 2.7

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

在这个版本中,他们弃用了我使用的很多东西。其中之一是 Lang 方法,您可以在他们的迁移页面中看到:https://www.playframework.com/documentation/2.8.x/JavaHttpContextMigration27#Lang-and-Messages-methods-in-Http.Context-deprecated

由于我主要使用 Play 作为普通后端 API,我没有使用任何视图,但对于某些调用,我需要知道当前的语言是什么,这样我就可以 return 翻译值。

问题是我找不到任何方法来获取当前语言。所有示例都显示了 change/clear 当前语言的方法或如何在视图中使用它,但我只想查询当前语言。

例如我的旧代码:

play.api.i18n.Lang lang = ctx().lang();

或者这样:

lang().code()

如何使用 Play 2.7 + 获得类似的结果? 谢谢

注入MessagesApi即可获取

在controller里像这样(直接写在这个所见即所得,没测试过):

@Inject
private MessagesApi messagesApi;

public Result index(Http.Request request) {
    Lang currentLang = messagesApi.preferred(request).lang()
    String langStr = currentLang.code();

    return ok();
}