-1

在使用 Quarkus、RestEasy 和 Qute 的 Web 应用程序中,我成功地为不同语言创建了 Qute 模板和消息包。但是,我没有成功让它根据 HTTP 标头自动选择语言Accept-Language

Qute参考文献指出:

使用quarkus-resteasy-qute时,如果用户未设置, 则 locale 属性来自Accept-Language标头。

我正在使用quarkus-resteasy-qute扩展名 (in pom.xml),我可以看到Accept-Language标题设置为Accept-Language: fr,en-US;q=0.7,en;q=0.3. 但是页面是用英文显示的。那么我错过了什么?我需要添加一些代码吗?

如果我明确地将语言设置为法语(见下文),它会以法语显示。所以模板是多语言的。

@Path("/test")
public class HomeController {
    @Location("home")
    Template homeTemplate;

    @GET
    @Produces(MediaType.TEXT_HTML)
    public TemplateInstance showHome() {
        return homeTemplate
                .instance()
                .setAttribute("locale", "fr"); // hard-coded language works
    }
}
4

1 回答 1

2

resteasy-qute集成尚不支持此功能。随时在此处创建功能请求:https ://github.com/quarkusio/quarkus/issues 。

您也可以尝试发送 PR ;-)。这个 JAX-RSContainerResponseFilter需要修改:https ://github.com/quarkusio/quarkus/blob/main/extensions/resteasy-classic/resteasy-qute/runtime/src/main/java/io/quarkus/resteasy/qute /runtime/TemplateResponseFilter.java

于 2021-04-19T08:38:28.827 回答