Hi Manu

thanks for the explanation. What you describe should work just as well as OCA. For both, the verifier needs to know the schema in use plus either the overlays or the JSON-LD names in order to display the properties (and values) in the language of the verifier. The same is true for the holder as well.

Kind regards

David

On 26/04/2021 15:44, Manu Sporny wrote:
On 4/26/21 10:02 AM, David Chadwick wrote:
The OCA work of Human Colossus has a much better way of signalling
language and value layers on top of a base schema without burdening the
actual VC with these. Once a VC is issued it is fixed, so how do you handle
a new language?
I'll answer for the JSON-LD internationalization use case. I haven't been able
to understand the OCA work -- there's a lot there to absorb and the details
always seem to escape my grasp.

With JSON-LD... it depends on exactly what you want to do, but let's take a
simple example such as the type of vaccine. Let's say you want to use the WHO
ICD-11 code as the type... and let's just assume we're talking about a
"Measles, mumps, rubella" vaccine.

You'd have this entry in your JSON-LD Context ("XM8TF3" is the WHO ICD-11 code
for the "Measles, mumps, rubella" vaccine):

"XM8TF3": {
  "@id": "http://id.who.int/icd/entity/87842213",
  "@type": "@id"
}

You'd have this in your Verifiable Credential:

"vaccine": "XM8TF3"

You'll note that there is no language information anywhere in there, which
gets to your "how do you handle a new language" use case? In that case, the
WHO (or software developer needing to support dynamic multilingual use cases)
would annotate the vaccine entry with language information. So, they'd publish
something like this:

{
  "@context": "https://w3id.org/vaccination/v1",
  "id": "http://id.who.int/icd/entity/87842213",
  "type": "Vaccine",
  "name": {
    "en": "Measles, mumps, rubella",
    "es": "Paperas, sarampión, rubéola",
    "jp": "はしか、おたふく風邪、風疹",
    "ar": "الحصبة والنكاف والحصبة الألمانية",
    ...
  }
}

You'll note that the original VC doesn't have to contain any language
information. You'll also note that the WHO gets to define the translations for
their vaccination type. You may also note that the translations don't have to
come from WHO and could be done by the software developer if they so choose.

This feature has existed in Linked Data systems for 21+ years. Unfortunately,
it seems as if many of the people working on vaccination certificates seem to
be unaware of the multilingual issues they're creating with the current
solutions. To be clear, I don't think it's a big deal... the nice thing about
VCs is that you can always re-issue them and make them better... and because
they're powered by Linked Data, if you get the identifiers right, you can
always improve things in a decentralized, iterative fashion. The tools are
there, it's just a matter of using them in the right way.

-- manu