Aller au contenu

Messages recommandés

Posté(e)

Bonjour !

 

@AlexLew m'avait obligé demandé de présenter un petit système de traduction que j'avais imaginé pour l'aider dans l'optimisation de ses scripts, mais vu qu'il est impatient il l'a présenté lui même, en oubliant certains éléments (et optimisations :O).

 

Voilà pourquoi je vous présente aujourd'hui un petit système de traduction amélioré.

 

 

Bon alors on est pas dans la section tutoriel, et puis le code ne fait que 5 lignes, donc je vous décris pas chaque lignes de codes, mais plutôt son utilisation !

function MsgLang(id: text, p: player, arg: texts="NoValue") :: text:
       set {_content} to single value "ID.%{_id}%.%{lang::%{_p}%}%" get of "language.yml"
       loop (size of {_arg::*}) times:
               replace all "[%loop-value%]" in {_content} with {_arg::%loop-value%}
       return {_content}

 

 

L'idée de base de cette fonction est de, en lui renseignant le joueur et un ID de texte, renvoyer le texte correspondant dans la langue du joueur (définie par {lang::%player%}). Toutes ces traductions vont être enregistrées au préalable dans un fichier au format YAML, en suivant cet exemple:

ID:
 newjoin:
   FR: [1] a rejoint pour la première fois le serveur, dites lui bienvenue !
   EN: [1] is a new player on the server, say him hello !
   NL: [1] is een nieuwe speler op de server, zeg hem hallo !
 jointeam:
   FR: Vous avez rejoint l'équipe [1] ! Vos équipiers sont [2].
   EN: You joined the [1] team. Your teammates are [2].
   NL: Je ben in de [1] ploeg. Jouwe teamgenoten zijn [2].

 

Donc comme déjà dit, ce système est légèrement amélioré dans le sens où vous pouvez utiliser des arguments/paramètres/champs personnalisés (appelez ça comme vous voulez) destinés à contenir une liste de joueurs, un timer, ... bref, une donnée variable !

 

En gros, dans votre fichier de traduction, vous pouvez inclure à des endroits des [1], [2], etc (utilisez en autant que vous voulez) pour dire à la fonction "À cet endroit là, je veux que tu utilises ce texte: ..."

À ce moment là, vous indiquer en troisième argument de la fonction le ou les champs à compléter.

 

Petite astuce, vous pouvez écrire directement la liste de "champs personnalisés" à passer sans utiliser de variables liste en utilisant:

MsgLang(<id>, <player> , ("<première argument>", "<deuxième argument>", ...))

 

 

 

Cependant, ce système a quelques défauts, par exemple, dans le 2e texte "jointeam", il faudrait également traduire les couleurs des équipes disponibles...

 

 

Voilà c'est tout, il ne vous reste plus qu'à créer un système pour définir la langue du joueur, par exemple avec une commande, et à compléter le fichier de traduction !

 

 

4rno

  • J'aime 2
Posté(e)

Punaise, la différence de niveau d'explications entre toi et moi est flagrante ! Tu sais tellement mieux expliquer que moi ! Bruh.

  • J'aime 1
  • 1 mois après...

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.