From 7eab0e0fb438e7206ad946b4b85d400b5f00d150 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:08:45 +0300 Subject: [PATCH 01/34] Create mime.ftl --- Resources/Locale/ru-RU/abilities/mime.ftl | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Resources/Locale/ru-RU/abilities/mime.ftl diff --git a/Resources/Locale/ru-RU/abilities/mime.ftl b/Resources/Locale/ru-RU/abilities/mime.ftl new file mode 100644 index 00000000000..3a69365966b --- /dev/null +++ b/Resources/Locale/ru-RU/abilities/mime.ftl @@ -0,0 +1,5 @@ +mime-cant-speak = Данный вами обет молчания не позволяет вам говорить. +mime-invisible-wall-popup = { CAPITALIZE($mime) } упирается в невидимую стену! +mime-invisible-wall-failed = Вы не можете создать здесь невидимую стену. +mime-not-ready-repent = Вы ещё не готовы покаяться за нарушенный обет. +mime-ready-to-repent = Вы чувствуете, что готовы снова дать обет молчания. From 242004f5cd23c40c11b12d1f7ce3b22bd04ee62e Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:09:44 +0300 Subject: [PATCH 02/34] Add files via upload --- Resources/Locale/ru-RU/_lib.ftl | 34 +++++++ Resources/Locale/ru-RU/_units.ftl | 97 +++++++++++++++++++ .../Locale/ru-RU/connection-messages.ftl | 42 ++++++++ Resources/Locale/ru-RU/generic.ftl | 11 +++ Resources/Locale/ru-RU/misc-computers.ftl | 2 + Resources/Locale/ru-RU/shell.ftl | 57 +++++++++++ Resources/Locale/ru-RU/visual_effects.ftl | 1 + Resources/Locale/ru-RU/voice-mask.ftl | 6 ++ 8 files changed, 250 insertions(+) create mode 100644 Resources/Locale/ru-RU/_lib.ftl create mode 100644 Resources/Locale/ru-RU/_units.ftl create mode 100644 Resources/Locale/ru-RU/connection-messages.ftl create mode 100644 Resources/Locale/ru-RU/generic.ftl create mode 100644 Resources/Locale/ru-RU/misc-computers.ftl create mode 100644 Resources/Locale/ru-RU/shell.ftl create mode 100644 Resources/Locale/ru-RU/visual_effects.ftl create mode 100644 Resources/Locale/ru-RU/voice-mask.ftl diff --git a/Resources/Locale/ru-RU/_lib.ftl b/Resources/Locale/ru-RU/_lib.ftl new file mode 100644 index 00000000000..47bf82346c8 --- /dev/null +++ b/Resources/Locale/ru-RU/_lib.ftl @@ -0,0 +1,34 @@ +### Special messages used by internal localizer stuff. + +# Used internally by the PRESSURE() function. +zzzz-fmt-pressure = + { TOSTRING($divided, "G3") } { $places -> + [0] кПа + [1] МПа + [2] ГПа + [3] ТПа + [4] ППа + *[5] ??? + } +# Used internally by the POWERWATTS() function. +zzzz-fmt-power-watts = + { TOSTRING($divided, "G3") } { $places -> + [0] Вт + [1] кВт + [2] МВт + [3] ГВт + [4] ТВт + *[5] ??? + } +# Used internally by the POWERJOULES() function. +# Reminder: 1 joule = 1 watt for 1 second (multiply watts by seconds to get joules). +# Therefore 1 kilowatt-hour is equal to 3,600,000 joules (3.6MJ) +zzzz-fmt-power-joules = + { TOSTRING($divided, "G3") } { $places -> + [0] Дж + [1] кДж + [2] МДж + [3] ГДж + [4] ТДж + *[5] ??? + } diff --git a/Resources/Locale/ru-RU/_units.ftl b/Resources/Locale/ru-RU/_units.ftl new file mode 100644 index 00000000000..8f0deb7e3ca --- /dev/null +++ b/Resources/Locale/ru-RU/_units.ftl @@ -0,0 +1,97 @@ +## Standard SI prefixes + +units-si--y = и +units-si--z = з +units-si--a = а +units-si--f = ф +units-si--p = п +units-si--n = н +units-si--u = мк +units-si--m = м +units-si = { "" } +units-si-k = к +units-si-m = М +units-si-g = Г +units-si-t = Т +units-si-p = П +units-si-e = Э +units-si-z = З +units-si-y = И + +### Long form + +units-si--y-long = иокто +units-si--z-long = зепто +units-si--a-long = атто +units-si--f-long = фемто +units-si--p-long = пико +units-si--n-long = нано +units-si--u-long = микро +units-si--m-long = милли +units-si-long = { "" } +units-si-k-long = кило +units-si-m-long = мега +units-si-g-long = гига +units-si-t-long = тера +units-si-p-long = пета +units-si-e-long = экса +units-si-z-long = зетта +units-si-y-long = иотта + +## Pascals (Pressure) + +units-u--pascal = мкПа +units-m--pascal = мПа +units-pascal = Па +units-k-pascal = кПа +units-m-pascal = МПа +units-g-pascal = ГПа +units-u--pascal-long = микропаскаль +units-m--pascal-long = миллипаскаль +units-pascal-long = паскаль +units-k-pascal-long = килопаскаль +units-m-pascal-long = мегапаскаль +units-g-pascal-long = гигапаскаль + +## Watts (Power) + +units-u--watt = мкВт +units-m--watt = мВт +units-watt = Вт +units-k-watt = кВт +units-m-watt = МВт +units-g-watt = ГВт +units-u--watt-long = микроватт +units-m--watt-long = милливатт +units-watt-long = ватт +units-k-watt-long = киловатт +units-m-watt-long = мегаватт +units-g-watt-long = гигаватт + +## Joule (Energy) + +units-u--joule = µДж +units-m--joule = мДж +units-joule = Дж +units-k-joule = кДж +units-m-joule = МДж +units-u--joule-long = Микроджоуль +units-m--joule-long = Миллиджоуль +units-joule-long = Джоуль +units-k-joule-long = Килоджоуль +units-m-joule-long = Мегаджоуль + +## Kelvin (Temperature) + +units-u--kelvin = мкК +units-m--kelvin = мК +units-kelvin = К +units-k-kelvin = кК +units-m-kelvin = MK +units-g-kelvin = ГК +units-u--kelvin-long = микрокельвин +units-m--kelvin-long = милликельвин +units-kelvin-long = кельвин +units-k-kelvin-long = килокельвин +units-m-kelvin-long = мегакельвин +units-g-kelvin-long = гигакельвин diff --git a/Resources/Locale/ru-RU/connection-messages.ftl b/Resources/Locale/ru-RU/connection-messages.ftl new file mode 100644 index 00000000000..c440bc603e7 --- /dev/null +++ b/Resources/Locale/ru-RU/connection-messages.ftl @@ -0,0 +1,42 @@ +whitelist-not-whitelisted = Вас нет в вайтлисте. +# proper handling for having a min/max or not +whitelist-playercount-invalid = + { $min -> + [0] Вайтлист для этого сервера применяется только для числа игроков ниже { $max }. + *[other] + Вайтлист для этого сервера применяется только для числа игроков выше { $min } { $max -> + [2147483647] -> так что, возможно, вы сможете присоединиться позже. + *[other] -> и ниже { $max } игроков, так что, возможно, вы сможете присоединиться позже. + } + } +whitelist-not-whitelisted-rp = Вас нет в вайтлисте. Чтобы попасть в вайтлист, посетите наш Discord (ссылку можно найти по адресу https://discord.station14.ru). +cmd-whitelistadd-desc = Добавить игрока в вайтлист сервера. +cmd-whitelistadd-help = Использование: whitelistadd +cmd-whitelistadd-existing = { $username } уже находится в вайтлисте! +cmd-whitelistadd-added = { $username } добавлен в вайтлист +cmd-whitelistadd-not-found = Не удалось найти игрока '{ $username }' +cmd-whitelistadd-arg-player = [player] +cmd-whitelistremove-desc = Удалить игрока с вайтлиста сервера. +cmd-whitelistremove-help = Использование: whitelistremove +cmd-whitelistremove-existing = { $username } не находится в вайтлисте! +cmd-whitelistremove-removed = { $username } удалён с вайтлиста +cmd-whitelistremove-not-found = Не удалось найти игрока '{ $username }' +cmd-whitelistremove-arg-player = [player] +cmd-kicknonwhitelisted-desc = Кикнуть всег игроков не в белом списке с сервера. +cmd-kicknonwhitelisted-help = Использование: kicknonwhitelisted +ban-banned-permanent = Этот бан можно только обжаловать. Для этого посетите { $link }. +ban-banned-permanent-appeal = Этот бан можно только обжаловать. Для этого посетите { $link }. +ban-expires = Вы получили бан на { $duration } минут, и он истечёт { $time } по UTC (для москосвкого времени добавьте 3 часа). +ban-banned-1 = Вам, или другому пользователю этого компьютера или соединения, запрещено здесь играть. +ban-banned-2 = Причина бана: "{ $reason }" +ban-banned-3 = Попытки обойти этот бан, например, путём создания нового аккаунта, будут фиксироваться. +soft-player-cap-full = Сервер заполнен! +panic-bunker-account-denied = Этот сервер находится в режиме "Бункер", часто используемом в качестве меры предосторожности против рейдов. Новые подключения от аккаунтов, не соответствующих определённым требованиям, временно не принимаются. Повторите попытку позже +panic-bunker-account-denied-reason = Этот сервер находится в режиме "Бункер", часто используемом в качестве меры предосторожности против рейдов. Новые подключения от аккаунтов, не соответствующих определённым требованиям, временно не принимаются. Повторите попытку позже Причина: "{ $reason }" +panic-bunker-account-reason-account = Ваш аккаунт Space Station 14 слишком новый. Он должен быть старше { $minutes } минут +panic-bunker-account-reason-overall = + Необходимо минимальное отыгранное Вами время на сервере — { $hours } { $hours -> + [one] час + [few] часа + *[other] часов + }. diff --git a/Resources/Locale/ru-RU/generic.ftl b/Resources/Locale/ru-RU/generic.ftl new file mode 100644 index 00000000000..39878d0f3f4 --- /dev/null +++ b/Resources/Locale/ru-RU/generic.ftl @@ -0,0 +1,11 @@ +### Generic, general words, which fit into multiple contexts + +generic-not-available-shorthand = Н/Д +generic-article-a = это +generic-article-an = это +generic-unknown = неизвестно +generic-unknown-title = Неизвестно +generic-error = ошибка +generic-invalid = недействительно +generic-hours = часов +generic-playtime-title = Игровое время diff --git a/Resources/Locale/ru-RU/misc-computers.ftl b/Resources/Locale/ru-RU/misc-computers.ftl new file mode 100644 index 00000000000..95f4c614bd3 --- /dev/null +++ b/Resources/Locale/ru-RU/misc-computers.ftl @@ -0,0 +1,2 @@ +radar-console-window-title = Консоль сканера массы +shuttle-console-window-title = Консоль шаттла diff --git a/Resources/Locale/ru-RU/shell.ftl b/Resources/Locale/ru-RU/shell.ftl new file mode 100644 index 00000000000..c45eb6ad76e --- /dev/null +++ b/Resources/Locale/ru-RU/shell.ftl @@ -0,0 +1,57 @@ +### for technical and/or system messages + + +## General + +shell-server-cannot = Сервер не может выполнить это. +shell-command-success = Команда выполнена. +shell-invalid-command = Неверная команда. +shell-invalid-command-specific = Неверная команда { $commandName }. +shell-cannot-run-command-from-server = Вы не можете выполнить эту команду с сервера. +shell-only-players-can-run-this-command = Только игроки могут выполнять эту команду. +shell-must-be-attached-to-entity = Для выполнения этой команды вы должны быть прикреплены к сущности. + +## Arguments + +shell-need-exactly-one-argument = Нужен ровно один аргумент. +shell-wrong-arguments-number-need-specific = + Нужно { $properAmount } { $properAmount -> + [one] аргумент + [few] аргумента + *[other] аргументов + }, было { $currentAmount } { $currentAmount -> + [one] аргумент + [few] аргумента + *[other] аргументов + }. +shell-argument-must-be-number = Аргумент должен быть числом. +shell-argument-must-be-boolean = Аргумент должен быть boolean. +shell-wrong-arguments-number = Неправильное количество аргументов. +shell-need-between-arguments = Нужно от { $lower } до { $upper } аргументов! +shell-need-minimum-arguments = Нужно не менее { $minimum } аргументов! +shell-need-minimum-one-argument = Нужен хотя бы один аргумент! +shell-argument-uid = EntityUid + +## Guards + +shell-entity-is-not-mob = Целевая сущность не является мобом! +shell-invalid-entity-id = Недопустимый ID сущности. +shell-invalid-grid-id = Недопустимый ID сетки. +shell-invalid-map-id = Недопустимый ID карты. +shell-invalid-entity-uid = { $uid } не является допустимым идентификатором uid. +shell-invalid-bool = Неверный boolean. +shell-entity-uid-must-be-number = EntityUid должен быть числом. +shell-could-not-find-entity = Не удалось найти сущность { $entity }. +shell-could-not-find-entity-with-uid = Не удалось найти сущность с uid { $uid }. +shell-entity-with-uid-lacks-component = Сущность с uid { $uid } не имеет компонента { $componentName }. +shell-invalid-color-hex = Недопустимый HEX-цвет! +shell-target-player-does-not-exist = Целевой игрок не существует! +shell-target-entity-does-not-have-message = Целевая сущность не имеет { $missing }! +shell-timespan-minutes-must-be-correct = { $span } не является допустимым промежутком времени в минутах. +shell-argument-must-be-prototype = Аргумент { $index } должен быть ${ prototypeName }! +shell-argument-number-must-be-between = Аргумент { $index } должен быть числом от { $lower } до { $upper }! +shell-argument-station-id-invalid = Аргумент { $index } должен быть валидным station id! +shell-argument-map-id-invalid = Аргумент { $index } должен быть валидным map id! +shell-argument-number-invalid = Аргумент { $index } должен быть валидным числом! +# Hints +shell-argument-username-hint = diff --git a/Resources/Locale/ru-RU/visual_effects.ftl b/Resources/Locale/ru-RU/visual_effects.ftl new file mode 100644 index 00000000000..78c6b0fade3 --- /dev/null +++ b/Resources/Locale/ru-RU/visual_effects.ftl @@ -0,0 +1 @@ +stealth-visual-effect = [color=lightslategray]{ CAPITALIZE($target) } переливается странной прозрачностью.[/color] diff --git a/Resources/Locale/ru-RU/voice-mask.ftl b/Resources/Locale/ru-RU/voice-mask.ftl new file mode 100644 index 00000000000..5852de89186 --- /dev/null +++ b/Resources/Locale/ru-RU/voice-mask.ftl @@ -0,0 +1,6 @@ +voice-mask-name-change-window = Изменение имени голосовой маски +voice-mask-name-change-info = Введите имя, которое вы хотите сымитировать. +voice-mask-name-change-set = Изменить имя +voice-mask-name-change-set-description = Измените имя, которое другие будут слышать, когда вы говорите. +voice-mask-popup-success = Имя успешно изменено. +voice-mask-popup-failure = Имя не может быть изменено. From bcd16d57f6dff57caac245b47ad6683b26da860e Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:11:08 +0300 Subject: [PATCH 03/34] Create accents.ftl --- Resources/Locale/ru-RU/accent/accents.ftl | 87 +++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 Resources/Locale/ru-RU/accent/accents.ftl diff --git a/Resources/Locale/ru-RU/accent/accents.ftl b/Resources/Locale/ru-RU/accent/accents.ftl new file mode 100644 index 00000000000..3da1bc9be9b --- /dev/null +++ b/Resources/Locale/ru-RU/accent/accents.ftl @@ -0,0 +1,87 @@ +# Cat accent +accent-words-cat-1 = Мяу! +accent-words-cat-2 = Mиау. +accent-words-cat-3 = Мурррр! +accent-words-cat-4 = Ххссс! +accent-words-cat-5 = Мррау. +accent-words-cat-6 = Мяу? +accent-words-cat-7 = Mяф. +# Dog accent +accent-words-dog-1 = Гав! +accent-words-dog-2 = Тяв! +accent-words-dog-3 = Вуф! +accent-words-dog-4 = Гаф. +accent-words-dog-5 = Гррр. +# Mouse +accent-words-mouse-1 = Скуик! +accent-words-mouse-2 = Пиип! +accent-words-mouse-3 = Чууу! +accent-words-mouse-4 = Ииии! +accent-words-mouse-5 = Пип! +accent-words-mouse-6 = Уиип! +accent-words-mouse-7 = Иип! +# Mumble +accent-words-mumble-1 = Ммпмв! +accent-words-mumble-2 = Мммв мррввв! +accent-words-mumble-3 = Мммв мпвф! +# Silicon +accent-words-silicon-1 = Бип. +accent-words-silicon-2 = Буп. +accent-words-silicon-3 = Жжжж. +accent-words-silicon-4 = Биб-буп. +# Xeno +accent-words-xeno-1 = Хиссс. +accent-words-xeno-2 = Хиссссс! +accent-words-xeno-3 = Хисссшу... +accent-words-xeno-4 = Хисс...! +# Zombie +accent-words-zombie-1 = Грруааа... +accent-words-zombie-2 = Ммуааа... +accent-words-zombie-3 = Маазгиии... +accent-words-zombie-4 = Гррррр... +accent-words-zombie-5 = Ууаагххххх... +accent-words-zombie-6 = Граааааоооууллл... +accent-words-zombie-7 = Мазгии... Ммааазгиии.. +accent-words-zombie-8 = Мазгххх... +accent-words-zombie-9 = Маазгг... +accent-words-zombie-10 = Граааааа... +# Moth Zombie +accent-words-zombie-moth-1 = Одееежда... +accent-words-zombie-moth-2 = Ооообувь... +accent-words-zombie-moth-3 = Свеееет... +accent-words-zombie-moth-4 = Лаааампы... +accent-words-zombie-moth-5 = Шааапк... Шаааапки... +accent-words-zombie-moth-6 = Шааарфы... +# Generic Aggressive +accent-words-generic-aggressive-1 = Грр! +accent-words-generic-aggressive-2 = Рррр! +accent-words-generic-aggressive-3 = Грр... +accent-words-generic-aggressive-4 = Гррав!! +# Duck +accent-words-duck-1 = Ква! +accent-words-duck-2 = Ква. +accent-words-duck-3 = Ква? +accent-words-duck-4 = Ква ква! +# Chicken +accent-words-chicken-1 = Кудах! +accent-words-chicken-2 = Кудах. +accent-words-chicken-3 = Кудах? +accent-words-chicken-4 = Кудах тах-тах! +# Pig +accent-words-pig-1 = Хрю. +accent-words-pig-2 = Хрю? +accent-words-pig-3 = Хрю! +accent-words-pig-4 = Хрю Хрю! +# Kangaroo +accent-words-kangaroo-1 = Грр! +accent-words-kangaroo-2 = Ххссс! +accent-words-kangaroo-3 = Шррр! +accent-words-kangaroo-4 = Чууу! +# Slimes +accent-words-slimes-1 = Блюмп. +accent-words-slimes-2 = Блимпаф? +accent-words-slimes-3 = Бламп! +accent-words-slimes-4 = Блааамп... +accent-words-slimes-5 = Блабл бламп! +# Mothroach +accent-words-mothroach-1 = Чирик! From 1814420f5de5b9f4ddfa5de7b37f2b23af76d977 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:11:26 +0300 Subject: [PATCH 04/34] Add files via upload --- Resources/Locale/ru-RU/accent/archaic.ftl | 453 ++++++++++++++++++++ Resources/Locale/ru-RU/accent/dwarf.ftl | 285 ++++++++++++ Resources/Locale/ru-RU/accent/italian.ftl | 105 +++++ Resources/Locale/ru-RU/accent/mobster.ftl | 40 ++ Resources/Locale/ru-RU/accent/pirate.ftl | 67 +++ Resources/Locale/ru-RU/accent/scrambled.ftl | 7 + 6 files changed, 957 insertions(+) create mode 100644 Resources/Locale/ru-RU/accent/archaic.ftl create mode 100644 Resources/Locale/ru-RU/accent/dwarf.ftl create mode 100644 Resources/Locale/ru-RU/accent/italian.ftl create mode 100644 Resources/Locale/ru-RU/accent/mobster.ftl create mode 100644 Resources/Locale/ru-RU/accent/pirate.ftl create mode 100644 Resources/Locale/ru-RU/accent/scrambled.ftl diff --git a/Resources/Locale/ru-RU/accent/archaic.ftl b/Resources/Locale/ru-RU/accent/archaic.ftl new file mode 100644 index 00000000000..c35d5e90ef8 --- /dev/null +++ b/Resources/Locale/ru-RU/accent/archaic.ftl @@ -0,0 +1,453 @@ +# Referenced a lot of sites and used my own intuition to determine which fits well compared to our modern day speech patterns. Predominantly old modern english and other miscellaneous archaic terms. Sources I used includes shakespeare text and google searches, along with terms from the original version of the PR for this accent. + + +# I also included a lot of changes to formality and word choice to fit better with the accent. + +accent-archaic-replaced-1 = tell +accent-archaic-replacement-1 = advise +accent-archaic-replaced-2 = so far +accent-archaic-replacement-2 = as of this date +accent-archaic-replaced-3 = let me know +accent-archaic-replacement-3 = awaiting your reply +accent-archaic-replaced-4 = get +accent-archaic-replacement-4 = secure +accent-archaic-replaced-4 = use +accent-archaic-replacement-4 = utilize +accent-archaic-replaced-5 = consider +accent-archaic-replacement-5 = deem +accent-archaic-replaced-6 = my +accent-archaic-replacement-6 = mine +accent-archaic-replaced-7 = you +accent-archaic-replacement-7 = thou +accent-archaic-replaced-8 = your +accent-archaic-replacement-8 = thy +accent-archaic-replaced-9 = yours +accent-archaic-replacement-9 = thine +accent-archaic-replaced-10 = yourself +accent-archaic-replacement-10 = thyself +accent-archaic-replaced-11 = shall +accent-archaic-replacement-11 = shalt +accent-archaic-replaced-12 = has +accent-archaic-replacement-12 = hast +accent-archaic-replaced-13 = have +accent-archaic-replacement-13 = hath +accent-archaic-replaced-14 = are +accent-archaic-replacement-14 = art +accent-archaic-replaced-15 = does +accent-archaic-replacement-15 = doth +accent-archaic-replaced-16 = presented +accent-archaic-replacement-16 = bestowed +accent-archaic-replaced-17 = wonderful +accent-archaic-replacement-17 = wonderous +accent-archaic-replaced-18 = by chance +accent-archaic-replacement-18 = perchance +accent-archaic-replaced-19 = this +accent-archaic-replacement-19 = thee +accent-archaic-replaced-20 = nothing +accent-archaic-replacement-20 = naught +accent-archaic-replaced-21 = yes +accent-archaic-replacement-21 = aye +accent-archaic-replaced-22 = beg +accent-archaic-replacement-22 = beseech +accent-archaic-replaced-23 = gloom +accent-archaic-replacement-23 = drear +accent-archaic-replaced-24 = full +accent-archaic-replacement-24 = fraught +accent-archaic-replaced-25 = rush +accent-archaic-replacement-25 = make haste +accent-archaic-replaced-26 = careless +accent-archaic-replacement-26 = heedless +accent-archaic-replaced-27 = from this point onwards +accent-archaic-replacement-27 = hereinafter +accent-archaic-replaced-28 = of this +accent-archaic-replacement-28 = hereof +accent-archaic-replaced-29 = under this +accent-archaic-replacement-29 = hereunder +accent-archaic-replaced-30 = of that +accent-archaic-replacement-30 = thereof +accent-archaic-replaced-31 = by what +accent-archaic-replacement-31 = whereby +accent-archaic-replaced-32 = by which +accent-archaic-replacement-32 = whereby +accent-archaic-replaced-33 = under that +accent-archaic-replacement-33 = thereunder +accent-archaic-replaced-34 = in what +accent-archaic-replacement-34 = wherein +accent-archaic-replaced-35 = after that +accent-archaic-replacement-35 = thereafter +accent-archaic-replaced-36 = security +accent-archaic-replacement-36 = guard +accent-archaic-replaced-37 = sec +accent-archaic-replacement-37 = guard +accent-archaic-replaced-38 = seccie +accent-archaic-replacement-38 = guard +accent-archaic-replaced-39 = seccies +accent-archaic-replacement-39 = guards +accent-archaic-replaced-40 = gib +accent-archaic-replacement-40 = butcher +accent-archaic-replaced-41 = begs +accent-archaic-replacement-41 = pleads +accent-archaic-replaced-42 = fancy +accent-archaic-replacement-42 = furbished +accent-archaic-replaced-43 = onto +accent-archaic-replacement-43 = unto +accent-archaic-replaced-44 = can i +accent-archaic-replacement-44 = am i allowed to +accent-archaic-replaced-45 = upon +accent-archaic-replacement-45 = unto +accent-archaic-replaced-46 = where +accent-archaic-replacement-46 = whither +accent-archaic-replaced-47 = obligated +accent-archaic-replacement-47 = allegiant +accent-archaic-replaced-48 = and +accent-archaic-replacement-48 = an +accent-archaic-replaced-49 = accuse +accent-archaic-replacement-49 = appeach +accent-archaic-replaced-50 = accused +accent-archaic-replacement-50 = appeached +accent-archaic-replaced-51 = was +accent-archaic-replacement-51 = have been +accent-archaic-replaced-52 = stain +accent-archaic-replacement-52 = taint +accent-archaic-replaced-53 = stained +accent-archaic-replacement-53 = tainted +accent-archaic-replaced-54 = take place +accent-archaic-replacement-54 = befall +accent-archaic-replaced-55 = taken place +accent-archaic-replacement-55 = befall'n +accent-archaic-replaced-56 = happened +accent-archaic-replacement-56 = befall'n +accent-archaic-replaced-57 = probably +accent-archaic-replacement-57 = belike +accent-archaic-replaced-58 = most likely +accent-archaic-replacement-58 = belike +accent-archaic-replaced-59 = madenning +accent-archaic-replacement-59 = bemadding +accent-archaic-replaced-60 = suggest +accent-archaic-replacement-60 = bespeak +accent-archaic-replaced-53 = request +accent-archaic-replacement-53 = bespeak +accent-archaic-replaced-61 = indicate +accent-archaic-replacement-61 = bespeak +accent-archaic-replaced-62 = immediately +accent-archaic-replacement-62 = betimes +accent-archaic-replaced-63 = at once +accent-archaic-replacement-63 = betimes +accent-archaic-replaced-64 = song +accent-archaic-replacement-64 = catch +accent-archaic-replaced-65 = altar +accent-archaic-replacement-65 = chantry +accent-archaic-replaced-66 = merchant +accent-archaic-replacement-66 = chapman +accent-archaic-replaced-67 = salesman +accent-archaic-replacement-67 = chapman +accent-archaic-replaced-68 = shopkeeper +accent-archaic-replacement-68 = chapman +accent-archaic-replaced-69 = shopkeeper +accent-archaic-replacement-69 = chapman +accent-archaic-replaced-70 = cheater +accent-archaic-replacement-70 = cog +accent-archaic-replaced-71 = cheat +accent-archaic-replacement-71 = cozen +accent-archaic-replaced-72 = swindler +accent-archaic-replacement-72 = cog +accent-archaic-replaced-80 = ilk +accent-archaic-replacement-80 = consort +accent-archaic-replaced-81 = partnership +accent-archaic-replacement-81 = consort +accent-archaic-replaced-83 = crown +accent-archaic-replacement-83 = coronal +accent-archaic-replaced-84 = burden +accent-archaic-replacement-84 = fardel +accent-archaic-replaced-85 = certainly +accent-archaic-replacement-85 = forsooth +accent-archaic-replaced-86 = indeed +accent-archaic-replacement-86 = forsooth +accent-archaic-replaced-87 = obese +accent-archaic-replacement-87 = corpulent +accent-archaic-replaced-88 = occured +accent-archaic-replacement-88 = befall'n +accent-archaic-replaced-89 = carved +accent-archaic-replacement-89 = carven +accent-archaic-replaced-90 = coward +accent-archaic-replacement-90 = craven +accent-archaic-replaced-91 = idiot +accent-archaic-replacement-91 = cur +accent-archaic-replaced-92 = ruin +accent-archaic-replacement-92 = defile +accent-archaic-replaced-93 = ruined +accent-archaic-replacement-93 = defiled +accent-archaic-replaced-94 = before +accent-archaic-replacement-94 = ere +accent-archaic-replaced-95 = pretend +accent-archaic-replacement-95 = feign +accent-archaic-replaced-96 = forsee +accent-archaic-replacement-96 = forbode +accent-archaic-replaced-97 = abandoned +accent-archaic-replacement-97 = forlorn +accent-archaic-replaced-98 = desolate +accent-archaic-replacement-98 = forlorn +accent-archaic-replaced-99 = abandon +accent-archaic-replacement-99 = forsake +accent-archaic-replaced-100 = fraught +accent-archaic-replacement-100 = full +accent-archaic-replaced-101 = old woman +accent-archaic-replacement-101 = gammer +accent-archaic-replaced-102 = frown +accent-archaic-replacement-102 = glower +accent-archaic-replaced-103 = chop +accent-archaic-replacement-103 = hew +accent-archaic-replaced-104 = slice +accent-archaic-replacement-104 = hew +accent-archaic-replaced-105 = slice +accent-archaic-replacement-105 = hew +accent-archaic-replaced-106 = evil +accent-archaic-replacement-106 = ill +accent-archaic-replaced-107 = wrong +accent-archaic-replacement-107 = ill +accent-archaic-replaced-108 = sharp +accent-archaic-replacement-108 = keen +accent-archaic-replaced-109 = reluctant +accent-archaic-replacement-109 = loth +accent-archaic-replaced-110 = corner +accent-archaic-replacement-110 = nook +accent-archaic-replaced-111 = true +accent-archaic-replacement-111 = sooth +accent-archaic-replaced-112 = faint +accent-archaic-replacement-112 = swoon +accent-archaic-replaced-113 = twisted +accent-archaic-replacement-113 = thrawn +accent-archaic-replaced-114 = misshapen +accent-archaic-replacement-114 = thrawn +accent-archaic-replaced-115 = stubborn +accent-archaic-replacement-115 = thrawn +accent-archaic-replaced-116 = obstinate +accent-archaic-replacement-116 = thrawn +accent-archaic-replaced-117 = travel +accent-archaic-replacement-117 = traverse +accent-archaic-replaced-118 = thwart +accent-archaic-replacement-118 = foil +accent-archaic-replaced-119 = thwart +accent-archaic-replacement-119 = stop +accent-archaic-replaced-120 = refuse +accent-archaic-replacement-120 = shun +accent-archaic-replaced-121 = pest +accent-archaic-replacement-121 = varmint +accent-archaic-replaced-122 = ghost +accent-archaic-replacement-122 = wraith +accent-archaic-replaced-123 = apparition +accent-archaic-replacement-123 = wraith +accent-archaic-replaced-124 = long ago +accent-archaic-replacement-124 = yore +accent-archaic-replaced-125 = stupid +accent-archaic-replacement-125 = foolish +accent-archaic-replaced-126 = yay +accent-archaic-replacement-126 = hurrah +accent-archaic-replaced-127 = hooray +accent-archaic-replacement-127 = hurrah +accent-archaic-replaced-128 = old +accent-archaic-replacement-128 = olde +accent-archaic-replaced-129 = right now +accent-archaic-replacement-129 = forthwith +accent-archaic-replaced-130 = boss +accent-archaic-replacement-130 = sire +accent-archaic-replaced-131 = clown +accent-archaic-replacement-131 = jester +accent-archaic-replaced-132 = fight +accent-archaic-replacement-132 = duel +accent-archaic-replaced-133 = write +accent-archaic-replacement-133 = inscribe +accent-archaic-replaced-134 = draw +accent-archaic-replacement-134 = inscribe +accent-archaic-replaced-135 = one time +accent-archaic-replacement-135 = once +accent-archaic-replaced-136 = two times +accent-archaic-replacement-136 = twice +accent-archaic-replaced-137 = three times +accent-archaic-replacement-137 = thrice +accent-archaic-replaced-138 = security officer +accent-archaic-replacement-138 = guardsman +accent-archaic-replaced-139 = sec off +accent-archaic-replacement-139 = guardsman +accent-archaic-replaced-140 = secoff +accent-archaic-replacement-140 = guardsman +accent-archaic-replaced-141 = bar +accent-archaic-replacement-141 = tavern +accent-archaic-replaced-142 = passenger +accent-archaic-replacement-142 = peasant +accent-archaic-replaced-143 = hi +accent-archaic-replacement-143 = greetings +accent-archaic-replaced-144 = hey +accent-archaic-replacement-144 = greetings +accent-archaic-replaced-145 = heya +accent-archaic-replacement-145 = greetings +accent-archaic-replaced-146 = hello +accent-archaic-replacement-146 = salutations +accent-archaic-replaced-147 = yeah +accent-archaic-replacement-147 = indeed +accent-archaic-replaced-148 = yep +accent-archaic-replacement-148 = indeed +accent-archaic-replaced-149 = yup +accent-archaic-replacement-149 = indeed +accent-archaic-replaced-150 = ok +accent-archaic-replacement-150 = alright +accent-archaic-replaced-151 = k +accent-archaic-replacement-151 = alright +accent-archaic-replaced-152 = okay +accent-archaic-replacement-152 = alright +accent-archaic-replaced-153 = sure +accent-archaic-replacement-153 = alright +accent-archaic-replaced-154 = below +accent-archaic-replacement-154 = beneath +accent-archaic-replaced-155 = the +accent-archaic-replacement-155 = thy +accent-archaic-replaced-156 = need +accent-archaic-replacement-156 = require +accent-archaic-replaced-157 = maybe +accent-archaic-replacement-157 = perhaps +accent-archaic-replaced-158 = is +accent-archaic-replacement-158 = 's +accent-archaic-replaced-159 = alcohol +accent-archaic-replacement-159 = booze +accent-archaic-replaced-160 = liquor +accent-archaic-replacement-160 = booze +accent-archaic-replaced-161 = id +accent-archaic-replacement-161 = identification +accent-archaic-replaced-162 = crate +accent-archaic-replacement-162 = chest +accent-archaic-replaced-163 = locker +accent-archaic-replacement-163 = closet +accent-archaic-replaced-164 = do +accent-archaic-replacement-164 = doth +accent-archaic-replaced-165 = beg +accent-archaic-replacement-165 = plead +accent-archaic-replaced-166 = saw +accent-archaic-replacement-166 = observed +accent-archaic-replaced-167 = food +accent-archaic-replacement-167 = grub +accent-archaic-replaced-168 = delicious +accent-archaic-replacement-168 = exquisite +accent-archaic-replaced-169 = cool +accent-archaic-replacement-169 = enjoyable +accent-archaic-replaced-170 = think +accent-archaic-replacement-170 = believe +accent-archaic-replaced-171 = indeed +accent-archaic-replacement-171 = certainly +accent-archaic-replaced-172 = help +accent-archaic-replacement-172 = assist +accent-archaic-replaced-173 = now +accent-archaic-replacement-173 = immediately +accent-archaic-replaced-174 = or +accent-archaic-replacement-174 = else +accent-archaic-replaced-175 = will +accent-archaic-replacement-175 = shall +accent-archaic-replaced-176 = i am thirsty +accent-archaic-replacement-176 = i require a drink +accent-archaic-replaced-177 = hate +accent-archaic-replacement-177 = loathe +accent-archaic-replaced-178 = old +accent-archaic-replacement-178 = olden +accent-archaic-replaced-179 = bike horn +accent-archaic-replacement-179 = honker +accent-archaic-replaced-180 = flashlight +accent-archaic-replacement-180 = torch +accent-archaic-replaced-181 = pen +accent-archaic-replacement-181 = quill +accent-archaic-replaced-182 = lobby +accent-archaic-replacement-182 = anteroom +accent-archaic-replaced-183 = syndicate +accent-archaic-replacement-183 = traitor +accent-archaic-replaced-184 = syndi +accent-archaic-replacement-184 = traitor +accent-archaic-replaced-185 = good +accent-archaic-replacement-185 = well +accent-archaic-replaced-187 = fate +accent-archaic-replacement-187 = doom +accent-archaic-replaced-188 = space +accent-archaic-replacement-188 = void +accent-archaic-replaced-189 = i'm +accent-archaic-replacement-189 = I am +accent-archaic-replaced-190 = I'm +accent-archaic-replacement-190 = I am +accent-archaic-replaced-191 = chef +accent-archaic-replacement-191 = cook +accent-archaic-replaced-192 = captain +accent-archaic-replacement-192 = lord +accent-archaic-replaced-193 = chaplain +accent-archaic-replacement-193 = priest +accent-archaic-replaced-194 = chapel +accent-archaic-replacement-194 = church +accent-archaic-replaced-195 = ask +accent-archaic-replacement-195 = request +accent-archaic-replaced-196 = ask for +accent-archaic-replacement-196 = request +accent-archaic-replaced-197 = move +accent-archaic-replacement-197 = relocate +accent-archaic-replaced-198 = will +accent-archaic-replacement-198 = shalt +accent-archaic-replaced-200 = bad +accent-archaic-replacement-200 = unpleasant +accent-archaic-replaced-201 = got rid of +accent-archaic-replacement-201 = removed +accent-archaic-replaced-202 = guy +accent-archaic-replacement-202 = man +accent-archaic-replaced-203 = guys +accent-archaic-replacement-203 = people +accent-archaic-replaced-204 = airlock +accent-archaic-replacement-204 = door +accent-archaic-replaced-205 = sorry +accent-archaic-replacement-205 = i apologise +accent-archaic-replaced-206 = hey +accent-archaic-replacement-206 = pardon me +accent-archaic-replaced-207 = chair +accent-archaic-replacement-207 = seating +accent-archaic-replaced-208 = can +accent-archaic-replacement-208 = may +accent-archaic-replaced-209 = kill +accent-archaic-replacement-209 = murder +accent-archaic-replaced-210 = guess +accent-archaic-replacement-210 = surmise +accent-archaic-replaced-211 = wow +accent-archaic-replacement-211 = astonishing +accent-archaic-replaced-212 = why +accent-archaic-replacement-212 = for what reason +accent-archaic-replaced-213 = im +accent-archaic-replacement-213 = i am +accent-archaic-replaced-214 = sink +accent-archaic-replacement-214 = taps +accent-archaic-replaced-215 = beaker +accent-archaic-replacement-215 = vial +accent-archaic-replaced-216 = toolbox +accent-archaic-replacement-216 = case +accent-archaic-replaced-217 = rubber stamp +accent-archaic-replacement-217 = wax stamp +accent-archaic-replaced-218 = tiles +accent-archaic-replacement-218 = flooring +accent-archaic-replaced-219 = maintenance +accent-archaic-replacement-219 = alleyways +accent-archaic-replaced-220 = going on +accent-archaic-replacement-220 = happening +accent-archaic-replaced-221 = tasty +accent-archaic-replacement-221 = delectable +accent-archaic-replaced-222 = myself +accent-archaic-replacement-222 = mineself +accent-archaic-replaced-223 = i am hungry +accent-archaic-replacement-223 = i require grub +accent-archaic-replaced-224 = you suck +accent-archaic-replacement-224 = thou are foul +accent-archaic-replaced-225 = please +accent-archaic-replacement-225 = i request of thee +accent-archaic-replaced-226 = secway +accent-archaic-replacement-226 = patrol cart +accent-archaic-replaced-227 = janicart +accent-archaic-replacement-227 = cart +accent-archaic-replaced-228 = soda +accent-archaic-replacement-228 = drink +accent-archaic-replaced-229 = pop +accent-archaic-replacement-229 = drink +accent-archaic-replaced-230 = how +accent-archaic-replacement-230 = in what way +accent-archaic-replaced-231 = wants +accent-archaic-replacement-231 = wishes +accent-archaic-replaced-232 = want +accent-archaic-replacement-232 = wish for diff --git a/Resources/Locale/ru-RU/accent/dwarf.ftl b/Resources/Locale/ru-RU/accent/dwarf.ftl new file mode 100644 index 00000000000..e96a47938e2 --- /dev/null +++ b/Resources/Locale/ru-RU/accent/dwarf.ftl @@ -0,0 +1,285 @@ +# these specifically mostly come from examples of specific scottish-english (not necessarily scots) verbiage +# https://en.wikipedia.org/wiki/Scotticism +# https://en.wikipedia.org/wiki/Scottish_English +# https://www.cs.stir.ac.uk/~kjt/general/scots.html + +accent-dwarf-words-1 = девочка +accent-dwarf-words-replace-1 = дэвочшка +accent-dwarf-words-2 = мальчик +accent-dwarf-words-replace-2 = малчшык +accent-dwarf-words-3 = мужчина +accent-dwarf-words-replace-3 = мужчшына +accent-dwarf-words-4 = женщина +accent-dwarf-words-replace-4 = женчшына +accent-dwarf-words-5 = делать +accent-dwarf-words-replace-5 = дэлат +accent-dwarf-words-6 = не +accent-dwarf-words-replace-6 = нэ +accent-dwarf-words-7 = нее +accent-dwarf-words-replace-7 = нээ +accent-dwarf-words-8 = я +accent-dwarf-words-replace-8 = Йа +accent-dwarf-words-9 = есть +accent-dwarf-words-replace-9 = йэст +accent-dwarf-words-10 = перейти +accent-dwarf-words-replace-10 = пэрэйты +accent-dwarf-words-11 = знать +accent-dwarf-words-replace-11 = знат +accent-dwarf-words-12 = и +accent-dwarf-words-replace-12 = ыэ +accent-dwarf-words-13 = вы +accent-dwarf-words-replace-13 = вы +accent-dwarf-words-14 = ты +accent-dwarf-words-replace-14 = ты +accent-dwarf-words-15 = приветствую +accent-dwarf-words-replace-15 = прывэтству +accent-dwarf-words-16 = привет +accent-dwarf-words-replace-16 = прывэт +accent-dwarf-words-17 = все +accent-dwarf-words-replace-17 = всэ +accent-dwarf-words-18 = от +accent-dwarf-words-replace-18 = од +accent-dwarf-words-19 = здравия +accent-dwarf-words-replace-19 = здравыйа +accent-dwarf-words-20 = меня +accent-dwarf-words-replace-20 = мэнйа +accent-dwarf-words-21 = тебя +accent-dwarf-words-replace-21 = тэбйа +accent-dwarf-words-22 = себя +accent-dwarf-words-replace-22 = сэбйа +accent-dwarf-words-23 = где +accent-dwarf-words-replace-23 = гдэ +accent-dwarf-words-24 = ой +accent-dwarf-words-replace-24 = ойё +accent-dwarf-words-25 = маленький +accent-dwarf-words-replace-25 = мэлкый +accent-dwarf-words-26 = большой +accent-dwarf-words-replace-26 = громадный +accent-dwarf-words-27 = сука +accent-dwarf-words-replace-27 = кнурла +accent-dwarf-words-28 = даа +accent-dwarf-words-replace-28 = Ойии +accent-dwarf-words-29 = конечно +accent-dwarf-words-replace-29 = конэчшно +accent-dwarf-words-30 = да +accent-dwarf-words-replace-30 = Ойи +accent-dwarf-words-31 = тоже +accent-dwarf-words-replace-31 = тожэ +accent-dwarf-words-32 = мой +accent-dwarf-words-replace-32 = мойё +accent-dwarf-words-33 = нет +accent-dwarf-words-replace-33 = нэт +accent-dwarf-words-34 = папа +accent-dwarf-words-replace-34 = уру +accent-dwarf-words-35 = мама +accent-dwarf-words-replace-35 = дельва +accent-dwarf-words-36 = срочник +accent-dwarf-words-replace-36 = свэжак +accent-dwarf-words-37 = новичок +accent-dwarf-words-replace-37 = свэжак +accent-dwarf-words-38 = стажёр +accent-dwarf-words-replace-38 = свэжак +accent-dwarf-words-39 = профессионал +accent-dwarf-words-replace-39 = бывалый +accent-dwarf-words-40 = ветеран +accent-dwarf-words-replace-40 = бывалый +accent-dwarf-words-41 = блять +accent-dwarf-words-replace-41 = вррон +accent-dwarf-words-42 = если +accent-dwarf-words-replace-42 = эслы +accent-dwarf-words-43 = следует +accent-dwarf-words-replace-43 = слэдуэт +accent-dwarf-words-44 = сделал +accent-dwarf-words-replace-44 = сдэлал +accent-dwarf-words-45 = пизда +accent-dwarf-words-replace-45 = награ +accent-dwarf-words-46 = никто +accent-dwarf-words-replace-46 = ныкто +accent-dwarf-words-47 = делайте +accent-dwarf-words-replace-47 = дэлать +accent-dwarf-words-48 = здравствуй +accent-dwarf-words-replace-48 = здарова +accent-dwarf-words-49 = очко +accent-dwarf-words-replace-49 = дыра +accent-dwarf-words-50 = синдикатовцы +accent-dwarf-words-replace-50 = злодеи +accent-dwarf-words-51 = капитан +accent-dwarf-words-replace-51 = кэпытан +accent-dwarf-words-52 = беги +accent-dwarf-words-replace-52 = дэри ноги +accent-dwarf-words-53 = волосы +accent-dwarf-words-replace-53 = борода +accent-dwarf-words-54 = вода +accent-dwarf-words-replace-54 = пиво +accent-dwarf-words-55 = выпить +accent-dwarf-words-replace-55 = выпыт пиво +accent-dwarf-words-56 = пить +accent-dwarf-words-replace-56 = пить пиво +accent-dwarf-words-57 = имею +accent-dwarf-words-replace-57 = ымэу +accent-dwarf-words-58 = напиток +accent-dwarf-words-replace-58 = пиво +accent-dwarf-words-59 = водка +accent-dwarf-words-replace-59 = пиво +accent-dwarf-words-60 = блин +accent-dwarf-words-replace-60 = рыбьы головэжкы +accent-dwarf-words-61 = в принципе +accent-dwarf-words-replace-61 = в прынцыпэ +accent-dwarf-words-62 = короче +accent-dwarf-words-replace-62 = корочэ +accent-dwarf-words-63 = вообще +accent-dwarf-words-replace-63 = вообчшэ +accent-dwarf-words-64 = ну +accent-dwarf-words-replace-64 = нуэ +accent-dwarf-words-66 = еда +accent-dwarf-words-replace-66 = жратва +accent-dwarf-words-67 = еды +accent-dwarf-words-replace-67 = жратвы +accent-dwarf-words-68 = эй +accent-dwarf-words-replace-68 = эйэ +accent-dwarf-words-69 = что +accent-dwarf-words-replace-69 = чшто +accent-dwarf-words-70 = зачем +accent-dwarf-words-replace-70 = зачэм +accent-dwarf-words-71 = почему +accent-dwarf-words-replace-71 = почэму +accent-dwarf-words-72 = сказать +accent-dwarf-words-replace-72 = сказанут +accent-dwarf-words-73 = своим +accent-dwarf-words-replace-73 = своым +accent-dwarf-words-74 = её +accent-dwarf-words-replace-74 = йейё +accent-dwarf-words-75 = двигай +accent-dwarf-words-replace-75 = двыгай +accent-dwarf-words-76 = двигаться +accent-dwarf-words-replace-76 = двыгатсйа +accent-dwarf-words-77 = не был +accent-dwarf-words-replace-77 = нэ был +accent-dwarf-words-78 = сейчас +accent-dwarf-words-replace-78 = сэйчшас +accent-dwarf-words-79 = волшебник +accent-dwarf-words-replace-79 = вельдуност +accent-dwarf-words-80 = маг +accent-dwarf-words-replace-80 = вельнудост +accent-dwarf-words-81 = чтобы +accent-dwarf-words-replace-81 = чштобы +accent-dwarf-words-82 = для +accent-dwarf-words-replace-82 = длйа +accent-dwarf-words-83 = даже +accent-dwarf-words-replace-83 = дажэ +accent-dwarf-words-84 = ай +accent-dwarf-words-replace-84 = айэ +accent-dwarf-words-85 = мышь +accent-dwarf-words-replace-85 = мыш +accent-dwarf-words-86 = клоун +accent-dwarf-words-replace-86 = шут +accent-dwarf-words-87 = друг +accent-dwarf-words-replace-87 = брат +accent-dwarf-words-88 = проблема +accent-dwarf-words-replace-88 = закавыка +accent-dwarf-words-90 = разрешите +accent-dwarf-words-replace-90 = разрэшытэ +accent-dwarf-words-91 = брифинг +accent-dwarf-words-replace-91 = совет +accent-dwarf-words-92 = врач +accent-dwarf-words-replace-92 = лекарь +accent-dwarf-words-93 = говорить +accent-dwarf-words-replace-93 = говорит +accent-dwarf-words-94 = разговаривать +accent-dwarf-words-replace-94 = разговарыват +accent-dwarf-words-95 = спиртное +accent-dwarf-words-replace-95 = пиво +accent-dwarf-words-96 = звоните +accent-dwarf-words-replace-96 = звонытэ +accent-dwarf-words-97 = подарить +accent-dwarf-words-replace-97 = подарытэ +accent-dwarf-words-98 = дайте +accent-dwarf-words-replace-98 = дайтэ +accent-dwarf-words-99 = выдайте +accent-dwarf-words-replace-99 = выдайтэ +accent-dwarf-words-100 = отвечайте +accent-dwarf-words-replace-100 = отвэчшайтэ +accent-dwarf-words-101 = без +accent-dwarf-words-replace-101 = бэз +accent-dwarf-words-102 = синдикат +accent-dwarf-words-replace-102 = злодей +accent-dwarf-words-103 = ли +accent-dwarf-words-replace-103 = лы +accent-dwarf-words-104 = никогда +accent-dwarf-words-replace-104 = ныкогда +accent-dwarf-words-105 = точно +accent-dwarf-words-replace-105 = точшно +accent-dwarf-words-106 = неважно +accent-dwarf-words-replace-106 = нэважно +accent-dwarf-words-107 = хуй +accent-dwarf-words-replace-107 = елдак +accent-dwarf-words-108 = однако +accent-dwarf-words-replace-108 = однако +accent-dwarf-words-109 = думать +accent-dwarf-words-replace-109 = думат +accent-dwarf-words-111 = гамлет +accent-dwarf-words-replace-111 = грызун +accent-dwarf-words-112 = хомяк +accent-dwarf-words-replace-112 = грызун +accent-dwarf-words-113 = нюкер +accent-dwarf-words-replace-113 = красношлемый +accent-dwarf-words-114 = нюкеры +accent-dwarf-words-replace-114 = карсношлемые +accent-dwarf-words-115 = ядерный оперативник +accent-dwarf-words-replace-115 = красношлемый +accent-dwarf-words-116 = ядерные оперативники +accent-dwarf-words-replace-116 = красношлемые +accent-dwarf-words-121 = ещё +accent-dwarf-words-replace-121 = ещчшо +accent-dwarf-words-122 = более того +accent-dwarf-words-replace-122 = болээ того +accent-dwarf-words-123 = пассажир +accent-dwarf-words-replace-123 = пассажыр +accent-dwarf-words-125 = человек +accent-dwarf-words-replace-125 = чэловэк +accent-dwarf-words-126 = гномы +accent-dwarf-words-replace-126 = дворфы +accent-dwarf-words-127 = слайм +accent-dwarf-words-replace-127 = желе +accent-dwarf-words-128 = слаймы +accent-dwarf-words-replace-128 = желе +accent-dwarf-words-129 = унатх +accent-dwarf-words-replace-129 = ящер +accent-dwarf-words-130 = паук +accent-dwarf-words-replace-130 = хиссшер +accent-dwarf-words-131 = унатхи +accent-dwarf-words-replace-131 = ящеры +accent-dwarf-words-132 = люди +accent-dwarf-words-replace-132 = кнурлан +accent-dwarf-words-133 = эвак +accent-dwarf-words-replace-133 = вывоз +accent-dwarf-words-134 = предатель +accent-dwarf-words-replace-134 = злодей +accent-dwarf-words-135 = корпорация +accent-dwarf-words-replace-135 = корпорацыйа +accent-dwarf-words-136 = мне +accent-dwarf-words-replace-136 = мнэ +accent-dwarf-words-137 = зомби +accent-dwarf-words-replace-137 = гнилые +accent-dwarf-words-138 = заражённый +accent-dwarf-words-replace-138 = гнилой +accent-dwarf-words-139 = мим +accent-dwarf-words-replace-139 = молчун +accent-dwarf-words-140 = считать +accent-dwarf-words-replace-140 = счшытат +accent-dwarf-words-141 = карп +accent-dwarf-words-replace-141 = рыбёха +accent-dwarf-words-142 = ксено +accent-dwarf-words-replace-142 = монстры +accent-dwarf-words-143 = шаттл +accent-dwarf-words-replace-143 = судно +accent-dwarf-words-144 = думаю +accent-dwarf-words-replace-144 = думайу +accent-dwarf-words-145 = крысы +accent-dwarf-words-replace-145 = грызуны +accent-dwarf-words-146 = даун +accent-dwarf-words-replace-146 = обалдуй +accent-dwarf-words-147 = СБ +accent-dwarf-words-replace-147 = стража +accent-dwarf-words-148 = a +accent-dwarf-words-replace-148 = ae diff --git a/Resources/Locale/ru-RU/accent/italian.ftl b/Resources/Locale/ru-RU/accent/italian.ftl new file mode 100644 index 00000000000..ad5a459345b --- /dev/null +++ b/Resources/Locale/ru-RU/accent/italian.ftl @@ -0,0 +1,105 @@ +# This should probably use the same prefix system as the mobster accent. +# For the record, these do not work right now - even when uncommented. + + +# accent-italian-prefix-1 = Ravioli, ravioli, give me the formuoli! +# accent-italian-prefix-2 = Mamma-mia! +# accent-italian-prefix-3 = Mamma-mia! That's a spicy meat-ball! +# accemt-italian-prefix-4 = La la la la la funiculi funicula! + +accent-italian-words-1 = ассистент +accent-italian-words-replace-1 = goombah +accent-italian-words-2 = ассистенты +accent-italian-words-replace-2 = goombahs +accent-italian-words-3 = малыш +accent-italian-words-replace-3 = bambino +accent-italian-words-4 = плохой +accent-italian-words-replace-4 = molto male +accent-italian-words-5 = прощай +accent-italian-words-replace-5 = arrivederci +accent-italian-words-6 = капитан +accent-italian-words-replace-6 = capitano +accent-italian-words-7 = сыр +accent-italian-words-replace-7 = parmesano +accent-italian-words-8 = приготовь +accent-italian-words-replace-8 = cucinare +accent-italian-words-9 = могу +accent-italian-words-replace-9 = potrebbe +accent-italian-words-10 = папа +accent-italian-words-replace-10 = pappa +accent-italian-words-11 = хороший +accent-italian-words-replace-11 = molto bene +accent-italian-words-12 = грейтайд +accent-italian-words-replace-12 = curvisti +accent-italian-words-13 = грейтайдер +accent-italian-words-replace-13 = curvisti +accent-italian-words-14 = грейтайдеры +accent-italian-words-replace-14 = curvisti +accent-italian-words-15 = привет +accent-italian-words-replace-15 = ciao +accent-italian-words-16 = это +accent-italian-words-replace-16 = è un +accent-italian-words-17 = сделай +accent-italian-words-replace-17 = fare una +accent-italian-words-18 = мясо +accent-italian-words-replace-18 = prosciutto +accent-italian-words-19 = мама +accent-italian-words-replace-19 = mamma +accent-italian-words-20 = мой +accent-italian-words-replace-20 = il mio +accent-italian-words-21 = бомба +accent-italian-words-replace-21 = polpetta di carne +accent-italian-words-22 = опер +accent-italian-words-replace-22 = greco +accent-italian-words-23 = оперативник +accent-italian-words-replace-23 = greco +accent-italian-words-24 = оперативники +accent-italian-words-replace-24 = greci +accent-italian-words-25 = СБ +accent-italian-words-replace-25 = polizia +accent-italian-words-26 = охрана +accent-italian-words-replace-26 = polizia +accent-italian-words-27 = офицер +accent-italian-words-replace-27 = polizia +accent-italian-words-28 = щиткюр +accent-italian-words-replace-28 = carabinieri +accent-italian-words-29 = щитсек +accent-italian-words-replace-29 = carabinieri +accent-italian-words-30 = петь +accent-italian-words-replace-30 = cantare +accent-italian-words-31 = спагетти +accent-italian-words-replace-31 = SPAGHETT +accent-italian-words-32 = острый +accent-italian-words-replace-32 = piccante +accent-italian-words-33 = спасибо +accent-italian-words-replace-33 = grazie +accent-italian-words-34 = вещь +accent-italian-words-replace-34 = una cosa +accent-italian-words-35 = предатель +accent-italian-words-replace-35 = mafioso +accent-italian-words-36 = предатели +accent-italian-words-replace-36 = mafioso +accent-italian-words-37 = используй +accent-italian-words-replace-37 = usare +accent-italian-words-38 = хочу +accent-italian-words-replace-38 = desiderare +accent-italian-words-39 = что +accent-italian-words-replace-39 = cosa +accent-italian-words-40 = кто +accent-italian-words-replace-40 = che +accent-italian-words-41 = чьё +accent-italian-words-replace-41 = il cui +accent-italian-words-42 = почему +accent-italian-words-replace-42 = perché +accent-italian-words-43 = вино +accent-italian-words-replace-43 = vino +accent-italian-words-44 = пассажир +accent-italian-words-replace-44 = goombah +accent-italian-words-45 = пассажиры +accent-italian-words-replace-45 = goombahs +accent-italian-words-46 = я +accent-italian-words-replace-46 = sono +accent-italian-words-47 = мы +accent-italian-words-replace-47 = noi +accent-italian-words-48 = и +accent-italian-words-replace-48 = é diff --git a/Resources/Locale/ru-RU/accent/mobster.ftl b/Resources/Locale/ru-RU/accent/mobster.ftl new file mode 100644 index 00000000000..759ed44bb14 --- /dev/null +++ b/Resources/Locale/ru-RU/accent/mobster.ftl @@ -0,0 +1,40 @@ +accent-mobster-prefix-1 = Ньехх, +accent-mobster-suffix-boss-1 = , видишь? +accent-mobster-suffix-boss-2 = , дазабей. +accent-mobster-suffix-boss-3 = , андестенд? +accent-mobster-suffix-minion-1 = , йеах! +accent-mobster-suffix-minion-2 = , босс говорит! +accent-mobster-words-1 = let me +accent-mobster-words-replace-1 = lemme +accent-mobster-words-2 = should +accent-mobster-words-replace-2 = oughta +accent-mobster-words-3 = the +accent-mobster-words-replace-3 = da +accent-mobster-words-4 = them +accent-mobster-words-replace-4 = dem +accent-mobster-words-5 = attack +accent-mobster-words-replace-5 = whack +accent-mobster-words-6 = kill +accent-mobster-words-replace-6 = whack +accent-mobster-words-7 = murder +accent-mobster-words-replace-7 = whack +accent-mobster-words-8 = dead +accent-mobster-words-replace-8 = sleepin' with da fishies +accent-mobster-words-9 = hey +accent-mobster-words-replace-9 = ey'o +accent-mobster-words-10 = hi +accent-mobster-words-replace-10 = ey'o +accent-mobster-words-11 = hello +accent-mobster-words-replace-11 = ey'o +accent-mobster-words-12 = rules +accent-mobster-words-replace-12 = roolz +accent-mobster-words-13 = you +accent-mobster-words-replace-13 = yous +accent-mobster-words-14 = have to +accent-mobster-words-replace-14 = gotta +accent-mobster-words-15 = going to +accent-mobster-words-replace-15 = boutta +accent-mobster-words-16 = about to +accent-mobster-words-replace-16 = boutta +accent-mobster-words-17 = here +accent-mobster-words-replace-17 = 'ere diff --git a/Resources/Locale/ru-RU/accent/pirate.ftl b/Resources/Locale/ru-RU/accent/pirate.ftl new file mode 100644 index 00000000000..516232f8031 --- /dev/null +++ b/Resources/Locale/ru-RU/accent/pirate.ftl @@ -0,0 +1,67 @@ +accent-pirate-prefix-1 = Арргх +accent-pirate-prefix-2 = Гарр +accent-pirate-prefix-3 = Йарр +accent-pirate-replaced-1 = my +accent-pirate-replacement-1 = me +accent-pirate-replaced-2 = you +accent-pirate-replacement-2 = ya +accent-pirate-replaced-3 = hello +accent-pirate-replacement-3 = ahoy +accent-pirate-replaced-4 = yes +accent-pirate-replacement-4 = aye +accent-pirate-replaced-5 = yea +accent-pirate-replaced-6 = hi +accent-pirate-replaced-7 = is +accent-pirate-replacement-5 = be +accent-pirate-replaced-8 = there +accent-pirate-replacement-6 = thar +accent-pirate-replacement-7 = heartie +accent-pirate-replacement-8 = matey +accent-pirate-replaced-9 = buddy +accent-pirate-replacement-9 = heartie +accent-pirate-replaced-10 = hi +accent-pirate-replacement-10 = ahoy +accent-pirate-replaced-11 = hey +accent-pirate-replacement-11 = oye +accent-pirate-replaced-12 = money +accent-pirate-replacement-12 = dubloons +accent-pirate-replaced-13 = cash +accent-pirate-replacement-13 = doubloons +accent-pirate-replaced-14 = crate +accent-pirate-replacement-14 = coffer +accent-pirate-replaced-15 = hello +accent-pirate-replacement-15 = ahoy +accent-pirate-replaced-16 = treasure +accent-pirate-replacement-16 = booty +accent-pirate-replaced-17 = attention +accent-pirate-replacement-17 = avast +accent-pirate-replaced-18 = stupid +accent-pirate-replacement-18 = parrot-brained +accent-pirate-replaced-19 = idiot +accent-pirate-replacement-19 = seadog +accent-pirate-replaced-20 = your +accent-pirate-replacement-20 = yere +accent-pirate-replaced-21 = song +accent-pirate-replacement-21 = shanty +accent-pirate-replaced-22 = music +accent-pirate-replacement-22 = shanty +accent-pirate-replaced-23 = no +accent-pirate-replacement-23 = nay +accent-pirate-replaced-24 = are +accent-pirate-replacement-24 = arrr +accent-pirate-replaced-25 = ow +accent-pirate-replacement-25 = argh +accent-pirate-replaced-26 = ouch +accent-pirate-replacement-26 = argh +accent-pirate-replaced-27 = passenger +accent-pirate-replacement-27 = landlubber +accent-pirate-replaced-28 = tider +accent-pirate-replacement-28 = landlubber +accent-pirate-replaced-29 = captain +accent-pirate-replacement-29 = cap'n +accent-pirate-replaced-30 = pistol +accent-pirate-replacement-30 = flintlock +accent-pirate-replaced-31 = rifle +accent-pirate-replacement-31 = musket +accent-pirate-replaced-32 = ammo +accent-pirate-replacement-32 = gunpowder diff --git a/Resources/Locale/ru-RU/accent/scrambled.ftl b/Resources/Locale/ru-RU/accent/scrambled.ftl new file mode 100644 index 00000000000..4ad654a84f3 --- /dev/null +++ b/Resources/Locale/ru-RU/accent/scrambled.ftl @@ -0,0 +1,7 @@ +accent-scrambled-words-1 = Кто?.. +accent-scrambled-words-2 = Что?.. +accent-scrambled-words-3 = Когда?.. +accent-scrambled-words-4 = Где?.. +accent-scrambled-words-5 = Почему!.. +accent-scrambled-words-6 = Как?.. +accent-scrambled-words-7 = Я!.. From 6f235264eef522452313f3c5d6d85312cff16ad7 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:13:39 +0300 Subject: [PATCH 05/34] Create agent-id-card-component.ftl --- .../access/components/agent-id-card-component.ftl | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl diff --git a/Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl b/Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl new file mode 100644 index 00000000000..26664fdb339 --- /dev/null +++ b/Resources/Locale/ru-RU/access/components/agent-id-card-component.ftl @@ -0,0 +1,12 @@ +agent-id-no-new = { CAPITALIZE($card) } не дала новых доступов. +agent-id-new-1 = { CAPITALIZE($card) } дала один новый доступ. +agent-id-new = + { CAPITALIZE($card) } дала { $number } { $number -> + [one] новый доступ + [few] новых доступа + *[other] новых доступов + }. +agent-id-card-current-name = Имя: +agent-id-card-current-job = Должность: +agent-id-card-job-icon-label = Иконка: +agent-id-menu-title = ID карта Агента From bc799d952f14cf0ce2128c447ccd46620a28d9aa Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:13:52 +0300 Subject: [PATCH 06/34] Add files via upload --- .../ru-RU/access/components/id-card-component.ftl | 8 ++++++++ .../access/components/id-card-console-component.ftl | 11 +++++++++++ .../access/components/id-examinable-component.ftl | 3 +++ 3 files changed, 22 insertions(+) create mode 100644 Resources/Locale/ru-RU/access/components/id-card-component.ftl create mode 100644 Resources/Locale/ru-RU/access/components/id-card-console-component.ftl create mode 100644 Resources/Locale/ru-RU/access/components/id-examinable-component.ftl diff --git a/Resources/Locale/ru-RU/access/components/id-card-component.ftl b/Resources/Locale/ru-RU/access/components/id-card-component.ftl new file mode 100644 index 00000000000..89ec3314e71 --- /dev/null +++ b/Resources/Locale/ru-RU/access/components/id-card-component.ftl @@ -0,0 +1,8 @@ +## IdCardComponent + +access-id-card-component-owner-name-job-title-text = ID карта { $jobSuffix } +access-id-card-component-owner-full-name-job-title-text = ID карта { $fullName },{ $jobSuffix } +access-id-card-component-default = ID карта +id-card-component-microwave-burnt = { $id } громко щёлкает! +id-card-component-microwave-bricked = { $id } шипит! +id-card-component-microwave-safe = { $id } издает странный звук. diff --git a/Resources/Locale/ru-RU/access/components/id-card-console-component.ftl b/Resources/Locale/ru-RU/access/components/id-card-console-component.ftl new file mode 100644 index 00000000000..97b61de9ead --- /dev/null +++ b/Resources/Locale/ru-RU/access/components/id-card-console-component.ftl @@ -0,0 +1,11 @@ +id-card-console-window-privileged-id = Основной ID: +id-card-console-window-target-id = Целевой ID: +id-card-console-window-full-name-label = Полное имя: +id-card-console-window-save-button = Сохранить +id-card-console-window-job-title-label = Должность: +id-card-console-window-eject-button = Извлечь +id-card-console-window-insert-button = Вставить +id-card-console-window-job-selection-label = Предустановки должностей (задает иконку отдела и должности): +access-id-card-console-component-no-hands-error = У вас нет рук. +id-card-console-privileged-id = Основной ID +id-card-console-target-id = Целевой ID diff --git a/Resources/Locale/ru-RU/access/components/id-examinable-component.ftl b/Resources/Locale/ru-RU/access/components/id-examinable-component.ftl new file mode 100644 index 00000000000..f481a2d54da --- /dev/null +++ b/Resources/Locale/ru-RU/access/components/id-examinable-component.ftl @@ -0,0 +1,3 @@ +id-examinable-component-verb-text = ID карта +id-examinable-component-verb-disabled = Приблизьтесь, чтобы рассмотреть ID карту. +id-examinable-component-verb-no-id = ID карты не видно. From 41d1988063a5fea872c3104ca7adbdb9bbe72d0f Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:15:20 +0300 Subject: [PATCH 07/34] Create access-overrider-system.ftl --- .../ru-RU/access/systems/access-overrider-system.ftl | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl diff --git a/Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl b/Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl new file mode 100644 index 00000000000..561a81d6e36 --- /dev/null +++ b/Resources/Locale/ru-RU/access/systems/access-overrider-system.ftl @@ -0,0 +1,8 @@ +access-overrider-window-privileged-id = ID-карта с правами: +access-overrider-window-eject-button = Извлечь +access-overrider-window-insert-button = Вставить +access-overrider-window-target-label = Подключённое устройство: +access-overrider-window-no-target = Нет подключённых устройств +access-overrider-window-missing-privileges = Доступ к этому устройству не может быть изменён. На вставленной ID-карте отсутствуют следующие права: +access-overrider-cannot-modify-access = Вы не обладаете достаточными правами для модификации этого устройства! +access-overrider-out-of-range = Подключённое устройство слишком далеко From e65177240bebbb0259c07ae84668442901a26e80 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:17:51 +0300 Subject: [PATCH 08/34] Create human-facial-hair.ftl --- .../ru-RU/accessories/human-facial-hair.ftl | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Resources/Locale/ru-RU/accessories/human-facial-hair.ftl diff --git a/Resources/Locale/ru-RU/accessories/human-facial-hair.ftl b/Resources/Locale/ru-RU/accessories/human-facial-hair.ftl new file mode 100644 index 00000000000..e63ba95e12c --- /dev/null +++ b/Resources/Locale/ru-RU/accessories/human-facial-hair.ftl @@ -0,0 +1,35 @@ +marking-HumanFacialHairAbe = Борода (Авраам Линкольн) +marking-HumanFacialHairBrokenman = Борода (Сломанный человек) +marking-HumanFacialHairChin = Борода (Шкиперская бородка) +marking-HumanFacialHairDwarf = Борода (Дворф) +marking-HumanFacialHairFullbeard = Борода (Полная) +marking-HumanFacialHairCroppedfullbeard = Борода (Обрезанная полная борода) +marking-HumanFacialHairGt = Борода (Козлиная бородка) +marking-HumanFacialHairHip = Борода (Хипстер) +marking-HumanFacialHairJensen = Борода (Дженсен) +marking-HumanFacialHairNeckbeard = Борода (Шейная борода) +marking-HumanFacialHairWise = Борода (Очень длинная) +marking-HumanFacialHairMuttonmus = Борода (Баранья) +marking-HumanFacialHairMartialartist = Борода (Мастер боевых искусств) +marking-HumanFacialHairChinlessbeard = Борода (Без подбородка) +marking-HumanFacialHairMoonshiner = Борода (Самогонщик) +marking-HumanFacialHairLongbeard = Борода (Длинная) +marking-HumanFacialHairVolaju = Борода (Воладзю) +marking-HumanFacialHair3oclock = Борода (Тень "три часа") +marking-HumanFacialHairFiveoclock = Борода (Тень "пять часов") +marking-HumanFacialHair5oclockmoustache = Борода (Усы "пять часов") +marking-HumanFacialHair7oclock = Борода (Тень "семь часов") +marking-HumanFacialHair7oclockmoustache = Борода (Усы "семь часов") +marking-HumanFacialHairMoustache = Усы +marking-HumanFacialHairPencilstache = Усы (Карандаш) +marking-HumanFacialHairSmallstache = Усы (Малюсенькие) +marking-HumanFacialHairWalrus = Усы (Моржовые) +marking-HumanFacialHairFumanchu = Усы (Фу Манчу) +marking-HumanFacialHairHogan = Усы (Халк Хоган) +marking-HumanFacialHairSelleck = Усы (Селлек) +marking-HumanFacialHairChaplin = Усы (Квадрат) +marking-HumanFacialHairVandyke = Усы (Ван Дайк) +marking-HumanFacialHairWatson = Усы (Ватсон) +marking-HumanFacialHairElvis = Бакенбарды (Элвис) +marking-HumanFacialHairMutton = Бакенбарды (Бараньи отбивные) +marking-HumanFacialHairSideburn = Бакенбарды From 1574cbb644fee691eed128abe62ddc0ba29b8498 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:18:05 +0300 Subject: [PATCH 09/34] Add files via upload --- .../Locale/ru-RU/accessories/human-hair.ftl | 186 ++++++++++++++++++ .../ru-RU/accessories/vox-facial-hair.ftl | 5 + .../Locale/ru-RU/accessories/vox-hair.ftl | 13 ++ 3 files changed, 204 insertions(+) create mode 100644 Resources/Locale/ru-RU/accessories/human-hair.ftl create mode 100644 Resources/Locale/ru-RU/accessories/vox-facial-hair.ftl create mode 100644 Resources/Locale/ru-RU/accessories/vox-hair.ftl diff --git a/Resources/Locale/ru-RU/accessories/human-hair.ftl b/Resources/Locale/ru-RU/accessories/human-hair.ftl new file mode 100644 index 00000000000..80b8f11cfc9 --- /dev/null +++ b/Resources/Locale/ru-RU/accessories/human-hair.ftl @@ -0,0 +1,186 @@ +marking-HumanHairAfro = Афро +marking-HumanHairAfro2 = Афро 2 +marking-HumanHairBigafro = Афро (Большая) +marking-HumanHairAntenna = Ахоге +marking-HumanHairBalding = Лысеющий +marking-HumanHairBedhead = Небрежная +marking-HumanHairBedheadv2 = Небрежная 2 +marking-HumanHairBedheadv3 = Небрежная 3 +marking-HumanHairLongBedhead = Небрежная (Длинная) +marking-HumanHairFloorlengthBedhead = Небрежная (До пола) +marking-HumanHairBeehive = Улей +marking-HumanHairBeehivev2 = Улей 2 +marking-HumanHairBob = Каре +marking-HumanHairBob2 = Каре 2 +marking-HumanHairBobcut = Каре 3 +marking-HumanHairBob4 = Каре 4 +marking-HumanHairBobcurl = Каре (Завитки) +marking-HumanHairBoddicker = Боддикер +marking-HumanHairBowlcut = Горшок +marking-HumanHairBowlcut2 = Горшок 2 +marking-HumanHairBraid = Плетение (До пола) +marking-HumanHairBraided = Плетение +marking-HumanHairBraidfront = Плетение (Спереди) +marking-HumanHairBraid2 = Плетение (Высокое) +marking-HumanHairHbraid = Плетение (Низкое) +marking-HumanHairShortbraid = Плетение (Короткое) +marking-HumanHairBraidtail = Плетёный хвостик +marking-HumanHairBun = Пучок +marking-HumanHairBunhead2 = Пучок 2 +marking-HumanHairBun3 = Пучок 3 +marking-HumanHairLargebun = Пучок (Большой) +marking-HumanHairManbun = Пучок (Мужской) +marking-HumanHairTightbun = Пучок (Затянутый) +marking-HumanHairBusiness = Деловая +marking-HumanHairBusiness2 = Деловая 2 +marking-HumanHairBusiness3 = Деловая 3 +marking-HumanHairBusiness4 = Деловая 4 +marking-HumanHairBuzzcut = Баз кат +marking-HumanHairCia = ЦРУ +marking-HumanHairClassicAfro = Классическая Афро +marking-HumanHairClassicBigAfro = Классическая Афро (Большая) +marking-HumanHairClassicBusiness = Классическая Деловая +marking-HumanHairClassicCia = Классическая ЦРУ +marking-HumanHairClassicCornrows2 = Classic Cornrows 2 +marking-HumanHairClassicFloorlengthBedhead = Классическая Небрежная (До пола) +marking-HumanHairClassicModern = Классическая Современная +marking-HumanHairClassicMulder = Классическая Малдер +marking-HumanHairClassicWisp = Классическая Пряди +marking-HumanHairCoffeehouse = Кофейная +marking-HumanHairCombover = Зачёс (Назад) +marking-HumanHairCornrows = Корнроу +marking-HumanHairCornrows2 = Корнроу 2 +marking-HumanHairCornrowbun = Корнроу (Пучок) +marking-HumanHairCornrowbraid = Корнроу (Косичка) +marking-HumanHairCornrowtail = Корнроу (Хвостик) +marking-HumanHairCrewcut = Крю-кат +marking-HumanHairCurls = Завитки +marking-HumanHairC = Подстриженная +marking-HumanHairDandypompadour = Денди Помпадур +marking-HumanHairDevilock = Дьявольский замок +marking-HumanHairDoublebun = Двойной пучок +marking-HumanHairDreads = Дреды +marking-HumanHairDrillruru = Дрели +marking-HumanHairDrillhairextended = Дрели (Распущенные) +marking-HumanHairEmo = Эмо +marking-HumanHairEmofringe = Эмо (Чёлка) +marking-HumanHairNofade = Фэйд (Отсутствует) +marking-HumanHairHighfade = Фэйд (Высокий) +marking-HumanHairMedfade = Фэйд (Средний) +marking-HumanHairLowfade = Фэйд (Низкий) +marking-HumanHairBaldfade = Фэйд (Лысый) +marking-HumanHairFeather = Перья +marking-HumanHairFather = Отец +marking-HumanHairSargeant = Флэттоп +marking-HumanHairFlair = Флейр +marking-HumanHairBigflattop = Флэттоп (Большой) +marking-HumanHairFlow = Флоу +marking-HumanHairGelled = Уложенная +marking-HumanHairGentle = Аккуратная +marking-HumanHairHalfbang = Полурасчесанная +marking-HumanHairHalfbang2 = Полурасчесанная 2 +marking-HumanHairHalfshaved = Полувыбритая +marking-HumanHairHedgehog = Ёжик +marking-HumanHairHimecut = Химэ +marking-HumanHairHimecut2 = Химэ 2 +marking-HumanHairShorthime = Химэ (Короткая) +marking-HumanHairHimeup = Химэ (Укладка) +marking-HumanHairHitop = Хайтоп +marking-HumanHairJade = Джейд +marking-HumanHairJensen = Дженсен +marking-HumanHairJoestar = Джостар +marking-HumanHairKeanu = Киану +marking-HumanHairKusanagi = Кусанаги +marking-HumanHairLong = Длинная 1 +marking-HumanHairLong2 = Длинная 2 +marking-HumanHairLong3 = Длинная 3 +marking-HumanHairLongovereye = Длинная (Через глаз) +marking-HumanHairLbangs = Длинная (Чёлка) +marking-HumanHairLongemo = Длинная (Эмо) +marking-HumanHairLongfringe = Длинная чёлка +marking-HumanHairLongsidepart = Длинная сайд-парт +marking-HumanHairMegaeyebrows = Широкие брови +marking-HumanHairMessy = Растрёпанная +marking-HumanHairModern = Современная +marking-HumanHairMohawk = Могавк +marking-HumanHairNitori = Нитори +marking-HumanHairReversemohawk = Могавк (Обратный) +marking-HumanHairUnshavenMohawk = Могавк (Небритый) +marking-HumanHairMulder = Малдер +marking-HumanHairOdango = Оданго +marking-HumanHairOmbre = Омбре +marking-HumanHairOneshoulder = На одно плечо +marking-HumanHairShortovereye = Через глаз +marking-HumanHairOxton = Окстон +marking-HumanHairParted = С пробором +marking-HumanHairPart = С пробором (Сбоку) +marking-HumanHairKagami = Хвостики +marking-HumanHairPigtails = Хвостики 2 +marking-HumanHairPigtails2 = Хвостики 3 +marking-HumanHairPixie = Пикси +marking-HumanHairPompadour = Помпадур +marking-HumanHairBigpompadour = Помпадур (Большая) +marking-HumanHairPonytail = Хвостик +marking-HumanHairPonytail2 = Хвостик 2 +marking-HumanHairPonytail3 = Хвостик 3 +marking-HumanHairPonytail4 = Хвостик 4 +marking-HumanHairPonytail5 = Хвостик 5 +marking-HumanHairPonytail6 = Хвостик 6 +marking-HumanHairPonytail7 = Хвостик 7 +marking-HumanHairHighponytail = Хвостик (Высокий) +marking-HumanHairStail = Хвостик (Короткий) +marking-HumanHairLongstraightponytail = Хвостик (Длинный) +marking-HumanHairCountry = Хвостик (Деревенский) +marking-HumanHairFringetail = Хвостик (Чёлка) +marking-HumanHairSidetail = Хвостик (Сбоку) +marking-HumanHairSidetail2 = Хвостик (Сбоку) 2 +marking-HumanHairSidetail3 = Хвостик (Сбоку) 3 +marking-HumanHairSidetail4 = Хвостик (Сбоку) 4 +marking-HumanHairSpikyponytail = Хвостик (Шипастый) +marking-HumanHairPoofy = Пышная +marking-HumanHairQuiff = Квифф +marking-HumanHairRonin = Ронин +marking-HumanHairShaved = Бритая +marking-HumanHairShavedpart = Бритая часть +marking-HumanHairShortbangs = Каре (Чёлка) +marking-HumanHairA = Короткая +marking-HumanHairShorthair2 = Короткая 2 +marking-HumanHairShorthair3 = Короткая 3 +marking-HumanHairD = Короткая 5 +marking-HumanHairE = Короткая 6 +marking-HumanHairF = Короткая 7 +marking-HumanHairShorthairg = Короткая 8 +marking-HumanHair80s = Короткая (80-ые) +marking-HumanHairRosa = Короткая (Роза) +marking-HumanHairB = Волосы до плеч +marking-HumanHairShoulderLengthOverEye = До плеч через глаз +marking-HumanHairSidecut = Боковой вырез +marking-HumanHairSkinhead = Бритоголовый +marking-HumanHairProtagonist = Слегка длинная +marking-HumanHairSpikey = Колючая +marking-HumanHairSpiky = Колючая 2 +marking-HumanHairSpiky2 = Колючая 3 +marking-HumanHairSwept = Зачёс назад +marking-HumanHairSwept2 = Зачёс назад 2 +marking-HumanHairThinning = Редеющая +marking-HumanHairThinningfront = Редеющая (Спереди) +marking-HumanHairThinningrear = Редеющая (Сзади) +marking-HumanHairTopknot = Пучок на макушке +marking-HumanHairTressshoulder = Коса на плече +marking-HumanHairTrimmed = Под машинку +marking-HumanHairTrimflat = Под машинку (Плоская) +marking-HumanHairTwintail = Два хвостика +marking-HumanHairTwoStrands = Две пряди +marking-HumanHairUndercut = Андеркат +marking-HumanHairUndercutleft = Андеркат (Слева) +marking-HumanHairUndercutright = Андеркат (Справа) +marking-HumanHairUnkept = Неухоженная +marking-HumanHairUpdo = Высокая +marking-HumanHairVlong = Очень длинная +marking-HumanHairLongest = Очень длинная 2 +marking-HumanHairLongest2 = Очень длинная (Через глаз) +marking-HumanHairVeryshortovereyealternate = Очень короткая (Через глаз альт.) +marking-HumanHairVlongfringe = Очень короткая (Чёлка) +marking-HumanHairVolaju = Воладзю +marking-HumanHairWisp = Пряди +marking-HumanHairUneven = Неровная diff --git a/Resources/Locale/ru-RU/accessories/vox-facial-hair.ftl b/Resources/Locale/ru-RU/accessories/vox-facial-hair.ftl new file mode 100644 index 00000000000..f5517b14c3b --- /dev/null +++ b/Resources/Locale/ru-RU/accessories/vox-facial-hair.ftl @@ -0,0 +1,5 @@ +marking-VoxFacialHairColonel = Вокс Полковник +marking-VoxFacialHairFu = Перья Фу +marking-VoxFacialHairNeck = Шейные перья +marking-VoxFacialHairBeard = Перьевая борода +marking-VoxFacialHairRuffBeard = Грубая борода diff --git a/Resources/Locale/ru-RU/accessories/vox-hair.ftl b/Resources/Locale/ru-RU/accessories/vox-hair.ftl new file mode 100644 index 00000000000..5fb130093c9 --- /dev/null +++ b/Resources/Locale/ru-RU/accessories/vox-hair.ftl @@ -0,0 +1,13 @@ +marking-VoxHairShortQuills = Вокс Короткие перья +marking-VoxHairKingly = Вокс Королевская +marking-VoxHairAfro = Вокс Афро +marking-VoxHairMohawk = Вокс Могавк +marking-VoxHairYasuhiro = Вокс Ясухиро +marking-VoxHairHorns = Вокс Рога +marking-VoxHairNights = Вокс Ночная +marking-VoxHairSurf = Вокс Сёрфер +marking-VoxHairCropped = Вокс Короткая +marking-VoxHairRuffhawk = Вокс Руфхавк +marking-VoxHairRows = Вокс Ряды +marking-VoxHairMange = Вокс Лишай +marking-VoxHairPony = Вокс Пони From b9011e2a190b90aba3144aec9f3a9abf63e6c693 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:19:23 +0300 Subject: [PATCH 10/34] Create actions-commands.ftl --- .../ru-RU/actions/actions/actions-commands.ftl | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Resources/Locale/ru-RU/actions/actions/actions-commands.ftl diff --git a/Resources/Locale/ru-RU/actions/actions/actions-commands.ftl b/Resources/Locale/ru-RU/actions/actions/actions-commands.ftl new file mode 100644 index 00000000000..fed57d1c1a9 --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/actions-commands.ftl @@ -0,0 +1,14 @@ +## Actions Commands loc + + +## Upgradeaction command loc + +upgradeaction-command-need-one-argument = upgradeaction needs at least one argument, the action entity uid. The second optional argument is a specified level. +upgradeaction-command-max-two-arguments = upgradeaction has a maximum of two arguments, the action entity uid and the (optional) level to set. +upgradeaction-command-second-argument-not-number = upgradeaction's second argument can only be a number. +upgradeaction-command-less-than-required-level = upgradeaction cannot accept a level of 0 or lower. +upgradeaction-command-incorrect-entityuid-format = You must use a valid entityuid format for upgradeaction. +upgradeaction-command-entity-does-not-exist = This entity does not exist, a valid entity is required for upgradeaction. +upgradeaction-command-entity-is-not-action = This entity doesn't have the action upgrade component, so this action cannot be leveled. +upgradeaction-command-cannot-level-up = The action cannot be leveled up. +upgradeaction-command-description = Upgrades an action by one level, or to the specified level, if applicable. From 9bec4e23b33f9b78a8b940a542ce008f5e190fe1 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:19:44 +0300 Subject: [PATCH 11/34] Add files via upload --- Resources/Locale/ru-RU/actions/actions/blocking.ftl | 6 ++++++ Resources/Locale/ru-RU/actions/actions/combat-mode.ftl | 2 ++ Resources/Locale/ru-RU/actions/actions/crit.ftl | 1 + Resources/Locale/ru-RU/actions/actions/disarm-action.ftl | 5 +++++ Resources/Locale/ru-RU/actions/actions/dragon.ftl | 4 ++++ Resources/Locale/ru-RU/actions/actions/egg-lay.ftl | 3 +++ Resources/Locale/ru-RU/actions/actions/internals.ftl | 4 ++++ Resources/Locale/ru-RU/actions/actions/mapping.ftl | 1 + Resources/Locale/ru-RU/actions/actions/mask.ftl | 2 ++ Resources/Locale/ru-RU/actions/actions/sleep.ftl | 5 +++++ Resources/Locale/ru-RU/actions/actions/spells.ftl | 1 + Resources/Locale/ru-RU/actions/actions/spider.ftl | 4 ++++ 12 files changed, 38 insertions(+) create mode 100644 Resources/Locale/ru-RU/actions/actions/blocking.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/combat-mode.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/crit.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/disarm-action.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/dragon.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/egg-lay.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/internals.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/mapping.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/mask.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/sleep.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/spells.ftl create mode 100644 Resources/Locale/ru-RU/actions/actions/spider.ftl diff --git a/Resources/Locale/ru-RU/actions/actions/blocking.ftl b/Resources/Locale/ru-RU/actions/actions/blocking.ftl new file mode 100644 index 00000000000..1f2f9daeba6 --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/blocking.ftl @@ -0,0 +1,6 @@ +action-popup-blocking-user = Вы поднимаете свой { $shield }! +action-popup-blocking-disabling-user = Вы опускаете свой { $shield }! +action-popup-blocking-other = { CAPITALIZE($blockerName) } поднимает свой { $shield }! +action-popup-blocking-disabling-other = { CAPITALIZE($blockerName) } опускает свой { $shield }! +action-popup-blocking-user-cant-block = Вы безуспешно пытаетесь поднять свой щит. +action-popup-blocking-user-too-close = Не хватает места для блокирования. Попробуйте немного переместиться! diff --git a/Resources/Locale/ru-RU/actions/actions/combat-mode.ftl b/Resources/Locale/ru-RU/actions/actions/combat-mode.ftl new file mode 100644 index 00000000000..bec9d809a7e --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/combat-mode.ftl @@ -0,0 +1,2 @@ +action-popup-combat-disabled = Боевой режим отключён! +action-popup-combat-enabled = Боевой режим включён! diff --git a/Resources/Locale/ru-RU/actions/actions/crit.ftl b/Resources/Locale/ru-RU/actions/actions/crit.ftl new file mode 100644 index 00000000000..43bda3005cb --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/crit.ftl @@ -0,0 +1 @@ +action-name-crit-last-words = Произнести последние слова diff --git a/Resources/Locale/ru-RU/actions/actions/disarm-action.ftl b/Resources/Locale/ru-RU/actions/actions/disarm-action.ftl new file mode 100644 index 00000000000..448d02b151c --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/disarm-action.ftl @@ -0,0 +1,5 @@ +disarm-action-disarmable = { $targetName } нельзя обезоружить! +disarm-action-popup-message-other-clients = { CAPITALIZE($performerName) } обезоружил { $targetName }! +disarm-action-popup-message-cursor = { CAPITALIZE($targetName) } обезоружен! +disarm-action-shove-popup-message-other-clients = { CAPITALIZE($performerName) } толкает { $targetName }! +disarm-action-shove-popup-message-cursor = Вы толкаете { $targetName }! diff --git a/Resources/Locale/ru-RU/actions/actions/dragon.ftl b/Resources/Locale/ru-RU/actions/actions/dragon.ftl new file mode 100644 index 00000000000..485ccdf4ad6 --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/dragon.ftl @@ -0,0 +1,4 @@ +devour-action-popup-message-structure = Ваши челюсти впиваются в твёрдый материал... +devour-action-popup-message-fail-target-not-valid = Это выглядит не особо съедобно. +devour-action-popup-message-fail-target-alive = Вы не можете поглощать ещё живых существ! +dragon-spawn-action-popup-message-fail-no-eggs = Вам не хватит выносливости для создания карпа! diff --git a/Resources/Locale/ru-RU/actions/actions/egg-lay.ftl b/Resources/Locale/ru-RU/actions/actions/egg-lay.ftl new file mode 100644 index 00000000000..e38f14c4e6e --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/egg-lay.ftl @@ -0,0 +1,3 @@ +action-popup-lay-egg-user = Вы отложили яйцо. +action-popup-lay-egg-others = { CAPITALIZE($entity) } откладывает яйцо. +action-popup-lay-egg-too-hungry = Съешьте больше еды перед тем как отложить яйцо! diff --git a/Resources/Locale/ru-RU/actions/actions/internals.ftl b/Resources/Locale/ru-RU/actions/actions/internals.ftl new file mode 100644 index 00000000000..b0f384f9750 --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/internals.ftl @@ -0,0 +1,4 @@ +action-name-internals-toggle = Переключить подачу воздуха +action-description-internals-toggle = Дышите из экипированного газового баллона. Требуется надетая дыхательная маска. +internals-no-breath-tool = Не экипирована дыхательная маска +internals-no-tank = Не экипирован баллон для дыхания diff --git a/Resources/Locale/ru-RU/actions/actions/mapping.ftl b/Resources/Locale/ru-RU/actions/actions/mapping.ftl new file mode 100644 index 00000000000..3c672232268 --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/mapping.ftl @@ -0,0 +1 @@ +action-name-mapping-erase = Стереть сущность diff --git a/Resources/Locale/ru-RU/actions/actions/mask.ftl b/Resources/Locale/ru-RU/actions/actions/mask.ftl new file mode 100644 index 00000000000..39361d822ae --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/mask.ftl @@ -0,0 +1,2 @@ +action-mask-pull-up-popup-message = Вы натягиваете { $mask } на лицо. +action-mask-pull-down-popup-message = Вы приспускаете { $mask } с лица. diff --git a/Resources/Locale/ru-RU/actions/actions/sleep.ftl b/Resources/Locale/ru-RU/actions/actions/sleep.ftl new file mode 100644 index 00000000000..0aeba46be1f --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/sleep.ftl @@ -0,0 +1,5 @@ +action-name-wake = Проснуться +sleep-onomatopoeia = Zzz... +sleep-examined = [color=lightblue]{ CAPITALIZE($target) } спит.[/color] +wake-other-success = Вы разбудили { $target }. +wake-other-failure = Вы тормошите { $target }, но { $target } не просыпается. diff --git a/Resources/Locale/ru-RU/actions/actions/spells.ftl b/Resources/Locale/ru-RU/actions/actions/spells.ftl new file mode 100644 index 00000000000..b54b1b186af --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/spells.ftl @@ -0,0 +1 @@ +spell-fail-no-hands = У вас нет рук! diff --git a/Resources/Locale/ru-RU/actions/actions/spider.ftl b/Resources/Locale/ru-RU/actions/actions/spider.ftl new file mode 100644 index 00000000000..7da750fabdc --- /dev/null +++ b/Resources/Locale/ru-RU/actions/actions/spider.ftl @@ -0,0 +1,4 @@ +spider-web-action-nogrid = Под вами нет пола! +spider-web-action-success = Вы развешиваете паутину вокруг себя. +spider-web-action-fail = Вы не можете разместить паутину здесь! На основных направлениях вокруг вас уже есть паутина! +sericulture-failure-hunger = Ваш желудок слишком пуст для плетения паутины! From 486293858146a981fc8215e406405968b8b8b6b4 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:20:40 +0300 Subject: [PATCH 12/34] Create actionmenu.ftl --- Resources/Locale/ru-RU/actions/ui/actionmenu.ftl | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Resources/Locale/ru-RU/actions/ui/actionmenu.ftl diff --git a/Resources/Locale/ru-RU/actions/ui/actionmenu.ftl b/Resources/Locale/ru-RU/actions/ui/actionmenu.ftl new file mode 100644 index 00000000000..09ff49d2f68 --- /dev/null +++ b/Resources/Locale/ru-RU/actions/ui/actionmenu.ftl @@ -0,0 +1,9 @@ +## Action menu stuff (left panel, with hotbars etc) + +ui-actionmenu-title = Действия +ui-actionmenu-filter-label = Фильтры: { $selectedLabels } +ui-actionmenu-filter-button = Фильтр +ui-actionmenu-search-bar-placeholder-text = Поиск +ui-actionmenu-clear-button = Очистить +ui-actionsui-function-lock-action-slots = (Раз)блокировать перетаскивания и очистка слотов действия +ui-actionsui-function-open-abilities-menu = Открыть меню действий From e621ca9abdb99fdeaac622ada8262a4d8a4a7662 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:21:08 +0300 Subject: [PATCH 13/34] Create actionslot.ftl --- Resources/Locale/ru-RU/actions/ui/actionslot.ftl | 1 + 1 file changed, 1 insertion(+) create mode 100644 Resources/Locale/ru-RU/actions/ui/actionslot.ftl diff --git a/Resources/Locale/ru-RU/actions/ui/actionslot.ftl b/Resources/Locale/ru-RU/actions/ui/actionslot.ftl new file mode 100644 index 00000000000..18c5a558a69 --- /dev/null +++ b/Resources/Locale/ru-RU/actions/ui/actionslot.ftl @@ -0,0 +1 @@ +ui-actionslot-charges = Осталось использований: { $charges } From 1efb5eff8b074e0ef22809d406c7102c3f742b19 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:22:08 +0300 Subject: [PATCH 14/34] Create admin-verbs.ftl --- .../Locale/ru-RU/administration/admin-verbs.ftl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/admin-verbs.ftl diff --git a/Resources/Locale/ru-RU/administration/admin-verbs.ftl b/Resources/Locale/ru-RU/administration/admin-verbs.ftl new file mode 100644 index 00000000000..a577ad821f4 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/admin-verbs.ftl @@ -0,0 +1,16 @@ +delete-verb-get-data-text = Удалить +edit-solutions-verb-get-data-text = Редактировать растворы +explode-verb-get-data-text = Взорвать +ahelp-verb-get-data-text = Написать +admin-verbs-admin-logs-entity = Логи сущности +admin-verbs-teleport-to = Телепортироваться к +admin-verbs-teleport-here = Телепортировать сюда +admin-verbs-freeze = Заморозить +admin-verbs-unfreeze = Разморозить +admin-verbs-erase = Стереть +admin-verbs-erase-description = + Удаляет игрока из раунда и манифеста членов экипажа, а также удаляет все его сообщения в чате. + Их вещи упадут на землю. + Игроки увидят всплывающее окно, указывающее им играть как будто исчезнувшего никогда не существовало. +toolshed-verb-mark = Отметить +toolshed-verb-mark-description = Помещает данную сущность в переменную $marked, заменяя ее предыдущее значение. From b249d035c3bbb5e1a616a70a0b1a5f380e608257 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:22:19 +0300 Subject: [PATCH 15/34] Add files via upload --- .../Locale/ru-RU/administration/antag.ftl | 11 +++ .../Locale/ru-RU/administration/bwoink.ftl | 8 ++ .../Locale/ru-RU/administration/smites.ftl | 84 +++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/antag.ftl create mode 100644 Resources/Locale/ru-RU/administration/bwoink.ftl create mode 100644 Resources/Locale/ru-RU/administration/smites.ftl diff --git a/Resources/Locale/ru-RU/administration/antag.ftl b/Resources/Locale/ru-RU/administration/antag.ftl new file mode 100644 index 00000000000..6d391a4fc9d --- /dev/null +++ b/Resources/Locale/ru-RU/administration/antag.ftl @@ -0,0 +1,11 @@ +verb-categories-antag = Антагонисты +admin-verb-make-traitor = Сделать цель предателем. +admin-verb-make-zombie = Сделать цель зомби. +admin-verb-make-nuclear-operative = Сделать цель одиноким Ядерным оперативником. +admin-verb-make-pirate = Сделать цель пиратом\капером. Учтите, что это не меняет игровой режим. +admin-verb-make-head-rev = Сделать цель главой революции. +admin-verb-text-make-traitor = Сделать предателем +admin-verb-text-make-zombie = Сделать зомби +admin-verb-text-make-nuclear-operative = Сделать ядерным оперативником +admin-verb-text-make-pirate = Сделать пиратом +admin-verb-text-make-head-rev = Сделать Главой революции diff --git a/Resources/Locale/ru-RU/administration/bwoink.ftl b/Resources/Locale/ru-RU/administration/bwoink.ftl new file mode 100644 index 00000000000..0c3690792b6 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/bwoink.ftl @@ -0,0 +1,8 @@ +bwoink-user-title = Сообщение от администратора +bwoink-system-starmute-message-no-other-users = *Система: Никто не доступен для получения вашего сообщения. Попробуйте обратиться к администраторам игры в Discord. +bwoink-system-messages-being-relayed-to-discord = Ваше сообщение было передано администраторам в Discord. Оно может остаться без ответа. +bwoink-system-typing-indicator = + { $players } { $count -> + [one] печатает + *[other] печатают + }... diff --git a/Resources/Locale/ru-RU/administration/smites.ftl b/Resources/Locale/ru-RU/administration/smites.ftl new file mode 100644 index 00000000000..471a9f41258 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/smites.ftl @@ -0,0 +1,84 @@ +admin-smite-chess-self = Вы чувствуете себя необычайно маленьким. +admin-smite-chess-others = { CAPITALIZE($name) } уменьшается до шахматной доски! +admin-smite-set-alight-self = Вы загораетесь пламенем! +admin-smite-set-alight-others = { CAPITALIZE($name) } загорается пламенем! +admin-smite-remove-blood-self = Вы чувствуете легкость и прохладу. +admin-smite-remove-blood-others = { CAPITALIZE($name) } растекается кровью по всему полу! +admin-smite-vomit-organs-self = Вас тошнит, и вы чувствуете себя опустошённо! +admin-smite-vomit-organs-others = { CAPITALIZE($name) } изрыгает свои органы! +admin-smite-remove-hands-self = У вас отваливаются руки! +admin-smite-remove-hands-other = У { CAPITALIZE($name) } отваливаются руки! +admin-smite-turned-ash-other = { CAPITALIZE($name) } превращается в кучку пепла! +admin-smite-stomach-removal-self = Вы ощущаете пустоту в желудке... +admin-smite-run-walk-swap-prompt = Для бега вы должны нажать Shift! +admin-smite-super-speed-prompt = Вы двигаетесь почти со скоростью звука! +admin-smite-lung-removal-self = Вы не можете вдохнуть! +admin-smite-explode-description = Взорвите цель. +admin-smite-chess-dimension-description = Изгнание в шахматное измерение. +admin-smite-set-alight-description = Заставляет цель гореть. +admin-smite-monkeyify-description = Превращает цель в обезьяну. +admin-smite-lung-cancer-description = Рак лёгких IIIA стадии, для настоящих любителей популярного шоу "Во все тяжкие". +admin-smite-electrocute-description = Поражает цель электрическим током, делая бесполезным все, что было на них надето. +admin-smite-creampie-description = Кремовый пирог, всего одной кнопкой. +admin-smite-remove-blood-description = Обескровливает цель, кроваво. +admin-smite-vomit-organs-description = Вызывает у цели рвоту, в том числе и органами. +admin-smite-remove-hands-description = Лишает цель рук. +admin-smite-pinball-description = Превращает цель в суперпрыгучий мяч, метая её об стены пока она не клипнется сквозь станцию в бездну. +admin-smite-yeet-description = Изгоняет цель в глубины космоса, включив no-clip и швыряя её. +admin-smite-become-bread-description = Превращает цель в хлеб. И всё. +admin-smite-ghostkick-description = Тихо кикает пользователя, разрывая его соединение. +admin-smite-nyanify-description = Насильно добавляет кошачьи ушки, от которых никуда не деться. +admin-smite-kill-sign-description = Накладывает на игрока метку смерти для его товарищей. +admin-smite-cluwne-description = Превращает в клувеня. Костюм нельзя снять, и экипаж станции может беспрепятственно убивать их. +admin-smite-anger-pointing-arrows-description = Разъяряет указательные стрелки, заставляя их атаковать цель взрывами. +admin-smite-dust-description = Превращает цель в небольшую кучку пепла. +admin-smite-buffering-description = Вызывает у цели случайный запуск буферизации, замораживая её на короткое время, пока она подгружается. +admin-smite-become-instrument-description = Превращает цель в суперсинтезатор. И всё. +admin-smite-remove-gravity-description = Наделяет цель антигравитацией. +admin-smite-reptilian-species-swap-description = Меняет расу на Унатха. Пригодится для тех, кто ведёт себя как космический расист. +admin-smite-locker-stuff-description = Помещает цель в (заваренный) шкафчик. +admin-smite-headstand-description = Переворачивает спрайт по вертикали. +admin-smite-plasma-internals-description = Заменяет содержимое лёгких плазмой. +admin-smite-become-mouse-description = Цель станет крысой. Рататуй. +admin-smite-maid-description = Насильно превращает цель в кошко-служанку уборщицу. Это настоящая пытка для некоторых игроков, используйте её с умом. +admin-smite-zoom-in-description = Увеличивает зум так, что цель перестает видеть окружение. +admin-smite-flip-eye-description = Переворачивает их обзор, фактически меняя управление и делая игру раздражающей. +admin-smite-run-walk-swap-description = Меняет местами бег и ходьбу, заставляя цель держать Shift, чтобы двигаться быстро. +admin-smite-stomach-removal-description = Удаляет желудок цели, лишая её возможности питаться. +admin-smite-super-speed-description = Делает цель очень быстрой, заставляя её превращаться в фарш при столкновении со стеной. +admin-smite-speak-backwards-description = Заставляет цель говорить задом наперед, так что она не сможет позвать на помощь. +admin-smite-lung-removal-description = Удаляет лёгкие цели, топя её. +admin-smite-remove-hand-description = Удаляет только одну из рук цели вместо всех. +admin-smite-disarm-prone-description = Шанс обезоружить цель становится 100%, а наручники надеваются на неё мгновенно. +admin-smite-garbage-can-description = Превратите цель в мусорку, чтобы подчеркнуть, о чём она вам напоминает. +admin-trick-unbolt-description = Разболтирует целевой шлюз. +admin-trick-bolt-description = Болтирует целевой шлюз. +admin-trick-emergency-access-on-description = Включает аварийный доступ к целевому шлюзу. +admin-trick-emergency-access-off-description = Выключает аварийный доступ к целевому шлюзу. +admin-trick-make-indestructible-description = Делает целевой объект неуязвимым, фактически godmode. +admin-trick-make-vulnerable-description = Делает целевой объект уязвимым снова, отключая godmode. +admin-trick-block-unanchoring-description = Не даёт закрепить целевой объект. +admin-trick-refill-battery-description = Перезаряжает батарею целевого объекта. +admin-trick-drain-battery-description = Разряжает батарею целевого объекта. +admin-trick-internals-refill-oxygen-description = Заполняет кислородом баллон или лёгкие цели. +admin-trick-internals-refill-nitrogen-description = Заполняет азотом баллон или лёгкие цели. +admin-trick-internals-refill-plasma-description = Заполняет плазмой баллон или лёгкие цели. +admin-trick-send-to-test-arena-description = Отправляет объект на испытательную арену админа. Эта арена является индивидуальной для каждого администратора. +admin-trick-grant-all-access-description = Даёт цели полный доступ. +admin-trick-revoke-all-access-description = Забирает у цели весь доступ. +admin-trick-rejuvenate-description = Возрождает цель, исцеляет её от всего. +admin-trick-adjust-stack-description = Устанавливает размер стопки на указанное значение. +admin-trick-fill-stack-description = Устанавливает размер стопки на максимум. +admin-trick-rename-description = Переименовывает целевой объект. Обратите внимание, что это не равно команде `rename` и не исправит его ID. +admin-trick-redescribe-description = Переописывает целевой объект. +admin-trick-rename-and-redescribe-description = Переименовывает и переописывает объект одной кнопкой. +admin-trick-bar-job-slots-description = Закрывает все слоты должностей на станции, так что никто не сможет присоединиться. +admin-trick-locate-cargo-shuttle-description = Телепортирует вас прямо на грузовой шаттл станции, если он есть. +admin-trick-infinite-battery-description = Перенастраивает СМЭСы и подстанции на сетке/станции/карте на быструю автозарядку. +admin-trick-infinite-battery-object-description = Перенастраивает объект на быструю автозарядку его батареи. +admin-trick-halt-movement-description = Прекращает движение целевого объекта, по крайней мере, пока что-то не сдвинет его снова. +admin-trick-unpause-map-description = Снимает выбранную карту с паузы. ОБРАТИТЕ ВНИМАНИЕ, ЧТО ЭТО МОЖЕТ ПРИВЕСТИ К НЕПРАВИЛЬНОЙ РАБОТЕ СО STORAGE MAPS! +admin-trick-pause-map-description = Ставит выбранную карту на паузу. Обратите внимание, что это не останавливает движение игроков полностью! +admin-trick-snap-joints-description = Удаляет все физические шарниры из объекта. К сожалению, не отщелкивает все кости в теле. +admin-trick-minigun-fire-description = Заставляет целевое оружие стрелять как миниган (очень быстро). +admin-trick-set-bullet-amount-description = Быстро устанавливает значение количества незаспавненных патронов в оружии. From c21b7fa08dbe453f07de75be591f6797d5eed3ea Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:23:09 +0300 Subject: [PATCH 16/34] Create add-uplink-command.ftl --- .../ru-RU/administration/commands/add-uplink-command.ftl | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl diff --git a/Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl b/Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl new file mode 100644 index 00000000000..d9bb9fb87c9 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/add-uplink-command.ftl @@ -0,0 +1,6 @@ +add-uplink-command-description = Создает аплинк в выбранном предмете и привязывает его к аккаунту игрока +add-uplink-command-help = Использование: adduplink [username] [item-id] +add-uplink-command-completion-1 = Username (по-умолчанию это вы сами) +add-uplink-command-completion-2 = Uplink uid (по-умолчанию это КПК) +add-uplink-command-error-1 = Выбранный игрок не имеет подконтрольную сущность +add-uplink-command-error-2 = Не удалось добавить аплинк игроку From e9f95605a64e34c2b9da0ba3108559b797f48124 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:23:39 +0300 Subject: [PATCH 17/34] Add files via upload --- .../commands/call-shuttle-command.ftl | 4 +++ .../commands/control-mob-command.ftl | 2 ++ .../commands/custom-vote-command.ftl | 1 + ...delete-entities-with-component-command.ftl | 5 ++++ .../administration/commands/dsay-command.ftl | 2 ++ .../administration/commands/osay-command.ftl | 7 +++++ .../administration/commands/panicbunker.ftl | 28 +++++++++++++++++++ .../commands/play-global-sound-command.ftl | 7 +++++ .../commands/polymorph-command.ftl | 5 ++++ .../commands/rejuvenate-command.ftl | 6 ++++ .../commands/set-admin-ooc-command.ftl | 2 ++ .../commands/set-looc-command.ftl | 6 ++++ .../commands/set-mind-command.ftl | 4 +++ .../commands/set-ooc-command.ftl | 6 ++++ .../commands/set-outfit-command.ftl | 4 +++ .../administration/commands/tag-commands.ftl | 9 ++++++ .../commands/throw-scoreboard-command.ftl | 2 ++ .../commands/variantize-command.ftl | 2 ++ 18 files changed, 102 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/commands/call-shuttle-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/custom-vote-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/dsay-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/osay-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/panicbunker.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/play-global-sound-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/polymorph-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/set-admin-ooc-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/set-looc-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/set-mind-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/set-ooc-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/set-outfit-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/tag-commands.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/throw-scoreboard-command.ftl create mode 100644 Resources/Locale/ru-RU/administration/commands/variantize-command.ftl diff --git a/Resources/Locale/ru-RU/administration/commands/call-shuttle-command.ftl b/Resources/Locale/ru-RU/administration/commands/call-shuttle-command.ftl new file mode 100644 index 00000000000..b427a180988 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/call-shuttle-command.ftl @@ -0,0 +1,4 @@ +call-shuttle-command-description = Вызывает эвакуационный шаттл с указанием времени прибытия по выбору. +call-shuttle-command-help-text = Использование: { $command } [m:ss] +recall-shuttle-command-description = Отзывает эвакуационный шаттл. +recall-shuttle-command-help-text = Использование: { $command } diff --git a/Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl b/Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl new file mode 100644 index 00000000000..2061657da88 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/control-mob-command.ftl @@ -0,0 +1,2 @@ +control-mob-command-description = Переносит разум пользователя в указанную сущность. +control-mob-command-help-text = Использование: controlmob . diff --git a/Resources/Locale/ru-RU/administration/commands/custom-vote-command.ftl b/Resources/Locale/ru-RU/administration/commands/custom-vote-command.ftl new file mode 100644 index 00000000000..0e926c58be7 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/custom-vote-command.ftl @@ -0,0 +1 @@ +custom-vote-webhook-name = Проведено кастомное голосование diff --git a/Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl b/Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl new file mode 100644 index 00000000000..553fcc6f37e --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/delete-entities-with-component-command.ftl @@ -0,0 +1,5 @@ +delete-entities-with-component-command-description = Удаляет сущности с указанными компонентами. +delete-entities-with-component-command-help-text = + Использование: deleteewc ... + Удаляет все сущности с указанными компонентами. +delete-entities-with-component-command-deleted-components = Удалено { $count } сущностей diff --git a/Resources/Locale/ru-RU/administration/commands/dsay-command.ftl b/Resources/Locale/ru-RU/administration/commands/dsay-command.ftl new file mode 100644 index 00000000000..8f20820c2b2 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/dsay-command.ftl @@ -0,0 +1,2 @@ +dsay-command-description = Отправляет сообщение в чат мертвых от имени администратора +dsay-command-help-text = Использование: { $command } diff --git a/Resources/Locale/ru-RU/administration/commands/osay-command.ftl b/Resources/Locale/ru-RU/administration/commands/osay-command.ftl new file mode 100644 index 00000000000..a4613a79c57 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/osay-command.ftl @@ -0,0 +1,7 @@ +osay-command-description = Заставляет другую сущность попытаться отправить сообщение +osay-command-help-text = Использование: { $command } +osay-command-arg-uid = source uid +osay-command-arg-type = type +osay-command-arg-message = message +osay-command-error-args = Недопустимое число аргументов. +osay-command-error-euid = { $arg } не является допустимым entity uid. diff --git a/Resources/Locale/ru-RU/administration/commands/panicbunker.ftl b/Resources/Locale/ru-RU/administration/commands/panicbunker.ftl new file mode 100644 index 00000000000..6cd1f83f233 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/panicbunker.ftl @@ -0,0 +1,28 @@ +cmd-panicbunker-desc = Toggles the panic bunker, which enables stricter restrictions on who's allowed to join the server. +cmd-panicbunker-help = Usage: panicbunker +panicbunker-command-enabled = Режим "Бункер" был включён. +panicbunker-command-disabled = Режим "Бункер" был выключен. +cmd-panicbunker_disable_with_admins-desc = Toggles whether or not the panic bunker will disable when an admin connects. +cmd-panicbunker_disable_with_admins-help = Usage: panicbunker_disable_with_admins +panicbunker-command-disable-with-admins-enabled = The panic bunker will automatically disable with admins online. +panicbunker-command-disable-with-admins-disabled = The panic bunker will not automatically disable with admins online. +cmd-panicbunker_enable_without_admins-desc = Toggles whether or not the panic bunker will enable when the last admin disconnects. +cmd-panicbunker_enable_without_admins-help = Usage: panicbunker_enable_without_admins +panicbunker-command-enable-without-admins-enabled = The panic bunker will automatically enable without admins online. +panicbunker-command-enable-without-admins-disabled = The panic bunker will not automatically enable without admins online. +cmd-panicbunker_count_deadminned_admins-desc = Toggles whether or not to count deadminned admins when automatically enabling and disabling the panic bunker. +cmd-panicbunker_count_deadminned_admins-help = Usage: panicbunker_count_deadminned_admins +panicbunker-command-count-deadminned-admins-enabled = The panic bunker will count deadminned admins when made to automatically enable and disable. +panicbunker-command-count-deadminned-admins-disabled = The panic bunker will not count deadminned admins when made to automatically enable and disable. +cmd-panicbunker_show_reason-desc = Toggles whether or not to show connecting clients the reason why the panic bunker blocked them from joining. +cmd-panicbunker_show_reason-help = Usage: panicbunker_show_reason +panicbunker-command-show-reason-enabled = The panic bunker will now show a reason to users it blocks from connecting. +panicbunker-command-show-reason-disabled = The panic bunker will no longer show a reason to users it blocks from connecting. +cmd-panicbunker_min_account_age-desc = Gets or sets the minimum account age in hours that an account must have to be allowed to connect with the panic bunker enabled. +cmd-panicbunker_min_account_age-help = Usage: panicbunker_min_account_age +panicbunker-command-min-account-age-is = The minimum account age for the panic bunker is { $hours } hours. +panicbunker-command-min-account-age-set = Set the minimum account age for the panic bunker to { $hours } hours. +cmd-panicbunker_min_overall_hours-desc = Gets or sets the minimum overall playtime in hours that an account must have to be allowed to connect with the panic bunker enabled. +cmd-panicbunker_min_overall_hours-help = Usage: panicbunker_min_overall_hours +panicbunker-command-min-overall-hours-is = The minimum overall playtime for the panic bunker is { $hours } hours. +panicbunker-command-min-overall-hours-set = Set the minimum overall playtime for the panic bunker to { $hours } hours. diff --git a/Resources/Locale/ru-RU/administration/commands/play-global-sound-command.ftl b/Resources/Locale/ru-RU/administration/commands/play-global-sound-command.ftl new file mode 100644 index 00000000000..f9e0ceff27d --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/play-global-sound-command.ftl @@ -0,0 +1,7 @@ +play-global-sound-command-description = Проигрывает глобальный звук для выбранного игрока или для каждого подключенного игрока, если не выбран конкретный. +play-global-sound-command-help = playglobalsound [user 1] ... [user n] +play-global-sound-command-player-not-found = Игрок "{ $username }" не найден. +play-global-sound-command-volume-parse = Задан неправильный уровень громкости { $volume }. +play-global-sound-command-arg-path = +play-global-sound-command-arg-volume = [volume] +play-global-sound-command-arg-usern = [user { $user }] diff --git a/Resources/Locale/ru-RU/administration/commands/polymorph-command.ftl b/Resources/Locale/ru-RU/administration/commands/polymorph-command.ftl new file mode 100644 index 00000000000..b7e84237008 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/polymorph-command.ftl @@ -0,0 +1,5 @@ +polymorph-command-description = Когда хотите чтобы кто-то перестал быть персоной. Принимает entity и прототип полиморфа. +polymorph-command-help-text = polymorph +add-polymorph-action-command-description = Принимает сущность и выдаёт ей добровольный полиморф. +add-polymorph-action-command-help-text = addpolymorphaction +polymorph-not-valid-prototype-error = Прототип полиморфа не валиден. diff --git a/Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl b/Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl new file mode 100644 index 00000000000..17343638bdb --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/rejuvenate-command.ftl @@ -0,0 +1,6 @@ +rejuvenate-command-description = Полностью исцеляет моба. +rejuvenate-command-help-text = + Использование: rejuvenate ... + Пытается вылечить моба пользователя, если аргументы не предоставлены. +rejuvenate-command-self-heal-message = Исцеление пользовательского моба, поскольку аргументы не были предоставлены. +rejuvenate-command-no-entity-attached-message = К пользователю не привязана никакая сущность. diff --git a/Resources/Locale/ru-RU/administration/commands/set-admin-ooc-command.ftl b/Resources/Locale/ru-RU/administration/commands/set-admin-ooc-command.ftl new file mode 100644 index 00000000000..023d78627a2 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/set-admin-ooc-command.ftl @@ -0,0 +1,2 @@ +set-admin-ooc-command-description = Устанавливает цвет ваших OOC-сообщений. Цвет должен быть в шестнадцатеричном формате, пример: { $command } #c43b23 +set-admin-ooc-command-help-text = Использование: { $command } diff --git a/Resources/Locale/ru-RU/administration/commands/set-looc-command.ftl b/Resources/Locale/ru-RU/administration/commands/set-looc-command.ftl new file mode 100644 index 00000000000..67267b6836f --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/set-looc-command.ftl @@ -0,0 +1,6 @@ +set-looc-command-description = Позволяет включить или выключить LOOC. +set-looc-command-help = Использование: setlooc ИЛИ setlooc [value] +set-looc-command-too-many-arguments-error = Слишком много аргументов. +set-looc-command-invalid-argument-error = Неверный аргумент. +set-looc-command-looc-enabled = LOOC чат был включен. +set-looc-command-looc-disabled = LOOC чат был выключен. diff --git a/Resources/Locale/ru-RU/administration/commands/set-mind-command.ftl b/Resources/Locale/ru-RU/administration/commands/set-mind-command.ftl new file mode 100644 index 00000000000..eab8a8765b2 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/set-mind-command.ftl @@ -0,0 +1,4 @@ +set-mind-command-description = Перемещает сознание в указанную сущность. Сущность должна иметь { $requiredComponent }. По умолчанию это заставит разум, который в данный момент посещает другие сущности, вернуться обратно (т.е. вернуть призрака в свое основное тело). +set-mind-command-help-text = Использование: { $command } [unvisit] +set-mind-command-target-has-no-content-data-message = Целевой игрок не имеет данных о содержимом (wtf?) +set-mind-command-target-has-no-mind-message = Целевая сущность не обладает разумом (вы забыли сделать ее разумной?) diff --git a/Resources/Locale/ru-RU/administration/commands/set-ooc-command.ftl b/Resources/Locale/ru-RU/administration/commands/set-ooc-command.ftl new file mode 100644 index 00000000000..f15e6d275c3 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/set-ooc-command.ftl @@ -0,0 +1,6 @@ +set-ooc-command-description = Позволяет включить или выключить OOC. +set-ooc-command-help = Использование: setooc ИЛИ setooc [value] +set-ooc-command-too-many-arguments-error = Слишком много аргументов. +set-ooc-command-invalid-argument-error = Неверный аргумент. +set-ooc-command-ooc-enabled = OOC чат был включен. +set-ooc-command-ooc-disabled = OOC чат был выключен. diff --git a/Resources/Locale/ru-RU/administration/commands/set-outfit-command.ftl b/Resources/Locale/ru-RU/administration/commands/set-outfit-command.ftl new file mode 100644 index 00000000000..8647a396b4b --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/set-outfit-command.ftl @@ -0,0 +1,4 @@ +set-outfit-command-description = Устанавливает наряд указанной сущности. Сущность должна иметь { $requiredComponent } +set-outfit-command-help-text = Использование: { $command } | { $command } +set-outfit-command-is-not-player-error = Это не работает из консоли сервера. Вы должны передать также идентификатор наряда. +set-outfit-command-invalid-outfit-id-error = Неверный идентификатор наряда diff --git a/Resources/Locale/ru-RU/administration/commands/tag-commands.ftl b/Resources/Locale/ru-RU/administration/commands/tag-commands.ftl new file mode 100644 index 00000000000..4dc5fc22c34 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/tag-commands.ftl @@ -0,0 +1,9 @@ +addtag-command-description = Добавить тег к выбранной сущности +addtag-command-help = Использование: addtag +addtag-command-success = Тег { $tag } был добавлен { $target }. +addtag-command-fail = Не удалость добавить тег { $tag } к { $target }. +removetag-command-description = Удалить тег у выбранной сущности +removetag-command-help = Использование: removetag +removetag-command-success = Тег { $tag } был удалён у { $target }. +removetag-command-fail = Не удалость удалить тег { $tag } у { $target }. +tag-command-arg-tag = Tag diff --git a/Resources/Locale/ru-RU/administration/commands/throw-scoreboard-command.ftl b/Resources/Locale/ru-RU/administration/commands/throw-scoreboard-command.ftl new file mode 100644 index 00000000000..4d33f5bf52b --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/throw-scoreboard-command.ftl @@ -0,0 +1,2 @@ +throw-scoreboard-command-description = Показать окно результатов раунда для всех игроков, но не завершать раунд +throw-scoreboard-command-help-text = Использование: throwscoreboard diff --git a/Resources/Locale/ru-RU/administration/commands/variantize-command.ftl b/Resources/Locale/ru-RU/administration/commands/variantize-command.ftl new file mode 100644 index 00000000000..912d577d35c --- /dev/null +++ b/Resources/Locale/ru-RU/administration/commands/variantize-command.ftl @@ -0,0 +1,2 @@ +variantize-command-description = Рандомизирует все варианты плиток пола в заданной области. +variantize-command-help-text = variantize From 153f91cc8b278566dad8f1b43d1a2594218623b4 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:24:32 +0300 Subject: [PATCH 18/34] Create admin-manager.ftl --- .../ru-RU/administration/managers/admin-manager.ftl | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/managers/admin-manager.ftl diff --git a/Resources/Locale/ru-RU/administration/managers/admin-manager.ftl b/Resources/Locale/ru-RU/administration/managers/admin-manager.ftl new file mode 100644 index 00000000000..f85203d52d2 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/managers/admin-manager.ftl @@ -0,0 +1,9 @@ +admin-manager-self-de-admin-message = { $exAdminName } снимает с себя права админа. +admin-manager-self-re-admin-message = { $newAdminName } возвращает себе права админа. +admin-manager-became-normal-player-message = Теперь вы обычный игрок. +admin-manager-became-admin-message = Теперь вы администратор. +admin-manager-no-longer-admin-message = Вы больше не администратор. +admin-manager-admin-permissions-updated-message = Ваши права администратора были обновлены. +admin-manager-admin-logout-message = Админ вышел: { $name } +admin-manager-admin-login-message = Админ зашёл: { $name } +admin-manager-admin-data-host-title = Хост From e098bbc6cd0d0155e091d49481d0a0f66afa0313 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:25:04 +0300 Subject: [PATCH 19/34] Create admin-verbs.ftl --- .../ru-RU/administration/ui/admin-verbs.ftl | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl b/Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl new file mode 100644 index 00000000000..a577ad821f4 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl @@ -0,0 +1,16 @@ +delete-verb-get-data-text = Удалить +edit-solutions-verb-get-data-text = Редактировать растворы +explode-verb-get-data-text = Взорвать +ahelp-verb-get-data-text = Написать +admin-verbs-admin-logs-entity = Логи сущности +admin-verbs-teleport-to = Телепортироваться к +admin-verbs-teleport-here = Телепортировать сюда +admin-verbs-freeze = Заморозить +admin-verbs-unfreeze = Разморозить +admin-verbs-erase = Стереть +admin-verbs-erase-description = + Удаляет игрока из раунда и манифеста членов экипажа, а также удаляет все его сообщения в чате. + Их вещи упадут на землю. + Игроки увидят всплывающее окно, указывающее им играть как будто исчезнувшего никогда не существовало. +toolshed-verb-mark = Отметить +toolshed-verb-mark-description = Помещает данную сущность в переменную $marked, заменяя ее предыдущее значение. From a911dec93f6604ffc924af065a803fc56a057ed1 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:26:38 +0300 Subject: [PATCH 20/34] Update and rename admin-verbs.ftl to actions.ftl --- .../Locale/ru-RU/administration/ui/actions.ftl | 11 +++++++++++ .../ru-RU/administration/ui/admin-verbs.ftl | 16 ---------------- 2 files changed, 11 insertions(+), 16 deletions(-) create mode 100644 Resources/Locale/ru-RU/administration/ui/actions.ftl delete mode 100644 Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/actions.ftl b/Resources/Locale/ru-RU/administration/ui/actions.ftl new file mode 100644 index 00000000000..4fd7efa3f81 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/actions.ftl @@ -0,0 +1,11 @@ +admin-player-actions-bans = Бан-лист +admin-player-actions-notes = Заметки +admin-player-actions-kick = Кикнуть +admin-player-actions-ban = Забанить +admin-player-actions-ahelp = ПМ +admin-player-actions-respawn = Респаун +admin-player-actions-spawn = Заспавнить тут +admin-player-spawn-failed = Не удалось найти подходящие координаты +admin-player-actions-clone = Клонировать +admin-player-actions-teleport = Телепортироваться к +admin-player-actions-confirm = Вы уверены? diff --git a/Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl b/Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl deleted file mode 100644 index a577ad821f4..00000000000 --- a/Resources/Locale/ru-RU/administration/ui/admin-verbs.ftl +++ /dev/null @@ -1,16 +0,0 @@ -delete-verb-get-data-text = Удалить -edit-solutions-verb-get-data-text = Редактировать растворы -explode-verb-get-data-text = Взорвать -ahelp-verb-get-data-text = Написать -admin-verbs-admin-logs-entity = Логи сущности -admin-verbs-teleport-to = Телепортироваться к -admin-verbs-teleport-here = Телепортировать сюда -admin-verbs-freeze = Заморозить -admin-verbs-unfreeze = Разморозить -admin-verbs-erase = Стереть -admin-verbs-erase-description = - Удаляет игрока из раунда и манифеста членов экипажа, а также удаляет все его сообщения в чате. - Их вещи упадут на землю. - Игроки увидят всплывающее окно, указывающее им играть как будто исчезнувшего никогда не существовало. -toolshed-verb-mark = Отметить -toolshed-verb-mark-description = Помещает данную сущность в переменную $marked, заменяя ее предыдущее значение. From 818f85d58167f25343af099e1232d5bd44646ba3 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:27:02 +0300 Subject: [PATCH 21/34] Add files via upload --- .../ui/admin-announce-window.ftl | 8 +++ .../ru-RU/administration/ui/admin-erase.ftl | 1 + .../ru-RU/administration/ui/admin-logs.ftl | 19 +++++ .../administration/ui/admin-menu-window.ftl | 11 +++ .../ru-RU/administration/ui/admin-notes.ftl | 72 +++++++++++++++++++ .../ui/admin-spawn-explosion-eui.ftl | 15 ++++ .../ru-RU/administration/ui/ban-list.ftl | 19 +++++ .../administration/ui/permissions-eui.ftl | 21 ++++++ 8 files changed, 166 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/admin-announce-window.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/admin-erase.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/admin-logs.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/admin-menu-window.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/admin-notes.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/admin-spawn-explosion-eui.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/ban-list.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/permissions-eui.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/admin-announce-window.ftl b/Resources/Locale/ru-RU/administration/ui/admin-announce-window.ftl new file mode 100644 index 00000000000..7070b48efa1 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/admin-announce-window.ftl @@ -0,0 +1,8 @@ +admin-announce-title = Сделать объявление +admin-announce-announcement-placeholder = Текст объявления... +admin-announce-announcer-placeholder = Отправитель +admin-announce-announcer-default = Центральное командование +admin-announce-button = Сделать объявление +admin-announce-type-station = Станция +admin-announce-type-server = Сервер +admin-announce-keep-open = Держать открытым diff --git a/Resources/Locale/ru-RU/administration/ui/admin-erase.ftl b/Resources/Locale/ru-RU/administration/ui/admin-erase.ftl new file mode 100644 index 00000000000..cc6ff96b8d0 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/admin-erase.ftl @@ -0,0 +1 @@ +admin-erase-popup = { $user } бесследно исчезает. Продолжайте играть как будто его никогда не было. diff --git a/Resources/Locale/ru-RU/administration/ui/admin-logs.ftl b/Resources/Locale/ru-RU/administration/ui/admin-logs.ftl new file mode 100644 index 00000000000..7e500a12ee9 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/admin-logs.ftl @@ -0,0 +1,19 @@ +admin-logs-title = Панель админ логов +admin-logs-count = Показано { $showing }/{ $total } +admin-logs-pop-out = Поп-аут +# Round +admin-logs-round = Раунд{ " " } +admin-logs-reset = Сбросить +admin-logs-reset-with-id = Сбросить раунд (#{ $id }) +# Types +admin-logs-search-types-placeholder = Поиск типа... (ИЛИ) +admin-logs-select-all = Все +admin-logs-select-none = Никакие +# Players +admin-logs-search-players-placeholder = Поиск игрока... (ИЛИ) +admin-logs-select-none = Никакие +admin-logs-include-non-player = Включая не-игроков +# Logs +admin-logs-search-logs-placeholder = Поиск по логам... +admin-logs-refresh = Обновить +admin-logs-next = Далее diff --git a/Resources/Locale/ru-RU/administration/ui/admin-menu-window.ftl b/Resources/Locale/ru-RU/administration/ui/admin-menu-window.ftl new file mode 100644 index 00000000000..76105ecb430 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/admin-menu-window.ftl @@ -0,0 +1,11 @@ +## AdminMenuWindow.xaml.cs + +admin-menu-title = Меню администратора +admin-menu-admin-tab = Администратор +admin-menu-adminbus-tab = АдминАбуз +admin-menu-atmos-tab = Атмос +admin-menu-round-tab = Раунд +admin-menu-server-tab = Сервер +admin-menu-panic-bunker-tab = Режим "Бункер" +admin-menu-players-tab = Игроки +admin-menu-objects-tab = Объекты diff --git a/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl new file mode 100644 index 00000000000..5549f4d6faa --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/admin-notes.ftl @@ -0,0 +1,72 @@ +# UI +admin-notes-title = Заметки о { $player } +admin-notes-new-note = Новая заметка +admin-notes-show-more = Показать больше +admin-notes-for = Заметка для: { $player } +admin-notes-id = Id: { $id } +admin-notes-type = Тип: { $type } +admin-notes-severity = Серьёзность: { $severity } +admin-notes-secret = Секретно +admin-notes-notsecret = Не секретно +admin-notes-expires = Истекает: { $expires } +admin-notes-expires-never = Не истекает +admin-notes-edited-never = Никогда +admin-notes-round-id = Id раунда: { $id } +admin-notes-round-id-unknown = Id раунда: неизвестно +admin-notes-created-by = Создал: { $author } +admin-notes-created-at = Создано в: { $date } +admin-notes-last-edited-by = Последним изменил: { $author } +admin-notes-last-edited-at = Последнее изменение в: { $date } +admin-notes-edit = Изменить +admin-notes-delete = Удалить +admin-notes-hide = Скрыть +admin-notes-delete-confirm = Вы уверены? +admin-notes-edited = Последнее изменение от { $author } в { $date } +admin-notes-unbanned = Разбанил { $admin } в { $date } +admin-notes-message-window-title = Внимание! +admin-notes-message-admin = Новое сообщение от { $admin }, добавлено в { $date } +admin-notes-message-wait = Кнопки будут доступны через { $time } секунд. +admin-notes-message-accept = Скрыть навсегда +admin-notes-message-dismiss = Скрыть временно +admin-notes-message-seen = Просмотрено +admin-notes-banned-from = В бане +admin-notes-the-server = на сервере +admin-notes-permanently = перманентно +# Verb +admin-notes-verb-text = Заметки +admin-notes-days = { $days } дней +admin-notes-hours = { $hours } часов +admin-notes-minutes = { $minutes } минут +# Note editor UI +admin-note-editor-title-new = Новая заметка для { $player } +admin-note-editor-title-existing = Изменение заметки { $id } для { $player } от { $author } +admin-note-editor-pop-out = Поп-аут +admin-note-editor-secret = Секрет? +admin-note-editor-secret-tooltip = Если установить этот флажок, то заметка не будет видна игроку +admin-note-editor-type-note = Заметка +admin-note-editor-type-message = Сообщение +admin-note-editor-type-watchlist = Наблюдение +admin-note-editor-type-server-ban = Сервер бан +admin-note-editor-type-role-ban = Роль бан +admin-note-editor-severity-select = Выбрать +admin-note-editor-severity-none = Нет +admin-note-editor-severity-low = Низкий +admin-note-editor-severity-medium = Средний +admin-note-editor-severity-high = Высокий +admin-note-editor-expiry-checkbox = Пермаментно? +admin-note-editor-expiry-checkbox-tooltip = Уберите флажок, что бы сделать его истекаемым +admin-note-editor-expiry-label = Истекает в: +admin-note-editor-expiry-label-params = Истекает: { $date } (через { $expiresIn }) +admin-note-editor-expiry-label-expired = Истёк +admin-note-editor-expiry-placeholder = Укажите срок действия (yyyy-MM-dd HH:mm:ss) +admin-note-editor-submit = Подтвердить +admin-note-editor-submit-confirm = Вы уверены? +# Watchlist and message login +admin-notes-watchlist = Наблюдение над { $player }: { $message } +admin-notes-new-message = Вы получили админ сообщение от { $admin }: { $message } +# Admin remarks +admin-remarks-command-description = Открыть страницу админ замечаний +admin-remarks-command-error = Админ замечания были отключены +admin-remarks-title = Админ замечания +# Misc +system-user = [Система] diff --git a/Resources/Locale/ru-RU/administration/ui/admin-spawn-explosion-eui.ftl b/Resources/Locale/ru-RU/administration/ui/admin-spawn-explosion-eui.ftl new file mode 100644 index 00000000000..8556c1e3981 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/admin-spawn-explosion-eui.ftl @@ -0,0 +1,15 @@ +admin-explosion-eui-title = Создание взрывов +admin-explosion-eui-label-type = Тип взрыва +admin-explosion-eui-label-mapid = ID карты +admin-explosion-eui-label-xmap = X (Карты) +admin-explosion-eui-label-ymap = Y (Карты) +admin-explosion-eui-label-current = Текущая позиция +admin-explosion-eui-label-preview = Предпросмотр +admin-explosion-eui-label-total = Общая интенсивность +admin-explosion-eui-label-slope = Наклон интенсивности +admin-explosion-eui-label-max = Макс интенсивность +admin-explosion-eui-label-directional = Направленный +admin-explosion-eui-label-angle = Угол +admin-explosion-eui-label-spread = Радиус +admin-explosion-eui-label-distance = Дистанция +admin-explosion-eui-label-spawn = Бабах! diff --git a/Resources/Locale/ru-RU/administration/ui/ban-list.ftl b/Resources/Locale/ru-RU/administration/ui/ban-list.ftl new file mode 100644 index 00000000000..1df1a5e0531 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/ban-list.ftl @@ -0,0 +1,19 @@ +# UI +ban-list-bans = Баны +ban-list-role-bans = Баны ролей +# UI +ban-list-header-ids = ID +ban-list-header-reason = Причина +ban-list-header-role = Роль +ban-list-header-time = Длительность бана +ban-list-header-expires = Истекает +ban-list-header-banning-admin = Забанил +ban-list-title = Все баны { $player } +ban-list-view = Показать +ban-list-id = ID: { $id } +ban-list-ip = IP: { $ip } +ban-list-hwid = HWID: { $hwid } +ban-list-guid = GUID: { $guid } +ban-list-permanent = НАВСЕГДА +ban-list-unbanned = Разбанен: { $date } +ban-list-unbanned-by = Разбанил { $unbanner } diff --git a/Resources/Locale/ru-RU/administration/ui/permissions-eui.ftl b/Resources/Locale/ru-RU/administration/ui/permissions-eui.ftl new file mode 100644 index 00000000000..4105ef7936b --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/permissions-eui.ftl @@ -0,0 +1,21 @@ +permissions-eui-do-not-have-required-flags-to-edit-admin-tooltip = У вас нет необходимых флагов для редактирования этого администратора. +permissions-eui-do-not-have-required-flags-to-edit-rank-tooltip = У вас нет необходимых флагов для редактирования этого ранга. +permissions-eui-menu-title = Панель разрешений +permissions-eui-menu-add-admin-button = Добавить админа +permissions-eui-menu-add-admin-rank-button = Добавить админ ранг +permissions-eui-menu-save-admin-rank-button = Сохранить +permissions-eui-menu-remove-admin-rank-button = Удалить +permissions-eui-menu-admins-tab-title = Админы +permissions-eui-menu-admin-ranks-tab-title = Админ ранги +permissions-eui-edit-admin-window-edit-admin-label = Редактировать админа { $admin } +permissions-eui-edit-admin-window-name-edit-placeholder = Имя или ID пользователя +permissions-eui-edit-admin-window-title-edit-placeholder = Пользовательское название, оставить пустым, чтобы унаследовать название ранга. +permissions-eui-edit-admin-window-no-rank-button = Нет ранга +permissions-eui-edit-admin-rank-window-name-edit-placeholder = Название ранга +permissions-eui-edit-admin-title-control-text = отсутствует +permissions-eui-edit-no-rank-text = отсутствует +permissions-eui-edit-title-button = Редактировать +permissions-eui-edit-admin-rank-button = Редактировать +permissions-eui-edit-admin-rank-window-title = Редактирование админ ранга +permissions-eui-edit-admin-window-save-button = Сохранить +permissions-eui-edit-admin-window-remove-flag-button = Удалить From 10bbb00029422c92d7e657198d217ea0c20ecd6a Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:27:48 +0300 Subject: [PATCH 22/34] Create add-reagent.ftl --- .../ru-RU/administration/ui/manage-solutions/add-reagent.ftl | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl b/Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl new file mode 100644 index 00000000000..a6064a849bb --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/manage-solutions/add-reagent.ftl @@ -0,0 +1,5 @@ +admin-add-reagent-window-title = Добавить к { $solution } +admin-add-reagent-window-amount-label = Количество: +admin-add-reagent-window-search-placeholder = Фильтр... +admin-add-reagent-window-add = Добавить { $quantity } ед. { $reagent } +admin-add-reagent-window-add-invalid-reagent = Выберите реагент From 7848249787e8ed4c237cee141f295b0dc1b16f33 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:28:10 +0300 Subject: [PATCH 23/34] Create manage-solutions.ftl --- .../ui/manage-solutions/manage-solutions.ftl | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/manage-solutions/manage-solutions.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/manage-solutions/manage-solutions.ftl b/Resources/Locale/ru-RU/administration/ui/manage-solutions/manage-solutions.ftl new file mode 100644 index 00000000000..5a82a38bc25 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/manage-solutions/manage-solutions.ftl @@ -0,0 +1,10 @@ +admin-solutions-window-title = Редактирование раствора - { $targetName } +admin-solutions-window-solution-label = Целевой раствор: +admin-solutions-window-add-new-button = Добавить новый реагент +admin-solutions-window-volume-label = Объем { $currentVolume }/{ $maxVolume } ед. +admin-solutions-window-capacity-label = Вместимость (u): +admin-solutions-window-specific-heat-label = Удельная теплоёмкость: { $specificHeat } Дж/(К*u) +admin-solutions-window-heat-capacity-label = Теплоёмкость: { $heatCapacity } Дж/К +admin-solutions-window-temperature-label = Температура (К): +admin-solutions-window-thermal-energy-label = Тепловая энергия (Дж): +admin-solutions-window-thermals = Thermals From c2d8082bc932be734f6a1c70468205d579fa69e5 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:28:45 +0300 Subject: [PATCH 24/34] Create set-outfit-menu.ftl --- .../ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl b/Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl new file mode 100644 index 00000000000..b9a7f65133d --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/set-outfit/set-outfit-menu.ftl @@ -0,0 +1,4 @@ +### SetOutfitMEnu.xaml.cs + +set-outfit-menu-title = Установить наряд +set-outfit-menu-confirm-button = Подтвердить From e0ce4aa6260f23cfa6ca490b3331c7b15740a39d Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:29:19 +0300 Subject: [PATCH 25/34] Create panicbunker-tab.ftl --- .../administration/ui/tabs/panicbunker-tab.ftl | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/tabs/panicbunker-tab.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/tabs/panicbunker-tab.ftl b/Resources/Locale/ru-RU/administration/ui/tabs/panicbunker-tab.ftl new file mode 100644 index 00000000000..3a90e14e4a7 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/tabs/panicbunker-tab.ftl @@ -0,0 +1,17 @@ +admin-ui-panic-bunker-window-title = Panic Bunker +admin-ui-panic-bunker-enabled = Panic Bunker Enabled +admin-ui-panic-bunker-disabled = Panic Bunker Disabled +admin-ui-panic-bunker-tooltip = The panic bunker restricts players from joining if their account is too new or they do not have enough overall playtime on this server. +admin-ui-panic-bunker-disable-automatically = Disable Automatically +admin-ui-panic-bunker-disable-automatically-tooltip = Disables the panic bunker automatically when an admin connects. +admin-ui-panic-bunker-enable-automatically = Enable Automatically +admin-ui-panic-bunker-enable-automatically-tooltip = Enables the panic bunker automatically when no admins are online. +admin-ui-panic-bunker-count-deadminned-admins = Count Deadmins +admin-ui-panic-bunker-count-deadminned-admins-tooltip = Count deadminned admins when automatically enabling and disabling the panic bunker. +admin-ui-panic-bunker-show-reason = Show Reason +admin-ui-panic-bunker-show-reason-tooltip = Show the user why they were blocked from connecting by the panic bunker. +admin-ui-panic-bunker-min-account-age = Min. Account Age +admin-ui-panic-bunker-min-overall-hours = Min. Overall Playtime +admin-ui-panic-bunker-is-enabled = The panic bunker is currently enabled. +admin-ui-panic-bunker-enabled-admin-alert = The panic bunker has been enabled. +admin-ui-panic-bunker-disabled-admin-alert = The panic bunker has been disabled. From 8f55074ab8aa325ed54057ab3646b69a641a1603 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:29:37 +0300 Subject: [PATCH 26/34] Add files via upload --- .../Locale/ru-RU/administration/ui/tabs/player-tab.ftl | 8 ++++++++ .../Locale/ru-RU/administration/ui/tabs/round-tab.ftl | 1 + .../Locale/ru-RU/administration/ui/tabs/server-tab.ftl | 3 +++ 3 files changed, 12 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/tabs/player-tab.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/tabs/round-tab.ftl create mode 100644 Resources/Locale/ru-RU/administration/ui/tabs/server-tab.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/tabs/player-tab.ftl b/Resources/Locale/ru-RU/administration/ui/tabs/player-tab.ftl new file mode 100644 index 00000000000..653a1db2390 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/tabs/player-tab.ftl @@ -0,0 +1,8 @@ +player-tab-username = Пользователь +player-tab-character = Персонаж +player-tab-job = Должность +player-tab-antagonist = Антагонист +player-tab-playtime = Игровое время +player-tab-show-disconnected = Показать отключившихся +player-tab-overlay = Оверлей +player-tab-entry-tooltip = Игровое время отображается как дни:часы:минуты. diff --git a/Resources/Locale/ru-RU/administration/ui/tabs/round-tab.ftl b/Resources/Locale/ru-RU/administration/ui/tabs/round-tab.ftl new file mode 100644 index 00000000000..0fed18e6a9a --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/tabs/round-tab.ftl @@ -0,0 +1 @@ +administration-ui-round-tab-restart-round-now = Перезапустить СЕЙЧАС diff --git a/Resources/Locale/ru-RU/administration/ui/tabs/server-tab.ftl b/Resources/Locale/ru-RU/administration/ui/tabs/server-tab.ftl new file mode 100644 index 00000000000..d559a0142c3 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/tabs/server-tab.ftl @@ -0,0 +1,3 @@ +server-shutdown = Выключить сервер +server-ooc-toggle = Вкл/Выкл OOC +server-looc-toggle = Вкл/Выкл LOOC From 004abbd8eb0050b52a5e0f654e3646f26fb5e26f Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:30:27 +0300 Subject: [PATCH 27/34] Create adminbus-tab.ftl --- .../administration/ui/tabs/adminbus-tab/adminbus-tab.ftl | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/tabs/adminbus-tab/adminbus-tab.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/tabs/adminbus-tab/adminbus-tab.ftl b/Resources/Locale/ru-RU/administration/ui/tabs/adminbus-tab/adminbus-tab.ftl new file mode 100644 index 00000000000..e6c8c7c79aa --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/tabs/adminbus-tab/adminbus-tab.ftl @@ -0,0 +1,4 @@ +delete-singularities = Удалить сингулярности +open-station-events = Случайные события +load-game-prototype = Загрузить прототип +load-blueprints = Загрузить чертежи From 2e2aa3191bf67fd2a8a22dedc9df003deab50939 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:31:01 +0300 Subject: [PATCH 28/34] Create call-shuttle-window.ftl --- .../administration/ui/tabs/admin-tab/call-shuttle-window.ftl | 1 + 1 file changed, 1 insertion(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/call-shuttle-window.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/call-shuttle-window.ftl b/Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/call-shuttle-window.ftl new file mode 100644 index 00000000000..05ca8e9eadc --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/call-shuttle-window.ftl @@ -0,0 +1 @@ +admin-shuttle-title = Вызвать/Отозвать шаттл From 90c3c9ee0cc6cb7e996382a550300fcbc0bf97be Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:31:23 +0300 Subject: [PATCH 29/34] Create player-actions-window.ftl --- .../ui/tabs/admin-tab/player-actions-window.ftl | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/player-actions-window.ftl diff --git a/Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/player-actions-window.ftl b/Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/player-actions-window.ftl new file mode 100644 index 00000000000..5eb1438b100 --- /dev/null +++ b/Resources/Locale/ru-RU/administration/ui/tabs/admin-tab/player-actions-window.ftl @@ -0,0 +1,10 @@ +admin-player-actions-window-title = Действия с игроками +admin-player-actions-window-ban = Панель банов +admin-player-actions-window-admin-ghost = Админ призрак +admin-player-actions-window-teleport = Телепорт +admin-player-actions-window-permissions = Панель доступов +admin-player-actions-window-announce = Сделать объявление +admin-player-actions-window-shuttle = Вызвать/отозвать шаттл +admin-player-actions-window-admin-logs = Админ логи +admin-player-actions-window-admin-notes = Админ заметки +admin-player-actions-window-admin-fax = Админ факс From 92b10a8b8178bfcb4799a0a36e97bb970e6056cd Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:48:34 +0300 Subject: [PATCH 30/34] Create __init__.py --- Tools/ss14_ru/__init__.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 Tools/ss14_ru/__init__.py diff --git a/Tools/ss14_ru/__init__.py b/Tools/ss14_ru/__init__.py new file mode 100644 index 00000000000..8fc809dcf53 --- /dev/null +++ b/Tools/ss14_ru/__init__.py @@ -0,0 +1 @@ +from fluentformatter import FluentFile, FluentFormatter From 0174b457535207818c78f5a661b25a0f7c66e521 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 14:49:02 +0300 Subject: [PATCH 31/34] Add files via upload --- Tools/ss14_ru/file.py | 91 ++++++++ Tools/ss14_ru/fluentast.py | 187 +++++++++++++++ Tools/ss14_ru/fluentastcomparer.py | 100 ++++++++ Tools/ss14_ru/fluentastmanager.py | 25 ++ Tools/ss14_ru/fluentformatter.py | 37 +++ Tools/ss14_ru/keyfinder.py | 220 ++++++++++++++++++ .../lokalise_fluent_ast_comparer_manager.py | 48 ++++ Tools/ss14_ru/lokalise_project.py | 33 +++ Tools/ss14_ru/lokalisemodels.py | 64 +++++ Tools/ss14_ru/project.py | 31 +++ Tools/ss14_ru/requirements.txt | Bin 0 -> 142 bytes Tools/ss14_ru/translationsassembler.py | 67 ++++++ Tools/ss14_ru/yamlextractor.py | 85 +++++++ Tools/ss14_ru/yamlmodels.py | 26 +++ 14 files changed, 1014 insertions(+) create mode 100644 Tools/ss14_ru/file.py create mode 100644 Tools/ss14_ru/fluentast.py create mode 100644 Tools/ss14_ru/fluentastcomparer.py create mode 100644 Tools/ss14_ru/fluentastmanager.py create mode 100644 Tools/ss14_ru/fluentformatter.py create mode 100644 Tools/ss14_ru/keyfinder.py create mode 100644 Tools/ss14_ru/lokalise_fluent_ast_comparer_manager.py create mode 100644 Tools/ss14_ru/lokalise_project.py create mode 100644 Tools/ss14_ru/lokalisemodels.py create mode 100644 Tools/ss14_ru/project.py create mode 100644 Tools/ss14_ru/requirements.txt create mode 100644 Tools/ss14_ru/translationsassembler.py create mode 100644 Tools/ss14_ru/yamlextractor.py create mode 100644 Tools/ss14_ru/yamlmodels.py diff --git a/Tools/ss14_ru/file.py b/Tools/ss14_ru/file.py new file mode 100644 index 00000000000..3ec0424c22f --- /dev/null +++ b/Tools/ss14_ru/file.py @@ -0,0 +1,91 @@ +import typing + +from fluent.syntax import ast +from yamlmodels import YAMLElements +import os + + +class File: + def __init__(self, full_path): + self.full_path = full_path + + def read_data(self): + file = open(self.full_path, 'r', encoding='utf8') + # replace необходим для того, чтобы 1-е сообщение не считалось ast.Junk + file_data = file.read().replace('', '') + file.close() + + return file_data + + def save_data(self, file_data: typing.AnyStr): + os.makedirs(os.path.dirname(self.full_path), exist_ok=True) + file = open(self.full_path, 'w', encoding='utf8') + file.write(file_data) + file.close() + + def get_relative_path(self, base_path): + return os.path.relpath(self.full_path, base_path) + + def get_relative_path_without_extension(self, base_path): + return self.get_relative_path(base_path).split('.', maxsplit=1)[0] + + def get_relative_parent_dir(self, base_path): + return os.path.relpath(self.get_parent_dir(), base_path) + + def get_parent_dir(self): + return os.path.dirname(self.full_path) + + def get_name(self): + return os.path.basename(self.full_path).split('.')[0] + + +class FluentFile(File): + def __init__(self, full_path): + super().__init__(full_path) + self.full_path = full_path + + def parse_data(self, file_data: typing.AnyStr): + from fluent.syntax import FluentParser + + return FluentParser().parse(file_data) + + def serialize_data(self, parsed_file_data: ast.Resource): + from fluent.syntax import FluentSerializer + + return FluentSerializer(with_junk=True).serialize(parsed_file_data) + + def read_serialized_data(self): + return self.serialize_data(self.parse_data(self.read_data())) + + def read_parsed_data(self): + return self.parse_data(self.read_data()) + + +class YAMLFluentFileAdapter(File): + def __init__(self, full_path): + super().__init__(full_path) + self.full_path = full_path + + # def create_fluent_from_yaml_elements(self, yaml_elements): + + + +class YAMLFile(File): + def __init__(self, full_path): + super().__init__(full_path) + + def parse_data(self, file_data: typing.AnyStr): + import yaml + + return yaml.load(file_data, Loader=yaml.BaseLoader) + + def get_elements(self, parsed_data): + + if isinstance(parsed_data, list): + elements = YAMLElements(parsed_data).elements + # элемент может быть None, если имеет неизвестный тип + exist_elements = list(filter(lambda el: el, elements)) + + return exist_elements + + return [] diff --git a/Tools/ss14_ru/fluentast.py b/Tools/ss14_ru/fluentast.py new file mode 100644 index 00000000000..b6f0a58f3aa --- /dev/null +++ b/Tools/ss14_ru/fluentast.py @@ -0,0 +1,187 @@ +import typing + +from fluent.syntax import ast, FluentParser, FluentSerializer +from lokalisemodels import LokaliseKey +from pydash import py_ + + +class FluentAstAbstract: + element = None + @classmethod + def get_id_name(cls, element): + if isinstance(element, ast.Junk): + return FluentAstJunk(element).get_id_name() + elif isinstance(element, ast.Message): + return FluentAstMessage(element).get_id_name() + elif isinstance(element, ast.Term): + return FluentAstTerm(element).get_id_name() + else: + return None + + @classmethod + def create_element(cls, element): + if isinstance(element, ast.Junk): + cls.element = FluentAstJunk(element) + return cls.element + elif isinstance(element, ast.Message): + cls.element = FluentAstMessage(element) + return cls.element + elif isinstance(element, ast.Term): + cls.element = FluentAstTerm(element) + return cls.element + else: + return None + + +class FluentAstMessage: + def __init__(self, message: ast.Message): + self.message = message + self.element = message + + def get_id_name(self): + return self.message.id.name + + +class FluentAstTerm: + def __init__(self, term: ast.Term): + self.term = term + self.element = term + + def get_id_name(self): + return self.term.id.name + + +class FluentAstAttribute: + def __init__(self, id, value, parent_key = None): + self.id = id + self.value = value + self.parent_key = parent_key + + +class FluentAstAttributeFactory: + @classmethod + def from_yaml_element(cls, element): + attrs = [] + if element.description: + attrs.append(FluentAstAttribute('desc', element.description)) + + if element.suffix: + attrs.append(FluentAstAttribute('suffix', element.suffix)) + + if not len(attrs): + return None + + return attrs + + +class FluentAstJunk: + def __init__(self, junk: ast.Junk): + self.junk = junk + self.element = junk + + def get_id_name(self): + return self.junk.content.split('=')[0].strip() + + +class FluentSerializedMessage: + @classmethod + def from_yaml_element(cls, id, value, attributes, parent_id = None, raw_key = False): + if not value and not id and not parent_id: + return None + + if not attributes: + attributes = [] + + if len(list(filter(lambda attr: attr.id == 'desc', attributes))) == 0: + if parent_id: + attributes.append(FluentAstAttribute('desc', '{ ' + FluentSerializedMessage.get_key(parent_id) + '.desc' + ' }')); + else: + attributes.append(FluentAstAttribute('desc', '{ "" }')) + + message = f'{cls.get_key(id, raw_key)} = {cls.get_value(value, parent_id)}\n' + + if attributes and len(attributes): + full_message = message + + for attr in attributes: + fluent_newlines = attr.value.replace("\n", "\n "); + full_message = cls.add_attr(full_message, attr.id, fluent_newlines, raw_key=raw_key) + + desc_attr = py_.find(attributes, lambda a: a.id == 'desc') + if not desc_attr and parent_id: + full_message = cls.add_attr(full_message, 'desc', '{ ' + FluentSerializedMessage.get_key(parent_id) + '.desc' + ' }') + + return full_message + + return cls.to_serialized_message(message) + + @classmethod + def from_lokalise_keys(cls, keys: typing.List[LokaliseKey]): + attributes_keys = list(filter(lambda k: k.is_attr, keys)) + attributes = list(map(lambda k: FluentAstAttribute(id='.{name}'.format(name=k.get_key_last_name(k.key_name)), + value=FluentSerializedMessage.get_attr(k, k.get_key_last_name(k.key_name)), parent_key=k.get_parent_key()), + attributes_keys)) + attributes_group = py_.group_by(attributes, 'parent_key') + + serialized_message = '' + for key in keys: + if key.is_attr: + continue + key_name = key.get_key_last_name(key.key_name) + key_value = key.get_translation('ru').data['translation'] + key_attributes = [] + + if len(attributes_group): + k = f'{key.get_key_base_name(key.key_name)}.{key_name}' + key_attributes = attributes_group[k] if k in attributes_group else [] + + message = key.serialize_message() + full_message = cls.from_yaml_element(key_name, key_value, key_attributes, key.get_parent_key(), True) + + if full_message: + serialized_message = serialized_message + '\n' + full_message + elif message: + serialized_message = serialized_message + '\n' + message + else: + raise Exception('Что-то пошло не так') + + return serialized_message + + @staticmethod + def get_attr(k, name, parent_id = None): + if parent_id: + return "{ " + parent_id + f'.{name}' + " }" + else: + return k.get_translation('ru').data['translation'] + + + @staticmethod + def to_serialized_message(string_message): + if not string_message: + return None + + ast_message = FluentParser().parse(string_message) + serialized = FluentSerializer(with_junk=True).serialize(ast_message) + + return serialized if serialized else '' + + @staticmethod + def add_attr(message_str, attr_key, attr_value, raw_key = False): + prefix = '' if raw_key else '.' + return f'{message_str}\n {prefix}{attr_key} = {attr_value}' + + @staticmethod + def get_value(value, parent_id): + if value: + return value + elif parent_id: + return '{ ' + FluentSerializedMessage.get_key(parent_id) + ' }' + else: + return '{ "" }' + + @staticmethod + def get_key(id, raw = False): + if raw: + return f'{id}' + else: + return f'ent-{id}' diff --git a/Tools/ss14_ru/fluentastcomparer.py b/Tools/ss14_ru/fluentastcomparer.py new file mode 100644 index 00000000000..d6a1b79b6b1 --- /dev/null +++ b/Tools/ss14_ru/fluentastcomparer.py @@ -0,0 +1,100 @@ +from fluent.syntax import ast +from fluentast import FluentAstAbstract +from pydash import py_ + + +class FluentAstComparer: + def __init__(self, sourse_parsed: ast.Resource, target_parsed: ast.Resource): + self.sourse_parsed = sourse_parsed + self.target_parsed = target_parsed + self.source_elements = list( + filter(lambda el: el, list(map(lambda e: FluentAstAbstract.create_element(e), sourse_parsed.body)))) + self.target_elements = list( + filter(lambda el: el, list(map(lambda e: FluentAstAbstract.create_element(e), target_parsed.body)))) + + # Возвращает полностью эквивалентные сообщения (не считая span) + def get_equal_elements(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span']) + + return py_.intersection_with(self.source_elements, self.target_elements, comparator=comparator) + + # Возвращает полностью неэквивалентные сообщения (не считая span) + def get_not_equal_elements(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span']) + diff = py_.difference_with(self.source_elements, self.target_elements, comparator=comparator) + + return diff + + # Возвращает сообщения с эквивалентными именами ключей + def get_equal_id_names(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span', 'value', 'comment', 'attributes']) + eq = py_.intersection_with(self.source_elements, self.target_elements, comparator=comparator) + + return eq + + # Возвращает сообщения с неэквивалентными именами ключей + def get_not_equal_id_names(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span', 'value', 'comment', 'attributes']) + diff = py_.difference_with(self.source_elements, self.target_elements, comparator=comparator) + + return diff + + # Возвращает сообщения target, существующие в source + def get_exist_id_names(self, source, target): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span', 'value', 'comment', 'attributes']) + eq = py_.intersection_with(source, target, comparator=comparator) + + return eq + + # Возвращает сообщения target, существующие в source + def get_not_exist_id_names(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span', 'value', 'comment', 'attributes']) + diff = py_.difference_with(self.target_elements, self.source_elements, comparator=comparator) + + return diff + + # Возвращает сообщения с эквивалентным значением и атрибутами + def get_equal_values_with_attrs(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span', 'id', 'comment']) + eq = py_.intersection_with(self.target_elements, self.source_elements, comparator=comparator) + + return eq + + # Возвращает сообщения из source с неэквивалентным значением и атрибутами + def get_not_equal_values_with_attrs(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span', 'id', 'comment']) + diff = py_.difference_with(self.source_elements, self.target_elements, + comparator=lambda a, b: a.element.equals(b.element, + ignored_fields=['span', 'id', 'comment'])) + + return diff + + # Возвращает сообщения из source, существующие в target и source, с неэквивалентным значением и атрибутами + def get_not_equal_exist_values_with_attrs(self): + diff = py_.difference_with(self.source_elements, self.target_elements, + comparator=lambda a, b: a.element.equals(b.element, + ignored_fields=['span', 'id', 'comment'])) + ex = self.get_exist_id_names(self.source_elements, self.target_elements) + exist = py_.intersection(diff, ex) + + return exist + + # Возвращает сообщения из target с неэквивалентным значением и атрибутами + + def get_target_not_equal_values_with_attrs(self): + comparator = lambda a, b: a.element.equals(b.element, ignored_fields=['span', 'id', 'comment']) + diff = py_.difference_with(self.source_elements, self.target_elements, comparator=comparator) + + return diff + + # Возвращает сообщения, существующие в target и source, с неэквивалентным значением и атрибутами + def get_target_not_equal_exist_values_with_attrs(self): + diff = py_.difference_with(self.target_elements, self.source_elements, + comparator=lambda a, b: a.element.equals(b.element, + ignored_fields=['span', 'id', 'comment'])) + exist = py_.intersection(diff, self.get_exist_id_names(self.target_elements, self.source_elements)) + + return exist + + def find_message_by_id_name(self, id_name, list): + return py_.find(list, lambda el: el.get_id_name() == id_name) diff --git a/Tools/ss14_ru/fluentastmanager.py b/Tools/ss14_ru/fluentastmanager.py new file mode 100644 index 00000000000..8bc420827c3 --- /dev/null +++ b/Tools/ss14_ru/fluentastmanager.py @@ -0,0 +1,25 @@ +from fluent.syntax import ast +from fluentast import FluentAstAbstract + + +class FluentAstManager: + def __init__(self, sourse_parsed: ast.Resource, target_parsed: ast.Resource): + self.sourse_parsed = sourse_parsed + self.target_parsed = target_parsed + self.source_elements = list(map(lambda e: FluentAstAbstract.create_element(e), sourse_parsed.body)) + self.target_elements = list(map(lambda e: FluentAstAbstract.create_element(e), target_parsed.body)) + + def update_by_index(self, index, update_element: ast.Message): + source_element = None + + try: + source_element = self.sourse_parsed.body[index] + except: + raise Exception(f'Нет элемента с индексом {index}') + + if not source_element: + raise Exception(f'Элемен с индексом {index} не существует') + + self.sourse_parsed.body[index] = update_element + + return self.sourse_parsed diff --git a/Tools/ss14_ru/fluentformatter.py b/Tools/ss14_ru/fluentformatter.py new file mode 100644 index 00000000000..0937b4146c2 --- /dev/null +++ b/Tools/ss14_ru/fluentformatter.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +# Форматтер, приводящий fluent-файлы (.ftl) в соответствие стайлгайду +# path - путь к папке, содержащий форматируемые файлы. Для форматирования всего проекта, необходимо заменить значение на root_dir_path +import typing + +from file import FluentFile +from project import Project +from fluent.syntax import ast, FluentParser, FluentSerializer + + +######################################### Class defifitions ############################################################ + +class FluentFormatter: + @classmethod + def format(cls, fluent_files: typing.List[FluentFile]): + for file in fluent_files: + file_data = file.read_data() + parsed_file_data = file.parse_data(file_data) + serialized_file_data = file.serialize_data(parsed_file_data) + file.save_data(serialized_file_data) + + @classmethod + def format_serialized_file_data(cls, file_data: typing.AnyStr): + parsed_data = FluentParser().parse(file_data) + + return FluentSerializer(with_junk=True).serialize(parsed_data) + + + +######################################## Var definitions ############################################################### +project = Project() +fluent_files = project.get_fluent_files_by_dir(project.ru_locale_dir_path) + +######################################################################################################################## + +FluentFormatter.format(fluent_files) diff --git a/Tools/ss14_ru/keyfinder.py b/Tools/ss14_ru/keyfinder.py new file mode 100644 index 00000000000..079d884024d --- /dev/null +++ b/Tools/ss14_ru/keyfinder.py @@ -0,0 +1,220 @@ +import typing +import logging + +from pydash import py_ + +from file import FluentFile +from fluentast import FluentAstAbstract +from fluentformatter import FluentFormatter +from project import Project +from fluent.syntax import ast, FluentParser, FluentSerializer + + +# Осуществляет актуализацию ключей. Находит файлы английского перевода, проверяет: есть ли русскоязычная пара +# Если нет - создаёт файл с копией переводов из англоязычного +# Далее, пофайлово проверяются ключи. Если в английском файле больше ключей - создает недостающие в русском, с английской копией перевода +# Отмечает русские файлы, в которых есть те ключи, что нет в аналогичных английских +# Отмечает русские файлы, у которых нет англоязычной пары + +######################################### Class defifitions ############################################################ +class RelativeFile: + def __init__(self, file: FluentFile, locale: typing.AnyStr, relative_path_from_locale: typing.AnyStr): + self.file = file + self.locale = locale + self.relative_path_from_locale = relative_path_from_locale + + +class FilesFinder: + def __init__(self, project: Project): + self.project: Project = project + self.created_files: typing.List[FluentFile] = [] + + def get_relative_path_dict(self, file: FluentFile, locale): + if locale == 'ru-RU': + return RelativeFile(file=file, locale=locale, + relative_path_from_locale=file.get_relative_path(self.project.ru_locale_dir_path)) + elif locale == 'en-US': + return RelativeFile(file=file, locale=locale, + relative_path_from_locale=file.get_relative_path(self.project.en_locale_dir_path)) + else: + raise Exception(f'Локаль {locale} не поддерживается') + + def get_file_pair(self, en_file: FluentFile) -> typing.Tuple[FluentFile, FluentFile]: + ru_file_path = en_file.full_path.replace('en-US', 'ru-RU') + ru_file = FluentFile(ru_file_path) + + return en_file, ru_file + + def execute(self): + self.created_files = [] + groups = self.get_files_pars() + keys_without_pair = list(filter(lambda g: len(groups[g]) < 2, groups)) + + for key_without_pair in keys_without_pair: + relative_file: RelativeFile = groups.get(key_without_pair)[0] + + if relative_file.locale == 'en-US': + ru_file = self.create_ru_analog(relative_file) + self.created_files.append(ru_file) + elif relative_file.locale == 'ru-RU': + is_engine_files = "robust-toolbox" in (relative_file.file.full_path) + is_corvax_files = "corvax" in (relative_file.file.full_path) + if not is_engine_files and not is_corvax_files: + self.warn_en_analog_not_exist(relative_file) + else: + raise Exception(f'Файл {relative_file.file.full_path} имеет неизвестную локаль "{relative_file.locale}"') + + return self.created_files + + def get_files_pars(self): + en_fluent_files = self.project.get_fluent_files_by_dir(project.en_locale_dir_path) + ru_fluent_files = self.project.get_fluent_files_by_dir(project.ru_locale_dir_path) + + en_fluent_relative_files = list(map(lambda f: self.get_relative_path_dict(f, 'en-US'), en_fluent_files)) + ru_fluent_relative_files = list(map(lambda f: self.get_relative_path_dict(f, 'ru-RU'), ru_fluent_files)) + relative_files = py_.flatten_depth(py_.concat(en_fluent_relative_files, ru_fluent_relative_files), depth=1) + + return py_.group_by(relative_files, 'relative_path_from_locale') + + def create_ru_analog(self, en_relative_file: RelativeFile) -> FluentFile: + en_file: FluentFile = en_relative_file.file + en_file_data = en_file.read_data() + ru_file_path = en_file.full_path.replace('en-US', 'ru-RU') + ru_file = FluentFile(ru_file_path) + ru_file.save_data(en_file_data) + + logging.info(f'Создан файл {ru_file_path} с переводами из английского файла') + + return ru_file + + def warn_en_analog_not_exist(self, ru_relative_file: RelativeFile): + file: FluentFile = ru_relative_file.file + en_file_path = file.full_path.replace('ru-RU', 'en-US') + + logging.warning(f'Файл {file.full_path} не имеет английского аналога по пути {en_file_path}') + + +class KeyFinder: + def __init__(self, files_dict): + self.files_dict = files_dict + self.changed_files: typing.List[FluentFile] = [] + + def execute(self) -> typing.List[FluentFile]: + self.changed_files = [] + for pair in self.files_dict: + ru_relative_file = py_.find(self.files_dict[pair], {'locale': 'ru-RU'}) + en_relative_file = py_.find(self.files_dict[pair], {'locale': 'en-US'}) + + if not en_relative_file or not ru_relative_file: + continue + + ru_file: FluentFile = ru_relative_file.file + en_file: FluentFile = en_relative_file.file + + self.compare_files(en_file, ru_file) + + return self.changed_files + + + def compare_files(self, en_file, ru_file): + ru_file_parsed: ast.Resource = ru_file.parse_data(ru_file.read_data()) + en_file_parsed: ast.Resource = en_file.parse_data(en_file.read_data()) + + self.write_to_ru_files(ru_file, ru_file_parsed, en_file_parsed) + self.log_not_exist_en_files(en_file, ru_file_parsed, en_file_parsed) + + + def write_to_ru_files(self, ru_file, ru_file_parsed, en_file_parsed): + for idx, en_message in enumerate(en_file_parsed.body): + if isinstance(en_message, ast.ResourceComment) or isinstance(en_message, ast.GroupComment) or isinstance(en_message, ast.Comment): + continue + + ru_message_analog_idx = py_.find_index(ru_file_parsed.body, lambda ru_message: self.find_duplicate_message_id_name(ru_message, en_message)) + have_changes = False + + # Attributes + if getattr(en_message, 'attributes', None) and ru_message_analog_idx != -1: + if not ru_file_parsed.body[ru_message_analog_idx].attributes: + ru_file_parsed.body[ru_message_analog_idx].attributes = en_message.attributes + have_changes = True + else: + for en_attr in en_message.attributes: + ru_attr_analog = py_.find(ru_file_parsed.body[ru_message_analog_idx].attributes, lambda ru_attr: ru_attr.id.name == en_attr.id.name) + if not ru_attr_analog: + ru_file_parsed.body[ru_message_analog_idx].attributes.append(en_attr) + have_changes = True + + # New elements + if ru_message_analog_idx == -1: + ru_file_body = ru_file_parsed.body + if (len(ru_file_body) >= idx + 1): + ru_file_parsed = self.append_message(ru_file_parsed, en_message, idx) + else: + ru_file_parsed = self.push_message(ru_file_parsed, en_message) + have_changes = True + + if have_changes: + serialized = serializer.serialize(ru_file_parsed) + self.save_and_log_file(ru_file, serialized, en_message) + + def log_not_exist_en_files(self, en_file, ru_file_parsed, en_file_parsed): + for idx, ru_message in enumerate(ru_file_parsed.body): + if isinstance(ru_message, ast.ResourceComment) or isinstance(ru_message, ast.GroupComment) or isinstance(ru_message, ast.Comment): + continue + + en_message_analog = py_.find(en_file_parsed.body, lambda en_message: self.find_duplicate_message_id_name(ru_message, en_message)) + + if not en_message_analog: + logging.warning(f'Ключ "{FluentAstAbstract.get_id_name(ru_message)}" не имеет английского аналога по пути {en_file.full_path}"') + + def append_message(self, ru_file_parsed, en_message, en_message_idx): + ru_message_part_1 = ru_file_parsed.body[0:en_message_idx] + ru_message_part_middle = [en_message] + ru_message_part_2 = ru_file_parsed.body[en_message_idx:] + new_body = py_.flatten_depth([ru_message_part_1, ru_message_part_middle, ru_message_part_2], depth=1) + ru_file_parsed.body = new_body + + return ru_file_parsed + + def push_message(self, ru_file_parsed, en_message): + ru_file_parsed.body.append(en_message) + return ru_file_parsed + + def save_and_log_file(self, file, file_data, message): + file.save_data(file_data) + logging.info(f'В файл {file.full_path} добавлен ключ "{FluentAstAbstract.get_id_name(message)}"') + self.changed_files.append(file) + + def find_duplicate_message_id_name(self, ru_message, en_message): + ru_element_id_name = FluentAstAbstract.get_id_name(ru_message) + en_element_id_name = FluentAstAbstract.get_id_name(en_message) + + if not ru_element_id_name or not en_element_id_name: + return False + + if ru_element_id_name == en_element_id_name: + return ru_message + else: + return None + +######################################## Var definitions ############################################################### + +logging.basicConfig(level = logging.INFO) +project = Project() +parser = FluentParser() +serializer = FluentSerializer(with_junk=True) +files_finder = FilesFinder(project) +key_finder = KeyFinder(files_finder.get_files_pars()) + +######################################################################################################################## + +print('Проверка актуальности файлов ...') +created_files = files_finder.execute() +if len(created_files): + print('Форматирование созданных файлов ...') + FluentFormatter.format(created_files) +print('Проверка актуальности ключей ...') +changed_files = key_finder.execute() +if len(changed_files): + print('Форматирование изменённых файлов ...') + FluentFormatter.format(changed_files) diff --git a/Tools/ss14_ru/lokalise_fluent_ast_comparer_manager.py b/Tools/ss14_ru/lokalise_fluent_ast_comparer_manager.py new file mode 100644 index 00000000000..4eff73e3b50 --- /dev/null +++ b/Tools/ss14_ru/lokalise_fluent_ast_comparer_manager.py @@ -0,0 +1,48 @@ +from fluent.syntax import ast + +from fluentast import FluentAstMessage +from fluentastcomparer import FluentAstComparer +from fluentastmanager import FluentAstManager + + +class LokaliseFluentAstComparerManager: + def __init__(self, sourse_parsed: ast.Resource, target_parsed: ast.Resource): + self.sourse_parsed = sourse_parsed + self.target_parsed = target_parsed + self.comparer = FluentAstComparer(sourse_parsed, target_parsed) + self.ast_manager = FluentAstManager(sourse_parsed, target_parsed) + + def for_update(self): + for_update = self.comparer.get_not_equal_exist_values_with_attrs() + + if not len(for_update): + return [] + + return for_update + + def update(self, for_update): + for update in for_update: + idx = self.comparer.sourse_parsed.body.index(update.element) + update_mess: FluentAstMessage = self.comparer.find_message_by_id_name(update.get_id_name(), + self.comparer.target_elements) + self.ast_manager.update_by_index(idx, update_mess.element) + + return self.ast_manager.sourse_parsed + + def for_delete(self): + for_delete = self.comparer.get_not_exist_id_names() + + if len(for_delete): + keys = list(map(lambda el: el.get_id_name(), for_delete)) + print(f'Следующие ключи есть в lokalise, но нет в файле. Возможно, их нужно удалить из lokalise: {keys}') + + return for_delete + + def for_create(self): + for_create = self.comparer.get_not_equal_id_names() + + if len(for_create): + keys = list(map(lambda el: el.get_id_name(), for_create)) + print(f'Следующих ключей файла нет в lokalise. Необходимо добавить: {keys}') + + return for_create diff --git a/Tools/ss14_ru/lokalise_project.py b/Tools/ss14_ru/lokalise_project.py new file mode 100644 index 00000000000..b16a60a6d35 --- /dev/null +++ b/Tools/ss14_ru/lokalise_project.py @@ -0,0 +1,33 @@ +import lokalise +import typing +from lokalisemodels import LokaliseKey +from pydash import py_ + +class LokaliseProject: + def __init__(self, project_id, personal_token): + self.project_id = project_id + self.personal_token = personal_token + self.client = lokalise.Client(self.personal_token) + + def get_all_keys(self) -> typing.List[LokaliseKey]: + page = 1 + keys = self.get_keys(page=page) + keys_items: typing.List[lokalise.client.KeyModel] = [] + general_count = 0 + + while (general_count < keys.total_count): + general_count = general_count + len(keys.items) + keys_items = py_.flatten_depth(py_.concat(keys_items, keys.items), depth=1) + + if (general_count == keys.total_count): + break + + next_page = page = page + 1 + keys = self.get_keys(page=next_page) + + sorted_list = py_.sort(keys_items, key=lambda item: item.translations_modified_at_timestamp, reverse=True) + + return list(map(lambda k: LokaliseKey(k), sorted_list)) + + def get_keys(self, page): + return self.client.keys(self.project_id, {'page': page, 'limit': 5000, 'include_translations': 1}) diff --git a/Tools/ss14_ru/lokalisemodels.py b/Tools/ss14_ru/lokalisemodels.py new file mode 100644 index 00000000000..66a925f105e --- /dev/null +++ b/Tools/ss14_ru/lokalisemodels.py @@ -0,0 +1,64 @@ +import typing +import os +from pydash import py_ +from project import Project + +class LocalePath: + def __init__(self, relative_file_path): + self.ru = os.path.join(Project().ru_locale_dir_path, relative_file_path) + self.en = os.path.join(Project().en_locale_dir_path, relative_file_path) + + +class LokaliseTranslation: + def __init__(self, data, key_name: typing.AnyStr): + self.key_name = key_name, + self.data = data + +class LokaliseKey: + def __init__(self, data): + self.data = data + self.key_name = self.data.key_name['web'] + self.key_base_name = self.get_key_base_name(self.key_name) + self.is_attr = self.check_is_attr() + + def get_file_path(self): + + relative_dir_path = '{relative_file_path}.ftl'.format( + relative_file_path='/'.join(self.data.key_name['web'].split('.')[0].split('::'))) + + return LocalePath(relative_dir_path) + + def get_key_base_name(self, key_name): + splitted_name = key_name.split('.') + return splitted_name[0] + + def get_key_last_name(self, key_name): + splitted_name = key_name.split('.') + return py_.last(splitted_name) + + def get_parent_key(self): + if self.is_attr: + splitted_name = self.key_name.split('.')[0:-1] + return '.'.join(splitted_name) + else: + return None + + def check_is_attr(self): + return len(self.key_name.split('.')) > 2 + + def serialize(self): + if self.is_attr: + return self.serialize_attr() + else: + return self.serialize_message() + + + + def serialize_attr(self): + return '.{name} = {value}'.format(name=self.get_key_last_name(self.key_name), value=self.get_translation('ru').data['translation']) + + def serialize_message(self): + return '{name} = {value}'.format(name=self.get_key_last_name(self.key_name), value=self.get_translation('ru').data['translation']) + + def get_translation(self, language_iso='ru'): + return list(map(lambda data: LokaliseTranslation(key_name=self.data.key_name['web'], data=data), py_.filter(self.data.translations, {'language_iso': language_iso})))[0] diff --git a/Tools/ss14_ru/project.py b/Tools/ss14_ru/project.py new file mode 100644 index 00000000000..2bf90e0790e --- /dev/null +++ b/Tools/ss14_ru/project.py @@ -0,0 +1,31 @@ +import pathlib +import os +import glob +from file import FluentFile + +class Project: + def __init__(self): + self.base_dir_path = pathlib.Path(os.path.abspath(os.curdir)).parent.parent.resolve() + self.resources_dir_path = os.path.join(self.base_dir_path, 'Resources') + self.locales_dir_path = os.path.join(self.resources_dir_path, 'Locale') + self.ru_locale_dir_path = os.path.join(self.locales_dir_path, 'ru-RU') + self.en_locale_dir_path = os.path.join(self.locales_dir_path, 'en-US') + self.prototypes_dir_path = os.path.join(self.resources_dir_path, "Prototypes") + self.en_locale_prototypes_dir_path = os.path.join(self.en_locale_dir_path, 'ss14-ru', 'prototypes') + self.ru_locale_prototypes_dir_path = os.path.join(self.ru_locale_dir_path, 'ss14-ru', 'prototypes') + + def get_files_paths_by_dir(self, dir_path, files_extenstion): + return glob.glob(f'{dir_path}/**/*.{files_extenstion}', recursive=True) + + def get_fluent_files_by_dir(self, dir_path): + files = [] + files_paths_list = glob.glob(f'{dir_path}/**/*.ftl', recursive=True) + + for file_path in files_paths_list: + try: + files.append(FluentFile(file_path)) + except: + continue + + return files + diff --git a/Tools/ss14_ru/requirements.txt b/Tools/ss14_ru/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..c68858f01804994cdda64a0739e37adf7324799a GIT binary patch literal 142 zcmezWFO4CGp_Cz&A&;Si!4?P&81xtn!K48LF9R1t0YfE23PU18F+&De-W(_oQezC3 z4FJkUGB`5$GWdXH&A_rCeI-Dd0)|YWx# Date: Tue, 26 Mar 2024 15:09:51 +0300 Subject: [PATCH 32/34] Update actions_changelogs_since_last_run.py --- Tools/actions_changelogs_since_last_run.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Tools/actions_changelogs_since_last_run.py b/Tools/actions_changelogs_since_last_run.py index 0cb27ae7410..369f932047b 100755 --- a/Tools/actions_changelogs_since_last_run.py +++ b/Tools/actions_changelogs_since_last_run.py @@ -145,10 +145,21 @@ def send_to_discord(entries: Iterable[ChangelogEntry]) -> None: emoji = TYPES_TO_EMOJI.get(change['type'], "❓") message = change['message'] url = entry.get("url") + # Corvax-Localization-Start + TRANSLATION_API_URL = os.environ.get("TRANSLATION_API_URL") + if TRANSLATION_API_URL: + resp = requests.post(TRANSLATION_API_URL, json={ + "text": message, + "source_lang": "EN", + "target_lang": "RU" + }) + message = resp.json()['data'] + # Corvax-Localization-End if url and url.strip(): group_content.write(f"{emoji} [-]({url}) {message}\n") else: group_content.write(f"{emoji} - {message}\n") + group_content.write(f"\n") # Corvax: Better formatting group_text = group_content.getvalue() message_text = message_content.getvalue() @@ -165,12 +176,14 @@ def send_to_discord(entries: Iterable[ChangelogEntry]) -> None: # Flush the group to the message message_content.write(group_text) - + # Clean up anything remaining message_text = message_content.getvalue() if len(message_text) > 0: print("Sending final changelog to discord") - send_discord(message_text) + content.seek(0) # Corvax + for chunk in iter(lambda: content.read(2000), ''): # Corvax: Split big changelogs messages + send_discord(chunk) main() From 70e10597467535753cd860012eb1e452625cd34f Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:11:56 +0300 Subject: [PATCH 33/34] Create setup_secrets.ps1 --- Tools/corvax/setup_secrets.ps1 | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Tools/corvax/setup_secrets.ps1 diff --git a/Tools/corvax/setup_secrets.ps1 b/Tools/corvax/setup_secrets.ps1 new file mode 100644 index 00000000000..89ec9a4a05d --- /dev/null +++ b/Tools/corvax/setup_secrets.ps1 @@ -0,0 +1,4 @@ +New-Item -ItemType Junction -Path "Resources\Prototypes\CorvaxSecrets" -Target "Secrets\Resources\Prototypes" +New-Item -ItemType Junction -Path "Resources\Prototypes\CorvaxSecretsServer" -Target "Secrets\Resources\ServerPrototypes" +New-Item -ItemType Junction -Path "Resources\Locale\ru-RU\corvax-secrets" -Target "Secrets\Resources\Locale" +New-Item -ItemType Junction -Path "Resources\Textures\CorvaxSecrets" -Target "Secrets\Resources\Textures" From 7dd2560c4e12e922c53adea4a4eaec459573e136 Mon Sep 17 00:00:00 2001 From: Zekins <136648667+Zekins3366@users.noreply.github.com> Date: Tue, 26 Mar 2024 15:35:31 +0300 Subject: [PATCH 34/34] Update ContentLocalizationManager.cs --- Content.Shared/Localizations/ContentLocalizationManager.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Content.Shared/Localizations/ContentLocalizationManager.cs b/Content.Shared/Localizations/ContentLocalizationManager.cs index 0a06d9ba4f3..0adb4704ddd 100644 --- a/Content.Shared/Localizations/ContentLocalizationManager.cs +++ b/Content.Shared/Localizations/ContentLocalizationManager.cs @@ -10,7 +10,8 @@ public sealed class ContentLocalizationManager [Dependency] private readonly ILocalizationManager _loc = default!; // If you want to change your codebase's language, do it here. - private const string Culture = "en-US"; + private const string Culture = "ru-RU"; // Corvax-Localization + private const string FallbackCulture = "en-US"; // Corvax-Localization /// /// Custom format strings used for parsing and displaying minutes:seconds timespans. @@ -26,8 +27,11 @@ public sealed class ContentLocalizationManager public void Initialize() { var culture = new CultureInfo(Culture); + var fallbackCulture = new CultureInfo(FallbackCulture); // Corvax-Localization _loc.LoadCulture(culture); + _loc.LoadCulture(fallbackCulture); // Corvax-Localization + _loc.SetFallbackCluture(fallbackCulture); // Corvax-Localization _loc.AddFunction(culture, "PRESSURE", FormatPressure); _loc.AddFunction(culture, "POWERWATTS", FormatPowerWatts); _loc.AddFunction(culture, "POWERJOULES", FormatPowerJoules); @@ -36,6 +40,7 @@ public void Initialize() _loc.AddFunction(culture, "LOC", FormatLoc); _loc.AddFunction(culture, "NATURALFIXED", FormatNaturalFixed); _loc.AddFunction(culture, "NATURALPERCENT", FormatNaturalPercent); + _loc.AddFunction(culture, "MANY", FormatMany); // TODO: Temporary fix for MANY() fluent errors. Remove after resolve errors. /*