Skip to Content

Unity Translation


Comme son nom l'indique, le but était de créer un système de traduction simple, rapide et efficace sur tout type d'appareil. Vous pouvez customiser du texte en rajoutant une variable comme ceci : {maVariable}, le programme se chargera de remplacer "maVariable" par la chaîne correspondante. Elle prend aussi en charge les conditions ternaires afin de pouvoir, par exemple, rajouter un "s" au bout du mot quand le nombre dépasse 2, elles peuvent être également imbriquées ou non.




Pour mieux séparer le texte, un système de Scriptable Object et de mise en cache a été créé. Les fichiers peuvent être rangés dans n'importe quel dossier et sous-dossiers.
Si une clé est modifié, elle modifiera la clé correspondante dans toutes les langues.

Dans un souci de simplicité pour les GD, ils peuvent directement manipuler quelle phrase est associée au texte présent sur le même Game Object. Depuis la dernière mise à jour, ils peuvent même renseigner la valeur à tracker pour que le texte se mette à jour de lui même sans avoir besoin de créer de script.


Versions du projet


 - Suppression du stockage via json pour privilégier les Scriptables Objects

​- Mise en place d'une interface graphique pour pouvoir éditer les traductions directement dans l'éditeur

​- Amélioration des performances pour le démarrage du jeu

​- Mise à jour de l'aperçu de la sélection des traductions

- Ajout d'un "Translation Manager" qui va gère tout les textes présent dans le jeu avec un custom update
​- Ajout d'une interface "ITextUpdatable" que l'on peut attacher à n'importe quel script pour le lié au "Translation Manager"

 - Réduction du Garbage Collector à 0B par frame

- Amélioration des performances
​- Passage du Regex aux ReadOnlySpan qui représente une partie contiguë de la mémoire et donc fait des opérations beaucoup plus rapides

​- Ajout du Cache qui stocke les instances

​- Ajout d'un dictionnaire de recherches personnalisé utilisant le ReadOnlySpan

​- Passage à un observeur générique afin d'éviter des conversions en object

 - Mise en place d'un projet Unity

​- Ajout d'un système d'observeur pour tracker les variables via des expressions lambda compilées

  ​​- Ajout d'un système de custom editor afin de permettre aux GD de tracker directement les variables à remplacer

  ​​
​- Si l'objet est sélectionné, vérifie automatiquement si une traduction est manquante dans une des langues

 

 - Ajout de la base du projet
  ​- Data Module (récupère les données unique contenus dans les json)

​- Translation Module (récupère les traductions autre que les données unique pour les transformer en traduction)

  ​- Operator Module (transforme une chaîne de caractères en condition ternaire exécutable au runtime)

- StringFormatter (Utilise du Regex pour détecter des patterns pour remplacer les strings par d'autres)