Internationaliser des jeux

Introduction

Sería excelente que el mundo hablara solo un idioma (Ce serait formidable si le monde ne parlait qu'une seule langue). Malheureusement pour nous, développeurs, ce n'est pas le cas. Alors que les jeux indépendants ou de niche n'ont généralement pas besoin d'être localisés, les jeux ciblant un marché plus massif nécessitent souvent une localisation. Godot offre de nombreux outils pour rendre ce processus plus simple, ce tutoriel est donc plutôt une collection de trucs et astuces.

La localisation est généralement effectuée par des studios spécifiques engagés pour ce travail et, malgré l'énorme quantité de logiciels et de formats de fichiers disponibles pour cela, la façon la plus courante de faire de la localisation à ce jour est encore avec des feuilles de calcul. Le processus de création et d'importation des feuilles de calcul est déjà couvert dans le tutoriel Importation de traductions, donc celui-ci pourrait être considéré comme sa suite.

Note

Nous allons utiliser la démo officielle comme exemple ; vous pouvez la télécharger depuis la bibliothèque d'assets.

Configuration de la traduction importée

Les traductions peuvent être mises à jour et réimportées lorsqu'elles changent, mais elles doivent toujours être ajoutées au projet. Cela se fait dans Projet → Paramètres du projet → Localisation :

../../_images/localization_dialog.png

La boîte de dialogue ci-dessus permet d'ajouter ou de supprimer des traductions à l'échelle du projet.

Localisation des ressources

Il est également possible de demander à Godot d'utiliser des versions alternatives des assets (ressources) selon la langue courante. L'onglet Remaps peut être utilisé pour cela :

../../_images/localization_remaps.png

Sélectionnez la ressource à remapper, puis ajoutez des alternatives pour chaque région.

Conversion de clés en texte

Certains contrôles, tels que Button et Label, vont automatiquement chercher une traduction si leur texte correspond à une clé de traduction. Par exemple, si le texte d'une étiquette est " MAIN_SCREEN_GREETING1 " et que cette clé existe dans la traduction actuelle, le texte sera automatiquement traduit.

Ce comportement de traduction automatique peut être indésirable dans certains cas. Par exemple, lorsque vous utilisez un Label pour afficher le nom d'un joueur, vous ne souhaitez probablement pas que le nom du joueur soit traduit s'il correspond à une clé de traduction. Pour désactiver la traduction automatique sur un nœud spécifique, utilisez Object.set_message_translation et envoyez un Object.notification pour mettre à jour la traduction :

func _ready():
    # This assumes you have a node called "Label" as a child of the node
    # that has the script attached.
    var label = get_node("Label")
    label.set_message_translation(false)
    label.notification(NOTIFICATION_TRANSLATION_CHANGED)

Pour les nœuds d'interface utilisateur plus complexes, tels que les boutons d'option, vous devrez peut-être utiliser ceci à la place :

func _ready():
    var option_button = get_node("OptionButton")
    option_button.set_message_translation(false)
    option_button.notification(NOTIFICATION_TRANSLATION_CHANGED)
    option_button.get_popup().set_message_translation(false)
    option_button.get_popup().notification(NOTIFICATION_TRANSLATION_CHANGED)

Dans le code, la fonction Object.tr() peut être utilisée. Cela va juste chercher le texte dans les traductions et le convertir s'il est trouvé :

level.set_text(tr("LEVEL_5_NAME"))
status.set_text(tr("GAME_STATUS_" + str(status_index)))

Rendre les contrôles redimensionnables

Le même texte dans différentes langues peut varier considérablement en longueur. Pour cela, assurez-vous de lire le tutoriel sur Taille et ancrages, car ajuster dynamiquement la taille des contrôles peut aider. Container peut être utile, ainsi que les options d'habillage de texte disponibles dans Label.

TranslationServer

Godot a un serveur qui gère la traduction de bas niveau appelé TranslationServer. Les traductions peuvent être ajoutées ou supprimées pendant l'exécution ; la langue actuelle peut également être modifiée pendant l'exécution.

Tester les traductions

Vous souhaiterez tester les traductions d'un projet avant de le mettre en ligne. Godot propose deux façons de le faire.

Tout d'abord, dans les Préférences du projet, sous Périphériques d’entrée > Langue se trouve la propriété Test. Insérez le code de la langue que vous souhaitez tester dans cette propriété. Lorsque Godot lancera le projet (depuis l’éditeur ou en l'exportant) ce dernier utilisera la langue choisie.

../../_images/locale_test.png

A noter qu’étant donne qu'il s'agit d'une préférence du projet, elle apparaîtra dans le système de contrôle de version lorsque non-vide. Pour cette raison, sa valeur doit être vidée avant de soumettre les changements au système de contrôle de version.

Les translations peuvent être testées en exécutant Godot depuis la ligne de commande. Par exemple, pour tester un jeu en français, l'argument suivant peut être fourni :

godot --language fr

Traduire le nom du projet

Le nom du projet devient le nom de l'application lors de l'exportation vers différents systèmes d'exploitation et plateformes. Pour spécifier le nom du projet dans plus d'une langue, créez un nouveau paramètre application/name dans les Paramètres du projet et ajoutez-y l'identifiant régional. Par exemple, pour l'espagnol, ce serait application/name_es :

../../_images/localized_name.png

Si vous n'êtes pas sûr du code de langue à utiliser, référez-vous à la liste des codes de langue.