База по локализации в Unity

База по локализации в Unity

Введение

Локализация — важный этап при разработке игр, если вы хотите выйти на международный рынок. В Unity существует несколько подходов к локализации: от ручной работы с таблицами до использования официального пакета Localization.

Основные подходы

1.CSV или JSON-файлы

Это один из самых простых и понятных способов реализации мультиязычного интерфейса. Все переводы хранятся в текстовых файлах, которые Unity считывает при запуске.

Пример структуры CSV:

key,en,ru,es hello,Hello,Привет,Hola exit,Exit,Выход,Salir

Пример кода для загрузки этого файла:

using System.Collections.Generic; using UnityEngine; public class LocalizationManager : MonoBehaviour { public static LocalizationManager Instance; private Dictionary<string, string> localizedText; public string currentLanguage = "en"; void Awake() { if (Instance == null) { Instance = this; DontDestroyOnLoad(gameObject); LoadLocalization(); } else { Destroy(gameObject); } } void LoadLocalization() { TextAsset csvFile = Resources.Load<TextAsset>("localization"); localizedText = new Dictionary<string, string>(); string[] lines = csvFile.text.Split('\n'); string[] headers = lines[0].Split(','); int langIndex = System.Array.IndexOf(headers, currentLanguage); for (int i = 1; i < lines.Length; i++) { var cells = lines[i].Split(','); if (cells.Length > langIndex) localizedText[cells[0]] = cells[langIndex]; } } public string Get(string key) { return localizedText.ContainsKey(key) ? localizedText[key] : key; } }

Пример для UI:

using UnityEngine.UI; public class LocalizedText : MonoBehaviour { public string key; void Start() { GetComponent<Text>().text = LocalizationManager.Instance.Get(key); } }

Плюсы:

  • Простая реализация

  • Удобное редактирование файлов без необходимости открытия Unity

Минусы:

  • Отсутствие встроенной поддержки в редакторе

  • Необходимо самостоятельно реализовывать интерфейс для изменения языка


2. Unity Localization

Официальное решение от Unity, которое поддерживает локализацию строк, изображений, аудио и префабов.

Как подключить:

  • В Package Manager установите Localization
  • Создайте таблицы локализации: Window -> Asset Management -> Localization Tables


  • Добавьте LocalizedString или LocalizedAsset в нужные компоненты


Пример кода:

using UnityEngine.Localization; using UnityEngine.Localization.Settings; public class LanguageSwitcher : MonoBehaviour { public void SetLanguage(int index) { LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[index]; } }

Плюсы:

  • Полноценная поддержка от Unity

  • Удобный интерфейс

  • Локализация аудио, изображений и префабов

  • Более высокий порог входа

  • Менее удобно для быстрого редактирования текстов вручную

Сторонние сервисы:

  • I2 Localization — довольно популярный инструмент с поддержкой Google Sheets, визуальными редакторами и расширенной работой с UI
  • Smart Localization — старое, но рабочее решение


Несмотря на расширенные возможности и удобные редакторы зачастую платные и требуют времени на интеграцию.

Заключение

Выбор подхода зависит от целей и масштаба проекта. CSV и JSON подойдут для небольших игр, официальный пакет от Unity — для более серьёзных решений. Сторонние плагины пригодятся, если нужен максимум гибкости и интеграции.

Полезные ссылки

Hola mi novia

Jordi Escarp(испанец)
2
1
4 комментария