Перейти к содержимому
Zone of Games Forum
Memoric

Автопереводчик для Unity игр XUnity.AutoTranslator

Рекомендованные сообщения

https://github.com/bbepis/XUnity.AutoTranslator

вот типа:baby_tone2:  пример

Скачать видео
Скачать видео

 

Изменено пользователем Memoric

Поделиться сообщением


Ссылка на сообщение

Апну тему скринами из разных игр с использованием autotranslator:

Banner of the Maid (китайский →  русский): https://imgur.com/a/LNHYwsV

Banner of the Maid (китайский → английский): https://imgur.com/a/LDdyhHK

We the Revolution (английский → русский): https://i.imgur.com/D3hJUo1.png

NITE Team 4 (английский → русский):  https://i.imgur.com/K4KPip1.png

Tales of the Neon Sea (английский → русский):  https://imgur.com/a/y7oztQg

 

Поделиться сообщением


Ссылка на сообщение

Creeper World 4 (Патч на русские шрифты для автопереводчика)
BepInEx-Unity.IL2CPP-win-x64-6.0.0-pre.2_AutoTranslator-5.4.4_RU
https://disk.yandex.ru/d/GcbPbnE53mqm5A
Текст в сложных БД.

Вытянутый гогле для перевода.
https://disk.yandex.ru/d/xKGf8BEp2w6aDw

Изменено пользователем DragonZH
  • Лайк (+1) 2

Поделиться сообщением


Ссылка на сообщение
Цитата

Здравствствуйте лог [23:48:18.031] Force loading assembly: F:\SteamLibrary\steamapps\common\Ghost of Dragon\MelonLoader\Il2CppAssemblies\UnityEngine.VRModule.dll

Не… Объясняйте парню, а я пройду мимо. У меня объяснялка “поломалась”. 
allodernat был прав, легче уже сборку скинуть, чем устраивать разбор полётов.))

Поделиться сообщением


Ссылка на сообщение
2 часа назад, LUKINx сказал:

Здравствствуйте лог [23:48:18.031] Force loading assembly: F:\SteamLibrary\steamapps\common\Ghost of Dragon\MelonLoader\Il2CppAssemblies\UnityEngine.VRModule.dll
 

Игра Ghost of Dragon  на движке Unity  Il2Cpp, а это значит нужно ставить загрузчик и автопереводчик, который работает именно с Il2Cpp: BepInEx-Unity.IL2CPP-win-x64-6.0.0 + XUnity.AutoTranslator-BepInEx-IL2CPP-5.5.2

Правда совсем не факт, что это вообще сработает, иногда вообще нельзя никак подключить автопереводчик к игре на Unity  Il2Cpp или он не работает как нужно…

Тогда нужно искать команды или переводчиков, которые делают полноценный перевод игр на Unity! но вот я совсем  не уверен,  что тебе удастся их убедить сделать русификатор нужной тебе игры бесплатно и не придётся им за эту работу платить...

Изменено пользователем Дмитрий Соснов

Поделиться сообщением


Ссылка на сообщение

Автоперевод игры Path of Kung Fu с помощью XUnity.AutoTranslator-ReiPatcher от  RybkaVSouse  https://www.zoneofgames.ru/games/path_of_kung_fu/files/11639.html

 

Поделиться сообщением


Ссылка на сообщение

Решение проблемы перевода уже переведённого на русский язык текста!

В файле настройки загрузчика: AutoTranslatorConfig.ini (или Config.ini) в строку IgnoreTextStartingWith добавляем игнорирование русских букв: 

IgnoreTextStartingWith=а;б;в;г;д;е;ё;ж;з;и;й;к;л;м;н;о;п;р;с;т;у;ф;х;ц;ч;ш;щ;ъ;ы;ь;э;ю;я;А;Б;В;Г;Д;Е;Ё;Ж;З;И;Й;К;Л;М;Н;О;П;Р;С;Т;У;Ф;Х;Ц;Ч;Ш;Щ;Ъ;Ы;Ь;Э;Ю;Я;

Спасибо Мастеркосте, это решение я нашёл в его переводе! но не факт что этот способ сможет избавить ото всех таких проблем...
 

Изменено пользователем Дмитрий Соснов
  • +1 1

Поделиться сообщением


Ссылка на сообщение

Здравствствуйте  лог [Message: Preloader] BepInEx 6.0.0-be.674 - Ghost of Dragon
[Message: Preloader] Built from commit 82077ec7c91c97f0e5f8ada5d178fd7ece6c0099
[Info   :   BepInEx] System platform: Windows 10 64-bit
[Info   :   BepInEx] Process bitness: 64-bit (x64)
[Info   :   BepInEx] Running under Unity 2020.3.34f1
[Info   :   BepInEx] Runtime version: 6.0.7
[Info   :   BepInEx] Runtime information: .NET 6.0.7
[Message:InteropManager] Downloading unity base libraries

Поделиться сообщением


Ссылка на сообщение

добавил Il2Cpp: BepInEx-Unity.IL2CPP-win-x64-6.0.0 + XUnity.AutoTranslator-BepInEx-IL2CPP-5.5.2 и запустил лог из консоли

Поделиться сообщением


Ссылка на сообщение

resizer

Файл resizer.txt — это инструмент для тонкой настройки отображения переведенного текста в интерфейсе игры. В отличие от глобальных параметров в config.ini (например, OverrideFontSize или EnableUIResizing), этот файл позволяет применять разные правила к конкретным элементам интерфейса — кнопкам, панелям диалогов, текстовым полям и т.д.

Зачем нужен resizer.txt

При переводе текста его длина часто меняется. Фраза, которая на языке оригинала занимала 10 символов, на русском или китайском может занимать 15—20 символов. В результате текст не помещается в отведенную область, обрезается, выходит за границы кнопки или наезжает на другие элементы интерфейса .

Глобальные настройки из config.ini (EnableUIResizing, OverrideFontSize) работают "для всех", но часто требуется более гибкий подход: где-то шрифт нужно уменьшить сильнее, где-то — изменить межстрочный интервал, а где-то — вообще не трогать. Именно для этого и существует resizer.txt.

Где находится файл

Файл resizer.txt создается автоматически или вручную в папке с переводами. Точный путь зависит от используемого загрузчика модов :

Загрузчик модовПуть к папке с переводами

BepInEx

[Папка с игрой]/BepInEx/Translation/{Lang}/Text/

MelonLoader

[Папка с игрой]/Mods/Translation/{Lang}/Text/

ReiPatcher

[Папка с игрой]/AutoTranslator/Translation/{Lang}/Text/

{Lang} — это код целевого языка, например ru или zh-CN.

Если папки или файла нет, их можно создать вручную. После изменения файла можно нажать ALT+R в игре, чтобы применить изменения без перезапуска .

Как определить путь к элементу интерфейса

Чтобы применить правило к конкретному элементу, нужно знать его путь в иерархии UI. Самый простой способ его получить:

Включите логирование путей в config.ini :

[Behaviour] EnableTextPathLogging = True

Запустите игру и откройте нужный экран (меню, диалог и т.д.).

Закройте игру и откройте файл лога (LogOutput.log для MelonLoader или BepInEx/LogOutput.log для BepInEx). В нем будут строки с путями к текстовым элементам, которые использовались во время игры.

Пример пути может выглядеть так:

/Canvas/DialogPanel/MessageText /LevelSingletons/SingletonPrefabsBundle(Clone)/PauseScreenUI/Pause Screen Ui Panel

Доступные команды

В файл resizer.txt записываются команды в формате путь = команда(параметры). Каждая команда — с новой строки.

Поддерживаются следующие команды :

1. AutoResize(min, max) — автоматическая подгонка размера шрифта

Плагин сам подбирает оптимальный размер шрифта в указанных пределах, чтобы текст полностью помещался в контейнер.

/Canvas/DialogPanel/MessageText = AutoResize(12, 28)

Этот пример заставит плагин подобрать размер шрифта для текста в панели диалогов в диапазоне от 12 до 28 пикселей .

2. ChangeFontSizeByPercentage(коэффициент) — масштабирование шрифта

Умножает исходный размер шрифта на указанный коэффициент. Значение 0.7 уменьшит шрифт на 30%, 1.2 — увеличит на 20%.

/Canvas/MainMenu/PlayButton = ChangeFontSizeByPercentage(0.8) /LevelSingletons/.../ItemTitleText = ChangeFontSizeByPercentage(0.7)

Это полезно, когда нужно уменьшить сразу все элементы на определенной панели .

3. UGUI_ChangeLineSpacing(коэффициент) — настройка межстрочного интервала

Изменяет расстояние между строками для многострочного текста. Значение 0.8 уменьшит интервал на 20%, что может помочь уместить больше строк в ограниченной области .

/Canvas/QuestLog/DescriptionText = UGUI_ChangeLineSpacing(0.85)

4. UGUI_HorizontalOverflow(режим) — управление горизонтальным переполнением

Может принимать значения Wrap (переносить текст на новую строку) или Overflow (разрешить выход за границы).

/Canvas/Inventory/ItemName = UGUI_HorizontalOverflow(Wrap)

5. UGUI_VerticalOverflow(режим) — управление вертикальным переполнением

Принимает значения Truncate (обрезать текст, если не помещается) или Overflow (разрешить выход за границы).

/Canvas/StatusWindow/Description = UGUI_VerticalOverflow(Truncate)

6. IgnoreFontSize — отключить изменение размера

Запрещает плагину изменять размер шрифта для указанного элемента. Полезно для текста, который не нужно трогать (например, технические надписи) .

/Canvas/VersionText = IgnoreFontSize

7. TMP_Alignment(выравнивание) — выравнивание текста для TextMeshPro

Задает выравнивание для компонентов TextMeshPro. Возможные значения: TopLeft, TopCenter, MiddleCenter, BottomRight и т.д.

/Canvas/DialogPanel/MessageText = TMP_Alignment(MiddleCenter)

Пример файла resizer.txt

# Глобальное уменьшение шрифта для всей игры /Canvas = ChangeFontSizeByPercentage(0.7) # Для панели диалогов — авто-подбор размера /Canvas/DialogPanel/MessageText = AutoResize(14, 26) # Уменьшаем шрифт в кнопках паузы чуть сильнее /Canvas/PauseMenu/ResumeButton = ChangeFontSizeByPercentage(0.65) /Canvas/PauseMenu/SettingsButton = ChangeFontSizeByPercentage(0.65) # Для описания предметов уменьшаем межстрочный интервал /Canvas/Inventory/ItemDescription = UGUI_ChangeLineSpacing(0.8) # Текст версии не трогаем /Canvas/VersionText = IgnoreFontSize

Как проверить, работает ли настройка

Сохраните изменения в resizer.txt.

Нажмите в игре ALT+R — это принудительно перезагрузит все настройки и переводы .

Если команда применилась, текст изменится сразу. Если нет — проверьте путь к элементу (возможно, он изменился или был указан неверно).

Важно: Некоторые команды (например, AutoResize) могут не сработать мгновенно и требуют переоткрытия окна или перезагрузки сцены .

Связь с другими настройками

resizer.txt дополняет, но не заменяет глобальные параметры из config.ini :

Параметр в config.iniЧто делает

EnableUIResizing = TrueВключает систему изменения размеров UI в принципе. Без этого resizer.txt может не работать.

ForceUIResizing = TrueПрименяет изменения ко всем элементам, даже если текст не был переведен.

OverrideFontSize = 18Глобально меняет размер шрифта. resizer.txt позволяет сделать это более адресно.

Итог

resizer.txt — это гибкий инструмент для решения проблем с отображением переведенного текста. Он позволяет:

Задавать разные правила для разных элементов интерфейса

Использовать авто-подбор размера шрифта

Контролировать межстрочный интервал и выравнивание

Применять изменения на лету (ALT+R)

Рекомендуется включать EnableUIResizing = True в config.ini, а для тонкой настройки использовать resizer.txt, указывая пути к конкретным элементам интерфейса

Поделиться сообщением


Ссылка на сообщение

за что отвечают  файлы: _Postprocessors.txt _Preprocessors.txt _Substitutions.txt в XUnity.AutoTranslator

Файлы _Preprocessors.txt, _Substitutions.txt и _Postprocessors.txt в XUnity.AutoTranslator отвечают за последовательную обработку текста на разных этапах его перевода. Они позволяют вручную настраивать, как именно текст будет выглядеть до и после автоматического перевода, а также задавать постоянные правила замены.

Ниже в таблице показано, на каком этапе и за что отвечает каждый из этих файлов.

_Preprocessors.txt    
1 (Первый)
Очистка текста перед переводом. Удаляет лишние теги форматирования, спецсимволы или мусор, который мешает правильно перевести фразу.    Удалить все теги цвета <color.*?> из текста перед отправкой на перевод.

_Substitutions.txt    
2 (Второй)
Принудительная замена слов или фраз. Работает как словарь: если фраза найдена, плагин использует указанный перевод и не отправляет текст на сервер.    Заменить "MP" на "Очки магии" или "HP" на "Здоровье" во всей игре.

_Postprocessors.txt    
3 (Третий)
Форматирование переведенного текста. Исправляет типичные ошибки машинного перевода или восстанавливает форматирование после перевода.    Убрать лишние пробелы или исправить падежи, которые часто "ломаются" при машинном переводе.

Сравнение файлов и рекомендации

Чтобы лучше понять разницу, представьте себе путь текста через эти фильтры:

Исходный текст в игре: <color=red>Do you have enough MP?</color>

Обработка _Preprocessors.txt: Удаляем теги цвета, чтобы они не мешали переводу. Получаем: Do you have enough MP?

Обработка _Substitutions.txt: Находим слово MP и заменяем его на ОМ (Очки Магии), чтобы переводчик не перевел это как депутат. Получаем: Do you have enough ОМ?

Отправка на перевод (например, в Google Translate): Do you have enough ОМ? -> У тебя достаточно ОМ?

Обработка _Postprocessors.txt: Применяем правило, чтобы сделать фразу более естественной для игры: заменяем У тебя на У вас. Получаем итог: <color=red>У вас достаточно ОМ?</color>

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

Где они находятся и как их создать
Эти файлы представляют собой обычные текстовые документы (.txt), которые располагаются в папке с переводами для вашего языка:

[Папка с игрой]/BepInEx/Translation/{Язык}/Text/

{Язык} — это код языка, на который вы переводите (например, ru для русского, zh-CN для китайского).

Если папки или файлов нет, вы можете создать их вручную с помощью любого текстового редактора (например, Блокнота). После изменения этих файлов в игре можно нажать Alt + R, чтобы применить изменения без перезапуска.

Синтаксис правил
Правила в этих файлах обычно записываются в формате Исходный_текст=Переведенный_текст.

Пример для _Substitutions.txt:

Quest=Задание
Skill=Навык
MP=ОМ

В файлах пред- и пост-обработки можно также использовать регулярные выражения (Regex) для более сложных замен. Например, чтобы удалить все HTML-теги из текста перед переводом:

<color.*?>=

 Итог
Эти три файла дают вам полный контроль над качеством перевода:

С их помощью можно настроить игру так, чтобы она переводилась именно так, как вам нужно, без необходимости править тысячи строк вручную.

_Substitutions.txt полезен для исправления названий предметов, заклинаний или интерфейса, которые переводчик постоянно переводит неправильно.

_Preprocessors.txt и _Postprocessors.txt помогают "очистить" текст от мусора и причесать результат, делая его более читаемым.

Настройка этих файлов требует некоторого опыта, но именно они являются ключом к созданию качественного русификатора с помощью XUnity.AutoTranslator.

Изменено пользователем Дмитрий Соснов

Поделиться сообщением


Ссылка на сообщение

Посоветуйте как мне объединить два варианта авто-перевода одной игры,  в одном файле AutoGeneratedTranslations.txt  и избавится в нём от дублей и повторений перевода одной той же строки, но разными словами?

Поделиться сообщением


Ссылка на сообщение
В 21.03.2026 в 04:11, Дмитрий Соснов сказал:

Посоветуйте как мне объединить два варианта авто-перевода одной игры,  в одном файле AutoGeneratedTranslations.txt  и избавится в нём от дублей и повторений перевода одной той же строки, но разными словами?

Можно сделать скрипт, который распределит одинаковые предложения по разным текстовым файлам.
При условии, что они действительно одинаковые (оригинальная строка), а дальше уже вам решать - что оставить, а что удалить.

Поделиться сообщением


Ссылка на сообщение
4 часа назад, parabelum сказал:

Можно сделать скрипт, который распределит одинаковые предложения по разным текстовым файлам.
При условии, что они действительно одинаковые (оригинальная строка), а дальше уже вам решать - что оставить, а что удалить.

значит не для меня, я в скриптах и программировании  ничего не смыслю… 

а  можно как то удалить уже имеющийся кривой гугловский перевод строк из файла AutoGeneratedTranslations.txt сделанный с помощью XUnity.AutoTranslator, оставив только вытащенный им текст, чтобы  потом отдать его для пакетного перевода Нейросетке? 

 

Изменено пользователем Дмитрий Соснов

Поделиться сообщением


Ссылка на сообщение

@Дмитрий Соснов, можно аналогичным способом.

Сделать скрипт, который удаляет построчно текст после метки равно. Тем более вы пользуетесь нейронкой.

Изменено пользователем parabelum

Поделиться сообщением


Ссылка на сообщение
В 22.03.2026 в 16:51, parabelum сказал:

@Дмитрий Соснов, можно аналогичным способом.

Сделать скрипт, который удаляет построчно текст после метки равно. Тем более вы пользуетесь нейронкой.

я нейронкой(обычно Дипсиком) пользуюсь просто до ужаса примитивно, просто вручную кидаю ей строки для перевода, если надо...

Поделиться сообщением


Ссылка на сообщение

@Дмитрий Соснов, на сегодняшний день нейронок много к сожалению)) ), и практически в любой можно дать запрос на создание скрипта, например, как в вашем случае. 

Поделиться сообщением


Ссылка на сообщение

Здраствуйте, не подскажете, как подключить автопереводчик к Gaucho and the Grassland. А то все варианты уже перепроповал, а конфиг файл не создается…( От имени админа запускал, только чтение галочку снимал, папка в исключениях антивира) 

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас популярно

  • Продвигаемые темы

  • Последние сообщения

    • В России хотят ограничить вход на сайты — только по номеру телефона Министерство цифрового развития подготовило проект пакета мер «Антифрод 3.0». Одно из ключевых предложений — обязать зарубежные сайты и приложения, доступные в России, проводить регистрацию и вход пользователей исключительно по номеру мобильного телефона. Поправки к закону «Об информации» также обяжут сервисы хранить данные об авторизациях, аккаунтах и их удалении в течение трех лет. Эту информацию компании должны будут передавать российским силовикам по запросу. https://vkplay.ru/media/news/v-rossii-khotyat-vvesti-vkhod-na-inostrannye-saity-tolko-po-nomeru-telefona/?from=informer&utm_partner_id=234   А ведь им зп за это платят 
    • Это же дело каждого ждать ручной или играть с нейронным. Главное честно сообщать об этом с порога, а растягивать на длительный срок перевод — тоже ничего хорошего как по мне. Энтузиазмом явно не назвать.
    • Это по этому ваш перевод на вторую Якудзу по сей день не вышел? Потому что скорострел Меркуша у вас аудиторию подрезал, а официальный перевод от  Ryu Ga Gotoku забрал остатки? Ну, это многое бы объяснило.
    • Добрый день! Возможно в таком случае можно взять уже существующий русификатор от ZoG и изменить его. Насколько я понял, текст хранится в незашифрованном виде. Не уверен в этичности такого подхода, но всё же.
    • Я понимаю, большинство вообще прошло с нейропереводом и в целом им довольны.
      И выше написал про свое отношения к ситуации.

      Но не совсем точно понял вопроса ко мне по этому поводу нейро-переводов. Если про новый текст, то у меня банально нет возможности тратиться на подписки на всякие гемени и тд, чем там сейчас делают более менее адекватные нейро-перевод закидывая весь и текст и получая результат.
      Но да, я пользовался инструментарием как минимум сверяя переводы с японским (Потому что я банально не знаю языка оригинала). 
      Ведь в игре много текста было изменено, и до сих пор обнаруживаются некоторые неточности. А в английском, в частности я ориентировался именно на мод восстановления от Xseed, нежели на GungHo.
       
    • У меня ? Ни в чём. Было интересно нейронка или нет. Но если бы делал я что-то нишевое и у меня подсекали аудиторию, то по итогу я бы на это дело забил, ибо не хочется трудиться в пустоту, а для себя тратить сотни, а то и тысячи часов не особо и хочется. В целом то понятно, что каждый может делать своё и по своему. Но мне кажется конкуренция тут обычно убивает энтузиазм, а не наоборот. Мало кто любит ждать, поэтому поиграют с первым что увидят. Очень мотивирующее сообщение. Все спят и видят бросить дела и заниматься переводами. Однажды такое отношение убьёт все человеческие переводы на нишевые игры, ну да ладно, дело каждого.
    • Обновление 0.4 русификатора SMT: SJR Огромное спасибо и низкий поклон за обратную связь! Без неё такое количество фиксов в такие сжатые сроки были бы невозможны! Ориентировочно со следующей обновы вернусь к исправлению интерфейсных текстур, остался ещё шмат непереведённых. Основные изменения: - Исправлены пропущенные и непереведённые реплики в боевых событиях, битвах с боссами,  разговорах с демонами и при смене навыков у демонов -Исправлены смешанные строки с английским текстом, японскими символами и повреждёнными хвостами реплик. - Переведены оставшиеся реплики женских стилей переговоров с демонами. - Исправлены опасные переносы перед меню выбора в  диалоговых строках. Они могли нарушить структуру переговоров и вызвать краш на консоли. - Исправлены формы рода у персонажей и сотрудников: Алекс, Зеленина, Уильямс, Артур, Зоэ, Чэнь, Луиза Ферре и Связистка. -Исправлено много строк в окне слияния, из-за ошибки сдвига маркеров. - Исправлена локализация расшифровки некоторых аббревиатур, и системных действий/названий. - Исправил несколько некорректных имен демонов и названий рас Скачать: https://boosty.to/molagbaalny/posts/61f91499-830f-4636-8ad4-1b2c17aa86c2
    • Был в прошлом году, очень хороший фест, видно что орги стараются сделать классно (и у них получается).
    • Ну а мне внимательнее. 
      На самом деле возможно лучший исход был бы объединить усилия. Но я, к сожалению, даже не знал о том что перенос вообще жив.
      А теперь вышло что вышло. После такого вряд ли человек захочет сотрудничать, да и смысла уже не особо много. Т. к. подходы разнятся.
      И по поводу второй части кто знает, может вообще не буду её брать а займусь витой. Многое может поменяться. 
       
    • Порасторопней быть надо. Тут уже скоро вторая часть выходит, а он даже перенос того, что сделано, не смог до конца осилить к моменту выхода этого русификатора
  • Изменения статусов

    • Jimmi Hopkins  »  SerGEAnt

      я его уже открыл в свободный доступ, чтобы не потерялось среди новинок
      · 0 ответов
    • NekoNya  »  Onzi

      https://www.dropbox.com/scl/fi/4xncxr2tqy77vz4644q08/text_RU_FINAL.json?rlkey=xckxss3jkql4gjmc1ah6qjb5e&st=k5ql651f&dl=0 
       
      Вот, то что вышло. Извинюсь, что зря говорил, что помогу (
      · 2 ответа
    • serfly  »  SerGEAnt

      Доброго времени! Недавно столкнулся с проблемой автоперевода XUnity AutoTranslator BeplnEx iL2cc. Пару последних лет часто пользовался, теперь консольные команды виснут на стадии загрузки библиотек, хотя они есть там изначально. На GitHub есть подобные вопросы, но ни одного рабочего ответа я не нашел. А Вы что можете посоветовать?
      · 0 ответов
    • serfly  »  SamhainGhost

      Доброго времени. По локализации игры Wicked Seed. Шрифт размазан и в полях, другие можно попробовать? Например arialuni_sdf_2022? Я профан в этом, но интересно.
       
      · 0 ответов
    • Jimmi Hopkins  »  SerGEAnt

      Это не просто перевод, а полноценная авторская сценарная адаптация. Диалоги переписаны так, чтобы персонажи звучали живо, остро и в характере. Добавлен чёрный юмор там, где авторы постеснялись. Убраны лорные противоречия, докручены мотивации. В результате игра стала умнее, злее и смешнее оригинала.
      · 0 ответов
  • Лучшие авторы


×