Локализация (Localization) v.5.4.0
Название: Локализация (DKTools_Localization)
Автор: DK
Версия: 5.4.0
Условия использования/лицензия:
Актуальная информация о правилах использования: dk-plugins.ru/terms-of-use
Описание:
Локализация игры
Зависимости:
Наличие включенного плагина DKTools версии 10.0.4 или выше
Справка:
###===========================================================================
## Поддержка
###===========================================================================
Поддержать: dk-plugins.ru/donate
Стать патроном: www.patreon.com/dkplugins
###===========================================================================
## Требования и зависимости
###===========================================================================
Наличие включенного плагина DKTools версии 9.0.0 или выше
###===========================================================================
## Демоверсия
###===========================================================================
dk-plugins.ru/mv/system/localization/
###===========================================================================
## Специальная совместимость с другими плагинами
###===========================================================================
Плагин совместим с большинством других плагинов, но все же могут попасться плагины,
которые не работают с локализацией. Я добавляю совместимость этих плагинов.
Чтобы совместимость работала правильно,
плагины из следующего списка необходимо разместить ВЫШЕ плагина локализации:
YEP_MessageCore.js
YEP_OptionsCore.js
YEP_QuestJournal.js
## Внимание! ##
Если вы считаете, что какой-то плагин несовместим с локализацией сообщите мне об этом.
###===========================================================================
## Инструкции
###===========================================================================
### 1 ### Установка ###
1. Добавить хотя бы один язык в параметре "Языки игры".
2. Если вы меняли стандартный шрифт в игре, то его также нужно изменить в параметре "Стандартный шрифт".
## Неполный список рекомендованных локалей ##
Russian - ru
Ukrainian - uk
Belarusian - be
English - en
Chinese - zh
Japanese - ja
Korean - ko
French - fe
German - de
Spanish - es
Czech - cs
Italian - it
Если вы не нашли в этом списке локаль, то можете найти ее в интернете, например,
здесь: www.science.co.il/language/Locale-codes.php
### 2 ### Использование ###
1. При первом запуске игры плагин создаст папки для переводов и json файлы для каждого языка.
2. Для локализации текста используйте теги: {}.
3. Для использования переменной внутри текста используйте тег \VAR[ID],
где ID - номер переменной. Используйте только для глубины перевода (см. ниже).
### Добавление нового перевода на примере события с сообщением ###
1. Создайте новое событие, добавьте отображение сообщения.
2. В сообщении напишите {text}. Сохраните событие и проект.
3. Откройте json файлы для каждого языка.
4. Первый символ файла должна быть {, а последний - }.
Эти символы нельзя удалять. Внутри этих скобок пишется перевод игры.
6. Добавьте в один из файлов следующий текст и сохраните его: "text": "Текст".
7. Запустите игру и созданное событие.
### Внимание! ###
Кодировка в файлах перевода должна быть UTF-8 без BOM.
###===========================================================================
## Использование массивов
###===========================================================================
Массивы загружаются в данные локализации по названию файла.
## Использование массивов на примере файла "quests.json" ##
1. Файл имеет следующую структуру:
[null, { "name": "Quest 1" }, { "name": "Quest 2" }]
2. Чтобы вывести в сообщении текст "Quest 1", необходимо прописать тег
{quests[1].name}
Чтобы обратиться к массиву сначала необходимо написать название файла,
в котором он хранится, затем необходимо указать в квадратных скобках
номер элемента и поле, которое должно быть использовано.
###===========================================================================
## Локализованные ресурсы
## Использование разных файлов (аудио, изображения, видео) для каждого языка
###===========================================================================
Данная функция поможет использовать специальные файлы для разных языков.
Например, если на них есть текст, то можно сделать разные изображения для каждого языка,
и плагин сам будет выбирать нужное изображение.
Данная функция работает только с аудио, видео и изображениями.
## Внимание! ##
Для работы данной функции на мобильных устройствах и в браузерах
необходимо выставить режим работы файловой системы Nwjs + Stamp в плагине DKTools!
1. Создайте новую папку в необходимой папке
2. В качестве имени папки используйте необходимую локаль игры
3. Переместите файлы в созданную папку
Пример:
Необходимо использовать разные файлы Loading.png для разных языков
Основной файл находится в папке "img/system".
Создаем папку "ru" в "img/system" и перемещаем туда Loading.png для русского языка.
Например, для английского языка будет использоваться основной файл из "img/system",
а для русского языка из созданной нами "img/system/ru".
###===========================================================================
## Использование неограниченного количества файлов перевода
###===========================================================================
## Внимание! ##
Для работы данной функции на мобильных устройствах и в браузерах
необходимо выставить режим работы файловой системы Nwjs + Stamp в плагине DKTools!
Данная инструкция предназначена для папки, которая имеет название по умолчанию (locales)
Если Вы переименовали папку в параметрах плагина, то используйте новое название папки!
Если у Вас большое количество текста в игре, и Вам неудобно пользоваться одним json файлом,
то Вы можете разбить его на несколько json файлов и поместить в отдельную папку.
Пример для английской локали (en):
1. В папке locales создайте папку en.
2. Перенесите в новую папку свой старый файл en.json из папки locales.
3. Создайте несколько json файлов с любыми именами.
4. В каждом файле пропишите необходимые теги и сохраните изменения.
## Внимание! ##
Все теги во всех файлах должны иметь уникальное название!
В случае совпадения имен тегов будет загружен первый из них (порядок не гарантируется)!
### 3 ### Параметры плагина ###
1. Игнорируемые файлы - Файлы, которые игнорируются командой плагина UpdateLocalizationTags.
2. Глубина перевода - Количество операций перевода текста.
В переведенном тексте Вы можете указать другой тег,
и он будет переведен, если глубина перевода больше 1.
Пример:
"text": "Текст {text2}",
"text2" "2"
При глубине перевода больше 1 в итоге получится "Текст 2".
3. Длина текста - Длина текста, при которой он сохраняется в кэш.
Это нужно, чтобы сократить необходимые вычислительные ресурсы для перевода.
Кэш автоматически очищается при переходе между картами.
### 4 ### Специальные символы сообщений ###
1. \language - Вывести название текущего языка
### 5 ### Команды плагина ###
1. UpdateLocalizationTags
Обновить теги в файлах перевода.
Команда плагина проверяет json файлы из папки "data/" (кроме игнорируемых файлов,
заданных в параметрах плагина), а также все параметры всех плагинов.
Найденные теги сохраняются в новые файлы в папке локализации с префиксом "new".
2. ClearLocalizationCache
Очистить кэш локализации.
### 6 ### Вызовы скриптов ###
1. DKTools.Localization.locale - Получить текущую локаль
2. DKTools.Localization.locales - Получить массив локалей
3. DKTools.Localization.language - Получить текущий язык
4. DKTools.Localization.languages - Получить массив языков
5. DKTools.Localization.getText(text) - Получить локализованный текст
6. DKTools.Localization.getPrevLocale() - Получить предыдущую локаль
7. DKTools.Localization.getNextLocale() - Получить следующую локаль
8. DKTools.Localization.getPrevLanguage() - Получить предыдущий язык
9. DKTools.Localization.getNextLanguage() - Получить следующий язык
10. DKTools.Localization.selectLocale(locale) - Установить локаль (асинхронная операция, возвращает Promise)
11. DKTools.Localization.selectPrevLocale() - Выбрать предыдущую локаль (асинхронная операция, возвращает Promise)
12. DKTools.Localization.selectNextLocale() - Выбрать следующую локаль (асинхронная операция, возвращает Promise)
13. DKTools.Localization.addChangeLocaleListener(function) - Добавить слушателя изменения локали (синхронная/асинхронная функция)
14. DKTools.Localization.getPrimaryLocale() - Получить основную локаль
15. DKTools.Localization.getPrimaryLanguage() - Получить основной язык
### 7 ### Как добавить опцию в YEP_OptionsCore.js ###
1. Поместите плагин YEP_OptionsCore ВЫШЕ в списке плагинов
2. Включите параметр "Показывать команду" в плагине локализации
3. Добавьте новую опцию в YEP_OptionsCore.js со следующими параметрами:
Symbol: locale
Show/Hide:
show = LocalizationParam.get('Show Options Command');
Draw Option Code:
var rect = this.itemRectForText(index);
var statusWidth = this.statusWidth();
var titleWidth = rect.width - statusWidth;
this.resetTextColor();
this.changePaintOpacity(this.isCommandEnabled(index));
this.drawOptionsName(index);
this.drawText(this.statusText(index), titleWidth, rect.y, statusWidth, 'center');
Скачать с сайта DK Plugins: dk-plugins.ru/mv/system/localization/
Дополнительно:
Обзоры:
Поддержать автора: dk-plugins.ru/donate/
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
sim22x пишет: Чем он отличается от Iavra Localization ?
1. Плагин поддерживает глубину перевода, то есть в локализованном тексте можно делать ссылки на другой локализованный текст. Плагин будет автоматически вставлять необходимые куски.
2. Возможность использовать разные изображения для каждого языка.
3. Для больших текстов есть кэширование, чтобы плагин каждый раз не переводил текст.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет:
sim22x пишет: Чем он отличается от Iavra Localization ?
1. Плагин поддерживает глубину перевода, то есть в локализованном тексте можно делать ссылки на другой локализованный текст. Плагин будет автоматически вставлять необходимые куски.
2. Возможность использовать разные изображения для каждого языка.
3. Для больших текстов есть кэширование, чтобы плагин каждый раз не переводил текст.
1. Это то, что между скобками [t] [/t] ?
Можно просто заменить их на {имя_ключа} и оно работает также.
Например
2. Кнопочка интересная, но она не меняет изображение, если выбран русский язык.
Можно ли её вызвать её отрисовку по команде в любой момент? (не менюшку, а саму кнопку)
Есть ли команда для апдейта локализации?
Т.е. я изменяю строки в файле локализации, ввожу это команду в консоле, тексты перезагружаются и я могу посмотреть изменения в игре.
Сейчас это работает только через смену языка.
Но если у меня уже установлен русский язык я не могу апдейтить через команду DKTools.Localization.locale = 'ru'
Текст остаётся прежним.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
sim22x пишет:
DK пишет:
sim22x пишет: Чем он отличается от Iavra Localization ?
1. Плагин поддерживает глубину перевода, то есть в локализованном тексте можно делать ссылки на другой локализованный текст. Плагин будет автоматически вставлять необходимые куски.
2. Возможность использовать разные изображения для каждого языка.
3. Для больших текстов есть кэширование, чтобы плагин каждый раз не переводил текст.
1. Это то, что между скобками [t] [/t] ?
Можно просто заменить их на {имя_ключа} и оно работает также.
НапримерCode:"parse_depth0": "parse_depth0 [t]parse_depth3[/t]" заменил на "parse_depth0": "parse_depth011 {parse_depth3}"
2. Кнопочка интересная, но она не меняет изображение, если выбран русский язык.
Можно ли её вызвать её отрисовку по команде в любой момент? (не менюшку, а саму кнопку)
Есть ли команда для апдейта локализации?
Т.е. я изменяю строки в файле локализации, ввожу это команду в консоле, тексты перезагружаются и я могу посмотреть изменения в игре.
Сейчас это работает только через смену языка.
Но если у меня уже установлен русский язык я не могу апдейтить через команду DKTools.Localization.locale = 'ru'
Текст остаётся прежним.
1. Да, это и есть ссылки. Теги [t][/t] и {} взаимозаменяемые.
2. Да, не меняет, стоит подумать об этом. Команды на отрисовку нет.
3. Попробуйте в консоли вызвать DKTools.Localization.loadLocalizationData()
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
DK пишет: 1. Да, это и есть ссылки. Теги [t][/t] и {} взаимозаменяемые.
2. Да, не меняет, стоит подумать об этом. Команды на отрисовку нет.
3. Попробуйте в консоли вызвать DKTools.Localization.loadLocalizationData()
2. Над отрисовкой тоже подумайте
Я бы рисовал разные кнопки с разными функциями.
3. Работает, спасиб.
Что то не понял фишку с ограничением глубины ссылок. В Iavra можно было ссылаться сколь угодно глубоко.
Хочу установить уровень глубины 999, а нельзя
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
sim22x пишет:
DK пишет: 1. Да, это и есть ссылки. Теги [t][/t] и {} взаимозаменяемые.
2. Да, не меняет, стоит подумать об этом. Команды на отрисовку нет.
3. Попробуйте в консоли вызвать DKTools.Localization.loadLocalizationData()
2. Над отрисовкой тоже подумайте
Я бы рисовал разные кнопки с разными функциями.
3. Работает, спасиб.
Что то не понял фишку с ограничением глубины ссылок. В Iavra можно было ссылаться сколь угодно глубоко.
Хочу установить уровень глубины 999, а нельзя
Не знаю, зачем делать глубину 999. Чем больше глубина, тем дольше текст будет переводиться, да и запутаться будет проще, когда в игру будете встраивать
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если отключить плагин DKTools_Localization.js, то проект на загружается.
Хорошо бы довести плагин до формата plug&play. Что бы все менюшки (на правой кнопке) были на месте, а не только две
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
В демоверсии ?sim22x пишет: Да, возможно и не нужно.
Если отключить плагин DKTools_Localization.js, то проект на загружается.
Хорошо бы довести плагин до формата plug&play. Что бы все менюшки (на правой кнопке) были на месте, а не только две
Что за менюшки ?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Перенёс на чистый проект, всё норм.
Кнопка на титульном экране рисуется всегда и не зависит от флага отрисовки true/false.
Функцию с выбором языка хотелось бы видеть и в опциях игры, а не только на титульном экране.
В файле плагина лучше бы прописать все доступные команды (на апдейт, смену языка...)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Он нужен для отрисовки текста на экране, хотелось бы вставлять туда значения ключей из json.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
sim22x пишет: А можешь сделать совместимость с этим плагином rpgmaker.su/f109/%5Bmv%5Dscreen-variables-3586/
Он нужен для отрисовки текста на экране, хотелось бы вставлять туда значения ключей из json.
Ты пробовал вместо ключей использовать ссылки или в json использовать ссылки ?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Добавлена совместимость с DKTools 3.0.0
Исправлены ошибки
Добавлены 2 команды плагина
Добавлена подробная инструкция по использованию
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Leprikon01
-
- Не в сети
- Захожу иногда
-
- Сообщений: 228
- Спасибо получено: 145
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Leprikon01 пишет: Сделали бы наглядное видео, а то по "инструкции" может разобраться только профи.
Добавил обзоры
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1. Добавлена поддержка браузеров и мобильных устройств
2. Добавлена новая опция: Использование новых файлов для сохранения обновленных тегов
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
1. Совместимость с DKTools 6.1+
2. Исправлена ошибка в функции DKTools.Localization.addChangeLocaleListener
UPD
Версия 3.11
1. Исправлена проблема некорректной загрузки локали
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что нового:
1. Добавлена функция разделения перевода на несколько json файлов.
2. Если json файл имеет неправильную структуру, то игра теперь не виснет, а выдает ошибку, и показывает где она была совершена.
3. Удалил настройку использования новых файлов для обновления тэгов локализации. Теперь новые тэги всегда сохраняются в новые файлы.
4. Функция обновления тэгов вышла из стадии бэта версии. Добавлена поддержка парсинга всех активных плагинов. То есть команда плагина выдергивает тэги из настроек всех плагинов.
5. Больше совместимости с другими плагинами.
6. Добавлен 1 спец символ для сообщений. Теперь можно вывести название текущего языка в сообщении.
7. Обновил файл помощи.
8. Обновлена демоверсия. Добавлены новые примеры.
P.S. Обращаю ваше внимание, что для работы новой версии плагина необходима последняя (на текущий момент) версия плагина DKTools - 7.0.0.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Что нового:
1. Добавлена возможность изменять язык в настройках игры.
2. Добавлена совместимость с плагином YEP_QuestJournal (подробнее в обновленной справке).
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
