Localisation de jeux et d'applications dans Unity. Rapide et facile

Salut Dans cet article, je vais partager mon expérience de la localisation de jeux et d'applications dans Unity, ainsi que parler de mon plugin de localisation simple, qui est disponible dans la boutique Asse. Le niveau de l'article est facile. Il n'y aura pas de code du tout, il ne vous sera pas utile.



Du point de vue du concept général, tout est simple. Nous devrions avoir une liste de dictionnaires pour chaque langue avec les mêmes clés, à partir de laquelle nous recevrons des valeurs localisées. Du côté technique, vous devez déterminer:

  • Quels seront nos dictionnaires?
  • Où seront-ils stockés?
  • Comment allons-nous les modifier et les développer?
  • Comment implémenter un bundle avec l'interface d'application?

Dans la mise en œuvre, j'ai été guidé par deux principes: simplicité et commodité. Ainsi, le format structuré le plus simple qui convient aux dictionnaires est CSV (Comma Separated Values). Il s'agit d'un fichier texte dans lequel toutes les cellules sont séparées par un séparateur - soit une virgule (",") ou un point-virgule (";"), selon les paramètres régionaux. CSV peut être ouvert et modifié dans n'importe quel éditeur de texte, mais Excel est préférable pour cela. Les fichiers CSV seront, bien entendu, stockés dans le dossier Resources afin que l'application puisse les lire à tout moment.

Le format sera le suivant: la première colonne est constituée des clés, toutes les colonnes suivantes sont des dictionnaires. La première ligne est le titre. Vous pouvez avoir un CSV commun, s'il y a peu de textes dans l'application, mais vous pouvez le diviser en plusieurs CSV selon un principe, par exemple: menus, paramètres, réalisations, etc.

Allez-y. La modification de la localisation dans Excel est excellente, bien sûr, mais je suggère de les télécharger sur Google Sheets. Vous pouvez ensuite les modifier de n'importe où, à tout moment et depuis n'importe quel appareil. Mais la chose la plus importante est que la localisation peut être partagée entre les traducteurs, et ils n'auront aucune difficulté avec la traduction. Vous pouvez consulter le dictionnaire ici .


Et le dernier point est l'intégration avec Unity, avec uGUI. Ici aussi, tout est simple - pour chaque composant de texte Text, nous ajoutons notre composant LocalizedText , dans lequel nous indiquons la clé. Une fois lancé, ce composant recevra une valeur localisée et la définira sur Texte .



Ensuite, quelques questions se posent:

  • Comment et quand initialiser un dictionnaire? Il suffit d'appeler LocalizationManager.Read à partir du script de contrôle. Cela peut être fait dans Awake ou Start, si vous êtes satisfait de la détection automatique de la langue ( Application.systemLanguage ), ou après le chargement du profil lorsque les paramètres utilisateur sont déjà connus.
  • Que faire si nous ne savons pas à l'avance exactement quelle valeur aura le composant Texte ? Nous n'ajoutons pas le composant LocalizedText , puis lui attribuons une valeur à partir du code, en accédant au dictionnaire via LocalizationManager.Localize (string localizationKey) .
  • Que dois-je faire si j'ai besoin d'insérer un paramètre dans une valeur localisée? Nous utilisons simplement le formatage dans la chaîne localisée, par exemple, "Niveau {0}", puis via string.Format, nous effectuons la substitution. Pour cela, il y a une surcharge de LocalizationManager.Localize (string localizationKey, params object [] args) .
  • Comment changer la localisation en runtime? Modifiez simplement la langue via LocalizationManager.Language. Cela déclenchera un événement auquel tous les composants LocalizedText sont abonnés. Cependant, les composants Texte localisés à partir du code (qui n'ont pas de composant LocalizedText ) devront être mis à jour manuellement.
  • Que faire avec d'autres éléments, par exemple, avec la liste déroulante déroulante? Utilisez évidemment le composant LocalizedDropdown =)

Eh bien, le dernier chignon de mon actif - il peut télécharger automatiquement toutes les feuilles de Google Sheets et les enregistrer dans les ressources du jeu. Il existe un composant LocalizationSync pour cela, qui a un bouton Sync (dans l'inspecteur).

Vous pouvez le télécharger dans Asset Store: localisation simple .

Source: https://habr.com/ru/post/fr417675/


All Articles