Mercurial > dive4elements > framework
diff artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java @ 48:41c225c8bd41
Add i18n support via "Accept-Language" HTTP headers.
artifacts/trunk@168 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 01 Oct 2009 16:03:12 +0000 |
parents | 4ae4dc99127d |
children | 48d1a9a082c2 |
line wrap: on
line diff
--- a/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java Thu Oct 01 09:04:17 2009 +0000 +++ b/artifact-database/src/main/java/de/intevation/artifactdatabase/rest/BaseResource.java Thu Oct 01 16:03:12 2009 +0000 @@ -1,5 +1,8 @@ package de.intevation.artifactdatabase.rest; +import de.intevation.artifacts.CallMeta; +import de.intevation.artifacts.PreferredLocale; + import org.apache.log4j.Logger; import org.restlet.resource.ServerResource; @@ -7,6 +10,16 @@ import org.restlet.representation.Representation; +import org.restlet.data.Language; +import org.restlet.data.ClientInfo; +import org.restlet.data.Preference; + +import java.util.List; +import java.util.Iterator; + +import de.intevation.artifactdatabase.DefaultCallMeta; +import de.intevation.artifactdatabase.DefaultPreferredLocale; + /** * @author Sascha L. Teichmann (sascha.teichmann@intevation) */ @@ -59,5 +72,24 @@ { return super.get(); } + + protected CallMeta getCallMeta() { + ClientInfo clientInfo = getClientInfo(); + + List<Preference<Language>> pl = clientInfo.getAcceptedLanguages(); + + PreferredLocale [] languages = new PreferredLocale[pl.size()]; + + int index = 0; + + for (Iterator<Preference<Language>> iter = pl.iterator(); iter.hasNext();) { + Preference p = iter.next(); + String lang = p.getMetadata().getName(); + float quality = p.getQuality(); + languages[index++] = new DefaultPreferredLocale(lang, quality); + } + + return new DefaultCallMeta(languages); + } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8: