gpt4 book ai didi

internationalization - Playframework 2.0.1DateFormatter 接收系统语言环境

转载 作者:行者123 更新时间:2023-12-02 02:13:50 25 4
gpt4 key购买 nike

我在 Play 2.0/Java 中写了一个自定义的 DateFormatter,因为默认的似乎是 i18n-unaware(实现细节在这里无关紧要)

public class DateFormatter extends Formatters.SimpleFormatter<Date>

我的应用配置包含

application.langs="pt-br, en"

浏览器选项中定义的语言包含这两个(accept-language)

逻辑上,Lang.preferred(List) 返回 pt-br 作为首选语言

@Override
public Action onRequest(Request request, Method method) {

Lang preferred = Lang.preferred(request.acceptLanguages());
Logger.debug("Preferred language is " + preferred.toLocale());

return super.onRequest(request, method);
}

但是(可悲的是)

我的自定义 DateFormatter 在

中接收的语言环境
@Override
public Date parse(String date, Locale locale) {
...
}

系统 (JVM) 区域设置,en-US,不请求首选区域。

这正常吗?我在这里错过了什么?

最佳答案

我认为您可以使用此解决方法:

对于每个请求,使用 Global interceptor ,您可以设置 LocaleContextHolder 来设置请求的区域设置:

public class Global extends GlobalSettings {

@Override
public Action onRequest(final Request request, Method actionMethod) {
LocaleContextHolder.setLocaleContext(new LocaleContext() {
public Locale getLocale() {
Lang preferred = Lang.preferred(request.acceptLanguages());
return preferred.toLocale();
}
});
return super.onRequest(request, actionMethod);
}

}

我没有测试过,但值得一试:-)

关于internationalization - Playframework 2.0.1DateFormatter 接收系统语言环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com