Garry's Mod

Garry's Mod

45 ratings
[Garry's Mod] Мультиязычность или поддержка нескольких языков в аддоне
By Airwaves
[boosty.to]
   
Award
Favorite
Favorited
Unfavorite
О чём речь?

ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤ ㅤㅤㅤㅤㅤㅤㅤ ㅤㅤㅤ*КЛАЦАЙ СЮДА*[discord.gg]
Речь идёт о добавлении нескольких языков в ваш аддон, с синхронизацией языка аддона с языком игры. На первый взгляд всё может показаться довольно сложным, но на деле всё куда проще и понятней. К сожалению в данном способе присутствует парочка небольших недостатков о которых чуть позже.

Мы не будем вдаваться в подробности "Как декомпелировать аддон?" или "Как редактировать код в аддоне?". Нет, раз вас интересует эта тема, значит вы уже знаете как подобное провернуть. Поэтому начнём сразу же с редактирования структуры аддона, будем разбирать всё на примере моего аддона:
https://gtm.steamproxy.vip/sharedfiles/filedetails/?id=3087423208
Поддержку каких языков мы можем добавить?
Собственно любой язык который нам предлагает игра в меню мы можем добавить. Вот скриншот таблицы выбора языка в игре:
Доступные языки в Gmod

А вот вам подробная таблица с флагами, названиями и необходимой папкой в структуре аддона:
Флаг
Язык
Название папки в структуре аддона
1
Болгарский
bg
2
Чешский
cz
3
Швейцарский
ch
4
Немецкий
de
5
Греческий
gr
6
Пиратский (Английский)
pi
7
Английский
en
8
Испанский
es
9
Эстонский
ee
10
Финский
fi
11
Французский
fr
12
Иврит
il
13
Хорватский
hr
14
Венгерский
hu
15
Ирландский
ie
16
Японский
jp
17
Корейский
kr
18
Литовский
lt
19
Люксембургский
lu
20
Норвежский
no
21
Польский
pl
22
Португальский (Бразилия)
br
23
Португальский (Португалия)
pt
24
Русский
ru
25
Словацкий
sk
26
Шведский
se
27
Тайский
th
28
Турецкий
tr
29
Украинский
uk
30
Вьетнамский
vn
31
Китайский
cn
32
Тайваньский
tw
Создание структуры
Начнём с того, что общая структура обычных аддонов выглядит примерно так:
📁addons └📁[Ваш аддон] ㅤ└📁lua - или любая другая папка в зависимости от содержания аддона ㅤㅤ└📄[Какие-то файлы]

Нам же нужно в папке с аддоном создать дополнительную папку resource, в которой и будет содержаться все наши транслейшены. А в ней уже папки с переводами на каждый необходимый вам язык, вот как это выглядит в моём аддоне:
📁addons └📁[Мой аддон] ㅤ├📁lua ㅤ└📁resource ㅤㅤ├📁en - английский перевод ㅤㅤ├📁ru - русский перевод ㅤㅤ└📁uk - украинский перевод ㅤㅤㅤ└📄lang.properties - файл в котором содержатся перевод, название может быть любым

В каждой из этих папок находится файлы любое_название.properties, которые мы создаём и открываем с помощью любого редактора кода (можно и обычный текстовый редактор, но лучше использовать что-то более профессиональное) и пока что скрываем.

И да, вы можете для каждого языка хранить переводы в одном или нескольких .properties файлах, значения это не имеет.
Добавление перевода
Для начала поясню как это работает
Обычно когда в игре мы видим какой-то текст (дело касается аддонов), то мы видим сразу же то что прописано в файле с кодом этого аддона, если конечно же автор аддона не добавлял поддержку переводов заранее. Так вот, мы же вместо текста будем создавать так называемые (мной и возможно кем-то ещё) тэги, которые уже и будут брать в зависимости от текущего языка в игре необходимый текст.

Грубо говоря вместо такой модели получаемого текста в игре:
🛠️Текст в коде ➔ 💻Текст который мы видим в игре

будем использовать такую:
🛠️Тэги в коде ➔ 🌍Получаем язык игры ➔ 📄Файл с переводом тэгов в текст соответствующего языка ➔ 💻Текст который мы видим в игре

Создаём тэги и добавляем перевод
Опять же, всё рассматриваем на примере моего аддона. В инструменте, который он добавляет на данный момент отображается название на русском языке "Улики", оно прописано во второй строчке в .lua файле аддона:
TOOL.Name = "Улики"

чтобы изменить название я НЕ убирая кавычек убираю слово "Улики" и создаю любой удобный мне тэг с символом решётки # в начале, без использования пробелов:

Теперь возвращаемся к открытому ранее файлу с переводом. Я, например, хочу добавить сейчас английский версию названия, поэтому ранее я открывал в папке с аддоном файл .properties в папке en (таблица с названиями папок для каждого конкретного языка находится в начале руководства).
ВАЖНО!!! Теперь в этом файле пропускаем первую строчку и начиная со второй строки вписываем наш тэг без кавычек, пробелов и решётки. Вот как это выглядит у меня:
//Это первая АБСОЛЮТНО пустая строчка tool.lootcreator.name=Loot

Ну и соответственно русский перевод также прописываем в .properties файле только уже не в папке en, а в папке ru
//Это первая АБСОЛЮТНО пустая строчка tool.lootcreator.name=Улика

Сохраняем все файлы и наслаждаемся результатом. И да, ели игра не найдёт перевода на тот или иной язык она будет брать те что есть, но в приоритете английский.
Недостатки и особенности
Недостатки
  • Если использовать тэги для перевода текста в чате или просто для вывода в консоль, то в самой консоли мы будем видеть тэги вместо текста.
  • Текст в некоторых местах мы не сможем перевести на разные языки (например кнопки в стандартной Derma).

Особенности
  • Сообщения в чате не будут переводиться если вы используете стандартный чат

Список недостатков и особенностей будет дополняться в зависимости от возникших вопросах в комментариях и моего "вникания" в тему переводов.
Заключение
Понимаю что данная тема мало кому интересна, но надеюсь я помогу тем немногим заинтересованным которые зайдут сюда. Кроме того, я всегда буду рад помочь в комментариях и отвечу на любые интересующие вас вопросы. На этом всё...

26 Comments
Airwaves  [author] 28 Dec, 2023 @ 12:49am 
Всё же изменил превьюшку руководства, чтобы всякие политичные Васи не так сильно обижались, на наличие флага украины.
Airwaves  [author] 8 Oct, 2023 @ 7:54am 
Благодарю
Agent Algrin Z 8 Oct, 2023 @ 7:51am 
Ух сука флаг Украины АААААА! БЭСИТ! ХАХЛЫ!!!!!!
А если честно, то норм руководство. Автор постарался :steamthumbsup:
Lirantio 3 Sep, 2023 @ 3:29am 
Что, так и не насрали?
Airwaves  [author] 28 Jul, 2023 @ 6:49am 
Неспособность автора привлечь внимание аудитории к своему контенту...

- Ну да, я же писал гайд по узконаправленной тематике именно для того чтобы привлечь как можно больше людей, а не для того чтобы помочь тем немногим, кто ищет информацию по мультиязычности.
Sah4r's | Tpy_JIuc 27 Jul, 2023 @ 3:38pm 
Существует ли Евросоюзский язык?
Sah4r's | Tpy_JIuc 27 Jul, 2023 @ 3:36pm 
Ставить флаг Украины, ЕС, США - означает неспособность автора по-другому привлечь внимание аудитории к своему контенту.
engineer 25 Jun, 2023 @ 6:00am 
нам нужен аддон на гугл переводчик
Simon Henriksson 19 Jun, 2023 @ 11:47am 
Обожаю смотреть как люди тригеррятся на флаги
xlebio 18 Jun, 2023 @ 2:51am 
мультиязычность классная тема, я такое делал на своей последней карте. главное - найти добровольцев на перевод