Current time: 28.11.2021, 09:16 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Создание скриптов с поддержкой мультиязычности
» SN:T + json
Author Message
Berserker Offline
Administrators

Posts: 15537
Post: #31

daemon_n, файлы грузятся в порядке приоритетов модов. Русский загрузится раньше английского всегда и первым займёт нужные ключи.

Пример:
rus.json
hero_name = оррин
mage_power = превращение в козла

eng.json
hero_name = Zan'Zarrak
mage_power = turns into goat
welcome_message = Greetings, @hero@

Итоговый словарь в памяти игры:
hero_name = оррин
mage_power = превращение в козла
welcome_message = Greetings, @hero@


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
15.09.2020 01:35
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5165
Post: #32

(01.12.2017 23:26)Berserker Wrote:     я пишу так:
Попутно создаю Lang\test.json с содержимым:
Code:
{
  "hero_is_x_age": "@hero@ достиг @age@ лет"
}

Выводится: «Berserer достиг 27 лет» Ab

Из каких элементов состоит локализация:
1) Автоматическая подгрузка языковых json-файлов формата { "глобальный уникальный ключ": "перевод", ... }
2) Совпадающие строки из разных модов подчиняются приоритетам модов (последний установленный весомее)
3) Перевод по ключу можно загрузить из ЕРМ или плагина.
4) В перевод можно передать до 7 именованных параметров (плагинам — неограниченно), которые будут подставлены в перевод при необходимости.
@имя параметра@
5) SN:T(ключ)/?(z-переменная)/(параметр 1)/(значение 1)/(параметр N)/(значение N);
Команда получает перевод строки или возвращает сам ключ, если перевод не найден.

Berserker, в последствии ограничение в 7 параметров осталось для ERA2 ?
06.11.2020 00:41
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15537
Post: #33

Bes, осталось ограничение на 16 параметров для ЕРМ команд. Как ты понимаешь, 2 + 7 * 2 = 16. То есть да.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.11.2020 01:24
Find all posts by this user Quote this message in a reply
Elmore Offline

Posts: 358
Post: #34

(05.06.2021 01:20)Elmore Wrote:  Как вы делаете переводы своих модов? Вопрос к тем, кто не пишет перевод самостоятельно, а пользуется переводчиком.

Можно сделать такую схему:
- Все тексты выносить в отдельный файл и оформлять по единому шаблону. Например в ini с минимум лишнего или типа того.
- В программе указать файл для перевода и файл для сохранения текста. Подходит для любых языков.
- Программой автоматом пройтись по файлу, по очереди брать каждую строку, кидать в браузере на translate.google.com и записывать в новый файл с таким же шаблоном.

google api бесплатное не в счет, там нет ИИ алгоритмов при переводе. Только в платной версии.

Berserker, увидел json из ACM. Ну суть та же. Если все будут использовать единый метод, прога возьмет весь текст и прогонит через переводчик (в ней как раз используется js и nodejs).
Я себе для другой задачи сделал, может смогу и для героев сделать. Сложно сказать, т.к. вижу код вместе с текстом используется и он не всегда даже выделен какими-то спец символами, но вроде гугл такое не переводит. Только вот там распространяемый архив будет небольшой, а для запуска автоматически скачает полноценный браузер ~700мб.
Либо же должно "что-то" еще произойти, чтобы все новые моды хранили тексты только в json (а еще лучше в специальной папке "languages/lang_name" и менять язык где-то в файле-конфиге). Это даст возможность, хоть и не идеально, но получить мультиязычность модов.


Image: widget.png?style=banner2
(This post was last modified: 05.06.2021 23:28 by Elmore.)
05.06.2021 23:21
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15537
Post: #35

Естественно нужно экранировать параметры. @...@ — имя параметра, его нужно до перевода заменить на что-либо, что переводчики оставляют нетронутыми, например [1], а затем вернуть назад. Кода в json нет.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.06.2021 00:29
Find all posts by this user Quote this message in a reply
Elmore Offline

Posts: 358
Post: #36

{~%Z6}%Z5%Z-7 Fire Shield{~}
Вот с таким сложнее. Там может еще что-то быть, кроме {}, @@, % ?


Image: widget.png?style=banner2
06.06.2021 01:07
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15537
Post: #37

Точно, цветные тексты.
-) {~.....}, включая {~}
-) %что-то, где %% — просто процент.
-) @...@
-) {текст} — это выделенный текст. При желании можно открывающую и закрывающую скобки рискнуть тоже обернуть. Зависит от того, портит ли их переводчик.
Это старый код, в новых проектах подставление ЕРМ 1 переменных через %... не рекомендуется категорически, но АСМ был написан до Эры 3.

{~%Z6}%Z5%Z-7 Fire Shield{~}
=>
[1][2][3] Fire Shield[4]
=>
[1][2][3] Огненный щит[4]


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.06.2021 01:57
Find all posts by this user Quote this message in a reply
Elmore Offline

Posts: 358
Post: #38

Сложность в определении нужного. В данном случае текст из 2х слов и получается:
[{~%Z6}][%Z5%Z-7] [Fire Shield][{~}]
от % до пробела, если не %%
Но пока думаю, как определять процент в середине слова и как обрабатывать... остальное легко.
Такая ситуация "{}%что-то" или "%что-то{}" слитно может быть где-то, кроме начала и конца строки?


Image: widget.png?style=banner2
(This post was last modified: 06.06.2021 02:20 by Elmore.)
06.06.2021 02:17
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15537
Post: #39

Это регулярные выражения или разбор на лету по токенам, как удобнее. Может быть что угодно.
По процентам регулярка вида: /(%[A-Za-z]\-?\d*+)/
Там латинская буква + опциональное число.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
06.06.2021 02:53
Find all posts by this user Quote this message in a reply
Elmore Offline

Posts: 358
Post: #40

Berserker, в json возможна ситуация кроме key.key.value ?


Image: widget.png?style=banner2
(This post was last modified: 11.06.2021 15:14 by Elmore.)
11.06.2021 15:11
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 15537
Post: #41

Elmore, в переводных json могут быть объекты любой вложенности, которые заканчиваются парой ключ: строка

{ "a": { "b": { "c": "value"

Они преобразуются в плоскую карту вида "a.b.c.d": "value" самой Эрой. Ключи вида "a.b.c.d" тоже поддерживаются.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
11.06.2021 16:25
Find all posts by this user Quote this message in a reply
Elmore Offline

Posts: 358
Post: #42

Понял, значит будет проверять чуть больше.


Image: widget.png?style=banner2
(This post was last modified: 11.06.2021 17:34 by Elmore.)
11.06.2021 17:33
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2021 MyBB Group