我如何支持Jersey的本地化?

问题描述:

我正在设计一个REST API,我希望将来可以本地化。我如何支持Jersey的本地化?

所以我定义的URL是形式的

/en/<resource_url> 

具有能够支持

/fr/<resource_url> 

今后如果需要的话的意图。

但是我只想定义每个资源url服务一次。因此,我想我需要得到的URL解析和重写没有URL的语言片段之前,它是匹配的服务。最后,这种语言应该以某种方式提供给他们,以便他们在必要时进行本地化。

我该如何做到这一点?

我在内嵌Jetty容器的Jersey 1.17内嵌入一个更大的服务器进程。

您可以使/en//fr/部件成为变量。然后将您的区域设置为变量的值。这里有一个例子:

@Path("/{locale}/username") 
public class UserResource { 

    @GET 
    @Produces("text/xml") 
    public String getUser(@PathParam("locale") String locale) { 
     ... 
    } 
} 

但是,这可能不是最好的方式去了解它。回答之后,我发现了另一个SO问题,这是解决问题的更好方法:Getting the client locale in a jersey request通过这种方式,您无需将其添加到URL中。只要让客户端设置一个标题。

+0

我的+1是用于标题的使用 – fpmoles 2013-04-27 15:35:20