2013-04-26 74 views
3

我正在設計一個REST API,我希望將來可以本地化。我如何支持Jersey的本地化?

所以我定義的URL是形式的

/en/<resource_url> 

具有能夠支持

/fr/<resource_url> 

今後如果需要的話的意圖。

但是我只想定義每個資源url服務一次。因此,我想我需要得到的URL解析和重寫沒有URL的語言片段之前,它是匹配的服務。最後,這種語言應該以某種方式提供給他們,以便他們在必要時進行本地化。

我該如何做到這一點?

我在內嵌Jetty容器的Jersey 1.17內嵌入一個更大的服務器進程。

回答

4

您可以使/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