从零开始为remotely-save贡献多语言支持:开发者指南
remotely-save作为一款非官方的Obsidian同步插件,支持多种云服务,让用户能在本地和云端之间无缝同步知识库。为这样的开源项目贡献多语言支持,不仅能帮助全球非英语用户更好地使用插件,还能扩大项目影响力,同时为自己积累开源协作经验。本文将从价值认知到实际操作,全面指导开发者完成多语言支持的贡献流程。
🔤 为什么多语言支持至关重要
在全球化背景下,多语言支持是开源项目走向国际的关键一步。为remotely-save添加新的语言翻译,意味着:
- 打破语言壁垒,让更多用户能够以母语配置和使用插件
- 提升项目的包容性,吸引更广泛的用户群体和贡献者
- 增强插件在国际市场的竞争力和可用性
- 为自己的技术履历增添国际化项目经验
🌐 准备工作:了解项目结构与环境
1. 环境搭建
首先需要准备开发环境,克隆项目仓库到本地:
git clone https://gitcode.com/gh_mirrors/re/remotely-save
cd remotely-save
2. 语言文件组织
remotely-save采用清晰的语言文件结构,主要分为核心插件和专业版两个部分:
核心插件语言文件:位于src/langs/目录下,包含:
en.json- 英语基础翻译zh_cn.json- 简体中文翻译zh_tw.json- 繁体中文翻译
专业版语言文件:位于pro/src/langs/目录下,包含对应语言的专业功能翻译文件。
这些JSON文件采用键值对格式存储翻译内容,是添加新语言的主要工作对象。
📝 实施步骤:从零创建新语言支持
1. 创建语言文件
在相应的langs目录下创建新的JSON文件,文件名采用语言代码命名(如fr.json表示法语,de.json表示德语)。建议以英语文件为模板开始翻译:
{
"confirm": "确认", // 操作确认按钮
"disable": "关闭", // 功能禁用选项
"enable": "开启", // 功能启用选项
"syncrun_step1": "1/8 Remotely Save 准备同步({{serviceType}})" // 同步步骤提示,保留变量
}
2. 翻译注意事项
翻译过程中需注意以下几点:
- 保留所有
{{variable}}格式的变量,确保动态内容正常显示 - 保持术语一致性,如"同步"应统一翻译,避免混淆
- 注意文本长度,过长长文本可能导致UI布局问题
- 考虑文化差异,确保翻译符合目标语言的表达习惯
3. 注册新语言
完成翻译后,需要在语言索引文件中注册新语言。分别修改核心插件和专业版的index.ts文件:
// src/langs/index.ts 或 pro/src/langs/index.ts
import fr from "./fr.json"; // 导入新创建的语言文件
export const LANGS = {
en: en,
zh_cn: zh_cn,
zh_tw: zh_tw,
fr: fr // 添加新语言到导出对象
};
✅ 质量保障:测试与验证
1. 完整性检查
确保翻译文件包含所有必要的键值对,没有遗漏或拼写错误。可以使用简单的脚本比较新翻译文件与英语文件的键集合:
# 比较两个JSON文件的键差异(需安装jq工具)
jq -r 'keys[]' src/langs/en.json > en_keys.txt
jq -r 'keys[]' src/langs/fr.json > fr_keys.txt
diff en_keys.txt fr_keys.txt
2. 功能测试
在Obsidian中安装开发版本的插件,测试以下场景:
- 界面语言切换是否正常
- 所有翻译文本是否正确显示
- 包含变量的文本是否正确替换
- 不同尺寸屏幕下的文本布局是否正常
🚀 贡献流程:提交你的翻译
1. 提交规范
遵循项目的提交规范,提交信息应清晰描述贡献内容:
git checkout -b feature/add-french-translation
git add src/langs/fr.json src/langs/index.ts
git add pro/src/langs/fr.json pro/src/langs/index.ts
git commit -m "feat(i18n): add French translation"
2. 提交流程
通过项目的Pull Request流程提交你的贡献:
- 将特性分支推送到你的fork仓库
- 在项目页面创建新的Pull Request
- 描述翻译的语言和主要内容
- 响应代码审查中的反馈和建议
❓ 常见问题
Q: 发现翻译错误或需要更新怎么办?
A: 可以创建新的Pull Request,标题使用fix(i18n): correct {language} translation格式,清晰说明修改内容。
Q: 如何处理专业术语的翻译?
A: 参考项目现有翻译中的术语使用,保持一致性。如有不确定的术语,可在提交时注明或在社区讨论。
Q: 语言文件中的注释会被保留吗?
A: 建议不要在JSON文件中添加注释,如需说明可在Pull Request描述中提及。
通过以上步骤,你已经完成了为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