Інтернаціоналізація ігор

Вступ

Sería excelente que el mundo hablara solo un idioma (Було б чудово, якби світ говорив тільки однією мовою). На жаль для нас, розробників, це не так. Хоча інді-, або нішеві, ігри зазвичай не потребують локалізації, ігри, націлені на більш масовий ринок, часто вимагають локалізації. Godot пропонує багато інструментів, щоб спростити цей процес, тому цей підручник більше схожий на колекцію порад та підказок.

Локалізація зазвичай проводиться конкретними студіями, найнятими для роботи, і, незважаючи на величезну кількість доступного для цього програмного забезпечення та форматів файлів, найпоширеніший спосіб зробити локалізацію до цього дня залишаються електронні таблиці. Процес створення електронних таблиць та їх імпорту вже висвітлений у підручнику з імпорту перекладів, тому цей можна розглядати більше, як його продовження.

Примітка

Ми будемо використовувати офіційну демонстрацію як приклад; ви можете завантажити її з Бібліотеки Активів.

Налаштування імпортованого перекладу

Переклади можуть оновлюватися та повторно імпортуватися, при їх заміні, але їх все одно потрібно додати до проекту. Це робиться в Проект → Параметри проекту → Локалізація:

../../_images/localization_dialog.png

Наведене вище діалогове вікно використовується для додавання, або видалення, перекладів по всьому проекту.

Локалізація ресурсів

Також можна доручити Godot використовувати альтернативні версії активів (ресурсів) в залежності від поточної мови. Для цього можна використовувати вкладку Переспрямування:

../../_images/localization_remaps.png

Виберіть ресурс, який потрібно перемалювати, а потім додайте кілька альтернатив для кожної мови.

Перетворення ключів на текст

Деякі елементи керування, такі як Кнопка і Мітка, автоматично отримуватимуть переклад, якщо їх текст відповідає ключу перекладу. Наприклад, якщо текст мітки є "MAIN_SCREEN_GREETING1" і цей ключ існує в поточному перекладі, то текст буде автоматично перекладений.

Така поведінка автоматичного перекладу може бути небажаною в певних випадках. Наприклад, при використанні мітки для відображення імені гравця, ви, швидше за все, не хочете, щоб ім'я гравця було перекладено, якщо воно співпаде з ключем перекладу. Щоб вимкнути автоматичний переклад на певному вузлі, використовуйте Object.set_message_translation і надішліть Object.notification для оновлення перекладу:

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)

Для більш складних вузлів інтерфейсу користувача, таких як OptionButtons, можливо, доведеться використовувати таке:

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)

У коді можна використовувати функцію Object.tr(). Вона просто буде шукати текст у перекладах і конвертувати його, якщо він знайдений:

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

Контроль розміру

Один і той же текст на різних мовах може сильно відрізнятися за довжиною. Для цього обов'язково прочитайте підручник Size and anchors, оскільки динамічне регулювання розмірів може допомогти. Корисним може бути Контейнер, як і параметри обтікання текстом, доступні в Мітці.

Сервер Перекладу

Godot має сервер, який обробляє низькорівневе управління перекладами під назвою TranslationServer. Переклади можуть бути додані, або видалені, під час виконання; поточну мову також можна змінити під час виконання.

Тестування перекладів

Можливо, ви захочете перевірити переклад проекту, перш ніж випустити його. Godot дає два способи зробити це.

По-перше, в Параметрах проекту в розділі Input Devices > Locale є властивість Test. Установіть для цієї властивості код мови, яку потрібно перевірити. Godot запускатиме проект з цією локалізацією під час запуску проекту (або з редактора, або під час експорту).

..image:: img/locale_test.png

Майте на увазі, що оскільки це параметр проекту, він відображатиметься в елементі керування версіями, коли встановлено непусте значення. Таким чином, він повинен бути повернутий назад до порожнього значення, перед внесенням змін до керування версіями.

Переклади також можуть бути перевірені при запуску Godot з командного рядка. Наприклад, для тестування гри французькою мовою можна ввести наступний аргумент:

godot --language fr

Переклад назви проекту

Назва проекту стає назвою програми при експорті на різні операційні системи та платформи. Щоб указати ім'я проекту кількома мовами, створіть новий параметр application/name у Параметрах проекту та додайте до нього ідентифікатор мови. Наприклад, для іспанської мови це було б application/name_es:

../../_images/localized_name.png

Якщо ви не впевнені в коді мови для використання, зверніться до списку кодів мов.