java - 玩转语言动态

标签 java playframework

对 Play 来说相当陌生,试图动态更改语言。

路线

GET     /language/:lang             controllers.Index.setLanguage(lang: String)

到目前为止已尝试 (但都不起作用)

Lang.apply(language);
Lang.change(language);    // <-- doesn't even compile
Lang.apply(language);
ctx().changeLang(language);

查看

@import play.i18n.Messages
...
@Messages.get("message")
@messages.at("message")
...

两者都不起作用..

application.config

enter image description here

消息

enter image description here

方法 带有一些日志记录

public Result setLanguage(String language) {
  Http.Context context = Http.Context.current();
  String langFromHttpContext = context.lang().language();
  String langFromCtx = ctx().lang().language();
  String playLangCookieVal = request().cookies().get("PLAY_LANG").value();
  boolean changed = ctx().changeLang(language);

  Logger.info("Request param: " + language);
  Logger.info("Http context language: " + langFromHttpContext);
  Logger.info("ctx language: " + langFromHttpContext);
  Logger.info("PLAY_LANG cookie value: " + langFromCtx);
  Logger.info("Changed: " + changed);
  return ok(index.render("Index"));
}

结果

application - Request param: en
application - Http context language: nl
application - ctx language: nl
application - PLAY_LANG cookie value: nl
application - Changed: false

最佳答案

您需要从配置中删除application.langs="nl"。它已被弃用并被 play.i18n.langs 取代。

您必须仅保留play.i18n.langs=["en","nl"]

您的代码不起作用,因为 Play 读取 application.langs="nl" 并忽略 play.i18n.langs=["en","nl"] (因为 langs 已经从 application.langs 读取),所以它建议您的应用程序仅使用“nl”语言,当然不能将其设置为“en”,所以 ctx() .changeLang(语言)方法返回false

关于java - 玩转语言动态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39691705/

相关文章:

java - 如何在java中的注释字段中设置值?

java - Play Framework 1.2.4 : Selected Option for #{select} template

scala - Redis:何时使用 JedisPool 而不是 Cache.get

playframework - 有人可以解释 Ok 在游戏框架中的含义吗?

java - 使用单独的 Controller 进行拦截

java - 在Android中,如何使用Java反射调用sun.misc.Unsafe方法?

java - 如何检查一个数组是否具有另一个数组的平方元素(无论顺序如何)?

java - Spring boot ObjectMapper Bean 范围是什么?

java - `AutoFillTextBox type is not resolvable` 为什么?

Play2.2.1框架中的Json Scala对象序列化