Платформа Steam требует, чтобы игра предоставляла вводный контент магазина на 28 языках, традиционный метод ручного обслуживания малоэффективен и легко допускать ошибки. Этот метод обслуживания малоэффективен и легко допускать ошибки. Основной метод технического обслуживания малоэффективен и легко допускать ошибки. Именно таким образом HagiCode создает структурированную многоязычную систему управления данными.
фон
Требования к платформе Steam. Игры и приложения содержат вводный контент 多语语的商店, в том числе about(подробное описание)和 short_description(维短情简) и т. д. Поля. Для глобально распространяемых продуктов обычно требуется локальный контент на 28 языках.
Это звучит как простая работа по управлению контентом, но когда она действительно выполняется, проблема оказывается больше, чем вы можете себе представить.
Прежде всего, работы по техническому обслуживанию огромны. 28 видов языка — это 2 поля, равные 56 блокам контента. Для редактирования нужно вручную переключать язык на сайте Steamwork в фоновом режиме, а эффективность не очень высокая. Каждый раз, когда вы обновляете контент, вам необходимо повторять этот процесс.
Во-вторых, рассредоточенным контентом сложно управлять. Многоязычный контент обычно разбросан по разным инструментам и документам, не имея единого формата локального хранения. Контроль версий становится затруднительным, а при совместной работе в команде также легко совершать ошибки.
再者,Контент DLC и управление контентом основного приложения разделены. Если в вашей игре несколько DLC, каждое DLC должно поддерживать многоязычный контент отдельно, и сложность управления будет возрастать в геометрической прогрессии.
Наконец, выходной формат не выводится. Формат JSON, требуемый Steamworks, несовместим с человеческими привычками чтения, и его легко редактировать вручную.
С этими проблемами мы столкнулись во время фактической разработки проекта HagiCode. Как глобально ориентированный инструмент кодирования, нам необходимо поддерживать полный многоязычный контент для платформы Steam. Традиционный метод обслуживания больше не может удовлетворить спрос, и нам срочно необходимо более эффективное решение.
О Хагикоде
Решение, представленное в этой статье, основано на нашем практическом опыте работы в проекте HagiCode. Провайдер и редактор кода. В процессе разработки нам необходимо поддерживать многоязычный контент магазина для платформы Steam, что заставляет нас создавать набор структурированных данных для управления.
В этой статье рассказывается о многоязычной программе управления данными, которую мы фактически использовали и оптимизировали при разработке HagiCode. Если вы считаете, что эта программа ценна, она неплохо показывает силу нашего проекта — — то и на сам HagiCode тоже стоит обратить внимание. В конце концов, это хороший инструмент, который может решить проблему, не так ли?
основная концепция
язык и сфера
Список языков, поддерживаемых Steamworks, достаточно полный и охватывает основной рынок:
en-US, fr-FR, it-IT, de-DE, es-ES,
bg-BG, cs-CZ, da-DK, nl-NL, fi-FI,
el-GR, hu-HU, id-ID, ja-JP, ko-KR,
nb-NO, pl-PL, pt-BR, pt-PT, ro-RO,
ru-RU, zh-CN, es-419, sv-SE, th-TH,
zh-TW, tr-TR, uk-UA, vi-VN
Среди них наиболее часто используется en-US(Английский)zh-CN(简体中文),zh-TW(繁体中文),ja-JP(日语)和 ko-KR(韩语). Ведь эти языки покрывают основной рынок.
Основные поля, которые необходимо поддерживать, включают два:
about: подробное описание, поддержка текстового формата.short_description:简短情经,有Ограничение длины: 300 символов
понятие функции
Содержимое приложения Steam можно разделить на две рабочие области:
- Базовое приложение: Основное содержимое приложения
- ДВС:Загрузка контента,Каждый DLC имеет независимое управление контентом.
Это разделение очень важно, потому что DLC обычно требует независимых описаний в магазине, а игра, которая может не быть в игре, может не быть DLC и требует единого управления.
проектирование модели данных
Система определяет четкую модель данных для поддержки многоязычного управления контентом:
// 支持的 28 种语言代码
const STEAMWORKS_SUPPORTED_LOCALES = [
'en-US', 'fr-FR', 'it-IT', 'de-DE', 'es-ES',
'bg-BG', 'cs-CZ', 'da-DK', 'nl-NL', 'fi-FI',
'el-GR', 'hu-HU', 'id-ID', 'ja-JP', 'ko-KR',
'nb-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ro-RO',
'ru-RU', 'zh-CN', 'es-419', 'sv-SE', 'th-TH',
'zh-TW', 'tr-TR', 'uk-UA', 'vi-VN'
];
// 支持的字段
const STEAMWORKS_SUPPORTED_FIELDS = [
'about', // 详细描述
'short_description' // 简短描述
];
// 内容作用域
type SteamworksScopeKind = 'base' | 'dlc';
В этой конструкции модели есть несколько соображений, как бы это сказать, на самом деле я хочу сделать все немного проще:
- Используйте стандартный формат кода языка (如
zh-CNвместоchinese), ведь стандартные вещи всегда надежнее - Типы полей четко перечислены, что удобно для дальнейшего расширения, и тем, кто это знает, в будущем не понадобятся дополнительные поля.
- Базовое приложение и DLC, а также файлы DLC, которые вы можете использовать,
структура хранения файлов
Содержимое хранится в каталоге проекта. .hagiclaw-data/steamworks-metadata/ 下, используя иерархическую структуру каталогов:
.hagiclaw-data/
└── steamworks-metadata/
└── default-app/
├── workspace.json # 工作区配置清单
├── base/ # 基础应用内容
│ ├── en-US/
│ │ ├── about.md
│ │ └── short_description.md
│ ├── zh-CN/
│ │ ├── about.md
│ │ └── short_description.md
│ └── ...
└── dlc/ # DLC 内容
└── turbo-engine/
├── en-US/
│ ├── about.md
│ └── short_description.md
└── ...
Этот вид структурного проектирования имеет несколько преимуществ или, по крайней мере, больше, чем предыдущий метод:
- Читабельный для человека: Каждый контент представляет собой независимый документ Markdown, его можно редактировать напрямую, в конце концов, глаза людей по-прежнему более приятны, чем другие.
- Удобный контроль версий:电影文件便于отслеживание истории изменений и сравнение различий, чтобы изменение было тем, что произошло, 一目了然
- расширение: Для добавления нового языка или нового поля требуется только создать новый документ, как и то же самое, 想加什么加什么加件
- четкая структура: Структура каталога 直观 отражает организацию контента и не запутает людей.
workspace.json Конфигурация рабочей области хранилища содержит список DLC и информацию о конфигурации языка. В конце концов, некоторые вещи все еще имеют список, но не для времени 久了, который еще помнит свой собственный релиз.
Преобразование Markdown в BBCode
Steam использует формат BBCode вместо стандартного Markdown. Это требует дополнительной работы по созданию контента — либо напрямую копировать BBCode, либо позже конвертировать вручную.
Решение HagiCode следующее: позвольте разработчикам использовать знакомое создание Markdown, система автоматически преобразуется в Steam BBCode.
изменить правила
// 标题转换
# HagiCode → [h1]HagiCode[/h1]
## Features → [h2]Features[/h2]
// 文本样式
**bold text** → [b]bold text[/b]
*italic text* → [i]italic text[/i]
`code` → [code]code[/code]
// 链接和图片
[text](url) → [url=url]text[/url]
 → [img src="https://www.cnblogs.com/newbe36524/p/{STEAM_APP_IMAGE}/extras/..."][/img]
// 列表
- item 1
- item 2 → [*]item 1
[*]item 2
(包裹在 [list] 中)
языковая упаковка
При экспорте необходимо использовать содержимое пакета языковой метки:
wrapWithSteamLanguage(locale: SteamworksLocaleCode, bbcode: string): string {
// 返回 [lang=english]...[/lang] 格式
}
Код языка необходимо сопоставить с форматом Steam:
en-US→englishzh-CN→schinesezh-TW→tchineseja-JP→japaneseko-KR→korean
Это отображение отношений на самом деле несложное, его просто нужно запомнить. Ведь на каждой платформе свои правила, и нам остается только адаптироваться.
формат экспорта
Экспортированный JSON должен соответствовать структурным требованиям Steamworks:
{
"itemid": "1158573",
"languages": {
"english": {
"app【摘要】Steamworks 多语言元数据管理:从手动维护到结构化工作流 Steam 平台要求游戏提供 28 种语言的商店介绍内容,传统的手动维护方式效率低下且容易出错。本文介绍如何通过 HagiCode 构建一套结构化的多语言元数据管理系统,实现从内容创作到导出发布的一体化流程。 背景 Steam 平台要 阅读全文[about]": "[h1]HagiCode[/h1]\n[b]About[/b]...",
"app【摘要】Steamworks 多语言元数据管理:从手动维护到结构化工作流 Steam 平台要求游戏提供 28 种语言的商店介绍内容,传统的手动维护方式效率低下且容易出错。本文介绍如何通过 HagiCode 构建一套结构化的多语言元数据管理系统,实现从内容创作到导出发布的一体化流程。 背景 Steam 平台要 阅读全文[short_description]": "AI coding tool..."
},
"schinese": {
"app【摘要】Steamworks 多语言元数据管理:从手动维护到结构化工作流 Steam 平台要求游戏提供 28 种语言的商店介绍内容,传统的手动维护方式效率低下且容易出错。本文介绍如何通过 HagiCode 构建一套结构化的多语言元数据管理系统,实现从内容创作到导出发布的一体化流程。 背景 Steam 平台要 阅读全文[about]": "[h1]HagiCode[/h1]\n[b]关于[/b]...",
"app【摘要】Steamworks 多语言元数据管理:从手动维护到结构化工作流 Steam 平台要求游戏提供 28 种语言的商店介绍内容,传统的手动维护方式效率低下且容易出错。本文介绍如何通过 HagiCode 构建一套结构化的多语言元数据管理系统,实现从内容创作到导出发布的一体化流程。 背景 Steam 平台要 阅读全文[short_description]": "AI 编码工具..."
}
}
}
Ключевого момента на самом деле не так уж и много, просто нужно запомнить только эти требования к формату:
itemidСоответствует Steam AppIDlanguages下下载Steam的语语CODE(如schinese)- Используйте поле пути
app【摘要】Steamworks 多语言元数据管理:从手动维护到结构化工作流 Steam 平台要求游戏提供 28 种语言的商店介绍内容,传统的手动维护方式效率低下且容易出错。本文介绍如何通过 HagiCode 构建一套结构化的多语言元数据管理系统,实现从内容创作到导出发布的一体化流程。 背景 Steam 平台要 阅读全文[fieldName]формат - 值是преобразованная строка BBCode
Эти правила выглядят немного утомительно, но мы и к ним привыкли. Ведь у каждой платформы своя ци, нам остается только адаптироваться.
Проектирование API-сервисов
Система обеспечивает полную поддержку REST API.
загрузка рабочей зоны
GET /api/steamworks/metadata
Вернитесь к конфигурации рабочей области, всем языкам и содержимому поля.
Сохранить контент
POST /api/steamworks/metadata
{
"scopeId": "base-app",
"scopeKind": "base",
"values": {
"en-US": {
"about": "Markdown content...",
"short_description": "Short text..."
},
"zh-CN": {
"about": "Markdown 内容...",
"short_description": "简短文本..."
}
}
}
Сохраните соответствующую систему Markdown. .md 使用。 Так оно не потеряется, ведь память всегда ненадежна.
предварительный просмотр рендеринга
POST /api/steamworks/metadata/preview
{
"locale": "zh-CN",
"field": "about",
"content": "# HagiCode\n\n这是关于..."
}
Вернуться к результатам рендеринга Markdown и результатам преобразования BBCode, удобный предварительный просмотр. Предварительный просмотр этой вещи как фотозеркало. 以长什么己长什么样逸么样像影长子, удобный предварительный просмотр. Просмотрите эту вещь как фотозеркало.
Экспорт JSON
POST /api/steamworks/metadata/export
{
"scopeId": "base-app",
"scopeKind": "base"
}
Он генерирует JSON в соответствии с форматом Steamworks, который можно напрямую импортировать в фон Steamworks.
Управление DLC
POST /api/steamworks/metadata/dlc // 创建
PUT /api/steamworks/metadata/dlc // 更新
DELETE /api/steamworks/metadata/dlc // 删除
Управление DLC включает в себя создание, обновление и удаление DLC.
Используйте процесс
1. Доступ к панели данных
在 HagicLaw 工作区电影 Панель метаданных Steamworks,电影会设计安全工作区图像图度元容。一切分前工作世界了, 對会受, 尥开叀 内容
2. Выберите область действия редактирования.
В левой навигации выберите базовое приложение или конкретный DLC.
3. Редактирование матрицы на нескольких языках.
Расширьте язык, который необходимо редактировать, редактируйте напрямую about 和 short_description ПОДДЕРЖКА СИСТЕМЫ:
- Предварительный просмотр рендеринга Markdown в реальном времени
- Предварительный просмотр преобразования BBCode в Steam
- Проверка количества и длины символов
Эти функции предварительного просмотра на самом деле весьма полезны, по крайней мере, вы сможете понять, что написали в долгосрочной перспективе.
4. Сохраните контент
Нажмите кнопку «Сохранить», содержимое будет автоматически записано соответствующим образом. .md Файл. Файл будет включен в систему контроля версий Git.
5. குத்தை
电影会автоматическая проверка:
- 必塑图格是以上
short_descriptionесли более 300 символов- Грамматика Markdown правильная
Эти проверки позволяют избежать некоторых ошибок низкого уровня, ведь у людей всегда есть шанс ошибиться, а у машин всегда есть шанс помочь.
6. Экспорт JSON
Выберите экспорт области приложения (базовое приложение или определенный DLC), система сгенерирует Steamworks JSON, содержащий все языки.
Внимание
Сопоставление языковых кодов
в системе en-US Совместимость со Steam english,zh-CN соответствующий schinese。 Эта взаимосвязь сопоставления автоматически обрабатывается при экспорте, но вам необходимо соблюдать осторожность при редактировании JSON вручную.
Ограничения BBCode
Steam поддерживает только 子集 BBCode, сложный Markdown не может быть полностью преобразован. Рекомендуется проверить результаты конвертации в предварительном просмотре.
картинка пути
Изображение будет преобразовано в [img src="https://www.cnblogs.com/newbe36524/p/{STEAM_APP_IMAGE}/extras/..."] 占位符实方。 Настоящее изображение необходимо загрузить отдельно в фон Steam.
поле проверки
short_description Существует строгое ограничение на длину в 300 символов, система проверит перед экспортом, но рекомендуется обращать внимание на контроль длины при редактировании.
контроль версий
Все файлы Markdown можно включить в систему контроля версий Git, чтобы вы могли отслеживать изменения в истории и сотрудничать с редакторами. Рекомендуется регулярно вносить изменения.
Управление DLC
DLC: itemId Он должен совпадать с идентификатором AppID внутреннего DLC Steamworks. При создании DLC убедитесь, что идентификатор верен.
краткое содержание
Steamworks Основная задача управления многоязычными данными — как эффективно поддерживать большое количество многоязычного контента. С помощью структурированных моделей данных, гуманизированного хранения файлов и автоматизированных процессов преобразования и экспорта мы можем превратить этот утомительный процесс в управляемый рабочий процесс создания контента.
Этот набор планов оказался эффективным на практике проекта HagiCode. Мы перешли от состояния, поддерживаемого вручную и подверженного ошибкам, к структурированному, проверяемому и совместному рабочему процессу. Это не только повысило эффективность, но и уменьшило количество человеческих ошибок.
Если вы разрабатываете приложение для платформы Steam и вам необходимо поддерживать многоязычный контент, я надеюсь, что эта программа вдохновит вас. Управление многоязычным контентом не обязательно является болезненным занятием: при наличии правильных инструментов и процессов оно может стать относительно простым.
справочные материалы
Если этот текст вам полезен:
原文与电视视频
Спасибо за чтение, если вы считаете этот текст полезным, пожалуйста, приветствуйте, сохраняйте, делитесь и поддержите.
В этом контенте используется искусственный интеллект для облегчения совместной работы, а окончательный контент проверяется и утверждается автором.