惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
博客园 - Franky
V
V2EX
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
J
Java Code Geeks
T
The Blog of Author Tim Ferriss
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Jina AI
Jina AI
博客园 - 叶小钗
F
Fortinet All Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
A
About on SuperTechFans
M
MIT News - Artificial intelligence
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
D
Docker
博客园 - 【当耐特】
阮一峰的网络日志
阮一峰的网络日志

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Локализация .NET-игры на коленке (devlog игровой разработки)
Дмитрий · 2026-06-15 · via Все публикации подряд на Хабре

2 мин

8

Продолжаю рассказывать о разработке своей интерактивной книги в формате «симулятора поддержки людей, столкнувшихся с аномально-криповым». В этот раз поговорим о локализации, но почти исключительно с технической точки зрения. Т.е., посмотрим что и как переводить или не переводить, а не «где нанять переводчика / какой ИИшкой лучше переводить».

Diclaimer: в эту задачку я погрузился с места в карьер, вообще не изучая готовые решения и инструменты, со словами «я программист или как?» Итак...

Перевод интерфейса

Шаг 1. Заводим CSV-файлик для хранения айдишников и строк для каждого языка.

Шаг 2. Генерируем CS-файл из него с enum-ом и собственно строками текста.

Шаг 3. Используем в коде как-то так с помощью класса-менеджера, который подставит нужную строку в зависимости от языка.

Да-да, я буквально одной консолькой, написанной на C#, генерирую второй файлик, написанный на C# и включённый в другой проект. При этом я генерирую его тупо как текст, без каких-то хитрых библиотек и валидаций. И работает же! Ну а чего бы ему не работать то?)

Не перевод озвучки

Да, в случае с озвучкой я сразу решил, что не буду делать озвучку на других языках, но сделаю субтитры в роликах…

...и расшифровку голосовых сообщений.

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

Перевод картинок

Да-да, часть присылаемых по сюжету картинок таки требуют перевода! Там, где я картинку делал сам — то просто перевёл в редакторе и подставил текст в новую вёрстку. В более сложных же местах я просил ИИ-шку перерисовать картинку, и там она справилась на ура.

Перевод историй

Самая болезненная часть, для понимания которой вам просто необходимо изучить мой пост про скрипты, хранящиеся в Obsidian. Прочитали? Вернулись? Отлично, тогда продолжаем: после обработка obsidian-файла у меня получаются файлики с такой структурой.

Т.е., в них хранится прямо текст вопросов и ответов, а не ID-строчек. Поэтому мой пайплайн из нескольких маленьких консолек выглядит так:

  • загрузить json-файл, распарсить его и работать уже с понятной структурой

  • вытащить все строчки в пары «ID – текст», где ID является хэшем от содержимого строки

  • сохранить эти пары в CSV-файл, одноимённый файлу с диалогом

  • перевести содержимое файла

  • другой консолькой сделать копию квеста с суффиксом, соответствующим имени квеста, например для английского будет очевидное «_en»

  • игра знает, какой язык выбран и в зависимости от этого загружает файл с нужным суффиксом

Причём консольки получились достаточно умные: например, если файл уже существует, он не перетирается с нуля, а дополняется и обновляется. Если я отредактировал строку в русском файле — у неё сменится хэш, и нужно будет заново перевести только такие строки. Удобно? Вполне)

Что дальше

Игра релизнится 14 июля, и через месяц-два я вернусь с рассказом о том, насколько (без)успешно она продалась, как я выводил деньги из Steam, платил за всё это дело налоги и т.п. Если интересно — подписывайтесь, чтоб не пропустить ;-)

Y