如何在 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();
}
我正在从 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();
}