feat(kreyol): ouvrir la relecture et la prononciation aux locuteurs

Amendement de l'ADR 0005 : la relecture ne repose plus sur un relecteur
unique. La porte ne s'abaisse pas — l'ouverture porte sur qui peut
proposer, jamais sur qui peut valider.

La communauté existait déjà
- Lingua Libre compte 456 enregistrements en kréyòl gwadloupéyen, versés
  sur Commons sous licence libre.
- Trois de nos treize noms y figuraient déjà — gouyav, kénèt, zikak — en
  CC BY-SA 4.0 et AVEC EXACTEMENT NOTRE GRAPHIE. Trois entrées sortent du
  doute par corroboration externe, sans que le projet décide quoi que ce
  soit. La question n'était pas qui trancherait, mais d'aller regarder.
- En regard : 0 lexème Wikidata en gcf, 0 étiquette gcf sur les 13 items.

Modèle de données
- orthographe.statut : a_relire | en_discussion | relu. Un doute signalé
  sans question posée est refusé par le validateur — on ne décourage pas
  le lecteur, on l'appelle. 4 entrées en discussion : ake, medisinye,
  lorye-jonn, pom-dlo.
- noms.variantes_gcf : les usages proposés sont conservés avec leur source
  et leur île, jamais écrasés. Une graphie identique au nom principal est
  refusée comme variante : c'est une corroboration, pas un désaccord.
- audio : source, licence, url_description, locuteur crédité, valide.
  check:audio interroge Lingua Libre et trouve seul les prises existantes.

Porte : 14/14 (5 cas ajoutés sur la langue et la prononciation).

Pis-aller assumé : les 4 questions sont rédigées en français. Les écrire
en kréyòl reviendrait à produire du kréyòl non relu au moment même où l'on
reconnaît ne pas savoir le faire. Leur traduction est la première
contribution demandée.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
OKI
2026-07-27 10:40:23 -04:00
co-authored by Claude Opus 5
parent 9e3c176411
commit 4f78321195
26 changed files with 848 additions and 112 deletions
+44 -3
View File
@@ -74,6 +74,34 @@ function normaliserDanger(d) {
return { ...reste, resume: resume ?? note };
}
/**
* Les questions posées aux locuteurs, affichées telles quelles dans le jeu.
*
* Ce sont des QUESTIONS, pas des corrections : le projet n'a pas à trancher l'orthographe
* kréyòl (ADR 0005), mais il a le devoir de dire où il doute plutôt que d'afficher une
* graphie douteuse avec l'aplomb d'une certitude.
*
* Une entrée qui figure ici sort en `statut: "en_discussion"`, ce qui déclenche l'affichage
* de la question dans l'encyclopédie et dans le jeu.
*/
const QUESTIONS_KREYOL = {
ake: "Nous écrivons « aki », mais l'identifiant du fruit dit « ake ». Laquelle des deux graphies est la bonne en Guadeloupe ? Et comment le prononcez-vous chez vous ?",
medisinye: "« medsinyé » ou « medisinyé » ? Nous rencontrons les deux. Laquelle employez-vous ?",
'lorye-jonn': "« lorié-jòn » ou « lorye-jonn » ? Nous ne savons pas trancher. Comment l'écrivez-vous ?",
'pom-dlo':
"Selon les îles, « pòm-dlo », « pòm-malaka » et « pòm-rose » ne désignent pas le même fruit. Lequel appelez-vous « pòm-dlo » ?"
};
/**
* Ces questions sont rédigées en français, et c'est un pis-aller assumé : demander en
* français à des locuteurs kréyòl de corriger du kréyòl est un contresens. Mais rédiger
* la question en kréyòl reviendrait à produire du kréyòl non relu au moment même où l'on
* reconnaît ne pas savoir le faire (ADR 0005).
*
* Leur traduction en kréyòl fait donc partie des contributions demandées — c'est la
* première tâche listée dans docs/kreyol-participatif.md.
*/
/** Deux planches Blanco tronquées au même slug : on désambiguïse plutôt que de perdre un média. */
function idsUniques(medias) {
const vus = new Map();
@@ -159,8 +187,13 @@ async function main() {
$schema: '../../../../fruits.schema.json',
id: e.id,
categorie: e.categorie,
noms: e.noms,
orthographe: { norme: 'gwadloupeyen', statut: 'a_relire', relu_par: null },
noms: { ...e.noms, variantes_gcf: [] },
orthographe: {
norme: 'gwadloupeyen',
statut: QUESTIONS_KREYOL[e.id] ? 'en_discussion' : 'a_relire',
relu_par: null,
question_ouverte: QUESTIONS_KREYOL[e.id] ?? null
},
taxon: {
scientifique: t.gbif.canonicalName ?? e.taxon.scientifique,
famille: t.gbif.famille ?? e.taxon.famille,
@@ -179,7 +212,15 @@ async function main() {
danger: normaliserDanger(e.danger),
indices: e.indices ?? {},
medias: candidats,
audio: { gcf: null, locuteur: null },
audio: {
gcf: null,
locuteur: null,
source: null,
licence: null,
url_description: null,
valide: false,
note: null
},
sources_factuelles: [],
valide: false
};