是否可以在Javascript中访问Play的配置值?具体知道当前选择的郎? (V2.2.3)
修改
更具体地说,我想本地化我在客户端的组件,我需要知道play用于在javascript文件中呈现页面的lang。
在新用户的第一个请求中,Play会猜测要使用的默认语言。它通过解析HTTP Accept-language标头来实现。然后它会将所选语言保存在PLAY_LANG cookie中。所以下一个请求将使用相同的语言。
出于某种原因,我不会在客户端看到这个cookie。
我的问题是a)有没有其他方法可以了解客户端的Play语言? b)为什么这个cookie无效?
答案 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(); }