【问题标题】:Play Framework config value in JavaScript在 JavaScript 中播放框架配置值
【发布时间】:2014-10-08 13:53:39
【问题描述】:

是否可以在 Javascript 中访问 Play 的配置值?具体知道当前选择的语言? (v2.2.3)

编辑:

更具体地说,我想本地化我在客户端拥有的组件,并且我需要知道 play 用于在 javascript 文件中呈现页面的语言。

Play's i18n documentation:

根据新用户的第一个请求,Play 会猜测要使用的默认语言。它通过解析 HTTP Accept-language 标头来实现。然后它将选择的语言保存在 PLAY_LANG cookie 中。所以下一个请求将使用相同的语言。

由于某种原因,我在客户端看不到这个 cookie。

我的问题是 a) 有没有其他方法可以在客户端知道 Play 的语言? b) 为什么这个 cookie 不起作用?

【问题讨论】:

  • 你试过this吗?描述说:返回当前语言

标签: playframework playframework-2.2


【解决方案1】:

查看play.Application.Configuration().asMap()Configuration 类的其他方法之一。您可以在docs 中了解它。

获得你感兴趣的设置后,你可以通过 HTML/JS 提供它们,但这是你必须手动做的事情。

但我不确定您所说的当前选择的语言是什么意思。 Play 是无状态的,语言取决于客户的要求。相反,您的配置中的值是静态的,例如application.langs.

编辑:

控制器的 lang method 返回已确定的最佳语言(因此是“当前语言”),也许这就是您想要的。

【讨论】:

    【解决方案2】:

    现在我花了一天时间研究 Play 是如何做事的,我的问题似乎是错误的。我只是在这里发布答案,以防有人遇到这个问题。

    在 play 1.1.2 中,它设置了 Play_lang cookie。在我使用 2.2.3 的版本中,没有设置 cookie。

    我通过在服务器端设置 cookie 解决了我的问题:

    response().setCookie("Language", play.mvc.Controller.lang().code(), 360, "", "", false, false);
    

    然后用 JavaScript 读取它

    var value = "; " + document.cookie;
    var parts = value.split("; Language=");
    if (parts.length == 2) { 
    var culture = parts.pop().split(";").shift(); }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 2012-12-14
      相关资源
      最近更新 更多