Учимся делать перевод

ну а хуле ебать в россии живём

Требования:

  • Понять переводимую вещь. Достаточно исследовать её в игре.
  • Обзавестить набором переводчиков и постоянно работающим поисковиком.
  • Руки или аналогичное.
  • Аккаунт на Github.

Процесс перевода:

  1. Ставим GitHub Desktop. Логинимся под своим аккаунтом. Если умеете пользоваться, то можете не читать этот гайд, а сразу переводить.
  2. Идём сюда. Жмём кнопку справа-сверху:
  3. Открываем програму GitHub Desktop и жмём сочетание CTRL+Shift+O.
  4. Ищем свой форк среди списка (в красном прямоугольнике должен быть ваш никнейм на Github) и жмём Clone, папку для сохранения можете выбрать любую другую:

Вариант #1:

  1. Переходим в ту папку, куда скачали репозиторий ранее, ищем заветный файл tgstation.dme и открываем его.
  2. Откроется DreamMaker, в нём открываем снова tgstation.dme двойным кликом, жмём CTRL+F, откроется панелька поиска, делаем всё как на картинке (вместо "camera" подставляем нужное слово или фразу без перевода):
  3. Нажимаем Find All и ждём долго. Внизу должны быть результаты поиска. Каждая строка это результат. Двойным кликом жмём по результату и откроется окно с кодом, для базового перевода нам нужны переменные name и desc, остальные лучше не трогать:
  4. Переводим и жмём CTRL+S. Это сохранит результат! Можем продолжить переводить дальше, пока не надоест.

Вариант #2:

  1. Для тех, кто хочет заниматься переводом на адекватном уровне: https://hackmd.io/gMPO4INZQUCArHeHE_V9yg

Отправка результата:

  1. Когда надоело переводить, открываем GitHub Desktop, видим то, что мы изменили. Жмём кнопку Commit to master (штука в красном прямоугольнике это название коммита. Можете писать туда что угодно. Чуть ниже описание, там также):
  2. Потом сюда:
  3. Идём снова сюда.
  4. Жмём опять кнопку справа-сверху:
  5. Нас перекинет на наш форк. Видим наш коммит, жмём:
  6. Внизу будет список изменений и другая не очень важная информация. Кликаем сюда:
  7. В поле Title пишем понятное и короткое описание того, что вы хотели бы впилить.
  8. На вкладке Write тоже заполняем всё. Комментарии можете не убирать, их всё равно не будет видно. На вкладке Preview можете посмотреть как будет выглядеть готовая версия.
  9. Жмём , если всё готово.
  10. Да. Это так.

Адвансед перевод:

Проки для перевода:

  • to_chat(userref, "ENGLISH_TEXT") - то, что выводится пользователю. Пример:
to_chat(user, "<span class='notice'>You slot \the [TC] into [parent] and charge its internal uplink.</span>")

То, что закрыто в квадратные скобки [ПЕРЕМЕННАЯ] является переменной и не требует перевода. Они могут быть переставлены или заменены при надобности, если это может улучшить перевод. Всё остальное можно смело переводить (кроме HTML-тегов, естественно).

Также, макросы по типу \the или \a должны ПОЛНОСТЬЮ отсутствовать в конечном переводе. Они не используются.

Пример перевода:

to_chat(user, "<span class='notice'>Вставляю [TC] в [parent] заряжая его внутренний передатчик.</span>")
  • visible_message("СООБЩЕНИЕ", "СООБЩЕНИЕ ПОЛЬЗОВАТЕЛЮ (ЕСЛИ ТОТ УКАЗАН)", "СООБЩЕНИЕ ДЛЯ СЛЕПЫХ", ) - то, что выводится всем пользователям в радиусе. Пример:
target_turf.visible_message("<span class='warning'>[target_turf] collapses under its own weight into a puddle of goop and undigested debris!</span>")

В некоторых случаях придётся использовать процедуру capitalize(msg). Она заставляет текст внутри себя писаться с большой буквы.

Пример перевода:

target_turf.visible_message("<span class='warning'><b>[capitalize(target_turf)]</b> рушится под собственным весом в лужу из слизи и рыхлого мусора!</span>")

Тут стоит заметить, что был добавлен тег <b></b>. Его стоит использовать тоже по возможности, так как он делает часть текста более заметной для акцентирования внимания пользователя на важном.

  • Сообщения из проков examine(mob/user).

То, что пользователь видит при осмотре той или иной штуки. Пример:

/obj/item/pinpointer/wayfinding/examine(mob/user)
	. = ..()
	. += "<hr>"
	var/msg = "Its tracking indicator reads "
	if(target)
		var/obj/machinery/navbeacon/wayfinding/B  = target
		msg += "\"[B.codes["wayfinding"]]\"."
	else
		msg = "Its tracking indicator is blank."
	if(owner)
		msg += " It belongs to [owner]."
	. += msg

Переменная . есть объект наследования. Если проще, то это дополняет часть вывода основной процедуры examine().

Пример перевода:

/obj/item/pinpointer/wayfinding/examine(mob/user)
	. = ..()
	. += "<hr>"
	var/msg = "Отслеживающий индикатор сообщает "
	if(target)
		var/obj/machinery/navbeacon/wayfinding/B  = target
		msg += "\"[B.codes["wayfinding"]]\"."
	else
		msg = "Отслеживающий индикатор пуст."
	if(owner)
		msg += " Принадлежит [owner]."
	. += msg

Тут есть особенности. Макросы \n не стоит удалять из текста, так как они отвечают за перенос строки. Если их не будет, то текст станет выглядеть как каша.

Ещё существует прок examine_more() и подразумевает собой более детальный осмотр той или иной вещи. Он переводится аналогично.

  • Прок say("СООБЩЕНИЕ"). Пример:
say("<span class='robot'>Thank you for recycling, [user.first_name()]! Here is [rfnd_amt ? "[rfnd_amt] credits." : "a freshly synthesized costume!"]</span>")

Здесь можно наблюдать особенную переменную с двумя вариантами: [rfnd_amt ? "[rfnd_amt] credits." : "a freshly synthesized costume!"]. Она работает очень просто. Сначала идёт переменная, которая проверяется, это у нас rfnd_amt, если она не 0, то выводится первый вариант сообщения "[rfnd_amt] credits.", иначе же второй "a freshly synthesized costume!".

Пример перевода:

say("<span class='robot'>Спасибо за переработку, [user.first_name()]! Получи [rfnd_amt ? "[rfnd_amt] кредитов." : "свежий синтезированный костюмчик!"]</span>")

Важно, что в процедурах say() не должно быть HTML-тегов (возможны исключения как в этом примере, учтите).

Научите склонять именааа!

Для этого существует прок sklonenie("СООБЩЕНИЕ", ПАДЕЖ, ПОЛ). Пример:

"<b>[user]</b> [message_verb_continuous] <b>[sklonenie(src.name, VINITELNI, gender)]</b>[message_hit_area] [sklonenie(I.name, TVORITELNI, I.gender)]!"

На выходе будет: Александр Рофлер бьёт Ричарда Женьку в голову катаной!

Все типы падежей:

  • RODITELNI
  • DATELNI
  • VINITELNI
  • TVORITELNI
  • PREDLOZHNI
Select a repo