Internacionalizando los juegos

Introducción

Sería excelente que el mundo hablara solo un idioma (It would be great if the world spoke only one language). Unfortunately for us developers, that is not the case. While indie or niche games usually do not need localization, games targeting a more massive market often require localization. Godot offers many tools to make this process more straightforward, so this tutorial is more like a collection of tips and tricks.

La localización suele ser realizada por estudios específicos contratados para el trabajo y, a pesar de la gran cantidad de software y formatos de archivo disponibles para ello, la forma más común de realizar la localización hasta el día de hoy sigue siendo con hojas de cálculo. El proceso de crear las hojas de cálculo e importarlas ya está cubierto en el tutorial Importar traducciones, por lo que éste podría verse más como una continuación del mismo.

Nota

Usaremos la demo oficial como ejemplo, puedes descargarla desde la Asset Library.

Configuración de la traducción importada

Las traducciones pueden ser actualizadas y reimportadas cuando cambian, pero tienen que ser añadidas al proyecto. Esto se hace en Proyecto → Ajustes del proyecto → Traducciones:

../../_images/localization_dialog.png

Este cuadro de diálogo permite añadir o eliminar traducciones en todo el proyecto.

Localización de recursos

También es posible indicar a Godot para que abra versiones alternativas de assets (recursos) dependiendo del idioma actual. Para ello existe la pestaña «Remapeos»:

../../_images/localization_remaps.png

Selecciona el recurso a ser remapeado, y las alternativas para cada localización.

Conversión de claves a texto

Algunos Control como Button, Label, etc. obtendrán automáticamente una traducción cada vez que se establezca una clave en lugar de un texto. Por ejemplo, si se asigna una etiqueta «MAIN_SCREEN_GREETING1» y existe una clave para diferentes idiomas en las traducciones, ésta se convertirá automáticamente.

Para código, se puede utilizar la función Object.tr(). Esto simplemente buscará el texto en las traducciones y lo convertirá si lo encuentra:

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

Redimensionar los controles

El mismo texto en diferentes idiomas puede variar mucho en longitud. Por este motivo, asegúrate de leer el tutorial sobre Size and anchors, ya que puede ser útil tener tamaños de control ajustados dinámicamente. Ref:`Container <class_Container>, así como las múltiples opciones en Label para el ajuste del texto.

TranslationServer

Godot dispone de un servidor para la gestión de traducciones de bajo nivel llamado TranslationServer. Las traducciones pueden agregarse o eliminarse durante el tiempo de ejecución, y también se puede cambiar el idioma actual.

Línea de comandos

El lenguaje puede ser probado cuando se ejecuta Godot desde la línea de comandos. Por ejemplo, para probar un juego en francés, se pueden proporcionar los siguientes argumentos:

godot --language fr

Traducir el nombre del proyecto

El nombre del proyecto se convierte en el nombre de la aplicación cuando se exporta a diferentes sistemas operativos y plataformas. Para especificar el nombre del proyecto en más de un idioma, crea un nuevo ajuste application/name en el diálogo de Ajustes del Proyecto y añádele el identificador de localización. Por ejemplo, para español, sería application/name_es:

../../_images/localized_name.png

If you are unsure about the language code to use, refer to the list of locale codes.