Cette page explique comment mapper vos traductions de compendium grâce au module Babele, leur permettant ainsi de rester compatibles avec un système de base, d'éviter de recréer tous les objets déjà présents et de casser les différents liens vers d'autres fiches de personnage ou objets de compendium. Attention, il n'explique pas comment traduire tout un système complet.
Pour plus de détails sur la traduction d'un système complet ou le scripting avec Babele, voir sur la page Gitlab du développeur.
systemefoundry-fr-translation
│ module.json
│ register-babele.js
│
└───compendium
systeme.compendium.json
Exemple type d'un fichier de module.json :
{
"name": "systemefoundry-fr-translation",
"title": "Système Foundry - Traduction Française",
"description": "Module de traduction du système Système Foundry en Français, basé sur Babele.",
"version": "0.2.37",
"minimumCoreVersion" : "0.7.1",
"compatibleCoreVersion": "7.9.0",
"author": "Auteur du module",
"dependencies": [
{
"name": "system-de-base",
"type": "system",
"version": "1.3.22"
},
{
"name": "babele",
"type": "module",
"manifest": "https://gitlab.com/riccisi/foundryvtt-babele/raw/master/module/module.json",
"version": "1.28"
}
],
"esmodules": [
"register-babele.js"
],
"scripts": [ ],
"styles": [],
"packs": [],
"languages": [{
"lang": "fr",
"name": "Français",
"path": "lang/fr.json"
}],
"system": "system-de-base",
"systemVersion": "1.3.22",
"url": "https://github.com/mon-compte/mon-repository",
"manifest": "https://github.com/mon-compte/mon-repository/raw/main/module.json",
"download": "https://github.com/mon-compte/mon-repository/archive/refs/heads/main.zip"
}
Attributs notables :
"name"
: nom court du module (lettres minuscule, sans caractère spécial ni accentué et sans espace)."title"
: titre plus détaillé et libre du module, celui qui s'affichera dans l'explorateur de modules de Foundry VTT."description"
: description qui s'affichera dans les détails du module dans l'explorateur de modules de Foundry VTT."version"
: version de ce module."minimumCoreVersion"
: version minimale compatible de Foundry VTT."compatibleCoreVersion"
: version maximale compatible de Foundry VTT."author"
: auteur du module."dependencies"
: dépendances du module, à savoir les autres modules ou systèmes nécessaires au fonctionnement de ce module. Typiquement les dépendances sont le système traduit ainsi que , bien entendu le module Babele.
"name"
: nom du module ou du système requis par votre module."type"
: système ou module"manifest"
: lien optionnel ciblant l'installation du module ou du système requis. Ce qui permet par exemple de proposer d'installer automatiquement Babele avec votre module."version"
: la version minimale requise du système ou module requis par votre module."esmodules"
: scripts à lancer au chargement du module. Typiquement le script register-babele.js, mais d'autres peuvent être ajouté."packs"
: optionnel dans notre cas."languages"
: langages du module."system"
: systèmes avec lesquels le module est compatible"systemVersion"
: la version du système avec le module est compatible."url"
: url du site de documentation de ce module ou de son auteur."manifest"
: lien vers le manifest d'installation du module."download"
: fichier ZIP à télécharger contenant tous les fichiers du module.Votre module doit idéalement comporter un fichier javascript (par exemple : register-babele.js
) permettant de déclarer automatiquement à Foundry VTT la traduction Babele lorsque le module est activé. Le fichier suivant est une déclaration typique :
Hooks.on('init', () => {
if(typeof Babele !== 'undefined') {
Babele.get().register({
module: 'systemefoundry-fr-translation',
lang: 'fr',
dir: 'compendium'
});
}
});
module: 'systemefoundry-fr-translation'
spécifie le nom court du module de traduction à charger au lancement du monde.dir: 'compendium'
permet de préciser le dossier à l'intérieur duquel Babele trouvera les fichiers de traduction de compendia au format JSON.Bien entendu tous ces attributs sont sensibles à la casse. Utilisez donc le nom exact en tenant compte des majuscules et minuscules. Par exemple, si le nom court du module est wfrp4-wfrp4e-npc-generator
noter dans ce fichier module: 'wfrp4-wfrp4e-npc-generator'
et non pas module: '[WFRP4] NPC generator'
.
Il est recommandé d'utiliser un module mais la traduction sans module peut servir à faire des tests rapides.
Créer un répertoire compendiums dans le répertoire data de foundryVTT. Puis un répertoire nommé fr dans le répertoire compendiums.
Data
│ compendiums
│ fr
| systeme.compendium.json
Lancez votre monde dans FoundryVTT.
Allez dans Paramètres->Configuration des options.
Cliquez sur l'onglet Modules. Scrollez jusqu'à trouver le module Babele.
Dans le champs Translations Files Directory entrez 'compendiums'.
Sauvegarder vos paramètres
Le nom du fichier JSON de Babele doit toujours être du type systeme.compendium.json, tel qu'exporté par Babele. Ne le renomez pas.
Exemple : sfrpg.classes.json
Bien entendu la traduction implique que vous ayez installé et activé dans votre monde le module Babele.
Il est par ailleurs fortement conseillé de créer et dédié un monde à la traduction, afin d'éviter toute mauvaise manipulation sur une de vos parties en cours.
Voici une démarche possible pour la traduction de description en utilisant Foundry.
Dupliquez le compendium que vous souhaitez traduire et le nommer avec une marque différente de l'original :
Ouvrez votre compendium, puis un objet :
Pour modifier la description de l'objet, cliquez sur le bouton qui apparaît en haut à droite du texte de la description :
Une fois vos objets traduits, récupérez les fichiers de traduction Babele en cliquant sur le bouton "Traduction" en haut de votre compendium :
Choisissez un mode de fichier à récupérer (il est souvent préférable d'opter pour le mode "Legacy") :
La structure basique d'un fichier JSON de traduction Babele se présente ainsi :
{
"label": "Classes (fr)",
"entries":
{
"Soldier": {
"name": "Soldat",
"description": "<p>Que vous ayez pris les armes pour protéger les autres ..."
},
{
"Operative": {
"name": "Agent",
"description": "<p>Vous êtes une ombre. Vous vous déplacez rapidement ..."
}
}
}
Le format de ce fichier est dit "compatible" dans Babele par opposition à l'ancien format "legacy".
"label"
correspond au nom long qui remplacera le nom du compendium dans Foundry VTT."entries"
correspond à la liste des objets du compendium"Soldier"
correpond au nom original de l'objet à traduire ainsi qu'à l'objet lui même et ses détails :
"name"
est le nom traduit de lobjet"description"
est la... Traduction de la description de l'objetNotez que chaque nom est systématiquement entouré de guillemets et terminé par une virgule (à l'exeption du dernier élément d'une série), format de d'écriture obligatoire pour les fichiers d'échange de données JSON. Par exemple :
"name": "Soldat",
.
Plusieurs traductions d'objets seront placées à la suite les unes des autres dans la liste "entries"
et comme dans l'exemple, chaque objet sera entre accolades { }
et les objets entre eux seront séparés par des ,
.
Voici une liste de quelques outils qui vous aiderons à éditer les fichiers :
Si vous souhaitez ajouter des éléments de traduction en plus du nom de l'objet et de sa description, il faut définir quels champs de le fiche Foundry Babele devra mapper avec vos traductions.
Puis, objet par objet, ajouter les valeurs pour ces champs.
Dans les premières lignes du fichier Babele JSON de traduction (du type système.compedium.json), ajouter vos mappings à la suite de l'attribut "label"
et avant les "entries"
comme dans l'exemple suivant :
"label": "Compendium-traduit",
"mapping": {
"source": "data.source",
"type": "data.type",
"subtype": "data.subtype"
},
Pour chaque objet, ajouter les attributs ainsi que les traduction à associer au mapping :
{
...
"description": "<p>Lorem ipsum dolor sit amet</p>",
"source": "Règles p.42",
"type": "arme",
"subtype": "corps à corps"
},
Depuis la version 2.1.0 Babele supporte la traduction des tables aléatoires.
Les éléments vont se faire à l'aide de l'attribut "results"
La traduction des éléments de texte va se faire sous la forme :
{
"label": "Nom du compendium ",
"entries": [
{
"id": "id de la table ",
"name": "Nom de la table ",
"description": "Description de la table ",
"results": {
"1-1": "Texte traduit",
"4-5": "Texte traduit"
}
}
]
}
Il convient de mettre les mêmes intervalles que la table à traduire. Si un intervalle correspond à un résultat qui renvoie vers une autre table traduite ou un autre élément traduit des compendiums, il n’est pas nécessaire de le définir (intervalle "2-3" dans l'exemple ci-dessus).
Pour partager simplement votre module de main en main, sur un quelconque service Drive ou sur Discord par exemple, il vous suffit de compresser en ZIP le dossier de votre module Foundry et de le transmettre.
Pour avoir des informations claires sur l'utilisation de GitHub, conultez la page dédiée à Git.