为remotely-save插件贡献多语言支持:从入门到实践的贡献指南
一、为什么需要多语言支持
在全球化开源社区中,多语言支持是项目国际化的核心环节。remotely-save作为一款Obsidian同步插件,通过支持多种云服务帮助用户在本地与云端之间无缝同步知识库。为其添加多语言支持,不仅能消除非英语用户的使用障碍,还能显著扩大项目的用户覆盖范围,同时为开发者提供参与开源协作的宝贵机会。
二、多语言文件结构解析
remotely-save采用分层结构管理语言文件,确保核心功能与专业版功能的翻译独立维护:
2.1 核心模块语言文件
- src/langs/en.json:英语基准翻译文件,包含所有界面文本的原始定义
- src/langs/zh_cn.json:简体中文翻译
- src/langs/zh_tw.json:繁体中文翻译
2.2 专业版模块语言文件
- pro/src/langs/en.json:专业版功能的英语翻译
- pro/src/langs/zh_cn.json:专业版功能的简体中文翻译
- pro/src/langs/zh_tw.json:专业版功能的繁体中文翻译
所有语言文件均采用JSON键值对格式,通过统一的键名实现不同语言间的内容映射。
三、贡献多语言支持的步骤
3.1 准备工作
首先克隆项目仓库到本地环境:
git clone https://gitcode.com/gh_mirrors/re/remotely-save
cd remotely-save
3.2 创建语言文件
在对应模块的langs目录下创建新的语言文件,命名格式为[语言代码].json,例如:
- 法语:
fr.json - 德语:
de.json - 日语:
ja.json
3.3 翻译内容规范
翻译文件需保持与英语基准文件相同的键结构,示例格式如下:
{
"settings_title": "设置",
"sync_start": "开始同步",
"sync_complete": "同步完成",
"sync_error": "同步错误:{{errorMessage}}"
}
3.4 注册新语言
修改对应模块的langs/index.ts文件,导入新创建的语言文件并添加到导出对象:
import fr from "./fr.json";
export const LANGS = {
en: en,
zh_cn: zh_cn,
zh_tw: zh_tw,
fr: fr // 新增语言
};
3.5 测试与验证
完成翻译后,建议进行以下验证:
- 检查是否所有键都已正确翻译
- 验证变量占位符(如
{{variable}})是否保留 - 测试UI显示效果,确保文本长度适合界面布局
四、翻译最佳实践
4.1 术语一致性
- 建立专业术语表,确保技术术语翻译统一
- 参考现有翻译文件保持风格一致
- 关键功能名称建议保留英文或找到公认的译法
4.2 上下文适配
- 理解每个文本在界面中的实际使用场景
- 考虑不同语言的表达习惯,避免直译导致的语义偏差
- 确保错误提示和操作说明清晰易懂
4.3 技术细节处理
- 保留所有变量占位符,不得修改或删除
- 注意标点符号和格式的语言特异性
- 长文本需考虑换行和截断显示效果
五、国际化技术实现原理
remotely-save的国际化系统通过src/i18n.ts实现核心功能,主要机制包括:
- 语言检测:自动根据用户系统语言设置选择匹配的翻译文件
- 回退机制:当特定语言缺少某些键时,自动使用英语基准文本
- 动态切换:支持在运行时切换语言并即时更新界面显示
翻译系统采用模块化设计,核心模块与专业版模块的翻译逻辑相互独立,确保功能扩展时的灵活性。
六、贡献提交流程
6.1 代码提交规范
- 创建特性分支:
git checkout -b feature/add-[language]-translation - 提交格式:
feat(i18n): add [language] translation - 确保只包含语言文件相关的更改
6.2 Pull Request 要求
- 标题格式:
[i18n] Add [Language] translation - 描述中说明翻译语言、覆盖范围及测试情况
- 确保所有文件格式正确,无语法错误
七、常见问题解答
Q1: 如何处理翻译过程中不确定的术语?
A1: 建议先参考项目现有翻译,或在GitHub讨论区提问确认。对于专业术语,可考虑保留英文原词并在括号中添加解释。
Q2: 发现现有翻译不准确或过时怎么办?
A2: 可以直接创建PR修正现有翻译,标题格式建议使用fix(i18n): correct [language] translation for [key]。
Q3: 如何测试我的翻译在实际界面中的效果?
A3: 你需要搭建本地开发环境,具体步骤可参考项目README中的开发指南。对于简单测试,也可以使用JSON验证工具检查文件格式正确性。
八、学习资源与参考
- 官方文档:项目根目录下的
docs/文件夹包含详细开发指南 - 翻译示例:可参考
src/langs/zh_cn.json了解翻译风格 - 社区支持:通过项目issue系统获取翻译相关帮助
九、总结与鼓励
为开源项目贡献多语言支持是参与全球协作的绝佳方式。你的每一个翻译贡献,都能帮助更多用户跨越语言障碍,享受remotely-save带来的同步便利。无论你是翻译新手还是经验丰富的国际化开发者,我们都欢迎你加入贡献者行列,共同打造更包容、更全球化的开源产品。
开源的力量在于社区的多样性,你的参与将让这个项目走得更远。立即行动,为remotely-save添加你熟悉的语言支持吧!
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
ERNIE-ImageERNIE-Image 是由百度 ERNIE-Image 团队开发的开源文本到图像生成模型。它基于单流扩散 Transformer(DiT)构建,并配备了轻量级的提示增强器,可将用户的简短输入扩展为更丰富的结构化描述。凭借仅 80 亿的 DiT 参数,它在开源文本到图像模型中达到了最先进的性能。该模型的设计不仅追求强大的视觉质量,还注重实际生成场景中的可控性,在这些场景中,准确的内容呈现与美观同等重要。特别是,ERNIE-Image 在复杂指令遵循、文本渲染和结构化图像生成方面表现出色,使其非常适合商业海报、漫画、多格布局以及其他需要兼具视觉质量和精确控制的内容创作任务。它还支持广泛的视觉风格,包括写实摄影、设计导向图像以及更多风格化的美学输出。Jinja00