1
0
mirror of https://github.com/arsenetar/dupeguru.git synced 2026-01-25 08:01:39 +00:00

Compare commits

..

29 Commits

Author SHA1 Message Date
Virgil Dupras
c8e00cf0f7 Tweaked localized help files. 2012-01-06 15:40:21 -05:00
Virgil Dupras
0cca745d0d pe v2.4.0 2012-01-06 12:29:40 -05:00
Virgil Dupras
80043ccbea Added link to russian help document in english help index page. 2012-01-06 12:25:32 -05:00
Virgil Dupras
d62bfac95e Merge with objp branch. 2012-01-05 17:20:02 -05:00
Virgil Dupras
f636333938 Simplified the dev cocoa build process.
--HG--
branch : objp
2012-01-05 17:08:56 -05:00
Virgil Dupras
01f1e5e46e Moved hscommon.cocoa to cocoalib.
--HG--
branch : objp
2012-01-05 16:57:31 -05:00
Virgil Dupras
7ce72b1998 Adapted build script to changes in hscommon's CocoaProxy and objp.
--HG--
branch : objp
2012-01-05 14:12:52 -05:00
Virgil Dupras
c4f95a4901 Pushed LANGNAMES (and their localizations) from dupeGuru to qtlib. 2012-01-03 17:03:53 -05:00
Virgil Dupras
5b0d9f311c Added Russian localization for the help file by Igor Pavlov. 2012-01-03 15:35:17 -05:00
Virgil Dupras
11d8f824e9 Added Russian localization by Igor Pavlov. 2012-01-03 15:03:10 -05:00
Virgil Dupras
ceaf2ee4ba Fixed bogus imports.
--HG--
branch : objp
2011-12-28 15:04:42 -05:00
Virgil Dupras
3b80de869a Replaced objcmin with objp-based proxy.
--HG--
branch : objp
2011-12-28 14:51:33 -05:00
Virgil Dupras
08813ce39c Added Armenian help file translation by Hrant Ohanyan. 2011-12-19 16:02:47 -05:00
Virgil Dupras
478f462ecc Updated subrepos 2011-12-12 14:14:13 -05:00
Virgil Dupras
be53b6de76 Fixed Clear Picture Cache action under Qt which was broken. 2011-12-12 13:37:45 -05:00
Virgil Dupras
ca602480d9 Added Armenian loc by Hrant Ohanyan. Also, fixed the dgpe Cocoa project which was broken. 2011-12-08 11:06:25 -05:00
Virgil Dupras
185cdbb6fa Added tag me6.2.0 for changeset 015ba7e2c10d 2011-12-07 16:48:51 -05:00
Virgil Dupras
2d4903da26 Fixed the Qt-marked-column-deletion hack on ME, it was performed on SE columns instead. 2011-12-07 16:03:14 -05:00
Virgil Dupras
98954bd582 Added CFBundleShortVersionString to Cocoa's Info.plist. 2011-12-07 15:26:24 -05:00
Virgil Dupras
f862f32fb4 me v6.2.0 2011-12-07 15:12:38 -05:00
Virgil Dupras
804a5a1bbf Fixed ME project and columns under Cocoa. 2011-12-07 15:09:29 -05:00
Virgil Dupras
f004535820 Merge heads. 2011-12-07 12:06:54 -05:00
Virgil Dupras
2abd932709 Updated jobprogress requirement. 2011-12-07 12:05:22 -05:00
Virgil Dupras
2a78b8ce41 Added a startup warning message about wrong locale (causing surrogate-type-thing crashes on Linux). 2011-12-07 12:04:02 -05:00
Virgil Dupras
2301082307 Added tag se3.3.1 for changeset 6e3379be6821 2011-12-02 11:41:34 -05:00
Virgil Dupras
168546608d se v3.3.1 2011-12-02 10:59:44 -05:00
Virgil Dupras
27c1a03496 Updated qtlib. 2011-12-02 10:54:40 -05:00
Virgil Dupras
d382cec0fe Added an install destination in Cocoa projects because the built product location changed with XCode 4.2 and it became complicated, in build/package scripts, to locate it. 2011-12-02 10:48:59 -05:00
Virgil Dupras
c5b7f6b3d5 Added tag se3.3.0 for changeset 9ea9af1b886c 2011-11-30 16:16:30 -05:00
85 changed files with 4400 additions and 500 deletions

View File

@@ -6,6 +6,7 @@ run.py
*.so
*.mo
*.pyd
.tm_*
*.xcodeproj/xcuserdata
*.xcodeproj/project.xcworkspace/xcuserdata
conf.json
@@ -15,16 +16,17 @@ install
installer_tmp-cache
cocoa/*/Info.plist
cocoa/*/build
cocoa/*/*.app
cocoa/*/dg_cocoa.plugin
cocoa/*/fr.lproj/*.xib
cocoa/*/de.lproj/*.xib
cocoa/*/zh_CN.lproj/*.xib
cocoa/*/cs.lproj/*.xib
cocoa/*/it.lproj/*.xib
# We keep old strings files in the repo for a while to be sure that auto-generated strings work
# fine, but we'll eventually only have en.lproj in the repo.
hy.lproj
ru.lproj
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

View File

@@ -60,3 +60,6 @@ a2f7b7302e178f08725a6404ddc28464409510b1 se3.2.0
0fd77be57ff716d5c93232e829dc02acec036d7c se3.2.1
3dd08060135b0b9cef70b6f5a81f191ea339c8d5 me6.1.1
4e6cbef6bcdfcc0e56ff9690fbfe1cac1f4b1b09 pe2.3.0
9ea9af1b886cd1adc4f42fd2276cc2b38376eab0 se3.3.0
6e3379be6821bb36d7f0877a17dd6c07aa037b0a se3.3.1
015ba7e2c10d09afb944f387c2a9c97f7eff7571 me6.2.0

2
README
View File

@@ -29,7 +29,7 @@ General dependencies
- Python 3.2 (http://www.python.org)
- Send2Trash3k (http://hg.hardcoded.net/send2trash)
- hsaudiotag3k 1.1.0 (for ME) (http://hg.hardcoded.net/hsaudiotag)
- jobprogress 1.0.2 (http://hg.hardcoded.net/jobprogress)
- jobprogress 1.0.3 (http://hg.hardcoded.net/jobprogress)
- Sphinx 1.1 (http://sphinx.pocoo.org/)
- polib 0.7.0 (http://bitbucket.org/izi/polib)
- pytest 2.0.0, to run unit tests. (http://pytest.org/)

View File

@@ -12,8 +12,7 @@ from optparse import OptionParser
import shutil
import json
from setuptools import setup
from distutils.extension import Extension
from setuptools import setup, Extension
from hscommon import sphinxgen
from hscommon.build import (add_to_pythonpath, print_and_do, copy_packages, filereplace,
@@ -38,17 +37,15 @@ def parse_args():
def build_cocoa(edition, dev):
from pluginbuilder import build_plugin
build_cocoa_proxy_module()
print("Building dg_cocoa.plugin")
if dev:
tocopy = ['cocoa/inter']
else:
specific_packages = {
'se': ['core_se'],
'me': ['core_me'],
'pe': ['core_pe'],
}[edition]
tocopy = ['core', 'hscommon', 'cocoa/inter'] + specific_packages
copy_packages(tocopy, 'build')
specific_packages = {
'se': ['core_se'],
'me': ['core_me'],
'pe': ['core_pe'],
}[edition]
tocopy = ['core', 'hscommon', 'cocoa/inter', 'cocoalib/cocoa'] + specific_packages
copy_packages(tocopy, 'build', create_links=dev)
cocoa_project_path = 'cocoa/{0}'.format(edition)
shutil.copy(op.join(cocoa_project_path, 'dg_cocoa.py'), 'build')
os.chdir('build')
@@ -59,11 +56,6 @@ def build_cocoa(edition, dev):
if op.exists(pluginpath):
shutil.rmtree(pluginpath)
shutil.move('build/dist/dg_cocoa.plugin', pluginpath)
if dev:
# In alias mode, the tweakings we do to the pythonpath aren't counted in. We have to
# manually put a .pth in the plugin
pthpath = op.join(pluginpath, 'Contents/Resources/dev.pth')
open(pthpath, 'w').write(op.abspath('.'))
os.chdir(cocoa_project_path)
print('Generating Info.plist')
app_version = get_module_version('core_{}'.format(edition))
@@ -78,12 +70,11 @@ def build_cocoa(edition, dev):
os.system('xcodebuild {0}'.format(args))
os.chdir('../..')
print("Creating the run.py file")
subfolder = 'dev' if dev else 'release'
app_path = {
'se': 'cocoa/se/build/{0}/dupeGuru.app',
'me': 'cocoa/me/build/{0}/dupeGuru\\ ME.app',
'pe': 'cocoa/pe/build/{0}/dupeGuru\\ PE.app',
}[edition].format(subfolder)
'se': 'cocoa/se/dupeGuru.app',
'me': 'cocoa/me/dupeGuru\\ ME.app',
'pe': 'cocoa/pe/dupeGuru\\ PE.app',
}[edition]
tmpl = open('run_template_cocoa.py', 'rt').read()
run_contents = tmpl.replace('{{app_path}}', app_path)
open('run.py', 'wt').write(run_contents)
@@ -162,6 +153,21 @@ def build_mergepot():
print("Updating .po files using .pot files")
loc.merge_pots_into_pos('locale')
loc.merge_pots_into_pos(op.join('hscommon', 'locale'))
loc.merge_pots_into_pos(op.join('qtlib', 'locale'))
def build_cocoa_proxy_module():
print("Building Cocoa Proxy")
import objp.p2o
objp.p2o.generate_python_proxy_code('cocoalib/cocoa/CocoaProxy.h', 'build/CocoaProxy.m')
exts = [
Extension("CocoaProxy", ['cocoalib/cocoa/CocoaProxy.m', 'build/CocoaProxy.m', 'build/ObjP.m'],
extra_link_args=["-framework", "CoreFoundation", "-framework", "Foundation", "-framework", "AppKit"]),
]
setup(
script_args = ['build_ext', '--inplace'],
ext_modules = exts,
)
move_all('CocoaProxy*', 'cocoalib/cocoa')
def build_pe_modules(ui):
print("Building PE Modules")

View File

@@ -1,11 +1,9 @@
import logging
from jobprogress import job
from hscommon import cocoa
from hscommon.cocoa import install_exception_hook
from hscommon.cocoa.inter import signature, subproxy, PyFairware
from hscommon.cocoa.objcmin import (NSNotificationCenter, NSSearchPathForDirectoriesInDomains,
NSApplicationSupportDirectory, NSUserDomainMask, NSWorkspace)
import cocoa
from cocoa import install_exception_hook, proxy
from cocoa.inter import signature, subproxy, PyFairware
from hscommon.trans import trget
from core.app import JobType
@@ -25,7 +23,7 @@ class PyDupeGuruBase(PyFairware):
def _init(self, modelclass):
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
install_exception_hook()
appdata = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, True)[0]
appdata = proxy.getAppdataPath()
self.py = modelclass(self, appdata)
self.progress = cocoa.ThreadedJobPerformer()
@@ -166,10 +164,10 @@ class PyDupeGuruBase(PyFairware):
#--- model --> view
def open_path(self, path):
NSWorkspace.sharedWorkspace().openFile_(str(path))
proxy.openPath_(str(path))
def reveal_path(self, path):
NSWorkspace.sharedWorkspace().selectFile_inFileViewerRootedAtPath_(str(path), '')
proxy.revealPath_(str(path))
def start_job(self, jobid, func, args=()):
try:
@@ -177,10 +175,10 @@ class PyDupeGuruBase(PyFairware):
args = tuple([j] + list(args))
self.progress.run_threaded(func, args=args)
except job.JobInProgressError:
NSNotificationCenter.defaultCenter().postNotificationName_object_('JobInProgress', self)
proxy.postNotification_userInfo_('JobInProgress', None)
else:
ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid}
NSNotificationCenter.defaultCenter().postNotificationName_object_userInfo_('JobStarted', self, ud)
proxy.postNotification_userInfo_('JobStarted', ud)
def show_extra_fairware_reminder(self):
self.cocoa.showExtraFairwareReminder()

View File

@@ -11,7 +11,7 @@ from appscript import app, k, CommandError
import time
import os.path as op
from hscommon.cocoa import as_fetch
from cocoa import as_fetch
from hscommon.trans import tr
from core.app import JobType

View File

@@ -16,8 +16,8 @@ from appscript import app, its, CommandError, ApplicationNotFoundError
from hscommon import io
from hscommon.util import remove_invalid_xml
from hscommon.path import Path
from hscommon.cocoa.objcmin import NSUserDefaults, NSURL
from hscommon.trans import tr
from cocoa import proxy
from core import directories
from core_pe import _block_osx
@@ -49,14 +49,11 @@ class IPhoto(Photo):
return IPHOTO_PATH
def get_iphoto_database_path():
ud = NSUserDefaults.standardUserDefaults()
prefs = ud.persistentDomainForName_('com.apple.iApps')
if prefs is None:
plisturls = proxy.prefValue_inDomain_('iPhotoRecentDatabases', 'com.apple.iApps')
if not plisturls:
raise directories.InvalidPathError()
if 'iPhotoRecentDatabases' not in prefs:
raise directories.InvalidPathError()
plisturl = NSURL.URLWithString_(prefs['iPhotoRecentDatabases'][0])
return Path(plisturl.path())
plistpath = proxy.url2path_(plisturls[0])
return Path(plistpath)
def get_iphoto_pictures(plistpath):
if not io.exists(plistpath):

View File

@@ -11,18 +11,17 @@ import os.path as op
from hscommon import io
from hscommon.path import Path
from hscommon.cocoa.objcmin import NSWorkspace
from cocoa import proxy
from core import fs
from core.directories import Directories as DirectoriesBase, DirectoryState
from core_se.app import DupeGuru as DupeGuruBase
def is_bundle(str_path):
sw = NSWorkspace.sharedWorkspace()
uti, error = sw.typeOfFile_error_(str_path, None)
if error is not None:
uti = proxy.getUTI_(str_path)
if uti is None:
logging.warning('There was an error trying to detect the UTI of %s', str_path)
return sw.type_conformsToType_(uti, 'com.apple.bundle') or sw.type_conformsToType_(uti, 'com.apple.package')
return proxy.type_conformsToType_(uti, 'com.apple.bundle') or proxy.type_conformsToType_(uti, 'com.apple.package')
class Bundle(fs.Folder):
@classmethod

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import signature, PyGUIObject
from cocoa.inter import signature, PyGUIObject
from core.gui.details_panel import DetailsPanel

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyOutline
from cocoa.inter import PyOutline
from core.gui.directory_tree import DirectoryTree

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject
from cocoa.inter import PyGUIObject
from core.gui.extra_fairware_reminder import ExtraFairwareReminder

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject, PySelectableList
from cocoa.inter import PyGUIObject, PySelectableList
from core.gui.prioritize_dialog import PrioritizeDialog
from .prioritize_list import PyPrioritizeList

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import signature, PySelectableList
from cocoa.inter import signature, PySelectableList
class PyPrioritizeList(PySelectableList):
@signature('v@:@i')

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject
from cocoa.inter import PyGUIObject
from core.gui.problem_dialog import ProblemDialog

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyTable
from cocoa.inter import PyTable
from core.gui.problem_table import ProblemTable

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import signature, PyTable
from cocoa.inter import signature, PyTable
class PyResultTable(PyTable):
@signature('c@:')

View File

@@ -1,4 +1,4 @@
from hscommon.cocoa.inter import PyGUIObject
from cocoa.inter import PyGUIObject
from core.gui.stats_label import StatsLabel

View File

@@ -22,6 +22,8 @@
<string>APPL</string>
<key>CFBundleSignature</key>
<string>hsft</string>
<key>CFBundleShortVersionString</key>
<string>{version}</string>
<key>CFBundleVersion</key>
<string>{version}</string>
<key>NSMainNibFile</key>

View File

@@ -56,15 +56,15 @@ http://www.hardcoded.net/licenses/bsd_license
{@"dupe_count", 80, 16, 0, YES, nil},
nil
};
[[self columns] initializeColumns:defs];
[[table columns] initializeColumns:defs];
NSTableColumn *c = [matches tableColumnWithIdentifier:@"marked"];
[[c dataCell] setButtonType:NSSwitchButton];
[[c dataCell] setControlSize:NSSmallControlSize];
c = [[self tableView] tableColumnWithIdentifier:@"size"];
c = [matches tableColumnWithIdentifier:@"size"];
[[c dataCell] setAlignment:NSRightTextAlignment];
c = [[self tableView] tableColumnWithIdentifier:@"duration"];
c = [matches tableColumnWithIdentifier:@"duration"];
[[c dataCell] setAlignment:NSRightTextAlignment];
c = [[self tableView] tableColumnWithIdentifier:@"bitrate"];
c = [matches tableColumnWithIdentifier:@"bitrate"];
[[c dataCell] setAlignment:NSRightTextAlignment];
[[table columns] restoreColumns];
}

View File

@@ -7,7 +7,7 @@
from hscommon.trans import install_gettext_trans_under_cocoa
install_gettext_trans_under_cocoa()
from hscommon.cocoa import signature
from cocoa.inter import signature
from core.scanner import ScanType

View File

@@ -42,6 +42,7 @@
CE1425890AFB718500BD5167 /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; };
CE14259F0AFB719300BD5167 /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE1425880AFB718500BD5167 /* Sparkle.framework */; };
CE1EAA0A12DF3E81009BA949 /* HSRecentFiles.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1EAA0912DF3E81009BA949 /* HSRecentFiles.m */; };
CE2239A2148FFE6600B3DC99 /* HSColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2239A1148FFE6600B3DC99 /* HSColumns.m */; };
CE2E87F9142BC90A00519A68 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE2E87F8142BC90A00519A68 /* Quartz.framework */; };
CE2E87FD142BC92C00519A68 /* HSQuicklook.m in Sources */ = {isa = PBXBuildFile; fileRef = CE2E87FC142BC92C00519A68 /* HSQuicklook.m */; };
CE381C9609914ACE003581CE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CE381C9409914ACE003581CE /* AppDelegate.m */; };
@@ -146,10 +147,25 @@
CE1425880AFB718500BD5167 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = /Library/Frameworks/Sparkle.framework; sourceTree = "<absolute>"; };
CE1EAA0812DF3E81009BA949 /* HSRecentFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSRecentFiles.h; path = ../../cocoalib/HSRecentFiles.h; sourceTree = SOURCE_ROOT; };
CE1EAA0912DF3E81009BA949 /* HSRecentFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSRecentFiles.m; path = ../../cocoalib/HSRecentFiles.m; sourceTree = SOURCE_ROOT; };
CE22399E148FFE4F00B3DC99 /* PyColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns.h; sourceTree = "<group>"; };
CE2239A0148FFE6600B3DC99 /* HSColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSColumns.h; sourceTree = "<group>"; };
CE2239A1148FFE6600B3DC99 /* HSColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSColumns.m; sourceTree = "<group>"; };
CE2B2B5A1406ABDA0038D15A /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = ../base/de.lproj/Localizable.strings; sourceTree = "<group>"; };
CE2E87F8142BC90A00519A68 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; };
CE2E87FB142BC92C00519A68 /* HSQuicklook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSQuicklook.h; path = ../../cocoalib/HSQuicklook.h; sourceTree = "<group>"; };
CE2E87FC142BC92C00519A68 /* HSQuicklook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSQuicklook.m; path = ../../cocoalib/HSQuicklook.m; sourceTree = "<group>"; };
CE335AEE14B393C60000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/about.xib; sourceTree = "<group>"; };
CE335AEF14B393C60000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CE335AF014B393C60000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CE335AF514B393DC0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ../base/ru.lproj/Localizable.strings; sourceTree = "<group>"; };
CE335AF714B393EE0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CE335AF814B393EE0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CE335AF914B393EE0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ExtraFairwareReminder.xib; sourceTree = "<group>"; };
CE335AFA14B393EE0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/MainMenu.xib; sourceTree = "<group>"; };
CE335AFB14B393EE0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CE335AFC14B393EE0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CE335AFD14B393EE0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CE335B0514B393FB0000AF1A /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/Preferences.xib; sourceTree = "<group>"; };
CE381C9409914ACE003581CE /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = SOURCE_ROOT; };
CE381C9509914ACE003581CE /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = SOURCE_ROOT; };
CE381C9A09914ADF003581CE /* ResultWindow.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = ResultWindow.m; sourceTree = SOURCE_ROOT; };
@@ -234,6 +250,18 @@
CEB5E07713225C89009F521D /* PyExtraFairwareReminder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PyExtraFairwareReminder.h; path = ../base/PyExtraFairwareReminder.h; sourceTree = SOURCE_ROOT; };
CEB5E07C13225CA2009F521D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = ../base/en.lproj/ExtraFairwareReminder.xib; sourceTree = SOURCE_ROOT; };
CEB5E07E13225CB8009F521D /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = ../base/fr.lproj/ExtraFairwareReminder.xib; sourceTree = SOURCE_ROOT; };
CEC3D37C14911253006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CEC3D37D14911253006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CEC3D37E14911253006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ExtraFairwareReminder.xib; sourceTree = "<group>"; };
CEC3D37F14911253006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/MainMenu.xib; sourceTree = "<group>"; };
CEC3D38014911253006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CEC3D38114911253006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CEC3D38214911253006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CEC3D38B14911263006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = hy.lproj/Preferences.xib; sourceTree = "<group>"; };
CEC3D38D14911274006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = ../base/hy.lproj/Localizable.strings; sourceTree = "<group>"; };
CEC3D38F14911288006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/about.xib; sourceTree = "<group>"; };
CEC3D39014911288006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CEC3D39114911288006B1A91 /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CEC8F3091416A0D2004D28F3 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = zh_CN; path = ../zh_CN.lproj/about.xib; sourceTree = "<group>"; };
CEC8F30A1416A0D2004D28F3 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = zh_CN; path = ../zh_CN.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CEC8F30B1416A0D2004D28F3 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = zh_CN; path = ../zh_CN.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
@@ -370,6 +398,8 @@
CE003CB211242D00004B0AA7 /* controllers */ = {
isa = PBXGroup;
children = (
CE2239A0148FFE6600B3DC99 /* HSColumns.h */,
CE2239A1148FFE6600B3DC99 /* HSColumns.m */,
CE003CB311242D00004B0AA7 /* HSGUIController.h */,
CE003CB411242D00004B0AA7 /* HSGUIController.m */,
CE003CB511242D00004B0AA7 /* HSOutline.h */,
@@ -390,6 +420,7 @@
CE003CBB11242D00004B0AA7 /* proxies */ = {
isa = PBXGroup;
children = (
CE22399E148FFE4F00B3DC99 /* PyColumns.h */,
CE003CBC11242D00004B0AA7 /* PyGUI.h */,
CE003CBD11242D00004B0AA7 /* PyOutline.h */,
CE0A0C131175A28100DCA3C6 /* PyTable.h */,
@@ -568,6 +599,8 @@
zh_CN,
cs,
it,
hy,
ru,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */;
projectDirPath = "";
@@ -647,6 +680,7 @@
CE84C9B91423AE410050A6AD /* HSPopUpList.m in Sources */,
CE84C9BA1423AE410050A6AD /* HSSelectableList.m in Sources */,
CE2E87FD142BC92C00519A68 /* HSQuicklook.m in Sources */,
CE2239A2148FFE6600B3DC99 /* HSColumns.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -662,6 +696,8 @@
CEC8F3141416A0FC004D28F3 /* zh_CN */,
CE74255114603152002F8E3E /* cs */,
CE7A6998146443090007D927 /* it */,
CEC3D37C14911253006B1A91 /* hy */,
CE335AF714B393EE0000AF1A /* ru */,
);
name = DetailsPanel.xib;
sourceTree = SOURCE_ROOT;
@@ -675,6 +711,8 @@
CEC8F3151416A0FC004D28F3 /* zh_CN */,
CE74255214603152002F8E3E /* cs */,
CE7A6999146443090007D927 /* it */,
CEC3D37D14911253006B1A91 /* hy */,
CE335AF814B393EE0000AF1A /* ru */,
);
name = DirectoryPanel.xib;
sourceTree = SOURCE_ROOT;
@@ -688,6 +726,8 @@
CEC8F3171416A0FC004D28F3 /* zh_CN */,
CE74255414603152002F8E3E /* cs */,
CE7A699B146443090007D927 /* it */,
CEC3D37F14911253006B1A91 /* hy */,
CE335AFA14B393EE0000AF1A /* ru */,
);
name = MainMenu.xib;
sourceTree = SOURCE_ROOT;
@@ -701,6 +741,8 @@
CEC8F3181416A0FC004D28F3 /* zh_CN */,
CE74255614603152002F8E3E /* cs */,
CE7A699D146443090007D927 /* it */,
CEC3D38114911253006B1A91 /* hy */,
CE335AFC14B393EE0000AF1A /* ru */,
);
name = ProblemDialog.xib;
sourceTree = SOURCE_ROOT;
@@ -714,6 +756,8 @@
CEC8F3191416A0FC004D28F3 /* zh_CN */,
CE74255714603152002F8E3E /* cs */,
CE7A699E146443090007D927 /* it */,
CEC3D38214911253006B1A91 /* hy */,
CE335AFD14B393EE0000AF1A /* ru */,
);
name = ResultWindow.xib;
sourceTree = SOURCE_ROOT;
@@ -727,6 +771,8 @@
CEC8F3201416A109004D28F3 /* zh_CN */,
CE74255F1460318D002F8E3E /* cs */,
CE7A69A6146443170007D927 /* it */,
CEC3D38B14911263006B1A91 /* hy */,
CE335B0514B393FB0000AF1A /* ru */,
);
name = Preferences.xib;
sourceTree = SOURCE_ROOT;
@@ -740,6 +786,8 @@
CEC8F3111416A0F0004D28F3 /* zh_CN */,
CE74254414603143002F8E3E /* cs */,
CE7A6992146442F80007D927 /* it */,
CEC3D38D14911274006B1A91 /* hy */,
CE335AF514B393DC0000AF1A /* ru */,
);
name = Localizable.strings;
sourceTree = "<group>";
@@ -753,6 +801,8 @@
CEC8F30B1416A0D2004D28F3 /* zh_CN */,
CE74253D14603120002F8E3E /* cs */,
CE7A69AA146443360007D927 /* it */,
CEC3D39114911288006B1A91 /* hy */,
CE335AF014B393C60000AF1A /* ru */,
);
name = FairwareReminder.xib;
path = ../../cocoalib/xib;
@@ -767,6 +817,8 @@
CECE37A51423EA980005187F /* zh_CN */,
CE74255514603152002F8E3E /* cs */,
CE7A699C146443090007D927 /* it */,
CEC3D38014911253006B1A91 /* hy */,
CE335AFB14B393EE0000AF1A /* ru */,
);
name = PrioritizeDialog.xib;
sourceTree = "<group>";
@@ -780,6 +832,8 @@
CEC8F3161416A0FC004D28F3 /* zh_CN */,
CE74255314603152002F8E3E /* cs */,
CE7A699A146443090007D927 /* it */,
CEC3D37E14911253006B1A91 /* hy */,
CE335AF914B393EE0000AF1A /* ru */,
);
name = ExtraFairwareReminder.xib;
sourceTree = SOURCE_ROOT;
@@ -793,6 +847,8 @@
CEC8F3091416A0D2004D28F3 /* zh_CN */,
CE74253B14603120002F8E3E /* cs */,
CE7A69A8146443360007D927 /* it */,
CEC3D38F14911288006B1A91 /* hy */,
CE335AEE14B393C60000AF1A /* ru */,
);
name = about.xib;
sourceTree = "<group>";
@@ -806,6 +862,8 @@
CEC8F30A1416A0D2004D28F3 /* zh_CN */,
CE74253C14603120002F8E3E /* cs */,
CE7A69A9146443360007D927 /* it */,
CEC3D39014911288006B1A91 /* hy */,
CE335AEF14B393C60000AF1A /* ru */,
);
name = ErrorReportWindow.xib;
sourceTree = "<group>";
@@ -816,9 +874,12 @@
C01FCF4C08A954540054247B /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEPLOYMENT_LOCATION = YES;
DEPLOYMENT_POSTPROCESSING = YES;
DSTROOT = /;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Applications";
INSTALL_PATH = "$(PROJECT_DIR)";
PRODUCT_NAME = "dupeGuru ME";
WRAPPER_EXTENSION = app;
};
@@ -851,8 +912,11 @@
CED596C6111AF56D00C0CF2B /* dev */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEPLOYMENT_LOCATION = YES;
DEPLOYMENT_POSTPROCESSING = YES;
DSTROOT = /;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(HOME)/Applications";
INSTALL_PATH = "$(PROJECT_DIR)";
PRODUCT_NAME = "dupeGuru ME";
WRAPPER_EXTENSION = app;
};

View File

@@ -22,6 +22,8 @@
<string>APPL</string>
<key>CFBundleSignature</key>
<string>hsft</string>
<key>CFBundleShortVersionString</key>
<string>{version}</string>
<key>CFBundleVersion</key>
<string>{version}</string>
<key>NSMainNibFile</key>

View File

@@ -28,11 +28,11 @@ http://www.hardcoded.net/licenses/bsd_license
{@"dupe_count", 80, 16, 0, YES, nil},
nil
};
[[self columns] initializeColumns:defs];
[[table columns] initializeColumns:defs];
NSTableColumn *c = [matches tableColumnWithIdentifier:@"marked"];
[[c dataCell] setButtonType:NSSwitchButton];
[[c dataCell] setControlSize:NSSmallControlSize];
c = [[self tableView] tableColumnWithIdentifier:@"size"];
c = [matches tableColumnWithIdentifier:@"size"];
[[c dataCell] setAlignment:NSRightTextAlignment];
[[table columns] restoreColumns];
}

View File

@@ -66,6 +66,7 @@
CECA899D09DB132E00A3D774 /* DetailsPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = CECA899B09DB132E00A3D774 /* DetailsPanel.m */; };
CECB2AC513D867AD0081E295 /* about.xib in Resources */ = {isa = PBXBuildFile; fileRef = CECB2AC113D867AD0081E295 /* about.xib */; };
CECB2AC613D867AD0081E295 /* ErrorReportWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = CECB2AC313D867AD0081E295 /* ErrorReportWindow.xib */; };
CEE6D562149113570087CDFC /* HSColumns.m in Sources */ = {isa = PBXBuildFile; fileRef = CEE6D561149113570087CDFC /* HSColumns.m */; };
CEEB135209C837A2004D2330 /* dupeguru.icns in Resources */ = {isa = PBXBuildFile; fileRef = CEEB135109C837A2004D2330 /* dupeguru.icns */; };
CEF12A7E124DFD400087B51D /* HSTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF12A7D124DFD400087B51D /* HSTableView.m */; };
CEF12A84124DFD620087B51D /* ResultTable.m in Sources */ = {isa = PBXBuildFile; fileRef = CEF12A83124DFD620087B51D /* ResultTable.m */; };
@@ -135,6 +136,18 @@
CE381C9A09914ADF003581CE /* ResultWindow.m */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.objc; path = ResultWindow.m; sourceTree = SOURCE_ROOT; };
CE381C9B09914ADF003581CE /* ResultWindow.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ResultWindow.h; sourceTree = SOURCE_ROOT; };
CE381CF509915304003581CE /* dg_cocoa.plugin */ = {isa = PBXFileReference; lastKnownFileType = folder; path = dg_cocoa.plugin; sourceTree = SOURCE_ROOT; };
CE520C5914B394B000AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/about.xib; sourceTree = "<group>"; };
CE520C5A14B394B000AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CE520C5B14B394B000AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CE520C6014B394C200AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CE520C6114B394C200AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/Preferences.xib; sourceTree = "<group>"; };
CE520C6414B394DB00AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CE520C6514B394DB00AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ExtraFairwareReminder.xib; sourceTree = "<group>"; };
CE520C6614B394DB00AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/MainMenu.xib; sourceTree = "<group>"; };
CE520C6714B394DB00AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CE520C6814B394DB00AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CE520C6914B394DB00AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CE520C7014B394E400AE80D6 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ../base/ru.lproj/Localizable.strings; sourceTree = "<group>"; };
CE60180612DF3EA900236FDC /* HSRecentFiles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HSRecentFiles.h; path = ../../cocoalib/HSRecentFiles.h; sourceTree = SOURCE_ROOT; };
CE60180712DF3EA900236FDC /* HSRecentFiles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = HSRecentFiles.m; path = ../../cocoalib/HSRecentFiles.m; sourceTree = SOURCE_ROOT; };
CE6044EA0FE6796200B71262 /* DetailsPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetailsPanel.h; path = ../base/DetailsPanel.h; sourceTree = SOURCE_ROOT; };
@@ -248,6 +261,21 @@
CECB2ACC13D867C00081E295 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../de.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CECB2ACD13D867C00081E295 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../de.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CEE660B7132253910036DB04 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = ../base/fr.lproj/ExtraFairwareReminder.xib; sourceTree = SOURCE_ROOT; };
CEE6D5461491130D0087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CEE6D5471491130D0087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ExtraFairwareReminder.xib; sourceTree = "<group>"; };
CEE6D5481491130D0087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/MainMenu.xib; sourceTree = "<group>"; };
CEE6D5491491130D0087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CEE6D54A1491130D0087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CEE6D54B1491130D0087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CEE6D553149113190087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = hy.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CEE6D554149113190087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = hy.lproj/Preferences.xib; sourceTree = "<group>"; };
CEE6D557149113250087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = ../base/hy.lproj/Localizable.strings; sourceTree = "<group>"; };
CEE6D559149113320087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/about.xib; sourceTree = "<group>"; };
CEE6D55A149113320087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CEE6D55B149113320087CDFC /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CEE6D55F1491134E0087CDFC /* PyColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PyColumns.h; sourceTree = "<group>"; };
CEE6D560149113570087CDFC /* HSColumns.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HSColumns.h; sourceTree = "<group>"; };
CEE6D561149113570087CDFC /* HSColumns.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HSColumns.m; sourceTree = "<group>"; };
CEEB135109C837A2004D2330 /* dupeguru.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = dupeguru.icns; sourceTree = "<group>"; };
CEEE156E1460325B00783E91 /* cs */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = cs; path = ../cs.lproj/about.xib; sourceTree = "<group>"; };
CEEE156F1460325B00783E91 /* cs */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = cs; path = ../cs.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
@@ -474,6 +502,8 @@
CE9EA7421122C96C008CD2BC /* controllers */ = {
isa = PBXGroup;
children = (
CEE6D560149113570087CDFC /* HSColumns.h */,
CEE6D561149113570087CDFC /* HSColumns.m */,
CE9EA7431122C96C008CD2BC /* HSGUIController.h */,
CE9EA7441122C96C008CD2BC /* HSGUIController.m */,
CE9EA7451122C96C008CD2BC /* HSOutline.h */,
@@ -494,6 +524,7 @@
CE9EA74B1122C96C008CD2BC /* proxies */ = {
isa = PBXGroup;
children = (
CEE6D55F1491134E0087CDFC /* PyColumns.h */,
CE9EA74C1122C96C008CD2BC /* PyGUI.h */,
CE9EA74D1122C96C008CD2BC /* PyOutline.h */,
CE0C2AAA117700E700BC749F /* PyTable.h */,
@@ -572,6 +603,8 @@
zh_CN,
cs,
it,
hy,
ru,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */;
projectDirPath = "";
@@ -654,6 +687,7 @@
CE7D24A51423B106002E2297 /* PrioritizeDialog.m in Sources */,
CE7D24A61423B106002E2297 /* PrioritizeList.m in Sources */,
CEA8F33A142BC9D400A6DFAC /* HSQuicklook.m in Sources */,
CEE6D562149113570087CDFC /* HSColumns.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -669,6 +703,8 @@
CE653CFA1416A0260058A022 /* zh_CN */,
CEEE15841460328400783E91 /* cs */,
CE7A69B9146443AD0007D927 /* it */,
CEE6D5461491130D0087CDFC /* hy */,
CE520C6414B394DB00AE80D6 /* ru */,
);
name = DirectoryPanel.xib;
sourceTree = SOURCE_ROOT;
@@ -682,6 +718,8 @@
CE653CFC1416A0260058A022 /* zh_CN */,
CEEE15861460328400783E91 /* cs */,
CE7A69BB146443AD0007D927 /* it */,
CEE6D5481491130D0087CDFC /* hy */,
CE520C6614B394DB00AE80D6 /* ru */,
);
name = MainMenu.xib;
sourceTree = SOURCE_ROOT;
@@ -695,6 +733,8 @@
CE653CFD1416A0260058A022 /* zh_CN */,
CEEE15881460328400783E91 /* cs */,
CE7A69BD146443AD0007D927 /* it */,
CEE6D54A1491130D0087CDFC /* hy */,
CE520C6814B394DB00AE80D6 /* ru */,
);
name = ProblemDialog.xib;
sourceTree = SOURCE_ROOT;
@@ -708,6 +748,8 @@
CE653CFE1416A0260058A022 /* zh_CN */,
CEEE15891460328400783E91 /* cs */,
CE7A69BE146443AD0007D927 /* it */,
CEE6D54B1491130D0087CDFC /* hy */,
CE520C6914B394DB00AE80D6 /* ru */,
);
name = ResultWindow.xib;
sourceTree = SOURCE_ROOT;
@@ -721,6 +763,8 @@
CE653CF61416A0140058A022 /* zh_CN */,
CEEE15901460329000783E91 /* cs */,
CE7A69C5146443B90007D927 /* it */,
CEE6D553149113190087CDFC /* hy */,
CE520C6014B394C200AE80D6 /* ru */,
);
name = DetailsPanel.xib;
sourceTree = SOURCE_ROOT;
@@ -734,6 +778,8 @@
CE653CF71416A0140058A022 /* zh_CN */,
CEEE15911460329000783E91 /* cs */,
CE7A69C6146443B90007D927 /* it */,
CEE6D554149113190087CDFC /* hy */,
CE520C6114B394C200AE80D6 /* ru */,
);
name = Preferences.xib;
sourceTree = SOURCE_ROOT;
@@ -747,6 +793,8 @@
CE653CF314169F2C0058A022 /* zh_CN */,
CEEE15771460327300783E91 /* cs */,
CE7A69B3146443A00007D927 /* it */,
CEE6D557149113250087CDFC /* hy */,
CE520C7014B394E400AE80D6 /* ru */,
);
name = Localizable.strings;
sourceTree = SOURCE_ROOT;
@@ -760,6 +808,8 @@
CE653CED14169F140058A022 /* zh_CN */,
CEEE15701460325B00783E91 /* cs */,
CE7A69CB146443CB0007D927 /* it */,
CEE6D55B149113320087CDFC /* hy */,
CE520C5B14B394B000AE80D6 /* ru */,
);
name = FairwareReminder.xib;
path = ../../cocoalib/xib;
@@ -774,6 +824,8 @@
CE653CFB1416A0260058A022 /* zh_CN */,
CEEE15851460328400783E91 /* cs */,
CE7A69BA146443AD0007D927 /* it */,
CEE6D5471491130D0087CDFC /* hy */,
CE520C6514B394DB00AE80D6 /* ru */,
);
name = ExtraFairwareReminder.xib;
sourceTree = SOURCE_ROOT;
@@ -787,6 +839,8 @@
CE21AFB81423EA6E00DE35BF /* zh_CN */,
CEEE15871460328400783E91 /* cs */,
CE7A69BC146443AD0007D927 /* it */,
CEE6D5491491130D0087CDFC /* hy */,
CE520C6714B394DB00AE80D6 /* ru */,
);
name = PrioritizeDialog.xib;
sourceTree = "<group>";
@@ -800,6 +854,8 @@
CE653CEB14169F140058A022 /* zh_CN */,
CEEE156E1460325B00783E91 /* cs */,
CE7A69C9146443CB0007D927 /* it */,
CEE6D559149113320087CDFC /* hy */,
CE520C5914B394B000AE80D6 /* ru */,
);
name = about.xib;
sourceTree = "<group>";
@@ -813,6 +869,8 @@
CE653CEC14169F140058A022 /* zh_CN */,
CEEE156F1460325B00783E91 /* cs */,
CE7A69CA146443CB0007D927 /* it */,
CEE6D55A149113320087CDFC /* hy */,
CE520C5A14B394B000AE80D6 /* ru */,
);
name = ErrorReportWindow.xib;
sourceTree = "<group>";
@@ -823,8 +881,12 @@
C01FCF4C08A954540054247B /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEPLOYMENT_LOCATION = YES;
DEPLOYMENT_POSTPROCESSING = YES;
DSTROOT = /;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(PROJECT_DIR)";
PRODUCT_NAME = "dupeGuru PE";
WRAPPER_EXTENSION = app;
};
@@ -857,7 +919,11 @@
CEE00FF1111AF37400BC1A77 /* dev */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEPLOYMENT_LOCATION = YES;
DEPLOYMENT_POSTPROCESSING = YES;
DSTROOT = /;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(PROJECT_DIR)";
PRODUCT_NAME = "dupeGuru PE";
WRAPPER_EXTENSION = app;
};

View File

@@ -22,6 +22,8 @@
<string>APPL</string>
<key>CFBundleSignature</key>
<string>hsft</string>
<key>CFBundleShortVersionString</key>
<string>{version}</string>
<key>CFBundleVersion</key>
<string>{version}</string>
<key>NSMainNibFile</key>

View File

@@ -7,7 +7,7 @@
from hscommon.trans import install_gettext_trans_under_cocoa
install_gettext_trans_under_cocoa()
from hscommon.cocoa import signature
from cocoa.inter import signature
from core.scanner import ScanType

View File

@@ -88,6 +88,18 @@
29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = SOURCE_ROOT; };
8D1107320486CEB800E47090 /* dupeGuru.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = dupeGuru.app; sourceTree = BUILT_PRODUCTS_DIR; };
CE00BBBD14910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CE00BBBE14910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CE00BBBF14910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ExtraFairwareReminder.xib; sourceTree = "<group>"; };
CE00BBC014910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/MainMenu.xib; sourceTree = "<group>"; };
CE00BBC114910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CE00BBC214910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CE00BBC314910C5E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../base/hy.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CE00BBCC14910C72006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = hy.lproj/Preferences.xib; sourceTree = "<group>"; };
CE00BBCE14910C8E006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hy; path = ../base/hy.lproj/Localizable.strings; sourceTree = "<group>"; };
CE00BBD014910CA3006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/about.xib; sourceTree = "<group>"; };
CE00BBD114910CA3006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CE00BBD214910CA3006A717C /* hy */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = hy; path = ../hy.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CE05341312E5DC260029EF25 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = ../../cocoalib/fr.lproj/FairwareReminder.xib; sourceTree = SOURCE_ROOT; };
CE0564A814169D6C00D3D907 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = zh_CN; path = ../zh_CN.lproj/about.xib; sourceTree = "<group>"; };
CE0564A914169D6C00D3D907 /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = zh_CN; path = ../zh_CN.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
@@ -217,6 +229,18 @@
CECFFF2013CDF8D0003A4518 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/ProblemDialog.xib; sourceTree = SOURCE_ROOT; };
CECFFF2113CDF8D0003A4518 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = ../base/de.lproj/ResultWindow.xib; sourceTree = SOURCE_ROOT; };
CECFFF2413CDF8E5003A4518 /* de */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = de; path = de.lproj/Preferences.xib; sourceTree = "<group>"; };
CED638D514B38CC800B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/about.xib; sourceTree = "<group>"; };
CED638D614B38CC800B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/ErrorReportWindow.xib; sourceTree = "<group>"; };
CED638D714B38CC800B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../ru.lproj/FairwareReminder.xib; sourceTree = "<group>"; };
CED638DC14B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CED638DD14B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
CED638DE14B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ExtraFairwareReminder.xib; sourceTree = "<group>"; };
CED638DF14B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/MainMenu.xib; sourceTree = "<group>"; };
CED638E014B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/PrioritizeDialog.xib; sourceTree = "<group>"; };
CED638E114B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ProblemDialog.xib; sourceTree = "<group>"; };
CED638E214B38CEC00B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ../base/ru.lproj/ResultWindow.xib; sourceTree = "<group>"; };
CED638EA14B38CF800B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = ru; path = ru.lproj/Preferences.xib; sourceTree = "<group>"; };
CED638EC14B38D0900B88D00 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ../base/ru.lproj/Localizable.strings; sourceTree = "<group>"; };
CED64CEB145EF06000572B00 /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = ../base/cs.lproj/Localizable.strings; sourceTree = "<group>"; };
CED64CF8145EF07700572B00 /* cs */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = cs; path = ../base/cs.lproj/DetailsPanel.xib; sourceTree = "<group>"; };
CED64CF9145EF07700572B00 /* cs */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = cs; path = ../base/cs.lproj/DirectoryPanel.xib; sourceTree = "<group>"; };
@@ -556,6 +580,8 @@
zh_CN,
cs,
it,
hy,
ru,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* dupeguru */;
projectDirPath = "";
@@ -650,6 +676,8 @@
CE0564A814169D6C00D3D907 /* zh_CN */,
CE112F5F145EF28D009C9E3E /* cs */,
CE7A6985146442340007D927 /* it */,
CE00BBD014910CA3006A717C /* hy */,
CED638D514B38CC800B88D00 /* ru */,
);
name = about.xib;
sourceTree = "<group>";
@@ -663,6 +691,8 @@
CE0564A914169D6C00D3D907 /* zh_CN */,
CE112F60145EF28D009C9E3E /* cs */,
CE7A6986146442340007D927 /* it */,
CE00BBD114910CA3006A717C /* hy */,
CED638D614B38CC800B88D00 /* ru */,
);
name = ErrorReportWindow.xib;
sourceTree = "<group>";
@@ -676,6 +706,8 @@
CE0564B514169DB100D3D907 /* zh_CN */,
CED64CFA145EF07700572B00 /* cs */,
CE7A6979146442160007D927 /* it */,
CE00BBBF14910C5E006A717C /* hy */,
CED638DE14B38CEC00B88D00 /* ru */,
);
name = ExtraFairwareReminder.xib;
sourceTree = SOURCE_ROOT;
@@ -689,6 +721,8 @@
CE0564AA14169D6C00D3D907 /* zh_CN */,
CE112F61145EF28D009C9E3E /* cs */,
CE7A6987146442340007D927 /* it */,
CE00BBD214910CA3006A717C /* hy */,
CED638D714B38CC800B88D00 /* ru */,
);
name = FairwareReminder.xib;
path = ../../cocoalib/xib;
@@ -703,6 +737,8 @@
CE0564B314169DB100D3D907 /* zh_CN */,
CED64CF8145EF07700572B00 /* cs */,
CE7A6977146442160007D927 /* it */,
CE00BBBD14910C5E006A717C /* hy */,
CED638DC14B38CEC00B88D00 /* ru */,
);
name = DetailsPanel.xib;
sourceTree = SOURCE_ROOT;
@@ -716,6 +752,8 @@
CE0564B414169DB100D3D907 /* zh_CN */,
CED64CF9145EF07700572B00 /* cs */,
CE7A6978146442160007D927 /* it */,
CE00BBBE14910C5E006A717C /* hy */,
CED638DD14B38CEC00B88D00 /* ru */,
);
name = DirectoryPanel.xib;
sourceTree = SOURCE_ROOT;
@@ -729,6 +767,8 @@
CE0564B614169DB100D3D907 /* zh_CN */,
CED64CFB145EF07700572B00 /* cs */,
CE7A697A146442160007D927 /* it */,
CE00BBC014910C5E006A717C /* hy */,
CED638DF14B38CEC00B88D00 /* ru */,
);
name = MainMenu.xib;
sourceTree = SOURCE_ROOT;
@@ -742,6 +782,8 @@
CE0564B714169DB100D3D907 /* zh_CN */,
CED64CFD145EF07700572B00 /* cs */,
CE7A697C146442160007D927 /* it */,
CE00BBC214910C5E006A717C /* hy */,
CED638E114B38CEC00B88D00 /* ru */,
);
name = ProblemDialog.xib;
sourceTree = SOURCE_ROOT;
@@ -755,6 +797,8 @@
CE0564B814169DB100D3D907 /* zh_CN */,
CED64CFE145EF07700572B00 /* cs */,
CE7A697D146442160007D927 /* it */,
CE00BBC314910C5E006A717C /* hy */,
CED638E214B38CEC00B88D00 /* ru */,
);
name = ResultWindow.xib;
sourceTree = SOURCE_ROOT;
@@ -768,6 +812,8 @@
CE0564BF14169DDC00D3D907 /* zh_CN */,
CED64D06145EF16300572B00 /* cs */,
CE7A698B1464425A0007D927 /* it */,
CE00BBCC14910C72006A717C /* hy */,
CED638EA14B38CF800B88D00 /* ru */,
);
name = Preferences.xib;
sourceTree = SOURCE_ROOT;
@@ -781,6 +827,8 @@
CE0564B014169D9E00D3D907 /* zh_CN */,
CED64CEB145EF06000572B00 /* cs */,
CE7A6971146442010007D927 /* it */,
CE00BBCE14910C8E006A717C /* hy */,
CED638EC14B38D0900B88D00 /* ru */,
);
name = Localizable.strings;
sourceTree = SOURCE_ROOT;
@@ -794,6 +842,8 @@
CEF27A9E1423EAD90048ADFA /* zh_CN */,
CED64CFC145EF07700572B00 /* cs */,
CE7A697B146442160007D927 /* it */,
CE00BBC114910C5E006A717C /* hy */,
CED638E014B38CEC00B88D00 /* ru */,
);
name = PrioritizeDialog.xib;
sourceTree = "<group>";
@@ -804,8 +854,12 @@
C01FCF4C08A954540054247B /* release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEPLOYMENT_LOCATION = YES;
DEPLOYMENT_POSTPROCESSING = YES;
DSTROOT = /;
GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(PROJECT_DIR)";
PRODUCT_NAME = dupeGuru;
WRAPPER_EXTENSION = app;
};
@@ -838,7 +892,11 @@
CE85E850111AF63D00187B0D /* dev */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEPLOYMENT_LOCATION = YES;
DEPLOYMENT_POSTPROCESSING = YES;
DSTROOT = /;
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = "$(PROJECT_DIR)";
PRODUCT_NAME = dupeGuru;
WRAPPER_EXTENSION = app;
};

View File

@@ -1,2 +1,2 @@
__version__ = '6.1.1'
__version__ = '6.2.0'
__appname__ = 'dupeGuru Music Edition'

View File

@@ -1,2 +1,2 @@
__version__ = '2.3.0'
__version__ = '2.4.0'
__appname__ = 'dupeGuru Picture Edition'

View File

@@ -1,2 +1,2 @@
__version__ = '3.3.0'
__version__ = '3.3.1'
__appname__ = 'dupeGuru'

View File

@@ -1,3 +1,12 @@
=== 6.2.0 (2011-12-07)
* Added multiple-selection in folder selection dialog for a more efficient folder removal. (#179)
* Fixed a crash in the prioritize dialog. (#178)
* Fixed a bug where mass marking with a filter would mark more than filtered duplicates. (#181)
* Fixed random hard crashes. [Mac OS X] (#183 #184)
* Added Czech localization by Aleš Nehyba.
* Added Italian localization by Paolo Rossi.
=== 6.1.1 (2011-10-03)
* Fixed a couple of broken action bindings from v6.1.0.

View File

@@ -1,3 +1,14 @@
=== 2.4.0 (2012-01-06)
* Added multiple-selection in folder selection dialog for a more efficient folder removal. (#179)
* Fixed a crash in the prioritize dialog. (#178)
* Fixed a bug where mass marking with a filter would mark more than filtered duplicates. (#181)
* Fixed random hard crashes. [Mac OS X] (#183 #184)
* Added Czech localization by Aleš Nehyba.
* Added Italian localization by Paolo Rossi.
* Added Armenian localization by Hrant Ohanyan.
* Added Russian localization by Igor Pavlov.
=== 2.3.0 (2011-10-04)
* Added duplicate re-prioritization dialog. (#138)

View File

@@ -1,3 +1,7 @@
=== 3.3.1 (2011-12-02)
* Fixed a couple of nasty crashes.
=== 3.3.0 (2011-11-30)
* Added multiple-selection in folder selection dialog for a more efficient folder removal. (#179)

View File

@@ -61,7 +61,7 @@ rst_epilog = u"""
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
language = 'de'
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:

View File

@@ -16,6 +16,10 @@ Below is the list of people who contributed, directly or indirectly to dupeGuru.
| **Paolo Rossi, Italian localization**
| **Hrant Ohanyan, Armenian localization**
| **Igor Pavlov, Russian localization**
| **Python, Programming language** (`Website <http://www.python.org>`__)
| The bestest of the bests

View File

@@ -3,15 +3,15 @@
.. only:: edition_se
This document is also available in `french <http://www.hardcoded.net/dupeguru/help/fr/>`__ and `german <http://www.hardcoded.net/dupeguru/help/de/>`__.
This document is also available in `french <http://www.hardcoded.net/dupeguru/help/fr/>`__, `german <http://www.hardcoded.net/dupeguru/help/de/>`__, `armenian <http://www.hardcoded.net/dupeguru/help/hy/>`__ and `russian <http://www.hardcoded.net/dupeguru/help/ru/>`__.
.. only:: edition_me
This document is also available in `french <http://www.hardcoded.net/dupeguru_me/help/fr/>`__ and `german <http://www.hardcoded.net/dupeguru_me/help/de/>`__.
This document is also available in `french <http://www.hardcoded.net/dupeguru_me/help/fr/>`__, `german <http://www.hardcoded.net/dupeguru_me/help/de/>`__, `armenian <http://www.hardcoded.net/dupeguru_me/help/hy/>`__ and `russian <http://www.hardcoded.net/dupeguru_me/help/ru/>`__.
.. only:: edition_pe
This document is also available in `french <http://www.hardcoded.net/dupeguru_pe/help/fr/>`__ and `german <http://www.hardcoded.net/dupeguru_pe/help/de/>`__.
This document is also available in `french <http://www.hardcoded.net/dupeguru_pe/help/fr/>`__, `german <http://www.hardcoded.net/dupeguru_pe/help/de/>`__, `armenian <http://www.hardcoded.net/dupeguru_pe/help/hy/>`__ and `russian <http://www.hardcoded.net/dupeguru_pe/help/ru/>`__.
.. only:: edition_se or edition_me

View File

@@ -61,7 +61,7 @@ rst_epilog = u"""
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
language = 'fr'
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:

View File

@@ -15,6 +15,10 @@ Voici la liste des contributeurs de dupeGuru. Merci!
| **Paolo Rossi, localisation italienne**
| **Hrant Ohanyan, localisation arménienne**
| **Igor Pavlov, localisation russe**
| **Python, Langage de programmation** (`Website <http://www.python.org>`__)
| Le meilleur des meilleurs

View File

@@ -3,15 +3,15 @@ Aide |appname|
.. only:: edition_se
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru/help/en/>`__ et en `allemand <http://www.hardcoded.net/dupeguru/help/de/>`__.
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru/help/en/>`__, en `allemand <http://www.hardcoded.net/dupeguru/help/de/>`__ et en `arménien <http://www.hardcoded.net/dupeguru/help/hy/>`__.
.. only:: edition_me
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru_me/help/en/>`__ et en `allemand <http://www.hardcoded.net/dupeguru_me/help/de/>`__.
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru_me/help/en/>`__, en `allemand <http://www.hardcoded.net/dupeguru_me/help/de/>`__ et en `arménien <http://www.hardcoded.net/dupeguru_me/help/hy/>`__.
.. only:: edition_pe
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru_pe/help/en/>`__ et en `allemand <http://www.hardcoded.net/dupeguru_pe/help/de/>`__.
Ce document est aussi disponible en `anglais <http://www.hardcoded.net/dupeguru_pe/help/en/>`__, en `allemand <http://www.hardcoded.net/dupeguru_pe/help/de/>`__ et en `arménien <http://www.hardcoded.net/dupeguru_pe/help/hy/>`__.
.. only:: edition_se or edition_me

6
help/hy/changelog.tmpl Executable file
View File

@@ -0,0 +1,6 @@
:tocdepth: 1
Changelog
=========
{changelog}

223
help/hy/conf.tmpl Executable file
View File

@@ -0,0 +1,223 @@
# -*- coding: utf-8 -*-
#
# dupeGuru documentation build configuration file, created by
# sphinx-quickstart on Wed Jan 12 13:20:15 2011.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = []
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'{appname}'
copyright = u'2011, Hardcoded Software'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '{version}'
# The full version, including alpha/beta/rc tags.
release = version
edition = '{edition}'
tags.add('edition_{0}'.format(edition))
rst_epilog = u"""
.. |appname| replace:: {appname}
.. _homepage: {homepage}
"""
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
html_domain_indices = False
# If false, no index is generated.
html_use_index = False
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
html_show_sourcelink = False
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'dupeGurudoc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'dupeGuru.tex', u'dupeGuru Documentation',
u'Hardcoded Software', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'dupeguru', u'dupeGuru Documentation',
[u'Hardcoded Software'], 1)
]

36
help/hy/credits.rst Executable file
View File

@@ -0,0 +1,36 @@
Մասնակիցներ
===========
Ահա այն մարդկանց ցանկը, ովքեր ուղղակիորեն և անուղղակիորեն մասնակցել են dupeGuru-ի զարգացմանը:
| **Virgil Dupras, Զարգացնող** (`Վեբ կայքը <http://www.hardcoded.net>`__)
| **Jérôme Cantin, Պատկերակների հեղինակ**
| dupeGuru-ի պատկերակների հեղինակը
| **Gregor Tätzner, Գերմաներեն թարգմանիչը**
| **Eric Dee, Չինարեն թարգմանիչը**
| **Aleš Nehyba, Չեխերեն թարգմանիչը**
| **Paolo Rossi, Իտալերեն թարգմանիչը**
| **Hrant Ohanyan, Հայերեն թարգմանիչը**
| **Igor Pavlov, Russian localization**
| **Python, Ծրագրավորման լեզուն** (`Վեբ կայքը <http://www.python.org>`__)
| Լավագույներից լավագույնը
| **PyObjC, Python-ից Cocoa կամուրջ** (`Վեբ կայքը <http://pyobjc.sourceforge.net>`__)
| Օգտագործվում է Mac OS X տարբերակի համար
| **PyQt, Python-ից Qt կամուրջ** (`Վեբ կայքը <http://www.riverbankcomputing.co.uk>`__)
| Օգտագործվում է Windows-ի տարբերակի
| **Sparkle, Ինքնաթարմացվող շտեմարան** (`Վեբ կայքը <http://andymatuschak.org/pages/sparkle>`__)
| Օգտագործվում է Mac OS X տարբերակի համար
| **Դուք, dupeGuru-ի օգտվողը**
| Ողջույն!

113
help/hy/faq.rst Executable file
View File

@@ -0,0 +1,113 @@
Հաճախ Տրվող Հարցեր
==========================
.. topic:: Ի՞նչ է |appname|-ը:
.. only:: edition_se
dupeGuru-ն ծրագիր է, որ գտնում է համակարգչի ֆայլերի կրկնօրինակները: Այն կարող է ստուգել ըստ ֆայլի անվան կամ բովանդակության: Ֆայլի անվամբ փնտրման հնարավորությունը ոչ ճշգրիտ համընկնումներ է տալիս երբեմն: Շատ ժամանակ անունները նույնն են, բայց ֆայլերը տարբեր են:
.. only:: edition_me
dupeGuru Music Edition-ը ծրագիր է, որ գտնում է համակարգչի երաժշտական ֆայլերի կրկնօրինակները: Այն կարող է հիմնվել ֆայլի անունները ստուգելու վրա՝ ըստ կցապիտակների և բովանդակության: Ֆայլի անունների և կցապիտակների ստուգումը ոչ ճշգրիտ ալգորիթմ է, քանզի այն կարող է գտնել համընկնումներ, որոնք իրականում նույնը չեն:
.. only:: edition_pe
dupeGuru Picture Edition (PE՝ կարճ)-ը ծրագիր է, որ գտնում է համակարգչի նկարների ֆայլերի կրկնօրինակները: Այն կարող է գտնել ոչ միայն ճշգրիտ համընկնումները, այլև այն կարող է գտնել տարբեր որակի և տեսակի նկարների (PNG, JPG, GIF և այլն...) համընկնումներ:
.. topic:: Ի՞նչն է այս ծրագիրը առանձնացնում մյուս նմանատիպ ծրագրերից:
Ստուգելու համակարգը չափազանց նուրբ է: Կարող եք ինքներդ հարմարեցնել այն՝ ստանալու համար այն արդյունքը, ինչը որ Ձեզ պետք է: Կարող եք լրացուցիչ կարդալ այս մասին dupeGuru-ի կարգավորման ընտրանքներում՝ :doc:`Կարգավորումների էջում <preferences>`:
.. topic:: Ո՞րքանով է անվտանգ օգտագործելու dupeGuru-ը:
Շատ անվտանգ է: dupeGuru-ը նախագծվել է՝ համոզված լինելու համար, որ Դուք չջնջեք այն ֆայլերը, որոնք չպետք է ջնջեք: Նախ, կա հղմամբ համակարգային թղթապանակ, որը հնարավորություն է տալիս Ձեզ որոշելու թղթապանակներ, որտեղ Դուք բացարձակ **չեք** ցանկանում, որ dupeGuru-ն հնարավորություն տա Ձեզ ջնջելու ֆայլերը այստեղից, և ապա կա խմբի հղմամբ համակարգային համակարգ, որը համոզմունք է ստեղծում, որ Դուք **միշտ** պետք է պահեք գոնե մեկ անդամ կրկնօրինակվող խմբի:
.. topic:: Ո՞րոն եք dupeGuru-ի լիցենզիայի սահմանափակումները:
Փորձնական եղանակում, Դուք կարող եք միայն կատարել գործողություններ 10 կրկնօրինակների հետ միաժամանակ: Ծրագրի
`Անվճար տարբերակում <http://open.hardcoded.net/about/>`_ mode, այնուհանդերձ չկան էական սահմանափակումներ:
.. topic::Ջնջելու համար նշելու դաշտի պատուհանը ակտիվ չէ: Ի՞նչ անել:
Չեք կարող նշել հղումը (Առաջին ֆայլը) կրկնօրինակվող խմբի: Այնուհանդերձ, ինչ կարող եք Դուք անել առաջ մղելու համար կրկնօրինակվող ֆայլը հղմանը: Այսպիսով, եթե ֆայլը ցանկանում եք նշել որպես հղում, ընտրեք կրկնօրինակվող ֆայլը խմբից, որը ցանկանում եք տանել հղման մեջ, և սեղմեք **Գործողություններ-->Դարձնել ընտրվածը հղում**: Եթե հղվող ֆայլը հղման թղթապանակից է (ֆայլի անունը գրված է կապույտ տառերով), Դուք չեք կարող ջնջել այն հղման դիրքից:
.. topic:: Ես ունեմ թղթապանակ, որտեղից ես իրապես չեմ ցանկանում ջնջել ֆայլեր:
Եթե Դուք ցանկանում եք համոզված լինել, որ dupeGuru-ն երբեք չի ջնջի ֆայլ կոնկրետ թղթապանակից, համոզված եղեք, որ տվել եք կարգը **Հղման** :doc:`folders`:
.. topic:: Ի՞նչ է սա '(X վնասված)'՝ նշված դրության տողում:
Որոշ դեպքերում, որոշ համընկնումներ ներառված չեն վերջնական արդյունքում երկրորդական պատճառներով: Եկեք նայենք կոնկրետ օրինակի վրա: Մենք ունենք 3 ֆայլ. A, B և C: Մենք ստուգում ենք այն՝ օգտագործելով ֆիլտրի ցածր մակարդակով: Ստուգիչը արդեն որոշել է, որ A համընկնումները B-ի, A-ի համընկնումները C-ին, բայց B-ն **չի** համընկնում C-ին: Այստեղ dupeGuru-ն ունի մի շարք խնդիրներ: Այն չի կարող ստեղծել կրկնօրինակվող խումբ A, B և C իրենում, որովհետև ոչ բոլոր ֆայլերն են խմբում համընկնում միմյանց: Այն կարող է ստեղծել 2 խումբ. մեկ A-B խումբ և ապա մեկ A-C խումբ, բայց այն չի լինի՝ անվտանգության նկատառումներից ելնելով: Եկեք մտածենք սրա մասին. Եթե B-ն չի համընկնում C-ին, հնարավոր է դա նշանակում է, որ անգամ B, C կամ երկուսն էլ իրականում կրկնօրինակներ չեն: Եթե այնտեղ լինեն 2 խմբեր (A-B և A-C), ապա Դուք պետք է ջնջեք B-ն և C-ն: Եթե դրանցից մեկը կրկնօրինակ չէ, ապա դա այն չէ, ինչը որ Ձեզ պետք է, այնպես չէ՞: Այսպիսով, ինչ dupeGuru չի մի դեպքում նման սրան՝ բացառելով A-C համընկնումը (և ավելացնում է տեղեկացում դրության տողում): Այսպիսով, եթե Դուք ջնջեք B-ն և վերսկսեք ստուգումը, ապա կունենք A-C համընկնում հաջորդ արդյունքներում:
.. topic:: Ես ցանկանում եմ նշել բոլոր ֆայլերը որոշված թղթապանակից: Ի՞նչ կարող եմ ես անել:
Միացնել :doc:`Միայն Սխալները <results>` եղանակը և սեղմեք թղթապանակի սյանը՝ դասավորելու համար կրկնօրինակները ըստ թղթապանակների: Հետագայում հեշտ կլինի ընտրելու բոլոր կրկնօրինակները նույն թղթապանակից և ապա սեղմեք Space՝ ընտրելու ահմար բոլոր կրկնօրինակները:
.. only:: edition_se or edition_pe
.. topic:: Ես ցանկանում եմ հեռացնել բոլոր ֆայլերը, որոնք 300 ԿԲ-ից ավելի են հղվող ֆայլից: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Չափը" սյանը՝ դասավորելու համար արդյունները ըստ չափի;
* Ընտրեք բոլոր կրկնօրինակները՝ -300-ից ցածր:
* Սեղմեք **Ջնջել ընտրվածը Արդյունքներից**:
* Ընտրեք բոլոր կրկնօրինակերը, որոնք մեծ են 300-ից:
* Սեղմեք **Ջնջել ընտրվածները Արդյունքներից**:
.. topic:: Ես ցանկանում եմ դարձնել վերջին փոփոխված ֆայլերը հղման ֆայլեր: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Ըստ փոփոխության" սյանը՝ արդյունքները ըստ փոփոխման դասավորելու համար:
* Սեղմեք "Ըստ փոփոխության" սյանը՝ կրկնելու համար դասավորման կարգը:
* Ընտրել բոլոր կրկնօրինակները 0-ից բարձր:
* Սեղմեք **Դարձնել ընտրվածը հղում**:
.. topic:: Ես ցանկանում եմ նշել բոլոր այն կրկնօրինակները, որոնք պարունակում են "պատճենել" բառը: Ինչպե՞ս դա անել:
* **Windows**. Սեղմեք **Գործողություններ --> կիրառել ֆիլտրը**, ապա նշեք "պատճենել", հետո սեղմեք ԼԱՎ:
* **Mac OS X**. Նշեք "պատճենել" "Ֆիլտրում" դաշտում՝ գործիքների վահանակում:
* Սեղմեք **Նշել --> Նշել բոլորը**:
.. only:: edition_me
.. topic:: Ես ցանկանում եմ հեռացնել բոլոր երգերը, որոնք 3 վայրկյանից հեռու են իրենց հղման ֆայլից: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Ժամանակը" սյանը՝ դասավորելու համար արդյունքները ըստ ժամանակի:
* Ընտրեք բոլոր կրկնօրինակները՝ -00:03-ից ցածր:
* Սեղմեք **Ջնջել ընտրվածը արդյունքներից**:
* Ընտրել բոլոր կրկնօրինակները 00:03-ից բարձր:
* Սեղմեք **Ջնջել ընտրվածը արդյունքներից**:
.. topic:: Ես ցանկանում եմ դարձնել իմ բարձրագույն բիթրեյթ ունեցող երգերը հղման ֆայլեր: Ի՞նչ կարող եմ ես անել:
* Միացնել :doc:`Միայն Սխալները <results>` եղանակում:
* Միացնել **Դելտա նշանակությունները** եղանակը:
* Սեղմեք "Բիթրեյթը" սյանը՝ դասավորելու համար արդյունքները ըստ բիթրեյթի:
* Սեղմեք "Բիթրեյթը" սյանը՝ կրկնելու համար դասավորման կարգը:
* Ընտրել բոլոր կրկնօրինակները 0-ց բարձր;
* Սեղմեք **Դարձնել ընտրվածը հղում**:
.. topic:: Ես չեմ ցանկանում [live] և [remix] տարբերակները իմ երգերի՝ հաշված որպես կրկնօրինակ: Ինչպե՞ս դա անել:
Եթե Ձեր համեմատության սահմանը բավականին ցածր է, հնարավոր է Դուք ավարտվեք կենդանի և ռեմիքս տարբերակներով Ձեր երգերի արդյունեքներում: Դուք ոչինչ չեք կարող անել դրա համար, բայց կա ինչ-որ եղանակ՝ դրանք ստուգման արդյունքներից ջնջելու համար: Եթե օրինակի համար, Դուք ցանկանում եք ջնջել ամեն մի երգ, որը գտնվում է գծիկների միջև []:.
* **Windows**. Սեղմեք **Գործողություններ --> Կիրառել ֆիլտրը**, ապա տեսակը "[*]", ապա սեղմեք ԼԱՎ:
* **Mac OS X**. Տեսակը "[*]" "Ֆիլտր" դաշտում՝ գործիքաշերտի:
* Սեղմեք **Նշել --> Նշել բոլորը**:
* Սեղմեք **Գործողություններ --> Ջնջել ընտրվածը արդյունքներից**.
.. topic:: Ես փորձում եմ կրկնօրինակները ուղարկել Աղբարկղ, բայց dupeGuru-ն ինձ ասում է, որ չես կարող: Ինչու՞: Ի՞նչ կարող եմ ես անել:
Շատ ժամանակ, պատճառը, թե ինչու dupeGuru-ն չի կարողանում տեղափոխել ֆայլերը Աղբարկղ, կայանում է ֆայլի լիազորությունների մեջ: Դուք պետք է *գրեք* լիազորությունները ֆայլերում, որոնք որ ցանկանում եք ուղարկել Աղբարկղ: Եթե Ձեզ անծանոթ է Հրամանի տողը, ապա Դուք կարող եք օգտագործել լրացուցիչ գործիքներ, ինչպես օրինակ `BatChmod <http://macchampion.com/arbysoft/BatchMod>`_ լիազորումները նշելու համար:
Եթե dupeGuru-ն դեռ շարունակում է խնդիրներ առաջ բերել կապված լիազորությունների հետ, ապա կան խնդիրներ կապված՝ "Տեղափոխել նշվածը..." որպես շրջանցիկ խորամանկություն: Ուստի ֆայլերը Աղբարկ տեղափոխելիս Դուք ուղարկում եք այն ժամանակավոր թղթապանակ "Տեղափոխել նշվածը..." գործողությամբ և ապա Դուք կջնջեք այդ թղթապանակը ձեռադիր;
.. only:: edition_pe
Եթե Դուք փորձում եք ջնջել *iPhoto* նկարները, ապա ձախողման պատճառը տարբեր է: Ջնջելը ձախողվել է, որովհետև dupeGuru-ը չի կարողանում համագործակցել iPhoto: Լինել տեղեկացված, որ ջնջումը նորմալ է աշխատում, Դուք չեք նախատեսում խաղարկել ձայն iPhoto-ին, քանսզի dupeGuru-ն աշխատում է: Նաև, երբեմն, Applescript համակարգը չի կողմնորոշվում որտեղ փնտրել iPhoto՝ բացելու համար: Հավանական է, այս դեպքերում պետք է բացել iPhoto-ն *մինչև* Դուք ուղարկեք Ձեր կրկնօրինակները Աղբարկղ:
Եթե այս ամենը ձախողվի, `կապնվեք HS աջակցության թիմի հետ <http://www.hardcoded.net/support>`_, մենք կփորձեք օգնել Ձեզ:

23
help/hy/folders.rst Executable file
View File

@@ -0,0 +1,23 @@
Թղթապանակի ընտրություն
=======================
Առաջին թղթապանակը, որ Դուք տեսնում եք dupeGuru-ն բացելիս դա թղթապանակի ընտրությունն է: Այս պատուհանը պարունակում է թղթապանակների ցանկը, որոնք կստուգվեն **Ստուգել** սեղմելիս:
Այս պատուհանը շատ հեշտ է օգտագործել: Եթե ցանկանում եք ավելացնել թղթապանակ, ապա սեղմեք **+** կոճակը: Եթե մինչ այդ ավելացնեք թղթապանակը, ապա կերևա ավելացված վերջին թղթապանակների ցանկը: Կարող եք սեղմել նրանցից մեկի վրա՝ ավելացնելու համար ուղղակի Ձեր ցանկում: Եթե սեղմեք հայտնվող պատուհանի առաջին ֆայլին՝ **Ավելացնել նոր թղթապանակ...**, ապա Ձեզ հարցում կկատարվի թղթապանակ ավելացնելու մասին: Եթե երբեք չեք ավելացրել թղթապանակ, ապա ոչ մի ընտրացանկ չի երևա և Ձեզ ուղղակի հարցում կարվի նոր թղթապանակ ավելացնելու մասին:
Այլընտրանքյին ճանապարհով թղթապանակներ կարող եք ավելացնել պարզապես դրանք գցելով ցանկում:
Թղթապանակը հեռացնելու համար ընտրեք թղթապանակը, սեղմեք **-**: Եթե ընտրված է ենթաթղթպանակը, երբ Դուք սեղմում եք կոճակին, ընտրված թղթապանակը կնշվի որպես **բացառված** (նայեք այստեղ)՝ ջնջվելու փոխարեն:
Թղթապանակի վիճակը
------------------
Յուրաքանչյուր թղթապանակ կարող է լինել հետևյալ 3 եղանակներից մեկում.
* **Նորմալ.** Այս թղթապանակում գտնված կրկնօրինակները կարող են ջնջվել:
* **Հղված.** Կրկնօրինակներ են գտնվել այս թղթապանակում, որոնք **չեն կարող** ջնջվել: Ֆայլերը այս թղթապանակից կարող են միայն ավարտվել **հղում** դիրքով խմբում: Եթե մեկ ֆայլից ավելի են հղման թղթապանակների հղումները, ապա միայն մեկը կպահվի: Մնացածը կջնջվեմ խմբից:
* **Բացառված.** Ֆայլերը այս թղթապանակում կներառվեն ստուգման մեջ:
Թղթապանակի հիմնական վիճակը, իհարկե՛ **Նորմալ է**: Կարող եք օգտագործել **Հղված** վիճակը թղթապանակի համար, եթե ցանկանում եք համոզված լինել, որ ոչ մի ֆայլ չի ջնջվի:
Եթե նշել եք թղթապանակի վիճակը, բոլոր ենթաթղթապանակները միանգամից կժառանգեն այս վիճակը, եթե վիճակը պարզորոշ տրված է թղթապանակի կարգում:

40
help/hy/index.rst Executable file
View File

@@ -0,0 +1,40 @@
|appname| help
===============
.. only:: edition_se
Այս փաստաթուղթը հասանելի է նաև՝ `Ֆրանսերեն <http://www.hardcoded.net/dupeguru/help/fr/>`__ և `Գերմաներեն <http://www.hardcoded.net/dupeguru/help/de/>`__.
.. only:: edition_me
Այս փաստաթուղթը հասանելի է նաև՝ `Ֆրանսերեն <http://www.hardcoded.net/dupeguru_me/help/fr/>`__ և `Գերմաներեն <http://www.hardcoded.net/dupeguru_me/help/de/>`__.
.. only:: edition_pe
Այս փաստաթուղթը հասանելի է նաև՝ `Ֆրանսերեն <http://www.hardcoded.net/dupeguru_pe/help/fr/>`__ և `Գերմաներեն <http://www.hardcoded.net/dupeguru_pe/help/de/>`__.
.. only:: edition_se or edition_me
|appname| ծրագիր է՝ գտնելու կրկնօրինակ ունեցող ֆայլեր Ձեր համակարգչում: Այն կարող է անգամ ստուգել ֆայլի անունները կան բովանդակությունը: Ֆայլի անվան ստուգման հնարավորությունները ոչ ճշգրիտ համընկման ալգորիթմով, որը կարող է գտնել ֆայլի անվան կրկնօրինակներ, անգամ եթե դրանք նույնը չեն:
.. only:: edition_pe
dupeGuru Picture Edition-ը (PE՝ կարճ) գործիք է, որը գտնում է նկարների կրկնօրինակները Ձեր համակարգչում: Գտնում է ոչ միայն նույնանման կրկնօրինակները, այլ նաև կարող է գտնել տարբեր տեսակի և որակի նկարներ (PNG, JPG, GIF և այլն...):
Չնայած dupeGuru-ն կարող է հեշտությամբ օգտագործվել առանց օգնության, այնուհանդերձ եթե կարդաք այս ֆայլը, այն մեծապես կօգնի Ձեզ ընկալելու ծրագրի աշխատանքը: Եթե Դուք նայում եք ձեռնարկը կրկնօրինակների առաջին ստուգման համար, ապա կարող եք ընտրել :doc:`Արագ Սկիզբ <quick_start>` հատվածը:
Շատ լավ միտք է պահելու |appname| թարմացված: Կարող եք բեռնել վեբ կայքի համապատասխան էջից `homepage`_:
Պարունակությունը.
.. toctree::
:maxdepth: 2
quick_start
folders
preferences
results
reprioritize
faq
changelog
credits

63
help/hy/preferences.rst Executable file
View File

@@ -0,0 +1,63 @@
Կարգավորումներ
================
.. only:: edition_se
**Ստուգելու տեսակը.** Այս ընտրանքը որոշում է, թե ֆայլերի որ ասպեկտը կհամեմատվի կրկնօրինակված ստուգման հետ: Եթե Դուք ընտրեք **Ֆայլի անունը**, ապա dupeGuru-ն կհամեմատի յուրաքանչյուրը բառ-առ-բառ և կախված է հետևյալ այլ ընտրանքներից, այն կորոշի արդյոք բավական են համընկնող բառերը դիտելու համար 2 ֆայլերի կրկնօրինակները: Եթե ընտրեք միայն **Բովանդակությունը**, ապա նույնատիպ ֆայլերը նույն բովանդակությամբ կհամընկնեն:
**Թղթապանակներ.** ստուգելու հատուկ տեսակ է: Երբ ընտրեք սա, dupeGuru-ն կստուգի կրկնօրինակ *թղթապանակները*՝ կրկնօրինակ ֆայլերի փոխարեն: Որոշելու համար արդյոք անկախ երկու թղթապանակները կրկնօրինակ են, կստուգվեն թղթապանակների ամբողջ պարունակությունը և եթե **բոլոր** ֆայլերի բովանդակությունը համընկնի, ապա թղթապանակները կորոշվեն որպես կրկնօրինակներ:
**Ֆիլտրի խստությունը.** Եթե Դուք ընտրեք **Ֆայլի անունը** ստուգելու տեսակը, այս ընտրանքը կորոշի, թե ինչքանով նման պետք է լինեն ֆայլերի անունները, որ dupeGuru-ն ճանաչի դրանք որպես կրկնօրինակներ: Եթե ֆիլտրը առավել խիստ է, օրինակ՝ 80, ապա դա նշանակում է, որ երկու ֆայլերի անունների բառերի 80%-ը պետք է համընկնի: Որոշելու համար համընկնման տոկոսը, dupeGuru-ն նախ հաշվում է բառերի ընդհանուր քիանակը **երկու** ֆայլերի անուններում, ապա հաշվում է համընկնումների քանակը (ամեն բառ համընկնում է 2-ի հաշվին) և բաժանում ընդհանուր գտնված բառերի համընկնումների միջև: Եթե արդյունքը բարձր է կամ հավասար ֆիլտրի խստությանը, ապա մենք ունեք կրկնօրինակի համընկնում: Օրինակ՝ "a b c d" և "c d e" ունեն համընկնման տոկոս, որը հավասար է 57-ի (4 բառ են համընկնում, 7 ընդհանուր բառից):
.. only:: edition_me
**Ստուգելու եղանակը.** Այս ընտրանքը որոշում է, թե որ ասպեկտն է ֆայլերի՝ համեմատելի կրկնօրինակման ստուգմանը: Կրկնօրինակների ստուգման բնույթը փոխվում է մեծապես կախված, թե ինչի եք ընտրում այս ընտրանքը:
* **Ֆայլի անունը.** Ցանկացած երգ ունի իր ֆայլի անվան մասնատումը բառերի և ապա ամեն բառ կհամեմատվի՝ հաշվելու համար համընկնման տոկոսը: Եթե այս տոկոսը ավելի բարձր է կամ հավասար **Ֆիլտրի խստությանը** (նայել՝ մանրամասների համար), dupeGuru-ն կդիտարկի երկու երգերը որպես կրկնօրինակներ:
* **Ֆայլի անունը - Դաշտերը.** Ինչպես օրինակ **Ֆայլի անունը**, բացառում է, որ մեկ ֆայլի անունը բաժանվի բառերի, այս բառերը ապա կխմբավորվեն դաշտերում: Դաշտերի բաժանիչը " - " է: Համընկնման վերջնական տոկոսը կլինի համընկնման ցածրագույն տոկոսը դաշտերի միջև: Այսպիսով, "Կատարողը - Վերնագիրը" և "Կատարողը - Այլ վերնագիրը" կունենա համընկման տոկոս՝ 50 (**Ֆայլի անունը** ստուգմամբ, կլինի 75).
* **Ֆայլի անունը - Դաշտերը (անկարգ).** Ինչպես օրինակ **Ֆայլի անունը - Դաշտերը** բացառությամբ, որ դաշտի կարգը չի համընկնում: Օրինակ՝ "Կատարողը - Վերնագիրը" և "Վերնագիրը - Կատարողը" կունենան համընկնման 100 տոկոս՝ 0-ի փոխարեն:
* **Կցապիտակներ.** Այս եղանակը կարդում է յուրաքանչյուր երգի կցապիտակները (մետատվյալները) և համեմատում է նրանց դաշտերը: Այս եղանակը, ինչպես օրինակ **Ֆայլի անունը - Դաշտերը** դիտարկում են համընկնման ցածրագույն դաշտը՝ համեմատման վերջնական տոկոսից:
* **Պարունակությունը.** Ստուգման այս եղանակը օգտագործում են երգերի բովանդակությունը՝ որոշելու համար, թե որն են կրկնօրինակները: 2 երգերը համընկնեցնելու համար այս եղանակով, դրանք պետք է ունենան **բացառապես նույն բովանդակությունը**:
* **Ձայնի բովանդակությունը.** Նույնն են բովանդակությամբ, բայց միայն ձայնի պարունակությունն է համեմատելի (առանց մետատվյալների):
**Ֆիլտրի խստությունը.** Եթե ընտրում եք ֆայլի անունը կամ կցապիտակը՝ հիմնված ստուգման եղանակի վրա, ապա այս ընտրանքը որոշում է, թե ինչքան են նման երկու ֆայլի անունները/կցապիտակները պետք է լինեն dupeGuru-ի կողմից դիտարկվող կրկնօրինակներ: Եթե ֆիլտրի խստությունը օրինակի համար 80 է, դա նշանակում է, որ երկու ֆայլի անունների բառերի համընկնումը 80% է: Որոշելու համար համընկնման տոկոսը, dupeGuru-ն առաջին հաշվով որոշում է **երկու** ֆայլի անունների առաջին հաշվարկի ընդհանուր քանակը, ապա համընկնող բառերի համընկնման քանակը (բոլոր բառերը համընկնում են 2-ի) և ապա բաժանել համընկնող բառերի թիվը ընդհանուր բառերի թվին: Եթե արդյունքը բարձր է կամ հավասար ֆիլտրի խստությանը, ապա մենք ունենք կրկնօրինակի համընկնում: Օրինակ՝ "a b c d" և "c d e" ունի համընկնման 57 տոկոս (4 բառերի համընկնում, 7 ընդամենը բառեր):
**Ստուգվող կցապիտակները.** Երբ օգտագործվում է **Կցապիտակներ** ստուգելու եղանակը, կարող եք ընտրել կցապիտակներ, որոնք կօգտագործվեն համեմատման համար:
.. only:: edition_se or edition_me
**Բառի կշիռը.** Եթե ընտրում եք **Ֆայլի անունը** ստուգելու եղանակը, ապա այս ընտրանքը որոշակիորեն փոխում է համընկնման տոկոսը հաշվելու եղանակը: Բառի կշռմամբ կրկնօրինակի քանակի փոխարենը 1 նշանակությունը ունենալու համար, ամեն բառը ունի հավասարազոր նշանակություն՝ առկա գրանշանների թվին: Բառի կշռմամբ, "ab cde fghi" և "ab cde fghij" կունենա համընկնման տոկոս՝ 53% (19 ընդամենը գրանշաններ, 10 գրանշանների համընկնում (4-ը "ab"-ի և 6-ը "cde"-ի համար)):
**Նմանատիպ բառերի համընկնում.** Եթե միացնեք այս ընտրանքը, նմանատիպ բառերը կհաշվեն որպես համընկնումներ: Օրինակ՝ "Սպիտակ շրջանակ" և "Սպիտակ շրջանակ" ունի համընկնման % հավասարազոր 100-ի՝ 66-ի փոխարեն, եթե ընտրանքը միացված է: **Զգուշացում.** Այս ընտրանքը զգուշությամբ օգտագործեք: Հավանական է ստացված տվյալների մեծ մասը կեղծ լինեն: Այնուհանդերձ, այն կօգնի Ձեզ գտնելու կրկնօրինակներ, որոնք այլ ճանապարհով հնարավոր չի եղել գտնել: Ստուգելու ընթացքը նաև նշանակալի դանդաղ է, եթե այս ընտրանքը միացված է:
.. only:: edition_pe
**Ստուգելու եղանակը.** Այս ընտրանքը որոշում է ստուգելու եղանակը, որը կկիրառվի նկարների նկատմամբ: **Պարունակությունը** ստուգելու եղանակը համեմատում է ակտուալ նկարների բովանդակությունը ոչ ճշգրիտ եղանակով (հնարավորություն տալով գտնելու ոչ միայն անմիջապես կրկնօրինակները, այլ նաև նմանատիպ այլ ֆայլերը): **EXIF Timestamp** ստուգելու եղանակը նայում է նկարի EXIF մետատվյալը (եթե այն կա) և համընկնող նկարները, որոնք որ նույնն են: Սա ավելի արագ է, քան բովանդակությամբ ստուգելը: **Զգուշացում.** Փոփոխված նկարները սովորաբար պահում են նույն EXIF timestamp-ը, ուստի նախ նայեք արդյունքները, ապա գործեք:
**Ֆիլտրի խստությունը.** *Ստուգում է միայն բովանդակությունը:* Այս ընտարնքի բարձրագույն նիշը, բնորոշում է ֆիլտրի "խստությունը" (Այլ կերպ ասաց, արդյունքը ավելի քիչ է լինում): Նույն որակի նկարներից շատերը երբեմն համընկնում են 100%-ով՝ անգամ եթե տեսակը ուրիշ է (PNG և JPG օրինակի համար): Այնուհանդերձ, եթե ցանկանում եք, որ PNG-ն համապատասխանի ցածր որակի JPG-ին, պետք է նշեք ֆիլտրի խստությունը 100-ից ցածր: Ծրագրայինը 95 է:
**Տարբեր չափերով նկարների համապատասխանեցում.** Եթե ընտրեք սա, տարբեր չափերի նկարները կթույլատրվեն կրկնօրինակվող նույն խմբում:
**Կարող է ուղղել ֆայլի տեսակը.** Եթե ընտրում եք այս վանդակը, ապա կրկնօրինակվող խմբերը կթույլատրվեն ունենալու տարբեր ընդլայնումներ: Եթե չընտրեք, ապա դրանք չեն լինի!
**Անտեսել կրկնօրինակների հղումը նույն ֆայլին file:** Եթե այս ընտրանքը միացված է, dupeGuru-ն կստուգի կրկնօրինակները՝ տեսնելու համար արդյոք դրանք հղվում են նույնին `inode <http://en.wikipedia.org/wiki/Inode>`_: Եթե այո, ապա դրանք չեն որոշվի որպես կրկնօրինակ: (Միայն OS X և Linux-ում)
**Ֆիլտրելիս օգտագործել կանոնավոր սահմանումներ.** Եթե ընտրեք սա, ապա ֆիլտրման հնարավորությունը կդիմի ֆիլտրման հերթին, ինչպես որ **կանոնավոր սահմանում**: Դրա բացատրությունը դուրս կգա այս փաստաթղթի շրջանակից: Ավելին կարող եք կարդալ այստեղ՝ `regular-expressions.info <http://www.regular-expressions.info>`_:
**Ջնջել դատարկ թղթապանակները ջնջելուց կամ տեղափոխելուց.** Երբ այս ընտրանքը միացված է, թղթապանակները կջնջվեն, երբ որ ֆայլը ջնջվի կամ տեղափոխվի և թղթապանակը դատարկ լինի:
**Պատճենել և տեղափոխել.** Որոշում է, թե Պատճենելու և Տեղափոխելու գործողությունները (գործողություն ընտրացանկից):
* **Տեղադրությունից աջ.** Բոլոր ֆայլերը կուղարկվեն ընտրված տեղ՝ առանց փորձելու վերստեղծելու աղբյուրի ճանապարհը բոլորի համար:
* **Վերստեղծել հարաբերական ճանապարհը.** Աղբյուր ֆայլի ճանապարհը կվերստեղծվի նշանակված թղթապանակում՝ խորքայինից մեկ աստիճան վեր՝ Թղթապանակներ վահանակից: Օրինակ՝ եթե ավելացնեք``/Users/foobar/SomeFolder`` Թղթապանակներ վահանակ և տեղափոխեք ``/Users/foobar/SomeFolder/SubFolder/SomeFile.ext`` նշանակության թղթապանակ ``/Users/foobar/MyDestination``, ֆայլի վերջնական տեղավորությունը կլինի ``/Users/foobar/MyDestination/SubFolder`` (``SomeFolder`` բաժանվել է աղբյուր ճանապարհից վերջնական տեղադրությունում):
* **Վերստեղծել հարաբերական ճանապարհը.** Աղբյուր ֆայլի ճանապարհը կվերստեղծվի նշանակված թղթապանակում՝ իր հարթությունում: Օրինակ՝ եթե տեղափոխեք ``/Users/foobar/SomeFolder/SubFolder/SomeFile.ext`` նշանակության թղթապանակ ``/Users/foobar/MyDestination``, ֆայլի վերջնական տեղավորությունը կլինի ``/Users/foobar/MyDestination/Users/foobar/SomeFolder/SubFolder``:
Ամեն դեպքում, dupeGuru լավ է հարթում անունների կոնֆլիկտը՝ նախապատրաստելով նշանակության ֆայլի անվան թիվը՝ եթե ֆայլը արդեն առկա է նշված տեղում:
**Ընտրված հրամանը.** Այս կարգավորումը որոշում է հրամանը, որը կկանչվի "Կանչել Ընտրված հրամանը" գործողությամբ: Կարող եք կանչել ցանկացած արտաքին ծրագիր՝ այս գործողությամբ: Սա կարող է օգտակար լինել եթե օրինակ փոխարենը ունեք տվյալների փոխանցման լավ ծրագիր:
Հրամանի տեսակը նույնն է, ինչ Դուք կգրեք Հրամանի տողում, բացառությամբ որտեղ կան 2 լրացումներ. **%d** և **%r**: Այս լրացումները կվերագրվեն ընտրված զոհի (%d) ճանապարհով և ընտրված զոհի հղման ֆայլով (%r):
Եթե կատարելի ֆայլի ճանապարհը պարունակում է բացատներ, ապա պետք է փակեք այն "" չակերտներով: Նաև պետք է փակեք լրացումները չակերտներով, որովհետև շատ հնարավոր է, որ զոհի ճանապարհները և հղումները կպարունակեն բացատներ: Ահա ընտրված հրամանի օրինակ՝ ::
"C:\Program Files\SuperDiffProg\SuperDiffProg.exe" "%d" "%r"

15
help/hy/quick_start.rst Executable file
View File

@@ -0,0 +1,15 @@
Արագ Սկիզբ
===========
Արագ սկսելու համար dupeGuru-ն, պարզապես կատարեք ստանդարտ ստուգում՝ օգտագործելով ծրագրային կարգավորումները:
* Բացել dupeGuru-ն:
* Ավելացնել թղթապանակներ՝ ստուգելու համար նաև վերցնել & գցելը կամ "+" կոճակը:
* Սեղմեք **Ստուգել**:
* Սպասեք, մինչ ստուգումը կավարտվի:
* Նայեք ցանկացած կրկնօրինակին (Ֆայլեր, որոնք նշվել են) և ստուգվել, իրականում կրկնօրինակել խմբի հղմանը (Ֆայլը կրկնօրինակելուց առաջ չի նշվում և ընտրված չէ):
* Եթե ֆայլը սխալ կրկնօրինակ է, ապա ընտրեք այն և սեղմեք **Գործողություններ-->Հեռացնել ընտրվածը Արդյունքներից**:
* Եթե համոզված եք, որ կրկնօրինակը արդյունքներում կա, ապա սեղմեք **Խմբագրել-->Նշել բոլորը**, և ապա **Գործողություններ-->Ուղարկել Նշվածը Աղբարկղ**:
Սա միայն բազային ստուգում է: Կան բազմաթիվ կարգավորումներ, որոնք հնարավորություն են տալիս նշելու տարբեր արդյունքներ և մի քանի եղանակներ արդյունքների փոփոխման: Մանրամասների համար կարդացեք Օգնության ֆայլը:

26
help/hy/reprioritize.rst Executable file
View File

@@ -0,0 +1,26 @@
Վերաառաջնայնության կրկնօրինակներ
================================
dupeGuru-ը փորձում է որոշել, թե որ կրկնօրինակները պետք է գնան յուրաքանչյուր խմբի դիրքում,
բայց երբեմն սխալ է ստանում: Շատ դեպքերում, խելամիտ դասավորումը "Դելտա նշանակության"
և "Միայն սխալները" ընտրանքների ավելացնելով "Դարձնել ընտրվածը հղում" գործողության խորամանկություն է, բայց
երբեմն, պահանջվում են ավելի լավ ընտրանքներ: Ահա այստեղ է, որ վերաառաջնայնավորման պատուհանը բացվում է:
Կարող եք կանչել այն "Վերաառաջնայնավորման արդյունքները" կետից՝ "Գործողություններ" ընտրացանկից:
Այս պատուհանը հնարավորություն է տալիս Ձեզ ընտրելու չափանիշներ՝ հղման սխալին համապատասխան և կընտրվի
յուրաքանչյուր սխալի խումբը: Հասանելի չափանիշների ցանկը ձախում է և Ձեր ընտրած չափանիշների ցանկը գտնվում է
աջում:
Չափանիշն դա բաժինն է, որը հետևում է փաստարկին: Օրինակ՝ "Չափը (Բարձրագույն)" նշանակում է, որ սխալը
հետևում է մեծագույն չափի հաղթողին: "Թղթապանակը (/foo/bar)" նշանակում է, որ սխալները թղթապանակում կհաղթեն: Ավելացնելու համար
փաստարկ ամենաաջ մասում, նախ ընտրեք բաժինը, ապա ընտրեք
ենթափաստարկ հետևյալ ցանկում և ապա սեղմեք կոճակի սլաքի աջ մասում:
Ցանկի կարգը աջից շատ կարևոր է (կարող եք վերակարգավորել ֆայլերը վերցնել և գցելու միջոցով): Երբ
սխալի տեղորոշումը հղման դիրքում է, ապա օգտագործվում է առաջին փաստարկը: Եթե դա կապված է, ապա երկրորդ
փաստարկն է օգտագործվում և այլն և այլն: Օրինակ, եթե Ձեր փաստարկները "Չափը (բարձրագույն)" են և ապա
"Ֆայլի անունը (Չի ավարտվում թվով)", ապա հղման ֆայլը, որը կընտրվի խմբում, ապա կլինի
մեծագույն ֆայլը և եթե երկու կամ ավելի ֆայլեր ունեն նույն չափը, ապա մեկը ունի ֆայլի անուն, որը
չի ավարտվում թվով, կօգտագործվի: Երբ փաստարկի արդյունքը կապված է, կարգը, որի սխալները
նախկինում էին, խումբը պետք է օգտագործվի:

94
help/hy/results.rst Executable file
View File

@@ -0,0 +1,94 @@
Արդյունքները
=============
Երբ dupeGuru-ն ավարտի կրկնօրինակների ստուգումը, կցուցադրի արդյունքները կրկնօրինակ խմբերի ցանկում:
Կրկնօրինակ խմբերի մասին
-------------------------
Կրկնօրինակման խումբը դա ֆայլերի խումբ է, որոնք բոլորը համընկնում են միմյանց: Ամեն խումբ ունի իր **հղվող ֆայլը** և մեկ կամ մի քանի **կրկնօրինակ ֆայլեր**: Հղվող ֆայլը դա խմբի առաջին ֆայլն է: Այն ընտրված չէ, նրանից ցածր և փոխարեն կրկնօրինակ ֆայլերի:
Կարող եք նշել կրկնօրինակ ֆայլերը, բայց երբեք չեք կարող նշել հղվող ֆայլը խմբում: Սա երկրորդ պատճառն է՝ կանխելու dupeGuru-ին ջնջելու ոչ միայն կրկնօրինակ ֆայլերը, այլև դրանց հղումները: Համոզվա՞ծ եք, չէ, որ պետք չէ անել դա:
Ինչն է որոշում, թե որ ֆայլերը հղմամբ են և որ ֆայլերը կրկնօրինակ են՝ թղթապանակի նախնական վիճակում: Ֆայլը հղվող թղթապանակից միշտ հղվում է կրկնօրինակի խմբում: Եթե բոլոր ֆայլերը նորմալ թղթապանակից են, ապա չափն է որոշում, թե որ ֆայլը կլինի կրկնօրինակ խմբի հղումը: dupeGuru-ն ընդունում է, որ Դուք կցանկանաք պահել մեծ ֆայլերը, ուստի դրանք կտեղադրվեն հղման խմբում:
Կարող եք փոխել հղման ֆայլը խմբում ձեռադիր: Դա անելու համար ընտրեք կրկնօրինակ ֆայլը և սեղմեք **Գործողություններ-->Դարձնել ընտրվածը հղմամբ**:
Նայել արդյունքները
--------------------
Չնայած պարզապես կարող եք սեղմել **Խմբագրել-->Նշել բոլորը** և ապա **Գործողություններ-->Ուղարկել նշվածը Աղբարկղ** արագորեն ջնջելու համար բոլոր կրկնօրինակ ֆայլերը արդյունքներից, միշտ խորհուրդ է տրվում նախ նայել կրկնօրինակները և հետո միայն ջնջել:
Օգնելու համար Ձեզ նայելու արդյունքները, կարող եք օգտագործել **Մանրամասների վահանակը**: Այս վահանակը ցուցադրում է բոլոր մանրամասները ընտրված ընթացիկ ֆայլի, ինչպես նաև հղման մանրամասները: Սա շատ հարմար է արագորեն որոշելու, թե արդյոք կրկնօրինակը իրոքից կրկնօրինակ է, թե ոչ: Կարող եք նաև կրկնակի սեղմեք ֆայլի վրա՝ բացելու համար այն նրա հետ ասոցիացված ծրագրով:
Եթե ունեք շատ սխալ կրկնօրինակներ, ապա ճիշտ կրկնօրինակները (Եթե Ձեր ֆիլտրի խստությունը շատ է ցածր) որոշելու լավագույն եղանակը դրանք նայելն է, ընտրեք ճիշտ կրկնօրինակները և ապա սեղմեք **Գործողություններ-->Ուղարկել նշվածները Աղբարկղ**: Եթե իսկական կրկնօրինակները ավելի շատ են, քան սխալները, ապա կարող եք օգտագործել **Գործողություններ-->Ջնջել նշվածները արդյունքներից**:
Նշում և Ընտրում
---------------------
**նշվածը** կրկնօրինակ է՝ նշված նշանով, որը ընտրվում է: **ընտրվածը** կրկնօրինակ է, որը ընդգծվում է կամ առանձնացվում է: Ընտրելու բազմակի եղանակները կարող են կատարվել dupeGuru-ում ստանդարտ ճանապարհով (Shift/Command/Control սեղմամբ): կարող եք փոփոխել բոլոր ընտրված կրկնօրինակների վիճակը՝ սեղմելով **space**:
Ցուցադրել Միայն Սխալները
-------------------------
Եթե այս ընտրանքը միացված է, ապա կրկնօրինակները ցուցադրվում են առանց իրենց համապատասխան հղվող ֆայլի։ Կարող եք ընտրել, նծել կամ դասավորել այս ցանկը, ինչպես օոր նորմալ եղանակում։
dupeGuru-ի արդյունքները, երբ այն նորմալ եղանակում է, դասավորվում են համաձայն կրկնօրինակվող խմբերի' **հղվող ֆայլի** ։ Սա նշանակում է, որ եթե Դուք ցանկանաք, օրինակի համար, նշել բոլոր կրկնօրինակները "exe" ընդլայնմամբ, ապա չեք կարող պարզապես դասավորել արդյունքները ըստ "Տեսակի"՝ ունենալու համար բոլոր exe կրկնօրինակները միասին, որովհետև խումբը կարող է կազմված լինի մեկից ավելի ֆայլերից։ Ահա այստեղ է, որ աշխատում է Միայն Սխալները եղանակը։ Նշելու համար բոլոր "exe" կրկնօրինակները, Դուք պարզապես պետք է՝
* Միացնեք Միայն Սխալները եղանակը։
* Ավելացնեք "Տեսակը" սյունը՝ "Սյուներ" ընտրացանկին։
* Սեղմեք "Տեսակը" սյանը՝ դասավորելու համար ցանկը ըստ տեսակի։
* Տեղադրել "exe" տեսակի առաջին կրկնօրինակը։
* Ընտրեք այն։
* Պտտեք ներքև ցանկում՝ տեղադրելու համար "exe" տեսակի վերջին կրկնօրինակը։
* Սեղմած պահեք Shift-ը և սեղմեք նրա վրա։
* Սեղմեք Space՝ նշելու համար բոլոր կրկնօրինակները։
Դելտա նշանակությունները
--------------------------
Եթե միացնեք սա, որոշ սյուներ կցուցադրվեն նշանակություն՝ հարաբերական կրկնօրինակների հղմանը՝ բացարձակ նշանակությունների փոխարեն։ Այս դելտա նշանակությունները նաև կցուցադրվեն տարբեր գույներով, ուստի կարող եք դրանք հեշտությամբ տեսնել։ Օրինակ՝ եթե կրկնօրինակը 1.2 ՄԲ է և եթե նրա հղումը 1.4 ՄԲ է, ապա Չափը սյունում կցուցադրվի -0.2 ՄԲ։
Միայն Սխալները և Դելտա նշանակությունները
------------------------------------------
Միայն Սխալները եղանակը բացում է իր իսկական ուժը, երբ Դուք օգտագործում եք այն Դելտա նշանակությունների հետ։ Երբ միացնեք այն, բացարձակ նշանակությունների փոխարեն կցուցադրվեն հարաբերական նշանակությունները։ Այսպիսով օրինակ, եթե ցանկանում եք արդյունքներից հեռացնել բոլոր կրկնօրինակները, որոնք 300 Կբ-ից մեծ են իրենց հղումներից, ապա չեք կարող դասավորել միայն սխալները արդյունքները ըստ չափի, այդ դեպքում ընտրեք բոլոր կրկնօրինակները, որոնք -300 են Չափը սյունից, ջնջեք դրանք և ապա արեք նույն գործողությունը նաև 300-ից բարձր կրկնօրինակների համար՝ ցանկի ներքևում։
Կարող եք նաև օգտագործել սա՝ փոխելու համար կրկնօրինակման ցանկի հղման առաջնայնությունը։ Նոր ստուգումը կատարելուց հետո, եթե չլինեն հղվող թղթապանակներ, հղվող ֆայլը ամեն խմբի կլինի ամենամեծ ֆայլը։ Եթե ցանկանում եք փոխել այն, օրինակի համար, ըստ վերջին փոփոխման ժամանակի, կարող եք դասավորել միայն սխալները արդյունքները ըստ փոփոխման ժամանակի **նվազման** կարգով, ընտրեք բոլոր կրկնօրինակները, որոնց փոփոխման դելտա ժամանակը բարձր է 0-ից և սեղմեք **Դարձնել ընտրվածը հղում**։ Պատճառը,որ դասավորում եք ըստ նվազման կարգի այն է, որ եթե 2 ֆայլերից, որոնք կընտրվեն նույն կրկնօրինակ խմբում, երբ սեղմեք **Դարձնել ընտրվածը հղում**, ապա ցանկի միայն առաջինը կդառնա հղում, մյուսները կանտեսվեն։ Եվ մինչև Դուք ցանկանաք վերջին փոփոխված ֆայլը դարձնել փոփոխված՝ ունենալով դասավորման նվազման կարգը, ապա ցանկի առաջին ֆայլը կլինի վերջին փոփոխված ֆայլը։
Ֆիլտրում
---------
dupeGuru-ն աջակցում է հետստուգման ֆիլտրում։ Սրանով Դուք կարող եք սեղմել ներքև արդյունքները, որպեսզի կարողանաք կատարեք գործողություններ դրա հետ։ Օրինակ՝ կարող եք հեշտությամբ նշել բոլոր կրկնօրինակերը նրանց անվան մեջ պարունակող "պատճեն" հատկությամբ՝ ֆիլտրի կողմից օգտագործված արդյունքներից։
**Windows.** Ֆիլտրելու հնարավորությունը օգտագործելու համար սեղմեք Գործողություններ --> Կիրառել ֆիլտրը, գրեք կիրառվող ֆիլտրը և սեղմեք Կիրառել։ Չֆիլտրված արդյունքներին վերադառնալու համար սեղմեք Գործողություններ --> Չեղարկել ֆիլտրը։
**Mac OS X.** Ֆիլտրելու հնարավորությունը օգտագործելու համար նշեք Ձեր ֆիլտրը "Ֆիլտր" որոնման դաշտում գործիքաշերտի։ Չֆիլտրված արդյունքներին վերադառնալու համար սեղմեք դատարկ թողեք դաշտը կամ սեղմեք "X"։
Պարզ եղանակում (ծրագրային եղանակն է), ինչ տեսակի ֆիլտր է տողում օգտագործվել փաստացի ֆիլտրման համար, խմբային նիշի բացառությամբ **\***. Այսպիսով, եթե նշում եք "[*]" որպես ֆիլտր, այն կհամընկնի [] փակագծերի հետ, այնուհանդերձ կլինի այդ փակագծերի միջև։
Լրացուցիչ ընդլայնված ֆիլտրման համար, կարող եք միացնել "Ֆիլտրելիս օգտագործել կանոնավոր սահմանումները"։ Ապա ֆիլտրման հնարավորությունը կօգտագործվի **կանոնավոր սահմանմամբ** ։ Կանոնավոր սահմանումը դա համապատասխանացման տեքստի լեզուն է։ Առավել մանրամասն կարող եք կարդալ `regular-expressions.info <http://www.regular-expressions.info>`_ կայքում։
Համապատասխանեցումները զգայուն չեն ո՛չ պարզ, ո՛չ էլ regexp եղանակում։
Համապատասխանեցման ֆիլտրի դեպքում, Ձեր կանոնավոր սահմանումը չի ունենա ամբողջական ֆայլի անունը, այն միայն կպարունակի սահմանմանը համապատասխան տողին։
Կարող եք տեղեկացնել, որ ոչ բոլոր կրկնօրինակներն են ֆիլտրված արդյունքներում համապատասխանում ֆիլտրին։ Ահա թե ինչու ինչքան շուտ որ պարզ կրկնօրինակը խմբում համապատասխանի ֆիլտրին ամբողջ խումբը կմնա արդյունքներում, ուստի ավելի հեշտ կլինի նայելու կրկնօրինակների կազմը։ Այնուհանդերձ, չհամապատասխանող կրկնօրինակերը "հղման եղանակում են"։ Չնայած որ Դուք կարող եք կատարել գործողություններ, ինչպես օրինակ նշել բոլորը և համոզված լինեք, որ միայն նշված են ֆիլտրված կրկնօրինակերը։
Գործողություններ Ընտրացանկը
----------------------------
* **Մաքրել անտեսման ցանկը.** Հեռացնում է Ձեր ավելացրած բոլոր անտեսված համընկնումները։ Դուք պետք է սկսեք նոր ստուգում, որպեսզի նոր մաքրված անտեսումների ցանկը էֆֆեկտիվ լինի։
* **Արտածել արդյունքները XHTML-ով.** Վերցնում է ընթացիկ արդյունքները և ստեղծում XHTML ֆայլը։ Սյուննրը, որոնք տեսանելի են այս կոճակը սեղմելիս կլինեն նաև XHTML ֆայլում։ Ֆայլը միանգամից կբացվի հիմնական դիտարկիչում։
* **Ուղարկել նշվածները Աղբարկղ.** Բոլոր նշված կրկնօրինակերը հեռացնում է Աղբարկղ։
* **Ջնջել նշվածը և Վերագրել հղմամբ.** Բոլոր նշված կրկնօրինակերը հեռացնում է Աղբարկղ, բայց դա անելուց հետո ջնջված ֆայլերը վերագրվում են ըստ `հղման <http://en.wikipedia.org/wiki/Hard_link>`_ հղվող ֆայլում (Միայն OS X և Linux-ում)
* **Տեղափոխել նշվածը՝...:** Հարցնում է Ձեզ թղթապանակի մասին և ապա տեղափոխում է բոլոր նշված ֆայլերը այդ թղթապանակ։ Աղբյուր ֆայլերի ճանապարհը կարող է վերստեղծվել նշանակության թղթապանակում՝ կախված "Պատճենելու և Տեղափոխելու" կարգավորումներից։
* **Պատճենել նշվածը՝...:** Հարցնում է Ձեզ թղթապանակի մասին և ապա պատճենում է բոլոր նշված ֆայլերը այդ թղթապանակ։ Աղբյուր ֆայլերի ճանապարհը կարող է վերստեղծվել նշանակության թղթապանակում՝ կախված "Պատճենելու և Տեղափոխելու" կարգավորումներից։
* **Հեռացնել նշվածները արդյունքներից.** Հեռացնում է բոլոր նշված կրկնօրինակները արդյունքներից։ Ակտուալ ֆայլերին դա չի վերաբերվի և դրանք կմնան։
* **Հեռացնել ընտրվածները արդյունքներից.** Հեռացնում է բոլոր ընտրված կրկնօրինակները արդյունքներից։ Հիշեք, որ ընտրված բոլոր հղվող ֆայլերը կանտեսվեն,այս գործողությամբ կջնջվեն միայն կրկնօրինակերը։
* **Դարձնել ընտրվածը հղում.** Առաջ է մղում բոլոր ընտրված կրկնօրինակները որպես հղումներ։ Եթե կրկնօրինակը խմբի մասն է, որը ունի հղման թղթապանակ (կապույտ գույնով), ապա ոչ մի գործողություն չի կատարվի դրա համար։ Իսկ եթե միևնույն խմբում կան մեկից ավելի ընտրված կրկնօրինակներ, ապա առաջ կմղվի ամեն խմբից միայն առաջինը։
* **Ավելացնել ընտրվածը անտեսումների ցանկին.** Նախ բոլոր կրկնօրինակները հեռացվում են արդյունքների ցանկից, ապա ավելացվում է կրկնօրինակի համընկումը և ընթացիկ հղումը անտեսումների ցանկին։ Այս համընկնումը այլևս առաջ չի գա հետագա ստուգումների ժամանակ։ Կրկնօրինակը կարող է հետ բերվել, բայց այն կհամապատասխանի հղման այլ ֆայլի։ Կարող եք մաքրել անտեսումների ցանկը Մաքրել անտեսումների ցանկը հրամանով։
* **Բացել ընտրվածը հիմական ծրագրով.** Բացում է ֆայլը իր հետ ասոցիացված ծրագրով։
* **Ցուցադրել ընտրվածը որոնման մեջ.** Բացում է ֆայլը պարունակող թղթապանակը։
* **Կանչել Ընտրված հրամանը.** Բացում է կարգավորումներոմ Ձեր կողմից նշված արտաքին ծրագիրը։
* **Անվանափոխել ընտրվածը.** Ձեզ հարցում կկատարվի նոր անվան համար, ապա ընտրված ֆայլը կանվանափոխվի։

6
help/ru/changelog.tmpl Executable file
View File

@@ -0,0 +1,6 @@
:tocdepth: 1
Changelog
=========
{changelog}

223
help/ru/conf.tmpl Executable file
View File

@@ -0,0 +1,223 @@
# -*- coding: utf-8 -*-
#
# dupeGuru documentation build configuration file, created by
# sphinx-quickstart on Wed Jan 12 13:20:15 2011.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.insert(0, os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = []
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'{appname}'
copyright = u'2011, Hardcoded Software'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '{version}'
# The full version, including alpha/beta/rc tags.
release = version
edition = '{edition}'
tags.add('edition_{0}'.format(edition))
rst_epilog = u"""
.. |appname| replace:: {appname}
.. _homepage: {homepage}
"""
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
language = 'ru'
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
html_theme = 'default'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = []
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
#html_logo = None
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
# html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
html_domain_indices = False
# If false, no index is generated.
html_use_index = False
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
html_show_sourcelink = False
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
#html_show_sphinx = True
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
#html_show_copyright = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = None
# Output file base name for HTML help builder.
htmlhelp_basename = 'dupeGurudoc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'dupeGuru.tex', u'dupeGuru Documentation',
u'Hardcoded Software', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'dupeguru', u'dupeGuru Documentation',
[u'Hardcoded Software'], 1)
]

36
help/ru/credits.rst Executable file
View File

@@ -0,0 +1,36 @@
Благодарность
=============
Ниже приводится список людей, которые способствовали, прямо или косвенно dupeGuru.
| **Virgil Dupras, Разработчик** (`Веб сайт <http://www.hardcoded.net>`__)
| **Jérôme Cantin, Дизайнера Иконк**
| Иконы в dupeGuru от него
| **Gregor Tätzner, Немецкая локализация**
| **Eric Dee, Китайская локализация**
| **Aleš Nehyba, Чешский локализации**
| **Paolo Rossi, Итальянская локализации**
| **Hrant Ohanyan, Armenian localization**
| **Igor Pavlov, Russian localization**
| **Python, Язык программирования** (`Веб сайт <http://www.python.org>`__)
| Самая лучшая
| **PyObjC, Python-to-Cocoa bridge** (`Веб сайт <http://pyobjc.sourceforge.net>`__)
| Используется для Mac OS X версии
| **PyQt, Python-to-Qt bridge** (`Веб сайт <http://www.riverbankcomputing.co.uk>`__)
| Используется для версии для Windows
| **Sparkle, Auto-update library** (`Веб сайт <http://andymatuschak.org/pages/sparkle>`__)
| Используется для Mac OS X версии
| **Ты, ползиватель dupeGuru**
| Ты лучший.

115
help/ru/faq.rst Executable file
View File

@@ -0,0 +1,115 @@
Часто задаваемые вопросы
==========================
.. topic:: Что такое |appname|?
.. only:: edition_se
dupeGuru это инструмент для поиска дубликатов файлов на вашем компьютере. Он может сканировать либо имен файлов или контента.Имя файла функций сканирования нечеткого соответствия алгоритма, который позволяет найти одинаковые имена файлов, даже если они не совсем то же самое.
.. only:: edition_me
dupeGuru Music Edition представляет собой инструмент для поиска дублирующихся песен в вашей музыкальной коллекции. Он может строить свою сканирование файлов, тегам или содержания.Имя файла и тэг проверяет функция нечеткого соответствия алгоритм, который может находить дубликаты файлов или теги, даже если они не совсем то же самое.
.. only:: edition_pe
dupeGuru Picture Edition (PE для краткости) представляет собой инструмент для поиска дубликатов фотографий на вашем компьютере. Не только он может найти точные соответствия, но он также может найти дубликаты среди фотографий разного рода (PNG, JPG, GIF и т.д..) И качество.
.. topic:: Что делает его лучше, чем другие сканеры дублировать?
Сканирования является чрезвычайно гибкой. Вы можете настроить его, чтобы действительно получить, каких результатов вы хотите. Вы можете прочитать больше о опция настройки dupeGuru в :doc:`Настройки <preferences>`.
.. topic:: Насколько безопасно использовать dupeGuru?
Очень безопасной. dupeGuru был разработан, чтобы убедиться, что вы не удаляете файлы, которые вы не хотели удалить. Во-первых, существует система отсчета папку, которая позволяет определить папки, в которых вы абсолютно не хотите dupeGuru, чтобы вы удаляете файлы там, и тогда есть система контрольной группы, что гарантирует, что вы всегда держать по крайней мере один член группы дубликатов.
.. topic:: Каковы ограничения демо dupeGuru?
В демо-режиме, вы можете только выполнять действия над 10 дубликаты сразу. в
`Fairware <http://open.hardcoded.net/about/>`_ режиме, однако, Есть никаких ограничений.
.. topic:: Знак коробку файл я хочу удалить отключена. Что я должен сделать?
Вы не можете пометить ссылки (первый файл) дубликат группы. Однако то, что вы можете сделать, заключается в содействии дублировать файл справки. Таким образом, если файл, который Вы хотите, чтобы отметить это ссылки, выделите дубликатов файлов в группу, которую вы хотите продвигать на ссылку, и нажмите на кнопку **Действия -> Добавить выбранной ссылки** . Если ссылка файл из папки ссылки (имя файла написаны на синими буквами), вы не можете удалить его из исходного положения.
.. topic:: У меня есть папка, из которой я действительно не хочу, чтобы удалить файлы.
IЕсли вы хотите быть уверены, что dupeGuru никогда не будет удалять файл из определенной папки, убедитесь, что установили в состояние **Ссылка** на: документ: `папки`.
.. topic:: Что это за '(X отбрасывается) "уведомление в строке состояния?
В некоторых случаях, несколько матчей не включены в окончательные результаты по соображениям безопасности. Позвольте мне привести пример. У нас есть 3 файла: A, B и C. Мы сканируем их с помощью фильтра низких твердости.Сканер определяет, что матчи с B, матчи с С, но делает B ** не ** матч с С. При этом, dupeGuru имеет вид проблемы. Она не может создать дубликат группы А, В и С в это, потому что не все файлы в группе будет соответствовать вместе. Это может создать 2 группы: одна группа AB, а затем одна группа AC, но это не будет, по соображениям безопасности. Давайте думать об этом: если Б не совпадает с С, она, вероятно, означает, что либо B, C или оба на самом деле не дубликаты. Если не было бы 2 группы (АВ и АС), вы бы в конечном итоге удалить оба B и C. И если один из них не дублировать, что на самом деле не то, что вы хотите делать, правильно? Так что dupeGuru делает в таком случае является, чтобы отменить матч AC (и добавляет уведомление в строке состояния). Таким образом, если вы удалите B и повторно запустить сканирование, вам придется соответствовать переменного тока в следующий результат.
.. topic:: Я хочу, чтобы отметить все файлы из определенной папки. Что я могу сделать?
Включить: документ: `обманутые Только <результаты>` режим и нажать на папку колонки для сортировки дубликатов по папкам. Затем он будет легким для вас, чтобы выбрать все дубликаты из той же папке, а затем нажать клавишу пробел, чтобы отметить все выбранные дубликатов.
.. only:: edition_se or edition_pe
.. topic:: Я хочу, чтобы удалить все файлы, которые более 300 Кб от их ссылке на файл. Что я могу сделать?
* Включить :doc:`Только обманутые <results>` режим.
* Включить **Значения Делта** режим.
* Нажмите на "размер" столбца для сортировки результатов по размеру.
* Выбрать все дубликаты ниже -300.
* Нажмите на **Удалить выбранные из результатов**.
* Выбрать все дубликаты более 300.
* Нажмите на **Удалить выбранные из результатов**.
.. topic:: Я хочу, чтобы мои последние измененные файлы файлы справки. Что я могу сделать?
* Включить: документ: `обманутые Только <результаты>` режим.
* Включить **Значения делта** режим.
* Нажмите на колонку "Модификация" для сортировки результатов по дате изменения.
* Нажмите на колонку "Модификация" снова изменить порядок сортировки.
* Выберите все дубликаты на 0.
* Нажмите на **Сделать выбранной ссылки**.
.. topic:: Я хочу, чтобы отметить все дубликаты, содержащие слово "копия". Как мне это сделать?
* **Windows**: Нажмите на **Действия -> Применить фильтр**, затем введите "копия", нажмите кнопку ОК.
* **Mac OS X**: тип "копия" в "Фильтр" поле на панели инструментов.
* Нажмите на **Отметить -> Отметить все**.
.. only:: edition_me
.. topic:: Я хочу, чтобы удалить все песни, которые более чем на 3 секунды от своей ссылке на файл. Что я могу сделать?
* Включить: документ: `обманутые Только <результаты>` режим.
* Включить **Значения делта** режим.
* Нажмите на "Время" колонку для сортировки результатов по времени.
* Выберите все дубликаты ниже -00:03.
* Нажмите на **Удалить выбранные из результатов**.
* Выберите все дубликаты на 00:03.
* Нажмите на **Удалить выбранные из результатов**.
.. topic:: Я хочу, чтобы мой высокий битрейт файлов песни ссылки. Что я могу сделать?
* Включить: документ: `обманутые Только <результаты>` режиме
* Включить **Значения делта** режим.
* Нажмите на кнопку "Битрейт" колонку для сортировки результатов по битрейт.
* Нажмите на кнопку "Битрейт" колонна снова изменить порядок сортировки.
* Выберите все дубликаты на 0.
* Нажмите на **Сделать выбранной ссылки**.
.. topic:: Я не хочу [жить] и [ремикс] версии моих песен считаться дубликатами. Как мне это сделать?
Если ваше сравнение порог достаточно низким, вы, вероятно, в конечном итоге с живой и ремикс версии ваших песен в своих результатах. Там вы ничего не можете сделать, чтобы предотвратить это, но есть кое-что можно сделать, чтобы легко удалить их со своего результаты после сканирования: после сканирования, фильтрации. Если, например, вы хотите удалить все песни с чем-либо в квадратных скобках []:
* **Windows**: Нажмите на **Действия -> Применить фильтр**, а затем введите "[*]", нажмите кнопку ОК.
* **Mac OS X**: Тип "[*]" в "Фильтр" поле на панели инструментов.
* Нажмите на Отметить **-> Отметить все**.
* Нажмите на **Действия -> Удалить выбранные из результатов**.
.. topic:: Я пытался отправить свои дубликаты в корзину, но dupeGuru говорит мне, он не может это сделать. Почему? Что я могу сделать?
Большую часть времени, поэтому dupeGuru не можете отправлять файлы в корзину из-за права доступа к файлам. Вы должны написать * * разрешения на файлы, которые вы хотите отправить в корзину. Если вы не знакомы с командной строкой, вы можете использовать утилиты, такие как `BatChmod <http://macchampion.com/arbysoft/BatchMod>` _ исправить Ваши права.
Если dupeGuru еще дает вам неприятности после фиксации ваших прав, было несколько случаев, когда с помощью "Перемещение Помечено к ..." в качестве обходного пути сделали свое дело. Таким образом, вместо отправки файлов в корзину, вы посылаете их во временную папку с "Переместить Отмеченные к ..." действия, а затем вы удалите эту временную папку вручную.
.. only:: edition_pe
Если вы пытаетесь удалить *Iphoto* фотографии, то причина сбоя иная.Удаление не выполняется, так dupeGuru не может общаться с Iphoto. Учтите, что для удаления корректной работы, вы не должны играть вокруг Iphoto в то время как dupeGuru работает. Кроме того, иногда, система Applescript, кажется, не знают, где найти Iphoto запустить его. Это может помочь в таких случаях для запуска Iphoto *до* вы посылаете дубликатов в корзину.
Если все это не так, `контакт с поддержки HS <http://www.hardcoded.net/support>`_, мы поможем Вас.

23
help/ru/folders.rst Executable file
View File

@@ -0,0 +1,23 @@
Выбор папки
================
Первое окно, вы видите, когда вы запускаете dupeGuru это окно выбора папки. Это окно содержит список папок, которые будут сканироваться при нажатии на **Scan**.
Это окно довольно проста в использовании. Если вы хотите добавить папку, нажмите на кнопку **+**. Если вы добавили папки прежде, всплывающее меню со списком последних папки добавил появится. Вы можете нажать на одну из них, чтобы добавить его прямо в свой список. Если нажать на первый пункт всплывающего меню, **Добавить новую папку ...**, вам будет предложено ввести папку добавить. Если вы никогда не добавляется папка, не появится меню, и вы будете непосредственно будет предложено ввести новую папку добавить.
Альтернативный способ для добавления папок в список, чтобы перетащить их в списке.
Чтобы удалить папку, выберите папку, удалить, и нажмите на **-**. Если папке выбирается при нажатии кнопки, выбранной папки будет установлен в ** ** исключены состояния (см. ниже), а не удален.
Папка государств
----------------
Каждая папка может находиться в одном из этих 3-х государств:
* **Нормальный:** дубликаты найдены в эту папку можно удалить.
* **Справка:** Дубликаты найти в этой папке не может **быть удалены** . Файлы из этой папки можно только в конечном итоге в **ссылка** позиция в группе обмануть. Если более чем один файл из папки ссылку в конечном итоге в той же группе обмануть, только один, будут сохранены.Другие будут удалены из группы.
* **Не включено:** Файлы в этом каталоге не будет включен в проверку.
Состояние по умолчанию к папке, конечно, **Нормальный**. Вы можете использовать **Ссылка** состояние для папки, если вы хотите быть уверены, что вы не будете удалять любые файлы из него.
Когда вы устанавливаете состояние каталог, все подпапки этой папки автоматически наследует это состояние, если явно не включенное состояние подпапку в.

39
help/ru/index.rst Executable file
View File

@@ -0,0 +1,39 @@
|appname| help
===============
.. only:: edition_se
Этот документ также доступна на `французском <http://www.hardcoded.net/dupeguru/help/fr/>`__, `немецком <http://www.hardcoded.net/dupeguru/help/de/>`__ и `армянский <http://www.hardcoded.net/dupeguru/help/hy/>`__.
.. only:: edition_me
Этот документ также доступна на `французском <http://www.hardcoded.net/dupeguru_me/help/fr/>`__, `немецкий <http://www.hardcoded.net/dupeguru_me/help/de/>`__ и `армянский <http://www.hardcoded.net/dupeguru_me/help/hy/>`__.
.. only:: edition_pe
Этот документ также доступна на `французском <http://www.hardcoded.net/dupeguru_pe/help/fr/>`__, `немецкий <http://www.hardcoded.net/dupeguru_pe/help/de/>`__ и `армянский <http://www.hardcoded.net/dupeguru_pe/help/hy/>`__.
.. only:: edition_se or edition_me
|appname| есть инструмент для поиска дубликатов файлов на вашем компьютере. Он может сканировать либо имен файлов или содержимого.Имя файла функций сканирования нечеткого соответствия алгоритма, который позволяет найти одинаковые имена файлов, даже если они не совсем то же самое.
.. only:: edition_pe
dupeGuru Picture Edition (PE для краткости) представляет собой инструмент для поиска дубликатов фотографий на вашем компьютере. Не только он может найти точные соответствия, но он также может найти дубликаты среди фотографий разного рода (PNG, JPG, GIF и т.д..) И качество.
Хотя dupeGuru может быть легко использована без документации, чтение этого файла поможет вам освоить его. Если вы ищете руководство для вашей первой дублировать сканирования, вы можете взглянуть на раздел :doc:`Быстрый <quick_start>` Начало.
Это хорошая идея, чтобы сохранить |appname| обновлен. Вы можете скачать последнюю версию на своей `homepage`_.
Содержание:
.. toctree::
:maxdepth: 2
quick_start
folders
preferences
results
reprioritize
faq
changelog
credits

63
help/ru/preferences.rst Executable file
View File

@@ -0,0 +1,63 @@
Предпочтения
=============
.. only:: edition_se
**Тип сканирования:** Этот параметр определяет, какой аспект файлы будут сравниваться в дубликат сканирования. Если выбрать **Имя файла**, dupeGuru будем сравнивать каждое имена файлов слово за слово, и, в зависимости от других параметров ниже, он будет определять, достаточно ли слов соответствие рассмотреть 2 файлов дубликатов. Если выбрать **Содержимое**, только файлы с точно такой же контент будет матч.
**Папки** типа сканирования немного особенным. Когда вы выбираете его, dupeGuru проведет поиск дубликатов *папки* вместо того, чтобы дубликатов файлов. Для определения того, две папки, дублируют друг друга, все файлы, содержащиеся в папках будут проверяться, и если содержание **все** файлы в матче папки, папки будут считаться дубликатами.
**Фильтра Твердость:** Если вы выбрали **Имя файла** типа сканирования, эта опция определяет, как похожи два имени должно быть для dupeGuru рассматривать их дубликатов. Если фильтр твердости, например 80, то это означает, что 80% слов из двух имен файлов должны совпадать. Для определения соответствия процент, dupeGuru первой подсчитывает общее количество слов в **обоих** файла, то подсчитать количество слов соответствия (каждое слово соответствия считаются 2), а затем разделите количество слов соответствия на общее число слов. Если результат больше или равно фильтр твердость, у нас есть дубликаты матча. Например, "ABCD" и "CDE" имеют соответствующий процент 57 (4 слова соответствия, 7 всего слов).
.. only:: edition_me
**Тип сканирования:** Этот параметр определяет, какой аспект файлы будут сравниваться в дубликат сканирования.Характер дублировать сканирования варьируется в зависимости от того, что вы выбираете для этой опции.
* **Имя файла:** Каждая песня будет иметь свой файл разбит на слова, а затем каждое слово будет по сравнению с вычислить соответствующие проценты. Если этот процент выше или равна **жесткость фильтра** (см. ниже подробнее), dupeGuru рассмотрит 2 песни дубликатов.
* **Имя файла - Поля: **Как**Имя файла**, за исключением того, что как только имя файла были разделены на слова, эти слова затем группируются в поля.Разделитель полей "-".Окончательный процент соответствия будет самым низким соответствующий процент среди полей. Таким образом, "Исполнитель - Название" и "Артист - Другие Название" будет иметь соответствующий процент 50 (С **Имя файла** сканирования, это будет 75).
* **Имя файла - Поля (нет приказа):**Как**Имя файла-Поля**, кроме того, что порядок полей не имеет значения. Например, "Исполнитель - Название" и "Название - Артист" будет иметь соответствующий процент из 100 вместо 0.
* **Теги:** Этот метод считывает метки (метаданные) каждой песни и сравнить их полям. Этот метод, как Супер **- Поля**, считает низкий соответствующее поле в качестве окончательного соответствующий процент.
* **Состав:** Этот метод сканирования использовать фактическое содержание песни, чтобы определить, какие являются дубликатами. За 2 песни в соответствии с этим методом, они должны иметь точно **такой же содержания**.
* **Аудио контента:** То же содержание, но только в аудио-контент сравнивается (без метаданных).
**Фильтра Твердость:** Если вы выбрали имя файла или тегами типа сканирования, эта опция определяет, как похожи два имени / теги должны быть для dupeGuru рассматривать их дубликатов. Если фильтр твердости, например 80, то это означает, что 80% слов из двух имен файлов должны совпадать. Для определения соответствия процент, dupeGuru первой подсчитывает общее количество слов в **обоих** файла, то подсчитать количество слов соответствия (каждое слово соответствия считаются 2), а затем разделите количество слов соответствия на общее число слов. Если результат больше или равно фильтр твердость, у нас есть дубликаты матча. Например, "ABCD" и "CDE" имеют соответствующий процент 57 (4 слова соответствия, 7 всего слов).
**Теги для сканирования:** При использовании **Тега** Слова типа сканирования, вы можете выбрать теги, которые будут использоваться для сравнения.
.. only:: edition_se or edition_me
**Слово взвешивания:** Если вы выбрали **Имя файла** типа сканирования, этот вариант несколько изменений, как соответствующий процент рассчитывается. При слове взвешивания, вместо того, значение 1 в дубликат счета и общее количество слов, каждое слово имеет значение, равное количество символов, которые они имеют. При слове взвешивание, "AB CDE FGHI" и "AB CDE fghij" будет иметь соответствующий процент 53% (19 Персонажей, 10 символов, соответствующая (4 для "б" и 6 "CDE")).
**Совпадения похожих слов:** Если вы включите эту опцию, подобные слова будут засчитаны как спички. Например, "Белая полоса" будет совпадать% из 100 вместо 66 с, что функция включена. **Внимание:** Используйте эту опцию с осторожностью. Вполне вероятно, что вы получите много ложных срабатываний в результатах при его включении. Тем не менее, это поможет вам найти дубликаты, что вы не нашли бы в противном случае.Процесс сканирования также значительно медленнее, эта опция включена.
.. only:: edition_pe
**Тип сканирования:** Этот параметр определяет тип сканирования, которые будут сделаны на ваши картины.**Сканирования** Содержание типа сравнивает фактическое содержание фотографий нечеткие пути (что делает его можно найти не только точными копиями, но и подобные).**EXIF Timestamp** тип сканирования смотрит на метаданные EXIF с фото (если он существует) и соответствует фотографии, которые имеют такой же. Это намного быстрее, чем сканирование содержимого. **Внимание:** Измененные фотографии часто держат же метка EXIF, так что следите за ложных срабатываний, когда вы используете, что тип сканирования.
**Фильтра Твердость:** *Содержание тип сканирования только.* Чем больше этот параметр, "тяжелее" является фильтром (Другими словами, тем меньше результатов Вы получите). Большинство фотографий одного и того же матча качества на 100%, даже если формат отличается (PNG и JPG, например.). Однако, если вы хотите, чтобы соответствовать PNG с более низким качеством JPG, вам придется установить фильтром твердость ниже, чем 100.По умолчанию, 95, это сладкое место.
**Совпадения рисунки разных размеров:** Если вы установите этот флажок, фотографии разных размеров будет разрешен в том же дубликат группы.
**Можно смешивать файл вида:** Если вы установите этот флажок, дублировать группам разрешается есть файлы с различными расширениями. Если вы не проверить его, ну, они не являются!
**Игнорировать дубликаты hardlinking в тот же файл:** Если эта опция включена, dupeGuru проверит дубликаты, чтобы увидеть если они ссылаются на тот же индексный `дескриптор <http://en.wikipedia.org/wiki/Inode>`_. Если они это сделают, они не будут считаться дубликатами. (Только для OS X и Linux)
**Использование регулярных выражений при фильтрации:** Если вы отметите этот флажок, фильтрация будет рассматривать ваш запрос фильтра, как **регулярное выражение**. Объясняя их выходит за рамки этого документа.Хорошее место для начала обучения он `regular-expressions.info <http://www.regular-expressions.info>`_.
**Удаление пустых папок после удаления или перемещения:** Когда эта опция включена, папки будут удалены через файл удален или перемещен и папка пуста.
**Копирование и перемещение:** Определяет, как операции копирования и перемещения (в меню Действия) будет себя вести.
* **Право на назначение:** Все файлы будут отправлены непосредственно в пункт назначения, не пытаясь воссоздать исходный путь вообще.
* **Повторно относительный путь:** путь исходный файл будет воссоздан в папке назначения, вплоть до корневого выделение в панели директорей. Например, если вы добавили ``/Users/foobar/SomeFolder`` на панель Каталоги и перемещении ``/Users/foobar/SomeFolder/SubFolder/SomeFile.ext`` до места назначения ``/Users/foobar/MyDestination``, конечным пунктом назначения для файла будет ``/Users/foobar/MyDestination/SubFolder`` (``SomeFolder`` были сокращены с пути источника в конечный пункт назначения.).
* **Повторно абсолютный путь:** путь исходный файл будет воссоздан в папке назначения в полном комплекте. Например, если вы перемещаете ``/Users/foobar/SomeFolder/SubFolder/SomeFile.ext`` до места назначения ``/Users/foobar/MyDestination``, конечным пунктом назначения для файла будет ``/Users/foobar/MyDestination/Users/foobar/SomeFolder/SubFolder``.
Во всех случаях, dupeGuru красиво ручки конфликтов имен путем добавления номера назначения имя файла, если имя файла уже существует в месте назначения.
**Специальной команды:** Это предпочтение определяет команду, которая будет вызываться "Вызов специальной команды" действия. Вы можете ссылаться ни на какие внешние приложения через это действие. Это может быть полезно, если, например, у вас есть хорошее приложение сравниваете установлены.
Формат команды такой же, как то, что вы должны написать в командной строке, за исключением того, что Есть 2 заполнителей: **%d** and **%r**. Эти заполнители будут заменены на путь выбран обманут (%d) и путь к ссылке на файл выбранного обмануть (%r).
Если путь к исполняемому содержит пробелы, необходимо заключить его в "" кавычки. Вы также должны приложить заполнителей в кавычки, потому что это очень возможно, что путь к обманутых и ссылки будут содержать пробелы. Вот пример пользовательской команды:
"C:\Program Files\SuperDiffProg\SuperDiffProg.exe" "%d" "%r"

14
help/ru/quick_start.rst Executable file
View File

@@ -0,0 +1,14 @@
Быстрый старт
=============
Чтобы вы быстро начали с dupeGuru, давайте просто делать сканирование с помощью стандартных настроек по умолчанию.
* Запуск dupeGuru.
* Добавление папок для сканирования либо перетащить & капли или кнопку "+".
* Нажмите на **сканирование**.
* Подождите, пока процесс сканирования завершен.
* Посмотрите на каждый дубликат (файлы, которые отступом) и убедитесь, что это действительно дубликат ссылкой группы (файл выше дублировать без отступа и инвалидов окна знак).
* Если файл ложных дубликатов, выделите ее и нажмите **Действия -> Удалить выбранные из результатов**.
* Если вы уверены, что нет ложных дубликатов в результатах, нажмите на **Изменить -> Отметить Все**, а затем **Действия -> Отправить Помечено в Корзину**.
Это только основные сканирования. Есть много настройки вы можете сделать, чтобы получить разные результаты и несколько методов изучения и изменения ваших результатов. Чтобы узнать о них, только что прочитал остальную часть этого файла справки.

25
help/ru/reprioritize.rst Executable file
View File

@@ -0,0 +1,25 @@
Повторное приоритетов дубликатов
================================
dupeGuru пытается автоматически определить, какие дубликат должен отправиться в ссылку каждой группы
позиции, но иногда это делается неправильно. Во многих случаях, умный обмануть сортировки с "Ценности Дельта"
и "обманутые Только" варианты в дополнение к "Сделать выбранной ссылки" действие делает трюк, но
иногда, более мощный вариант не требуется. Здесь изменения приоритетов в диалог вступает в
играть. Вы можете вызвать его через "изменить приоритеты Результаты" пункт в меню "Действия".
Этот диалог позволяет вам выбрать критерии, по которым ссылка обмануть будут отобраны в
каждой группе обмануть.Список доступных критериев слева и перечень критериев вы
Выбранная справа.
Критериев категории следуют аргумент. Например, "Размер (Высший)" означает, что обмануть
с крупным размером победит. "Свойства папки (/ Foo / Bar)" означает, что обманутые в этой папке будет победить. Для добавления
критерий правом списке, сначала выберите категорию в выпадающем списке, затем выберите
subargument в приведенном ниже списке, а затем нажмите на правую стрелку кнопки.
Порядок списка справа важно (вы можете изменить порядок элементов через перетащить и отпустить). когда
сбор обмануть для справки позицию, первый критерий используется. Если есть галстук, второй
критерий используется и так далее и так далее. Например, если ваши аргументы "Размер (высший)", а затем
"Имя файла (Не оканчивается на номер)", ссылке на файл, который будет выбран в группе будет
крупнейших файл, а если два или несколько файлов имеют одинаковый размер, который имеет имя файла с
не заканчивается номер будет использоваться. Когда все критерии привести к связи, порядок, в котором обманутые
ранее были в группе будет использоваться.

94
help/ru/results.rst Executable file
View File

@@ -0,0 +1,94 @@
Результаты
==========
Когда dupeGuru завершения сканирования на наличие дубликатов, он покажет его результаты в виде дубликата список группы.
О дубликат группы
----------------------
Дубликат группа представляет собой группу файлов, которые весь матч вместе. Каждая группа имеет **ссылке** на файл и одного или более **одинаковых файлов**. Ссылки файл первый файл группы. Его марка окно отключено. Под ним, и с отступом, которые дубликатов файлов.
Вы можете отметить дубликатов файлов, но вы никогда не можете пометить ссылки файл группы. Это мера безопасности, чтобы предотвратить dupeGuru от удаления не только повторяющиеся файлы, но их ссылки. Ты уверен, что не хочу этого, не так ли?
Что определяет, какие файлы ссылки и какие файлы являются дубликатами сначала свою папку государства. Файл с ссылкой папка всегда будет ссылка в дубликат группы. Если все файлы из обычной папки, размер определить, какой файл будет ведения дубликат группы. dupeGuru предполагает, что вы всегда хотите сохранить крупнейших файл, так что крупных файлов займет исходное положение.
Вы можете изменить ссылку файл группы вручную. Для этого выберите дубликат файла, который вы хотите продвигать на ссылку, и нажмите на кнопку **Действия -> Добавить выбранной ссылки**.
Просмотр результатов
--------------------
Хотя вы можете просто нажать на **Правка -> Выделить все, а затем** **Действия -> Отправить Помечено в Корзину** быстро удалить все дубликаты файлов в результатах, всегда рекомендуется пересмотреть все дубликаты перед удаляя их.
Чтобы помочь вам обзор результатов, вы можете вызвать панель **Подробнее**. Эта панель показывает все детали выбранного файла, а также подробности своей ссылки в. Это очень удобно, чтобы быстро определить, если дубликат действительно дубликат. Вы также можете дважды щелкнуть по файлу, чтобы открыть его и связанные с ним приложения.
Если у вас есть больше ложных дубликатов, чем правда дубликатов (Если Ваш фильтр жесткость очень низкая), лучший способ продолжить бы пересмотреть дубликатов, знак истинного дубликаты и нажмите **Действия -> Отправить Помечено в Корзину** . Если у вас есть более верно, чем ложных дубликатов дубликатов, вместо этого можно пометить все файлы, которые являются ложными дубликатов, а также использовать **Действия -> Удалить Помеченные от результатов**.
Маркировка и выбор
---------------------
**Отмеченные** дубликат двух экземплярах с небольшой флажок рядом с ним, имеющие галочки. **Выбран дубликат дубликата** быть выделены. Несколько действий, выбор может быть выполнена в dupeGuru стандартным образом (Shift / Command / Control клик). Вы можете переключать знак состояние всех выбранных дубликаты ", нажав **пространстве**.
Показать только обманутые
-------------------------
Когда этот режим включен, дубликаты отображаются без их соответствующего файла справки. Вы можете выбрать, марка и сортировать этот список, как и в обычном режиме.
DupeGuru результаты, когда в нормальном режиме, сортируются в соответствии с дубликат группы '**ссылке на файл**. Это означает, что если вы хотите, например, чтобы отметить все дубликаты "EXE" расширением, вы не можете просто сортировать результаты по "Вид", чтобы иметь все EXE дубликатов вместе, потому что группа может состоять из более чем одного типа файлов . Вот где обманутые Только режим вступает в игру. Чтобы отметить все ваши "EXE" дубликаты, вы просто должны:
* Включить обманутые Только режим.
* Добавить "Вид" колонку "Столбцы" меню.
* Нажмите на том, что "Вид" колонки, чтобы отсортировать список по типу.
* Найдите первый дубликат с "EXE" рода.
* Выберите его.
* Прокрутите список, чтобы найти последнего дубликата с "EXE" рода.
* Удерживайте Shift и щелкните по нему.
* Нажмите Space, чтобы пометить все выбранные дубликатов.
Дельта значения
---------------
Если включить этот переключатель на некоторые столбцы будут отображать значение по отношению к дубликата ссылке, а не абсолютные значения. Эти дельты значения также будут отображаться в разные цвета, чтобы вы могли заметить их легко. Например, если дубликат 1,2 Мб и свою ссылку в 1,4 Мб, размер столбец отображает -0,2 Мб.
Только обманутые и Дельта значения
----------------------------------
Только обманутые режиме раскрыть свою истинную силу, когда вы используете его с Делта Значения переключатель включен. Когда вы включите его, относительные значения будет отображаться вместо абсолютных. Так что если, например, вы хотите удалить из результатов все дубликаты, которые являются более 300 Кб от их ссылке, вы можете отсортировать дубликаты только результаты по размеру, выберите все дубликаты при -300 в столбце Размер, удалять их, , а затем сделать то же самое повторяет более 300 в нижней части списка.
Вы можете также использовать его для изменения ссылки приоритет повторяющиеся список. Когда вы делаете свежие сканирования, если Есть нет ссылки папки, ссылке на файл каждой группы является самой большой файл. Если вы хотите изменить, что, например, в последней модификации время, вы можете отсортировать дубликаты только результаты по времени модификации в **убывания** порядке выберите все дубликаты со временем изменения дельты значение больше 0 и нажмите **Убедитесь, выбранной ссылки**. Причина, почему вы должны сделать порядок сортировки по убыванию, потому что если 2 файла среди таких же дубликат группы выбираются при нажатии на **Сделать выбранной ссылки**, только первый из списка будут сделаны ссылки, другие будут проигнорированы . И так как вы хотите Последнее изменение файла для ссылки, имеющие порядок сортировки по убыванию уверяет вас, что первым пунктом в списке будет последнего изменения.
Фильтрация
----------
dupeGuru поддерживает после сканирования, фильтрации. С его помощью вы можете сузить результаты, чтобы вы могли выполнять действия, на подмножества. Например, вы можете легко пометить все дубликаты с их имя файла, содержащего "копировать" из результатов с помощью фильтра.
**Windows:** Для использования функции фильтрации, нажмите на Действия -> Применить фильтр, запишите фильтр, который вы хотите применить и нажмите ОК. Чтобы вернуться к нефильтрованное результаты, нажмите на Действия -> Отменить фильтр.
**Mac OS X:** Для использования функции фильтрации, тип фильтра в "Фильтр" поле поиска на панели инструментов. Чтобы вернуться к нефильтрованное результате, очистите поле, или нажмите на кнопку "X".
В простом режиме (режим по умолчанию), что вы вводите в качестве фильтра строку, используемую для выполнения фактической фильтрации, за исключением одной маски: **\***. Таким образом, если вы введете "[*]" как ваш фильтр, он будет соответствовать что-нибудь с [] скобках в нем, все, что между этими скобками.
Для более продвинутых фильтров, вы можете включить «Использование регулярных выражений при фильтрации" на. Функция фильтрации будет использовать регулярные выражения. Регулярное выражение языка для согласования текста. Объясняя их выходит за рамки этого документа. Хорошее место для начала обучения он `regular_expressions.info` <http://www.regular-expressions.info>_.
Матчи не чувствительны к регистру, в простых и регулярных выражений режиме.
Для фильтра, чтобы соответствовать, регулярное выражение не обязательно должно совпадать целый файл, он просто обязан содержать в цепочку, соответствующую выражению.
Вы могли заметить, что не все дубликаты в результате будут соответствовать вашим фильтром. Это потому, что как только одна копия в матчах группового фильтра, то вся группа останется в результатах, таким образом Вы можете иметь более четкое представление о дубликата контексте. Тем не менее, не соответствующие дубликаты в "ссылку режиме". Таким образом, можно выполнять действия, как Марк все и обязательно только знак фильтруется дубликатов.
Действие меню
-------------
* **Открытый черный список:** Удалите все игнорируют матчи вы добавили. Вы должны начать новый поиск вновь очищается список игнорируемых чтобы быть эффективными.
* **Экспорт результатов в XHTML:** Возьмите текущие результаты, а также создавать файл XHTML из него. Столбцов, которые видны при нажатии на эту кнопку будет столбцов в файле XHTML. Файл автоматически откроется в браузере по умолчанию.
* **Отправить Помечено в корзину:** Отправить все отмеченные дубликаты, мусор, это очевидно.
* **Удалить Помеченные и замена с Жесткие**: Передает все отмеченные дубликаты, мусор, но после того, как сделали это, удаленные файлы заменяются `жестких <http://en.wikipedia.org/wiki/Hard_link>`_ ссылку к ссылке на файл. (Только для OS X и Linux)
* **Перемещение Помечено в ...:** запросит назначения, а затем переместить все отмеченные файлы в том, что назначения. Путь исходного файла может быть воссоздан в пункт назначения, в зависимости от "Копирование и перемещение" предпочтения.
* **Скопируйте Помечено в ...:** запросит у вас место, а затем скопировать все выбранные файлы к этому пункту назначения. Путь исходного файла может быть воссоздан в пункт назначения, в зависимости от "Копирование и перемещение" предпочтения.
* **Удалить Помеченные из результатов:** Удалить все отмеченные дубликатов из результата поиска. Сами файлы не будут затронуты и останутся, где они.
* **Удалить выбранные из результатов:** Удалить все выбранные дубликатов из результата поиска. Обратите внимание, что все выбранные файлы ссылки будут игнорироваться, только дубликаты могут быть удалены с этим действием.
* **Сделать Выбранный Справка:** Содействие все выбранные дубликатов ссылки. Если дубликат частью группы, имеющей ссылке на файл ближайшие из ссылки папки (в синий цвет), не будут приняты меры для этого дубликат. Если более чем один дубликат среди той же группы выбраны, только первый из каждой группы будет поощряться.
* **Добавить выбранные в черный список:** Это сначала удаляет все выбранные дубликаты из результатов, а затем добавить матча, которые дублируют и опорный ток в черный список. Этот матч не придет снова в дальнейшей проверки. Копировать себя и, возможно, вернется, но он будет искаться в другой ссылке на файл. Вы можете очистить список игнорируемых с Открытый черный список команды.
* **Открытое Выбранный с приложений по умолчанию:** Откройте файл с помощью приложения, связанного с типом выбранного файла.
* **Показать Выбранный в Finder-е:** Откройте папку, содержащую выбранный файл.
* **Вызов специальной команды:** Вызывает внешнюю программу вы установили в настройках с использованием выделенного фрагмента в качестве аргументов в вызове.
* **Переименования выбрано:** Запрашивает новое имя, а затем переименовать выбранный файл.

View File

@@ -11,15 +11,15 @@ msgstr ""
msgid "You cannot delete, move or copy more than 10 duplicates at once in demo mode."
msgstr ""
#: core/app.py:420
#: core/app.py:422
msgid "Collecting files to scan"
msgstr ""
#: core/app.py:431
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr ""
#: core/app.py:470
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr ""
@@ -75,11 +75,11 @@ msgstr ""
msgid "Oldest"
msgstr ""
#: core/results.py:95
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr ""
#: core/results.py:102
#: core/results.py:120
msgid " filter: %s"
msgstr ""

View File

@@ -12,15 +12,15 @@ msgid ""
"mode."
msgstr ""
#: core/app.py:420
#: core/app.py:422
msgid "Collecting files to scan"
msgstr "Shromažďuji prohlížené soubory"
#: core/app.py:431
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr "Vybrané adresáře neobsahují žádné soubory vhodné k prohledávání."
#: core/app.py:470
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr "%s (%d vyřazeno)"
@@ -76,11 +76,11 @@ msgstr "Nejnovější"
msgid "Oldest"
msgstr "Nejstarší"
#: core/results.py:95
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "%d / %d (%s / %s) duplicit označeno."
#: core/results.py:102
#: core/results.py:120
msgid " filter: %s"
msgstr " filtr: %s"

View File

@@ -26,7 +26,7 @@ msgstr ""
msgid "Quit"
msgstr ""
#: qt/base/app.py:110 qt/base/preferences_dialog.py:130
#: qt/base/app.py:110 qt/base/preferences_dialog.py:124
msgid "Preferences"
msgstr ""
@@ -92,23 +92,23 @@ msgstr ""
msgid "Custom Command"
msgstr ""
#: qt/base/app.py:203
#: qt/base/app.py:209
msgid "All files were processed successfully."
msgstr "All files were processed successfully."
#: qt/base/app.py:204
#: qt/base/app.py:210
msgid "Operation Complete"
msgstr ""
#: qt/base/app.py:207
#: qt/base/app.py:213
msgid "Scan complete"
msgstr ""
#: qt/base/app.py:208 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:214 cocoa/base/en.lproj/Localizable.strings:0
msgid "No duplicates found."
msgstr "Nebyli nalezeny žádné duplicity."
#: qt/base/app.py:260 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:266 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
@@ -133,86 +133,85 @@ msgstr "Vybráno"
msgid "Reference"
msgstr "Referenční"
#: qt/base/directories_dialog.py:56 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:58 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Results..."
msgstr "Nahrát výsledky..."
#: qt/base/directories_dialog.py:57 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:59 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Results Window"
msgstr "Okno s výsledky"
#: qt/base/directories_dialog.py:58
#: qt/base/directories_dialog.py:60
msgid "Add Folder..."
msgstr ""
#: qt/base/directories_dialog.py:66 qt/base/result_window.py:82
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:82
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "File"
msgstr "Soubor"
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:90
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:90
msgid "View"
msgstr ""
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:92
#: qt/base/directories_dialog.py:72 qt/base/result_window.py:92
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Help"
msgstr "Nápověda"
#: qt/base/directories_dialog.py:72 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:74 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Recent Results"
msgstr "Nahrát nedávné výsledky"
#: qt/base/directories_dialog.py:106
#: qt/base/directories_dialog.py:108
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Select folders to scan and press \"Scan\"."
msgstr "Vyberte složky, které chcete prohledat a stiskněte \"Prohledat\"."
#: qt/base/directories_dialog.py:135
#: qt/base/directories_dialog.py:132
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Load Results"
msgstr "Nahrát výsledky"
#: qt/base/directories_dialog.py:138
#: qt/base/directories_dialog.py:135
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Scan"
msgstr "Prohledat"
#: qt/base/directories_dialog.py:175
#: qt/base/directories_dialog.py:179
msgid "Unsaved results"
msgstr ""
#: qt/base/directories_dialog.py:176 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:180 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr "Máte neuložené výsledky, opravdu si přejete skončit?"
#: qt/base/directories_dialog.py:184 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:188 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr "Vyberte složku, kterou chcete přidat do prohledávacího seznamu"
#: qt/base/directories_dialog.py:201 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:205 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
msgstr "Vyberte soubor s výsledky, který chcete nahrát"
#: qt/base/directories_dialog.py:202
#: qt/base/directories_dialog.py:206
msgid "All Files (*.*)"
msgstr ""
#: qt/base/directories_dialog.py:202 qt/base/result_window.py:334
#: qt/base/directories_dialog.py:206 qt/base/result_window.py:334
msgid "dupeGuru Results (*.dupeguru)"
msgstr ""
#: qt/base/directories_dialog.py:220
#: qt/base/directories_dialog.py:217
msgid "Start a new scan"
msgstr ""
#: qt/base/directories_dialog.py:221 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:218 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr "Máte neuložené výsledky, opravdu si přejete pokračovat?"
#: qt/base/directories_model.py:22
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Name"
msgstr "Název"
@@ -260,78 +259,62 @@ msgstr "Přispět"
msgid "Continue"
msgstr "Pokračovat"
#: qt/base/preferences_dialog.py:44
#: qt/base/preferences_dialog.py:38
msgid "Scan Type:"
msgstr ""
#: qt/base/preferences_dialog.py:57
#: qt/base/preferences_dialog.py:51
msgid "Filter Hardness:"
msgstr ""
#: qt/base/preferences_dialog.py:83
#: qt/base/preferences_dialog.py:77
msgid "More Results"
msgstr ""
#: qt/base/preferences_dialog.py:88
#: qt/base/preferences_dialog.py:82
msgid "Fewer Results"
msgstr ""
#: qt/base/preferences_dialog.py:95 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:89 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Font size:"
msgstr "Velikost písma:"
#: qt/base/preferences_dialog.py:99
#: qt/base/preferences_dialog.py:93
msgid "Language:"
msgstr ""
#: qt/base/preferences_dialog.py:21
msgid "English"
msgstr ""
#: qt/base/preferences_dialog.py:22
msgid "French"
msgstr ""
#: qt/base/preferences_dialog.py:23
msgid "German"
msgstr ""
#: qt/base/preferences_dialog.py:24
msgid "Chinese (Simplified)"
msgstr ""
#: qt/base/preferences_dialog.py:105 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:99 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Copy and Move:"
msgstr "Kopírovat a přesunout:"
#: qt/base/preferences_dialog.py:108 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:102 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Right in destination"
msgstr "Přímo v cílovém umístění"
#: qt/base/preferences_dialog.py:109 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:103 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate relative path"
msgstr "Vytvořit s relativní cestou"
#: qt/base/preferences_dialog.py:110 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:104 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate absolute path"
msgstr "Vytvořit s absolutní cestou"
#: qt/base/preferences_dialog.py:113 cocoa/me/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:107 cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr "Uživatelský příkaz (argumenty: %d pro duplicity, %r pro odkazy):"
#: qt/base/preferences_dialog.py:191
#: qt/base/preferences_dialog.py:185
msgid "dupeGuru has to restart for language changes to take effect."
msgstr "dupeGuru has to restart for language changes to take effect."
@@ -945,10 +928,6 @@ msgstr "Po smazání a přesunu odstranit prázdné složky"
msgid "dupeGuru PE Preferences"
msgstr "Předvolby dupeGuru PE"
#: qt/base/preferences_dialog.py:25
msgid "Czech"
msgstr ""
#: cocoa/inter/app.py:21
msgid "Sending to Trash"
msgstr "Vyhazuji do koše"
@@ -973,10 +952,6 @@ msgstr ""
msgid "The iPhoto application couldn't be found."
msgstr "Nelze najít aplikaci iPhoto."
#: qt/base/preferences_dialog.py:26
msgid "Italian"
msgstr ""
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a directory to copy marked files to"
msgstr "Select a directory to copy marked files to"

View File

@@ -12,15 +12,15 @@ msgid ""
"mode."
msgstr ""
#: core/app.py:420
#: core/app.py:422
msgid "Collecting files to scan"
msgstr "Sammle Dateien zum Scannen"
#: core/app.py:431
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr "Der ausgewählte Ordner enthält keine scannbare Dateien."
#: core/app.py:470
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr "%s (%d verworfen)"
@@ -76,11 +76,11 @@ msgstr "Newest"
msgid "Oldest"
msgstr "Oldest"
#: core/results.py:95
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "%d / %d (%s / %s) Duplikate markiert."
#: core/results.py:102
#: core/results.py:120
msgid " filter: %s"
msgstr " Filter: %s"

View File

@@ -26,7 +26,7 @@ msgstr "Sende Dateien in den Mülleimer"
msgid "Quit"
msgstr "Beenden"
#: qt/base/app.py:110 qt/base/preferences_dialog.py:130
#: qt/base/app.py:110 qt/base/preferences_dialog.py:124
msgid "Preferences"
msgstr "Einstellungen"
@@ -91,23 +91,23 @@ msgstr ""
msgid "Custom Command"
msgstr "Eigener Befehl"
#: qt/base/app.py:203
#: qt/base/app.py:209
msgid "All files were processed successfully."
msgstr "Alle Dateien wurden erfolgreich verarbeitet."
#: qt/base/app.py:204
#: qt/base/app.py:210
msgid "Operation Complete"
msgstr "Operation komplett"
#: qt/base/app.py:207
#: qt/base/app.py:213
msgid "Scan complete"
msgstr "Scan komplett"
#: qt/base/app.py:208 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:214 cocoa/base/en.lproj/Localizable.strings:0
msgid "No duplicates found."
msgstr "Keine Duplikate gefunden."
#: qt/base/app.py:260 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:266 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
@@ -132,86 +132,85 @@ msgstr "Ausgewählt"
msgid "Reference"
msgstr "Referenz"
#: qt/base/directories_dialog.py:56 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:58 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Results..."
msgstr "Lade Ergebnisse..."
#: qt/base/directories_dialog.py:57 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:59 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Results Window"
msgstr "Ergebnisfenster"
#: qt/base/directories_dialog.py:58
#: qt/base/directories_dialog.py:60
msgid "Add Folder..."
msgstr "Ordner hinzufügen..."
#: qt/base/directories_dialog.py:66 qt/base/result_window.py:82
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:82
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "File"
msgstr "Ablage"
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:90
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:90
msgid "View"
msgstr "Ansicht"
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:92
#: qt/base/directories_dialog.py:72 qt/base/result_window.py:92
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Help"
msgstr "Hilfe"
#: qt/base/directories_dialog.py:72 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:74 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Recent Results"
msgstr "Lade letzte Ergebnisse"
#: qt/base/directories_dialog.py:106
#: qt/base/directories_dialog.py:108
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Select folders to scan and press \"Scan\"."
msgstr "Zu scannende Ordner auswählen und \"Scan\" drücken."
#: qt/base/directories_dialog.py:135
#: qt/base/directories_dialog.py:132
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Load Results"
msgstr "Lade Ergebnisse"
#: qt/base/directories_dialog.py:138
#: qt/base/directories_dialog.py:135
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Scan"
msgstr "Scan"
#: qt/base/directories_dialog.py:175
#: qt/base/directories_dialog.py:179
msgid "Unsaved results"
msgstr "Ungespeicherte Ergebnisse"
#: qt/base/directories_dialog.py:176 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:180 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr "Sie haben ungespeicherte Ergebnisse. Wollen Sie wirklich beenden?"
#: qt/base/directories_dialog.py:184 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:188 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr "Wählen Sie einen Ordner aus, um ihn der Scanliste hinzuzufügen."
#: qt/base/directories_dialog.py:201 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:205 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
msgstr "Wählen Sie eine Ergebnisliste zum Laden aus."
#: qt/base/directories_dialog.py:202
#: qt/base/directories_dialog.py:206
msgid "All Files (*.*)"
msgstr "Alle Dateien (*.*)"
#: qt/base/directories_dialog.py:202 qt/base/result_window.py:334
#: qt/base/directories_dialog.py:206 qt/base/result_window.py:334
msgid "dupeGuru Results (*.dupeguru)"
msgstr "dupeGuru Ergebnisse (*.dupeguru)"
#: qt/base/directories_dialog.py:220
#: qt/base/directories_dialog.py:217
msgid "Start a new scan"
msgstr "Starte einen neuen Scan"
#: qt/base/directories_dialog.py:221 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:218 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr "Sie haben ungespeicherte Ergebnisse. Möchten Sie wirklich fortfahren?"
#: qt/base/directories_model.py:22
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Name"
msgstr "Name"
@@ -274,78 +273,62 @@ msgstr "Spenden"
msgid "Continue"
msgstr "Fortfahren"
#: qt/base/preferences_dialog.py:44
#: qt/base/preferences_dialog.py:38
msgid "Scan Type:"
msgstr "Scantyp:"
#: qt/base/preferences_dialog.py:57
#: qt/base/preferences_dialog.py:51
msgid "Filter Hardness:"
msgstr "Filter Empfindlichkeit:"
#: qt/base/preferences_dialog.py:83
#: qt/base/preferences_dialog.py:77
msgid "More Results"
msgstr "mehr Ergebnisse"
#: qt/base/preferences_dialog.py:88
#: qt/base/preferences_dialog.py:82
msgid "Fewer Results"
msgstr "weniger Ergebnisse"
#: qt/base/preferences_dialog.py:95 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:89 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Font size:"
msgstr "Font size:"
#: qt/base/preferences_dialog.py:99
#: qt/base/preferences_dialog.py:93
msgid "Language:"
msgstr "Sprache:"
#: qt/base/preferences_dialog.py:21
msgid "English"
msgstr "Englisch"
#: qt/base/preferences_dialog.py:22
msgid "French"
msgstr "Französisch"
#: qt/base/preferences_dialog.py:23
msgid "German"
msgstr "Deutsch"
#: qt/base/preferences_dialog.py:24
msgid "Chinese (Simplified)"
msgstr ""
#: qt/base/preferences_dialog.py:105 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:99 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Copy and Move:"
msgstr "Kopieren und Verschieben:"
#: qt/base/preferences_dialog.py:108 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:102 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Right in destination"
msgstr "Direkt im Ziel"
#: qt/base/preferences_dialog.py:109 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:103 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate relative path"
msgstr "Relativen Pfad neu erstellen"
#: qt/base/preferences_dialog.py:110 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:104 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate absolute path"
msgstr "Absoluten Pfad neu erstellen"
#: qt/base/preferences_dialog.py:113 cocoa/me/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:107 cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr "Eigener Befehl (Argumente: %d für Duplikat, %r für Referenz):"
#: qt/base/preferences_dialog.py:191
#: qt/base/preferences_dialog.py:185
msgid "dupeGuru has to restart for language changes to take effect."
msgstr "dupeGuru muss neustarten, um die Sprachänderung durchzuführen."
@@ -944,10 +927,6 @@ msgstr "Remove empty folders after delete and move"
msgid "dupeGuru PE Preferences"
msgstr "dupeGuru PE Preferences"
#: qt/base/preferences_dialog.py:25
msgid "Czech"
msgstr ""
#: cocoa/inter/app.py:21
msgid "Sending to Trash"
msgstr "Verschiebe in den Mülleimer"
@@ -972,10 +951,6 @@ msgstr ""
msgid "The iPhoto application couldn't be found."
msgstr "The iPhoto application couldn't be found."
#: qt/base/preferences_dialog.py:26
msgid "Italian"
msgstr ""
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a directory to copy marked files to"
msgstr "Select a directory to copy marked files to"

View File

@@ -12,15 +12,15 @@ msgid ""
"mode."
msgstr ""
#: core/app.py:420
#: core/app.py:422
msgid "Collecting files to scan"
msgstr "Collecte des fichiers à scanner"
#: core/app.py:431
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr "Les dossiers sélectionnés ne contiennent pas de fichiers valides."
#: core/app.py:470
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr "%s (%d hors-groupe)"
@@ -76,11 +76,11 @@ msgstr "Plus récent"
msgid "Oldest"
msgstr "Moins récent"
#: core/results.py:95
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "%d / %d (%s / %s) doublons marqués."
#: core/results.py:102
#: core/results.py:120
msgid " filter: %s"
msgstr " filtre: %s"

View File

@@ -26,7 +26,7 @@ msgstr "Envoi de fichiers à la corbeille"
msgid "Quit"
msgstr "Quitter"
#: qt/base/app.py:110 qt/base/preferences_dialog.py:130
#: qt/base/app.py:110 qt/base/preferences_dialog.py:124
msgid "Preferences"
msgstr "Préférences"
@@ -90,23 +90,23 @@ msgstr ""
msgid "Custom Command"
msgstr "Commande personnalisée"
#: qt/base/app.py:203
#: qt/base/app.py:209
msgid "All files were processed successfully."
msgstr "Tous les fichiers ont été traités avec succès."
#: qt/base/app.py:204
#: qt/base/app.py:210
msgid "Operation Complete"
msgstr "Opération complétée"
#: qt/base/app.py:207
#: qt/base/app.py:213
msgid "Scan complete"
msgstr "Scan complété"
#: qt/base/app.py:208 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:214 cocoa/base/en.lproj/Localizable.strings:0
msgid "No duplicates found."
msgstr "Aucun doublon trouvé."
#: qt/base/app.py:260 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:266 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
@@ -131,87 +131,86 @@ msgstr "Sélectionné"
msgid "Reference"
msgstr "Référence"
#: qt/base/directories_dialog.py:56 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:58 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Results..."
msgstr "Charger résultats..."
#: qt/base/directories_dialog.py:57 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:59 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Results Window"
msgstr "Fenêtre de résultats"
#: qt/base/directories_dialog.py:58
#: qt/base/directories_dialog.py:60
msgid "Add Folder..."
msgstr "Ajouter dossier..."
#: qt/base/directories_dialog.py:66 qt/base/result_window.py:82
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:82
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "File"
msgstr "Fichier"
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:90
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:90
msgid "View"
msgstr "Voir"
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:92
#: qt/base/directories_dialog.py:72 qt/base/result_window.py:92
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Help"
msgstr "Aide"
#: qt/base/directories_dialog.py:72 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:74 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Recent Results"
msgstr "Charger résultats récents"
#: qt/base/directories_dialog.py:106
#: qt/base/directories_dialog.py:108
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Select folders to scan and press \"Scan\"."
msgstr "Sélectionnez les dossiers à scanner puis faites \"Scan\"."
#: qt/base/directories_dialog.py:135
#: qt/base/directories_dialog.py:132
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Load Results"
msgstr "Charger"
#: qt/base/directories_dialog.py:138
#: qt/base/directories_dialog.py:135
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Scan"
msgstr "Scan"
#: qt/base/directories_dialog.py:175
#: qt/base/directories_dialog.py:179
msgid "Unsaved results"
msgstr "Résultats non sauvegardés"
#: qt/base/directories_dialog.py:176 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:180 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr "Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment quitter?"
#: qt/base/directories_dialog.py:184 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:188 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr "Sélectionnez un dossier à ajouter à la liste"
#: qt/base/directories_dialog.py:201 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:205 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
msgstr "Sélectionnez un fichier résultats à charger"
#: qt/base/directories_dialog.py:202
#: qt/base/directories_dialog.py:206
msgid "All Files (*.*)"
msgstr "Tout les fichiers (*.*)"
#: qt/base/directories_dialog.py:202 qt/base/result_window.py:334
#: qt/base/directories_dialog.py:206 qt/base/result_window.py:334
msgid "dupeGuru Results (*.dupeguru)"
msgstr "Résultats dupeGuru (*.dupeguru)"
#: qt/base/directories_dialog.py:220
#: qt/base/directories_dialog.py:217
msgid "Start a new scan"
msgstr "Commencer un nouveau scan"
#: qt/base/directories_dialog.py:221 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:218 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr ""
"Vos résultats ne sont pas sauvegardés. Voulez-vous vraiment continuer?"
#: qt/base/directories_model.py:22
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Name"
msgstr "Nom"
@@ -274,78 +273,62 @@ msgstr "Contribuer"
msgid "Continue"
msgstr "Continuer"
#: qt/base/preferences_dialog.py:44
#: qt/base/preferences_dialog.py:38
msgid "Scan Type:"
msgstr "Type de scan:"
#: qt/base/preferences_dialog.py:57
#: qt/base/preferences_dialog.py:51
msgid "Filter Hardness:"
msgstr "Seuil du filtre:"
#: qt/base/preferences_dialog.py:83
#: qt/base/preferences_dialog.py:77
msgid "More Results"
msgstr "+ de doublons"
#: qt/base/preferences_dialog.py:88
#: qt/base/preferences_dialog.py:82
msgid "Fewer Results"
msgstr "- de doublons"
#: qt/base/preferences_dialog.py:95 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:89 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Font size:"
msgstr "Taille de police:"
#: qt/base/preferences_dialog.py:99
#: qt/base/preferences_dialog.py:93
msgid "Language:"
msgstr "Langue:"
#: qt/base/preferences_dialog.py:21
msgid "English"
msgstr "Anglais"
#: qt/base/preferences_dialog.py:22
msgid "French"
msgstr "Français"
#: qt/base/preferences_dialog.py:23
msgid "German"
msgstr "Allemand"
#: qt/base/preferences_dialog.py:24
msgid "Chinese (Simplified)"
msgstr "Chinois (Simplifié)"
#: qt/base/preferences_dialog.py:105 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:99 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Copy and Move:"
msgstr "Déplacements de fichiers:"
#: qt/base/preferences_dialog.py:108 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:102 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Right in destination"
msgstr "Directement à la destination"
#: qt/base/preferences_dialog.py:109 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:103 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate relative path"
msgstr "Re-créer chemins relatifs"
#: qt/base/preferences_dialog.py:110 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:104 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate absolute path"
msgstr "Re-créer chemins absolus"
#: qt/base/preferences_dialog.py:113 cocoa/me/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:107 cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr "Commande perso. (arguments: %d pour doublon, %r pour réf):"
#: qt/base/preferences_dialog.py:191
#: qt/base/preferences_dialog.py:185
msgid "dupeGuru has to restart for language changes to take effect."
msgstr "dupeGuru doit redémarrer pour appliquer le changement de langue."
@@ -954,10 +937,6 @@ msgstr "Effacer les dossiers vides après un déplacement"
msgid "dupeGuru PE Preferences"
msgstr "Préférences de dupeGuru PE"
#: qt/base/preferences_dialog.py:25
msgid "Czech"
msgstr ""
#: cocoa/inter/app.py:21
msgid "Sending to Trash"
msgstr "Envoi vers corbeille"
@@ -982,10 +961,6 @@ msgstr ""
msgid "The iPhoto application couldn't be found."
msgstr "iPhoto n'a pas pu être trouvée dans vos applications."
#: qt/base/preferences_dialog.py:26
msgid "Italian"
msgstr ""
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a directory to copy marked files to"
msgstr "Sélectionnez un dossier vers lequel copier les fichiers"

120
locale/hy/LC_MESSAGES/columns.po Executable file
View File

@@ -0,0 +1,120 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Armenian\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Hrant Ohanyan <hrantohanyan@mail.am>\n"
"Language-Team: HaySoft <hrantohanyan@mail.am>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Country: ARMENIA\n"
"X-Poedit-Language: Armenian\n"
"X-Poedit-SourceCharset: utf-8\n"
#: core/gui/problem_table.py:18
msgid "File Path"
msgstr "Ֆայլի ճ-ը"
#: core/gui/problem_table.py:19
msgid "Error Message"
msgstr "Սխալի գրությունը"
#: core/prioritize.py:63 core_me/result_table.py:24 core_pe/result_table.py:21
#: core_se/result_table.py:21
msgid "Kind"
msgstr "Տեսակ"
#: core/prioritize.py:72 core_me/result_table.py:19 core_pe/result_table.py:19
#: core_se/result_table.py:19
msgid "Folder"
msgstr "Թղթապանակ"
#: core/prioritize.py:88 core_me/result_table.py:18 core_pe/result_table.py:18
#: core_se/result_table.py:18
msgid "Filename"
msgstr "Ֆայլի անունը"
#: core/prioritize.py:132
msgid "Size"
msgstr "Չափը"
#: core/prioritize.py:138 core_me/result_table.py:25
#: core_pe/result_table.py:23 core_se/result_table.py:22
msgid "Modification"
msgstr "Փոփոխությունը"
#: core_me/prioritize.py:16
msgid "Duration"
msgstr "Տևողությունը"
#: core_me/prioritize.py:22 core_me/result_table.py:22
msgid "Bitrate"
msgstr "Բիթրեյթը"
#: core_me/prioritize.py:28
msgid "Samplerate"
msgstr "Սիմպլրեյթը"
#: core_me/result_table.py:20
msgid "Size (MB)"
msgstr "Չափը (ՄԲ)"
#: core_me/result_table.py:21
msgid "Time"
msgstr "Ժամանակը"
#: core_me/result_table.py:23
msgid "Sample Rate"
msgstr "Սեմփլրեյթը"
#: core_me/result_table.py:26
msgid "Title"
msgstr "Անունը"
#: core_me/result_table.py:27
msgid "Artist"
msgstr "Կատարողը"
#: core_me/result_table.py:28
msgid "Album"
msgstr "Ալբոմը"
#: core_me/result_table.py:29
msgid "Genre"
msgstr "Ժանրը"
#: core_me/result_table.py:30
msgid "Year"
msgstr "Տարին"
#: core_me/result_table.py:31
msgid "Track Number"
msgstr "Շավիղի համարը"
#: core_me/result_table.py:32
msgid "Comment"
msgstr "Մեկնաբանություն"
#: core_me/result_table.py:33 core_pe/result_table.py:24
#: core_se/result_table.py:23
msgid "Match %"
msgstr "Համընկնում %-ին"
#: core_me/result_table.py:34 core_se/result_table.py:24
msgid "Words Used"
msgstr "Բառ է օգտ."
#: core_me/result_table.py:35 core_pe/result_table.py:25
#: core_se/result_table.py:25
msgid "Dupe Count"
msgstr "Խաբկանքի ք-ը"
#: core_pe/prioritize.py:16 core_pe/result_table.py:22
msgid "Dimensions"
msgstr "Չափերը"
#: core_pe/result_table.py:20 core_se/result_table.py:20
msgid "Size (KB)"
msgstr "Չափը (ԿԲ)"

135
locale/hy/LC_MESSAGES/core.po Executable file
View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Armenian\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Hrant Ohanyan <hrantohanyan@mail.am>\n"
"Language-Team: HaySoft <hrantohanyan@mail.am>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Country: ARMENIA\n"
"X-Poedit-Language: Armenian\n"
"X-Poedit-SourceCharset: utf-8\n"
#: core/app.py:83
msgid "will only be able to delete, move or copy 10 duplicates at once"
msgstr ""
"միաժամանակ հնարավոր է ջնջել, տեղափոխել կամ պատճենել միայն 10 օրինակներ"
#: core/app.py:190
msgid ""
"You cannot delete, move or copy more than 10 duplicates at once in demo "
"mode."
msgstr ""
"Չեք կարող ջնջել, տեղափձոխել կամ պատճենել ավելի քան 10 օրինակներ փորձնական "
"եղանակում:"
#: core/app.py:422
msgid "Collecting files to scan"
msgstr "Հավաքվում են ֆայլեր՝ ստուգելու համար"
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr "Ընտրված թղթապանակները պարունակում են չստուգվող ֆայլ:"
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr "%s (%d անպիտան)"
#: core/engine.py:178 core/engine.py:215
msgid "0 matches found"
msgstr "0 համընկնում է գտնվել"
#: core/engine.py:196 core/engine.py:223
msgid "%d matches found"
msgstr "%d համընկնում է գտնվել"
#: core/engine.py:208 core/scanner.py:56
msgid "Read size of %d/%d files"
msgstr "Կարդալ %d/%d ֆայլերի չափը"
#: core/engine.py:355
msgid "Grouped %d/%d matches"
msgstr "Խմբավորվել է %d/%d համընկնում"
#: core/gui/extra_fairware_reminder.py:23
msgid "Continue ({})"
msgstr "Շարունակել ({})"
#: core/gui/extra_fairware_reminder.py:25
msgid "Continue"
msgstr "Շարունակել"
#: core/prioritize.py:68
msgid "None"
msgstr "Ոչինչ"
#: core/prioritize.py:94
msgid "Ends with number"
msgstr "Ավարտվում է թվով"
#: core/prioritize.py:96
msgid "Doesn't end with number"
msgstr "Չի ավարտվում է թվով"
#: core/prioritize.py:117
msgid "Highest"
msgstr "Ամենաբարձրը"
#: core/prioritize.py:117
msgid "Lowest"
msgstr "Ամենացածրը"
#: core/prioritize.py:144
msgid "Newest"
msgstr "Նորագույնը"
#: core/prioritize.py:144
msgid "Oldest"
msgstr "Ամենահինը"
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "%d / %d (%s / %s) նշված կրկնօրինակներ:"
#: core/results.py:120
msgid " filter: %s"
msgstr "ֆիլտր. %s"
#: core/scanner.py:76
msgid "Read metadata of %d/%d files"
msgstr "Կարդալ %d/%d ֆայլերի մետատվյալները"
#: core/scanner.py:106
msgid "Removing false matches"
msgstr "Սխալ համընկնումների հեռացում"
#: core/scanner.py:124
msgid "Processed %d/%d matches against the ignore list"
msgstr "Ընթացքում է %d/%d համընկնումները ընդդեմ անտեսվող ցանկի"
#: core/scanner.py:133
msgid "Doing group prioritization"
msgstr "Խմբի առաջնայնացում"
#: core_pe/matchblock.py:60
msgid "Analyzed %d/%d pictures"
msgstr "Ստուգվում է %d/%d նկարները"
#: core_pe/matchblock.py:144
msgid "Performed %d/%d chunk matches"
msgstr "Կատարվում է %d/%d տվյալի համընկնում"
#: core_pe/matchblock.py:149
msgid "Preparing for matching"
msgstr "Նախապատրաստեցվում է համընկնումը"
#: core_pe/matchblock.py:184
msgid "Verified %d/%d matches"
msgstr "Ստուգում է %d/%d համընկնումները"
#: core_pe/matchexif.py:21
msgid "Read EXIF of %d/%d pictures"
msgstr "Կարդալ EXIF-ը d/%d նկարներից"

1015
locale/hy/LC_MESSAGES/ui.po Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -12,15 +12,15 @@ msgid ""
"mode."
msgstr ""
#: core/app.py:420
#: core/app.py:422
msgid "Collecting files to scan"
msgstr "Raccolta file da scansionare"
#: core/app.py:431
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr "Le cartelle selezionate non contengono file da scansionare."
#: core/app.py:470
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr "%s (%d scartati)"
@@ -76,11 +76,11 @@ msgstr "Il più nuovo"
msgid "Oldest"
msgstr "Il più vecchio"
#: core/results.py:95
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "%d / %d (%s / %s) duplicati marcati."
#: core/results.py:102
#: core/results.py:120
msgid " filter: %s"
msgstr " filtro: %s"

View File

@@ -50,7 +50,7 @@ msgstr ""
msgid "Quit"
msgstr ""
#: qt/base/app.py:110 qt/base/preferences_dialog.py:130
#: qt/base/app.py:110 qt/base/preferences_dialog.py:124
msgid "Preferences"
msgstr ""
@@ -117,23 +117,23 @@ msgstr ""
msgid "Custom Command"
msgstr ""
#: qt/base/app.py:203
#: qt/base/app.py:209
msgid "All files were processed successfully."
msgstr ""
#: qt/base/app.py:204
#: qt/base/app.py:210
msgid "Operation Complete"
msgstr ""
#: qt/base/app.py:207
#: qt/base/app.py:213
msgid "Scan complete"
msgstr ""
#: qt/base/app.py:208 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:214 cocoa/base/en.lproj/Localizable.strings:0
msgid "No duplicates found."
msgstr "Non sono stati trovati dei duplicati."
#: qt/base/app.py:260 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:266 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
@@ -158,88 +158,87 @@ msgstr "Selezionato"
msgid "Reference"
msgstr "Riferimento"
#: qt/base/directories_dialog.py:56 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:58 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Results..."
msgstr "Carica i risultati..."
#: qt/base/directories_dialog.py:57 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:59 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Results Window"
msgstr "Finestra dei risultati"
#: qt/base/directories_dialog.py:58
#: qt/base/directories_dialog.py:60
msgid "Add Folder..."
msgstr ""
#: qt/base/directories_dialog.py:66 qt/base/result_window.py:82
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:82
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "File"
msgstr "File"
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:90
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:90
msgid "View"
msgstr ""
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:92
#: qt/base/directories_dialog.py:72 qt/base/result_window.py:92
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Help"
msgstr "Aiuto"
#: qt/base/directories_dialog.py:72 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:74 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Recent Results"
msgstr "Carica i risultati recenti"
#: qt/base/directories_dialog.py:106
#: qt/base/directories_dialog.py:108
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Select folders to scan and press \"Scan\"."
msgstr "Seleziona le cartelle da scansionare e premi \"Scansiona\"."
#: qt/base/directories_dialog.py:135
#: qt/base/directories_dialog.py:132
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Load Results"
msgstr "Carica i risultati"
#: qt/base/directories_dialog.py:138
#: qt/base/directories_dialog.py:135
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Scan"
msgstr "Scansiona"
#: qt/base/directories_dialog.py:175
#: qt/base/directories_dialog.py:179
msgid "Unsaved results"
msgstr ""
#: qt/base/directories_dialog.py:176 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:180 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr "Hai dei risultati non salvati. Vuoi veramente chiudere?"
#: qt/base/directories_dialog.py:184 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:188 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr ""
"Seleziona una cartella da aggiungere alla lista delle cartelle da "
"scansionare"
#: qt/base/directories_dialog.py:201 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:205 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
msgstr "Seleziona un risultato (file) da caricare"
#: qt/base/directories_dialog.py:202
#: qt/base/directories_dialog.py:206
msgid "All Files (*.*)"
msgstr ""
#: qt/base/directories_dialog.py:202 qt/base/result_window.py:334
#: qt/base/directories_dialog.py:206 qt/base/result_window.py:334
msgid "dupeGuru Results (*.dupeguru)"
msgstr ""
#: qt/base/directories_dialog.py:220
#: qt/base/directories_dialog.py:217
msgid "Start a new scan"
msgstr ""
#: qt/base/directories_dialog.py:221 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:218 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr "Hai dei risultati non salvati. Vuoi veramente continuare?"
#: qt/base/directories_model.py:22
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Name"
msgstr "Nome"
@@ -302,83 +301,63 @@ msgstr "Contribuisci"
msgid "Continue"
msgstr "Continua"
#: qt/base/preferences_dialog.py:21
msgid "English"
msgstr ""
#: qt/base/preferences_dialog.py:22
msgid "French"
msgstr ""
#: qt/base/preferences_dialog.py:23
msgid "German"
msgstr ""
#: qt/base/preferences_dialog.py:24
msgid "Chinese (Simplified)"
msgstr ""
#: qt/base/preferences_dialog.py:25
msgid "Czech"
msgstr ""
#: qt/base/preferences_dialog.py:44
#: qt/base/preferences_dialog.py:38
msgid "Scan Type:"
msgstr ""
#: qt/base/preferences_dialog.py:57
#: qt/base/preferences_dialog.py:51
msgid "Filter Hardness:"
msgstr ""
#: qt/base/preferences_dialog.py:83
#: qt/base/preferences_dialog.py:77
msgid "More Results"
msgstr ""
#: qt/base/preferences_dialog.py:88
#: qt/base/preferences_dialog.py:82
msgid "Fewer Results"
msgstr ""
#: qt/base/preferences_dialog.py:95 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:89 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Font size:"
msgstr "Dimensione carattere:"
#: qt/base/preferences_dialog.py:99
#: qt/base/preferences_dialog.py:93
msgid "Language:"
msgstr ""
#: qt/base/preferences_dialog.py:105 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:99 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Copy and Move:"
msgstr "Copia e sposta:"
#: qt/base/preferences_dialog.py:108 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:102 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Right in destination"
msgstr "Tutti gli elementi in una cartella"
#: qt/base/preferences_dialog.py:109 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:103 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate relative path"
msgstr "Ricrea il percorso relativo"
#: qt/base/preferences_dialog.py:110 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:104 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate absolute path"
msgstr "Ricrea il percorso assoluto"
#: qt/base/preferences_dialog.py:113 cocoa/me/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:107 cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr ""
"Comando personalizzato (argomenti: %d per duplicare, %r per riferimento):"
#: qt/base/preferences_dialog.py:191
#: qt/base/preferences_dialog.py:185
msgid "dupeGuru has to restart for language changes to take effect."
msgstr ""
@@ -990,10 +969,6 @@ msgstr "Rimuovi le cartelle vuote dopo aver cancellato e spostato"
msgid "dupeGuru PE Preferences"
msgstr "Preferenze di dupeGuru PE"
#: qt/base/preferences_dialog.py:26
msgid "Italian"
msgstr ""
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a directory to copy marked files to"
msgstr "Seleziona una cartella in cui copiare i file marcati"
@@ -1048,9 +1023,3 @@ msgstr "No"
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "OK"
msgstr ""
#~ msgid "File Path"
#~ msgstr "Percorso del file"
#~ msgid "Error Message"
#~ msgstr "Messaggio di errore"

119
locale/ru/LC_MESSAGES/columns.po Executable file
View File

@@ -0,0 +1,119 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Russian translation\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Igor Pavlov <IgorPavlov87@mail.ru>\n"
"Language-Team: Igor Pavlov <IgorPavlov87@mail.ru>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Country: RUSSIAN FEDERATION\n"
"X-Poedit-Language: Russian\n"
#: core/gui/problem_table.py:18
msgid "File Path"
msgstr "Путь к файлу"
#: core/gui/problem_table.py:19
msgid "Error Message"
msgstr "Сообщение об ошибке"
#: core/prioritize.py:63 core_me/result_table.py:24 core_pe/result_table.py:21
#: core_se/result_table.py:21
msgid "Kind"
msgstr "Тип"
#: core/prioritize.py:72 core_me/result_table.py:19 core_pe/result_table.py:19
#: core_se/result_table.py:19
msgid "Folder"
msgstr "Папка"
#: core/prioritize.py:88 core_me/result_table.py:18 core_pe/result_table.py:18
#: core_se/result_table.py:18
msgid "Filename"
msgstr "Имя файла"
#: core/prioritize.py:132
msgid "Size"
msgstr "Размер"
#: core/prioritize.py:138 core_me/result_table.py:25
#: core_pe/result_table.py:23 core_se/result_table.py:22
msgid "Modification"
msgstr "Модификация"
#: core_me/prioritize.py:16
msgid "Duration"
msgstr "Продолжительность"
#: core_me/prioritize.py:22 core_me/result_table.py:22
msgid "Bitrate"
msgstr "Битрейт"
#: core_me/prioritize.py:28
msgid "Samplerate"
msgstr "Частота оцифровки"
#: core_me/result_table.py:20
msgid "Size (MB)"
msgstr "Размер (Мб)"
#: core_me/result_table.py:21
msgid "Time"
msgstr "Время"
#: core_me/result_table.py:23
msgid "Sample Rate"
msgstr "Частота"
#: core_me/result_table.py:26
msgid "Title"
msgstr "Название"
#: core_me/result_table.py:27
msgid "Artist"
msgstr "Артист"
#: core_me/result_table.py:28
msgid "Album"
msgstr "Альбом"
#: core_me/result_table.py:29
msgid "Genre"
msgstr "Жанр"
#: core_me/result_table.py:30
msgid "Year"
msgstr "Год"
#: core_me/result_table.py:31
msgid "Track Number"
msgstr "Номер дорожки"
#: core_me/result_table.py:32
msgid "Comment"
msgstr "Комментарий"
#: core_me/result_table.py:33 core_pe/result_table.py:24
#: core_se/result_table.py:23
msgid "Match %"
msgstr "Совпадение %"
#: core_me/result_table.py:34 core_se/result_table.py:24
msgid "Words Used"
msgstr "Слов, используемых"
#: core_me/result_table.py:35 core_pe/result_table.py:25
#: core_se/result_table.py:25
msgid "Dupe Count"
msgstr "Dupe графа"
#: core_pe/prioritize.py:16 core_pe/result_table.py:22
msgid "Dimensions"
msgstr "Размеры"
#: core_pe/result_table.py:20 core_se/result_table.py:20
msgid "Size (KB)"
msgstr "Размер (KB)"

134
locale/ru/LC_MESSAGES/core.po Executable file
View File

@@ -0,0 +1,134 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Russian translation\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Igor Pavlov <IgorPavlov87@mail.ru>\n"
"Language-Team: Igor Pavlov <IgorPavlov87@mail.ru>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-Country: RUSSIAN FEDERATION\n"
"X-Poedit-Language: Russian\n"
#: core/app.py:83
msgid "will only be able to delete, move or copy 10 duplicates at once"
msgstr ""
"сможете только для удаления, перемещения или копирования 10 копий сразу"
#: core/app.py:190
msgid ""
"You cannot delete, move or copy more than 10 duplicates at once in demo "
"mode."
msgstr ""
"Вы не можете удалять, перемещать или копировать более 10 дубликатов сразу в "
"демонстрационном режиме."
#: core/app.py:422
msgid "Collecting files to scan"
msgstr "Сбор файлов для сканирования"
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr "Выбранных директорий не содержат сканируемых файлов."
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr "%s. (%d отменено)"
#: core/engine.py:178 core/engine.py:215
msgid "0 matches found"
msgstr "0 сопоставлений найдено"
#: core/engine.py:196 core/engine.py:223
msgid "%d matches found"
msgstr "%d сопоставлений найдено"
#: core/engine.py:208 core/scanner.py:56
msgid "Read size of %d/%d files"
msgstr "Реалний размер %d/%d файлов"
#: core/engine.py:355
msgid "Grouped %d/%d matches"
msgstr "Группировка %d/%d совпадений"
#: core/gui/extra_fairware_reminder.py:23
msgid "Continue ({})"
msgstr "Продолжать ({})"
#: core/gui/extra_fairware_reminder.py:25
msgid "Continue"
msgstr "Продолжать "
#: core/prioritize.py:68
msgid "None"
msgstr "Ни один"
#: core/prioritize.py:94
msgid "Ends with number"
msgstr "Заканчивается номером"
#: core/prioritize.py:96
msgid "Doesn't end with number"
msgstr "Не заканчивается с номером"
#: core/prioritize.py:117
msgid "Highest"
msgstr "Наивысший"
#: core/prioritize.py:117
msgid "Lowest"
msgstr "Самая низкая"
#: core/prioritize.py:144
msgid "Newest"
msgstr "Новейший"
#: core/prioritize.py:144
msgid "Oldest"
msgstr "Старейшие"
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "%d / %d (%s / %s) дубликаты обозначены."
#: core/results.py:120
msgid " filter: %s"
msgstr "филтр. %s"
#: core/scanner.py:76
msgid "Read metadata of %d/%d files"
msgstr "Прочитано метаданных %d/%d файлов"
#: core/scanner.py:106
msgid "Removing false matches"
msgstr "Удаление ложных совпадениях"
#: core/scanner.py:124
msgid "Processed %d/%d matches against the ignore list"
msgstr "Обработано %d/%d матчей против игнор-лист"
#: core/scanner.py:133
msgid "Doing group prioritization"
msgstr "Делая группы приоритетов"
#: core_pe/matchblock.py:60
msgid "Analyzed %d/%d pictures"
msgstr "Анализируется %d/%d фотографии"
#: core_pe/matchblock.py:144
msgid "Performed %d/%d chunk matches"
msgstr "Исполняет %d/%d совпадениях кусоков"
#: core_pe/matchblock.py:149
msgid "Preparing for matching"
msgstr "Подготовка для сравнения"
#: core_pe/matchblock.py:184
msgid "Verified %d/%d matches"
msgstr "Проверенные %d/%d совпадениях"
#: core_pe/matchexif.py:21
msgid "Read EXIF of %d/%d pictures"
msgstr "Прочитано EXIF %d/%d из фотографии"

1022
locale/ru/LC_MESSAGES/ui.po Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -50,7 +50,7 @@ msgstr ""
msgid "Quit"
msgstr ""
#: qt/base/app.py:110 qt/base/preferences_dialog.py:130
#: qt/base/app.py:110 qt/base/preferences_dialog.py:124
msgid "Preferences"
msgstr ""
@@ -113,23 +113,23 @@ msgstr ""
msgid "Custom Command"
msgstr ""
#: qt/base/app.py:203
#: qt/base/app.py:209
msgid "All files were processed successfully."
msgstr ""
#: qt/base/app.py:204
#: qt/base/app.py:210
msgid "Operation Complete"
msgstr ""
#: qt/base/app.py:207
#: qt/base/app.py:213
msgid "Scan complete"
msgstr ""
#: qt/base/app.py:208 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:214 cocoa/base/en.lproj/Localizable.strings:0
msgid "No duplicates found."
msgstr ""
#: qt/base/app.py:260 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:266 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
@@ -152,86 +152,85 @@ msgstr ""
msgid "Reference"
msgstr ""
#: qt/base/directories_dialog.py:56 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:58 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Results..."
msgstr ""
#: qt/base/directories_dialog.py:57 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:59 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Results Window"
msgstr ""
#: qt/base/directories_dialog.py:58
#: qt/base/directories_dialog.py:60
msgid "Add Folder..."
msgstr ""
#: qt/base/directories_dialog.py:66 qt/base/result_window.py:82
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:82
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "File"
msgstr ""
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:90
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:90
msgid "View"
msgstr ""
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:92
#: qt/base/directories_dialog.py:72 qt/base/result_window.py:92
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Help"
msgstr ""
#: qt/base/directories_dialog.py:72 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:74 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Recent Results"
msgstr ""
#: qt/base/directories_dialog.py:106
#: qt/base/directories_dialog.py:108
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Select folders to scan and press \"Scan\"."
msgstr ""
#: qt/base/directories_dialog.py:135
#: qt/base/directories_dialog.py:132
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Load Results"
msgstr ""
#: qt/base/directories_dialog.py:138
#: qt/base/directories_dialog.py:135
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Scan"
msgstr ""
#: qt/base/directories_dialog.py:175
#: qt/base/directories_dialog.py:179
msgid "Unsaved results"
msgstr ""
#: qt/base/directories_dialog.py:176 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:180 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr ""
#: qt/base/directories_dialog.py:184 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:188 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr ""
#: qt/base/directories_dialog.py:201 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:205 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
msgstr ""
#: qt/base/directories_dialog.py:202
#: qt/base/directories_dialog.py:206
msgid "All Files (*.*)"
msgstr ""
#: qt/base/directories_dialog.py:202 qt/base/result_window.py:334
#: qt/base/directories_dialog.py:206 qt/base/result_window.py:334
msgid "dupeGuru Results (*.dupeguru)"
msgstr ""
#: qt/base/directories_dialog.py:220
#: qt/base/directories_dialog.py:217
msgid "Start a new scan"
msgstr ""
#: qt/base/directories_dialog.py:221 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:218 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr ""
#: qt/base/directories_model.py:22
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Name"
msgstr ""
@@ -284,86 +283,62 @@ msgstr ""
msgid "Continue"
msgstr ""
#: qt/base/preferences_dialog.py:21
msgid "English"
msgstr ""
#: qt/base/preferences_dialog.py:22
msgid "French"
msgstr ""
#: qt/base/preferences_dialog.py:23
msgid "German"
msgstr ""
#: qt/base/preferences_dialog.py:24
msgid "Chinese (Simplified)"
msgstr ""
#: qt/base/preferences_dialog.py:25
msgid "Czech"
msgstr ""
#: qt/base/preferences_dialog.py:26
msgid "Italian"
msgstr ""
#: qt/base/preferences_dialog.py:44
#: qt/base/preferences_dialog.py:38
msgid "Scan Type:"
msgstr ""
#: qt/base/preferences_dialog.py:57
#: qt/base/preferences_dialog.py:51
msgid "Filter Hardness:"
msgstr ""
#: qt/base/preferences_dialog.py:83
#: qt/base/preferences_dialog.py:77
msgid "More Results"
msgstr ""
#: qt/base/preferences_dialog.py:88
#: qt/base/preferences_dialog.py:82
msgid "Fewer Results"
msgstr ""
#: qt/base/preferences_dialog.py:95 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:89 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Font size:"
msgstr ""
#: qt/base/preferences_dialog.py:99
#: qt/base/preferences_dialog.py:93
msgid "Language:"
msgstr ""
#: qt/base/preferences_dialog.py:105 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:99 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Copy and Move:"
msgstr ""
#: qt/base/preferences_dialog.py:108 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:102 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Right in destination"
msgstr ""
#: qt/base/preferences_dialog.py:109 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:103 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate relative path"
msgstr ""
#: qt/base/preferences_dialog.py:110 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:104 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate absolute path"
msgstr ""
#: qt/base/preferences_dialog.py:113 cocoa/me/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:107 cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr ""
#: qt/base/preferences_dialog.py:191
#: qt/base/preferences_dialog.py:185
msgid "dupeGuru has to restart for language changes to take effect."
msgstr ""

View File

@@ -12,15 +12,15 @@ msgid ""
"mode."
msgstr ""
#: core/app.py:420
#: core/app.py:422
msgid "Collecting files to scan"
msgstr "收集文件以备扫描"
#: core/app.py:431
#: core/app.py:433
msgid "The selected directories contain no scannable file."
msgstr "所选文件夹中不包含可供扫描的文件。"
#: core/app.py:470
#: core/app.py:472
msgid "%s (%d discarded)"
msgstr "%s (%d 无效)"
@@ -76,11 +76,11 @@ msgstr ""
msgid "Oldest"
msgstr ""
#: core/results.py:95
#: core/results.py:113
msgid "%d / %d (%s / %s) duplicates marked."
msgstr "已标记 %d / %d (%s / %s) 个重复项。"
#: core/results.py:102
#: core/results.py:120
msgid " filter: %s"
msgstr " 筛选: %s"

View File

@@ -26,7 +26,7 @@ msgstr "将文件移到回收站"
msgid "Quit"
msgstr "退出"
#: qt/base/app.py:110 qt/base/preferences_dialog.py:130
#: qt/base/app.py:110 qt/base/preferences_dialog.py:124
msgid "Preferences"
msgstr "首选项"
@@ -89,23 +89,23 @@ msgstr "你没有设定自定义命令。请在首选项中进行设定。"
msgid "Custom Command"
msgstr "自定义命令"
#: qt/base/app.py:203
#: qt/base/app.py:209
msgid "All files were processed successfully."
msgstr "所有文件已成功处理。"
#: qt/base/app.py:204
#: qt/base/app.py:210
msgid "Operation Complete"
msgstr "执行完成"
#: qt/base/app.py:207
#: qt/base/app.py:213
msgid "Scan complete"
msgstr "扫描完成"
#: qt/base/app.py:208 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:214 cocoa/base/en.lproj/Localizable.strings:0
msgid "No duplicates found."
msgstr "没有找到重复文件。"
#: qt/base/app.py:260 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/app.py:266 cocoa/base/en.lproj/Localizable.strings:0
msgid ""
"A previous action is still hanging in there. You can't start a new one yet. "
"Wait a few seconds, then try again."
@@ -128,86 +128,85 @@ msgstr "已选择"
msgid "Reference"
msgstr "参照文件"
#: qt/base/directories_dialog.py:56 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:58 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Results..."
msgstr "载入结果..."
#: qt/base/directories_dialog.py:57 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:59 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Results Window"
msgstr "结果窗口"
#: qt/base/directories_dialog.py:58
#: qt/base/directories_dialog.py:60
msgid "Add Folder..."
msgstr "增加文件夹..."
#: qt/base/directories_dialog.py:66 qt/base/result_window.py:82
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:82
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "File"
msgstr "文件"
#: qt/base/directories_dialog.py:68 qt/base/result_window.py:90
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:90
msgid "View"
msgstr "视图"
#: qt/base/directories_dialog.py:70 qt/base/result_window.py:92
#: qt/base/directories_dialog.py:72 qt/base/result_window.py:92
#: cocoa/base/en.lproj/MainMenu.strings:0
msgid "Help"
msgstr "帮助"
#: qt/base/directories_dialog.py:72 cocoa/base/en.lproj/MainMenu.strings:0
#: qt/base/directories_dialog.py:74 cocoa/base/en.lproj/MainMenu.strings:0
msgid "Load Recent Results"
msgstr "载入最近的结果"
#: qt/base/directories_dialog.py:106
#: qt/base/directories_dialog.py:108
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Select folders to scan and press \"Scan\"."
msgstr "请选择要扫描的文件夹,然后点击 \"扫描\"。"
#: qt/base/directories_dialog.py:135
#: qt/base/directories_dialog.py:132
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Load Results"
msgstr "载入结果"
#: qt/base/directories_dialog.py:138
#: qt/base/directories_dialog.py:135
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
msgid "Scan"
msgstr "扫描"
#: qt/base/directories_dialog.py:175
#: qt/base/directories_dialog.py:179
msgid "Unsaved results"
msgstr "未保存的结果"
#: qt/base/directories_dialog.py:176 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:180 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to quit?"
msgstr "您还没有保存扫描结果,确定要退出吗?"
#: qt/base/directories_dialog.py:184 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:188 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a folder to add to the scanning list"
msgstr "请选择一个文件夹并加入到扫描列表中"
#: qt/base/directories_dialog.py:201 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:205 cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a results file to load"
msgstr "选择一个结果文件并载入"
#: qt/base/directories_dialog.py:202
#: qt/base/directories_dialog.py:206
msgid "All Files (*.*)"
msgstr "所有文件 (*.*)"
#: qt/base/directories_dialog.py:202 qt/base/result_window.py:334
#: qt/base/directories_dialog.py:206 qt/base/result_window.py:334
msgid "dupeGuru Results (*.dupeguru)"
msgstr "dupeGuru结果 (*.dupeguru)"
#: qt/base/directories_dialog.py:220
#: qt/base/directories_dialog.py:217
msgid "Start a new scan"
msgstr "开始新的扫描"
#: qt/base/directories_dialog.py:221 cocoa/base/en.lproj/Localizable.strings:0
#: qt/base/directories_dialog.py:218 cocoa/base/en.lproj/Localizable.strings:0
msgid "You have unsaved results, do you really want to continue?"
msgstr "目前还有结果尚未保存,确定要继续吗?"
#: qt/base/directories_model.py:22
#: cocoa/base/en.lproj/DirectoryPanel.strings:0
#: cocoa/base/en.lproj/ResultWindow.strings:0
msgid "Name"
msgstr "名称"
@@ -270,78 +269,62 @@ msgstr "捐助"
msgid "Continue"
msgstr "继续"
#: qt/base/preferences_dialog.py:44
#: qt/base/preferences_dialog.py:38
msgid "Scan Type:"
msgstr "扫描类型:"
#: qt/base/preferences_dialog.py:57
#: qt/base/preferences_dialog.py:51
msgid "Filter Hardness:"
msgstr "筛选强度:"
#: qt/base/preferences_dialog.py:83
#: qt/base/preferences_dialog.py:77
msgid "More Results"
msgstr "较多结果"
#: qt/base/preferences_dialog.py:88
#: qt/base/preferences_dialog.py:82
msgid "Fewer Results"
msgstr "较少结果"
#: qt/base/preferences_dialog.py:95 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:89 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Font size:"
msgstr "复制和移动:"
#: qt/base/preferences_dialog.py:99
#: qt/base/preferences_dialog.py:93
msgid "Language:"
msgstr "语言:"
#: qt/base/preferences_dialog.py:21
msgid "English"
msgstr "英语"
#: qt/base/preferences_dialog.py:22
msgid "French"
msgstr "法语"
#: qt/base/preferences_dialog.py:23
msgid "German"
msgstr "德语"
#: qt/base/preferences_dialog.py:24
msgid "Chinese (Simplified)"
msgstr "简体中文"
#: qt/base/preferences_dialog.py:105 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:99 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Copy and Move:"
msgstr "复制和移动:"
#: qt/base/preferences_dialog.py:108 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:102 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Right in destination"
msgstr "目标位置"
#: qt/base/preferences_dialog.py:109 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:103 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate relative path"
msgstr "重建相对路径"
#: qt/base/preferences_dialog.py:110 cocoa/se/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:104 cocoa/se/en.lproj/Preferences.strings:0
#: cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Recreate absolute path"
msgstr "重建绝对路径"
#: qt/base/preferences_dialog.py:113 cocoa/me/en.lproj/Preferences.strings:0
#: qt/base/preferences_dialog.py:107 cocoa/me/en.lproj/Preferences.strings:0
#: cocoa/pe/en.lproj/Preferences.strings:0
msgid "Custom Command (arguments: %d for dupe, %r for ref):"
msgstr "自定义命令 (参数: %d 指重复文件, %r 指参照文件):"
#: qt/base/preferences_dialog.py:191
#: qt/base/preferences_dialog.py:185
msgid "dupeGuru has to restart for language changes to take effect."
msgstr "dupeGuru将重新启动以使语言修改生效。"
@@ -944,10 +927,6 @@ msgstr "Remove empty folders after delete and move"
msgid "dupeGuru PE Preferences"
msgstr "dupeGuru PE Preferences"
#: qt/base/preferences_dialog.py:25
msgid "Czech"
msgstr ""
#: cocoa/inter/app.py:21
msgid "Sending to Trash"
msgstr "移到垃圾桶"
@@ -972,10 +951,6 @@ msgstr ""
msgid "The iPhoto application couldn't be found."
msgstr "The iPhoto application couldn't be found."
#: qt/base/preferences_dialog.py:26
msgid "Italian"
msgstr ""
#: cocoa/base/en.lproj/Localizable.strings:0
msgid "Select a directory to copy marked files to"
msgstr "Select a directory to copy marked files to"

View File

@@ -19,9 +19,9 @@ from hscommon.build import (build_dmg, add_to_pythonpath, print_and_do, copy_pac
def package_cocoa(edition):
app_path = {
'se': 'cocoa/se/build/release/dupeGuru.app',
'me': 'cocoa/me/build/release/dupeGuru ME.app',
'pe': 'cocoa/pe/build/release/dupeGuru PE.app',
'se': 'cocoa/se/dupeGuru.app',
'me': 'cocoa/me/dupeGuru ME.app',
'pe': 'cocoa/pe/dupeGuru PE.app',
}[edition]
build_dmg(app_path, '.')

View File

@@ -185,6 +185,12 @@ class DupeGuru(QObject):
#--- Events
def finishedLaunching(self):
self.model.initial_registration_setup()
if sys.getfilesystemencoding() == 'ascii':
# No need to localize this, it's a debugging message.
msg = "Something is wrong with the way your system locale is set. If the files you're "\
"scanning have accented letters, you'll probably get a crash. It is advised that "\
"you set your system locale properly."
QMessageBox.warning(self.directories_dialog, "Wrong Locale", msg)
def application_will_terminate(self):
self.willSavePrefs.emit()

View File

@@ -8,6 +8,7 @@
from PyQt4.QtGui import QApplication
from hscommon import trans
from qtlib.preferences import Preferences as PreferencesBase
class Preferences(PreferencesBase):
@@ -26,6 +27,8 @@ class Preferences(PreferencesBase):
self.destination_type = get('DestinationType', self.destination_type)
self.custom_command = get('CustomCommand', self.custom_command)
self.language = get('Language', self.language)
if not self.language and trans.installed_lang:
self.language = trans.installed_lang
self.tableFontSize = get('TableFontSize', self.tableFontSize)
self.resultWindowIsMaximized = get('ResultWindowIsMaximized', self.resultWindowIsMaximized)
@@ -50,7 +53,7 @@ class Preferences(PreferencesBase):
self.debug_mode = False
self.destination_type = 1
self.custom_command = ''
self.language = ''
self.language = trans.installed_lang if trans.installed_lang else ''
self.tableFontSize = QApplication.font().pointSize()
self.resultWindowIsMaximized = False

View File

@@ -13,18 +13,11 @@ from PyQt4.QtGui import (QDialog, QDialogButtonBox, QVBoxLayout, QHBoxLayout, QL
from hscommon.plat import ISOSX, ISLINUX
from hscommon.trans import trget
from qtlib.util import horizontalWrap
from qtlib.preferences import LANGNAMES
tr = trget('ui')
SUPPORTED_LANGUAGES = ['en', 'fr', 'de', 'zh_CN', 'cs', 'it']
LANGNAMES = {
'en': tr("English"),
'fr': tr("French"),
'de': tr("German"),
'zh_CN': tr("Chinese (Simplified)"),
'cs': tr("Czech"),
'it': tr("Italian"),
}
SUPPORTED_LANGUAGES = ['en', 'fr', 'de', 'zh_CN', 'cs', 'it', 'hy', 'ru']
class PreferencesDialogBase(QDialog):
def __init__(self, parent, app):

View File

@@ -7,7 +7,7 @@
from qtlib.column import Column
from ..base.results_model import ResultsModel as ResultsModelBase
from core_se.result_table import ResultTable
from core_me.result_table import ResultTable
# Little hack to remove the 'marked' column which isn't there in the Qt GUI.
del ResultTable.COLUMNS[0]

View File

@@ -25,6 +25,6 @@ class ResultWindow(ResultWindowBase):
title = tr("Clear Picture Cache")
msg = tr("Do you really want to remove all your cached picture analysis?")
if self.app.confirm(title, msg, QMessageBox.No):
self.app.scanner.clear_picture_cache()
self.app.model.scanner.clear_picture_cache()
QMessageBox.information(self, title, tr("Picture cache cleared."))

View File

@@ -1,4 +1,5 @@
-r requirements.txt
pyobjc-core>=2.3
pluginbuilder>=1.0.0
appscript>=1.0.0
appscript>=1.0.0
objp>=0.1.0

View File

@@ -1,4 +1,4 @@
jobprogress>=1.0.2
jobprogress>=1.0.3
Send2Trash3k>=1.2.0
sphinx>=1.1.0
polib>=0.7.0