ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CVAT 多语言配置教程:3 步支持中文界面

CVAT 多语言配置教程:3 步支持中文界面 CVAT 多语言配置教程3 步支持中文界面【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat海外同事打开 CVAT 抱怨界面全是英文这篇指南带你走通 CVAT 国际化i18n配置后端怎么开、语言包怎么加、不生效怎么排查按顺序做完标注平台就能说你们团队的语言。场景海外用户打开界面全是英文打开标注页工具栏、菜单、报错提示清一色英文国内团队却想先看中文标签。先说清楚现状CVAT 的多语言能力分布在三层——Django 后端报错与 API 文案、Hugo 文档站site/i18n/下的词条、React 前端当前为英文硬编码无内置语言包。三层里只有前两层开箱即用前端要加语言属于补装动作。后面按任务顺序做不用一次啃完三层。字符串怎么到屏幕上一条单向链路链路是单向的语言包 → 翻译标记 → 运行时渲染。界面上每个可翻译的字符串先由开发者用标记函数圈出来再被提取进语言包最后渲染时按请求语言取对应词条。你配置多语言本质就是维护这条链路上语言包这一环。环节在哪里你要做什么语言包后端cvat/locale/语言/LC_MESSAGES/前端自建cvat-ui/src/locales/填入翻译、编译翻译标记后端源码中的 gettext 标记、文档站 site/i18n/ 词条文件确认哪些字符串可翻译仓库已做好渲染API 请求的Accept-Language头前端 locale 参数运行时按语言取词缺失时回退![CVAT 标注界面与属性标注面板](https://raw.gitcode.com/GitHub_Trending/cvat/cvat/raw/2b75e8fdc0a4242b93deea076c1bbad7c8e67c85/site/content/en/images/Attribute annotation mode_01.png?utm_sourcegitcode_repo_files)最快启用方式按部署线改 3 处第 1 步确认后端 i18n 开关。打开 cvat/settings/base.py国际化段落长这样# cvat/settings/base.py LANGUAGE_CODE en-us # 回退语言用户语言缺翻译时显示什么 USE_I18N True # 总开关仓库默认已开启USE_I18N不用动。LANGUAGE_CODE默认选en-us并保持不变——它只是兜底语言让用户的Accept-Language驱动界面语言这样多地区团队互不影响。第 2 步核对环境变量与配置项。变量名作用默认值建议值LANGUAGE_CODE后端回退语言en-us保持en-usTZ时区影响时间类文案展示Etc/UTC按团队所在地如Asia/ShanghaidefaultContentLanguage文档站默认语言site/config.tomlen保持en其他语言加内容后自动按路径切换第 3 步重启服务让配置生效。docker compose restart cvat到这里API 报错、邮件通知类文案已按请求语言输出界面按钮菜单还是英文继续下一节。新增一门语言的完整闭环以中文为例以给后端加简体中文为主线四步闭环提取 → 翻译 → 编译 → 验证。语言包最终落在这样的目录里以zh_Hans为例cvat/locale/ └── zh_Hans/LC_MESSAGES/ ├── django.po # 翻译源文件人工编辑的就是它 └── django.mo # 编译后的二进制运行时真正读的是它第 1 步提取所有可翻译字符串python manage.py makemessages -l zh_Hans python manage.py compilemessages第 2 步打开生成的cvat/locale/zh_Hans/LC_MESSAGES/django.po把msgid英文原文对应的msgstr填成中文。没把握的词条留空即可Django 会自动回退英文不会报错。第 3 步compilemessages生成.mo。第 4 步重启后用请求头验证docker compose restart cvat curl -s -H Accept-Language: zh-Hans http://127.0.0.1/api/about/version再发一条会触发报错文案的请求比如用错误 token 调 API响应里出现中文即闭环完成。排错 ⚠️语言不生效、翻译缺失、切换延迟Q1明明填了翻译为什么还是英文按顺序定位三处一是ls cvat/locale/zh_Hans/LC_MESSAGES/没有.mo或它比.po旧就是漏了编译重跑compilemessages二是抓请求头浏览器或代理可能没带上Accept-Language: zh-Hans用上面的curl单独验证可排除前端因素三是改完 settings 没重启服务Django 配置在启动时加载。Q2个别词条没翻译界面显示什么默认回退到LANGUAGE_CODE对应的英文原文不会显示键名或空白——这是预期行为直接保持默认即可。如果你希望宁缺毋滥地强制中文把LANGUAGE_CODE改成zh-hans让未翻译部分也尽量走中文代价是所有用户缺词时都看到中文不建议多团队环境这么做。Q3切换语言要刷新很久先分清两层后端无状态换Accept-Language立即生效不存在延迟如果前端做了客户端语言包懒加载首次切语言要等包下载。默认建议首屏只预载当前语言 英文兜底两包其余语言按需加载并缓存在内存切换体感即可做到即时。进阶浏览器语言自动检测与语言包懒加载后端这块什么都不用做Django 读请求的Accept-Language自动匹配浏览器默认就会带上。前端则要先补基建——cvat-ui/src/ 目前没有语言包想拿到中文界面引入 i18next 这类库把词条按命名空间拆分放在cvat-ui/src/locales/例如新建cvat-ui/src/locales/zh.json{ workspace: { objects: 对象, labels: 标签 }, common: { save: 保存, cancel: 取消 } }语言检测逻辑默认选localStorage 用户选择 浏览器语言 en首次访问用navigator.language命中支持列表就静默应用不再弹选择框。懒加载按语言维度动态import对应 JSON配合Map缓存加载失败回退英文包避免首屏被语言包拖慢。部署前检查清单到这里CVAT 国际化的三块拼图就齐了后端按Accept-Language输出翻译文案语言包走提取—翻译—编译闭环前端按需补包。上线前跑一遍这三项基本不会翻车✅ 每种语言的django.mo都存在且时间戳不早于对应.po✅ 用curl -H Accept-Language: …分别命中中英文确认报错文案随语言切换✅ 前端语言包目录里的语言代码与后端 locale 目录一一对应避免后端中文、前端仍英文的割裂感【免费下载链接】cvatComputer Vision Annotation Tool (CVAT) is a leading platform for building high-quality visual datasets for vision AI. It offers open-source, cloud, and enterprise products, as well as labeling services, for image, video, and 3D annotation with AI-assisted labeling, quality assurance, team collaboration, analytics, and developer APIs.项目地址: https://gitcode.com/GitHub_Trending/cvat/cvat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进