Поддержка локализации из GoogleDocs
GoogleDocs
(GoogleSheets
) могут являться источниками данных для локализации, настроек или игрового баланса. Для их импорта и разбора существует множество пакетов, но все эти решения достаточно объемные и ориентированы исключительно на работу в редакторе Unity
. Что, если нам хочется что-то подправить на лету и не ждать несколько минут, пока пересоберется новый билд с новыми данными?
Разбор данных
Самым простым, оптимальным по размеру и поддерживаемым всеми табличными редакторами является CSV
. Данные в нем представлены в виде строк, составленных из значений ячеек, разделенных запятыми.
Формат поддерживает UTF8, кавычки и запятые в качестве значений и не имеет дополнительного мусора в виде обязательных отступов, скобок и т.д.
Пакет Leopotam.Serialization.Csv
обеспечивает поддержку разбора “сырых” CSV
данных в коллекции, с которыми уже можно работать из кода. Допустим, у нас есть следующая таблица:
11 | 12 | 13 |
21 | 22 | 23 |
Разбор в таблицу
Данные могут быть разобраны в таблицу:
1 | string csv = "...csv данные..."; |
Этот вариант может использоваться для работы с данными, когда порядок важен, но нет уникального ключа для доступа к каждой строке.
Разбор в словарь значений
Данные могут быть разобраны в набор пар “Ключ/Значение” - первый столбец считается ключом, второй значением, остальные столбцы игнорируются:
1 | string csv = "...csv данные..."; |
Этот вариант может быть использован для хранения настроек, когда первый столбец является именем настройки, а второй - ее значением.
Разбор в словарь списков
Данные могут быть разобраны в набор пар “Ключ/Значение” - первый столбец считается ключом, второй и последующие являются списком-значением:
1 | string csv = "...csv данные..."; |
Этот вариант может использоваться для локализации или для работы с любыми данными, где необходима адресация в виде имени-ключа к коллекции столбцов.
Локализация
Используя предыдущий пакет, мы можем загружать данные и интерпретировать их как локализацию, где первый столбец является ключом, а остальные столбцы содержат переводы на разные языки. Первая строчка является заголовком и содержит названия языков:
KEY | Russian | English |
---|---|---|
title | Заголовок | Title |
desc | Описание | Description |
Пакет Leopotam.Localization
обеспечивает разбор CSV
-данных и поддержку получения локализованных данных на основе текущего языка и Категории
. Категория
- это по сути отдельная страница в GoogleSheets
, которая никак не пересекается с другими страницами и может содержать ключи с такими же именами. Отдельным требованием пакета является именование строки заголовка ключом KEY
.
Инициализация данных
1 | // Стартовый язык. |
Запрос переводов
1 | // Запрос локализации для текущего языка. |
Если строки с указанным ключом не будет в наличии - в качестве перевода вернется сам ключ.
Загрузка данных из GoogleDocs
CSV
-данные могут храниться в виде текстовых ресурсов в проекте, так и находиться на удаленном сервере, например, GoogleDocs. Их загрузку в рантайме обеспечивает пакет Leopotam.GoogleDocs.Unity
- для работы достаточно скопировать адрес из строки браузера и указать имя страницы:
1 | // Прямая ссылка на документ. |