VlaamseKunstcollectie / Imagehub

A IIIF Presentation API compliant aggregator and web service
GNU General Public License v3.0
1 stars 2 forks source link

create multilingual label, description and attribution in manifest.json files #19

Closed Hobbesball closed 5 years ago

Hobbesball commented 5 years ago

Detailed description of the issue. Currently only the metadata in the 'metadata' array of a manifest.json file is served multilingually, while the label, description and attribution values are only served in Dutch. This results in Universal viewer displaying the dutch title, description and attribution on english language pages in the arthub.

Possible implementation Implement the multilingual creation of values in the generate-manifests command. Generating multilingual values for top-level fields can be done following this subchapter in the IIIF spec.

An example manifest would look like this:

{
    "@context": "http://iiif.io/api/presentation/2/context.json",
    "@type": "sc:Manifest",
    "@id": "https://imagehub.vlaamsekunstcollectie.be/iiif/2/mskgent.be:1982-N/manifest.json",
{"label": 
        {"@value": "Vechtende Mannen", "@language": "nl-be"},
        {"@value": "Fighting Men", "@language": "en-gb"}
    },
    "attribution": "Museum voor Schone Kunsten Gent",
    "related": "https://arthub.vlaamsekunstcollectie.be/nl/catalog/mskgent.be:1982-N",
    {"description": 
        {"@value": "beschrijving van Vechtende Mannen", "@language": "nl-be"},
        {"@value": "Description of fighting men", "@language": "en-gb"}
    },
    "metadata": [
...
Kitania commented 5 years ago

Added in 826f3daa183525901ffb8ff91fc85cfeb3f33b92

I do think that the given example is not valid JSON (see below for valid example). After implementing these changes, I have enabled the IIIF API validator to check each newly generated manifest and they all appear to be valid.

Example of multilingual JSON:

"label": [
    {
        "@language": "nl-BE",
        "@value": "De wraak van Hop-Frog"
    },
    {
        "@language": "en-GB",
        "@value": "Hop-Frog's Revenge"
    }
],
"attribution": [
    {
        "@language": "nl-BE",
        "@value": "Museum voor Schone Kunsten Gent"
    },
    {
        "@language": "en-GB",
        "@value": "Museum of Fine Arts Ghent"
    }
],
"related": "https://arthub.vlaamsekunstcollectie.be/nl/catalog/mskgent:1998-B-112",
"description": [
    {
        "@language": "nl-BE",
        "@value": "Voor de voorstelling “De wraak van Hop-Frog” baseerde Ensor zich op het gelijknamige verhaal van Edgar Allan Poe. De kunstenaar heeft het moment weergegeven waarop de koning en zijn ministers, verkleed als apen brandend boven een carnavalesk uitgedoste menigte hangen, waar ook Ensor zelf deel van uitmaakt. Intussen wakkert de dwerg Hop-Frog met zijn toorts het vuur aan. De compositie vertoont sterke overeenkomsten met de tekening van Jacques Callot “Eerste intermezzo van 1617” (Berlijn, Kupferstichkabinett). Van de voorstelling maakte Ensor in 1885 een lithografie, in 1896 een schilderij en twee jaar later de ets. De voorstelling in ets staat in spiegelbeeld, in vergelijking met de versie in lithografie."
    },
    {
        "@language": "en-GB",
        "@value": "For the show \"The Revenge of Hop-Frog\" Ensor was based on a story by Edgar Allan Poe. The artist has displayed the time that the king and his ministers dressed as monkeys burning hung above a carnival dressed crowd, where Ensor himself belongs. Meanwhile, with his torch dwarf Hop-Frog fanning the fire. The composition shows strong similarities with the drawing of Jacques Callot \"First interlude of 1617\" (Berlin, Kupferstichkabinett). The show Ensor made a lithograph in 1885, a painting and two years later the etching in 1896. The performance in etching is reversed compared to the version in lithography."
    }
],
Hobbesball commented 5 years ago

the example wasn't valid JSON indeed, I made some mistakes in that one. Your implementation is fully correct, thanks for validating!