diff --git a/.hgignore b/.hgignore
index e8e6aac6..8338ba5c 100644
--- a/.hgignore
+++ b/.hgignore
@@ -23,5 +23,7 @@ cocoa/*/de.lproj/*.xib
qt/base/*_rc.py
qt/lang/fr.qm
qt/lang/en.qm
+qt/lang/de.qm
+qt/lang/zh.qm
help/*/conf.py
help/*/changelog.rst
\ No newline at end of file
diff --git a/qt/base/dg.qrc b/qt/base/dg.qrc
index deffe73b..bd4c68f4 100644
--- a/qt/base/dg.qrc
+++ b/qt/base/dg.qrc
@@ -5,6 +5,8 @@
../lang/qt_fr.qm
../lang/de.qm
../lang/qt_de.qm
+ ../lang/zh.qm
+ ../lang/qt_zh.qm
../../images/dgpe_logo_32.png
../../images/dgpe_logo_128.png
../../images/dgme_logo_32.png
diff --git a/qt/base/preferences_dialog.py b/qt/base/preferences_dialog.py
index 6e125997..cad2b092 100644
--- a/qt/base/preferences_dialog.py
+++ b/qt/base/preferences_dialog.py
@@ -85,6 +85,7 @@ class PreferencesDialogBase(QDialog):
self.languageComboBox.addItem(tr("English"))
self.languageComboBox.addItem(tr("French"))
self.languageComboBox.addItem(tr("German"))
+ self.languageComboBox.addItem(tr("Chinese (Simplified)"))
self.widgetsVLayout.addWidget(self.languageComboBox)
self.copyMoveLabel = QLabel(self)
self.copyMoveLabel.setText(tr("Copy and Move:"))
@@ -151,6 +152,7 @@ class PreferencesDialogBase(QDialog):
langindex = {
'fr': 1,
'de': 2,
+ 'zh': 3
}.get(self.app.prefs.language, 0)
self.languageComboBox.setCurrentIndex(langindex)
self._load(prefs, setchecked)
@@ -166,7 +168,7 @@ class PreferencesDialogBase(QDialog):
prefs.debug_mode = ischecked(self.debugModeBox)
prefs.destination_type = self.copyMoveDestinationComboBox.currentIndex()
prefs.custom_command = str(self.customCommandEdit.text())
- langs = ['en', 'fr', 'de']
+ langs = ['en', 'fr', 'de', 'zh']
lang = langs[self.languageComboBox.currentIndex()]
oldlang = self.app.prefs.language
if oldlang not in langs:
diff --git a/qt/lang/de.qm b/qt/lang/de.qm
deleted file mode 100644
index c23d7841..00000000
Binary files a/qt/lang/de.qm and /dev/null differ
diff --git a/qt/lang/qt_zh.qm b/qt/lang/qt_zh.qm
new file mode 100644
index 00000000..623b8e33
Binary files /dev/null and b/qt/lang/qt_zh.qm differ
diff --git a/qt/lang/zh.ts b/qt/lang/zh.ts
new file mode 100755
index 00000000..93e883ba
--- /dev/null
+++ b/qt/lang/zh.ts
@@ -0,0 +1,781 @@
+
+
+
+
+
+core
+
+
+
+ 收集文件以备扫描
+
+
+
+ %s (%d 无效)
+
+
+
+ 重复文件扫描中
+
+
+
+ 载入中
+
+
+
+ 移动中
+
+
+
+ 复制中
+
+
+
+ 移到垃圾桶
+
+
+
+ 未找到匹配项
+
+
+
+ 找到 %d 匹配项
+
+
+
+ 读取 %d/%d 文件大小
+
+
+
+ %d/%d 匹配项组合在一起
+
+
+
+ 已标记 %d / %d (%s / %s) 重复项.
+
+
+
+ 筛选: %s
+
+
+
+ 读取 %d/%d 文件元数据
+
+
+
+ 移除错误匹配项
+
+
+
+ 在忽略列表之外已处理 %d/%d 匹配项
+
+
+
+ 优化分组
+
+
+
+
+ 继续
+
+
+
+ 继续 ({})
+
+
+
+
+ 分析 %d/%d 图像
+
+
+
+ 准备进行匹配
+
+
+
+ %d/%d 图像已匹配
+
+
+
+ 验证 %d/%d 匹配项
+
+
+
+
+ 从你的iTunes库中移除无效的音轨
+
+
+
+ 正在扫描iTunes库
+
+
+
+
+ 正在对iPhoto进行搜索.请在此过程中不要触碰任何按键!
+
+
+
+ 将重复文件移到垃圾桶
+
+
+
+
+
+ 将文件移到回收站
+
+
+
+ 退出
+
+
+
+ 首选项
+
+
+
+ dupeGuru帮助
+
+
+
+ 关于dupeGuru
+
+
+
+ 注册dupeGuru
+
+
+
+ 检查更新
+
+
+
+ 打开调试记录
+
+
+
+ 添加到忽略列表中
+
+
+
+ 复制
+
+
+
+ 移动
+
+
+
+ 移除重复文件
+
+
+
+ 自定义命令
+
+
+
+ 执行完成
+
+
+
+ 扫描完成
+
+
+
+ 属性
+
+
+
+ 已选择
+
+
+
+ 引用
+
+
+
+ 载入结果...
+
+
+
+ 结果窗口
+
+
+
+ 添加文件夹...
+
+
+
+ 文件
+
+
+
+ 视图
+
+
+
+ 帮助
+
+
+
+ 载入最近的结果
+
+
+
+ 载入结果
+
+
+
+ 扫描
+
+
+
+ 未保存的结果
+
+
+
+ dupeGuru结果 (*.dupeguru)
+
+
+
+ 所有文件 (*.*)
+
+
+
+ 开始新的扫描
+
+
+
+ 名称
+
+
+
+ 说明
+
+
+
+ 正常
+
+
+
+ 不包含
+
+
+
+ 有问题!
+
+
+
+ 显示选择
+
+
+
+ 关闭
+
+
+
+ 文件路径
+
+
+
+ 错误信息
+
+
+
+ 详细说明
+
+
+
+ 行为
+
+
+
+ 仅显示重复文件
+
+
+
+ 显示Delta值
+
+
+
+ 将标记的文件移到回收站
+
+
+
+ 删除标记文件并用硬连接进行替换
+
+
+
+ 将标记的文件移动到...
+
+
+
+ 将标记的文件复制到...
+
+
+
+ 从结果中移除标记的文件
+
+
+
+ 从结果中移除所选的文件
+
+
+
+ 将所选文件添加到忽略列表中
+
+
+
+ 将所选文件设定为参照文件
+
+
+
+ 使用默认程序打开所选文件
+
+
+
+ 打开已选文件所在的文件夹
+
+
+
+ 重命名所选文件
+
+
+
+ 标记全部
+
+
+
+ 全部取消标记
+
+
+
+ 反选标记文件
+
+
+
+ 标记所选文件
+
+
+
+ 清空忽略列表
+
+
+
+ 应用筛选
+
+
+
+ 取消筛选
+
+
+
+ 导出为 HTML
+
+
+
+ 保存结果...
+
+
+
+ 调用自定义命令
+
+
+
+ 标记
+
+
+
+ 列
+
+
+
+ 重置为默认值
+
+
+
+ {} (结果)
+
+
+
+ 删除重复文件
+
+
+
+ 删除及硬连接重复文件
+
+
+
+
+
+ 扫描类型:
+
+
+
+ 文件名称
+
+
+
+ 内容
+
+
+
+ 文件夹
+
+
+
+ 筛选强度:
+
+
+
+ 较多结果
+
+
+
+ 较少结果
+
+
+
+ 词语匹配权重
+
+
+
+ 匹配相近词语
+
+
+
+ 混合文件类型
+
+
+
+ 筛选时使用常规表达式
+
+
+
+ 删除或移动时同时移除空文件夹
+
+
+
+ 忽略文件当其小于:
+
+
+
+ KB
+
+
+
+ 忽略重复文件当其硬连接到相同文件时
+
+
+
+ 复制和移动:
+
+
+
+ 目标位置
+
+
+
+ 重建相对路径
+
+
+
+ 重建绝对路径
+
+
+
+ 自定义命令 (参数: %d 指重复文件, %r 指引用):
+
+
+
+ 文件名称 - 字段名
+
+
+
+ 文件名称 - 字段名 (无序)
+
+
+
+ 标签
+
+
+
+ 音频内容
+
+
+
+ 标签扫描:
+
+
+
+ 音轨
+
+
+
+ 演唱者
+
+
+
+ 专辑
+
+
+
+ 歌曲名
+
+
+
+ 音乐类型
+
+
+
+ 年
+
+
+
+ 匹配不同规格的图像
+
+
+
+ 清空图片缓存
+
+
+
+ 清空列表
+
+
+
+ 语言:
+
+
+
+ 英语
+
+
+
+ 法语
+
+
+
+ 德语
+
+
+
+ 调试模式 (需要重新启动)
+
+
+
+
+
+columns
+
+
+ 文件名称
+
+
+
+ 文件夹
+
+
+
+ 大小 (KB)
+
+
+
+ 大小 (MB)
+
+
+
+ 类型
+
+
+
+ 编辑
+
+
+
+ 匹配 %
+
+
+
+ 使用过的词语
+
+
+
+ 重复文件数
+
+
+
+
+ 时间
+
+
+
+ 比特
+
+
+
+ 采样率
+
+
+
+ 歌曲名
+
+
+
+ 演唱者
+
+
+
+ 专辑
+
+
+
+ 音乐类型
+
+
+
+ 年
+
+
+
+ 音轨号
+
+
+
+ 注释
+
+
+
+
+ 规格
+
+
+
+
+
+ExtraFairwareReminder
+
+
+ 抱歉,现在仍要继续
+
+
+
+ 捐助
+
+
+
+ 看起来似乎您找到了很多重复文件。这也是我继续精进这个软件的动力之一。然而,我衷心的希望能够得到您的捐助,因为我会日夜奋战于这个软件并且没有任何报酬。
+
+您可能会觉得 "反正这个软件我只用一次,我不需要给开发者任何捐助". 问题是大多数人都只用一次dupeGuru。如果每一位都这样想,dupeGuru的开发也就没有资金支持了。也正是因为dupeGuru自身的性质决定了它有着仅用一次的内在倾向,所以我还必须坚持致力于这个软件的开发与精进。
+
+如果您无法承担捐助,您也可以忽略此提醒,或者发送电子邮件至 support@hardcoded.net ,我会发送给您一个注册密钥。
+
+
+
+ 此提醒框弹出的原因如下:
+
+1. 您正在处理超过100个重复文件
+2. 您没有捐助过dupeGuru
+3. 此软件中还有未支付时间
+
+
+
+
+message
+
+
+ 选择要扫描的文件夹,然后点击 "扫描".
+
+
+
+ 目前还有任务在执行,新任务无法开启。请等待几秒钟后再重新试一次。
+
+
+
+ 目前已选的 {} 匹配项将在后续的扫描中被忽略。继续吗?
+
+
+
+ 选择一个文件夹将标记的 {} 个文件进行...
+
+
+
+ 你将从结果中移除 {} 个文件。继续吗?
+
+
+
+ 你没有设定自定义命令。请在首选项中进行设定。
+
+
+
+ 所有文件已成功处理。
+
+
+
+ 没有找到重复文件。
+
+
+
+ 目前还有结果尚未保存,确定要退出吗?
+
+
+
+ 选择一个文件夹以加入到扫描列表中
+
+
+
+ 选择一个结果文件并载入
+
+
+
+ 目前还有结果尚未保存,确定要继续吗?
+
+
+
+ 所选文件夹中不包含可供扫描的文件。
+
+
+
+ 在处理部分或全部文件时发现问题。产生问题的原因在下表中进行描述。这些文件将不会从结果中移除。
+
+
+
+ 请输入筛选条件以应用到结果。详见帮助文档。
+
+
+
+ 无需清空。
+
+
+
+ 确定要从忽略列表中移除 {} 项吗?
+
+
+
+ 忽略列表已清空。
+
+
+
+ 即将有 {} 个文件被移到回收站。继续吗?
+
+
+
+ 即将有 {} 个文件被移动垃圾桶并删除硬盘上的文件。继续吗?
+
+
+
+ 选择一个文件将结果保存到
+
+
+
+ dupeGuru将重新启动以使语言修改生效。
+
+
+
+ 确定要移除所有缓存图片?
+
+
+
+ 图片缓存已清空。
+
+
+
\ No newline at end of file