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.
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 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.
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 TranslatableTextContent
). Si vous suivez ce tutoriel en temps réel, n'oubliez pas de changer modid par `tutoriel`, ou l'identifiant de votre mod.
Dès lors qu'une fonction accepte une classe Text
, vous avez l'option de lui donner un new LiteralTextContent()
, 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 TranslatableTextContent()
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 appendTooltip(ItemStack itemStack, World world, List<Text> tooltip, TooltipContext tooltipContext) { tooltip.add(new TranslatableTextContent("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” !
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 TranslatableTextContent("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 Java String.format (qui fonctionne de la même manière).
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 TranslatableTextContent
individuellement :
tooltip.add(new new TranslatableTextContent("item.tutoriel.mon_objet.description_1")); tooltip.add(new new TranslatableTextContent("item.tutoriel.mon_objet.description_2"));La description va maintenant afficher :
Ligne 1 de ma description Ligne 2 de ma description
Les clés de traduction sont enregistrés sous la forme
<type-objet>.<namespace>.<chemin>
(Le namespace et le chemin doivent être définis par un Identifier
enregistré).
Type d'objet | Format | Exemple |
---|---|---|
Block | block.<namespace>.<chemin> | “block.tutoriel.mon_bloc”: “Mon Bloc” |
Item | item.<namespace>.<chemin> | “item.tutoriel.mon_objet”: “Mon Objet” |
ItemGroup | itemGroup.<namespace>.<chemin> | “itemGroup.tutoriel.mon_groupe”: “Mon Groupe” |
Fluid | fluid.<namespace>.<chemin> |
|
SoundEvent | sound_event.<namespace>.<chemin> |
|
StatusEffect | effect.<namespace>.<chemin> |
|
Enchantment | enchantment.<namespace>.<chemin> |
|
EntityType | entity.<namespace>.<chemin> |
|
Biome | biome.<namespace>.<chemin> |
|
Stat | stat.<namespace>.<chemin> |
Pour les types non présents dans cette liste, voir net.minecraft.registry.Registry
.