En RDF, les chaînes de caractères ont un qualificatif de langue: "exemple"@fr.

Nous avons besoin de sélectionner la langue associée à un champ contenant un chaîne (par exemple prefLabel).

Pour cela, nous avons plusieurs possibilités :

  1. laisser un champ texte libre, où l’administrateur tape le code pays à deux lettres,
  2. mettre une liste déroulante de toutes les valeurs possibles (statique),
  3. mixer les deux, en permettant à l’utilisateur de chercher parmi les valeurs possibles (liste statique), et d’en sélectionner une, évitant ainsi les erreurs de saisie,
  4. avoir une liste déroulante, dans laquelle on peut chercher, de façon dynamique, dont les valeurs sont prises à la volée dans un référentiel présent sur le web sémantique (idéalement en JSON-LD).

L’inconvénient majeur de la première solution, c’est le non-contrôle des valeurs saisies (on pourrait le faire a posteriori, mais ça impliquerait une ergonomie plus lourde, de message d’erreur, et de retour en arrière).

Pour la deuxième solution, une liste déroulante statique contenant toutes les valeurs possibles, on se retrouve avec une liste déroulante contenant plus de 180 éléments !

Permettre à l’utilisateur de filtrer les éléments de la liste qu’il peut sélectionner, simplement en tapant le début d’une langue est une meilleure solution.

Sélecteur de langue

Sélecteur de langue de l’outil lodex, dans le backoffice

S’assurer que les valeurs de la liste sont à jour est encore mieux. Nous pourrions remplir la liste grâce à un référentiel disponible sur le web des données (comme par exemple sur http://linkedvocabs.org/lingvoj/, ou sur DBPedia), en utilisant une technologie semblable à celle que nous utilisons déjà pour la saisie du schéma correspondant à un champ: select2.

Référentiels possibles sur http://id.loc.gov/vocabulary/iso639-1.html, avec ses variantes JSON-LD et TSV.

Après essai de la variante JSON-LD de ce vocabulaire, il s’avère que le serveur de la Library Of Congress n’autorise pas les requêtes AJAX depuis un autre site web. Nous allons donc copier ce fichier dans l’application elle-même.