Dockge 前端国际化翻译指南:通过 Weblate 协作与源码级语言扩展
后端前端容器编排运维【免费下载链接】dockgeA fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager项目地址https://gitcode.com/GitHub_Trending/do/dockge点击查看免费下载本指南以 Dockge 官方翻译说明frontend/src/lang/README.md为骨架面向希望将 Dockge 界面翻译为母语、或为语言下拉菜单新增一种语言的开发者与译者。读完你将掌握两条完整路径在 Weblate 协作平台上参与既有语言翻译的流程以及通过修改languageList与提交 JSON 翻译文件为 Dockge 接入全新语言的源码级操作并理解前端 i18n 运行时机制的底层原理。Dockge 前端国际化的整体架构Dockge 的前端基于 Vue 3 与 vue-i18n 构建翻译工作由三个核心部分协作完成语言清单与 i18n 实例frontend/src/i18n.ts 集中定义了languageList语言代码 → 本地化语言名与createI18n配置翻译词条文件frontend/src/lang/ 目录下每个语言一个 JSON 文件如en.json、zh-CN.json、ja.json内容为「界面字符串键 → 目标语言文本」的键值对运行时切换逻辑frontend/src/mixins/lang.ts 中的changeLang负责动态加载 JSON 并切换 locale。从源码可以看出Dockge 默认语言是英语en.json在 i18n.ts 中被直接导入作为初始messages其余语言文件则通过import.meta.glob(../lang/*.json)按需加载只有当用户切换语言时才真正拉取对应 JSON。如何参与翻译Webleate 协作流程翻译指南 给出的官方协作路径是通过 Weblate 平台完成这是社区翻译的推荐方式无需直接修改仓库文件。完整步骤如下访问 Weblate 平台打开 Dockge 项目所使用的 Weblate 翻译实例weblate.kuma.pet域名的 Dockge 项目。注册账号在 Weblate 上注册一个账户。关联 GitHub 邮箱确保你的 GitHub 邮箱与 Weblate 账户邮箱一致这样翻译贡献会正确归属到你的 GitHub 账号并在贡献者列表中得到展示。选择语言开始翻译在 Weblate 中选择你熟悉的语言逐条翻译界面字符串并提交。这一流程对普通译者非常友好翻译工作直接在 Web 界面完成词条同步、审校与合并都由平台与维护者处理译者无需搭建 Dockge 的开发环境。仓库根目录的 README.md 也明确指向了这份翻译指南说明这是项目官方认可的唯一翻译入口。翻译词条的文件格式约定若你更希望直接以文件形式贡献翻译可以参照既有语言文件的格式。以英文基准文件 frontend/src/lang/en.json 为例翻译文件是一个扁平的 JSON 对象顶层键与界面中$t(...)调用使用的字符串键一一对应{ languageName: 简体中文, Create your admin account: 创建你的管理员账号, authIncorrectCreds: 用户名或密码错误。, PasswordsDoNotMatch: 两次输入的密码不一致。, Repeat Password: 重复以确认密码, Create: 创建, signedInDisp: 当前用户 {0}, ... }需要注意两点格式约定languageName键是必填的它存储该语言的自称用该语言书写i18n.ts 在初始化时会把languageList中的语言名注入每个语言的messages而 Appearance.vue 的下拉菜单正是通过$i18n.messages[lang].languageName显示语言名的{0}是占位符如signedInDisp的Signed in as {0}运行时会被实际参数如用户名替换翻译时需保留占位符位置。如何新增一种语言到下拉菜单当现有语言列表中没有你想要的语言时翻译指南 提供了完整的四步操作。结合源码可以将其拆解为如下可执行流程第 1 步在 Weblate 上添加语言在 Weblate 的 Dockge 项目中添加该语言。这一动作会为该项目建立新的语言词条空间之后维护者可以在仓库中落盘对应的 JSON 文件。第 2 步获取语言代码语言代码可从 Weblate 页面 URL 末尾获取。Dockge 采用 IETF 语言标签风格例如简体中文 →zh-CN见 frontend/src/lang/zh-CN.json繁体中文 →zh-TW葡萄牙语巴西→pt-BR德语瑞士→de-CH第 3 步在languageList末尾追加语言打开 frontend/src/i18n.ts在languageList对象末尾按如下格式追加一行const languageList { ... zh-TW: 繁體中文 (台灣), 你的语言代码: 语言自称, };键key第二步获取的语言代码必须与frontend/src/lang/下 JSON 文件的文件名完全一致如zh-TW对应zh-TW.json否则 mixins/lang.ts 的动态加载langModules[../lang/ lang .json]会找不到文件值value该语言的「自称」用该语言书写的语言名会直接显示在下拉菜单中。从当前 i18n.ts 可以看到languageList已收录 30 余种语言涵盖bg-BG、es、de、fr、pl-PL、pt-BR、zh-CN、zh-TW、ur、ko-KR、ru、ar、th、ja、vi等新增语言时应追加在对象末尾以保持可读性。第 4 步提交分支并创建 Pull Request将修改提交到新分支并为维护者创建 Pull Request 等待审核合并。建议同时补齐两点在 frontend/src/lang/ 目录下新建与语言代码同名的 JSON 文件至少包含languageName键与常用界面词条可直接复制en.json作为模板逐步翻译检查新语言的文字方向见下文 RTL 说明。语言切换背后的源码机制理解运行时机制有助于在新增语言时避开常见坑点。初始语言的选择与回退i18n.ts 中的currentLocale按优先级决定启动语言用户此前在设置中保存的localStorage.locale浏览器navigator.language完整匹配languageList浏览器语言的前两位代码匹配languageList兜底为en英语。同时createI18n配置了fallbackLocale: en与silentFallbackWarn、silentTranslationWarni18n.ts。这意味着即使你的语言文件翻译不完整缺失的词条也会静默回退为英文显示而不会报错——因此新增语言时可以分阶段提交翻译不必一次性补齐全部词条。动态切换与持久化mixins/lang.ts 是语言切换的枢纽其changeLang方法完成四件事async changeLang(lang: string) { const message (await langModules[../lang/ lang .json]()).default; this.$i18n.setLocaleMessage(lang, message); this.$i18n.locale lang; localStorage.locale lang; setPageLocale(); }动态 import 对应语言 JSON 并注册到 vue-i18n切换当前 locale将选择写入localStorage.locale持久化调用setPageLocale()同步页面级属性。该 mixin 被挂载到全局组件树设置页 Appearance.vue 的语言下拉框通过v-model$root.language双向绑定触发watch.language从而即时完成切换。页面语言属性与 RTL 方向util-frontend.ts 中的setPageLocale会把lang属性写入html元素并依据localeDirection()设置dir属性。RTL从右到左语言列表定义在 i18n.tsconst rtlLangs [ fa, ar-SY, ur, ar ];当前仓库中已含ar阿拉伯语与ur乌尔都语两个 RTL 语言的翻译文件。如果你新增的语言属于 RTL 语系如希伯来语he、波斯语fa务必同时将其加入rtlLangs数组否则界面排版方向会错误。翻译贡献的注意事项结合仓库现状参与翻译时建议留意以下几点以en.json为基准frontend/src/lang/en.json 是词条键的权威来源翻译时保持键名不变、只翻译值维护languageName与下拉菜单的一致性下拉菜单选项来自$i18n.availableLocales即languageList的键语言显示名来自messages[lang].languageName两者缺一不可新增语言需要语言清单 JSON 文件双提交只在languageList加条目而没有对应 JSON 文件时运行时按需加载会失败反之只加 JSON 文件不在清单中下拉菜单不会出现该语言提交渠道普通译者推荐走 Weblate 协作流程涉及源码改动新增语言、RTL 支持则按官方指引提交分支并发起 Pull Request等待维护者审核。按照上述流程从参与既有语言的日常翻译到为 Dockge 接入一种全新语言的完整闭环都可以独立完成且每一步都能在 frontend/src/i18n.ts、frontend/src/mixins/lang.ts、frontend/src/lang/ 等源码文件中找到直接对应实现便于验证与持续迭代。赞分享后端前端容器编排运维【免费下载链接】dockgeA fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager项目地址https://gitcode.com/GitHub_Trending/do/dockge点击查看免费下载相关推荐Karakeep国际化Weblate多语言翻译的协作流程Karakeep国际化Weblate多语言翻译的协作流程 Karakeep是一款强大的自托管书签管理应用支持链接、笔记和图片的全方位收藏并具备AI自动标签后端前端移动开发AI 应用知识管理全文检索MCP 服务Woodpecker 前端国际化指南基于 Vue I18n 与 Weblate 的多语言翻译机制Woodpecker 前端国际化指南基于 Vue I18n 与 Weblate 的多语言翻译机制 Woodpecker 的 Web 界面通过社区驱动的翻译平台CI/CDDevOpsCopyQ 多语言国际化翻译实践指南从 Weblate 协作到 Qt 工具链CopyQ 多语言国际化翻译实践指南从 Weblate 协作到 Qt 工具链 CopyQ 是一款功能丰富的剪贴板管理器其桌面界面由 Qt 构建面向全球用户桌面应用上一篇Cat-Catch资源嗅探扩展10分钟搞定网页隐藏媒体捕获下一篇BootstrapVue 星级评分组件 b-form-rating 完全指南交互、只读展示、样式定制与无障碍支持创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

500-AI-Agents-Projects 实战指南:500+ 开源 AI Agent 项目精选、框架选型与行业用例全景解析

500-AI-Agents-Projects 实战指南:500+ 开源 AI Agent 项目精选、框架选型与行业用例全景解析

示例工程人工智能 【免费下载链接】500-AI-Agents-Projects The 500 AI Agents Projects is a curated collection of AI agent use cases across various industries. It showcases practical applications and provides links to open-source projects for implementation, i…

2026/9/30 2:22:45 阅读更多 →
挑战一周学会ROS(第六天)

挑战一周学会ROS(第六天)

话题通讯/服务通讯的比较: 两者的实现流程是比较相似的:1,消息的发布方/客户端2,消息的订阅方/服务端3,话题名称4,数据载体哎呀呀,很久没更新了,其实不是懒而是前面的那些其实你找一…

2026/9/30 2:22:45 阅读更多 →
车辆管理RFID天线选型:如何避免邻道误读,实现精准识别?

车辆管理RFID天线选型:如何避免邻道误读,实现精准识别?

1、前言:车辆RFID管理两大核心痛点,根源均在天线选型 智慧停车场、园区车辆道闸、厂区物流车道、高速ETC、园区车辆泊位管理普遍采用UHF超高频RFID实现无感远距离识别,相比车牌识别不受雨雪、逆光、遮挡影响,识别距离可达3-12米&a…

2026/9/30 2:22:45 阅读更多 →

最新新闻

Vidu视频原生生成:AI角色直播在场感实现指南

Vidu视频原生生成:AI角色直播在场感实现指南

1. 项目概述:当 AI 角色真正“坐进”直播间,不是播音员,而是“在场者”“当 AI 角色真的走进直播间,会发生什么?”——这句话最近在技术圈和内容创作圈反复被提起,不是作为科幻设定,而是作为正在…

2026/9/30 9:02:42 阅读更多 →
从零开始AI工程落地:数据、训练到部署的完整实操指南

从零开始AI工程落地:数据、训练到部署的完整实操指南

从零开始做 AI 工程,听起来像是一条又长又卷的路。我入行这几年,见过太多人把“跑通一个 Jupyter Notebook”当成“搞定了 AI”,结果一上生产环境就翻车:模型推理慢到超时、数据分布一变精度就崩、显卡 OOM 却不知道日志在哪看。这…

2026/9/30 9:02:42 阅读更多 →
哈希表原理、冲突处理与扩容:从手写实现到工程选型

哈希表原理、冲突处理与扩容:从手写实现到工程选型

哈希表这个词在数据结构这门课里出现的频率,大概仅次于数组和链表。但很多人对它的认识停留在"存key-value,查询快"这一层,真要问一句为什么快、快到什么程度、什么情况下会变慢,就答不上来了。我从大二第一次写课程设计…

2026/9/30 9:02:42 阅读更多 →
飞书PC端指定浏览器打开技术方案与落地实践

飞书PC端指定浏览器打开技术方案与落地实践

1. 项目概述:为什么飞书自建应用在PC端必须“指定浏览器打开”? 飞书自建应用在PC端默认走的是飞书客户端内嵌的WebView容器,这个容器底层基于Chromium,但版本固定、更新滞后、功能阉割严重——比如不支持WebRTC音视频通话、无法…

2026/9/30 9:02:42 阅读更多 →
PhyloSuite实战指南:从序列比对到分子定年的系统发育分析流程

PhyloSuite实战指南:从序列比对到分子定年的系统发育分析流程

刚看完张东老师的《从序列到进化树和时间:PhyloSuite在系统发育与分子定年分析中的应用》视频回放,趁着热乎劲把笔记整理成文。做分子系统学的同行应该都有体会:从测序仪下来的一堆峰图到最终稿子上那棵漂亮的进化树,中间隔着的是…

2026/9/30 9:02:42 阅读更多 →
Qwen Image 2.1结构化提示词与ComfyUI工作流实战指南

Qwen Image 2.1结构化提示词与ComfyUI工作流实战指南

1. 这不是“魔法”,是提示工程与工作流协同的精密控制——Qwen Image 2.1 在 ComfyUI 中逼近 GPT-4o 图像能力的真实路径你搜“Qwen Image 2.1 ComfyUI”时,看到的大多是零散截图、模糊描述,甚至有人直接说“不如GPT-4o图生图”,然…

2026/9/30 9:01:39 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 8:16:59 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/29 8:24:48 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/29 3:55:56 阅读更多 →