在JavaScript中使用Play Framework配置值

时间:2014-10-08 13:53:39

标签: playframework playframework-2.2

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

修改

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

Play's i18n documentation

  

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

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

我的问题是a)有没有其他方法可以了解客户端的Play语言? b)为什么这个cookie无效?

2 个答案:

答案 0 :(得分:0)

查看play.Application.Configuration().asMap()Configuration类的其他方法之一。您可以在docs中阅读相关内容。

获得您感兴趣的设置后,您可以通过HTML / JS为它们提供服务,但这是您必须手动完成的。

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

修改

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

答案 1 :(得分:0)

现在,我花了一天时间看看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(); }