LinuxMint/Cinnamon 小工具国际化开发指南
前言
在LinuxMint的Cinnamon桌面环境中,小工具(Applet)的国际化是提升用户体验的重要环节。本文将详细介绍如何为Cinnamon小工具添加多语言支持,从基础配置到实际翻译工作流程,帮助开发者实现小工具的多语言化。
基础配置
1. 导入必要模块
在开始国际化工作前,首先需要在applet.js
文件中导入两个关键模块:
const GLib = imports.gi.GLib;
const Gettext = imports.gettext;
这两个模块分别提供:
- GLib:底层系统功能访问
- Gettext:国际化文本处理功能
2. 设置翻译函数
在小工具构造函数前添加以下代码:
// l10n/translation support
const UUID = "yourApplet@You";
Gettext.bindtextdomain(UUID, GLib.get_home_dir() + "/.local/share/locale");
function _(str) {
return Gettext.dgettext(UUID, str);
}
重要提示:
- 必须将
yourApplet@You
替换为你小工具的实际UUID bindtextdomain
函数指定了翻译文件的查找路径_()
函数是Gettext的标准翻译函数简写形式
可翻译字符串处理
标记可翻译文本
所有需要翻译的字符串都应使用_()
函数包裹:
_("This is a text, which needs to be translated")
最佳实践:
- 保持原文简洁明了,避免复杂句式
- 为上下文相关的字符串添加注释
- 避免字符串拼接,保持完整句子
翻译工作流程
首次创建翻译模板
- 在小工具目录下创建
po
文件夹 - 在包含
metadata.json
的目录中打开终端 - 执行命令:
cinnamon-xlet-makepot
该命令会在po
目录下生成yourApplet.pot
模板文件,其中包含所有需要翻译的字符串。
使用Poedit创建翻译
- 安装Poedit:
sudo apt install poedit
- 启动Poedit并选择"Create new translation"
- 打开
.pot
模板文件 - 选择目标语言并保存,文件名会自动包含语言代码
Poedit使用技巧:
- 源文本框显示原文(通常为英文)
- 翻译文本框填写目标语言内容
- 建议禁用自动生成
.mo
文件功能(编辑>首选项>常规)
更新翻译模板
当小工具代码变更后,需要重新生成翻译模板:
- 在包含
metadata.json
的目录中打开终端 - 执行命令:
cinnamon-xlet-makepot
这会更新.pot
文件,包含新增的需要翻译的字符串。
更新现有翻译
- 在Poedit中打开
.po
文件 - 选择"目录">"从POT文件更新..."
- 选择最新的
.pot
文件 - 翻译新增的字符串并保存
测试与部署
测试翻译
手动安装的小工具需要手动安装翻译:
- 在包含
metadata.json
的目录中打开终端 - 执行命令:
cinnamon-xlet-makepot -i
- 重启Cinnamon:
Ctrl+Alt+Esc
移除翻译
如需移除已安装的翻译:
- 在包含
metadata.json
的目录中打开终端 - 执行命令:
cinnamon-xlet-makepot -r
- 重启Cinnamon:
Ctrl+Alt+Esc
高级建议
- 版本控制:将
.po
文件纳入版本控制,但排除.mo
文件 - 翻译质量:考虑邀请母语人士校对翻译
- 上下文注释:在代码中为复杂字符串添加翻译注释
- 复数形式:对于需要考虑单复数形式的语言,使用
ngettext
函数
通过遵循这些指南,你可以为Cinnamon小工具提供完整的国际化支持,让全球用户都能以母语使用你的作品。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考