====== Traductions ====== Avez-vous remarqué que le nom de votre objet (item) suit la forme //item.tutoriel.mon_objet// ? C'est parce que le nom de votre objet (item) n'a pas de traduction dans la langue choisie en jeu. Les traductions sont un moyen de supporter différents langages pour un seul texte. ===== Créer un fichier lang ===== Vous pouvez utiliser les fichier lang pour permettre au jeu de traduire du texte. Pour cela vous aurez besoin de créer un fichier approprié pour votre langage-- pour trouver l'identifiant de votre langage, visitez [[https://minecraft.gamepedia.com/Language|ce lien]]. L'identifiant du français étant fr_fr. Une fois que vous avez l'identifiant de votre langage, créez un fichier JSON dans le dossier __resources/assets/modid/lang/__; Un exemple complet pour un fichier de traduction en français serait __resources/assets/tutorial/lang/fr_fr.json__. ===== Ajouter une traduction ===== Une fois votre fichier lang créé, vous pouvez utiliser ce template pour ajouter des traductions : { "item.tutoriel.mon_objet": "Mon Objet", "item.tutoriel.mon_super_objet": "Mon Super Objet", [...] } où la première chaîne de caractères correspond à n'importe quel texte traduisible (comme le nom d'un item ou la classe ''''). Si vous suivez ce tutoriel en temps réel, n'oubliez pas de changer modid par `tutoriel`, ou l'identifiant de votre mod. ===== Ajouter du texte traduisible customisé ===== Dès lors qu'une fonction accepte une classe '''', vous avez l'option de lui donner un ''new ()'', ce qui signifie que Minecraft va utiliser cette chaîne de caractères telle qu'est est donné dans l'argument du constructeur. Cependant, ce n'est pas une méthode recommandée car il sera difficile de le traduire dans un autre langage, si vous désirez le faire. C'est pour cela que vous pouvez alors donner un ''new ()'' avec une clé de traduction comme paramètre, pour ensuite l'utiliser dans votre fichier lang pour le traduire. Par exemple, pour ajouter une description à votre objet (item), il faut faire : @Override public void method_9568(class_1799 itemStack, class_1937 world, List tooltip, class_1836 tooltipContext) { tooltip.add(new class_2588("item.tutoriel.mon_objet.description")); } Puis dans le fichier de traduction : { "item.tutoriel.mon_objet.description": "Description de mon objet" } Ainsi la description de l'objet (item) affichera : "Description de mon objet" ! ==== Ajouter des valeurs dynamiques à votre texte ==== Disons que vous voulez que votre texte change en fonction d'une variable, comme par exemple le jour et le mois actuel. Pour un nombre dynamique, on utilise %d à l'endroit où on veut qu'un nombre soit visible dans l'entrée du fichier lang, comme par exemple : { "item.tutoriel.mon_objet.description": "Ma description montre le jour %d, et le mois %d" } Et maintenant, on donne ces valeurs à notre texte pour qu'il puisse apparaître dans le texte. En premier le jour, puis le mois : int jour = 4; int mois = 7; tooltip.add(new class_2588("item.tutoriel.mon_objet.description", jour, mois)); La description va maintenant afficher "Ma description montre le jour 4, et le mois 7". Pour donner une chaîne de caractères, il suffit de mettre ''%s'' au lieu de ''%d''. Si vous voulez littéralement afficher ''%'', il suffit d'utiliser ''%%''. Pour plus d'informations, vous pouvez vous référer avec [[https://dzone.com/articles/java-string-format-examples|Java String.format]] (qui fonctionne de la même manière). ==== Ajouter une nouvelle ligne ==== Utiliser ''\n'' était bien trop difficile pour Mojang, alors pour avoir plusieurs ligne dans une chaîne de caractères vous devez séparer la clé de traduction en plusieurs clés : { "item.tutoriel.mon_objet.description_1": "Ligne 1 de ma description", "item.tutoriel.mon_objet.description_2": "Ligne 2 de ma description" } Et maintenant vous pouvez ajouter les parties '''' individuellement : tooltip.add(new new class_2588("item.tutoriel.mon_objet.description_1")); tooltip.add(new new class_2588("item.tutoriel.mon_objet.description_2")); La description va maintenant afficher : Ligne 1 de ma description Ligne 2 de ma description ====== Formattage des clés de traduction ====== Les clés de traduction sont enregistrés sous la forme ''..'' (Le namespace et le chemin doivent être définis par un '''' enregistré). ^ Type d'objet ^ Format ^ Exemple ^ | | ''block..'' |''"block.tutoriel.mon_bloc": "Mon Bloc"'' | | |''item..'' |''"item.tutoriel.mon_objet": "Mon Objet"'' | | | ''itemGroup..'' | ''"itemGroup.tutoriel.mon_groupe": "Mon Groupe"''| | | ''fluid..''|| | | ''sound_event..''|| | | ''effect..''|| | | ''enchantment..''|| | | ''entity..''|| | | ''biome..''|| | | ''stat..''|| Pour les types non présents dans cette liste, voir ''''.