Aller au contenu

Afficher et chercher les noms de lieux en inuktitut

Iqaluit, c'est aussi ᐃᖃᓗᐃᑦ. Une carte du Nunavut qui ne connaît que le nom anglais est fausse d'une façon que ses lecteurs remarquent tout de suite. Ce tutoriel couvre les trois endroits où un nom inuktitut apparaît : les libellés de la carte, le champ de recherche et le résultat reçu. Il se termine par ce que les données ne portent pas encore, parce que c'est ce qui décide si cela fonctionne pour les communautés qui vous importent.

résultat en direct
le code qui l'a produit
import { Unmap, maplibregl } from "@unmap/sdk";

const unmap = new Unmap({
  key: "um_live_...",
  container: "map",
  center: [-68.5145, 63.7467],
  zoom: 12,
});

const [place] = await unmap.geocoder.search("ᐃᖃᓗᐃᑦ", { limit: 1 });

new maplibregl.Marker({ color: "#FF3E9A" })
  .setLngLat([place.lng, place.lat])
  .setPopup(new maplibregl.Popup().setText(place.name))
  .addTo(unmap.map!);

Le code est du TypeScript ordinaire. Pour le câblage React, Next.js, Vue ou Nuxt, partez des recettes par cadriciel.

La carte les affiche déjà

Il n'y a rien à activer. Le fond de carte porte les noms autochtones sur l'entité elle-même : Iqaluit s'affiche Iqaluit avec ᐃᖃᓗᐃᑦ en dessous, quelle que soit la langue de libellé demandée. Là où le nom syllabique est le nom principal, il s'affiche en premier et le nom anglais en second. Les polices qui dessinent le syllabique sont livrées avec chaque style.

const unmap = new Unmap({ key, container: "map", center: [-68.5145, 63.7467], zoom: 12 });

Ne réglez pas lang: "iu" sur la carte. L'inuktitut n'est pas une langue de libellé dans les tuiles, et un code non pris en charge se rabat sur l'anglais, soit l'inverse de ce que vous vouliez. Laissez lang à la langue d'interface du lecteur : la ligne syllabique suit de toute façon.

Cherchez en syllabique

La recherche trouve les noms dans la langue où la requête est écrite. Une requête en syllabique trouve la communauté, pas un bâtiment qui porte le même nom.

const [place] = await unmap.geocoder.search("ᐃᖃᓗᐃᑦ", { limit: 1 });
 
console.log(place?.name); // "Iqaluit"
console.log(place?.names?.iu); // "ᐃᖃᓗᐃᑦ"

La saisie semi-automatique reconnaît un préfixe syllabique pendant la frappe : ᐃᖃᓗ suggère Iqaluit et ᐸᖕᓂ suggère Pangnirtung. Les anciens noms se cherchent aussi : Frobisher Bay trouve toujours Iqaluit.

Affichez le nom inuktitut

lang: "iu" sur le géocodeur retourne le nom inuktitut dans name quand l'enregistrement en a un, et se rabat sur le nom par défaut sinon.

const [here] = await unmap.geocoder.search("Iqaluit", { limit: 1, lang: "iu" });
console.log(here?.name); // "ᐃᖃᓗᐃᑦ"

Si vous affichez les deux noms, lisez plutôt names.iu directement. Toutes les valeurs iu ne sont pas écrites en syllabique : certains enregistrements y portent un nom inuktitut romanisé, et un enregistrement dont la valeur iu est syllabique peut aussi porter la romanisation sous iu-Latn. Vérifiez l'écriture avant de mettre une chaîne en forme comme du syllabique.

import type { GeocodeResult } from "@unmap/sdk";
 
// Syllabaire autochtone canadien unifié, U+1400 à U+167F.
const SYLLABICS = /[᐀-ᙿ]/;
 
function syllabicName(place: GeocodeResult): string | undefined {
  const iu = place.names?.iu;
  return iu && SYLLABICS.test(iu) ? iu : undefined;
}

Le même dictionnaire names porte d'autres langues autochtones là où la source les publie, sous leurs propres codes, comme cr pour le cri et oj pour l'ojibwé.

Là où cette approche se trompe

  • La couverture est mince, et c'est une lacune de sources, pas de moteur. À l'échelle du pays, le corpus porte un nom inuktitut pour relativement peu de communautés, et même au Nunavut certaines n'en ont aucun : Cambridge Bay et Arviat reviennent avec un nom anglais seulement. Une requête en syllabique pour un lieu sans nom iu n'a rien à trouver et ne retourne aucun résultat. Le moteur de recherche traite toutes les langues présentes ; ce qui manque, ce sont les données.
  • Les noms viennent de sources gouvernementales ouvertes. Ce sont la Base de données toponymiques du Canada (BDTC) de RNCan et Who's On First. Les noms gérés par les communautés ne sont pas importés : sous les principes OCAP® (PCAP®), c'est un partenariat, pas un téléchargement. Quand un enregistrement gagne un nom inuktitut dans une source, la reconstruction suivante du corpus l'indexe sans aucun changement de votre côté.
  • Une requête en syllabique doit correspondre à la graphie de l'enregistrement. Une autre graphie du même nom peut ne rien retourner. Offrez le nom anglais comme seconde porte d'entrée.
  • La carte et la recherche peuvent diverger. Les libellés du fond de carte viennent d'OpenStreetMap et la recherche vient du corpus fusionné : un libellé peut montrer un nom syllabique que la recherche ne porte pas, ou l'inverse.

Voir aussi