Hello Jon,
here is the code of a sample resource declaring 2 variants with the
same media-type and distinct languages.
I've tested it against release 1.1m2.
best regards,
Thierry Boileau
*****
import org.restlet.Context;
import org.restlet.data.Language;
import org.restlet.data.MediaType;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.resource.Representation;
import org.restlet.resource.Resource;
import org.restlet.resource.StringRepresentation;
import org.restlet.resource.Variant;
public class MyResource extends Resource {
public MyResource(Context context, Request request, Response response) {
super(context, request, response);
// Defines two text_plain variants
Variant variant = new Variant(MediaType.TEXT_PLAIN);
variant.getLanguages().add(Language.ENGLISH);
getVariants().add(variant);
variant = new Variant(MediaType.TEXT_PLAIN);
variant.getLanguages().add(Language.FRENCH);
getVariants().add(variant);
}
@Override
public Representation getRepresentation(Variant variant) {
Representation rep = null;
if (MediaType.TEXT_PLAIN.equals(variant.getMediaType())) {
if (variant.getLanguages().contains(Language.FRENCH)) {
rep = new StringRepresentation("Je parle français.");
} else {
rep = new StringRepresentation("I speak English.");
}
// Update the representation metadata
rep.setMediaType(variant.getMediaType());
rep.getLanguages().addAll(variant.getLanguages());
}
return rep;
}
}
*****
On Tue, Mar 11, 2008 at 7:11 PM, Jonathan Hall <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I've been looking at getting the preferred locale and I have a couple of
> questions.
>
> I see that getPreferredVariant() uses apaches content negotiation
> algorithm
> (http://httpd.apache.org/docs/2.2/en/content-negotiation.html#algorithm)
> which includes using the Accept-Language header:
>
> "|Accept-Language: en-gb,en;q=0.5"
>
> I'm unsure how (if) this comes into play or how to use it to get the
> preferred language.
>
> I added Language.FRENCH only to a variant and added it to
> Resource.getVariants() thinking it may use it in content negotiation, it
> seems not.
>
> If this worked as expected I propose a method like
> Resource.||getPreferredVariant().getPreferredLanguage()|| to get the
> preferred locale.|||
> |
> || If the client's language does not match then 406 or use a default
> language. Make it backwards compatible by only using that algorithm when
> languages are set?
>
> Any help, thoughts appreciated
>
> jon
>
> |||
> ||
>