- From: Mikaël Labrut <labrut@gmail.com>
- Date: Thu, 2 Jul 2015 16:56:29 +0200
- To: Markus Lanthaler <markus.lanthaler@gmx.net>
- Cc: public-hydra@w3.org, Mikael Labrut <mlabrut@lafourchette.com>
- Message-ID: <CAFvBiuWN3k05MCkPn-GDorPo3tch7NtW9FCGoOoxWTVh9iPTJQ@mail.gmail.com>
Hi Markus,
Sorry for my late response, (pretty busy).
I think, we can already discuss about GET a i18n ressource and when we are
completely agree, I will update my complete document with your suggestions.
> using DunglasApiBundle.
>
> Cool! If you can share some more details, please do so.
>
>
Yes ! It's really a cool symfony bundle ! I will write a message in the
topic soon.
> > Imagine you have a "Country" (http://schema.org/Country) resource in
> your API.
> > How to manage i18N on it ?
>
> So we are talking about concepts which have localized descriptions. This
> is (sometimes) an important distinction as, let's say, a translated blog
> post is really a different resource.
>
Yes, we speak about same resource like a country.
> Let's make this clearer. There are n URLs, one for each localization. In
> the case of things like countries this is tricky and probably not the best
> design. Assume you addresses for Italian and English customers. Do you
> really want to link different resources just because they speak different
> languages?
>
> { "@id": "/italian-addres", "country": "/francia" }
>
> vs.
>
> { "@id": "/english-addres", "country": "/france" }
>
> I deliberately didn't use query parameters here.. it simply doesn't matter
> whether it is "just" a query parameter or some other part of the URL that
> differs. You would need to reconcile those to resource with something like
> "sameAs" to tell a machine that they are really identifying the same
> concept.
>
Ok, I am totally agree : one resource (eg :
http://references.com/countries/france ) must have only one URI. (it's the
base of linked data)
My main objective is : how to provide to the client string data on the
resource in his own language if available.
> > ### Sample 1 : No locale specified
> >
> > GET http://api.example.com/countries/1
> > ```json
> > {
> > "@context": {
> > "@base" : "http://schema.org",
> > "name" : {
> > "@container": "@language"
> > }
> > },
> > "@type": "Country",
> > "@id": "/countries/1",
> > "name": {
> > "fr-FR" : "Angleterre",
> > "en" : "England"
> > }
> > }
> > ```
> > => Will return resource with all locale data
>
> >From a linked data perspective this would be preferable I'd say. You can
> still only return a partial view on the resource with content negotiation
> (Accept-Language)
>
Ok, so instead of using a GET parameter to "limit" languages in the
response, prefer using HTTP-Accept-Language header to determine the limited
locale to return.
So you confirm, that for the url :
http://references.com/countries/england
These two json response can be "equivalent" and valid, the second is just
partial :
{
"@context": {
"@base" : "http://schema.org",
"name" : {
"@container" : "@language"
},
"@type": "Country",
"@id": "http://references.com/countries/england",
"name": {
"fr-FR" : "Angleterre",
"en" : "England"
}
}
{
"@context": "http://schema.org",
"@type": "Country",
"@id": "http://references.com/countries/england",
"@language": "fr-FR",
"name": "Angleterre"
}
One other question is : for the actual defined schema (on schema.org for
example), we can suppose that every "string" field can be
internazionalizable ?
Thanks for your help !
---
Mikael Labrut
06 78 47 47 85
Skype : labrut.mikael
Received on Thursday, 2 July 2015 15:43:33 UTC