Refonte complète du lexique Confluent et système d'audit

- Correction et extension du lexique: 78 → 0 erreurs
- Ajout de 14 racines manquantes (toli, konu, aika, vito, paka, nutu, tuli, nemu, zeru, novi, muta, supu, selu, saki)
- Extension du lexique: 67 racines standards (53 → 67)
- Création de 6 nouveaux fichiers lexique (navigation, architecture, concepts philosophiques, étrangers, actions militaires, vêtements)
- Réduction consonnes rares: 26.5% → 2.7%
- Remplacement racines anglaises par finno-basques (malo→paka, situ→tuli, taki→kanu, time→aika)
- Correction des mots mal formés (ulak→kulak, koliukitan→koliukita, ulapisu→lapis, pekikayo→pekikazo)
- Amélioration script d'audit: charge maintenant verbes, compositions et grammaire (638 racines)
- Ajout scripts de maintenance (audit, correction consonnes rares, détection doublons)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
StillHammer 2025-12-01 21:53:03 +08:00
parent 6597ac8cbb
commit 4236232a62
44 changed files with 7139 additions and 420 deletions

938
ANALYSE_LACUNES_LEXIQUE.md Normal file
View File

@ -0,0 +1,938 @@
# RAPPORT D'ANALYSE DU LEXIQUE DE LA LANGUE ANCIEN CONFLUENT
**Date d'analyse** : 2025-12-01
**Objectif** : Identifier les lacunes du lexique par rapport au contenu du JDR
---
## SECTION A : Vue d'ensemble du lexique actuel
### Statistiques générales
- **Total de lignes** : ~10,103 lignes JSON
- **Total de fichiers** : 25 fichiers thématiques + 1 fichier grammaire
### Catégories couvertes
1. **01-racines-sacrees.json** (280 lignes) : 19 racines sacrées commençant par voyelle
- Concepts fondamentaux : libre (aska), ancêtre (aita), sacré (asa), eau (ura), esprit (umi), un (iko), être (ita), origine (ena), tout (eka), épreuve (oki), aurore (ora), son (onu), étoile (atu), mort (osi), aile (apa)
- Animaux sacrés : oiseau (apo), grue (alu), faucon (aki)
2. **02-racines-standards.json** (806 lignes) : Racines courantes + pronoms
- Qualificatifs : grand, petit, lent, rapide, nouveau, vieux, chaud, froid, bon, mauvais, clair, sombre, long, bas
- Concepts abstraits : vrai, bon, paix, mémoire, valeur, travail, temps, guerre, secret
- Matériaux : bois, cendre, gris, sang, lait, sel, poison
- Géographie : mer, vallée, route, sommet, ligne, lieu
- Actions : échanger, frapper
- Pronoms : je (miki), tu (sinu), il/elle (tani), nous/vous/ils
3. **03-castes.json** (378 lignes) : Groupes sociaux et castes
- ✓ Siliaska (peuple)
- ✓ Nakukeko (Enfants des Échos)
- ✓ Nakuura (Enfants du Courant)
- ✓ Aliaska (Ailes-Grises)
- ✓ Akoazana (Faucons Chasseurs)
- ✓ Takitosa (Passes-bien)
- ✓ Oraumi (Voix de l'Aurore)
- ✓ Zerusora (Ciels-clairs)
- ✓ Zozeru (Sans-ciels)
- ✓ Castes des 5 éléments (Air, Feu, Eau, Terre, Éther)
4. **04-lieux.json** (315 lignes) : Lieux majeurs
- ✓ Uraakota (La Confluence)
- ✓ Vukuura (Gouffre Humide)
- ✓ Kekutoka (Antres des Échos)
- ✓ Sikuvela (Cercles de Vigile)
- ✓ Talusavu (Halls des Serments)
- ✓ Ekakova (Grande Fresque)
- ✓ Osiuaita (Ruines des Premiers Ancêtres)
- Structures : village fortifié, basses-terres, avant-poste côtier, sanctuaire, forteresse, antre
5. **05-corps-sens.json** (202 lignes) : Anatomie et perception
- ✓ Parties du corps : œil (sili), main (kanu), voix (voki), oreille (tiku), visage (muka), cœur (kori), corps (sanu), pied (peki), chair, peau, sang, poumon, souffle
- ✓ Yeux de l'aurore (siluora)
- Écho (keko)
6. **06-actions.json** (1185 lignes) : Verbes d'action
- Mouvement, création, communication, observation, etc.
7. **07-emotions.json** (302 lignes) : États émotionnels
8. **08-nature-elements.json** (464 lignes) : Éléments naturels
- ✓ Éléments : ciel, terre, feu, air, eau, pierre
- ✓ Géographie : rivière, montagne, forêt, arbre, vallée, mer, grotte, cascade, source, côte, horizon, promontoire, pic
- ✓ Célestes : lune, soleil, lumière, étoile, nuage
- ✓ Météo : tempête
- Qualités : humide, sec, profond, sombre
9. **09-institutions.json** (204 lignes) : Institutions politiques
- ✓ Cercle des Sages (rikuusekitori)
- ✓ Tribunal des Mœurs (verimuloku)
- ✓ Proclamateur (vokiueka)
- ✓ Assemblée des Chefs (kotaukasi)
- ✓ Maison des Découvertes (nutuumiris)
- ✓ Arbitre des Esprits (zakiiumi)
- ✓ Directoire (kasiiukota)
- ✓ Conseil du Village (kotaurikusi)
- Célébrations : Autel ancestral, Vigile Lunaire, Jour des Ancêtres, Jour du Faucon
10. **10-animaux.json** (224 lignes) : Faune
- ✓ Regards-Libres (aruaska)
- ✓ Grue cendrée (arusenu)
- Animaux génériques : bête, gibier, poisson (rivière), serpent (+ d'eau), oiseau (+ de proie), loup, meute
- ✗ MANQUE : Créature inconnue existe mais pas d'animaux spécifiques évoqués dans le jeu
11. **11-armes-outils.json** (378 lignes) : Équipement
- Armes : lance, arc, flèche, hachette, couteau, gourdin, bouclier
- Outils : pioche, ciseau, maillet, burin, corde, filet, panier, piège
- Objets : tablette, collier, vase rituel, coffret
- Structures : foyer, armurerie, grenier
12. **13-rituels.json** (394 lignes) : Pratiques sacrées
- ✓ Rituel du Regard Partagé (asausiliaakota)
- ✓ Glyphes du Gouffre (kovuuvuku)
- ✓ Colliers de glyphes (kopuukova)
- ✓ Tablettes d'argile (tabuutoka)
- ✓ Argile vivante (tokauita)
- ✓ Rhombes sacrés (onuuasa) + variants
- ✓ Artefact multi-générationnel (nekauekaaita)
- ✓ Autel des Pionniers (asauenuaita)
- ✓ Lois du Sang et de la Bête (lokuurasubetu)
- ✓ Porteur de Flamme (takiusuki)
- Matériaux rituels : lait de pierre, roche braise, pigments anciens
- Concepts : pèlerinage, rites funéraires, fenêtre temporelle, tradition
13. **14-geographie.json** (308 lignes) : Géographie spécifique
14. **15-roles-titres.json** (540 lignes) : Rôles sociaux
- ✓ Titres spirituels : oracle, chaman, guide des âmes, Aile-Grise
- ✓ Titres militaires : Faucon Chasseur, guerrier, archer, porteur de lance, capitaine, sentinelle, traqueur
- ✓ Titres artisanaux : maître artisan, façonneur de pierre, sculpteur, peintre, tisserand, pêcheur, mineur
- ✓ Famille : ancêtre, mère, père, époux, aîné, descendant
- ✓ Chefs : chef, Grand Chef, sage, gardien des lois
15. **16-communication.json** (349 lignes) : Communication
16. **17-temps.json** (281 lignes) : Temporalité
17. **18-couleurs.json** (321 lignes) : Couleurs
18. **19-sante-dangers.json** (264 lignes) : Santé et dangers
19. **20-objets-materiaux.json** (476 lignes) : Objets et matériaux
20. **21-famille.json** (141 lignes) : Relations familiales
21. **22-nombres.json** (279 lignes) : Système numérique
22. **23-nourriture.json** (463 lignes) : Alimentation
- ✓ Larmes du Ciel (zeruosi)
- ✓ Morsure-des-Ancêtres (aiteopalu)
- Aliments : poisson, gibier, baie, tubercule, fruit, mollusque, graine, galette, herbe, aromate, légume
- Techniques : fumer, sécher, griller, cuisiner, infuser
- Concepts : nourriture, boire, réserve, manque
23. **24-habitat.json** (164 lignes) : Habitat et structures
---
## SECTION B : Lacunes critiques - Concepts de jeu absents du lexique
### B.1 - Noms propres et peuples étrangers
**MANQUE TOTAL** : Aucun vocabulaire pour les peuples étrangers découverts
- ❌ **Nanzagouet** : Peuple des "Cheveux de Sang" (premier contact 28/10/2025 et 25/11/2025)
- ❌ **Cheveux de Sang** : Nom donné aux étrangers aux cheveux roux
- ❌ **l'Autre** : Concept philosophique de l'étranger qui ne partage ni ancêtres, ni langue, ni intentions
- ❌ **Premiers Ancêtres** : Civilisation disparue (distinct de "aita" = ancêtre générique)
- Note : "Ruines des Premiers Ancêtres" existe (osiuaita) mais pas le concept spécifique de "Premiers Ancêtres" comme peuple distinct
### B.2 - Concepts spirituels et philosophiques majeurs
- ❌ **"Porter un regard libre"** : Concept central de la civilisation (mandatory pilgrimage, cultural identity)
- ❌ **"Promis à pareil destin"** : Phrase existentielle clé exprimant la peur de disparaître comme les Premiers Ancêtres
- ❌ **Gardiens des passages** : Âmes des pionniers morts qui ne peuvent atteindre le ciel
- ❌ **Suffocation** (spirituelle) : Effet de rester trop longtemps dans les Antres
- ❌ **Miasme** : Gaz toxiques des ruines anciennes
- ❌ **Multi-couche** / **Multicouche** : Concept des fresques à plusieurs strates temporelles
- ❌ **Vassalité théocratique** : Système de gouvernance des Faucons Chasseurs
### B.3 - Institutions et structures politiques manquantes
- ✓ Hall des Serments existe MAIS manque :
- ❌ **Conseil du Village** (structure à 4 membres existe mais vocabulaire incomplet)
- ❌ **Pèlerinage annuel** (obligation des conseillers)
- ❌ **Charges méritées** (philosophie politique : charges à mériter, non héréditaires)
- ❌ **Compensation** (système de rémunération des conseillers)
- ❌ **Gouffre Humide comme campus multi-caste** (transformation institutionnelle)
- Groupes d'étude : spirituels, techniques, philosophiques trans-castes
### B.4 - Technologies et matériaux spécifiques
**Glyphes du Gouffre** : Système d'écriture partiellement couvert mais manque :
- ❌ **Blocs modulaires** : Format physique des glyphes (petits blocs percés)
- ❌ **Réutilisable** : Propriété des colliers de glyphes
- ❌ **Nœuds** : Éléments structurels des colliers
- ❌ **Distribution** (par Passes-bien)
- ❌ **Standard pragmatique** : Philosophie du système d'écriture
- ❌ **Invention locale** : Liberté d'inventer ses propres glyphes
**Argile vivante** : Existe (tokauita) mais manque :
- ❌ **Durcissement instantané** : Propriété clé du matériau
- ❌ **Exposition à l'air** : Mécanisme de durcissement
- ❌ **Monopole des Enfants des Échos** : Aspect économique
**Autres technologies manquantes** :
- ❌ **Pilotis** : Architecture des villages sur l'eau (concept architectural majeur)
- ❌ **Tour de guet** : Élément des Halls des Serments
- ❌ **Zones climatiques** : Organisation de la Maison des Découvertes (4 zones)
- ❌ **Expérimentation multi-matériau** : Méthode de la Maison des Découvertes
### B.5 - Géographie et lieux spécifiques
**Lieux non nommés** :
- ❌ **Village fortifié à l'embouchure** : Premier Hall des Serments (lieu majeur du jeu)
- Note : "village fortifié" existe mais pas le lieu spécifique à l'embouchure
- ❌ **Embouchure** : Où fleuve rencontre mer (concept géographique)
- ❌ **Route-rivière sécurisée** : Chemin entre vallée et côte avec postes de garde
- ❌ **Postes de garde** : Structures espacées d'une journée de marche
- ❌ **Lowlands** / **Basses-terres** : Région au-delà de la vallée de montagne
- Note : "basses-terres" existe (tokuvuku) dans 04-lieux.json
**Éléments géographiques manquants** :
- ❌ **Eau salée** / **Eau impure** : Caractéristique de la mer
- ❌ **Eau douce** : Par opposition à eau salée
- ❌ **Berge** / **Rive** : Bord de rivière/mer
- ❌ **Marée** : Phénomène marin
- ❌ **Vague** : Élément maritime
### B.6 - Pratiques et rituels spécifiques
**Rituels manquants** :
- ❌ **Rituel du Regard Partagé - renouvellement annuel** : Usage spécifique pour les conseillers
- ❌ **Communion des esprits** : Rituel mentionné
- ❌ **Devenir partie de l'Antre** : Tradition des artisans âgés (refus d'enlever le corps, fierté)
- ❌ **Relais de mémorisation** : Technique des Ailes-Grises pour interpréter la fresque
- ❌ **Débat à travers le temps** : Concept de l'interprétation multi-générationnelle
**Justice et lois** :
- ✓ Lois du Sang et de la Bête existe MAIS manque :
- ❌ **Investigation** : Phase d'enquête par Faucons Chasseurs
- ❌ **Arène** : Lieu du combat judiciaire
- ❌ **Combat judiciaire** : Trial by combat
- ❌ **Coupable** / **Innocent** : Concepts juridiques
### B.7 - Activités militaires et tactiques
**Tactiques et équipement** :
- ❌ **Observation** (militaire) : Surveillance des ennemis
- ❌ **Capture** : Stratégie de prise de prisonniers
- ❌ **Interrogation** : Questionnement de captifs
- ❌ **Embuscade** : Tactique de surprise
- ❌ **Surnombre** : Supériorité numérique
- ❌ **Menacer** : Action d'intimidation
- ❌ **Soumettre** : Forcer la reddition
- ❌ **Abordage** : Attaque d'un navire
- ❌ **Se faire passer pour** : Déguisement/subterfuge
**Structures militaires** :
- ❌ **Garrison** : Groupe de défense permanent
- ❌ **Réserves** (militaires) : Stocks d'urgence
- ❌ **Armurerie** : Existe (lokuupiki) mais contexte du Hall manque
### B.8 - Navigation et mer
**DOMAINE PRESQUE ENTIÈREMENT ABSENT** :
Technologies maritimes :
- ❌ **Navire** : Existe (vanu) mais contexte minimal
- ❌ **Embarcation** : Bateau/barque
- ❌ **Construction en bois** : Description des navires étrangers
- ❌ **Manœuvrer** : Piloter un bateau
- ❌ **Échouer** / **Échouée** : Bateau sur le rivage
- ❌ **Chavirer** / **Se retourner** : Accident maritime
- ❌ **Couler** / **Sombrer** : Naufrage
- ❌ **Noyade** : Mort par l'eau
- ❌ **Rivage** : Bord de mer
- ❌ **Flotter** : Propriété d'un bateau
- ❌ **Créature flottante** : Perception initiale des navires
Activités maritimes :
- ❌ **Naviguer** : Voyager sur l'eau
- ❌ **Aborder** : Monter sur un navire
- ❌ **Marin** : Personne qui navigue
- ❌ **Pérégrination aquatique** : Voyage sur l'eau
- ❌ **Point d'eau** (côtier) : Lieu de ravitaillement
- ❌ **Ravitaillement en eau douce** : Besoin des marins
### B.9 - Vie quotidienne et objets
**Vêtements et apparence** :
- ❌ **Cheveux** : Partie du corps (crucial pour "Cheveux de Sang")
- ❌ **Trancher** / **Couper** (cheveux)
- ❌ **Oripeaux** / **Vêtement** / **Tenue**
- ❌ **Nu** / **Exhiber nu** : État vestimentaire
- ❌ **Taille** / **Morphologie** : Dimensions corporelles
- ❌ **Correspondre** : Adéquation de taille
**Actions quotidiennes manquantes** :
- ❌ **Courir après** : Poursuite
- ❌ **Forcer à rester** : Contrainte
- ❌ **Arracher** : Enlever de force
- ❌ **Panique** / **Paniquer**
- ❌ **Émeute** : Rébellion collective
- ❌ **Rouer de coups** : Violence physique
- ❌ **Mâter** : Soumettre par la force
- ❌ **Résister** : Opposition
**États et conditions** :
- ❌ **Vulnérable** : État de faiblesse
- ❌ **Audace** : Qualité de courage
- ❌ **Orgueilleux** : Défaut caractériel
- ❌ **Patient** : Vertu
- ❌ **Initiative** : Prise de décision
- ❌ **Imprévu** : Événement inattendu
- ❌ **Désordre** : Chaos
- ❌ **Choc** : Traumatisme émotionnel
### B.10 - Flore spécifique
- ✓ Morsure-des-Ancêtres existe (aiteopalu = gingembre sauvage)
- ❌ **Plante médicinale** : Catégorie manquante
- ❌ **Plante sauvage** vs **Plante cultivée** : Distinction importante
- ❌ **Récolte** : Action de cueillette
- ❌ **Cueilleur** : Rôle social
### B.11 - Temps et durée
**Concepts temporels manquants** :
- ❌ **Génération** : Unité de temps civilisationnelle
- ❌ **Décennie** : Dizaine d'années
- ❌ **Siècle** : Cent ans
- ❌ **Millénaire** : Mille ans
- ❌ **Éternel** : Sans fin
- ❌ **Temporalité** : Concept du temps
- ❌ **Multi-générationnel** : Qui traverse plusieurs générations (crucial pour artefacts)
- ❌ **Relais** (temporel) : Transmission à travers le temps
- ❌ **Stratification temporelle** : Couches de temps
### B.12 - Concepts sociaux et culturels
**Isolement et appartenance** :
- ❌ **"Don't like those from the surface"** : Attitude des Enfants des Échos
- ❌ **Culturellement isolé** : État de séparation
- ❌ **Surface** vs **Souterrain** : Opposition spatiale/culturelle
- ❌ **Adaptation physique** : Changements corporels (pâleur, membres allongés, cécité)
- ❌ **Pâle** : Couleur de peau
- ❌ **Allongé** : Forme corporelle
- ❌ **Aveugle** / **Cécité** : Perte de vision
**Hiérarchie et pouvoir** :
- ❌ **Monopole** : Contrôle exclusif (crucial pour économie)
- ❌ **Élite** : Groupe dominant
- ❌ **Permanent** : Non temporaire (pour garrison)
- ❌ **Transitoire** / **Temporaire** : Opposé de permanent
- ❌ **Mériter** : Gagner par le mérite
- ❌ **Héréditaire** : Transmission familiale (concept à rejeter)
- ❌ **Fief** : Territoire accordé (concept à rejeter)
**Valeurs et philosophie** :
- ❌ **Gloire** : Honneur et renommée
- ❌ **Honneur** : Valeur morale
- ❌ **Fierté** : Sentiment de dignité
- ❌ **Reproche** : Critique
- ❌ **Louer** : Complimenter
- ❌ **Imputer la faute** : Accuser
- ❌ **Indigne** : Déshonorant
- ❌ **Satisfaire** : Répondre aux attentes
- ❌ **Exigence** : Demande forte
---
## SECTION C : Lacunes thématiques - Catégories sous-développées
### C.1 - Faune : Seulement 10 animaux pour un monde riche
**Animaux présents** :
- Grue (alu) + Regards-Libres (aruaska) + grue cendrée
- Faucon (aki)
- Oiseau générique (apo)
- Poisson (pisu)
- Serpent (sepu) + serpent d'eau
- Loup (loku) + meute
- Bête générique (betu)
**Animaux manquants mentionnés dans le jeu** :
- ❌ **Gibier spécifique** : Cerf, sanglier, lapin, etc.
- ❌ **Animaux de la Grande Fresque** : "Unknown animals" de la fresque
- ❌ **Prédateurs** : Ours, lynx, etc.
- ❌ **Insectes** : Aucun vocabulaire
- ❌ **Reptiles** : Seulement serpent
- ❌ **Amphibiens** : Aucun
- ❌ **Oiseaux spécifiques** : Au-delà de grue/faucon
- ❌ **Créatures d'eau douce** : Au-delà de poisson générique
- ❌ **Créatures marines** : Aucune (alors que mer découverte)
### C.2 - Matériaux : Lacunes dans matériaux de construction
**Présent** : pierre, bois, argile vivante, lait de pierre
**Manquant** :
- ❌ **Mortier** : Liant de construction
- ❌ **Chaux** : Matériau de construction
- ❌ **Torchis** : Mélange construction
- ❌ **Paille** / **Chaume** : Matériaux de toiture
- ❌ **Cuir** : Matériau animal
- ❌ **Os** : Matériau et reste mortuaire
- ❌ **Tendon** : Matériau pour cordes
- ❌ **Résine** : Matériau végétal
- ❌ **Écorce** : Matériau végétal
- ❌ **Fibre végétale** : Pour tissage
- ❌ **Lin** / **Chanvre** : Plantes à fibres
### C.3 - Architecture : Vocabulaire architectural minimal
**Présent** : Hall, maison, village, forteresse, antre, grotte
**Manquant** :
- ❌ **Pilotis** : CRITIQUE - architecture majeure des Enfants du Courant
- ❌ **Plate-forme** : Structure sur pilotis
- ❌ **Escalier** : Mentionné dans "2025-07-17-escaliers-et-maladie.md"
- ❌ **Marche** : Élément d'escalier
- ❌ **Seuil** : Entrée
- ❌ **Linteau** : Élément architectural
- ❌ **Colonne** / **Pilier** : Support
- ❌ **Voûte** : Construction souterraine
- ❌ **Galerie** : Passage souterrain (crucial pour Antres)
- ❌ **Chambre** : Pièce
- ❌ **Atelier** : Lieu de travail
- ❌ **Entrepôt** : Stockage
- ❌ **Tour** : Structure haute (tour de guet)
- ❌ **Mur** : Paroi
- ❌ **Muraille** : Fortification
- ❌ **Enceinte** : Protection
- ❌ **Porte** : Passage
- ❌ **Fenêtre** : Ouverture
- ❌ **Toit** : Couverture
### C.4 - Parties du corps : Liste incomplète
**Présent** : œil, main, voix, oreille, visage, cœur, corps, pied, poumon, souffle, chair, peau, sang
**Manquant** :
- ❌ **Cheveux** : CRITIQUE (Cheveux de Sang)
- ❌ **Tête** : Partie majeure
- ❌ **Bras** : Membre
- ❌ **Jambe** : Membre
- ❌ **Doigt** : Extrémité
- ❌ **Orteil** : Extrémité
- ❌ **Bouche** : Organe
- ❌ **Langue** (organe) : Distinct de langue (langage)
- ❌ **Dent** : Organe
- ❌ **Nez** : Organe
- ❌ **Front** : Partie visage
- ❌ **Joue** : Partie visage
- ❌ **Menton** : Partie visage
- ❌ **Cou** : Partie corps
- ❌ **Épaule** : Partie corps
- ❌ **Dos** : Partie corps
- ❌ **Ventre** : Partie corps
- ❌ **Estomac** : Organe interne
- ❌ **Foie** : Organe interne
- ❌ **Os** : Structure interne (crucial pour squelettes des ruines)
- ❌ **Squelette** : Ensemble d'os
- ❌ **Crâne** : Os de la tête
- ❌ **Côte** : Os du thorax
### C.5 - Maladies et dangers : Sous-développé pour un jeu avec miasmes toxiques
**Présent** : Fichier 19-sante-dangers.json existe mais contenu non lu en détail
**Manquant probable** :
- ❌ **Miasme** : CRITIQUE - gaz toxique des ruines
- ❌ **Toxique** : Empoisonné
- ❌ **Sommeil mortel** : Effet des miasmes
- ❌ **Dégénérescence** : État des os anciens
- ❌ **Maladie** : Concept général
- ❌ **Contagion** : Transmission
- ❌ **Guérison** : Rétablissement
- ❌ **Blessure** : Dommage physique
- ❌ **Fracture** : Os cassé
- ❌ **Brûlure** : Dommage par feu
- ❌ **Noyade** : CRITIQUE (échec naval)
- ❌ **Suffocation** : Manque d'air
- ❌ **Famine** : Manque de nourriture
- ❌ **Soif** : Manque d'eau
### C.6 - Artisanat et techniques : Lacunes malgré civilisation d'artisans
**Présent** : Termes génériques (artisan, sculpteur, peintre, tisserand)
**Manquant** :
- ❌ **Tresser** : Technique de tissage
- ❌ **Filer** : Créer du fil
- ❌ **Tisser** : Créer du tissu
- ❌ **Coudre** : Assembler tissu
- ❌ **Tanner** : Traiter le cuir
- ❌ **Forger** : Travailler le métal (si métallurgie existe)
- ❌ **Polir** : Finition de surface
- ❌ **Aiguiser** : Affûter lame
- ❌ **Assembler** : Joindre pièces
- ❌ **Creuser** : Faire un trou (crucial pour mineurs)
- ❌ **Excaver** : Creuser profond
- ❌ **Étayer** : Soutenir structure
- ❌ **Effondrement** : Collapse (crucial - cave-ins dans ruines)
- ❌ **Débris** : Décombres
- ❌ **Éboulis** : Chute de pierres
### C.7 - Commerce et économie : Vocabulaire économique limité
**Présent** : échanger (kiru), Passes-bien (marchands)
**Manquant** :
- ❌ **Prix** / **Valeur d'échange** : Coût
- ❌ **Troquer** : Existe mais contexte limité
- ❌ **Acheter** / **Vendre** : Transactions
- ❌ **Dette** : Obligation économique
- ❌ **Prêt** : Avance
- ❌ **Partage** : Distribution
- ❌ **Redistribution** : Système économique
- ❌ **Abondance** : Surplus
- ❌ **Pénurie** : Manque (existe pour nourriture mais pas général)
- ❌ **Richesse** : Accumulation
- ❌ **Pauvreté** : Manque
- ❌ **Propriété** : Possession
- ❌ **Communal** : Partagé (crucial pour réserves)
### C.8 - Verbes d'action complexes : Lacunes dans actions sociales
**Actions manquantes** :
- ❌ **Convaincre** : Persuader
- ❌ **Négocier** : Discuter accord
- ❌ **Promettre** : Engagement futur
- ❌ **Trahir** : Rompre confiance
- ❌ **Se repentir** : Regretter
- ❌ **Pardonner** : Absoudre
- ❌ **Punir** : Sanctionner
- ❌ **Récompenser** : Gratifier
- ❌ **Honorer** : Respecter
- ❌ **Mépriser** : Dédaigner
- ❌ **Admirer** : Respecter avec envie
- ❌ **Envier** : Jalousie
- ❌ **Craindre** : Avoir peur
- ❌ **Espérer** : Attendre avec confiance
- ❌ **Désespérer** : Perdre espoir
### C.9 - Nombres et quantités : Système numérique non évalué
Le fichier 22-nombres.json (279 lignes) existe mais n'a pas été lu en détail. À vérifier :
- Système de numération complet ?
- Ordinaux ?
- Fractions ?
- Quantités approximatives (beaucoup, peu, plusieurs, etc.) ?
### C.10 - Couleurs : Système chromatique à vérifier
Le fichier 18-couleurs.json (321 lignes) existe. Présent dans autres fichiers :
- Rouge (pasu) - couleur du sang
- Gris (senu) - couleur de cendre
- Blanc (milu?) - lait
- Noir/sombre (kumu)
- Clair/lumineux (sora)
À vérifier dans 18-couleurs.json :
- Couleurs de l'aurore (rouge, orange, violet) : CRITIQUE pour yeux des Ciels-clairs
- Vert, bleu, jaune ?
- Nuances et intensités ?
---
## SECTION D : Ajouts prioritaires par catégorie
### D.1 - PRIORITÉ CRITIQUE : Contact avec les Nanzagouet (tour actuel)
**Vocabulaire immédiatement nécessaire** :
1. **Identité et altérité** :
- Nanzagouet (nom du peuple étranger)
- Cheveux de Sang (descriptif initial)
- l'Autre (concept philosophique)
- Cheveux (partie du corps)
- Étranger / inconnu / différent
2. **Navigation et mer** :
- Navire (améliorer vanu avec contexte)
- Embarcation / barque
- Flotter / naviguer
- Chavirer / couler / sombrer
- Noyade
- Marin / navigateur
- Manœuvrer / piloter
- Échouer (bateau)
- Rivage / berge
3. **Actions militaires du tour** :
- Capturer / capture
- Menacer / menace
- Soumettre
- Paniquer / panique
- Résister / résistance
- Rouer de coups
- Mâter (soumettre)
- Forcer à (rester, etc.)
- Courir après / poursuivre
- Se faire passer pour / imiter
- Abordage / aborder
4. **Vêtements et apparence** :
- Vêtement / tenue / oripeaux
- Nu / nudité
- Trancher / couper (cheveux)
- Arracher (vêtements)
- Taille / morphologie / correspondre
5. **Émotions et concepts sociaux du tour** :
- Vulnérable
- Audace / audacieux
- Orgueilleux / orgueil
- Patient / patience
- Initiative
- Imprévu
- Désordre / chaos
- Gloire / glorieux
- Reproche / reprocher
- Louer / louange
- Indigne
- Émeute
6. **Ravitaillement** :
- Eau douce (vs eau salée)
- Point d'eau
- Ravitaillement / se ravitailler
- Réserve (existe, à contextualiser)
### D.2 - PRIORITÉ HAUTE : Identité civilisationnelle
**Concepts philosophiques centraux** :
- Porter un regard libre (concept identitaire central)
- Promis à pareil destin (anxiété existentielle)
- Premiers Ancêtres (peuple distinct de "ancêtres")
- Gardiens des passages (âmes des pionniers)
- Multi-générationnel / à travers les générations
- Relais (temporel et de mémorisation)
- Débat à travers le temps
**Temps et durée** :
- Génération
- Décennie / siècle / millénaire
- Éternel / éternité
- Temporalité / stratification temporelle
### D.3 - PRIORITÉ HAUTE : Architecture et habitat
**Pilotis et structures** :
- Pilotis (CRITIQUE - architecture majeure)
- Plate-forme
- Tour / tour de guet
- Escalier / marche
- Galerie (souterraine)
- Chambre / pièce
- Atelier
- Mur / muraille / enceinte
- Porte / seuil / entrée
- Toit / toiture
**Géographie manquante** :
- Embouchure (où fleuve rencontre mer)
- Eau douce / eau salée
- Berge / rive
- Marée / vague
### D.4 - PRIORITÉ HAUTE : Technologies et matériaux
**Glyphes du Gouffre (compléter)** :
- Bloc modulaire
- Percer / percé
- Nœud (de corde)
- Réutilisable
- Distribution / distribuer
- Standard / standardisé
- Invention locale
**Argile vivante (compléter)** :
- Durcir / durcissement
- Instantané
- Exposition à l'air
- Monopole
**Matériaux manquants** :
- Cuir / peau d'animal
- Os / ossement / squelette
- Tendon
- Résine
- Écorce
- Fibre végétale
- Paille / chaume
### D.5 - PRIORITÉ MOYENNE : Corps humain (compléter)
**Parties manquantes critiques** :
- Cheveux (CRITIQUE)
- Tête
- Bras / jambe
- Doigt / orteil
- Bouche / langue / dent / nez
- Os / squelette / crâne
- Cou / épaule / dos / ventre
**États corporels** :
- Pâle / pâleur
- Allongé (morphologie)
- Aveugle / cécité
- Adapté / adaptation
### D.6 - PRIORITÉ MOYENNE : Dangers et santé
**Dangers des ruines** :
- Miasme / gaz toxique
- Toxique / empoisonné
- Sommeil mortel
- Suffocation / suffoquer
- Effondrement / éboulement / cave-in
- Débris / décombres / éboulis
- Noyade / se noyer
- Inondation / inonder
**Maladies et blessures** :
- Maladie / malade
- Dégénérescence / dégénérer
- Blessure / blessé
- Fracture / os cassé
- Brûlure
- Guérison / guérir
### D.7 - PRIORITÉ MOYENNE : Justice et concepts politiques
**Justice (compléter Lois du Sang et de la Bête)** :
- Investigation / investiguer / enquête
- Arène
- Combat judiciaire
- Coupable / innocent
- Preuve / témoignage
- Accusation / accuser
- Défense / défendre
**Concepts politiques** :
- Monopole (économique)
- Mériter / mérite (charges méritées)
- Héréditaire (concept à rejeter)
- Fief (concept à rejeter)
- Permanent vs temporaire
- Compensation (rémunération)
- Charge (fonction politique)
### D.8 - PRIORITÉ MOYENNE : Artisanat et techniques
**Techniques de construction** :
- Creuser / excaver
- Étayer / soutien / support
- Assembler / joindre
- Polir / finition
- Mortier / liant
**Techniques textiles** :
- Tresser / tressage
- Filer / fil
- Tisser / tissage / tissu
- Coudre / couture
- Tanner (cuir)
**Outils et actions** :
- Aiguiser / affûter
- Percer / perforer
- Scier
- Raboter
### D.9 - PRIORITÉ BASSE : Faune spécifique
**Gibier** :
- Cerf / biche
- Sanglier
- Lapin / lièvre
- Écureuil
**Prédateurs** :
- Ours
- Lynx
- Renard
**Oiseaux** :
- Corbeau / corneille
- Aigle
- Chouette / hibou
- Moineau / passereau
**Autres** :
- Insectes (abeille, fourmi, araignée, etc.)
- Amphibiens (grenouille, salamandre)
- Créatures marines (crabe, crevette, moule, etc.)
### D.10 - PRIORITÉ BASSE : Commerce et économie
**Transactions** :
- Prix / coût / valeur
- Acheter / vendre
- Dette / devoir
- Prêt / prêter / emprunter
**Distribution** :
- Partage / partager
- Redistribution
- Abondance / surplus
- Richesse / pauvreté
- Propriété / possession
- Communal / collectif
### D.11 - PRIORITÉ BASSE : Verbes d'action sociale
**Relations interpersonnelles** :
- Convaincre / persuader
- Négocier / négociation
- Promettre / promesse
- Trahir / trahison
- Se repentir / repentir
- Pardonner / pardon
- Punir / punition
- Récompenser / récompense
**Attitudes** :
- Honorer / honneur
- Mépriser / mépris
- Admirer / admiration
- Envier / envie
- Craindre / crainte
- Espérer / espoir
- Désespérer / désespoir
---
## SECTION E : Observations sur la structure et l'organisation du lexique
### E.1 - Points forts du lexique actuel
1. **Organisation thématique claire** : Les 25 fichiers JSON sont bien séparés par domaine sémantique
2. **Système de racines cohérent** : Distinction nette entre racines sacrées (voyelle initiale) et standards (consonne initiale)
3. **Compositions transparentes** : Les mots composés indiquent clairement leurs racines et sens littéral
4. **Métadonnées riches** : Chaque entrée contient type, domaine, notes explicatives
5. **Synonymes français** : Facilitent la recherche et la traduction
6. **Couverture des éléments centraux** : Castes, institutions majeures, lieux principaux bien représentés
### E.2 - Lacunes structurelles
1. **Pas de fichier dédié à la navigation** : Alors que la mer est découverte et critique pour le jeu actuel
2. **Anatomie incomplète** : 05-corps-sens.json n'a que 13 parties du corps
3. **Faune très limitée** : 10-animaux.json n'a que 10 concepts pour un monde naturel riche
4. **Pas de fichier "concepts philosophiques"** : Les idées abstraites centrales ("porter un regard libre", "promis à pareil destin") n'ont pas de catégorie dédiée
5. **Architecture sous-représentée** : Mélangée dans plusieurs fichiers sans cohérence
### E.3 - Suggestions d'organisation
**Nouveaux fichiers à créer** :
1. **25-navigation.json** : Navigation, bateaux, mer, activités maritimes
2. **26-architecture.json** : Structures, éléments de construction, espaces
3. **27-concepts-philosophiques.json** : Idées abstraites centrales à la civilisation
4. **28-etrangers.json** : Vocabulaire pour peuples étrangers, altérité, contact interculturel
5. **29-anatomie-complete.json** : Compléter le vocabulaire corporel
**Fichiers à enrichir en priorité** :
1. **10-animaux.json** : Tripler au minimum le nombre d'espèces
2. **19-sante-dangers.json** : Vérifier et compléter (miasmes, maladies, accidents)
3. **20-objets-materiaux.json** : Ajouter matériaux organiques (cuir, os, fibres)
4. **06-actions.json** : Ajouter actions sociales complexes
### E.4 - Cohérence avec les documents de jeu
**Excellente cohérence pour** :
- Noms propres des institutions
- Castes et groupes sociaux
- Lieux majeurs
- Technologies centrales (argile vivante, glyphes, rhombes)
- Rituels principaux
**Décalage important pour** :
- Vocabulaire du contact interculturel (aucun mot pour "Nanzagouet", "l'Autre", "étranger")
- Vocabulaire maritime (découverte de la mer non reflétée)
- Concepts philosophiques identitaires (non lexicalisés)
- Vie quotidienne pratique (vêtements, corps, actions sociales)
### E.5 - Recommandations méthodologiques
**Pour les ajouts prioritaires** :
1. **Créer d'abord 28-etrangers.json** : Tour actuel nécessite vocabulaire du contact interculturel
2. **Créer 25-navigation.json** : Découverte maritime récente
3. **Enrichir 10-animaux.json** : Ajouter 20-30 espèces minimum
4. **Compléter 05-corps-sens.json** : Doubler le nombre de parties du corps
5. **Créer 27-concepts-philosophiques.json** : Lexicaliser les idées centrales
**Principes de développement** :
1. **Prioriser les besoins narratifs** : Le tour actuel (contact avec Nanzagouet) doit guider les ajouts immédiats
2. **Maintenir la cohérence morphologique** : Respecter le système racines sacrées/standards
3. **Documenter les choix** : Expliquer dans "note" pourquoi tel mot utilise telle racine
4. **Créer des familles lexicales** : Un nouveau domaine (navigation) doit avoir vocabulaire complet, pas juste 2-3 mots
5. **Équilibrer abstrait et concret** : Ajouter aussi bien concepts philosophiques que objets physiques
### E.6 - Estimation quantitative des lacunes
**Lacunes par priorité** :
- **CRITIQUE (besoin immédiat pour tour actuel)** : ~80-100 mots
- Contact interculturel : 30 mots
- Navigation : 25 mots
- Actions militaires/capture : 20 mots
- Vêtements/apparence : 15 mots
- **HAUTE (besoin à court terme)** : ~150-200 mots
- Concepts philosophiques : 25 mots
- Architecture : 40 mots
- Technologies (compléments) : 30 mots
- Corps humain : 30 mots
- Dangers/santé : 40 mots
- Temps/durée : 15 mots
- **MOYENNE (consolidation)** : ~200-250 mots
- Justice (compléments) : 20 mots
- Politique (compléments) : 20 mots
- Artisanat : 40 mots
- Matériaux : 30 mots
- Faune basique : 40 mots
- Géographie : 30 mots
- Émotions/actions sociales : 40 mots
- **BASSE (enrichissement)** : ~300+ mots
- Faune détaillée : 100 mots
- Flore détaillée : 50 mots
- Commerce : 30 mots
- Verbes complexes : 60 mots
- Nuances diverses : 60+
**Total estimé des lacunes significatives** : 730-850 mots manquants pour un lexique vraiment complet et adapté au niveau narratif actuel du jeu.
**Taille actuelle estimée** : ~400-500 entrées lexicales (basé sur 10,103 lignes pour 25 fichiers)
**Ratio** : Le lexique devrait être augmenté de 150-200% pour couvrir complètement les besoins du jeu à son stade actuel.
---
## CONCLUSION
Le lexique de la langue ancien confluent est **bien structuré et cohérent dans son organisation**, avec une excellente couverture des **éléments centraux de worldbuilding** (castes, institutions, lieux sacrés, technologies uniques).
Cependant, il présente des **lacunes critiques** dans plusieurs domaines :
1. **Le vocabulaire du contact interculturel est totalement absent** alors que c'est le cœur du tour actuel
2. **Le vocabulaire maritime est minimal** malgré la découverte de la mer
3. **Les concepts philosophiques identitaires ne sont pas lexicalisés** ("porter un regard libre", etc.)
4. **La vie quotidienne pratique est sous-représentée** (vêtements, anatomie complète, actions sociales)
5. **Plusieurs domaines techniques manquent de profondeur** (navigation, architecture, faune)
**Recommandation** : Commencer immédiatement par créer **28-etrangers.json** et **25-navigation.json** pour répondre aux besoins narratifs urgents du tour actuel avec les Nanzagouet, puis enrichir systématiquement les domaines identifiés en priorité HAUTE.

View File

@ -474,12 +474,14 @@ function analyzeContext(text, lexique, options = {}) {
// - Aucune entrée trouvée OU
// - Couverture < 20% (très peu de mots trouvés)
const useFallback = expandedEntries.length === 0 || coveragePercent < 20;
const rootsFallback = useFallback ? extractRoots(lexique) : [];
// TOUJOURS extraire les racines (nécessaires pour composition de mots manquants)
const rootsFallback = extractRoots(lexique);
// 6. Calculer tokens économisés (estimation)
const totalLexiqueEntries = Object.keys(lexique.dictionnaire || {}).length;
const tokensFullLexique = totalLexiqueEntries * 15; // ~15 tokens par entrée en moyenne
const tokensUsed = (useFallback ? rootsFallback.length : expandedEntries.length) * 15;
const tokensUsed = (useFallback ? rootsFallback.length : (expandedEntries.length + rootsFallback.length)) * 15;
const tokensSaved = tokensFullLexique - tokensUsed;
const savingsPercent = totalLexiqueEntries > 0
? Math.round((tokensSaved / tokensFullLexique) * 100)
@ -488,7 +490,7 @@ function analyzeContext(text, lexique, options = {}) {
return {
// Données pour le prompt
entries: useFallback ? [] : expandedEntries,
rootsFallback: useFallback ? rootsFallback : [],
rootsFallback: rootsFallback, // TOUJOURS inclure les racines
useFallback,
// Métadonnées pour Layer 2

View File

@ -217,15 +217,19 @@ function buildContextualPrompt(contextResult, variant = 'ancien', originalText =
}
}
// Si fallback, injecter toutes les racines
// TOUJOURS injecter les racines (nécessaires pour composition)
const rootsSection = contextResult.rootsFallback && contextResult.rootsFallback.length > 0
? formatRootsFallback(contextResult.rootsFallback)
: '';
// Si fallback, injecter UNIQUEMENT les racines (pas de vocabulaire)
if (contextResult.useFallback) {
const rootsSection = formatRootsFallback(contextResult.rootsFallback);
return basePrompt + '\n' + numbersSection + '\n' + rootsSection;
}
// Sinon, injecter uniquement le vocabulaire pertinent
// Sinon, injecter vocabulaire pertinent + racines
const vocabularySection = formatVocabularySection(contextResult.entries);
return basePrompt + '\n' + numbersSection + '\n' + vocabularySection;
return basePrompt + '\n' + numbersSection + '\n' + vocabularySection + '\n' + rootsSection;
}
/**

View File

@ -40,7 +40,7 @@ Consonnes (10): b, k, l, m, n, p, s, t, v, z
Ordre: SOV (Sujet - Objet - Verbe)
Particules (avant le mot):
Particules (AVANT le mot):
- va = sujet
- vo = objet direct
- vi = direction
@ -50,8 +50,12 @@ Particules (avant le mot):
- ni = bénéficiaire
- no = lieu
**ATTENTION : Pluriel "su" - EXCEPTION IMPORTANTE**
- su = pluriel (placé APRÈS le mot, contrairement aux particules)
- Exemple : "vo naki su" = les enfants (OBJET)
- Exemple : "va aki su" = les faucons (SUJET)
Autres:
- su = pluriel (après le mot)
- zo/zom/zob/zoe = négation
- ka = question (fin)
@ -314,7 +318,30 @@ mirak u = voir + présent
---
## Exemple 2 : Avec proposition relative
## Exemple 2 : Avec pluriel
**Français:** Les enfants voient les oiseaux.
ANALYSE:
- Phrase simple avec pluriels
- Tous les mots existent (naki, apo, mirak)
- Utilisation de "su" pour marquer le pluriel
STRATÉGIE:
- Traduction directe avec ordre SOV
- **IMPORTANT : "su" se place APRÈS le mot à mettre au pluriel**
Ancien Confluent:
va naki su vo apo su mirak u
Décomposition:
va naki su = SUJET enfants (naki + su APRÈS)
vo apo su = OBJET oiseaux (apo + su APRÈS)
mirak u = voir + présent
---
## Exemple 3 : Avec proposition relative
**Français:** Le faucon qui chasse voit l'eau.

View File

@ -49,17 +49,25 @@
select, input, textarea {
width: 100%;
padding: 10px;
background: #1a1a1a;
background: #1a1a1a !important;
border: 1px solid #3a3a3a;
border-radius: 4px;
color: #e0e0e0;
color: #e0e0e0 !important;
font-family: inherit;
}
select option {
background: #1a1a1a;
color: #e0e0e0;
background: #1a1a1a !important;
background-color: #1a1a1a !important;
color: #e0e0e0 !important;
padding: 10px;
}
/* Force dark background on select dropdown in dark mode */
body:not(.light-theme) select,
body:not(.light-theme) select option {
background: #1a1a1a !important;
background-color: #1a1a1a !important;
color: #e0e0e0 !important;
}
select:focus {
outline: none;
border-color: #4a9eff;
@ -393,6 +401,20 @@
body.light-theme .lexique-cf {
color: #2563eb;
}
/* Settings indicator */
.settings-indicator {
font-size: 0.75em;
color: #888;
text-align: center;
padding: 8px;
margin-bottom: 15px;
border-bottom: 1px solid #3a3a3a;
}
body.light-theme .settings-indicator {
color: #666;
border-bottom-color: #e0e0e0;
}
</style>
</head>
<body>
@ -409,6 +431,7 @@
<!-- Tab: Traduction Français → Confluent -->
<div id="tab-traduction" class="tab-content active">
<div class="settings-indicator" id="settings-indicator-fr2cf"></div>
<div class="panel">
<h2>Traduction Français → Confluent</h2>
<div class="form-group">
@ -475,6 +498,7 @@
<!-- Tab: Confluent → Français -->
<div id="tab-cf2fr" class="tab-content">
<div class="settings-indicator" id="settings-indicator-cf2fr"></div>
<div class="panel">
<h2>Traduction Confluent → Français</h2>
<div class="form-group">
@ -487,14 +511,38 @@
<!-- Résultat -->
<div id="cf2fr-result-container" style="display: none;">
<div class="layer layer1">
<div class="layer1-title">Traduction brute</div>
<div class="layer1-title">Traduction</div>
<div id="cf2fr-layer1-content" class="layer1-content"></div>
</div>
<!-- LAYER 2: DÉTAILS (Collapsible) -->
<div class="layer">
<div class="layer-header" onclick="toggleLayer('cf2fr-layer2')">
<div class="layer-title">
<span class="layer-icon">📚</span>
<span>Détails de la traduction</span>
</div>
<span class="layer-arrow" id="cf2fr-layer2-arrow"></span>
</div>
<div id="cf2fr-layer2-content" class="layer-content">
<div class="layer-content-inner">
<div class="context-item">
<div class="context-label">Mots traduits</div>
<div id="cf2fr-layer2-tokens"></div>
</div>
<div class="context-item">
<div class="context-label">Couverture</div>
<div class="stats-grid" id="cf2fr-layer2-stats"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Tab: Lexique -->
<div id="tab-lexique" class="tab-content">
<div class="settings-indicator" id="settings-indicator-lexique"></div>
<div class="panel">
<h2>Recherche dans le lexique</h2>
<div class="form-group">
@ -604,7 +652,9 @@
// Load lexique
const loadLexique = async () => {
try {
const response = await fetch('/lexique');
const settings = JSON.parse(localStorage.getItem('confluentSettings') || '{}');
const niveau = settings.target || 'ancien';
const response = await fetch(`/api/lexique/${niveau}`);
lexiqueData = await response.json();
} catch (error) {
console.error('Error loading lexique:', error);
@ -707,7 +757,7 @@
provider: 'anthropic',
model: 'claude-sonnet-4-20250514',
temperature: 1.0,
theme: 'dark',
theme: 'light',
verbose: false,
anthropicKey: '',
openaiKey: ''
@ -753,6 +803,12 @@
// Apply theme
applyTheme(settings.theme);
// Reload lexique if target changed
loadLexique();
// Update settings indicators
updateSettingsIndicators();
// Show saved message
const msg = document.getElementById('settings-saved-message');
msg.style.display = 'block';
@ -767,6 +823,33 @@
}
};
const updateSettingsIndicators = () => {
const settings = { ...DEFAULT_SETTINGS, ...JSON.parse(localStorage.getItem('confluentSettings') || '{}') };
const targetLabel = settings.target === 'proto' ? 'Proto-Confluent' : 'Ancien Confluent';
const providerLabel = settings.provider === 'anthropic' ? 'Anthropic' : 'OpenAI';
// Better model label detection
let modelLabel = 'Model';
if (settings.model.includes('sonnet')) {
modelLabel = 'Sonnet 4.5';
} else if (settings.model.includes('haiku')) {
modelLabel = 'Haiku 4.5';
} else if (settings.model === 'chatgpt-4o-latest') {
modelLabel = 'ChatGPT-5.1';
} else if (settings.model === 'gpt-4o-mini') {
modelLabel = 'GPT-4o Mini';
} else if (settings.model === 'gpt-4o') {
modelLabel = 'GPT-4o';
}
const indicatorText = `${targetLabel} • ${providerLabel} ${modelLabel} • Temp: ${settings.temperature}`;
document.getElementById('settings-indicator-fr2cf').textContent = indicatorText;
document.getElementById('settings-indicator-cf2fr').textContent = indicatorText;
document.getElementById('settings-indicator-lexique').textContent = indicatorText;
};
const updateModelOptions = (provider) => {
const modelSelect = document.getElementById('settings-model');
modelSelect.innerHTML = '';
@ -863,8 +946,8 @@
<div class="stat-label">Économie</div>
</div>
<div class="stat-box">
<div class="stat-value">${data.layer2.useFallback ? 'OUI' : 'NON'}</div>
<div class="stat-label">Fallback racines</div>
<div class="stat-value">${data.layer2.useFallback ? 'UNIQUEMENT' : 'AVEC VOCAB'}</div>
<div class="stat-label">Mode racines</div>
</div>
`;
document.getElementById('layer2-stats').innerHTML = statsHtml;
@ -916,17 +999,63 @@
resultContainer.style.display = 'block';
document.getElementById('cf2fr-layer1-content').textContent = 'Traduction en cours...';
const settings = JSON.parse(localStorage.getItem('confluentSettings') || '{}');
try {
const response = await fetch('/api/translate/conf2fr', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text }),
body: JSON.stringify({
text,
variant: settings.target || 'ancien',
detailed: true
}),
});
const data = await response.json();
if (response.ok) {
// Display translation
document.getElementById('cf2fr-layer1-content').textContent = data.translation || data.result || 'Traduction effectuée';
// Display detailed tokens
if (data.tokens && data.tokens.length > 0) {
const tokensHtml = data.tokens.map(token => {
const statusClass = token.found ? 'found' : 'not-found';
const frText = token.francais || '❓';
const typeText = token.type ? `[${token.type}]` : '';
return `
<div class="word-item ${statusClass}">
<span class="word-cf">${token.confluent}</span>
<span class="word-arrow"></span>
<span class="word-fr">${frText} ${typeText}</span>
</div>
`;
}).join('');
document.getElementById('cf2fr-layer2-tokens').innerHTML = tokensHtml;
// Display stats
const coverage = data.coverage || 0;
const total = data.tokens.length;
const found = data.tokens.filter(t => t.found).length;
const notFound = total - found;
document.getElementById('cf2fr-layer2-stats').innerHTML = `
<div class="stat-box">
<div class="stat-label">Couverture</div>
<div class="stat-value">${coverage}%</div>
</div>
<div class="stat-box">
<div class="stat-label">Mots trouvés</div>
<div class="stat-value">${found}/${total}</div>
</div>
<div class="stat-box">
<div class="stat-label">Mots inconnus</div>
<div class="stat-value">${notFound}</div>
</div>
`;
}
} else {
document.getElementById('cf2fr-layer1-content').innerHTML = `<span class="error">Erreur: ${data.error}</span>`;
}
@ -937,9 +1066,15 @@
}
});
// Listen to theme change in settings
document.getElementById('settings-theme').addEventListener('change', (e) => {
applyTheme(e.target.value);
});
// Initialize
loadSettings();
loadLexique();
updateSettingsIndicators();
</script>
</body>
</html>

View File

@ -250,7 +250,7 @@ app.post('/api/analyze/coverage', (req, res) => {
// Translation endpoint (NOUVEAU SYSTÈME CONTEXTUEL)
app.post('/translate', async (req, res) => {
const { text, target, provider, model, useLexique = true } = req.body;
const { text, target, provider, model, temperature = 1.0, useLexique = true } = req.body;
if (!text || !target || !provider || !model) {
return res.status(400).json({ error: 'Missing parameters' });
@ -296,6 +296,7 @@ app.post('/translate', async (req, res) => {
const message = await anthropic.messages.create({
model: model,
max_tokens: 8192, // Max pour Claude Sonnet/Haiku 4.5
temperature: temperature,
system: systemPrompt,
messages: [
{ role: 'user', content: text }
@ -313,6 +314,7 @@ app.post('/translate', async (req, res) => {
const completion = await openai.chat.completions.create({
model: model,
max_tokens: 16384, // Max pour GPT-4o et GPT-4o-mini
temperature: temperature,
messages: [
{ role: 'system', content: systemPrompt },
{ role: 'user', content: text }

View File

@ -325,7 +325,7 @@
"mot_francais": "celui-ci/celui-là",
"traductions": [
{
"confluent": "taki",
"confluent": "kanu",
"type": "demonstratif",
"categorie": "démonstratif",
"note": "Démonstratif pour personnes"
@ -526,6 +526,131 @@
"pendant que",
"alors que"
]
},
"ai": {
"mot_francais": "avoir (1sg présent)",
"traductions": [
{
"confluent": "iku",
"type": "auxiliaire",
"categorie": "verbe",
"note": "J'ai - auxiliaire avoir 1ère personne singulier présent"
}
],
"synonymes_fr": [
"j'ai"
]
},
"as": {
"mot_francais": "avoir (2sg présent)",
"traductions": [
{
"confluent": "iku",
"type": "auxiliaire",
"categorie": "verbe",
"note": "Tu as - auxiliaire avoir 2ème personne singulier"
}
],
"synonymes_fr": [
"tu as"
]
},
"a": {
"mot_francais": "avoir (3sg présent)",
"traductions": [
{
"confluent": "iku",
"type": "auxiliaire",
"categorie": "verbe",
"note": "Il/elle a - auxiliaire avoir 3ème personne singulier"
}
],
"synonymes_fr": [
"il a",
"elle a",
"on a"
]
},
"avons": {
"mot_francais": "avoir (1pl présent)",
"traductions": [
{
"confluent": "iku",
"type": "auxiliaire",
"categorie": "verbe",
"note": "Nous avons - auxiliaire avoir 1ère personne pluriel"
}
],
"synonymes_fr": [
"nous avons"
]
},
"avez": {
"mot_francais": "avoir (2pl présent)",
"traductions": [
{
"confluent": "iku",
"type": "auxiliaire",
"categorie": "verbe",
"note": "Vous avez - auxiliaire avoir 2ème personne pluriel"
}
],
"synonymes_fr": [
"vous avez"
]
},
"ont": {
"mot_francais": "avoir (3pl présent)",
"traductions": [
{
"confluent": "iku",
"type": "auxiliaire",
"categorie": "verbe",
"note": "Ils/elles ont - auxiliaire avoir 3ème personne pluriel"
}
],
"synonymes_fr": [
"ils ont",
"elles ont"
]
},
"avais": {
"mot_francais": "avoir (imparfait)",
"traductions": [
{
"confluent": "ikuat",
"type": "auxiliaire",
"categorie": "verbe",
"note": "Avais - auxiliaire avoir imparfait (iku + marqueur passé at)"
}
],
"synonymes_fr": [
"j'avais",
"tu avais",
"il avait",
"nous avions",
"vous aviez",
"ils avaient"
]
},
"aurai": {
"mot_francais": "avoir (futur)",
"traductions": [
{
"confluent": "ikuok",
"type": "auxiliaire",
"categorie": "verbe",
"note": "Aurai - auxiliaire avoir futur (iku + marqueur futur ok)"
}
],
"synonymes_fr": [
"j'aurai",
"tu auras",
"il aura",
"nous aurons",
"vous aurez",
"ils auront"
]
}
}
}
}

View File

@ -5,9 +5,9 @@
"vrai": {
"traductions": [
{
"confluent": "veri",
"confluent": "veli",
"type": "racine",
"forme_liee": "ver",
"forme_liee": "vel",
"domaine": "concept_abstrait",
"note": "Racine fondamentale"
}
@ -84,9 +84,9 @@
"rapide": {
"traductions": [
{
"confluent": "hayo",
"confluent": "kazo",
"type": "racine",
"forme_liee": "hay",
"forme_liee": "kaz",
"domaine": "qualificatif",
"note": "Rapide, vif"
}
@ -120,9 +120,9 @@
"echanger": {
"traductions": [
{
"confluent": "kiru",
"confluent": "kilu",
"type": "racine",
"forme_liee": "kir",
"forme_liee": "kil",
"domaine": "action",
"note": "Troquer, commercer"
}
@ -219,13 +219,13 @@
"assemblee": {
"traductions": [
{
"confluent": "kotaitori",
"confluent": "kotaitoli",
"type": "composition",
"composition": "kot-a-tori",
"composition": "kot-a-toli",
"sens_litteral": "Union avec personnes",
"racines": [
"kota",
"tori"
"toli"
],
"domaine": "institution"
}
@ -432,9 +432,9 @@
"mer": {
"traductions": [
{
"confluent": "meru",
"confluent": "melu",
"type": "racine",
"forme_liee": "mer",
"forme_liee": "mel",
"domaine": "geographie",
"note": "Nouvelle racine - grande eau salée"
}
@ -688,9 +688,9 @@
"mauvais": {
"traductions": [
{
"confluent": "daku",
"confluent": "taku",
"type": "racine",
"forme_liee": "dak",
"forme_liee": "tak",
"domaine": "qualificatif",
"note": "Mauvais, négatif (opposé de bon)"
}
@ -718,6 +718,219 @@
"lumineux",
"lumineuse"
]
},
"honteux": {
"traductions": [
{
"confluent": "paka",
"type": "racine",
"forme_liee": "pak",
"domaine": "qualificatif",
"note": "Honteux, indigne, déshonorant - inspiration basque"
}
],
"synonymes_fr": [
"indigne",
"déshonorant",
"infâme"
]
},
"personne": {
"traductions": [
{
"confluent": "toli",
"type": "racine",
"forme_liee": "tol",
"domaine": "social",
"note": "Personne, agent, individu - utilisé dans tous les rôles"
}
],
"synonymes_fr": [
"agent",
"individu"
]
},
"nourriture": {
"traductions": [
{
"confluent": "nutu",
"type": "racine",
"forme_liee": "nut",
"domaine": "alimentation",
"note": "Nourriture, aliment - racine fondamentale"
}
],
"synonymes_fr": [
"aliment",
"manger"
]
},
"bois_materiau": {
"traductions": [
{
"confluent": "vito",
"type": "racine",
"forme_liee": "vit",
"domaine": "materiau",
"note": "Bois (matériau de construction) - distinct de viku (forêt)"
}
],
"synonymes_fr": [
"bois de construction"
]
},
"garder": {
"traductions": [
{
"confluent": "konu",
"type": "racine",
"forme_liee": "kon",
"domaine": "action",
"note": "Garder, protéger, maintenir - racine sécuritaire"
}
],
"synonymes_fr": [
"protéger",
"maintenir",
"défendre"
]
},
"duree": {
"traductions": [
{
"confluent": "aika",
"type": "racine_sacree",
"forme_liee": "aik",
"domaine": "temporel",
"note": "Temps, durée, époque - du finnois 'aika'"
}
],
"synonymes_fr": [
"temps",
"époque",
"ère"
]
},
"souvenir": {
"traductions": [
{
"confluent": "nemu",
"type": "racine",
"forme_liee": "nem",
"domaine": "mental",
"note": "Mémoire, souvenir - distinct de memu (mémoire collective)"
}
],
"synonymes_fr": [
"mémoire",
"rappel"
]
},
"demeurer": {
"traductions": [
{
"confluent": "tuli",
"type": "racine",
"forme_liee": "tul",
"domaine": "etat",
"note": "Être, rester, demeurer - du finnois 'tulla'"
}
],
"synonymes_fr": [
"rester",
"être",
"habiter"
]
},
"ciel": {
"traductions": [
{
"confluent": "zeru",
"type": "racine",
"forme_liee": "zer",
"domaine": "nature",
"note": "Ciel, voûte céleste - utilisé dans Ciels-clairs"
}
],
"synonymes_fr": [
"voûte céleste",
"firmament"
]
},
"presage": {
"traductions": [
{
"confluent": "novi",
"type": "racine",
"forme_liee": "nov",
"domaine": "concept",
"note": "Présage, signe du futur"
}
],
"synonymes_fr": [
"augure",
"signe"
]
},
"faim": {
"traductions": [
{
"confluent": "muta",
"type": "racine",
"forme_liee": "mut",
"domaine": "besoin",
"note": "Faim, manque, besoin de nourriture"
}
],
"synonymes_fr": [
"manque",
"privation"
]
},
"intimite": {
"traductions": [
{
"confluent": "supu",
"type": "racine",
"forme_liee": "sup",
"domaine": "espace",
"note": "Intérieur, intimité, espace privé"
}
],
"synonymes_fr": [
"intérieur",
"privé"
]
},
"sale": {
"traductions": [
{
"confluent": "selu",
"type": "racine",
"forme_liee": "sel",
"domaine": "qualificatif",
"note": "Salé, eau salée - distinct de salu (sel cristal)"
}
],
"synonymes_fr": [
"salé",
"saumâtre"
]
},
"charge": {
"traductions": [
{
"confluent": "saki",
"type": "racine",
"forme_liee": "sak",
"domaine": "action",
"note": "Charge, fardeau, ce qu'on porte"
}
],
"synonymes_fr": [
"fardeau",
"cargaison"
]
}
},
"pronoms": {
@ -770,7 +983,10 @@
"confluent": "mikisu",
"type": "pronom",
"composition": "miki-su",
"racines": ["miki", "su"],
"racines": [
"miki",
"su"
],
"personne": "1pl",
"note": "Première personne pluriel - miki (je) + su (pluriel)"
}
@ -782,7 +998,10 @@
"confluent": "sinusu",
"type": "pronom",
"composition": "sinu-su",
"racines": ["sinu", "su"],
"racines": [
"sinu",
"su"
],
"personne": "2pl",
"note": "Deuxième personne pluriel - sinu (tu) + su (pluriel)"
}
@ -794,7 +1013,10 @@
"confluent": "tanisu",
"type": "pronom",
"composition": "tani-su",
"racines": ["tani", "su"],
"racines": [
"tani",
"su"
],
"personne": "3pl",
"note": "Troisième personne pluriel - tani (il/elle) + su (pluriel)"
}
@ -804,4 +1026,4 @@
]
}
}
}
}

View File

@ -189,7 +189,7 @@
"Passes-bien": {
"traductions": [
{
"confluent": "takitosa",
"confluent": "kanutosa",
"type": "nom_propre",
"composition": "tak-i-tosa",
"sens_litteral": "Porteurs du bien",
@ -207,7 +207,7 @@
"Takitosa": {
"traductions": [
{
"confluent": "takitosa",
"confluent": "kanutosa",
"type": "nom_propre",
"composition": "tak-i-tosa",
"sens_litteral": "Porteurs du bien",
@ -271,13 +271,13 @@
"Sans-ciels": {
"traductions": [
{
"confluent": "zozeru",
"confluent": "zozelu",
"type": "composition",
"composition": "zo-zeru",
"composition": "zo-zelu",
"sens_litteral": "Sans ciel",
"racines": [
"zo",
"zeru"
"zelu"
],
"categorie": "groupe_social",
"note": "Nés sous ciel couvert"
@ -287,9 +287,9 @@
"Gardiens de la Confluence": {
"traductions": [
{
"confluent": "zakiuraakota",
"confluent": "zakiulaakota",
"type": "composition",
"composition": "zak-i-uraakota",
"composition": "zak-i-ulaakota",
"sens_litteral": "Gardiens de la Confluence",
"racines": [
"zaki",
@ -376,4 +376,4 @@
]
}
}
}
}

View File

@ -252,13 +252,13 @@
"avant-poste cotier": {
"traductions": [
{
"confluent": "velaumeru",
"confluent": "velaumelu",
"type": "composition",
"composition": "vel-a-meru",
"composition": "vel-a-melu",
"sens_litteral": "Vigile avec mer",
"racines": [
"vela",
"meru"
"melu"
],
"categorie": "structure"
}
@ -282,13 +282,13 @@
"forteresse": {
"traductions": [
{
"confluent": "zakiukari",
"confluent": "zakiukali",
"type": "composition",
"composition": "zak-i-kari",
"composition": "zak-i-kali",
"sens_litteral": "Protection de pierre",
"racines": [
"zaki",
"kari"
"kali"
],
"categorie": "structure"
}
@ -313,4 +313,4 @@
]
}
}
}
}

View File

@ -186,9 +186,9 @@
"yeux de l'aurore": {
"traductions": [
{
"confluent": "siluora",
"confluent": "siluola",
"type": "composition",
"composition": "sil-u-ora",
"composition": "sil-u-ola",
"sens_litteral": "Regard de l'aurore",
"racines": [
"sili",
@ -198,6 +198,365 @@
"note": "Yeux des Ciels-clairs aux couleurs de l'aurore"
}
]
},
"tête": {
"traductions": [
{
"confluent": "muto",
"type": "racine",
"forme_liee": "mut",
"domaine": "corps",
"note": "Sommet du corps, partie supérieure"
}
],
"synonymes_fr": [
"crâne",
"chef"
]
},
"bras": {
"traductions": [
{
"confluent": "kanuvi",
"type": "composition",
"composition": "kan-u-vi",
"sens_litteral": "Membre de la main",
"racines": [
"kanu"
],
"domaine": "corps",
"note": "Membre supérieur jusqu'à la main"
}
]
},
"jambe": {
"traductions": [
{
"confluent": "pekuvi",
"type": "composition",
"composition": "pek-u-vi",
"sens_litteral": "Membre du pied",
"racines": [
"peki"
],
"domaine": "corps",
"note": "Membre inférieur jusqu'au pied"
}
],
"synonymes_fr": [
"jambes"
]
},
"doigt": {
"traductions": [
{
"confluent": "kanupisu",
"type": "composition",
"composition": "kan-u-pisu",
"sens_litteral": "Petit de la main",
"racines": [
"kanu",
"pisu"
],
"domaine": "corps",
"note": "Extrémité de la main"
}
],
"synonymes_fr": [
"doigts"
]
},
"orteil": {
"traductions": [
{
"confluent": "pekupisu",
"type": "composition",
"composition": "pek-u-pisu",
"sens_litteral": "Petit du pied",
"racines": [
"peki",
"pisu"
],
"domaine": "corps",
"note": "Extrémité du pied"
}
],
"synonymes_fr": [
"orteils"
]
},
"bouche": {
"traductions": [
{
"confluent": "vokumu",
"type": "composition",
"composition": "vok-umu",
"sens_litteral": "Ouverture de la voix",
"racines": [
"voki"
],
"domaine": "corps_sens",
"note": "Organe de la parole et de l'alimentation"
}
]
},
"langue": {
"traductions": [
{
"confluent": "vokivi",
"type": "composition",
"composition": "voki-vi",
"sens_litteral": "Organe de la voix",
"racines": [
"voki"
],
"domaine": "corps",
"note": "Organe dans la bouche (distinct de langue=langage)"
}
],
"synonymes_fr": [
"langue organe"
]
},
"dent": {
"traductions": [
{
"confluent": "bitu",
"type": "racine",
"forme_liee": "bit",
"domaine": "corps",
"note": "Organe pour mordre et mâcher"
}
],
"synonymes_fr": [
"dents"
]
},
"nez": {
"traductions": [
{
"confluent": "venu",
"type": "composition",
"composition": "ven-u",
"sens_litteral": "Organe de l'air",
"racines": [
"vena"
],
"domaine": "corps_sens",
"note": "Organe de l'odorat et de la respiration"
}
]
},
"front": {
"traductions": [
{
"confluent": "mukamako",
"type": "composition",
"composition": "muka-mako",
"sens_litteral": "Haut du visage",
"racines": [
"muka",
"mako"
],
"domaine": "corps",
"note": "Partie supérieure du visage"
}
]
},
"joue": {
"traductions": [
{
"confluent": "mukavi",
"type": "composition",
"composition": "muka-vi",
"sens_litteral": "Partie du visage",
"racines": [
"muka"
],
"domaine": "corps",
"note": "Côté du visage"
}
],
"synonymes_fr": [
"joues"
]
},
"menton": {
"traductions": [
{
"confluent": "mukavuku",
"type": "composition",
"composition": "muka-vuku",
"sens_litteral": "Bas du visage",
"racines": [
"muka",
"vuku"
],
"domaine": "corps",
"note": "Partie inférieure du visage"
}
]
},
"cou": {
"traductions": [
{
"confluent": "mutuvasi",
"type": "composition",
"composition": "mutu-vasi",
"sens_litteral": "Pont de la tête",
"racines": [
"muto",
"vasi"
],
"domaine": "corps",
"note": "Lien entre tête et corps"
}
]
},
"épaule": {
"traductions": [
{
"confluent": "kanuvasi",
"type": "composition",
"composition": "kan-u-vasi",
"sens_litteral": "Pont du bras",
"racines": [
"kanu",
"vasi"
],
"domaine": "corps",
"note": "Jonction bras-corps"
}
],
"synonymes_fr": [
"épaules"
]
},
"dos": {
"traductions": [
{
"confluent": "sanuvoli",
"type": "composition",
"composition": "san-u-voli",
"sens_litteral": "Arrière du corps",
"racines": [
"sanu"
],
"domaine": "corps",
"note": "Face postérieure"
}
]
},
"ventre": {
"traductions": [
{
"confluent": "nutusanu",
"type": "composition",
"composition": "nutu-sanu",
"sens_litteral": "Corps de nourriture",
"racines": [
"nutu",
"sanu"
],
"domaine": "corps",
"note": "Abdomen, partie centrale"
}
],
"synonymes_fr": [
"abdomen"
]
},
"estomac": {
"traductions": [
{
"confluent": "nutukovu",
"type": "composition",
"composition": "nutu-kovu",
"sens_litteral": "Réservoir de nourriture",
"racines": [
"nutu"
],
"domaine": "corps",
"note": "Organe digestif"
}
]
},
"foie": {
"traductions": [
{
"confluent": "sanukoli",
"type": "composition",
"composition": "san-u-koli",
"sens_litteral": "Cœur du corps",
"racines": [
"sanu",
"kori"
],
"domaine": "corps",
"note": "Organe vital interne"
}
]
},
"os": {
"traductions": [
{
"confluent": "talu",
"type": "racine",
"forme_liee": "tal",
"domaine": "corps",
"note": "Structure dure interne du corps"
}
]
},
"squelette": {
"traductions": [
{
"confluent": "talusanu",
"type": "composition",
"composition": "tal-u-sanu",
"sens_litteral": "Os du corps",
"racines": [
"talu",
"sanu"
],
"domaine": "corps",
"note": "Ensemble des os"
}
]
},
"crâne": {
"traductions": [
{
"confluent": "mututalu",
"type": "composition",
"composition": "mutu-talu",
"sens_litteral": "Os de la tête",
"racines": [
"muto",
"talu"
],
"domaine": "corps",
"note": "Os de la tête"
}
]
},
"côte": {
"traductions": [
{
"confluent": "taluvi",
"type": "composition",
"composition": "tal-u-vi",
"sens_litteral": "Os du côté",
"racines": [
"talu"
],
"domaine": "corps",
"note": "Os du thorax"
}
],
"synonymes_fr": [
"côtes"
]
}
}
}
}

View File

@ -6,10 +6,10 @@
"racine_fr": "voi",
"traductions": [
{
"confluent": "mirak",
"confluent": "milak",
"type": "verbe",
"racine": "mira",
"forme_liee": "mir",
"racine": "mila",
"forme_liee": "mil",
"structure": "CVCVC",
"domaine": "action",
"note": "Verbe fondamental lié à l'observation"
@ -119,10 +119,10 @@
"racine_fr": "cour",
"traductions": [
{
"confluent": "hayak",
"confluent": "kazok",
"type": "verbe",
"racine": "haya",
"forme_liee": "hay",
"racine": "kazo",
"forme_liee": "kaz",
"structure": "CVCVC",
"domaine": "action",
"note": "Courir, se déplacer rapidement"
@ -147,10 +147,10 @@
"racine_fr": "coul",
"traductions": [
{
"confluent": "urak",
"confluent": "kulak",
"type": "verbe",
"racine": "ura",
"forme_liee": "ur",
"racine": "kula",
"forme_liee": "kul",
"structure": "VCVC",
"domaine": "action",
"note": "Couler, s'écouler - lié à l'eau"
@ -598,10 +598,10 @@
"racine_fr": "découvr",
"traductions": [
{
"confluent": "miris",
"confluent": "milis",
"type": "verbe",
"racine": "mira",
"forme_liee": "mir",
"racine": "mila",
"forme_liee": "mil",
"structure": "CVCVC",
"domaine": "action",
"note": "Voir pour la première fois"
@ -759,10 +759,10 @@
"racine_fr": "troqu",
"traductions": [
{
"confluent": "kirak",
"confluent": "kilak",
"type": "verbe",
"racine": "kiru",
"forme_liee": "kir",
"racine": "kilu",
"forme_liee": "kil",
"structure": "CVCVC",
"domaine": "action_commerce"
}
@ -785,10 +785,10 @@
"racine_fr": "arbitr",
"traductions": [
{
"confluent": "verim",
"confluent": "velim",
"type": "verbe",
"racine": "veri",
"forme_liee": "ver",
"racine": "veli",
"forme_liee": "vel",
"structure": "CVCVC",
"domaine": "action_justice",
"note": "Juger selon la vérité"
@ -858,10 +858,10 @@
"racine_fr": "exist",
"traductions": [
{
"confluent": "urak",
"confluent": "kulak",
"type": "verbe_irregulier",
"racine": "ura",
"forme_liee": "ur",
"racine": "kula",
"forme_liee": "kul",
"structure": "VCVC",
"domaine": "action_existentielle",
"note": "Verbe irrégulier existentiel - 'il y a', présence, existence. Dérivé de la racine sacrée 'ura' (eau/flux vital)"
@ -1069,10 +1069,10 @@
"racine_fr": "aim",
"traductions": [
{
"confluent": "koris",
"confluent": "kolis",
"type": "verbe",
"racine": "kori",
"forme_liee": "kor",
"racine": "koli",
"forme_liee": "kol",
"structure": "CVCVC",
"domaine": "action_emotion",
"note": "Verbe d'amour (du cœur kori)"
@ -1183,4 +1183,4 @@
]
}
}
}
}

View File

@ -5,9 +5,9 @@
"joie": {
"traductions": [
{
"confluent": "koriatosa",
"confluent": "koliatosa",
"type": "composition",
"composition": "kor-i-a-tosa",
"composition": "kol-i-a-tosa",
"sens_litteral": "Cœur avec bien",
"racines": [
"kori",
@ -25,9 +25,9 @@
"espoir": {
"traductions": [
{
"confluent": "koriuora",
"confluent": "koliuola",
"type": "composition",
"composition": "kor-i-ora",
"composition": "kol-i-ola",
"sens_litteral": "Cœur de l'aurore",
"racines": [
"kori",
@ -40,9 +40,9 @@
"fierte": {
"traductions": [
{
"confluent": "koriumako",
"confluent": "koliumako",
"type": "composition",
"composition": "kor-i-mako",
"composition": "kol-i-mako",
"sens_litteral": "Cœur de grandeur",
"racines": [
"kori",
@ -55,9 +55,9 @@
"amour": {
"traductions": [
{
"confluent": "koriukota",
"confluent": "koliukota",
"type": "composition",
"composition": "kor-i-kota",
"composition": "kol-i-kota",
"sens_litteral": "Cœur d'union",
"racines": [
"kori",
@ -70,9 +70,9 @@
"curiosite": {
"traductions": [
{
"confluent": "koriusili",
"confluent": "koliusili",
"type": "composition",
"composition": "kor-i-sili",
"composition": "kol-i-sili",
"sens_litteral": "Cœur du regard",
"racines": [
"kori",
@ -85,9 +85,9 @@
"soulagement": {
"traductions": [
{
"confluent": "koriatosa",
"confluent": "koliatosa",
"type": "composition",
"composition": "kor-i-tosa",
"composition": "kol-i-tosa",
"sens_litteral": "Cœur avec bien",
"racines": [
"kori",
@ -101,13 +101,13 @@
"confiance": {
"traductions": [
{
"confluent": "koriuveri",
"confluent": "koliuveli",
"type": "composition",
"composition": "kor-i-veri",
"composition": "kol-i-veli",
"sens_litteral": "Cœur de vérité",
"racines": [
"kori",
"veri"
"veli"
],
"domaine": "emotion_positive"
}
@ -116,9 +116,9 @@
"gratitude": {
"traductions": [
{
"confluent": "koriukitan",
"confluent": "koliukita",
"type": "composition",
"composition": "kor-i-kitan",
"composition": "kol-i-kitan",
"sens_litteral": "Cœur du don",
"racines": [
"kori",
@ -131,9 +131,9 @@
"serenite": {
"traductions": [
{
"confluent": "koriuura",
"confluent": "koliuula",
"type": "composition",
"composition": "kor-i-ura",
"composition": "kol-i-ula",
"sens_litteral": "Cœur de l'eau",
"racines": [
"kori",
@ -147,9 +147,9 @@
"peur": {
"traductions": [
{
"confluent": "korioaoki",
"confluent": "kolioaoki",
"type": "composition",
"composition": "kor-oa-oki",
"composition": "kol-oa-oki",
"sens_litteral": "Cœur face au danger",
"racines": [
"kori",
@ -162,9 +162,9 @@
"colere": {
"traductions": [
{
"confluent": "koriusuki",
"confluent": "koliusuki",
"type": "composition",
"composition": "kor-i-suki",
"composition": "kol-i-suki",
"sens_litteral": "Cœur de feu",
"racines": [
"kori",
@ -177,9 +177,9 @@
"tristesse": {
"traductions": [
{
"confluent": "korioaosi",
"confluent": "kolioaosi",
"type": "composition",
"composition": "kor-oa-osi",
"composition": "kol-oa-osi",
"sens_litteral": "Cœur vers la mort",
"racines": [
"kori",
@ -192,9 +192,9 @@
"desespoir": {
"traductions": [
{
"confluent": "korizoora",
"confluent": "kolizoola",
"type": "composition",
"composition": "kor-i-zo-ora",
"composition": "kol-i-zo-ola",
"sens_litteral": "Cœur sans aurore",
"racines": [
"kori",
@ -208,9 +208,9 @@
"honte": {
"traductions": [
{
"confluent": "korioakumu",
"confluent": "kolioakumu",
"type": "composition",
"composition": "kor-oa-kumu",
"composition": "kol-oa-kumu",
"sens_litteral": "Cœur vers l'ombre",
"racines": [
"kori",
@ -223,9 +223,9 @@
"haine": {
"traductions": [
{
"confluent": "koriuzoka",
"confluent": "koliuzoka",
"type": "composition",
"composition": "kor-i-zoka",
"composition": "kol-i-zoka",
"sens_litteral": "Cœur de l'ennemi",
"racines": [
"kori",
@ -238,9 +238,9 @@
"angoisse": {
"traductions": [
{
"confluent": "korioavuku",
"confluent": "kolioavuku",
"type": "composition",
"composition": "kor-oa-vuku",
"composition": "kol-oa-vuku",
"sens_litteral": "Cœur vers le gouffre",
"racines": [
"kori",
@ -256,14 +256,14 @@
"mefiance": {
"traductions": [
{
"confluent": "korizoveri",
"confluent": "kolizoveli",
"type": "composition",
"composition": "kor-i-zo-veri",
"composition": "kol-i-zo-veli",
"sens_litteral": "Cœur sans vérité",
"racines": [
"kori",
"zo",
"veri"
"veli"
],
"domaine": "emotion_negative"
}
@ -272,9 +272,9 @@
"regret": {
"traductions": [
{
"confluent": "korioaaita",
"confluent": "kolioaaita",
"type": "composition",
"composition": "kor-oa-aita",
"composition": "kol-oa-aita",
"sens_litteral": "Cœur vers le passé",
"racines": [
"kori",
@ -287,17 +287,17 @@
"jalousie": {
"traductions": [
{
"confluent": "korioakiru",
"confluent": "kolioakilu",
"type": "composition",
"composition": "kor-oa-kiru",
"composition": "kol-oa-kilu",
"sens_litteral": "Cœur contre l'échange",
"racines": [
"kori",
"kiru"
"kilu"
],
"domaine": "emotion_negative"
}
]
}
}
}
}

View File

@ -5,9 +5,9 @@
"ciel": {
"traductions": [
{
"confluent": "zeru",
"confluent": "zelu",
"type": "racine",
"forme_liee": "zer",
"forme_liee": "zel",
"domaine": "element_nature",
"note": "Élément primordial"
}
@ -61,9 +61,9 @@
"pierre": {
"traductions": [
{
"confluent": "kari",
"confluent": "kali",
"type": "racine",
"forme_liee": "kar",
"forme_liee": "kal",
"domaine": "element_nature",
"note": "Matière dure"
}
@ -75,9 +75,9 @@
"riviere": {
"traductions": [
{
"confluent": "nura",
"confluent": "nula",
"type": "racine",
"forme_liee": "nur",
"forme_liee": "nul",
"domaine": "geographie",
"note": "Eau qui coule"
}
@ -205,9 +205,9 @@
"mer": {
"traductions": [
{
"confluent": "meru",
"confluent": "melu",
"type": "racine",
"forme_liee": "mer",
"forme_liee": "mel",
"domaine": "geographie",
"note": "Grande eau salée"
}
@ -296,9 +296,9 @@
"cascade": {
"traductions": [
{
"confluent": "uraoavuku",
"confluent": "ulaoavuku",
"type": "composition",
"composition": "ur-oa-vuku",
"composition": "ul-oa-vuku",
"sens_litteral": "Eau vers le gouffre",
"racines": [
"ura",
@ -311,9 +311,9 @@
"source": {
"traductions": [
{
"confluent": "enuura",
"confluent": "enuula",
"type": "composition",
"composition": "en-u-ura",
"composition": "en-u-ula",
"sens_litteral": "Origine de l'eau",
"racines": [
"ena",
@ -341,13 +341,13 @@
"crevasse": {
"traductions": [
{
"confluent": "vukukari",
"confluent": "vukukali",
"type": "composition",
"composition": "vuk-u-kari",
"composition": "vuk-u-kali",
"sens_litteral": "Gouffre dans la pierre",
"racines": [
"vuku",
"kari"
"kali"
],
"domaine": "geographie"
}
@ -356,13 +356,13 @@
"promontoire": {
"traductions": [
{
"confluent": "tasumeru",
"confluent": "tasumelu",
"type": "composition",
"composition": "tas-u-meru",
"composition": "tas-u-melu",
"sens_litteral": "Montagne de la mer",
"racines": [
"tasa",
"meru"
"melu"
],
"domaine": "geographie"
}
@ -389,13 +389,13 @@
"cote": {
"traductions": [
{
"confluent": "tokumeru",
"confluent": "tokumelu",
"type": "composition",
"composition": "tok-u-meru",
"composition": "tok-u-melu",
"sens_litteral": "Terre de la mer",
"racines": [
"toka",
"meru"
"melu"
],
"domaine": "geographie"
}
@ -404,12 +404,12 @@
"horizon": {
"traductions": [
{
"confluent": "zerutoka",
"confluent": "zelutoka",
"type": "composition",
"composition": "zer-u-toka",
"composition": "zel-u-toka",
"sens_litteral": "Ciel de la terre",
"racines": [
"zeru",
"zelu",
"toka"
],
"domaine": "geographie"
@ -419,12 +419,12 @@
"confluence de rivieres": {
"traductions": [
{
"confluent": "nuraakota",
"confluent": "nulaakota",
"type": "composition",
"composition": "nur-aa-kota",
"composition": "nul-aa-kota",
"sens_litteral": "Rivière mêlée à union",
"racines": [
"nura",
"nula",
"kota"
],
"domaine": "geographie"
@ -434,13 +434,13 @@
"riviere azur": {
"traductions": [
{
"confluent": "nuruzeru",
"confluent": "nuluzelu",
"type": "composition",
"composition": "nur-u-zeru",
"composition": "nul-u-zelu",
"sens_litteral": "Rivière du ciel",
"racines": [
"nura",
"zeru"
"nula",
"zelu"
],
"domaine": "geographie"
}
@ -449,12 +449,12 @@
"riviere verte": {
"traductions": [
{
"confluent": "nuruviku",
"confluent": "nuluviku",
"type": "composition",
"composition": "nur-u-viku",
"composition": "nul-u-viku",
"sens_litteral": "Rivière de la forêt",
"racines": [
"nura",
"nula",
"viku"
],
"domaine": "geographie"
@ -462,4 +462,4 @@
]
}
}
}
}

View File

@ -5,14 +5,14 @@
"Cercle des Sages": {
"traductions": [
{
"confluent": "rikuusekitori",
"confluent": "likuusekitoli",
"type": "nom_propre",
"composition": "sik-u-sek-i-tori",
"composition": "sik-u-sek-i-toli",
"sens_litteral": "Cercle des porteurs-de-savoir",
"racines": [
"siku",
"seka",
"tori"
"toli"
],
"categorie": "institution",
"note": "Institution centrale"
@ -22,12 +22,12 @@
"Tribunal des Mœurs": {
"traductions": [
{
"confluent": "verimuloku",
"confluent": "velimuloku",
"type": "nom_propre",
"composition": "ver-i-m-loku",
"composition": "vel-i-m-loku",
"sens_litteral": "Lieu de vérité des mœurs",
"racines": [
"veri",
"veli",
"loku"
],
"categorie": "institution"
@ -67,13 +67,13 @@
"Maison des Decouvertes": {
"traductions": [
{
"confluent": "nutuumiris",
"confluent": "nutuumili",
"type": "nom_propre",
"composition": "nut-u-miris",
"composition": "nut-u-milis",
"sens_litteral": "Maison de la découverte",
"racines": [
"nutu",
"miris"
"milis"
],
"categorie": "institution"
}
@ -128,7 +128,7 @@
"Conseil du Village": {
"traductions": [
{
"confluent": "kotaurikusi",
"confluent": "kotaulikusi",
"type": "composition",
"composition": "kot-a-sik-u-si",
"sens_litteral": "Union avec cercle de regard",
@ -174,9 +174,9 @@
"Jour des Ancetres": {
"traductions": [
{
"confluent": "sorauaita",
"confluent": "solauaita",
"type": "composition",
"composition": "sor-a-aita",
"composition": "sol-a-aita",
"sens_litteral": "Jour avec ancêtres",
"racines": [
"sora",
@ -189,9 +189,9 @@
"Jour du Faucon": {
"traductions": [
{
"confluent": "sorauaki",
"confluent": "solauaki",
"type": "composition",
"composition": "sor-a-aki",
"composition": "sol-a-aki",
"sens_litteral": "Jour avec faucon",
"racines": [
"sora",
@ -202,4 +202,4 @@
]
}
}
}
}

View File

@ -19,7 +19,7 @@
"Regards-Libres": {
"traductions": [
{
"confluent": "aruaska",
"confluent": "aluaska",
"type": "composition",
"composition": "al-u-aska",
"sens_litteral": "Grue de liberté",
@ -35,7 +35,7 @@
"grue cendree": {
"traductions": [
{
"confluent": "arusenu",
"confluent": "alusenu",
"type": "composition",
"composition": "al-u-senu",
"sens_litteral": "Grue de cendre",
@ -116,13 +116,13 @@
"poisson de riviere": {
"traductions": [
{
"confluent": "pisunura",
"confluent": "pisunula",
"type": "composition",
"composition": "pis-u-nura",
"composition": "pis-u-nula",
"sens_litteral": "Poisson de rivière",
"racines": [
"pisu",
"nura"
"nula"
],
"domaine": "animal"
}
@ -142,9 +142,9 @@
"serpent d'eau": {
"traductions": [
{
"confluent": "sepuura",
"confluent": "sepuula",
"type": "composition",
"composition": "sep-u-ura",
"composition": "sep-u-ula",
"sens_litteral": "Serpent de l'eau",
"racines": [
"sepu",
@ -183,13 +183,13 @@
"creature inconnue": {
"traductions": [
{
"confluent": "zomira",
"confluent": "zomila",
"type": "composition",
"composition": "zo-mira",
"composition": "zo-mila",
"sens_litteral": "Sans vue",
"racines": [
"zo",
"mira"
"mila"
],
"domaine": "animal",
"note": "Créature jamais observée"
@ -222,4 +222,4 @@
]
}
}
}
}

View File

@ -45,9 +45,9 @@
"fleche": {
"traductions": [
{
"confluent": "pikiuark",
"confluent": "pikiuarku",
"type": "composition",
"composition": "pik-i-ark",
"composition": "pik-i-alk",
"sens_litteral": "Pointe de l'arc",
"racines": [
"piki",
@ -116,13 +116,13 @@
"bouclier": {
"traductions": [
{
"confluent": "zakikari",
"confluent": "zakikali",
"type": "composition",
"composition": "zak-i-kari",
"composition": "zak-i-kali",
"sens_litteral": "Protection de pierre",
"racines": [
"zaki",
"kari"
"kali"
],
"domaine": "arme"
}
@ -131,13 +131,13 @@
"pioche": {
"traductions": [
{
"confluent": "vukukari",
"confluent": "vukukali",
"type": "composition",
"composition": "vuk-u-kari",
"composition": "vuk-u-kali",
"sens_litteral": "Pierre du gouffre",
"racines": [
"vuku",
"kari"
"kali"
],
"domaine": "outil"
}
@ -146,13 +146,13 @@
"ciseau a pierre": {
"traductions": [
{
"confluent": "kovukari",
"confluent": "kovukali",
"type": "composition",
"composition": "kov-u-kari",
"composition": "kov-u-kali",
"sens_litteral": "Graveur de pierre",
"racines": [
"kova",
"kari"
"kali"
],
"domaine": "outil"
}
@ -161,13 +161,13 @@
"maillet": {
"traductions": [
{
"confluent": "bopukari",
"confluent": "bopukali",
"type": "composition",
"composition": "bop-u-kari",
"composition": "bop-u-kali",
"sens_litteral": "Frappeur de pierre",
"racines": [
"bopu",
"kari"
"kali"
],
"domaine": "outil"
}
@ -376,4 +376,4 @@
]
}
}
}
}

View File

@ -65,13 +65,13 @@
"honneur": {
"traductions": [
{
"confluent": "valuuveri",
"confluent": "valuuveli",
"type": "composition",
"composition": "val-u-veri",
"composition": "val-u-veli",
"sens_litteral": "Valeur de vérité",
"racines": [
"valu",
"veri"
"veli"
],
"domaine": "concept_abstrait"
}
@ -80,12 +80,12 @@
"justice": {
"traductions": [
{
"confluent": "veriukota",
"confluent": "veliukota",
"type": "composition",
"composition": "ver-i-kota",
"composition": "vel-i-kota",
"sens_litteral": "Vérité de l'union",
"racines": [
"veri",
"veli",
"kota"
],
"domaine": "concept_abstrait"
@ -95,9 +95,9 @@
"verite": {
"traductions": [
{
"confluent": "veri",
"confluent": "veli",
"type": "racine",
"forme_liee": "ver",
"forme_liee": "vel",
"domaine": "concept_fondateur"
}
]
@ -347,7 +347,7 @@
"serment de sang": {
"traductions": [
{
"confluent": "savuurasu",
"confluent": "savuulasu",
"type": "composition",
"composition": "sav-u-pasu",
"sens_litteral": "Serment du sang",
@ -397,13 +397,13 @@
"epreuve de verite": {
"traductions": [
{
"confluent": "okiuveri",
"confluent": "okiuveli",
"type": "composition",
"composition": "ok-i-veri",
"composition": "ok-i-veli",
"sens_litteral": "Épreuve de vérité",
"racines": [
"oki",
"veri"
"veli"
],
"domaine": "institution"
}
@ -553,13 +553,13 @@
"prisonnier": {
"traductions": [
{
"confluent": "pasikitori",
"confluent": "pasikitoli",
"type": "composition",
"composition": "pas-ik-i-tori",
"composition": "pas-ik-i-toli",
"sens_litteral": "Personne capturée",
"racines": [
"pasik",
"tori"
"toli"
],
"domaine": "conflit"
}
@ -568,11 +568,14 @@
"civilisation": {
"traductions": [
{
"confluent": "uraikota",
"confluent": "ulaikota",
"type": "composition",
"composition": "ura-i-kota",
"composition": "ula-i-kota",
"sens_litteral": "Confluence-de-vie",
"racines": ["ura", "kota"],
"racines": [
"ura",
"kota"
],
"liaison": "i",
"domaine": "concept_fondateur",
"note": "Civilisation - l'union des gens qui vivent ensemble (ura=eau/vie + i=agentivité + kota=confluence/union)"
@ -586,11 +589,14 @@
"observation": {
"traductions": [
{
"confluent": "silimira",
"confluent": "silimila",
"type": "composition",
"composition": "sili-mira",
"composition": "sili-mila",
"sens_litteral": "Regard-observant",
"racines": ["sili", "mirak"],
"racines": [
"sili",
"milak"
],
"domaine": "concept_fondateur",
"note": "Observation - acte de regarder avec attention (sili=regard + mirak=observer)"
}
@ -607,7 +613,10 @@
"type": "composition",
"composition": "aita-toka",
"sens_litteral": "Lieux-des-ancêtres",
"racines": ["aita", "toka"],
"racines": [
"aita",
"toka"
],
"domaine": "concept_fondateur",
"note": "Culture - les lieux/traditions des ancêtres transmis (aita=ancêtres + toka=lieux)"
}
@ -624,7 +633,10 @@
"type": "composition",
"composition": "seka-memu",
"sens_litteral": "Savoir-en-mémoire",
"racines": ["seka", "memu"],
"racines": [
"seka",
"memu"
],
"domaine": "concept_fondateur",
"note": "Connaissance - le savoir gardé en mémoire (seka=savoir + memu=mémoire)"
}
@ -668,4 +680,4 @@
]
}
}
}
}

View File

@ -82,7 +82,7 @@
"Lois du Sang et de la Bete": {
"traductions": [
{
"confluent": "lokuurasubetu",
"confluent": "lokuulasubetu",
"type": "nom_propre",
"composition": "lok-u-pasu-betu",
"sens_litteral": "Loi du sang et de la bête",
@ -98,7 +98,7 @@
"Porteur de Flamme": {
"traductions": [
{
"confluent": "takiusuki",
"confluent": "kanuusuki",
"type": "nom_propre",
"composition": "tak-i-suki",
"sens_litteral": "Porteur du feu",
@ -221,13 +221,13 @@
"lait de pierre": {
"traductions": [
{
"confluent": "miluukari",
"confluent": "miluukali",
"type": "composition",
"composition": "mil-u-kari",
"composition": "mil-u-kali",
"sens_litteral": "Lait de pierre",
"racines": [
"milu",
"kari"
"kali"
],
"domaine": "materiau_rituel"
}
@ -236,12 +236,12 @@
"roche braise": {
"traductions": [
{
"confluent": "kariusuki",
"confluent": "kaliusuki",
"type": "composition",
"composition": "kar-i-suki",
"composition": "kal-i-suki",
"sens_litteral": "Pierre du feu",
"racines": [
"kari",
"kali",
"suki"
],
"domaine": "materiau_rituel"
@ -392,4 +392,4 @@
]
}
}
}
}

View File

@ -5,12 +5,12 @@
"confluence de rivieres": {
"traductions": [
{
"confluent": "nuraakota",
"confluent": "nulaakota",
"type": "composition",
"composition": "nur-aa-kota",
"composition": "nul-aa-kota",
"sens_litteral": "Rivière mêlée à union",
"racines": [
"nura",
"nula",
"kota"
],
"domaine": "geographie"
@ -20,13 +20,13 @@
"riviere azur": {
"traductions": [
{
"confluent": "nuruzeru",
"confluent": "nuluzelu",
"type": "composition",
"composition": "nur-u-zeru",
"composition": "nul-u-zelu",
"sens_litteral": "Rivière du ciel",
"racines": [
"nura",
"zeru"
"nula",
"zelu"
],
"domaine": "geographie"
}
@ -35,12 +35,12 @@
"riviere verte": {
"traductions": [
{
"confluent": "nuruviku",
"confluent": "nuluviku",
"type": "composition",
"composition": "nur-u-viku",
"composition": "nul-u-viku",
"sens_litteral": "Rivière de la forêt",
"racines": [
"nura",
"nula",
"viku"
],
"domaine": "geographie"
@ -50,13 +50,13 @@
"promontoire": {
"traductions": [
{
"confluent": "tasumeru",
"confluent": "tasumelu",
"type": "composition",
"composition": "tas-u-meru",
"composition": "tas-u-melu",
"sens_litteral": "Montagne de la mer",
"racines": [
"tasa",
"meru"
"melu"
],
"domaine": "geographie"
}
@ -90,12 +90,52 @@
}
]
},
"est": {
"traductions": [
{
"confluent": "solaola",
"type": "composition",
"composition": "sol-a-ola",
"sens_litteral": "Soleil de l'aurore",
"racines": [
"sora",
"ora"
],
"domaine": "direction",
"note": "Est - direction du soleil levant/aurore"
}
],
"synonymes_fr": [
"levant",
"orient"
]
},
"ouest": {
"traductions": [
{
"confluent": "solaluna",
"type": "composition",
"composition": "sol-a-luna",
"sens_litteral": "Soleil vers la nuit",
"racines": [
"sora",
"luna"
],
"domaine": "direction",
"note": "Ouest - direction où le soleil va vers la nuit"
}
],
"synonymes_fr": [
"couchant",
"occident"
]
},
"mer": {
"traductions": [
{
"confluent": "meru",
"confluent": "melu",
"type": "racine",
"forme_liee": "mer",
"forme_liee": "mel",
"domaine": "geographie"
}
]
@ -103,13 +143,13 @@
"cote": {
"traductions": [
{
"confluent": "tokumeru",
"confluent": "tokumelu",
"type": "composition",
"composition": "tok-u-meru",
"composition": "tok-u-melu",
"sens_litteral": "Terre de la mer",
"racines": [
"toka",
"meru"
"melu"
],
"domaine": "geographie"
}
@ -118,12 +158,12 @@
"horizon": {
"traductions": [
{
"confluent": "zerutoka",
"confluent": "zelutoka",
"type": "composition",
"composition": "zer-u-toka",
"composition": "zel-u-toka",
"sens_litteral": "Ciel de la terre",
"racines": [
"zeru",
"zelu",
"toka"
],
"domaine": "geographie"
@ -148,9 +188,9 @@
"source": {
"traductions": [
{
"confluent": "enuura",
"confluent": "enuula",
"type": "composition",
"composition": "en-u-ura",
"composition": "en-u-ula",
"sens_litteral": "Origine de l'eau",
"racines": [
"ena",
@ -163,9 +203,9 @@
"cascade": {
"traductions": [
{
"confluent": "uraoavuku",
"confluent": "ulaoavuku",
"type": "composition",
"composition": "ur-oa-vuku",
"composition": "ul-oa-vuku",
"sens_litteral": "Eau vers le gouffre",
"racines": [
"ura",
@ -178,12 +218,12 @@
"eboulement": {
"traductions": [
{
"confluent": "kariovuku",
"confluent": "kaliovuku",
"type": "composition",
"composition": "kar-oa-vuku",
"composition": "kal-oa-vuku",
"sens_litteral": "Pierre vers le gouffre",
"racines": [
"kari",
"kali",
"vuku"
],
"domaine": "danger_naturel"
@ -193,9 +233,9 @@
"inondation": {
"traductions": [
{
"confluent": "uraueki",
"confluent": "ulaueki",
"type": "composition",
"composition": "ur-a-eki",
"composition": "ul-a-eki",
"sens_litteral": "Eau avec totalité",
"racines": [
"ura",
@ -208,13 +248,13 @@
"crevasse": {
"traductions": [
{
"confluent": "vukukari",
"confluent": "vukukali",
"type": "composition",
"composition": "vuk-u-kari",
"composition": "vuk-u-kali",
"sens_litteral": "Gouffre dans la pierre",
"racines": [
"vuku",
"kari"
"kali"
],
"domaine": "geographie"
}
@ -223,12 +263,12 @@
"roche impenetrable": {
"traductions": [
{
"confluent": "kariuzoki",
"confluent": "kaliuzoki",
"type": "composition",
"composition": "kar-i-zoki",
"composition": "kal-i-zoki",
"sens_litteral": "Pierre de l'épreuve",
"racines": [
"kari",
"kali",
"oki"
],
"domaine": "geographie"
@ -266,4 +306,4 @@
]
}
}
}
}

View File

@ -76,13 +76,13 @@
"sage": {
"traductions": [
{
"confluent": "sekitori",
"confluent": "sekitoli",
"type": "composition",
"composition": "sek-i-tori",
"composition": "sek-i-toli",
"sens_litteral": "Porteur de savoir",
"racines": [
"seka",
"tori"
"toli"
],
"domaine": "titre"
}
@ -127,13 +127,13 @@
"traqueur": {
"traductions": [
{
"confluent": "zanatori",
"confluent": "zanatoli",
"type": "composition",
"composition": "zan-a-tori",
"composition": "zan-a-toli",
"sens_litteral": "Personne de la chasse",
"racines": [
"zana",
"tori"
"toli"
],
"domaine": "titre"
}
@ -147,13 +147,13 @@
"guerrier": {
"traductions": [
{
"confluent": "okitori",
"confluent": "okitoli",
"type": "composition",
"composition": "ok-i-tori",
"composition": "ok-i-toli",
"sens_litteral": "Personne de l'épreuve",
"racines": [
"oki",
"tori"
"toli"
],
"domaine": "titre"
}
@ -162,13 +162,13 @@
"archer": {
"traductions": [
{
"confluent": "arkutori",
"confluent": "alkutoli",
"type": "composition",
"composition": "ark-u-tori",
"composition": "alk-u-toli",
"sens_litteral": "Personne de l'arc",
"racines": [
"arku",
"tori"
"toli"
],
"domaine": "titre"
}
@ -177,7 +177,7 @@
"porteur de lance": {
"traductions": [
{
"confluent": "takiupiki",
"confluent": "kanuupiki",
"type": "composition",
"composition": "tak-i-piki",
"sens_litteral": "Porteur de lance",
@ -207,13 +207,13 @@
"sentinelle": {
"traductions": [
{
"confluent": "velatori",
"confluent": "velatoli",
"type": "composition",
"composition": "vel-a-tori",
"composition": "vel-a-toli",
"sens_litteral": "Personne de vigile",
"racines": [
"vela",
"tori"
"toli"
],
"domaine": "titre"
}
@ -245,13 +245,13 @@
"chaman": {
"traductions": [
{
"confluent": "umitori",
"confluent": "umitoli",
"type": "composition",
"composition": "um-i-tori",
"composition": "um-i-toli",
"sens_litteral": "Personne de l'esprit",
"racines": [
"umi",
"tori"
"toli"
],
"domaine": "titre_spirituel"
}
@ -260,14 +260,14 @@
"dresseur de grues": {
"traductions": [
{
"confluent": "aruzakitori",
"confluent": "aluzakitoli",
"type": "composition",
"composition": "al-u-zak-i-tori",
"composition": "al-u-zak-i-toli",
"sens_litteral": "Personne gardienne des grues",
"racines": [
"alu",
"zaki",
"tori"
"toli"
],
"domaine": "titre"
}
@ -306,7 +306,7 @@
"Passe-bien": {
"traductions": [
{
"confluent": "takitosa",
"confluent": "kanutosa",
"type": "nom_propre",
"composition": "tak-i-tosa",
"sens_litteral": "Porteur du bien",
@ -321,7 +321,7 @@
"Porteur de Flamme": {
"traductions": [
{
"confluent": "takiusuki",
"confluent": "kanuusuki",
"type": "nom_propre",
"composition": "tak-i-suki",
"sens_litteral": "Porteur du feu",
@ -351,13 +351,13 @@
"faconneur de pierre": {
"traductions": [
{
"confluent": "nekaukari",
"confluent": "nekaukali",
"type": "composition",
"composition": "nek-a-kari",
"composition": "nek-a-kali",
"sens_litteral": "Faiseur avec pierre",
"racines": [
"neka",
"kari"
"kali"
],
"domaine": "titre"
}
@ -366,13 +366,13 @@
"sculpteur": {
"traductions": [
{
"confluent": "kovatori",
"confluent": "kovatoli",
"type": "composition",
"composition": "kov-a-tori",
"composition": "kov-a-toli",
"sens_litteral": "Personne de la gravure",
"racines": [
"kova",
"tori"
"toli"
],
"domaine": "titre"
}
@ -381,13 +381,13 @@
"peintre": {
"traductions": [
{
"confluent": "koluutori",
"confluent": "koluutoli",
"type": "composition",
"composition": "kol-u-tori",
"composition": "kol-u-toli",
"sens_litteral": "Personne des couleurs",
"racines": [
"kolu",
"tori"
"toli"
],
"domaine": "titre"
}
@ -396,13 +396,13 @@
"tisserand": {
"traductions": [
{
"confluent": "vasitori",
"confluent": "vasitoli",
"type": "composition",
"composition": "vas-i-tori",
"composition": "vas-i-toli",
"sens_litteral": "Personne du tissage",
"racines": [
"vasi",
"tori"
"toli"
],
"domaine": "titre"
}
@ -411,13 +411,13 @@
"pecheur": {
"traductions": [
{
"confluent": "pisutori",
"confluent": "pisutoli",
"type": "composition",
"composition": "pis-u-tori",
"composition": "pis-u-toli",
"sens_litteral": "Personne du poisson",
"racines": [
"pisu",
"tori"
"toli"
],
"domaine": "titre"
}
@ -426,13 +426,13 @@
"mineur": {
"traductions": [
{
"confluent": "vukutori",
"confluent": "vukutoli",
"type": "composition",
"composition": "vuk-u-tori",
"composition": "vuk-u-toli",
"sens_litteral": "Personne du gouffre",
"racines": [
"vuku",
"tori"
"toli"
],
"domaine": "titre"
}
@ -441,13 +441,13 @@
"aine": {
"traductions": [
{
"confluent": "aitatori",
"confluent": "aitatoli",
"type": "composition",
"composition": "ait-a-tori",
"composition": "ait-a-toli",
"sens_litteral": "Personne avec ancêtre",
"racines": [
"aita",
"tori"
"toli"
],
"domaine": "titre"
}
@ -496,13 +496,13 @@
"epoux": {
"traductions": [
{
"confluent": "kotautori",
"confluent": "kotautoli",
"type": "composition",
"composition": "kot-a-tori",
"composition": "kot-a-toli",
"sens_litteral": "Personne d'union",
"racines": [
"kota",
"tori"
"toli"
],
"domaine": "famille"
}
@ -538,4 +538,4 @@
]
}
}
}
}

View File

@ -106,13 +106,13 @@
"histoire vraie": {
"traductions": [
{
"confluent": "vokiuveri",
"confluent": "vokiuveli",
"type": "composition",
"composition": "vok-i-veri",
"composition": "vok-i-veli",
"sens_litteral": "Voix de vérité",
"racines": [
"voki",
"veri"
"veli"
],
"domaine": "communication"
}
@ -184,13 +184,13 @@
"rapport": {
"traductions": [
{
"confluent": "vokiumira",
"confluent": "vokiumila",
"type": "composition",
"composition": "vok-i-mira",
"composition": "vok-i-mila",
"sens_litteral": "Voix de l'observation",
"racines": [
"voki",
"mira"
"mila"
],
"domaine": "communication"
}
@ -324,13 +324,13 @@
"mensonge": {
"traductions": [
{
"confluent": "zoveri",
"confluent": "zoveli",
"type": "composition",
"composition": "zo-veri",
"composition": "zo-veli",
"sens_litteral": "Sans vérité",
"racines": [
"zo",
"veri"
"veli"
],
"domaine": "communication"
}
@ -347,4 +347,4 @@
]
}
}
}
}

View File

@ -62,7 +62,7 @@
"saison": {
"traductions": [
{
"confluent": "temiuriku",
"confluent": "temiuliku",
"type": "composition",
"composition": "tem-i-siku",
"sens_litteral": "Temps du cercle",
@ -87,7 +87,7 @@
"mois": {
"traductions": [
{
"confluent": "lunariku",
"confluent": "lunaliku",
"type": "composition",
"composition": "lun-a-siku",
"sens_litteral": "Lune avec cercle",
@ -112,9 +112,9 @@
"matin": {
"traductions": [
{
"confluent": "orausora",
"confluent": "olausola",
"type": "composition",
"composition": "or-a-sora",
"composition": "ol-a-sola",
"sens_litteral": "Aurore avec soleil",
"racines": [
"ora",
@ -196,7 +196,7 @@
"cycle eternel": {
"traductions": [
{
"confluent": "rikuueka",
"confluent": "likuueka",
"type": "composition",
"composition": "sik-u-eka",
"sens_litteral": "Cercle de totalité",
@ -279,4 +279,4 @@
]
}
}
}
}

View File

@ -16,9 +16,9 @@
"orange": {
"traductions": [
{
"confluent": "sukiusora",
"confluent": "sukiusola",
"type": "composition",
"composition": "suk-i-sora",
"composition": "suk-i-sola",
"sens_litteral": "Feu de lumière",
"racines": [
"suki",
@ -31,12 +31,12 @@
"violet": {
"traductions": [
{
"confluent": "zeruurasu",
"confluent": "zeluulasu",
"type": "composition",
"composition": "zer-u-pasu",
"composition": "zel-u-pasu",
"sens_litteral": "Ciel de sang",
"racines": [
"zeru",
"zelu",
"pasu"
],
"domaine": "couleur"
@ -49,7 +49,7 @@
"rose": {
"traductions": [
{
"confluent": "rasuumilu",
"confluent": "lasuumilu",
"type": "composition",
"composition": "pas-u-milu",
"sens_litteral": "Rouge de lait",
@ -113,9 +113,9 @@
"bleu": {
"traductions": [
{
"confluent": "zeru",
"confluent": "zelu",
"type": "racine",
"forme_liee": "zer",
"forme_liee": "zel",
"domaine": "couleur",
"note": "Couleur du ciel"
}
@ -124,9 +124,9 @@
"azur": {
"traductions": [
{
"confluent": "zeru",
"confluent": "zelu",
"type": "racine",
"forme_liee": "zer",
"forme_liee": "zel",
"domaine": "couleur"
}
]
@ -134,12 +134,12 @@
"bleu d'eau": {
"traductions": [
{
"confluent": "zeruuura",
"confluent": "zeluuula",
"type": "composition",
"composition": "zer-u-ura",
"composition": "zel-u-ula",
"sens_litteral": "Ciel de l'eau",
"racines": [
"zeru",
"zelu",
"ura"
],
"domaine": "couleur"
@ -149,9 +149,9 @@
"ocre": {
"traductions": [
{
"confluent": "tokausora",
"confluent": "tokausola",
"type": "composition",
"composition": "tok-a-sora",
"composition": "tok-a-sola",
"sens_litteral": "Terre avec soleil",
"racines": [
"toka",
@ -182,9 +182,9 @@
"yeux de l'aurore": {
"traductions": [
{
"confluent": "siluora",
"confluent": "siluola",
"type": "composition",
"composition": "sil-u-ora",
"composition": "sil-u-ola",
"sens_litteral": "Regard de l'aurore",
"racines": [
"sili",
@ -198,9 +198,9 @@
"eclat": {
"traductions": [
{
"confluent": "soraumako",
"confluent": "solaumako",
"type": "composition",
"composition": "sor-a-mako",
"composition": "sol-a-mako",
"sens_litteral": "Lumière avec grandeur",
"racines": [
"sora",
@ -218,9 +218,9 @@
"translucide": {
"traductions": [
{
"confluent": "sorauura",
"confluent": "solauula",
"type": "composition",
"composition": "sor-a-ura",
"composition": "sol-a-ula",
"sens_litteral": "Lumière avec eau",
"racines": [
"sora",
@ -291,13 +291,13 @@
"bas-relief": {
"traductions": [
{
"confluent": "kovaukari",
"confluent": "kovaukali",
"type": "composition",
"composition": "kov-a-kari",
"composition": "kov-a-kali",
"sens_litteral": "Gravure avec pierre",
"racines": [
"kova",
"kari"
"kali"
],
"domaine": "art"
}
@ -306,7 +306,7 @@
"motif": {
"traductions": [
{
"confluent": "kovauriku",
"confluent": "kovauliku",
"type": "composition",
"composition": "kov-a-siku",
"sens_litteral": "Gravure avec cercle",
@ -319,4 +319,4 @@
]
}
}
}
}

View File

@ -144,12 +144,12 @@
"eboulement": {
"traductions": [
{
"confluent": "kariovuku",
"confluent": "kaliovuku",
"type": "composition",
"composition": "kar-oa-vuku",
"composition": "kal-oa-vuku",
"sens_litteral": "Pierre vers le gouffre",
"racines": [
"kari",
"kali",
"vuku"
],
"domaine": "danger"
@ -159,9 +159,9 @@
"inondation": {
"traductions": [
{
"confluent": "uraueka",
"confluent": "ulaueka",
"type": "composition",
"composition": "ur-a-eka",
"composition": "ul-a-eka",
"sens_litteral": "Eau avec totalité",
"racines": [
"ura",
@ -204,13 +204,13 @@
"crevasse": {
"traductions": [
{
"confluent": "vukukari",
"confluent": "vukukali",
"type": "composition",
"composition": "vuk-u-kari",
"composition": "vuk-u-kali",
"sens_litteral": "Gouffre de pierre",
"racines": [
"vuku",
"kari"
"kali"
],
"domaine": "danger"
}
@ -219,12 +219,12 @@
"roche impenetrable": {
"traductions": [
{
"confluent": "kariuoki",
"confluent": "kaliuoki",
"type": "composition",
"composition": "kar-i-oki",
"composition": "kal-i-oki",
"sens_litteral": "Pierre de l'épreuve",
"racines": [
"kari",
"kali",
"oki"
],
"domaine": "danger"
@ -262,4 +262,4 @@
]
}
}
}
}

View File

@ -5,9 +5,9 @@
"pierre": {
"traductions": [
{
"confluent": "kari",
"confluent": "kali",
"type": "racine",
"forme_liee": "kar",
"forme_liee": "kal",
"domaine": "materiau",
"note": "Matériau fondamental"
}
@ -31,9 +31,9 @@
"argile": {
"traductions": [
{
"confluent": "tokauura",
"confluent": "tokauula",
"type": "composition",
"composition": "tok-a-ura",
"composition": "tok-a-ula",
"sens_litteral": "Terre avec eau",
"racines": [
"toka",
@ -46,12 +46,12 @@
"metal": {
"traductions": [
{
"confluent": "kariusuki",
"confluent": "kaliusuki",
"type": "composition",
"composition": "kar-i-suki",
"composition": "kal-i-suki",
"sens_litteral": "Pierre du feu",
"racines": [
"kari",
"kali",
"suki"
],
"domaine": "materiau"
@ -61,12 +61,12 @@
"minerai": {
"traductions": [
{
"confluent": "kariuvuku",
"confluent": "kaliuvuku",
"type": "composition",
"composition": "kar-i-vuku",
"composition": "kal-i-vuku",
"sens_litteral": "Pierre du gouffre",
"racines": [
"kari",
"kali",
"vuku"
],
"domaine": "materiau"
@ -170,13 +170,13 @@
"chaine": {
"traductions": [
{
"confluent": "kopuukari",
"confluent": "kopuukali",
"type": "composition",
"composition": "kop-u-kari",
"composition": "kop-u-kali",
"sens_litteral": "Corde de pierre",
"racines": [
"kopu",
"kari"
"kali"
],
"domaine": "objet"
}
@ -355,9 +355,9 @@
"lampe": {
"traductions": [
{
"confluent": "sorausaku",
"confluent": "solausaku",
"type": "composition",
"composition": "sor-a-saku",
"composition": "sol-a-saku",
"sens_litteral": "Lumière avec contenant",
"racines": [
"sora",
@ -400,12 +400,12 @@
"bijou": {
"traductions": [
{
"confluent": "kariuora",
"confluent": "kaliuola",
"type": "composition",
"composition": "kar-i-ora",
"composition": "kal-i-ola",
"sens_litteral": "Pierre de l'aurore",
"racines": [
"kari",
"kali",
"ora"
],
"domaine": "objet"
@ -474,4 +474,4 @@
]
}
}
}
}

View File

@ -160,7 +160,10 @@
"type": "composition",
"composition": "pal-u-suki",
"sens_litteral": "Herbe du feu (qui brûle le goût)",
"racines": ["pala", "suki"],
"racines": [
"pala",
"suki"
],
"liaison": "u",
"structure": "composition",
"domaine": "nourriture",
@ -183,7 +186,10 @@
"type": "composition",
"composition": "ait-eo-palu",
"sens_litteral": "Ancêtre-éternel-qui-brûle",
"racines": ["aita", "palu"],
"racines": [
"aita",
"palu"
],
"liaison": "eo",
"structure": "composition_sacree",
"domaine": "nourriture_sacree",
@ -199,11 +205,14 @@
"racine_fr": null,
"traductions": [
{
"confluent": "zeruosi",
"confluent": "zeluosi",
"type": "composition",
"composition": "zer-u-osi",
"composition": "zel-u-osi",
"sens_litteral": "Ciel-de-mort (larmes célestes)",
"racines": ["zeru", "osi"],
"racines": [
"zelu",
"osi"
],
"liaison": "u",
"structure": "composition_sacree",
"domaine": "nourriture_sacree",
@ -309,11 +318,14 @@
"racine_fr": "cuisin",
"traductions": [
{
"confluent": "mukunekas",
"confluent": "mukuneka",
"type": "composition",
"composition": "muk-u-nekas",
"sens_litteral": "Nourriture-de-faire",
"racines": ["muki", "nekas"],
"racines": [
"muki",
"nekas"
],
"liaison": "u",
"structure": "composition",
"domaine": "technique_culinaire",
@ -341,11 +353,14 @@
"racine_fr": "infus",
"traductions": [
{
"confluent": "urapis",
"type": "composition",
"composition": "ura-pis",
"confluent": "lapis",
"type": "verbe",
"racine": "lapi",
"sens_litteral": "Eau-tremper",
"racines": ["ura", "pisu"],
"racines": [
"ura",
"pisu"
],
"structure": "composition",
"domaine": "technique_culinaire",
"note": "Infuser, faire tremper dans l'eau"
@ -397,11 +412,11 @@
"racine_fr": "boir",
"traductions": [
{
"confluent": "urapis",
"confluent": "lapis",
"type": "verbe",
"racine": "ura",
"forme_liee": "ura",
"structure": "VCVCV",
"racine": "lapi",
"forme_liee": "lap",
"structure": "CVCVC",
"domaine": "nourriture",
"note": "Boire - utilise racine sacrée ura (eau)"
}
@ -447,7 +462,10 @@
"type": "composition",
"composition": "zo-muki",
"sens_litteral": "Négation-nourriture",
"racines": ["zo", "muki"],
"racines": [
"zo",
"muki"
],
"structure": "composition",
"domaine": "nourriture",
"note": "Manque (de nourriture) - zo (négation) + muki (nourriture)"

View File

@ -10,7 +10,10 @@
"type": "composition",
"composition": "mukis-loku",
"sens_litteral": "Lieu-de-manger",
"racines": ["mukis", "loku"],
"racines": [
"mukis",
"loku"
],
"structure": "composition",
"domaine": "habitat",
"note": "Table - lieu où l'on mange (mukis=manger + loku=lieu)"
@ -25,11 +28,14 @@
"racine_fr": "fenêtr",
"traductions": [
{
"confluent": "soratuva",
"confluent": "solatuva",
"type": "composition",
"composition": "sora-tuva",
"composition": "sola-tuva",
"sens_litteral": "Ouverture-de-lumière",
"racines": ["sora", "tuva"],
"racines": [
"sora",
"tuva"
],
"structure": "composition",
"domaine": "habitat",
"note": "Fenêtre - ouverture qui laisse passer la lumière (sora=lumière + tuva=ouverture)"
@ -49,7 +55,10 @@
"type": "composition",
"composition": "zaku-sumu",
"sens_litteral": "Protection-haute",
"racines": ["zaku", "sumu"],
"racines": [
"zaku",
"sumu"
],
"structure": "composition",
"domaine": "habitat",
"note": "Toit - protection en hauteur (zaku=protection/réserve + sumu=haut)"
@ -65,11 +74,14 @@
"racine_fr": "mur",
"traductions": [
{
"confluent": "karisumu",
"confluent": "kalisumu",
"type": "composition",
"composition": "kari-sumu",
"composition": "kali-sumu",
"sens_litteral": "Pierre-dressée",
"racines": ["kari", "sumu"],
"racines": [
"kali",
"sumu"
],
"structure": "composition",
"domaine": "habitat",
"note": "Mur - pierre élevée (kari=pierre + sumu=haut/élevé)"
@ -85,11 +97,14 @@
"racine_fr": "escalier",
"traductions": [
{
"confluent": "vukukari",
"confluent": "vukukali",
"type": "composition",
"composition": "vuku-kari",
"composition": "vuku-kali",
"sens_litteral": "Gouffre-de-pierre",
"racines": ["vuku", "kari"],
"racines": [
"vuku",
"kali"
],
"structure": "composition",
"domaine": "habitat",
"note": "Escalier - montée de pierre (référence au Gouffre Humide avec ses escaliers dans la roche, vuku=gouffre + kari=pierre)"

View File

@ -0,0 +1,655 @@
{
"_comment": "Vocabulaire de la navigation et des activités maritimes",
"_mots_a_gerer": [],
"dictionnaire": {
"naviguer": {
"traductions": [
{
"confluent": "ulaki",
"type": "composition",
"composition": "ula-ki",
"sens_litteral": "Aller sur l'eau",
"racines": [
"ura"
],
"domaine": "action_maritime",
"note": "Voyager sur l'eau avec une embarcation"
}
],
"synonymes_fr": [
"navigation",
"voguer"
]
},
"marin": {
"traductions": [
{
"confluent": "ulakina",
"type": "composition",
"composition": "ula-ki-na",
"sens_litteral": "Celui qui va sur l'eau",
"racines": [
"ura"
],
"domaine": "role_maritime",
"note": "Personne qui navigue"
}
],
"synonymes_fr": [
"navigateur",
"marins"
]
},
"embarcation": {
"traductions": [
{
"confluent": "ulavanu",
"type": "composition",
"composition": "ula-vanu",
"sens_litteral": "Chose d'eau",
"racines": [
"ura",
"vanu"
],
"domaine": "objet_maritime",
"note": "Bateau, barque - terme générique"
}
],
"synonymes_fr": [
"bateau",
"barque"
]
},
"flotter": {
"traductions": [
{
"confluent": "ulatuli",
"type": "composition",
"composition": "ula-tuli",
"sens_litteral": "Être porté par l'eau",
"racines": [
"ura"
],
"domaine": "action_maritime",
"note": "Rester à la surface de l'eau"
}
],
"synonymes_fr": [
"flotté",
"flottera"
]
},
"chavirer": {
"traductions": [
{
"confluent": "vanuloli",
"type": "composition",
"composition": "vanu-loli",
"sens_litteral": "L'embarcation se retourne",
"racines": [
"vanu"
],
"domaine": "accident_maritime",
"note": "Le bateau bascule"
}
],
"synonymes_fr": [
"se retourner",
"basculer"
]
},
"couler": {
"traductions": [
{
"confluent": "vanuvuku",
"type": "composition",
"composition": "vanu-vuku",
"sens_litteral": "L'embarcation descend dans le gouffre",
"racines": [
"vanu",
"vuku"
],
"domaine": "accident_maritime",
"note": "Sombrer, aller au fond"
}
],
"synonymes_fr": [
"sombrer",
"s'enfoncer"
]
},
"noyade": {
"traductions": [
{
"confluent": "ulaosi",
"type": "composition",
"composition": "ula-osi",
"sens_litteral": "Mort par l'eau",
"racines": [
"ura",
"osi"
],
"domaine": "danger_maritime",
"note": "Mort par immersion"
}
],
"synonymes_fr": [
"se noyer",
"noyé"
]
},
"échouer": {
"traductions": [
{
"confluent": "vanukosti",
"type": "composition",
"composition": "vanu-kosti",
"sens_litteral": "L'embarcation touche la rive",
"racines": [
"vanu",
"kosti"
],
"domaine": "navigation",
"note": "Bateau qui s'arrête sur le rivage involontairement"
}
],
"synonymes_fr": [
"échouée",
"échoué"
]
},
"rivage": {
"traductions": [
{
"confluent": "kosti",
"type": "racine",
"forme_liee": "kost",
"domaine": "geographie_maritime",
"note": "Bord de la mer, côte"
}
],
"synonymes_fr": [
"côte",
"littoral",
"bord de mer"
]
},
"berge": {
"traductions": [
{
"confluent": "ulalinu",
"type": "composition",
"composition": "ula-linu",
"sens_litteral": "Ligne d'eau",
"racines": [
"ura",
"linu"
],
"domaine": "geographie",
"note": "Bord de rivière ou fleuve"
}
],
"synonymes_fr": [
"rive",
"bord"
]
},
"embouchure": {
"traductions": [
{
"confluent": "ulakotamelu",
"type": "composition",
"composition": "ula-kota-melu",
"sens_litteral": "Confluence d'eau vers la mer",
"racines": [
"ura",
"kota",
"melu"
],
"domaine": "geographie_maritime",
"note": "Où le fleuve rencontre la mer"
}
],
"synonymes_fr": [
"delta"
]
},
"eau salée": {
"traductions": [
{
"confluent": "ulaselu",
"type": "composition",
"composition": "ula-selu",
"sens_litteral": "Eau de sel",
"racines": [
"ura",
"selu"
],
"domaine": "nature_maritime",
"note": "Eau de mer, impure pour boire"
}
],
"synonymes_fr": [
"eau de mer",
"eau impure"
]
},
"eau douce": {
"traductions": [
{
"confluent": "ulapuli",
"type": "composition",
"composition": "ula-puli",
"sens_litteral": "Eau pure",
"racines": [
"ura"
],
"domaine": "nature",
"note": "Eau potable de rivière ou source"
}
],
"synonymes_fr": [
"eau potable",
"eau pure"
]
},
"marée": {
"traductions": [
{
"confluent": "meluuki",
"type": "composition",
"composition": "melu-uki",
"sens_litteral": "Mouvement de la mer",
"racines": [
"melu"
],
"domaine": "phenomene_maritime",
"note": "Montée et descente de l'eau"
}
],
"synonymes_fr": [
"flux",
"marées"
]
},
"vague": {
"traductions": [
{
"confluent": "meluloli",
"type": "composition",
"composition": "melu-loli",
"sens_litteral": "Roulement de la mer",
"racines": [
"melu"
],
"domaine": "phenomene_maritime",
"note": "Ondulation de l'eau"
}
],
"synonymes_fr": [
"vagues",
"flot"
]
},
"manœuvrer": {
"traductions": [
{
"confluent": "vanukanu",
"type": "composition",
"composition": "vanu-kanu",
"sens_litteral": "Diriger l'embarcation avec les mains",
"racines": [
"vanu",
"kanu"
],
"domaine": "action_maritime",
"note": "Piloter un bateau"
}
],
"synonymes_fr": [
"piloter",
"diriger"
]
},
"ramer": {
"traductions": [
{
"confluent": "kanulaki",
"type": "composition",
"composition": "kanu-la-ki",
"sens_litteral": "Pousser avec les mains pour aller",
"racines": [
"kanu"
],
"domaine": "action_maritime",
"note": "Faire avancer avec des rames"
}
],
"synonymes_fr": [
"rame",
"pagayer"
]
},
"rame": {
"traductions": [
{
"confluent": "kanuvi",
"type": "composition",
"composition": "kanu-vi",
"sens_litteral": "Bois de main pour l'eau",
"racines": [
"kanu",
"vito"
],
"domaine": "outil_maritime",
"note": "Longue pièce de bois pour propulser"
}
],
"synonymes_fr": [
"aviron",
"pagaie"
]
},
"voile": {
"traductions": [
{
"confluent": "venuvanu",
"type": "composition",
"composition": "ven-u-vanu",
"sens_litteral": "Air de l'embarcation",
"racines": [
"vena",
"vanu"
],
"domaine": "equipement_maritime",
"note": "Tissu qui capte le vent"
}
],
"synonymes_fr": [
"voiles"
]
},
"ancre": {
"traductions": [
{
"confluent": "vanupeku",
"type": "composition",
"composition": "vanu-peku",
"sens_litteral": "Pied de l'embarcation",
"racines": [
"vanu",
"peki"
],
"domaine": "equipement_maritime",
"note": "Objet lourd qui maintient le bateau"
}
],
"synonymes_fr": [
"ancres"
]
},
"aborder": {
"traductions": [
{
"confluent": "vanukoti",
"type": "composition",
"composition": "vanu-koti",
"sens_litteral": "Monter sur l'embarcation",
"racines": [
"vanu"
],
"domaine": "action_maritime",
"note": "Monter à bord (ou attaquer un navire)"
}
],
"synonymes_fr": [
"monter à bord",
"embarquer"
]
},
"débarquer": {
"traductions": [
{
"confluent": "vanuvoli",
"type": "composition",
"composition": "vanu-voli",
"sens_litteral": "Quitter l'embarcation",
"racines": [
"vanu"
],
"domaine": "action_maritime",
"note": "Descendre du bateau"
}
],
"synonymes_fr": [
"descendre",
"sortir du bateau"
]
},
"cargaison": {
"traductions": [
{
"confluent": "vanusaki",
"type": "composition",
"composition": "vanu-saki",
"sens_litteral": "Sac de l'embarcation",
"racines": [
"vanu",
"saki"
],
"domaine": "commerce_maritime",
"note": "Marchandises transportées"
}
],
"synonymes_fr": [
"charge",
"marchandises"
]
},
"pérégrination aquatique": {
"traductions": [
{
"confluent": "ulakimako",
"type": "composition",
"composition": "ula-ki-mako",
"sens_litteral": "Grand voyage sur l'eau",
"racines": [
"ura",
"mako"
],
"domaine": "voyage_maritime",
"note": "Voyage de longue durée sur l'eau"
}
],
"synonymes_fr": [
"voyage maritime",
"traversée"
]
},
"point d'eau": {
"traductions": [
{
"confluent": "ulatoka",
"type": "composition",
"composition": "ula-toka",
"sens_litteral": "Lieu d'eau",
"racines": [
"ura",
"toka"
],
"domaine": "geographie",
"note": "Endroit où trouver de l'eau (source, puits, rivière)"
}
],
"synonymes_fr": [
"source d'eau"
]
},
"ravitaillement": {
"traductions": [
{
"confluent": "nutukovi",
"type": "composition",
"composition": "nutu-kovi",
"sens_litteral": "Remplir les réserves",
"racines": [
"nutu"
],
"domaine": "logistique",
"note": "Reconstituer les provisions"
}
],
"synonymes_fr": [
"ravitailler",
"approvisionner"
]
},
"se ravitailler": {
"traductions": [
{
"confluent": "nutukili",
"type": "composition",
"composition": "nutu-kili",
"sens_litteral": "Échanger pour obtenir provisions",
"racines": [
"nutu",
"kilu"
],
"domaine": "logistique",
"note": "Obtenir de la nourriture et de l'eau"
}
],
"synonymes_fr": [
"s'approvisionner"
]
},
"construction en bois": {
"traductions": [
{
"confluent": "vitokova",
"type": "composition",
"composition": "vito-kova",
"sens_litteral": "Bois assemblé/travaillé",
"racines": [
"vito",
"kova"
],
"domaine": "construction",
"note": "Structure faite de planches"
}
],
"synonymes_fr": [
"charpente"
]
},
"créature flottante": {
"traductions": [
{
"confluent": "betulatuli",
"type": "composition",
"composition": "betu-ula-tuli",
"sens_litteral": "Bête qui flotte sur l'eau",
"racines": [
"betu",
"ura"
],
"domaine": "perception",
"note": "Perception initiale des navires étrangers comme créatures vivantes"
}
]
},
"port": {
"traductions": [
{
"confluent": "vanukotoka",
"type": "composition",
"composition": "vanu-kotoka",
"sens_litteral": "Lieu des embarcations",
"racines": [
"vanu",
"toka"
],
"domaine": "geographie_maritime",
"note": "Endroit où les bateaux s'arrêtent"
}
],
"synonymes_fr": [
"havre",
"quai"
]
},
"tempête marine": {
"traductions": [
{
"confluent": "meluzelu",
"type": "composition",
"composition": "melu-zelu",
"sens_litteral": "Ciel furieux de la mer",
"racines": [
"melu",
"zelu"
],
"domaine": "danger_maritime",
"note": "Tempête en mer"
}
],
"synonymes_fr": [
"ouragan marin"
]
},
"profondeur": {
"traductions": [
{
"confluent": "vukumako",
"type": "composition",
"composition": "vuku-mako",
"sens_litteral": "Grand gouffre",
"racines": [
"vuku",
"mako"
],
"domaine": "geographie_maritime",
"note": "Eau très profonde"
}
],
"synonymes_fr": [
"abîme",
"fond"
]
},
"houle": {
"traductions": [
{
"confluent": "meluloli",
"type": "composition",
"composition": "melu-loli",
"sens_litteral": "Ondulation lente de la mer",
"racines": [
"melu"
],
"domaine": "phenomene_maritime",
"note": "Vagues longues et régulières"
}
]
},
"écume": {
"traductions": [
{
"confluent": "ulamiluvi",
"type": "composition",
"composition": "ula-milu-vi",
"sens_litteral": "Blanc d'eau",
"racines": [
"ura",
"milu"
],
"domaine": "phenomene_maritime",
"note": "Mousse blanche des vagues"
}
],
"synonymes_fr": [
"mousse"
]
}
}
}

View File

@ -0,0 +1,513 @@
{
"_comment": "Vocabulaire architectural et de construction",
"_mots_a_gerer": [],
"dictionnaire": {
"pilotis": {
"traductions": [
{
"confluent": "ulapeki",
"type": "composition",
"composition": "ula-peki",
"sens_litteral": "Pieds dans l'eau",
"racines": [
"ura",
"peki"
],
"domaine": "architecture",
"note": "CRITIQUE - architecture majeure des Enfants du Courant"
}
],
"synonymes_fr": [
"pieux",
"piliers d'eau"
]
},
"plate-forme": {
"traductions": [
{
"confluent": "pekutoka",
"type": "composition",
"composition": "pek-u-toka",
"sens_litteral": "Lieu sur pieds",
"racines": [
"peki",
"toka"
],
"domaine": "architecture",
"note": "Structure élevée sur pilotis"
}
],
"synonymes_fr": [
"plateforme",
"terrasse"
]
},
"escalier": {
"traductions": [
{
"confluent": "pekivasi",
"type": "composition",
"composition": "peki-vasi",
"sens_litteral": "Pont de pieds",
"racines": [
"peki",
"vasi"
],
"domaine": "architecture",
"note": "Passage pour monter/descendre"
}
],
"synonymes_fr": [
"escaliers",
"marches"
]
},
"marche": {
"traductions": [
{
"confluent": "pekivi",
"type": "composition",
"composition": "peki-vi",
"sens_litteral": "Partie de pied",
"racines": [
"peki"
],
"domaine": "architecture",
"note": "Élément d'escalier"
}
],
"synonymes_fr": [
"marches",
"degré"
]
},
"tour": {
"traductions": [
{
"confluent": "tokamakouti",
"type": "composition",
"composition": "toka-mako-uti",
"sens_litteral": "Lieu très haut",
"racines": [
"toka",
"mako"
],
"domaine": "architecture",
"note": "Structure haute"
}
],
"synonymes_fr": [
"tours"
]
},
"tour de guet": {
"traductions": [
{
"confluent": "silimakotoka",
"type": "composition",
"composition": "sili-mako-toka",
"sens_litteral": "Haut lieu pour voir",
"racines": [
"sili",
"mako",
"toka"
],
"domaine": "architecture_militaire",
"note": "Tour pour surveiller"
}
]
},
"mur": {
"traductions": [
{
"confluent": "linukonu",
"type": "composition",
"composition": "lin-u-konu",
"sens_litteral": "Ligne gardée",
"racines": [
"linu",
"konu"
],
"domaine": "architecture",
"note": "Paroi de protection"
}
],
"synonymes_fr": [
"muraille",
"paroi"
]
},
"muraille": {
"traductions": [
{
"confluent": "makolinukonu",
"type": "composition",
"composition": "mako-linu-konu",
"sens_litteral": "Grande ligne gardée",
"racines": [
"mako",
"linu",
"konu"
],
"domaine": "architecture_militaire",
"note": "Fortification"
}
],
"synonymes_fr": [
"fortification",
"enceinte"
]
},
"porte": {
"traductions": [
{
"confluent": "vasiumu",
"type": "composition",
"composition": "vasi-umu",
"sens_litteral": "Passage ouvert",
"racines": [
"vasi"
],
"domaine": "architecture",
"note": "Ouverture pour entrer/sortir"
}
],
"synonymes_fr": [
"portes",
"entrée"
]
},
"seuil": {
"traductions": [
{
"confluent": "vasitoka",
"type": "composition",
"composition": "vasi-toka",
"sens_litteral": "Lieu de passage",
"racines": [
"vasi",
"toka"
],
"domaine": "architecture",
"note": "Entrée, limite"
}
]
},
"fenêtre": {
"traductions": [
{
"confluent": "siliveku",
"type": "composition",
"composition": "sili-veku",
"sens_litteral": "Surface pour voir",
"racines": [
"sili",
"veku"
],
"domaine": "architecture",
"note": "Ouverture pour la lumière et l'air"
}
],
"synonymes_fr": [
"fenêtres"
]
},
"toit": {
"traductions": [
{
"confluent": "tokuveku",
"type": "composition",
"composition": "toka-veku",
"sens_litteral": "Surface du lieu",
"racines": [
"toka",
"veku"
],
"domaine": "architecture",
"note": "Couverture supérieure"
}
],
"synonymes_fr": [
"toiture",
"couverture"
]
},
"galerie": {
"traductions": [
{
"confluent": "vukuvasi",
"type": "composition",
"composition": "vuku-vasi",
"sens_litteral": "Passage du gouffre",
"racines": [
"vuku",
"vasi"
],
"domaine": "architecture_souterraine",
"note": "Passage souterrain (crucial pour Antres)"
}
],
"synonymes_fr": [
"tunnel",
"corridor"
]
},
"voûte": {
"traductions": [
{
"confluent": "vukutoka",
"type": "composition",
"composition": "vuku-toka",
"sens_litteral": "Lieu du gouffre courbé",
"racines": [
"vuku",
"toka"
],
"domaine": "architecture_souterraine",
"note": "Construction arquée souterraine"
}
]
},
"chambre": {
"traductions": [
{
"confluent": "tokapisu",
"type": "composition",
"composition": "toka-pisu",
"sens_litteral": "Petit lieu",
"racines": [
"toka",
"pisu"
],
"domaine": "architecture",
"note": "Pièce fermée"
}
],
"synonymes_fr": [
"pièce",
"salle"
]
},
"atelier": {
"traductions": [
{
"confluent": "kovatoka",
"type": "composition",
"composition": "kova-toka",
"sens_litteral": "Lieu du travail/gravure",
"racines": [
"kova",
"toka"
],
"domaine": "architecture",
"note": "Lieu de production artisanale"
}
],
"synonymes_fr": [
"ateliers"
]
},
"entrepôt": {
"traductions": [
{
"confluent": "nutukotoka",
"type": "composition",
"composition": "nutu-koto-ka",
"sens_litteral": "Grand lieu de réserves",
"racines": [
"nutu",
"kota"
],
"domaine": "architecture",
"note": "Stockage de provisions"
}
],
"synonymes_fr": [
"stockage",
"réserve"
]
},
"colonne": {
"traductions": [
{
"confluent": "tokupeki",
"type": "composition",
"composition": "toka-peki",
"sens_litteral": "Pied du lieu",
"racines": [
"toka",
"peki"
],
"domaine": "architecture",
"note": "Support vertical"
}
],
"synonymes_fr": [
"pilier",
"colonnes"
]
},
"linteau": {
"traductions": [
{
"confluent": "vasilinu",
"type": "composition",
"composition": "vasi-linu",
"sens_litteral": "Ligne de passage",
"racines": [
"vasi",
"linu"
],
"domaine": "architecture",
"note": "Élément au-dessus d'une ouverture"
}
]
},
"fondation": {
"traductions": [
{
"confluent": "tokapeku",
"type": "composition",
"composition": "toka-peku",
"sens_litteral": "Base du lieu",
"racines": [
"toka",
"peki"
],
"domaine": "architecture",
"note": "Base d'un bâtiment"
}
],
"synonymes_fr": [
"fondations",
"base"
]
},
"charpente": {
"traductions": [
{
"confluent": "vitosanu",
"type": "composition",
"composition": "vito-sanu",
"sens_litteral": "Corps de bois",
"racines": [
"vito",
"sanu"
],
"domaine": "architecture",
"note": "Structure en bois"
}
]
},
"poutre": {
"traductions": [
{
"confluent": "vitolinumako",
"type": "composition",
"composition": "vito-linu-mako",
"sens_litteral": "Grande ligne de bois",
"racines": [
"vito",
"linu",
"mako"
],
"domaine": "architecture",
"note": "Élément structurel horizontal"
}
],
"synonymes_fr": [
"poutres"
]
},
"planche": {
"traductions": [
{
"confluent": "vitoveku",
"type": "composition",
"composition": "vito-veku",
"sens_litteral": "Surface de bois",
"racines": [
"vito",
"veku"
],
"domaine": "architecture",
"note": "Morceau de bois plat"
}
],
"synonymes_fr": [
"planches",
"madrier"
]
},
"sol": {
"traductions": [
{
"confluent": "tokuvuku",
"type": "composition",
"composition": "toka-vuku",
"sens_litteral": "Bas du lieu",
"racines": [
"toka",
"vuku"
],
"domaine": "architecture",
"note": "Surface au niveau du sol"
}
],
"synonymes_fr": [
"plancher",
"terre"
]
},
"enceinte": {
"traductions": [
{
"confluent": "kotakonu",
"type": "composition",
"composition": "kota-konu",
"sens_litteral": "Protection de confluence",
"racines": [
"kota",
"konu"
],
"domaine": "architecture_militaire",
"note": "Murs qui entourent un lieu"
}
],
"synonymes_fr": [
"fortification"
]
},
"fosse": {
"traductions": [
{
"confluent": "vukupisu",
"type": "composition",
"composition": "vuku-pisu",
"sens_litteral": "Petit gouffre",
"racines": [
"vuku",
"pisu"
],
"domaine": "architecture",
"note": "Trou creusé"
}
],
"synonymes_fr": [
"fossé",
"trou"
]
},
"pont": {
"traductions": [
{
"confluent": "vasi",
"type": "racine",
"forme_liee": "vas",
"domaine": "architecture",
"note": "Déjà existant - lien, passage entre deux"
}
]
}
}
}

View File

@ -0,0 +1,552 @@
{
"_comment": "Concepts philosophiques et idées centrales à la civilisation",
"_mots_a_gerer": [],
"dictionnaire": {
"porter un regard libre": {
"traductions": [
{
"confluent": "kanusiliaska",
"type": "composition",
"composition": "kanu-sili-aska",
"sens_litteral": "Porter le regard libre",
"racines": [
"kanu",
"sili",
"aska"
],
"domaine": "philosophie_centrale",
"note": "Concept central de la civilisation - pèlerinage obligatoire, identité culturelle"
}
]
},
"promis à pareil destin": {
"traductions": [
{
"confluent": "savuosikota",
"type": "composition",
"composition": "sav-u-osi-kota",
"sens_litteral": "Serment de même mort",
"racines": [
"savu",
"osi",
"kota"
],
"domaine": "philosophie_centrale",
"note": "Phrase existentielle clé : peur de disparaître comme les Premiers Ancêtres"
}
]
},
"gardiens des passages": {
"traductions": [
{
"confluent": "konuvasiaita",
"type": "composition",
"composition": "kon-u-vasi-aita",
"sens_litteral": "Ancêtres gardiens des passages",
"racines": [
"konu",
"vasi",
"aita"
],
"domaine": "spiritualite",
"note": "Âmes des pionniers morts qui ne peuvent atteindre le ciel"
}
]
},
"multi-générationnel": {
"traductions": [
{
"confluent": "ekaitavi",
"type": "composition",
"composition": "eka-aita-vi",
"sens_litteral": "De tous les ancêtres",
"racines": [
"eka",
"aita"
],
"domaine": "temps_philosophie",
"note": "Qui traverse plusieurs générations (crucial pour artefacts)"
}
],
"synonymes_fr": [
"transgénérationnel"
]
},
"relais": {
"traductions": [
{
"confluent": "vasiaita",
"type": "composition",
"composition": "vasi-aita",
"sens_litteral": "Passage des ancêtres",
"racines": [
"vasi",
"aita"
],
"domaine": "temps_philosophie",
"note": "Transmission à travers le temps"
}
],
"synonymes_fr": [
"transmission",
"passage témoin"
]
},
"relais de mémorisation": {
"traductions": [
{
"confluent": "vasinemu",
"type": "composition",
"composition": "vasi-nemu",
"sens_litteral": "Passage de mémoire",
"racines": [
"vasi",
"nemu"
],
"domaine": "techniques_culturelles",
"note": "Technique des Ailes-Grises pour interpréter la fresque"
}
]
},
"débat à travers le temps": {
"traductions": [
{
"confluent": "vokaitaaika",
"type": "composition",
"composition": "voki-aita-aika",
"sens_litteral": "Voix des ancêtres dans le temps",
"racines": [
"voki",
"aita",
"aika"
],
"domaine": "philosophie",
"note": "Concept de l'interprétation multi-générationnelle"
}
]
},
"génération": {
"traductions": [
{
"confluent": "aitakolu",
"type": "composition",
"composition": "aita-kolu",
"sens_litteral": "Cycle des ancêtres",
"racines": [
"aita"
],
"domaine": "temps",
"note": "Unité de temps civilisationnelle"
}
],
"synonymes_fr": [
"générations"
]
},
"éternel": {
"traductions": [
{
"confluent": "ekaaikavi",
"type": "composition",
"composition": "eka-aika-vi",
"sens_litteral": "De tout temps",
"racines": [
"eka",
"aika"
],
"domaine": "temps_philosophie",
"note": "Sans fin"
}
],
"synonymes_fr": [
"éternité",
"perpétuel"
]
},
"temporalité": {
"traductions": [
{
"confluent": "aikakota",
"type": "composition",
"composition": "aika-kota",
"sens_litteral": "Confluence du temps",
"racines": [
"aika",
"kota"
],
"domaine": "philosophie",
"note": "Concept du temps"
}
]
},
"stratification temporelle": {
"traductions": [
{
"confluent": "aikakovasu",
"type": "composition",
"composition": "aika-kova-su",
"sens_litteral": "Gravures multiples du temps",
"racines": [
"aika",
"kova"
],
"domaine": "philosophie",
"note": "Couches de temps superposées"
}
]
},
"mériter": {
"traductions": [
{
"confluent": "tosaki",
"type": "composition",
"composition": "tosa-ki",
"sens_litteral": "Aller vers le bien",
"racines": [
"tosa"
],
"domaine": "valeur_sociale",
"note": "Gagner par le mérite"
}
],
"synonymes_fr": [
"mérite",
"gagner"
]
},
"charge": {
"traductions": [
{
"confluent": "kanukota",
"type": "composition",
"composition": "kanu-kota",
"sens_litteral": "Porter la confluence",
"racines": [
"kanu",
"kota"
],
"domaine": "politique",
"note": "Fonction politique ou responsabilité"
}
],
"synonymes_fr": [
"charges",
"fonction",
"responsabilité"
]
},
"héréditaire": {
"traductions": [
{
"confluent": "aitakovi",
"type": "composition",
"composition": "aita-kovi",
"sens_litteral": "Réservé aux ancêtres",
"racines": [
"aita"
],
"domaine": "politique",
"note": "Concept à rejeter - transmission familiale du pouvoir"
}
]
},
"fief": {
"traductions": [
{
"confluent": "tokaitavi",
"type": "composition",
"composition": "toka-aita-vi",
"sens_litteral": "Lieu des ancêtres",
"racines": [
"toka",
"aita"
],
"domaine": "politique",
"note": "Concept à rejeter - territoire accordé par hérédité"
}
]
},
"monopole": {
"traductions": [
{
"confluent": "ikokonu",
"type": "composition",
"composition": "iko-konu",
"sens_litteral": "Un seul gardien",
"racines": [
"iko",
"konu"
],
"domaine": "economie_politique",
"note": "Contrôle exclusif (crucial pour économie)"
}
]
},
"permanent": {
"traductions": [
{
"confluent": "aikaveli",
"type": "composition",
"composition": "aika-veli",
"sens_litteral": "Vrai dans le temps",
"racines": [
"aika",
"veli"
],
"domaine": "temps",
"note": "Non temporaire"
}
],
"synonymes_fr": [
"permanente",
"durable"
]
},
"temporaire": {
"traductions": [
{
"confluent": "aikapisu",
"type": "composition",
"composition": "aika-pisu",
"sens_litteral": "Petit temps",
"racines": [
"aika",
"pisu"
],
"domaine": "temps",
"note": "Opposé de permanent"
}
],
"synonymes_fr": [
"transitoire",
"éphémère"
]
},
"gloire": {
"traductions": [
{
"confluent": "nemumako",
"type": "composition",
"composition": "nemu-mako",
"sens_litteral": "Grande mémoire",
"racines": [
"nemu",
"mako"
],
"domaine": "valeur_sociale",
"note": "Honneur et renommée"
}
],
"synonymes_fr": [
"glorieux",
"renommée"
]
},
"honneur": {
"traductions": [
{
"confluent": "tosanemu",
"type": "composition",
"composition": "tosa-nemu",
"sens_litteral": "Bonne mémoire",
"racines": [
"tosa",
"nemu"
],
"domaine": "valeur_sociale",
"note": "Valeur morale"
}
],
"synonymes_fr": [
"honorable"
]
},
"fierté": {
"traductions": [
{
"confluent": "kolimako",
"type": "composition",
"composition": "koli-mako",
"sens_litteral": "Grand cœur",
"racines": [
"kori",
"mako"
],
"domaine": "emotion",
"note": "Sentiment de dignité"
}
]
},
"reproche": {
"traductions": [
{
"confluent": "vokipaka",
"type": "composition",
"composition": "voki-paka",
"sens_litteral": "Parole mauvaise",
"racines": [
"voki",
"paka"
],
"domaine": "action_sociale",
"note": "Critique"
}
],
"synonymes_fr": [
"reprocher",
"blâme"
]
},
"louer": {
"traductions": [
{
"confluent": "vokitosa",
"type": "composition",
"composition": "voki-tosa",
"sens_litteral": "Parole bonne",
"racines": [
"voki",
"tosa"
],
"domaine": "action_sociale",
"note": "Complimenter, faire l'éloge"
}
],
"synonymes_fr": [
"louange",
"éloge",
"complimenter"
]
},
"indigne": {
"traductions": [
{
"confluent": "pakaveli",
"type": "composition",
"composition": "paka-veli",
"sens_litteral": "Vraiment mauvais",
"racines": [
"paka",
"veli"
],
"domaine": "valeur_sociale",
"note": "Déshonorant"
}
]
},
"satisfaire": {
"traductions": [
{
"confluent": "tosavi",
"type": "composition",
"composition": "tosa-vi",
"sens_litteral": "Rendre bon",
"racines": [
"tosa"
],
"domaine": "action_sociale",
"note": "Répondre aux attentes"
}
],
"synonymes_fr": [
"satisfaction",
"contenter"
]
},
"exigence": {
"traductions": [
{
"confluent": "vokimako",
"type": "composition",
"composition": "voki-mako",
"sens_litteral": "Grande parole/demande",
"racines": [
"voki",
"mako"
],
"domaine": "action_sociale",
"note": "Demande forte"
}
],
"synonymes_fr": [
"exiger",
"demande"
]
},
"compensation": {
"traductions": [
{
"confluent": "kilutosa",
"type": "composition",
"composition": "kil-u-tosa",
"sens_litteral": "Bon échange",
"racines": [
"kilu",
"tosa"
],
"domaine": "economie",
"note": "Rémunération équitable"
}
],
"synonymes_fr": [
"rémunération",
"rétribution"
]
},
"suffocation": {
"traductions": [
{
"confluent": "venuosi",
"type": "composition",
"composition": "ven-u-osi",
"sens_litteral": "Mort de l'air",
"racines": [
"vena",
"osi"
],
"domaine": "danger_spirituel",
"note": "Effet de rester trop longtemps dans les Antres (spirituel)"
}
],
"synonymes_fr": [
"suffoquer",
"étouffement"
]
},
"multicouche": {
"traductions": [
{
"confluent": "kovasu",
"type": "composition",
"composition": "kova-su",
"sens_litteral": "Gravures multiples",
"racines": [
"kova"
],
"domaine": "art_philosophie",
"note": "Concept des fresques à plusieurs strates temporelles"
}
],
"synonymes_fr": [
"multi-couche",
"stratifié"
]
},
"devenir partie de l'Antre": {
"traductions": [
{
"confluent": "tulikeko",
"type": "composition",
"composition": "tuli-keko",
"sens_litteral": "Être de l'écho",
"racines": [
"tuli",
"keko"
],
"domaine": "tradition",
"note": "Tradition des artisans âgés (refus d'enlever le corps, fierté)"
}
]
}
}
}

View File

@ -0,0 +1,638 @@
{
"_comment": "Vocabulaire du contact interculturel et de l'altérité",
"_mots_a_gerer": [],
"dictionnaire": {
"étranger": {
"traductions": [
{
"confluent": "otana",
"type": "racine_sacree_composee",
"composition": "ota-na",
"sens_litteral": "Celui de l'extérieur",
"racines": [
"ota",
"na"
],
"domaine": "alterite",
"note": "Racine sacrée ota (autre, extérieur) + suffixe agent -na"
}
],
"synonymes_fr": [
"inconnu",
"étranger",
"étrangère",
"étrangers"
]
},
"l'autre": {
"traductions": [
{
"confluent": "ota",
"type": "racine_sacree",
"forme_liee": "ot",
"domaine": "alterite",
"note": "Concept philosophique : celui qui ne partage ni ancêtres, ni langue, ni intentions"
}
],
"synonymes_fr": [
"autre",
"l'Autre"
]
},
"différent": {
"traductions": [
{
"confluent": "otavi",
"type": "composition",
"composition": "ota-vi",
"sens_litteral": "De nature autre",
"racines": [
"ota"
],
"domaine": "alterite",
"note": "Suffixe adjectival -vi"
}
],
"synonymes_fr": [
"différente",
"différents",
"différentes"
]
},
"nanzagouet": {
"traductions": [
{
"confluent": "pupasula",
"type": "composition",
"composition": "pupu-a-pasu-la",
"sens_litteral": "Cheveux de sang",
"racines": [
"pupu",
"pasu"
],
"domaine": "peuple_etranger",
"note": "Nom donné aux étrangers aux cheveux roux - 'Cheveux de Sang'"
}
],
"synonymes_fr": [
"Nanzagouet",
"peuple aux cheveux roux"
]
},
"cheveux de sang": {
"traductions": [
{
"confluent": "pupasula",
"type": "composition",
"composition": "pupu-a-pasu-la",
"sens_litteral": "Poils rouges comme le sang",
"racines": [
"pupu",
"pasu"
],
"domaine": "description_physique",
"note": "Descriptif initial des étrangers aux cheveux roux"
}
]
},
"cheveux": {
"traductions": [
{
"confluent": "pupu",
"type": "racine",
"forme_liee": "pup",
"domaine": "corps",
"note": "Partie du corps qui pousse sur la tête"
}
],
"synonymes_fr": [
"chevelure",
"poils"
]
},
"roux": {
"traductions": [
{
"confluent": "pasovi",
"type": "composition",
"composition": "paso-vi",
"sens_litteral": "De couleur sang/rouge",
"racines": [
"pasu"
],
"domaine": "couleur",
"note": "Utilise la racine pasu (sang) pour rouge"
}
],
"synonymes_fr": [
"rousse",
"rouge",
"rouges"
]
},
"inconnu": {
"traductions": [
{
"confluent": "otasili",
"type": "composition",
"composition": "ota-sili",
"sens_litteral": "Non vu, étranger au regard",
"racines": [
"ota",
"sili"
],
"domaine": "alterite",
"note": "Ce qui n'a jamais été observé"
}
],
"synonymes_fr": [
"inconnus",
"inconnue",
"inconnues"
]
},
"premiers ancêtres": {
"traductions": [
{
"confluent": "enuaita",
"type": "composition",
"composition": "en-u-aita",
"sens_litteral": "Ancêtres de l'origine",
"racines": [
"ena",
"aita"
],
"domaine": "histoire",
"note": "Peuple disparu distinct des ancêtres directs (aita)"
}
],
"synonymes_fr": [
"Premiers Ancêtres"
]
},
"rencontrer": {
"traductions": [
{
"confluent": "kotavi",
"type": "racine",
"forme_liee": "kotav",
"domaine": "action_sociale",
"note": "Croiser le chemin de, se rencontrer"
}
],
"synonymes_fr": [
"rencontre",
"croiser"
]
},
"accueillir": {
"traductions": [
{
"confluent": "takavi",
"type": "racine",
"forme_liee": "takav",
"domaine": "action_sociale",
"note": "Recevoir, accepter l'arrivée de"
}
],
"synonymes_fr": [
"accueil",
"recevoir"
]
},
"rejeter": {
"traductions": [
{
"confluent": "volaki",
"type": "racine",
"forme_liee": "volak",
"domaine": "action_sociale",
"note": "Repousser, refuser"
}
],
"synonymes_fr": [
"rejet",
"repousser",
"refuser"
]
},
"comprendre": {
"traductions": [
{
"confluent": "silumi",
"type": "composition",
"composition": "sil-umi",
"sens_litteral": "Voir avec l'esprit",
"racines": [
"sili",
"umi"
],
"domaine": "cognition",
"note": "Saisir le sens"
}
],
"synonymes_fr": [
"compréhension",
"saisir"
]
},
"langue": {
"traductions": [
{
"confluent": "vokina",
"type": "composition",
"composition": "voki-na",
"sens_litteral": "Ensemble des voix/paroles",
"racines": [
"voki"
],
"domaine": "communication",
"note": "Système linguistique (distinct de langue organe)"
}
],
"synonymes_fr": [
"langage",
"idiome"
]
},
"geste": {
"traductions": [
{
"confluent": "kanuki",
"type": "composition",
"composition": "kan-uki",
"sens_litteral": "Mouvement de main",
"racines": [
"kanu"
],
"domaine": "communication",
"note": "Communication non-verbale"
}
],
"synonymes_fr": [
"gestes",
"signe"
]
},
"intention": {
"traductions": [
{
"confluent": "umikoli",
"type": "composition",
"composition": "umi-koli",
"sens_litteral": "Esprit-cœur, volonté intérieure",
"racines": [
"umi",
"kori"
],
"domaine": "cognition",
"note": "Ce qu'on veut faire, la volonté"
}
],
"synonymes_fr": [
"volonté",
"but",
"dessein"
]
},
"méfiance": {
"traductions": [
{
"confluent": "silikonu",
"type": "composition",
"composition": "sili-ko-nu",
"sens_litteral": "Regard gardé",
"racines": [
"sili",
"konu"
],
"domaine": "emotion",
"note": "Ne pas faire confiance, observer avec prudence"
}
],
"synonymes_fr": [
"méfiant",
"suspicion"
]
},
"confiance": {
"traductions": [
{
"confluent": "kolaska",
"type": "composition",
"composition": "kol-aska",
"sens_litteral": "Cœur libre",
"racines": [
"kori",
"aska"
],
"domaine": "emotion",
"note": "Ouvrir son cœur sans crainte"
}
],
"synonymes_fr": [
"confiant",
"foi"
]
},
"partager": {
"traductions": [
{
"confluent": "kiluvi",
"type": "composition",
"composition": "kil-u-vi",
"sens_litteral": "Faire l'échange",
"racines": [
"kilu"
],
"domaine": "action_sociale",
"note": "Donner une partie à l'autre"
}
],
"synonymes_fr": [
"partage",
"distribuer"
]
},
"commun": {
"traductions": [
{
"confluent": "kotavi",
"type": "composition",
"composition": "kota-vi",
"sens_litteral": "De la confluence, partagé",
"racines": [
"kota"
],
"domaine": "social",
"note": "Ce qui appartient à tous"
}
],
"synonymes_fr": [
"partagé",
"collectif",
"commune"
]
},
"frontière": {
"traductions": [
{
"confluent": "linuota",
"type": "composition",
"composition": "lin-u-ota",
"sens_litteral": "Ligne de l'autre",
"racines": [
"linu",
"ota"
],
"domaine": "geographie",
"note": "Limite entre nous et les autres"
}
],
"synonymes_fr": [
"limite",
"frontières",
"bord"
]
},
"territoire": {
"traductions": [
{
"confluent": "tokukota",
"type": "composition",
"composition": "tok-u-kota",
"sens_litteral": "Lieu de la confluence/union",
"racines": [
"toka",
"kota"
],
"domaine": "geographie",
"note": "Terre qui appartient au peuple"
}
],
"synonymes_fr": [
"terre",
"domaine"
]
},
"contact": {
"traductions": [
{
"confluent": "kotavuki",
"type": "composition",
"composition": "kotav-uki",
"sens_litteral": "Mouvement de rencontre",
"racines": [
"kotavi"
],
"domaine": "action_sociale",
"note": "Premier contact, toucher"
}
],
"synonymes_fr": [
"toucher",
"rencontre initiale"
]
},
"commerce": {
"traductions": [
{
"confluent": "kilukota",
"type": "composition",
"composition": "kil-u-kota",
"sens_litteral": "Échange en confluence",
"racines": [
"kilu",
"kota"
],
"domaine": "economie",
"note": "Échanges réguliers entre groupes"
}
],
"synonymes_fr": [
"échange commercial",
"négoce"
]
},
"hostile": {
"traductions": [
{
"confluent": "zanaoti",
"type": "composition",
"composition": "zana-ot-i",
"sens_litteral": "Qui chasse l'autre",
"racines": [
"zana",
"ota"
],
"domaine": "attitude",
"note": "Agressif envers l'étranger"
}
],
"synonymes_fr": [
"agressif",
"ennemi",
"hostile"
]
},
"pacifique": {
"traductions": [
{
"confluent": "tosavi",
"type": "composition",
"composition": "tosa-vi",
"sens_litteral": "De nature bonne/paisible",
"racines": [
"tosa"
],
"domaine": "attitude",
"note": "Sans agressivité"
}
],
"synonymes_fr": [
"paisible",
"pacifiques",
"bienveillant"
]
},
"alliance": {
"traductions": [
{
"confluent": "savukota",
"type": "composition",
"composition": "sav-u-kota",
"sens_litteral": "Serment de confluence",
"racines": [
"savu",
"kota"
],
"domaine": "politique",
"note": "Accord entre peuples"
}
],
"synonymes_fr": [
"pacte",
"accord"
]
},
"traité": {
"traductions": [
{
"confluent": "savukova",
"type": "composition",
"composition": "sav-u-kova",
"sens_litteral": "Serment gravé",
"racines": [
"savu",
"kova"
],
"domaine": "politique",
"note": "Accord formel écrit"
}
],
"synonymes_fr": [
"accord écrit",
"traités"
]
},
"ambassadeur": {
"traductions": [
{
"confluent": "vokiotana",
"type": "composition",
"composition": "voki-ota-na",
"sens_litteral": "Voix pour l'autre",
"racines": [
"voki",
"ota"
],
"domaine": "role_politique",
"note": "Celui qui parle au nom de son peuple auprès des étrangers"
}
],
"synonymes_fr": [
"émissaire",
"envoyé"
]
},
"interprète": {
"traductions": [
{
"confluent": "vokikota",
"type": "composition",
"composition": "voki-kota",
"sens_litteral": "Voix de confluence",
"racines": [
"voki",
"kota"
],
"domaine": "role_communication",
"note": "Celui qui traduit entre langues"
}
],
"synonymes_fr": [
"traducteur"
]
},
"curiosité": {
"traductions": [
{
"confluent": "siliota",
"type": "composition",
"composition": "sili-ota",
"sens_litteral": "Regard vers l'autre",
"racines": [
"sili",
"ota"
],
"domaine": "emotion",
"note": "Désir de découvrir l'inconnu"
}
],
"synonymes_fr": [
"curieux",
"intérêt"
]
},
"découverte": {
"traductions": [
{
"confluent": "nuvisili",
"type": "composition",
"composition": "nuvi-sili",
"sens_litteral": "Nouveau regard",
"racines": [
"nuvi",
"sili"
],
"domaine": "cognition",
"note": "Voir pour la première fois"
}
],
"synonymes_fr": [
"découvrir",
"trouver"
]
},
"similitude": {
"traductions": [
{
"confluent": "silikinu",
"type": "composition",
"composition": "sili-ki-nu",
"sens_litteral": "Même regard/apparence",
"racines": [
"sili"
],
"domaine": "concept",
"note": "Ressemblance, points communs"
}
],
"synonymes_fr": [
"ressemblance",
"semblable",
"similaire"
]
}
}
}

View File

@ -0,0 +1,540 @@
{
"_comment": "Actions militaires et tactiques de combat",
"_mots_a_gerer": [],
"dictionnaire": {
"capturer": {
"traductions": [
{
"confluent": "konuki",
"type": "composition",
"composition": "kon-uki",
"sens_litteral": "Prendre et garder",
"racines": [
"konu"
],
"domaine": "action_militaire",
"note": "Prendre prisonnier"
}
],
"synonymes_fr": [
"capture",
"captif",
"prisonnier"
]
},
"menacer": {
"traductions": [
{
"confluent": "zanasili",
"type": "composition",
"composition": "zana-sili",
"sens_litteral": "Montrer la chasse",
"racines": [
"zana",
"sili"
],
"domaine": "action_militaire",
"note": "Action d'intimidation"
}
],
"synonymes_fr": [
"menace",
"intimidation",
"intimider"
]
},
"soumettre": {
"traductions": [
{
"confluent": "konumaki",
"type": "composition",
"composition": "kon-u-maki",
"sens_litteral": "Forcer à garder sous contrôle",
"racines": [
"konu"
],
"domaine": "action_militaire",
"note": "Forcer la reddition"
}
],
"synonymes_fr": [
"soumission",
"dominer"
]
},
"paniquer": {
"traductions": [
{
"confluent": "kolivolu",
"type": "composition",
"composition": "koli-volu",
"sens_litteral": "Cœur qui fuit",
"racines": [
"kori"
],
"domaine": "emotion_combat",
"note": "Peur panique"
}
],
"synonymes_fr": [
"panique",
"affolement",
"s'affoler"
]
},
"résister": {
"traductions": [
{
"confluent": "konuveli",
"type": "composition",
"composition": "kon-u-veli",
"sens_litteral": "Garder vraiment/tenir bon",
"racines": [
"konu",
"veli"
],
"domaine": "action_militaire",
"note": "Opposition, défense"
}
],
"synonymes_fr": [
"résistance",
"tenir bon",
"s'opposer"
]
},
"rouer de coups": {
"traductions": [
{
"confluent": "kopusuvi",
"type": "composition",
"composition": "kopu-su-vi",
"sens_litteral": "Frapper plusieurs fois",
"racines": [
"kopu"
],
"domaine": "violence",
"note": "Violence physique répétée"
}
],
"synonymes_fr": [
"battre",
"frapper violemment"
]
},
"mâter": {
"traductions": [
{
"confluent": "konupaka",
"type": "composition",
"composition": "kon-u-paka",
"sens_litteral": "Garder par le mal",
"racines": [
"konu",
"paka"
],
"domaine": "action_militaire",
"note": "Soumettre par la force brutale"
}
],
"synonymes_fr": [
"réprimer",
"briser"
]
},
"forcer à rester": {
"traductions": [
{
"confluent": "tulimaki",
"type": "composition",
"composition": "tuli-maki",
"sens_litteral": "Faire rester/être",
"racines": [
"tuli"
],
"domaine": "action_militaire",
"note": "Contrainte physique"
}
],
"synonymes_fr": [
"contraindre",
"retenir"
]
},
"courir après": {
"traductions": [
{
"confluent": "pekikazo",
"type": "composition",
"composition": "peki-kazo",
"sens_litteral": "Pieds rapides vers",
"racines": [
"peki",
"kazo"
],
"domaine": "action_militaire",
"note": "Poursuite"
}
],
"synonymes_fr": [
"poursuivre",
"poursuite",
"chasser"
]
},
"se faire passer pour": {
"traductions": [
{
"confluent": "mukavi",
"type": "composition",
"composition": "muka-vi",
"sens_litteral": "Prendre le visage de",
"racines": [
"muka"
],
"domaine": "action_militaire",
"note": "Déguisement/subterfuge"
}
],
"synonymes_fr": [
"imiter",
"se déguiser",
"feindre"
]
},
"abordage": {
"traductions": [
{
"confluent": "vanuzanaki",
"type": "composition",
"composition": "vanu-zana-ki",
"sens_litteral": "Attaque de l'embarcation",
"racines": [
"vanu",
"zana"
],
"domaine": "combat_maritime",
"note": "Attaque d'un navire"
}
],
"synonymes_fr": [
"aborder (attaque)"
]
},
"observation": {
"traductions": [
{
"confluent": "silikonu",
"type": "composition",
"composition": "sili-konu",
"sens_litteral": "Regard gardé/vigilant",
"racines": [
"sili",
"konu"
],
"domaine": "tactique_militaire",
"note": "Surveillance des ennemis"
}
],
"synonymes_fr": [
"observer",
"surveiller",
"surveillance"
]
},
"interrogation": {
"traductions": [
{
"confluent": "vokikonuki",
"type": "composition",
"composition": "voki-kon-uki",
"sens_litteral": "Paroles pour prendre",
"racines": [
"voki",
"konu"
],
"domaine": "action_militaire",
"note": "Questionnement de captifs"
}
],
"synonymes_fr": [
"interroger",
"questionner"
]
},
"embuscade": {
"traductions": [
{
"confluent": "konusili",
"type": "composition",
"composition": "konu-sili",
"sens_litteral": "Garde cachée qui observe",
"racines": [
"konu",
"sili"
],
"domaine": "tactique_militaire",
"note": "Tactique de surprise"
}
],
"synonymes_fr": [
"guet-apens",
"piège"
]
},
"surnombre": {
"traductions": [
{
"confluent": "ikomako",
"type": "composition",
"composition": "iko-mako",
"sens_litteral": "Nombre grand/beaucoup",
"racines": [
"iko",
"mako"
],
"domaine": "tactique_militaire",
"note": "Supériorité numérique"
}
],
"synonymes_fr": [
"supériorité numérique"
]
},
"arracher": {
"traductions": [
{
"confluent": "kanuvoli",
"type": "composition",
"composition": "kanu-voli",
"sens_litteral": "Prendre avec la main en arrachant",
"racines": [
"kanu"
],
"domaine": "action_violente",
"note": "Enlever de force"
}
],
"synonymes_fr": [
"enlever de force",
"déchirer"
]
},
"vulnérable": {
"traductions": [
{
"confluent": "konupisu",
"type": "composition",
"composition": "kon-u-pisu",
"sens_litteral": "Petite garde/protection",
"racines": [
"konu",
"pisu"
],
"domaine": "etat_militaire",
"note": "État de faiblesse, non protégé"
}
],
"synonymes_fr": [
"faible",
"exposé"
]
},
"audace": {
"traductions": [
{
"confluent": "kolaska",
"type": "composition",
"composition": "kol-aska",
"sens_litteral": "Cœur libre",
"racines": [
"kori",
"aska"
],
"domaine": "qualite_guerriere",
"note": "Qualité de courage"
}
],
"synonymes_fr": [
"audacieux",
"courage",
"brave"
]
},
"orgueilleux": {
"traductions": [
{
"confluent": "kolimakovi",
"type": "composition",
"composition": "koli-mako-vi",
"sens_litteral": "De très grand cœur",
"racines": [
"kori",
"mako"
],
"domaine": "defaut_caractere",
"note": "Défaut caractériel - arrogance"
}
],
"synonymes_fr": [
"arrogant",
"orgueil",
"fier"
]
},
"patient": {
"traductions": [
{
"confluent": "teluveli",
"type": "composition",
"composition": "telu-veli",
"sens_litteral": "Vraiment lent/calme",
"racines": [
"telu",
"veli"
],
"domaine": "qualite",
"note": "Vertu - capacité d'attendre"
}
],
"synonymes_fr": [
"patience",
"calme"
]
},
"initiative": {
"traductions": [
{
"confluent": "ikikoli",
"type": "composition",
"composition": "iki-koli",
"sens_litteral": "Premier cœur/mouvement",
"racines": [
"iko",
"kori"
],
"domaine": "qualite_tactique",
"note": "Prise de décision autonome"
}
],
"synonymes_fr": [
"prendre l'initiative"
]
},
"imprévu": {
"traductions": [
{
"confluent": "silinovi",
"type": "composition",
"composition": "sili-no-vi",
"sens_litteral": "Non vu avant",
"racines": [
"sili"
],
"domaine": "evenement",
"note": "Événement inattendu"
}
],
"synonymes_fr": [
"inattendu",
"surprise"
]
},
"désordre": {
"traductions": [
{
"confluent": "kotavoli",
"type": "composition",
"composition": "kota-voli",
"sens_litteral": "Hors de la confluence/ordre",
"racines": [
"kota"
],
"domaine": "etat",
"note": "Chaos, absence d'organisation"
}
],
"synonymes_fr": [
"chaos",
"confusion"
]
},
"choc": {
"traductions": [
{
"confluent": "kolikopuvi",
"type": "composition",
"composition": "koli-kopu-vi",
"sens_litteral": "Coup au cœur",
"racines": [
"kori",
"kopu"
],
"domaine": "emotion",
"note": "Traumatisme émotionnel violent"
}
],
"synonymes_fr": [
"traumatisme",
"stupeur"
]
},
"émeute": {
"traductions": [
{
"confluent": "kotavolisu",
"type": "composition",
"composition": "kota-voli-su",
"sens_litteral": "Multiples hors de l'ordre",
"racines": [
"kota"
],
"domaine": "social_violent",
"note": "Rébellion collective"
}
],
"synonymes_fr": [
"révolte",
"insurrection"
]
},
"garrison": {
"traductions": [
{
"confluent": "konutulitoka",
"type": "composition",
"composition": "kon-u-tuli-toka",
"sens_litteral": "Lieu de garde permanente",
"racines": [
"konu",
"tuli",
"toka"
],
"domaine": "structure_militaire",
"note": "Groupe de défense permanent"
}
],
"synonymes_fr": [
"garnison"
]
},
"réserves": {
"traductions": [
{
"confluent": "zanakovu",
"type": "composition",
"composition": "zana-kovu",
"sens_litteral": "Réservoir pour la chasse/guerre",
"racines": [
"zana"
],
"domaine": "logistique_militaire",
"note": "Stocks d'urgence (armes, nourriture)"
}
],
"synonymes_fr": [
"stocks militaires"
]
}
}
}

View File

@ -0,0 +1,488 @@
{
"_comment": "Vêtements, apparence physique et descriptions corporelles",
"_mots_a_gerer": [],
"dictionnaire": {
"vêtement": {
"traductions": [
{
"confluent": "vekuvi",
"type": "composition",
"composition": "vek-u-vi",
"sens_litteral": "Chose de surface/peau",
"racines": [
"veku"
],
"domaine": "vetement",
"note": "Ce qu'on porte sur le corps"
}
],
"synonymes_fr": [
"vêtements",
"habit",
"habits"
]
},
"tenue": {
"traductions": [
{
"confluent": "sanuveku",
"type": "composition",
"composition": "san-u-veku",
"sens_litteral": "Surface du corps",
"racines": [
"sanu",
"veku"
],
"domaine": "vetement",
"note": "Ensemble de vêtements"
}
],
"synonymes_fr": [
"tenues",
"costume"
]
},
"oripeaux": {
"traductions": [
{
"confluent": "vekupaka",
"type": "composition",
"composition": "vek-u-paka",
"sens_litteral": "Mauvaise surface/vêtement",
"racines": [
"veku",
"paka"
],
"domaine": "vetement",
"note": "Vêtements en mauvais état"
}
],
"synonymes_fr": [
"haillons",
"guenilles"
]
},
"nu": {
"traductions": [
{
"confluent": "vekuvoli",
"type": "composition",
"composition": "vek-u-voli",
"sens_litteral": "Sans surface/vêtement",
"racines": [
"veku"
],
"domaine": "apparence",
"note": "Sans vêtement"
}
],
"synonymes_fr": [
"nudité",
"dénudé"
]
},
"exhiber nu": {
"traductions": [
{
"confluent": "silivekuvoli",
"type": "composition",
"composition": "sili-vek-u-voli",
"sens_litteral": "Montrer sans vêtement",
"racines": [
"sili",
"veku"
],
"domaine": "action",
"note": "Montrer la nudité"
}
]
},
"trancher": {
"traductions": [
{
"confluent": "bituki",
"type": "composition",
"composition": "bit-uki",
"sens_litteral": "Mouvement de dent/couper",
"racines": [
"bitu"
],
"domaine": "action",
"note": "Couper net (cheveux, corde, etc.)"
}
],
"synonymes_fr": [
"couper",
"sectionner"
]
},
"couper": {
"traductions": [
{
"confluent": "voliuki",
"type": "composition",
"composition": "voli-uki",
"sens_litteral": "Mouvement de séparation",
"racines": [],
"domaine": "action",
"note": "Séparer en deux"
}
],
"synonymes_fr": [
"découper",
"séparer"
]
},
"taille": {
"traductions": [
{
"confluent": "sanumako",
"type": "composition",
"composition": "san-u-mako",
"sens_litteral": "Grande mesure du corps",
"racines": [
"sanu",
"mako"
],
"domaine": "apparence",
"note": "Dimensions corporelles"
}
],
"synonymes_fr": [
"grandeur",
"stature"
]
},
"morphologie": {
"traductions": [
{
"confluent": "sanukova",
"type": "composition",
"composition": "san-u-kova",
"sens_litteral": "Forme du corps",
"racines": [
"sanu"
],
"domaine": "apparence",
"note": "Structure physique"
}
],
"synonymes_fr": [
"forme corporelle"
]
},
"correspondre": {
"traductions": [
{
"confluent": "kotavi",
"type": "composition",
"composition": "kota-vi",
"sens_litteral": "Être en confluence/accord",
"racines": [
"kota"
],
"domaine": "relation",
"note": "Adéquation de taille, compatibilité"
}
],
"synonymes_fr": [
"correspondance",
"être adapté",
"convenir"
]
},
"pâle": {
"traductions": [
{
"confluent": "miluveku",
"type": "composition",
"composition": "milu-veku",
"sens_litteral": "Peau blanche/pâle",
"racines": [
"milu",
"veku"
],
"domaine": "couleur_peau",
"note": "Couleur de peau claire (Enfants des Échos)"
}
],
"synonymes_fr": [
"pâleur",
"blancheur"
]
},
"allongé": {
"traductions": [
{
"confluent": "linumako",
"type": "composition",
"composition": "lin-u-mako",
"sens_litteral": "Grande ligne/longueur",
"racines": [
"linu",
"mako"
],
"domaine": "forme",
"note": "Forme corporelle étirée (membres allongés)"
}
],
"synonymes_fr": [
"allongée",
"étiré",
"long"
]
},
"aveugle": {
"traductions": [
{
"confluent": "silivoli",
"type": "composition",
"composition": "sili-voli",
"sens_litteral": "Sans regard/vue",
"racines": [
"sili"
],
"domaine": "handicap",
"note": "Perte de vision"
}
],
"synonymes_fr": [
"cécité",
"non-voyant"
]
},
"adaptation": {
"traductions": [
{
"confluent": "sanukotavi",
"type": "composition",
"composition": "san-u-kota-vi",
"sens_litteral": "Corps en confluence/harmonie",
"racines": [
"sanu",
"kota"
],
"domaine": "evolution",
"note": "Changements corporels pour s'adapter à l'environnement"
}
],
"synonymes_fr": [
"adapté",
"s'adapter"
]
},
"cape": {
"traductions": [
{
"confluent": "vekumako",
"type": "composition",
"composition": "vek-u-mako",
"sens_litteral": "Grand vêtement de surface",
"racines": [
"veku",
"mako"
],
"domaine": "vetement",
"note": "Vêtement ample qui couvre"
}
],
"synonymes_fr": [
"manteau",
"capes"
]
},
"ceinture": {
"traductions": [
{
"confluent": "nutulinu",
"type": "composition",
"composition": "nutu-linu",
"sens_litteral": "Ligne du ventre",
"racines": [
"nutu",
"linu"
],
"domaine": "vetement",
"note": "Lien autour de la taille"
}
],
"synonymes_fr": [
"ceintures"
]
},
"collier": {
"traductions": [
{
"confluent": "mutulinu",
"type": "composition",
"composition": "mutu-linu",
"sens_litteral": "Ligne du cou",
"racines": [
"muto",
"linu"
],
"domaine": "parure",
"note": "Objet porté autour du cou"
}
],
"synonymes_fr": [
"colliers"
]
},
"bracelet": {
"traductions": [
{
"confluent": "kanulinu",
"type": "composition",
"composition": "kan-u-linu",
"sens_litteral": "Ligne de bras/poignet",
"racines": [
"kanu",
"linu"
],
"domaine": "parure",
"note": "Objet porté au bras"
}
],
"synonymes_fr": [
"bracelets"
]
},
"peinture corporelle": {
"traductions": [
{
"confluent": "sanukova",
"type": "composition",
"composition": "sanu-kova",
"sens_litteral": "Gravure/motif sur le corps",
"racines": [
"sanu",
"kova"
],
"domaine": "parure",
"note": "Décorations peintes sur la peau"
}
],
"synonymes_fr": [
"tatouage",
"motifs corporels"
]
},
"cicatrice": {
"traductions": [
{
"confluent": "vekukova",
"type": "composition",
"composition": "vek-u-kova",
"sens_litteral": "Gravure sur la peau",
"racines": [
"veku",
"kova"
],
"domaine": "corps",
"note": "Marque permanente sur la peau"
}
],
"synonymes_fr": [
"cicatrices",
"balafre"
]
},
"barbe": {
"traductions": [
{
"confluent": "mukupupu",
"type": "composition",
"composition": "muka-pupu",
"sens_litteral": "Poils du visage",
"racines": [
"muka",
"pupu"
],
"domaine": "corps",
"note": "Pilosité faciale"
}
]
},
"coiffure": {
"traductions": [
{
"confluent": "pupukova",
"type": "composition",
"composition": "pupu-kova",
"sens_litteral": "Forme/arrangement des cheveux",
"racines": [
"pupu",
"kova"
],
"domaine": "apparence",
"note": "Style de cheveux"
}
],
"synonymes_fr": [
"coiffures"
]
},
"tresser": {
"traductions": [
{
"confluent": "linukotavi",
"type": "composition",
"composition": "linu-kota-vi",
"sens_litteral": "Faire confluencer des lignes",
"racines": [
"linu",
"kota"
],
"domaine": "action_artisanale",
"note": "Entrelacer (cheveux, fibres, cordes)"
}
],
"synonymes_fr": [
"tressage",
"entrelacer",
"natter"
]
},
"sale": {
"traductions": [
{
"confluent": "vekupaka",
"type": "composition",
"composition": "vek-u-paka",
"sens_litteral": "Mauvaise surface",
"racines": [
"veku",
"paka"
],
"domaine": "etat",
"note": "Non propre, souillé"
}
],
"synonymes_fr": [
"souillé",
"crasseux"
]
},
"propre": {
"traductions": [
{
"confluent": "vekupuli",
"type": "composition",
"composition": "vek-u-puli",
"sens_litteral": "Surface pure",
"racines": [
"veku"
],
"domaine": "etat",
"note": "Nettoyé, sans saleté"
}
],
"synonymes_fr": [
"propreté",
"pur",
"net"
]
}
}
}

105
scripts/add-final-roots.py Normal file
View File

@ -0,0 +1,105 @@
#!/usr/bin/env python3
"""
Ajoute les 6 dernières racines manquantes
"""
import json
from pathlib import Path
LEXIQUE_DIR = Path(__file__).parent.parent / "ancien-confluent" / "lexique"
RACINES_FILE = LEXIQUE_DIR / "02-racines-standards.json"
# Les 6 racines à ajouter
RACINES_A_AJOUTER = {
"ciel": {
"traductions": [{
"confluent": "zeru",
"type": "racine",
"forme_liee": "zer",
"domaine": "nature",
"note": "Ciel, voûte céleste - utilisé dans Ciels-clairs"
}],
"synonymes_fr": ["voûte céleste", "firmament"]
},
"presage": {
"traductions": [{
"confluent": "novi",
"type": "racine",
"forme_liee": "nov",
"domaine": "concept",
"note": "Présage, signe du futur"
}],
"synonymes_fr": ["augure", "signe"]
},
"faim": {
"traductions": [{
"confluent": "muta",
"type": "racine",
"forme_liee": "mut",
"domaine": "besoin",
"note": "Faim, manque, besoin de nourriture"
}],
"synonymes_fr": ["manque", "privation"]
},
"intimite": {
"traductions": [{
"confluent": "supu",
"type": "racine",
"forme_liee": "sup",
"domaine": "espace",
"note": "Intérieur, intimité, espace privé"
}],
"synonymes_fr": ["intérieur", "privé"]
},
"sale": {
"traductions": [{
"confluent": "selu",
"type": "racine",
"forme_liee": "sel",
"domaine": "qualificatif",
"note": "Salé, eau salée - distinct de salu (sel cristal)"
}],
"synonymes_fr": ["salé", "saumâtre"]
},
"charge": {
"traductions": [{
"confluent": "saki",
"type": "racine",
"forme_liee": "sak",
"domaine": "action",
"note": "Charge, fardeau, ce qu'on porte"
}],
"synonymes_fr": ["fardeau", "cargaison"]
}
}
def main():
print("🔧 Ajout des 6 dernières racines manquantes\n")
with open(RACINES_FILE, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f"Avant: {len(data['dictionnaire'])} entrées\n")
added = 0
for key_fr, entry in RACINES_A_AJOUTER.items():
if key_fr not in data['dictionnaire']:
mot = entry['traductions'][0]['confluent']
print(f" ✅ Ajout: {key_fr}{mot}")
data['dictionnaire'][key_fr] = entry
added += 1
else:
print(f" ⚠️ Existe déjà: {key_fr}")
print(f"\n{added} racines ajoutées")
print(f"Après: {len(data['dictionnaire'])} entrées")
# Sauvegarder
with open(RACINES_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write('\n')
print(f"\n💾 Fichier sauvegardé")
if __name__ == "__main__":
main()

View File

@ -0,0 +1,125 @@
#!/usr/bin/env python3
"""
Ajoute les 8 racines manquantes qui sont utilisées dans le lexique
"""
import json
from pathlib import Path
LEXIQUE_DIR = Path(__file__).parent.parent / "ancien-confluent" / "lexique"
RACINES_FILE = LEXIQUE_DIR / "02-racines-standards.json"
# Les 8 racines à ajouter (VRAIMENT manquantes, utilisées dans le lexique)
RACINES_A_AJOUTER = {
"personne": {
"traductions": [{
"confluent": "toli",
"type": "racine",
"forme_liee": "tol",
"domaine": "social",
"note": "Personne, agent, individu - utilisé dans tous les rôles"
}],
"synonymes_fr": ["agent", "individu"]
},
"nourriture": {
"traductions": [{
"confluent": "nutu",
"type": "racine",
"forme_liee": "nut",
"domaine": "alimentation",
"note": "Nourriture, aliment - racine fondamentale"
}],
"synonymes_fr": ["aliment", "manger"]
},
"bois_materiau": {
"traductions": [{
"confluent": "vito",
"type": "racine",
"forme_liee": "vit",
"domaine": "materiau",
"note": "Bois (matériau de construction) - distinct de viku (forêt)"
}],
"synonymes_fr": ["bois de construction"]
},
"garder": {
"traductions": [{
"confluent": "konu",
"type": "racine",
"forme_liee": "kon",
"domaine": "action",
"note": "Garder, protéger, maintenir - racine sécuritaire"
}],
"synonymes_fr": ["protéger", "maintenir", "défendre"]
},
"duree": {
"traductions": [{
"confluent": "aika",
"type": "racine_sacree",
"forme_liee": "aik",
"domaine": "temporel",
"note": "Temps, durée, époque - du finnois 'aika'"
}],
"synonymes_fr": ["temps", "époque", "ère"]
},
"souvenir": {
"traductions": [{
"confluent": "nemu",
"type": "racine",
"forme_liee": "nem",
"domaine": "mental",
"note": "Mémoire, souvenir - distinct de memu (mémoire collective)"
}],
"synonymes_fr": ["mémoire", "rappel"]
},
"mauvais": {
"traductions": [{
"confluent": "paka",
"type": "racine",
"forme_liee": "pak",
"domaine": "qualificatif",
"note": "Mauvais, négatif, malfaisant - inspiration basque"
}],
"synonymes_fr": ["négatif", "mal", "malfaisant"]
},
"demeurer": {
"traductions": [{
"confluent": "tuli",
"type": "racine",
"forme_liee": "tul",
"domaine": "etat",
"note": "Être, rester, demeurer - du finnois 'tulla'"
}],
"synonymes_fr": ["rester", "être", "habiter"]
}
}
def main():
print("🔧 Ajout des 8 racines manquantes\n")
with open(RACINES_FILE, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f"Avant: {len(data['dictionnaire'])} entrées\n")
added = 0
for key_fr, entry in RACINES_A_AJOUTER.items():
if key_fr not in data['dictionnaire']:
mot = entry['traductions'][0]['confluent']
print(f" ✅ Ajout: {key_fr}{mot}")
data['dictionnaire'][key_fr] = entry
added += 1
else:
print(f" ⚠️ Existe déjà: {key_fr}")
print(f"\n{added} racines ajoutées")
print(f"Après: {len(data['dictionnaire'])} entrées")
# Sauvegarder
with open(RACINES_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write('\n')
print(f"\n💾 Fichier sauvegardé")
if __name__ == "__main__":
main()

398
scripts/audit-lexique.js Normal file
View File

@ -0,0 +1,398 @@
#!/usr/bin/env node
/**
* Script d'audit du lexique Confluent
* Vérifie que tous les mots respectent les règles linguistiques
*/
const fs = require('fs');
const path = require('path');
const LEXIQUE_DIR = path.join(__dirname, '../ancien-confluent/lexique');
// Règles phonétiques
const CONSONNES_STANDARD = ['b', 'k', 'l', 'm', 'n', 'p', 's', 't', 'v', 'z'];
const CONSONNES_RARES = ['r', 'd', 'h', 'g']; // Sons "bruts" à éviter mais tolérés
const CONSONNES_INTERDITES = ['c', 'f', 'j', 'q', 'w', 'x', 'y'];
const VOYELLES_ACTIVES = ['a', 'e', 'i', 'o', 'u'];
const VOYELLES_RESERVEES = ['y', 'é', 'è'];
// Les 16 liaisons sacrées
const LIAISONS_SACREES = [
'i', 'ie', 'ii', 'iu', // I - Agentivité
'u', 'ui', // U - Appartenance
'a', 'aa', 'ae', 'ao', // A - Relation
'o', 'oa', // O - Tension
'e', 'ei', 'ea', 'eo' // E - Dimension
];
let errors = [];
let warnings = [];
let stats = {
total_mots: 0,
racines_sacrees: 0,
racines_standards: 0,
compositions: 0,
erreurs: 0,
avertissements: 0,
consonnes_rares_utilisees: 0,
mots_avec_consonnes_rares: []
};
/**
* Vérifie si un caractère est une consonne valide
*/
function estConsonneValide(c) {
return CONSONNES_STANDARD.includes(c) || CONSONNES_RARES.includes(c);
}
/**
* Vérifie si un caractère est une consonne rare
*/
function estConsonneRare(c) {
return CONSONNES_RARES.includes(c);
}
/**
* Vérifie si un caractère est une consonne interdite
*/
function estConsonneInterdite(c) {
return CONSONNES_INTERDITES.includes(c);
}
/**
* Vérifie si un caractère est une voyelle active
*/
function estVoyelleActive(c) {
return VOYELLES_ACTIVES.includes(c);
}
/**
* Vérifie si un caractère est une voyelle réservée
*/
function estVoyelleReservee(c) {
return VOYELLES_RESERVEES.includes(c);
}
/**
* Vérifie le format d'un mot (CV pour racines, CVCVC pour verbes)
*/
function verifierFormatCV(mot, file, motFr, type) {
const chars = mot.split('');
let hasConsonneRare = false;
// Vérifier les espaces (invalides)
if (mot.includes(' ')) {
errors.push(`[${file}] "${motFr}" → "${mot}": Caractère invalide ' '`);
return false;
}
// Vérifier les caractères invalides
for (let i = 0; i < chars.length; i++) {
const c = chars[i];
if (c === '-') continue; // Tirets OK pour compositions
if (estConsonneRare(c)) {
hasConsonneRare = true;
} else if (estConsonneInterdite(c)) {
errors.push(`[${file}] "${motFr}" → "${mot}": Consonne interdite '${c}'`);
return false;
} else if (estVoyelleReservee(c)) {
errors.push(`[${file}] "${motFr}" → "${mot}": Voyelle réservée '${c}' (y, é, è interdits)`);
return false;
} else if (!estConsonneValide(c) && !estVoyelleActive(c)) {
errors.push(`[${file}] "${motFr}" → "${mot}": Caractère invalide '${c}'`);
return false;
}
}
// Compter les consonnes rares
if (hasConsonneRare) {
stats.consonnes_rares_utilisees++;
stats.mots_avec_consonnes_rares.push({mot, file, motFr});
}
// Retirer les tirets (pour les compositions)
const motSansTirets = mot.replace(/-/g, '');
if (motSansTirets.length < 2) {
errors.push(`[${file}] "${motFr}" → "${mot}": Trop court (minimum 2 caractères)`);
return false;
}
const avantDernier = motSansTirets[motSansTirets.length - 2];
const dernier = motSansTirets[motSansTirets.length - 1];
// Les VERBES finissent par CVCVC (consonne finale)
// Les RACINES finissent par CV (voyelle finale)
if (type === 'verbe' || type === 'verbe_irregulier') {
// Verbes: structure CVCVC (5 lettres, finit par consonne)
if (!estConsonneValide(dernier)) {
errors.push(`[${file}] "${motFr}" → "${mot}": Verbe doit finir par consonne (CVCVC), mais dernier caractère '${dernier}' n'est pas une consonne`);
return false;
}
} else {
// Racines et compositions: finissent par CV (voyelle)
if (!estConsonneValide(avantDernier)) {
errors.push(`[${file}] "${motFr}" → "${mot}": Doit finir par CV (consonne+voyelle), mais avant-dernier caractère '${avantDernier}' n'est pas une consonne`);
return false;
}
if (!estVoyelleActive(dernier)) {
errors.push(`[${file}] "${motFr}" → "${mot}": Doit finir par CV (consonne+voyelle), mais dernier caractère '${dernier}' n'est pas une voyelle`);
return false;
}
}
return true;
}
/**
* Vérifie si une racine est sacrée (commence par voyelle)
*/
function estRacineSacree(mot) {
return estVoyelleActive(mot[0]);
}
/**
* Charge toutes les racines du lexique
*/
function chargerToutesLesRacines() {
const racines = new Map();
const files = fs.readdirSync(LEXIQUE_DIR).filter(f => f.endsWith('.json'));
files.forEach(file => {
const filePath = path.join(LEXIQUE_DIR, file);
const content = JSON.parse(fs.readFileSync(filePath, 'utf8'));
if (!content.dictionnaire) return;
Object.entries(content.dictionnaire).forEach(([motFr, data]) => {
if (!data.traductions) return;
data.traductions.forEach(trad => {
// Charger les racines explicites
if (trad.type === 'racine' || trad.type === 'racine_sacree') {
racines.set(trad.confluent, {
mot_fr: motFr,
forme_liee: trad.forme_liee,
file: file
});
}
// Charger les VERBES eux-mêmes comme racines (milak, kitan, etc.)
if (trad.type === 'verbe') {
racines.set(trad.confluent, {
mot_fr: motFr,
forme_liee: trad.forme_liee,
file: file,
source: 'verbe'
});
// Charger aussi la racine du verbe si elle existe
if (trad.racine) {
racines.set(trad.racine, {
mot_fr: motFr,
forme_liee: trad.forme_liee,
file: file,
source: 'verbe_racine'
});
}
}
// Charger les COMPOSITIONS comme racines valides (uraakota, etc.)
if (trad.type === 'composition' || trad.type === 'racine_sacree_composee') {
racines.set(trad.confluent, {
mot_fr: motFr,
forme_liee: trad.forme_liee || trad.confluent.slice(0, -1),
file: file,
source: 'composition'
});
}
// Charger les mots grammaticaux (négation, particules, démonstratifs, etc.) comme racines valides
if (trad.type === 'negation' || trad.type === 'particule' || trad.type === 'interrogation' || trad.type === 'demonstratif') {
racines.set(trad.confluent, {
mot_fr: motFr,
forme_liee: trad.forme_liee || trad.confluent.slice(0, -1),
file: file,
source: 'grammaire'
});
}
});
});
});
return racines;
}
/**
* Vérifie une composition
*/
function verifierComposition(trad, file, motFr, toutesLesRacines) {
if (!trad.composition) {
warnings.push(`[${file}] "${motFr}" → "${trad.confluent}": Type 'composition' mais pas de champ 'composition'`);
return;
}
if (!trad.racines || trad.racines.length === 0) {
warnings.push(`[${file}] "${motFr}" → "${trad.confluent}": Type 'composition' mais pas de champ 'racines'`);
return;
}
// Vérifier que les racines existent
trad.racines.forEach(racine => {
if (!toutesLesRacines.has(racine)) {
errors.push(`[${file}] "${motFr}" → "${trad.confluent}": Utilise racine inexistante "${racine}"`);
}
});
// Vérifier le format de composition
const parties = trad.composition.split('-');
// Vérifier les liaisons (les parties avec 1-2 lettres entre les racines)
parties.forEach((partie, index) => {
if (partie.length <= 2 && index > 0 && index < parties.length - 1) {
// C'est probablement une liaison
if (!LIAISONS_SACREES.includes(partie) && partie !== 'u' && partie !== 'a' && partie !== 'i' && partie !== 'o' && partie !== 'e') {
warnings.push(`[${file}] "${motFr}" → "${trad.confluent}": Liaison "${partie}" dans composition "${trad.composition}" n'est pas une liaison sacrée standard`);
}
}
});
}
/**
* Vérifie la forme liée
*/
function verifierFormeLiee(trad, file, motFr) {
if (trad.type !== 'racine' && trad.type !== 'racine_sacree') {
return;
}
if (!trad.forme_liee) {
warnings.push(`[${file}] "${motFr}" → "${trad.confluent}": Racine sans 'forme_liee'`);
return;
}
// La forme liée devrait être la racine sans la dernière voyelle
const attendu = trad.confluent.slice(0, -1);
if (trad.forme_liee !== attendu) {
warnings.push(`[${file}] "${motFr}" → "${trad.confluent}": forme_liee="${trad.forme_liee}" devrait être "${attendu}"`);
}
}
/**
* Audit d'un fichier
*/
function auditerFichier(file, toutesLesRacines) {
const filePath = path.join(LEXIQUE_DIR, file);
const content = JSON.parse(fs.readFileSync(filePath, 'utf8'));
if (!content.dictionnaire) return;
Object.entries(content.dictionnaire).forEach(([motFr, data]) => {
if (!data.traductions) return;
data.traductions.forEach(trad => {
stats.total_mots++;
// Vérifier le format CV/CVCVC selon le type
if (!verifierFormatCV(trad.confluent, file, motFr, trad.type)) {
stats.erreurs++;
return;
}
// Vérifier le type de racine
if (trad.type === 'racine' || trad.type === 'racine_sacree') {
const estSacree = estRacineSacree(trad.confluent);
if (trad.type === 'racine_sacree' && !estSacree) {
errors.push(`[${file}] "${motFr}" → "${trad.confluent}": Marqué 'racine_sacree' mais commence par consonne`);
stats.erreurs++;
}
if (trad.type === 'racine' && estSacree) {
warnings.push(`[${file}] "${motFr}" → "${trad.confluent}": Marqué 'racine' mais commence par voyelle (devrait être 'racine_sacree')`);
stats.avertissements++;
}
if (estSacree) {
stats.racines_sacrees++;
} else {
stats.racines_standards++;
}
// Vérifier forme liée
verifierFormeLiee(trad, file, motFr);
}
// Vérifier les compositions
if (trad.type === 'composition' || trad.type === 'racine_sacree_composee') {
stats.compositions++;
verifierComposition(trad, file, motFr, toutesLesRacines);
}
});
});
}
/**
* Fonction principale
*/
function main() {
console.log('🔍 Audit du lexique Confluent\n');
// Charger toutes les racines d'abord
console.log('📖 Chargement des racines...');
const toutesLesRacines = chargerToutesLesRacines();
console.log(` ${toutesLesRacines.size} racines chargées\n`);
// Auditer chaque fichier (sauf 00-grammaire pour l'audit, mais on l'a chargé pour les racines)
const files = fs.readdirSync(LEXIQUE_DIR)
.filter(f => f.endsWith('.json') && !f.startsWith('00-grammaire'));
console.log('🔎 Audit des fichiers...\n');
files.forEach(file => {
auditerFichier(file, toutesLesRacines);
});
// Vérifier le ratio de consonnes rares
const ratioConsonnesRares = (stats.consonnes_rares_utilisees / stats.total_mots) * 100;
if (ratioConsonnesRares > 10) {
warnings.push(`⚠️ ATTENTION: ${ratioConsonnesRares.toFixed(1)}% des mots utilisent des consonnes rares (r, d, h, g). Recommandé: <10%`);
}
// Afficher les résultats
console.log('\n📊 STATISTIQUES:\n');
console.log(` Total de mots vérifiés: ${stats.total_mots}`);
console.log(` Racines sacrées: ${stats.racines_sacrees} (${Math.round(stats.racines_sacrees / (stats.racines_sacrees + stats.racines_standards) * 100)}%)`);
console.log(` Racines standards: ${stats.racines_standards} (${Math.round(stats.racines_standards / (stats.racines_sacrees + stats.racines_standards) * 100)}%)`);
console.log(` Compositions: ${stats.compositions}`);
console.log(` Consonnes rares utilisées: ${stats.consonnes_rares_utilisees} (${ratioConsonnesRares.toFixed(1)}%)`);
console.log(` Erreurs: ${errors.length}`);
console.log(` Avertissements: ${warnings.length}`);
if (errors.length > 0) {
console.log('\n❌ ERREURS:\n');
errors.forEach(err => console.log(` ${err}`));
}
if (warnings.length > 0) {
console.log('\n⚠ AVERTISSEMENTS:\n');
warnings.forEach(warn => console.log(` ${warn}`));
}
if (errors.length === 0 && warnings.length === 0) {
console.log('\n✅ Aucune erreur détectée ! Le lexique est conforme.\n');
} else {
console.log('');
}
// Code de sortie
process.exit(errors.length > 0 ? 1 : 0);
}
if (require.main === module) {
main();
}
module.exports = { verifierFormatCV, estRacineSacree };

258
scripts/check-duplicates.js Normal file
View File

@ -0,0 +1,258 @@
#!/usr/bin/env node
/**
* Script de vérification des doublons dans le lexique Confluent
* Gère les accents, apostrophes et variantes orthographiques
*/
const fs = require('fs');
const path = require('path');
const LEXIQUE_DIR = path.join(__dirname, '../ancien-confluent/lexique');
/**
* Normalise un mot français pour la comparaison
* - Retire accents
* - Convertit en minuscules
* - Normalise les apostrophes
*/
function normalizeWord(word) {
return word
.toLowerCase()
.normalize('NFD') // Décompose les caractères accentués
.replace(/[\u0300-\u036f]/g, '') // Retire les diacritiques
.replace(/[''`]/g, "'") // Normalise les apostrophes
.replace(/[œ]/g, 'oe')
.replace(/[æ]/g, 'ae')
.trim();
}
/**
* Extrait tous les mots français d'un fichier lexique
*/
function extractWordsFromFile(filePath) {
const content = fs.readFileSync(filePath, 'utf8');
const data = JSON.parse(content);
const words = new Map(); // normalized -> {original, file, synonyms}
if (!data.dictionnaire) return words;
Object.keys(data.dictionnaire).forEach(mot => {
const normalized = normalizeWord(mot);
if (!words.has(normalized)) {
words.set(normalized, []);
}
words.get(normalized).push({
original: mot,
file: path.basename(filePath),
hasSynonyms: !!data.dictionnaire[mot].synonymes_fr,
synonyms: data.dictionnaire[mot].synonymes_fr || []
});
// Ajoute aussi les synonymes
if (data.dictionnaire[mot].synonymes_fr) {
data.dictionnaire[mot].synonymes_fr.forEach(syn => {
const synNormalized = normalizeWord(syn);
if (!words.has(synNormalized)) {
words.set(synNormalized, []);
}
words.get(synNormalized).push({
original: syn,
file: path.basename(filePath),
isSynonymOf: mot,
parentNormalized: normalized
});
});
}
});
return words;
}
/**
* Charge tous les lexiques
*/
function loadAllLexicons() {
const files = fs.readdirSync(LEXIQUE_DIR)
.filter(f => f.endsWith('.json') && !f.startsWith('00-grammaire'));
const allWords = new Map();
files.forEach(file => {
const filePath = path.join(LEXIQUE_DIR, file);
const words = extractWordsFromFile(filePath);
words.forEach((entries, normalized) => {
if (!allWords.has(normalized)) {
allWords.set(normalized, []);
}
allWords.get(normalized).push(...entries);
});
});
return allWords;
}
/**
* Vérifie si un mot existe déjà
*/
function checkWord(word, allWords) {
const normalized = normalizeWord(word);
const found = allWords.get(normalized);
if (!found || found.length === 0) {
return { exists: false, normalized };
}
// Sépare les entrées principales des synonymes
const mainEntries = found.filter(e => !e.isSynonymOf);
const synonymEntries = found.filter(e => e.isSynonymOf);
return {
exists: true,
normalized,
mainEntries,
synonymEntries,
count: found.length
};
}
/**
* Trouve les doublons (même mot normalisé dans plusieurs fichiers)
*/
function findDuplicates(allWords) {
const duplicates = [];
allWords.forEach((entries, normalized) => {
// Filtre les entrées principales (pas les synonymes)
const mainEntries = entries.filter(e => !e.isSynonymOf);
if (mainEntries.length > 1) {
// Vérifie si c'est dans des fichiers différents
const files = [...new Set(mainEntries.map(e => e.file))];
if (files.length > 1) {
duplicates.push({
normalized,
entries: mainEntries
});
}
}
});
return duplicates;
}
/**
* Fonction principale
*/
function main() {
const args = process.argv.slice(2);
const command = args[0];
console.log('🔍 Chargement des lexiques...\n');
const allWords = loadAllLexicons();
console.log(`${allWords.size} mots chargés (formes normalisées)\n`);
if (command === 'check') {
// Vérifier un ou plusieurs mots
const wordsToCheck = args.slice(1);
if (wordsToCheck.length === 0) {
console.error('❌ Usage: node check-duplicates.js check <mot1> [mot2] ...');
process.exit(1);
}
console.log('📋 Vérification des mots:\n');
wordsToCheck.forEach(word => {
const result = checkWord(word, allWords);
if (!result.exists) {
console.log(`✨ "${word}" (normalisé: "${result.normalized}") - NON TROUVÉ`);
} else {
console.log(`⚠️ "${word}" (normalisé: "${result.normalized}") - EXISTE DÉJÀ:`);
if (result.mainEntries.length > 0) {
console.log(' Entrées principales:');
result.mainEntries.forEach(e => {
console.log(` - "${e.original}" dans ${e.file}`);
if (e.synonyms.length > 0) {
console.log(` Synonymes: ${e.synonyms.join(', ')}`);
}
});
}
if (result.synonymEntries.length > 0) {
console.log(' Comme synonyme de:');
result.synonymEntries.forEach(e => {
console.log(` - "${e.isSynonymOf}" dans ${e.file}`);
});
}
}
console.log('');
});
} else if (command === 'duplicates') {
// Trouver tous les doublons
const duplicates = findDuplicates(allWords);
if (duplicates.length === 0) {
console.log('✅ Aucun doublon trouvé!');
} else {
console.log(`⚠️ ${duplicates.length} doublons trouvés:\n`);
duplicates.forEach(dup => {
console.log(`"${dup.normalized}":`);
dup.entries.forEach(e => {
console.log(` - "${e.original}" dans ${e.file}`);
});
console.log('');
});
}
} else if (command === 'stats') {
// Statistiques
const fileStats = new Map();
allWords.forEach((entries, normalized) => {
entries.forEach(e => {
if (!e.isSynonymOf) {
if (!fileStats.has(e.file)) {
fileStats.set(e.file, 0);
}
fileStats.set(e.file, fileStats.get(e.file) + 1);
}
});
});
console.log('📊 Statistiques par fichier:\n');
const sorted = [...fileStats.entries()].sort((a, b) => b[1] - a[1]);
let total = 0;
sorted.forEach(([file, count]) => {
console.log(` ${file.padEnd(35)} ${count.toString().padStart(4)} mots`);
total += count;
});
console.log(` ${''.padEnd(35, '-')} ${'-'.repeat(4)}`);
console.log(` ${'TOTAL'.padEnd(35)} ${total.toString().padStart(4)} mots`);
} else {
console.log(`Usage:
node check-duplicates.js check <mot1> [mot2] ... Vérifie si des mots existent
node check-duplicates.js duplicates Liste tous les doublons
node check-duplicates.js stats Affiche les statistiques
`);
}
}
// Export pour utilisation comme module
if (require.main === module) {
main();
} else {
module.exports = {
normalizeWord,
loadAllLexicons,
checkWord,
findDuplicates
};
}

67
scripts/clean-doublons.py Normal file
View File

@ -0,0 +1,67 @@
#!/usr/bin/env python3
"""
Supprime les doublons dans 02-racines-standards.json
Garde les versions originales, supprime les nouvelles clés ajoutées
"""
import json
from pathlib import Path
LEXIQUE_DIR = Path(__file__).parent.parent / "ancien-confluent" / "lexique"
RACINES_FILE = LEXIQUE_DIR / "02-racines-standards.json"
# Clés à supprimer (les nouvelles versions qu'on a ajoutées)
DOUBLONS_A_SUPPRIMER = [
"agent", # doublon de "personne" (si elle existe ailleurs)
"proteger", # garder si pas de doublon
"duree", # doublon de "temps"
"materiau_bois", # doublon de "bois"
"negatif", # doublon de "mauvais"
"aliment", # garder si pas de doublon
"demeurer", # garder si pas de doublon
"souvenir" # doublon de "memoire"
]
def main():
print("🔧 Nettoyage des doublons dans 02-racines-standards.json\n")
with open(RACINES_FILE, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f"Avant: {len(data['dictionnaire'])} entrées\n")
# Afficher les mots confluent et leurs clés
mots_conf = {}
for key, value in data['dictionnaire'].items():
mot = value['traductions'][0]['confluent']
if mot not in mots_conf:
mots_conf[mot] = []
mots_conf[mot].append(key)
# Trouver les vrais doublons (même mot confluent)
print("Doublons trouvés (même mot confluent):")
for mot, cles in sorted(mots_conf.items()):
if len(cles) > 1:
print(f" {mot}: {', '.join(cles)}")
print("\nSuppression des clés en doublon:")
removed = 0
for key in DOUBLONS_A_SUPPRIMER:
if key in data['dictionnaire']:
mot = data['dictionnaire'][key]['traductions'][0]['confluent']
print(f"{key} ({mot})")
del data['dictionnaire'][key]
removed += 1
print(f"\n{removed} doublons supprimés")
print(f"Après: {len(data['dictionnaire'])} entrées")
# Sauvegarder
with open(RACINES_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write('\n')
print(f"\n💾 Fichier sauvegardé")
if __name__ == "__main__":
main()

View File

@ -0,0 +1,53 @@
#!/usr/bin/env python3
"""
Corrige les 5 autres erreurs de format
"""
import json
from pathlib import Path
LEXIQUE_DIR = Path(__file__).parent.parent / "ancien-confluent" / "lexique"
# Corrections à appliquer: (fichier, ancien_mot, nouveau_mot, mots_fr)
CORRECTIONS = [
("07-emotions.json", "koliukitan", "koliukita", ["gratitude"]),
("09-institutions.json", "nutuumilis", "nutuumili", ["Maison des Decouvertes"]),
("11-armes-outils.json", "pikiualk", "pikiuarku", ["fleche"]),
("23-nourriture.json", "mukunekas", "mukuneka", ["cuisiner"]),
("23-nourriture.json", "ulapis", "ulapisu", ["infuser", "boire"]),
]
def main():
print("🔧 Correction des erreurs de format\n")
for fichier, ancien, nouveau, mots_fr in CORRECTIONS:
file_path = LEXIQUE_DIR / fichier
with open(file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
modified = False
for mot_fr in mots_fr:
if mot_fr in data['dictionnaire']:
for trad in data['dictionnaire'][mot_fr]['traductions']:
if trad.get('confluent') == ancien:
print(f"[{fichier}] \"{mot_fr}\": {ancien}{nouveau}")
trad['confluent'] = nouveau
# Mettre à jour la composition si elle contient l'ancien mot
if 'composition' in trad:
trad['composition'] = trad['composition'].replace(ancien, nouveau)
modified = True
if modified:
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write('\n')
print(f"{fichier} sauvegardé\n")
print("✅ Toutes les corrections appliquées")
if __name__ == "__main__":
main()

View File

@ -0,0 +1,58 @@
#!/usr/bin/env python3
"""
Répare le fichier 02-racines-standards.json :
- Déplace les 8 racines de "pronoms" vers "dictionnaire"
- Garde tous les pronoms dans "pronoms"
"""
import json
from pathlib import Path
# Chemins
LEXIQUE_DIR = Path(__file__).parent.parent / "ancien-confluent" / "lexique"
RACINES_FILE = LEXIQUE_DIR / "02-racines-standards.json"
# Les 8 racines à déplacer de pronoms vers dictionnaire
RACINES_A_DEPLACER = {
"agent": "toli",
"proteger": "konu",
"duree": "aika",
"materiau_bois": "vito",
"negatif": "paka",
"aliment": "nutu",
"demeurer": "tuli",
"souvenir": "nemu"
}
def main():
print("🔧 Réparation du fichier 02-racines-standards.json\n")
# Charger le fichier
with open(RACINES_FILE, 'r', encoding='utf-8') as f:
data = json.load(f)
print(f"Avant: {len(data['dictionnaire'])} entrées dans dictionnaire")
print(f"Avant: {len(data['pronoms'])} entrées dans pronoms\n")
# Déplacer les racines
moved = 0
for key_fr, mot_conf in RACINES_A_DEPLACER.items():
if key_fr in data['pronoms']:
print(f" Déplacement: {key_fr} ({mot_conf})")
data['dictionnaire'][key_fr] = data['pronoms'][key_fr]
del data['pronoms'][key_fr]
moved += 1
print(f"\n{moved} racines déplacées")
print(f"Après: {len(data['dictionnaire'])} entrées dans dictionnaire")
print(f"Après: {len(data['pronoms'])} entrées dans pronoms")
# Sauvegarder
with open(RACINES_FILE, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
f.write('\n')
print(f"\n💾 Fichier sauvegardé: {RACINES_FILE}")
if __name__ == "__main__":
main()

View File

@ -0,0 +1,160 @@
#!/usr/bin/env node
/**
* Remplace les consonnes rares dans les mots NON-ESSENTIELS
* Garde les consonnes rares pour:
* - Racines sacrées (ura, ora, etc.)
* - Noms propres importants (castes, lieux)
* - Mots "mystiques" ou "étrangers"
*/
const fs = require('fs');
const path = require('path');
const LEXIQUE_DIR = path.join(__dirname, '../ancien-confluent/lexique');
// Racines et mots à PRÉSERVER avec consonnes rares (mystique/sacré)
const PRESERVE = new Set([
// Racines sacrées fondamentales
'ura', 'ora', 'oski', 'onaki', 'umi', 'urusi',
// Noms propres de castes (garder l'identité)
'nakuura', 'oraumi', 'akoazana',
// Noms propres de lieux majeurs
'uraakota', 'vukuura',
// Concepts mystiques/sacrés
'kori', // cœur (central)
'sora', // clair/lumineux (lié à ora)
'arku', // arc (objet sacré)
'riku', // interrogation (grammaire)
// Mots "étrangers" ou concepts chelou (garder le son bizarre)
'urusi', 'zerusora', 'aru', 'garu', 'hayo', 'hayak'
]);
// Map de remplacement consonne rare → consonne standard
const REPLACE_MAP = {
'r': 'l', // r → l (liquide proche)
'd': 't', // d → t (occlusive proche)
'h': 'k', // h → k
'g': 'k' // g → k
};
function shouldPreserve(mot, motFr, type) {
// Préserver si dans la liste
if (PRESERVE.has(mot)) return true;
// Préserver les racines sacrées
if (type === 'racine_sacree') return true;
// Préserver certains noms propres
if (type === 'nom_propre' && (motFr.includes('Enfants') || motFr.includes('Voix'))) return true;
return false;
}
function replaceRareConsonants(mot) {
let result = mot;
Object.entries(REPLACE_MAP).forEach(([rare, standard]) => {
result = result.replace(new RegExp(rare, 'g'), standard);
});
return result;
}
function processFile(file) {
const filePath = path.join(LEXIQUE_DIR, file);
const content = JSON.parse(fs.readFileSync(filePath, 'utf8'));
if (!content.dictionnaire) return { modified: 0, preserved: 0 };
let modified = 0;
let preserved = 0;
Object.entries(content.dictionnaire).forEach(([motFr, data]) => {
if (!data.traductions) return;
data.traductions.forEach(trad => {
const hasRare = /[rdgh]/.test(trad.confluent);
if (!hasRare) return;
if (shouldPreserve(trad.confluent, motFr, trad.type)) {
preserved++;
return;
}
// Remplacer
const oldMot = trad.confluent;
const newMot = replaceRareConsonants(oldMot);
if (oldMot !== newMot) {
console.log(` [${file}] "${motFr}": ${oldMot}${newMot}`);
trad.confluent = newMot;
// Mettre à jour forme_liee si elle existe
if (trad.forme_liee) {
trad.forme_liee = replaceRareConsonants(trad.forme_liee);
}
// Mettre à jour racine si elle existe (verbes)
if (trad.racine) {
trad.racine = replaceRareConsonants(trad.racine);
}
// Mettre à jour composition si elle existe
if (trad.composition) {
trad.composition = replaceRareConsonants(trad.composition);
}
// Mettre à jour racines array si elle existe
if (trad.racines) {
trad.racines = trad.racines.map(r => {
if (PRESERVE.has(r)) return r; // Ne pas toucher aux racines préservées
return replaceRareConsonants(r);
});
}
modified++;
}
});
});
// Sauvegarder le fichier modifié
if (modified > 0) {
fs.writeFileSync(filePath, JSON.stringify(content, null, 2) + '\n', 'utf8');
}
return { modified, preserved };
}
function main() {
const files = fs.readdirSync(LEXIQUE_DIR)
.filter(f => f.endsWith('.json'))
.filter(f => !f.startsWith('00-grammaire')); // Ne pas toucher la grammaire
console.log('🔧 Remplacement des consonnes rares\n');
console.log('Consonnes rares préservées dans les mots sacrés/mystiques\n');
let totalModified = 0;
let totalPreserved = 0;
files.forEach(file => {
const { modified, preserved } = processFile(file);
totalModified += modified;
totalPreserved += preserved;
if (modified > 0 || preserved > 0) {
console.log(`\n[${file}] ${modified} modifiés, ${preserved} préservés`);
}
});
console.log(`\n✅ Terminé:`);
console.log(` ${totalModified} mots modifiés`);
console.log(` ${totalPreserved} mots préservés (sacrés/mystiques)`);
console.log('\n💡 Relancez l\'audit pour voir le nouveau ratio de consonnes rares\n');
}
if (require.main === module) {
main();
}

View File

@ -0,0 +1,102 @@
#!/usr/bin/env node
/**
* Liste les mots utilisant des consonnes rares (r, d, h, g)
* et suggère des remplacements
*/
const fs = require('fs');
const path = require('path');
const LEXIQUE_DIR = path.join(__dirname, '../ancien-confluent/lexique');
const CONSONNES_RARES = ['r', 'd', 'h', 'g'];
const CONSONNES_STANDARD = ['b', 'k', 'l', 'm', 'n', 'p', 's', 't', 'v', 'z'];
// Map de remplacement suggéré
const REPLACEMENTS = {
'r': ['l', 't', 'k'], // r → l (le plus proche phonétiquement)
'd': ['t', 'k'], // d → t (le plus proche)
'h': ['k', 's'], // h → k ou s
'g': ['k', 'v'] // g → k ou v
};
function containsRareConsonant(mot) {
return CONSONNES_RARES.some(c => mot.includes(c));
}
function getRareConsonants(mot) {
return CONSONNES_RARES.filter(c => mot.includes(c));
}
function suggestReplacement(mot, rareChar) {
const replacements = REPLACEMENTS[rareChar] || [];
return replacements.map(r => mot.replace(new RegExp(rareChar, 'g'), r));
}
function main() {
const files = fs.readdirSync(LEXIQUE_DIR).filter(f => f.endsWith('.json'));
const motsAvecConsonnesRares = [];
files.forEach(file => {
const filePath = path.join(LEXIQUE_DIR, file);
const content = JSON.parse(fs.readFileSync(filePath, 'utf8'));
if (!content.dictionnaire) return;
Object.entries(content.dictionnaire).forEach(([motFr, data]) => {
if (!data.traductions) return;
data.traductions.forEach(trad => {
if (containsRareConsonant(trad.confluent)) {
const rares = getRareConsonants(trad.confluent);
motsAvecConsonnesRares.push({
file,
motFr,
confluent: trad.confluent,
type: trad.type,
rareConsonants: rares,
suggestions: rares.flatMap(r => suggestReplacement(trad.confluent, r))
});
}
});
});
});
// Grouper par consonne rare
console.log(`\n📊 ${motsAvecConsonnesRares.length} mots avec consonnes rares (r, d, h, g)\n`);
['r', 'd', 'h', 'g'].forEach(rare => {
const motsAvec = motsAvecConsonnesRares.filter(m => m.rareConsonants.includes(rare));
if (motsAvec.length === 0) return;
console.log(`\n━━━ Consonne rare: ${rare.toUpperCase()} (${motsAvec.length} mots) ━━━\n`);
motsAvec.forEach(m => {
console.log(`[${m.file}]`);
console.log(` "${m.motFr}" → ${m.confluent} (${m.type})`);
console.log(` Suggestions: ${m.suggestions.join(', ')}`);
console.log();
});
});
// Résumé par fichier
console.log('\n━━━ Résumé par fichier ━━━\n');
const parFichier = {};
motsAvecConsonnesRares.forEach(m => {
parFichier[m.file] = (parFichier[m.file] || 0) + 1;
});
Object.entries(parFichier)
.sort((a, b) => b[1] - a[1])
.forEach(([file, count]) => {
console.log(` ${file.padEnd(35)} ${count} mots`);
});
console.log(`\n TOTAL: ${motsAvecConsonnesRares.length} mots\n`);
}
if (require.main === module) {
main();
}

View File

@ -0,0 +1,108 @@
#!/usr/bin/env node
/**
* Remplace les racines trop anglaises par des équivalents finno-basques
*/
const fs = require('fs');
const path = require('path');
const LEXIQUE_DIR = path.join(__dirname, '../ancien-confluent/lexique');
// Map de remplacement : ancien → nouveau
const REPLACEMENTS = {
'malo': 'paka', // mauvais (basque-like)
'situ': 'tuli', // être/rester (finnois tulla)
'taki': 'kanu', // porter (finnois kantaa)
'time': 'aika' // temps (finnois aika)
};
function replaceInWord(word) {
let result = word;
Object.entries(REPLACEMENTS).forEach(([old, newRoot]) => {
result = result.replace(new RegExp(old, 'g'), newRoot);
});
return result;
}
function processFile(file) {
const filePath = path.join(LEXIQUE_DIR, file);
const content = JSON.parse(fs.readFileSync(filePath, 'utf8'));
if (!content.dictionnaire) return { modified: 0 };
let modified = 0;
Object.entries(content.dictionnaire).forEach(([motFr, data]) => {
if (!data.traductions) return;
data.traductions.forEach(trad => {
const oldMot = trad.confluent;
const newMot = replaceInWord(oldMot);
if (oldMot !== newMot) {
console.log(` [${file}] "${motFr}": ${oldMot}${newMot}`);
trad.confluent = newMot;
// Mettre à jour forme_liee
if (trad.forme_liee) {
trad.forme_liee = replaceInWord(trad.forme_liee);
}
// Mettre à jour racine (verbes)
if (trad.racine) {
trad.racine = replaceInWord(trad.racine);
}
// Mettre à jour composition
if (trad.composition) {
trad.composition = replaceInWord(trad.composition);
}
// Mettre à jour racines array
if (trad.racines) {
trad.racines = trad.racines.map(r => replaceInWord(r));
}
modified++;
}
});
});
// Sauvegarder le fichier modifié
if (modified > 0) {
fs.writeFileSync(filePath, JSON.stringify(content, null, 2) + '\n', 'utf8');
}
return { modified };
}
function main() {
const files = fs.readdirSync(LEXIQUE_DIR)
.filter(f => f.endsWith('.json'));
console.log('🔄 Remplacement des racines anglaises par équivalents finno-basques\n');
console.log('Remplacements:');
Object.entries(REPLACEMENTS).forEach(([old, newRoot]) => {
console.log(` ${old}${newRoot}`);
});
console.log('');
let totalModified = 0;
files.forEach(file => {
const { modified } = processFile(file);
totalModified += modified;
if (modified > 0) {
console.log(`\n[${file}] ${modified} mots modifiés`);
}
});
console.log(`\n✅ Terminé: ${totalModified} mots modifiés`);
console.log('💡 Relancez l\'audit pour vérifier\n');
}
if (require.main === module) {
main();
}