mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Modernized progress window GUI
Following the refactoring that has been initiated in pdfmasher's "vala" branch, I pushed more progress window logic into the core. The UI code is now a bit dumber than it used to be, and the core now directly decides when the progress window is shown and hidden. The "job finished" notification is also directly sent by the core. Job description update logic is handled by a core gui textfield. Job description contsants also moved to the core, triggering a localisation migration from "ui" to "core".
This commit is contained in:
parent
8e15d89a2e
commit
e5ce6680ca
8
build.py
8
build.py
@ -255,7 +255,8 @@ def build_cocoa_bridging_interfaces(edition):
|
|||||||
add_to_pythonpath('cocoa')
|
add_to_pythonpath('cocoa')
|
||||||
add_to_pythonpath('cocoalib')
|
add_to_pythonpath('cocoalib')
|
||||||
from cocoa.inter import (PyGUIObject, GUIObjectView, PyColumns, ColumnsView, PyOutline,
|
from cocoa.inter import (PyGUIObject, GUIObjectView, PyColumns, ColumnsView, PyOutline,
|
||||||
OutlineView, PySelectableList, SelectableListView, PyTable, TableView, PyBaseApp, PyFairware)
|
OutlineView, PySelectableList, SelectableListView, PyTable, TableView, PyBaseApp,
|
||||||
|
PyFairware, PyTextField, ProgressWindowView, PyProgressWindow)
|
||||||
from inter.deletion_options import PyDeletionOptions, DeletionOptionsView
|
from inter.deletion_options import PyDeletionOptions, DeletionOptionsView
|
||||||
from inter.details_panel import PyDetailsPanel, DetailsPanelView
|
from inter.details_panel import PyDetailsPanel, DetailsPanelView
|
||||||
from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView
|
from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView
|
||||||
@ -270,12 +271,13 @@ def build_cocoa_bridging_interfaces(edition):
|
|||||||
allclasses = [PyGUIObject, PyColumns, PyOutline, PySelectableList, PyTable, PyBaseApp, PyFairware,
|
allclasses = [PyGUIObject, PyColumns, PyOutline, PySelectableList, PyTable, PyBaseApp, PyFairware,
|
||||||
PyDetailsPanel, PyDirectoryOutline, PyPrioritizeDialog, PyPrioritizeList, PyProblemDialog,
|
PyDetailsPanel, PyDirectoryOutline, PyPrioritizeDialog, PyPrioritizeList, PyProblemDialog,
|
||||||
PyIgnoreListDialog, PyDeletionOptions, PyResultTable, PyStatsLabel, PyDupeGuruBase,
|
PyIgnoreListDialog, PyDeletionOptions, PyResultTable, PyStatsLabel, PyDupeGuruBase,
|
||||||
appmod.PyDupeGuru]
|
PyTextField, PyProgressWindow, appmod.PyDupeGuru]
|
||||||
for class_ in allclasses:
|
for class_ in allclasses:
|
||||||
objp.o2p.generate_objc_code(class_, 'cocoa/autogen', inherit=True)
|
objp.o2p.generate_objc_code(class_, 'cocoa/autogen', inherit=True)
|
||||||
allclasses = [GUIObjectView, ColumnsView, OutlineView, SelectableListView, TableView,
|
allclasses = [GUIObjectView, ColumnsView, OutlineView, SelectableListView, TableView,
|
||||||
DetailsPanelView, DirectoryOutlineView, PrioritizeDialogView, PrioritizeListView,
|
DetailsPanelView, DirectoryOutlineView, PrioritizeDialogView, PrioritizeListView,
|
||||||
IgnoreListDialogView, DeletionOptionsView, ResultTableView, StatsLabelView, DupeGuruView]
|
IgnoreListDialogView, DeletionOptionsView, ResultTableView, StatsLabelView,
|
||||||
|
ProgressWindowView, DupeGuruView]
|
||||||
clsspecs = [objp.o2p.spec_from_python_class(class_) for class_ in allclasses]
|
clsspecs = [objp.o2p.spec_from_python_class(class_) for class_ in allclasses]
|
||||||
objp.p2o.generate_python_proxy_code_from_clsspec(clsspecs, 'build/CocoaViews.m')
|
objp.p2o.generate_python_proxy_code_from_clsspec(clsspecs, 'build/CocoaViews.m')
|
||||||
build_cocoa_ext('CocoaViews', 'cocoa/inter', ['build/CocoaViews.m', 'build/ObjP.m'])
|
build_cocoa_ext('CocoaViews', 'cocoa/inter', ['build/CocoaViews.m', 'build/ObjP.m'])
|
||||||
|
@ -15,6 +15,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
#import "IgnoreListDialog.h"
|
#import "IgnoreListDialog.h"
|
||||||
#import "HSFairwareAboutBox.h"
|
#import "HSFairwareAboutBox.h"
|
||||||
#import "HSRecentFiles.h"
|
#import "HSRecentFiles.h"
|
||||||
|
#import "HSProgressWindow.h"
|
||||||
|
|
||||||
@interface AppDelegateBase : NSObject
|
@interface AppDelegateBase : NSObject
|
||||||
{
|
{
|
||||||
@ -27,6 +28,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
DirectoryPanel *_directoryPanel;
|
DirectoryPanel *_directoryPanel;
|
||||||
DetailsPanel *_detailsPanel;
|
DetailsPanel *_detailsPanel;
|
||||||
IgnoreListDialog *_ignoreListDialog;
|
IgnoreListDialog *_ignoreListDialog;
|
||||||
|
HSProgressWindow *_progressWindow;
|
||||||
NSWindowController *_preferencesPanel;
|
NSWindowController *_preferencesPanel;
|
||||||
HSFairwareAboutBox *_aboutBox;
|
HSFairwareAboutBox *_aboutBox;
|
||||||
HSRecentFiles *_recentResults;
|
HSRecentFiles *_recentResults;
|
||||||
|
@ -74,6 +74,8 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
_directoryPanel = [self createDirectoryPanel];
|
_directoryPanel = [self createDirectoryPanel];
|
||||||
_detailsPanel = [self createDetailsPanel];
|
_detailsPanel = [self createDetailsPanel];
|
||||||
_ignoreListDialog = [[IgnoreListDialog alloc] initWithPyRef:[model ignoreListDialog]];
|
_ignoreListDialog = [[IgnoreListDialog alloc] initWithPyRef:[model ignoreListDialog]];
|
||||||
|
_progressWindow = [[HSProgressWindow alloc] initWithPyRef:[[self model] progressWindow] view:nil];
|
||||||
|
[_progressWindow setParentWindow:[_resultWindow window]];
|
||||||
_aboutBox = nil; // Lazily loaded
|
_aboutBox = nil; // Lazily loaded
|
||||||
_preferencesPanel = nil; // Lazily loaded
|
_preferencesPanel = nil; // Lazily loaded
|
||||||
[[[self directoryPanel] window] makeKeyAndOrderFront:self];
|
[[[self directoryPanel] window] makeKeyAndOrderFront:self];
|
||||||
@ -197,7 +199,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
/* Delegate */
|
/* Delegate */
|
||||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
||||||
{
|
{
|
||||||
[[ProgressController mainProgressController] setWorker:model];
|
|
||||||
[model initialRegistrationSetup];
|
[model initialRegistrationSetup];
|
||||||
[model loadSession];
|
[model loadSession];
|
||||||
}
|
}
|
||||||
|
@ -42,9 +42,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
[matches setTarget:self];
|
[matches setTarget:self];
|
||||||
[matches setDoubleAction:@selector(openClicked)];
|
[matches setDoubleAction:@selector(openClicked)];
|
||||||
[self adjustUIToLocalization];
|
[self adjustUIToLocalization];
|
||||||
|
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jobStarted:) name:JobStarted object:nil];
|
|
||||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jobInProgress:) name:JobInProgress object:nil];
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -340,22 +337,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
previewPanel = nil;
|
previewPanel = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)jobInProgress:(NSNotification *)aNotification
|
|
||||||
{
|
|
||||||
[Dialogs showMessage:NSLocalizedString(@"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.", @"")];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)jobStarted:(NSNotification *)aNotification
|
|
||||||
{
|
|
||||||
[[self window] makeKeyAndOrderFront:nil];
|
|
||||||
NSDictionary *ui = [aNotification userInfo];
|
|
||||||
NSString *desc = [ui valueForKey:@"desc"];
|
|
||||||
[[ProgressController mainProgressController] setJobDesc:desc];
|
|
||||||
NSString *jobid = [ui valueForKey:@"jobid"];
|
|
||||||
[[ProgressController mainProgressController] setJobId:jobid];
|
|
||||||
[[ProgressController mainProgressController] showSheetForParent:[self window]];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem
|
- (BOOL)validateToolbarItem:(NSToolbarItem *)theItem
|
||||||
{
|
{
|
||||||
return ![[ProgressController mainProgressController] isShown];
|
return ![[ProgressController mainProgressController] isShown];
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
from cocoa.inter import PyTextField, PyProgressWindow
|
||||||
from .deletion_options import PyDeletionOptions
|
from .deletion_options import PyDeletionOptions
|
||||||
from .details_panel import PyDetailsPanel
|
from .details_panel import PyDetailsPanel
|
||||||
from .directory_outline import PyDirectoryOutline
|
from .directory_outline import PyDirectoryOutline
|
||||||
|
@ -1,23 +1,8 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from objp.util import pyref, dontwrap
|
from objp.util import pyref, dontwrap
|
||||||
from jobprogress import job
|
from cocoa import install_exception_hook, install_cocoa_logger, patch_threaded_job_performer, proxy
|
||||||
import cocoa
|
|
||||||
from cocoa import install_exception_hook, install_cocoa_logger, proxy
|
|
||||||
from cocoa.inter import PyFairware, FairwareView
|
from cocoa.inter import PyFairware, FairwareView
|
||||||
from hscommon.trans import trget
|
|
||||||
|
|
||||||
from core.app import JobType
|
|
||||||
|
|
||||||
tr = trget('ui')
|
|
||||||
|
|
||||||
JOBID2TITLE = {
|
|
||||||
JobType.Scan: tr("Scanning for duplicates"),
|
|
||||||
JobType.Load: tr("Loading"),
|
|
||||||
JobType.Move: tr("Moving"),
|
|
||||||
JobType.Copy: tr("Copying"),
|
|
||||||
JobType.Delete: tr("Sending to Trash"),
|
|
||||||
}
|
|
||||||
|
|
||||||
class DupeGuruView(FairwareView):
|
class DupeGuruView(FairwareView):
|
||||||
def askYesNoWithPrompt_(self, prompt: str) -> bool: pass
|
def askYesNoWithPrompt_(self, prompt: str) -> bool: pass
|
||||||
@ -26,16 +11,14 @@ class DupeGuruView(FairwareView):
|
|||||||
def selectDestFileWithPrompt_extension_(self, prompt: str, extension: str) -> str: pass
|
def selectDestFileWithPrompt_extension_(self, prompt: str, extension: str) -> str: pass
|
||||||
|
|
||||||
class PyDupeGuruBase(PyFairware):
|
class PyDupeGuruBase(PyFairware):
|
||||||
FOLLOW_PROTOCOLS = ['Worker']
|
|
||||||
|
|
||||||
@dontwrap
|
@dontwrap
|
||||||
def _init(self, modelclass):
|
def _init(self, modelclass):
|
||||||
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
|
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
|
||||||
install_exception_hook()
|
install_exception_hook()
|
||||||
install_cocoa_logger()
|
install_cocoa_logger()
|
||||||
|
patch_threaded_job_performer()
|
||||||
appdata = proxy.getAppdataPath()
|
appdata = proxy.getAppdataPath()
|
||||||
self.model = modelclass(self, appdata)
|
self.model = modelclass(self, appdata)
|
||||||
self.progress = cocoa.ThreadedJobPerformer()
|
|
||||||
|
|
||||||
#---Sub-proxies
|
#---Sub-proxies
|
||||||
def detailsPanel(self) -> pyref:
|
def detailsPanel(self) -> pyref:
|
||||||
@ -56,6 +39,9 @@ class PyDupeGuruBase(PyFairware):
|
|||||||
def ignoreListDialog(self) -> pyref:
|
def ignoreListDialog(self) -> pyref:
|
||||||
return self.model.ignore_list_dialog
|
return self.model.ignore_list_dialog
|
||||||
|
|
||||||
|
def progressWindow(self) -> pyref:
|
||||||
|
return self.model.progress_window
|
||||||
|
|
||||||
def deletionOptions(self) -> pyref:
|
def deletionOptions(self) -> pyref:
|
||||||
return self.model.deletion_options
|
return self.model.deletion_options
|
||||||
|
|
||||||
@ -157,31 +143,6 @@ class PyDupeGuruBase(PyFairware):
|
|||||||
def setCopyMoveDestType_(self, copymove_dest_type: int):
|
def setCopyMoveDestType_(self, copymove_dest_type: int):
|
||||||
self.model.options['copymove_dest_type'] = copymove_dest_type
|
self.model.options['copymove_dest_type'] = copymove_dest_type
|
||||||
|
|
||||||
#---Worker
|
|
||||||
def getJobProgress(self) -> object: # NSNumber
|
|
||||||
try:
|
|
||||||
return self.progress.last_progress
|
|
||||||
except AttributeError:
|
|
||||||
# I have *no idea* why this can possible happen (last_progress is always set by
|
|
||||||
# create_job() *before* any threaded job notification, which shows the progress panel,
|
|
||||||
# is sent), but it happens anyway, so there we go. ref: #106
|
|
||||||
return -1
|
|
||||||
|
|
||||||
def getJobDesc(self) -> str:
|
|
||||||
try:
|
|
||||||
return self.progress.last_desc
|
|
||||||
except AttributeError:
|
|
||||||
# see getJobProgress
|
|
||||||
return ''
|
|
||||||
|
|
||||||
def cancelJob(self):
|
|
||||||
self.progress.job_cancelled = True
|
|
||||||
|
|
||||||
def jobCompleted_(self, jobid: str):
|
|
||||||
result = self.model._job_completed(jobid, self.progress.last_error)
|
|
||||||
if not result:
|
|
||||||
self.progress.reraise_if_error()
|
|
||||||
|
|
||||||
#--- model --> view
|
#--- model --> view
|
||||||
@dontwrap
|
@dontwrap
|
||||||
def open_path(self, path):
|
def open_path(self, path):
|
||||||
@ -191,18 +152,6 @@ class PyDupeGuruBase(PyFairware):
|
|||||||
def reveal_path(self, path):
|
def reveal_path(self, path):
|
||||||
proxy.revealPath_(str(path))
|
proxy.revealPath_(str(path))
|
||||||
|
|
||||||
@dontwrap
|
|
||||||
def start_job(self, jobid, func, args=()):
|
|
||||||
try:
|
|
||||||
j = self.progress.create_job()
|
|
||||||
args = tuple([j] + list(args))
|
|
||||||
self.progress.run_threaded(func, args=args)
|
|
||||||
except job.JobInProgressError:
|
|
||||||
proxy.postNotification_userInfo_('JobInProgress', None)
|
|
||||||
else:
|
|
||||||
ud = {'desc': JOBID2TITLE[jobid], 'jobid':jobid}
|
|
||||||
proxy.postNotification_userInfo_('JobStarted', ud)
|
|
||||||
|
|
||||||
@dontwrap
|
@dontwrap
|
||||||
def ask_yes_no(self, prompt):
|
def ask_yes_no(self, prompt):
|
||||||
return self.callback.askYesNoWithPrompt_(prompt)
|
return self.callback.askYesNoWithPrompt_(prompt)
|
||||||
|
@ -50,7 +50,8 @@ def build(ctx):
|
|||||||
'views/HSTableView', 'views/HSOutlineView', 'views/NSIndexPathAdditions',
|
'views/HSTableView', 'views/HSOutlineView', 'views/NSIndexPathAdditions',
|
||||||
'views/NSTableViewAdditions',
|
'views/NSTableViewAdditions',
|
||||||
'controllers/HSColumns', 'controllers/HSGUIController', 'controllers/HSTable',
|
'controllers/HSColumns', 'controllers/HSGUIController', 'controllers/HSTable',
|
||||||
'controllers/HSOutline', 'controllers/HSPopUpList', 'controllers/HSSelectableList']
|
'controllers/HSOutline', 'controllers/HSPopUpList', 'controllers/HSSelectableList',
|
||||||
|
'controllers/HSTextField', 'controllers/HSProgressWindow']
|
||||||
cocoalib_src = [cocoalib_node.find_node(usename + '.m') for usename in cocoalib_uses] + cocoalib_node.ant_glob('autogen/*.m')
|
cocoalib_src = [cocoalib_node.find_node(usename + '.m') for usename in cocoalib_uses] + cocoalib_node.ant_glob('autogen/*.m')
|
||||||
project_folders = ['autogen', 'base', ctx.env.DGEDITION]
|
project_folders = ['autogen', 'base', ctx.env.DGEDITION]
|
||||||
project_src = sum([ctx.srcnode.ant_glob('%s/*.m' % folder) for folder in project_folders], [])
|
project_src = sum([ctx.srcnode.ant_glob('%s/*.m' % folder) for folder in project_folders], [])
|
||||||
|
@ -16,19 +16,14 @@ from .CocoaProxy import CocoaProxy
|
|||||||
|
|
||||||
proxy = CocoaProxy()
|
proxy = CocoaProxy()
|
||||||
|
|
||||||
try:
|
def autoreleasepool(func):
|
||||||
from jobprogress.performer import ThreadedJobPerformer as ThreadedJobPerformerBase
|
def wrapper(*args, **kwargs):
|
||||||
class ThreadedJobPerformer(ThreadedJobPerformerBase):
|
proxy.createPool()
|
||||||
def _async_run(self, *args):
|
try:
|
||||||
proxy.createPool()
|
func(*args, **kwargs)
|
||||||
try:
|
finally:
|
||||||
ThreadedJobPerformerBase._async_run(self, *args)
|
proxy.destroyPool()
|
||||||
finally:
|
return wrapper
|
||||||
proxy.destroyPool()
|
|
||||||
except ImportError:
|
|
||||||
# jobprogress isn't used in all HS apps
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def as_fetch(as_list, as_type, step_size=1000):
|
def as_fetch(as_list, as_type, step_size=1000):
|
||||||
"""When fetching items from a very big list through applescript, the connection with the app
|
"""When fetching items from a very big list through applescript, the connection with the app
|
||||||
@ -113,3 +108,10 @@ class CocoaHandler(logging.Handler):
|
|||||||
|
|
||||||
def install_cocoa_logger():
|
def install_cocoa_logger():
|
||||||
logging.getLogger().addHandler(CocoaHandler())
|
logging.getLogger().addHandler(CocoaHandler())
|
||||||
|
|
||||||
|
def patch_threaded_job_performer():
|
||||||
|
# _async_run, under cocoa, has to be run within an autorelease pool to prevent leaks.
|
||||||
|
# You only need this patch is you use one of CocoaProxy's function (which allocate objc
|
||||||
|
# structures) inside a threaded job.
|
||||||
|
from jobprogress.performer import ThreadedJobPerformer
|
||||||
|
ThreadedJobPerformer._async_run = autoreleasepool(ThreadedJobPerformer._async_run)
|
||||||
|
@ -17,10 +17,12 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
NSInteger progress;
|
NSInteger progress;
|
||||||
HSTextField *jobdescTextField;
|
HSTextField *jobdescTextField;
|
||||||
HSTextField *progressdescTextField;
|
HSTextField *progressdescTextField;
|
||||||
|
NSWindow *parentWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id)initWithPyRef:(PyObject *)aPyRef view:(NSView *)aView;
|
- (id)initWithPyRef:(PyObject *)aPyRef view:(NSView *)aView;
|
||||||
- (PyProgressWindow *)model;
|
- (PyProgressWindow *)model;
|
||||||
|
- (void)setParentWindow:(NSWindow *)aParentWindow;
|
||||||
|
|
||||||
- (void)setProgress:(NSInteger)aProgress;
|
- (void)setProgress:(NSInteger)aProgress;
|
||||||
- (void)showWindow;
|
- (void)showWindow;
|
||||||
|
@ -17,6 +17,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
[[ProgressController mainProgressController] setWorker:self];
|
[[ProgressController mainProgressController] setWorker:self];
|
||||||
jobdescTextField = [[HSTextField alloc] initWithPyRef:[[self model] jobdescTextField] view:[[ProgressController mainProgressController] descText]];
|
jobdescTextField = [[HSTextField alloc] initWithPyRef:[[self model] jobdescTextField] view:[[ProgressController mainProgressController] descText]];
|
||||||
progressdescTextField = [[HSTextField alloc] initWithPyRef:[[self model] progressdescTextField] view:[[ProgressController mainProgressController] statusText]];
|
progressdescTextField = [[HSTextField alloc] initWithPyRef:[[self model] progressdescTextField] view:[[ProgressController mainProgressController] statusText]];
|
||||||
|
parentWindow = nil;
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,6 +27,11 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Public */
|
/* Public */
|
||||||
|
- (void)setParentWindow:(NSWindow *)aParentWindow
|
||||||
|
{
|
||||||
|
parentWindow = aParentWindow;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setProgress:(NSInteger)aProgress
|
- (void)setProgress:(NSInteger)aProgress
|
||||||
{
|
{
|
||||||
progress = aProgress;
|
progress = aProgress;
|
||||||
@ -33,7 +39,12 @@ http://www.hardcoded.net/licenses/bsd_license
|
|||||||
|
|
||||||
- (void)showWindow
|
- (void)showWindow
|
||||||
{
|
{
|
||||||
[[ProgressController mainProgressController] show];
|
if (parentWindow != nil) {
|
||||||
|
[[ProgressController mainProgressController] showSheetForParent:parentWindow];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
[[ProgressController mainProgressController] show];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)closeWindow
|
- (void)closeWindow
|
||||||
|
40
core/app.py
40
core/app.py
@ -15,13 +15,16 @@ import time
|
|||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
from send2trash import send2trash
|
from send2trash import send2trash
|
||||||
|
from jobprogress import job
|
||||||
from hscommon.reg import RegistrableApplication
|
from hscommon.reg import RegistrableApplication
|
||||||
from hscommon.notify import Broadcaster
|
from hscommon.notify import Broadcaster
|
||||||
from hscommon.path import Path
|
from hscommon.path import Path
|
||||||
from hscommon.conflict import smart_move, smart_copy
|
from hscommon.conflict import smart_move, smart_copy
|
||||||
|
from hscommon.gui.progress_window import ProgressWindow
|
||||||
from hscommon.util import (delete_if_empty, first, escape, nonone, format_time_decimal, allsame,
|
from hscommon.util import (delete_if_empty, first, escape, nonone, format_time_decimal, allsame,
|
||||||
rem_file_ext)
|
rem_file_ext)
|
||||||
from hscommon.trans import tr
|
from hscommon.trans import tr
|
||||||
|
from hscommon.plat import ISWINDOWS
|
||||||
|
|
||||||
from . import directories, results, scanner, export, fs
|
from . import directories, results, scanner, export, fs
|
||||||
from .gui.deletion_options import DeletionOptions
|
from .gui.deletion_options import DeletionOptions
|
||||||
@ -51,6 +54,16 @@ class JobType:
|
|||||||
Copy = 'job_copy'
|
Copy = 'job_copy'
|
||||||
Delete = 'job_delete'
|
Delete = 'job_delete'
|
||||||
|
|
||||||
|
JOBID2TITLE = {
|
||||||
|
JobType.Scan: tr("Scanning for duplicates"),
|
||||||
|
JobType.Load: tr("Loading"),
|
||||||
|
JobType.Move: tr("Moving"),
|
||||||
|
JobType.Copy: tr("Copying"),
|
||||||
|
JobType.Delete: tr("Sending to Trash"),
|
||||||
|
}
|
||||||
|
if ISWINDOWS:
|
||||||
|
JOBID2TITLE[JobType.Delete] = tr("Sending files to the recycle bin")
|
||||||
|
|
||||||
def format_timestamp(t, delta):
|
def format_timestamp(t, delta):
|
||||||
if delta:
|
if delta:
|
||||||
return format_time_decimal(t)
|
return format_time_decimal(t)
|
||||||
@ -86,7 +99,6 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
#--- View interface
|
#--- View interface
|
||||||
# open_path(path)
|
# open_path(path)
|
||||||
# reveal_path(path)
|
# reveal_path(path)
|
||||||
# start_job(jobid, func, args=()) ( func(j, *args) )
|
|
||||||
# ask_yes_no(prompt) --> bool
|
# ask_yes_no(prompt) --> bool
|
||||||
# show_results_window()
|
# show_results_window()
|
||||||
# show_problem_dialog()
|
# show_problem_dialog()
|
||||||
@ -123,6 +135,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
self.stats_label = StatsLabel(self)
|
self.stats_label = StatsLabel(self)
|
||||||
self.result_table = self._create_result_table()
|
self.result_table = self._create_result_table()
|
||||||
self.deletion_options = DeletionOptions()
|
self.deletion_options = DeletionOptions()
|
||||||
|
self.progress_window = ProgressWindow(self._job_completed)
|
||||||
children = [self.result_table, self.directory_tree, self.stats_label, self.details_panel]
|
children = [self.result_table, self.directory_tree, self.stats_label, self.details_panel]
|
||||||
for child in children:
|
for child in children:
|
||||||
child.connect()
|
child.connect()
|
||||||
@ -225,12 +238,16 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
if self.results.get_group_of_duplicate(d) is not None]
|
if self.results.get_group_of_duplicate(d) is not None]
|
||||||
self.notify('results_changed')
|
self.notify('results_changed')
|
||||||
|
|
||||||
def _job_completed(self, jobid, exc):
|
def _start_job(self, jobid, func, args=()):
|
||||||
# Must be called by subclasses when they detect that an async job is completed. If an
|
title = JOBID2TITLE[jobid]
|
||||||
# exception was raised during the job, `exc` will be set. Return True when the error was
|
try:
|
||||||
# handled. If we return False when exc is set, a the exception will be re-raised.
|
self.progress_window.run(jobid, title, func, args=args)
|
||||||
if exc is not None:
|
except job.JobInProgressError:
|
||||||
return False # We don't handle any exception in here
|
msg = tr("A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.")
|
||||||
|
self.view.show_message(msg)
|
||||||
|
|
||||||
|
def _job_completed(self, jobid):
|
||||||
|
print("complete!", jobid)
|
||||||
if jobid == JobType.Scan:
|
if jobid == JobType.Scan:
|
||||||
self._results_changed()
|
self._results_changed()
|
||||||
if not self.results.groups:
|
if not self.results.groups:
|
||||||
@ -362,7 +379,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
if destination:
|
if destination:
|
||||||
desttype = self.options['copymove_dest_type']
|
desttype = self.options['copymove_dest_type']
|
||||||
jobid = JobType.Copy if copy else JobType.Move
|
jobid = JobType.Copy if copy else JobType.Move
|
||||||
self.view.start_job(jobid, do)
|
self._start_job(jobid, do)
|
||||||
|
|
||||||
def delete_marked(self):
|
def delete_marked(self):
|
||||||
if not self._check_demo():
|
if not self._check_demo():
|
||||||
@ -375,7 +392,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
args = [self.deletion_options.link_deleted, self.deletion_options.use_hardlinks,
|
args = [self.deletion_options.link_deleted, self.deletion_options.use_hardlinks,
|
||||||
self.deletion_options.direct]
|
self.deletion_options.direct]
|
||||||
logging.debug("Starting deletion job with args %r", args)
|
logging.debug("Starting deletion job with args %r", args)
|
||||||
self.view.start_job(JobType.Delete, self._do_delete, args=args)
|
self._start_job(JobType.Delete, self._do_delete, args=args)
|
||||||
|
|
||||||
def export_to_xhtml(self):
|
def export_to_xhtml(self):
|
||||||
colnames, rows = self._get_export_data()
|
colnames, rows = self._get_export_data()
|
||||||
@ -439,7 +456,8 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
def load_from(self, filename):
|
def load_from(self, filename):
|
||||||
def do(j):
|
def do(j):
|
||||||
self.results.load_from_xml(filename, self._get_file, j)
|
self.results.load_from_xml(filename, self._get_file, j)
|
||||||
self.view.start_job(JobType.Load, do)
|
print("load finished")
|
||||||
|
self._start_job(JobType.Load, do)
|
||||||
|
|
||||||
def make_selected_reference(self):
|
def make_selected_reference(self):
|
||||||
dupes = self.without_ref(self.selected_dupes)
|
dupes = self.without_ref(self.selected_dupes)
|
||||||
@ -580,7 +598,7 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
|||||||
return
|
return
|
||||||
self.results.groups = []
|
self.results.groups = []
|
||||||
self._results_changed()
|
self._results_changed()
|
||||||
self.view.start_job(JobType.Scan, do)
|
self._start_job(JobType.Scan, do)
|
||||||
|
|
||||||
def toggle_selected_mark_state(self):
|
def toggle_selected_mark_state(self):
|
||||||
selected = self.without_ref(self.selected_dupes)
|
selected = self.without_ref(self.selected_dupes)
|
||||||
|
@ -30,6 +30,7 @@ class ProgressWindow(GUIObject, ThreadedJobPerformer):
|
|||||||
last_desc = self.last_desc
|
last_desc = self.last_desc
|
||||||
if not self._job_running or last_progress is None:
|
if not self._job_running or last_progress is None:
|
||||||
self.view.close()
|
self.view.close()
|
||||||
|
self.reraise_if_error()
|
||||||
if not self.job_cancelled:
|
if not self.job_cancelled:
|
||||||
self._finish_func(self.jobid)
|
self._finish_func(self.jobid)
|
||||||
return
|
return
|
||||||
|
@ -4,91 +4,119 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: utf-8\n"
|
"Content-Transfer-Encoding: utf-8\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid "You're about to open many files at once. Depending on what those files are opened with, doing so can create quite a mess. Continue?"
|
msgid "You're about to open many files at once. Depending on what those files are opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:246
|
||||||
|
msgid "A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid "You cannot delete, move or copy more than 10 duplicates at once in demo mode."
|
msgid "You cannot delete, move or copy more than 10 duplicates at once in demo mode."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid "All selected %d matches are going to be ignored in all subsequent scans. Continue?"
|
msgid "All selected %d matches are going to be ignored in all subsequent scans. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -9,55 +9,55 @@ msgstr ""
|
|||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Nebyli nalezeny žádné duplicity."
|
msgstr "Nebyli nalezeny žádné duplicity."
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
@ -65,44 +65,44 @@ msgstr ""
|
|||||||
"Všech %d vybraných shod bude v následujících hledáních ignorováno. "
|
"Všech %d vybraných shod bude v následujících hledáních ignorováno. "
|
||||||
"Pokračovat?"
|
"Pokračovat?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nedefinoval jste žádný uživatelský příkaz. Nadefinujete ho v předvolbách."
|
"Nedefinoval jste žádný uživatelský příkaz. Nadefinujete ho v předvolbách."
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "Chystáte se z výsledků odstranit %d souborů. Pokračovat?"
|
msgstr "Chystáte se z výsledků odstranit %d souborů. Pokračovat?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Shromažďuji prohlížené soubory"
|
msgstr "Shromažďuji prohlížené soubory"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "Vybrané adresáře neobsahují žádné soubory vhodné k prohledávání."
|
msgstr "Vybrané adresáře neobsahují žádné soubory vhodné k prohledávání."
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d vyřazeno)"
|
msgstr "%s (%d vyřazeno)"
|
||||||
|
|
||||||
@ -209,3 +209,35 @@ msgstr "Ověřeno %d/%d shod"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Vyhledávám duplicity"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Nahrávám"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Přesouvám"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Kopíruji"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Vyhazuji do koše"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Předchozí akce stále nebyla ukončena. Novou zatím nemůžete spustit. Počkejte"
|
||||||
|
" pár sekund a zkuste to znovu."
|
||||||
|
@ -9,26 +9,6 @@ msgstr ""
|
|||||||
"Language: cs\n"
|
"Language: cs\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Vyhledávám duplicity"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Nahrávám"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Přesouvám"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Kopíruji"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Vyhazuji do koše"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Odstraňuji mrtvé stopy z Vaší knihovny iTunes"
|
msgstr "Odstraňuji mrtvé stopy z Vaší knihovny iTunes"
|
||||||
@ -81,10 +61,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "Nelze najít aplikaci iPhoto."
|
msgstr "Nelze najít aplikaci iPhoto."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -118,14 +94,6 @@ msgstr ""
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Předchozí akce stále nebyla ukončena. Novou zatím nemůžete spustit. Počkejte"
|
|
||||||
" pár sekund a zkuste to znovu."
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -404,7 +372,7 @@ msgstr "Odstranit označené z výsledků"
|
|||||||
|
|
||||||
#: qt/base/result_window.py:52 cocoa/base/en.lproj/Localizable.strings:0
|
#: qt/base/result_window.py:52 cocoa/base/en.lproj/Localizable.strings:0
|
||||||
msgid "Re-Prioritize Results..."
|
msgid "Re-Prioritize Results..."
|
||||||
msgstr ""
|
msgstr "Změnit prioritu výsledků..."
|
||||||
|
|
||||||
#: qt/base/result_window.py:53 cocoa/base/en.lproj/Localizable.strings:0
|
#: qt/base/result_window.py:53 cocoa/base/en.lproj/Localizable.strings:0
|
||||||
msgid "Remove Selected from Results"
|
msgid "Remove Selected from Results"
|
||||||
@ -859,9 +827,3 @@ msgstr "Zoom"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Změnit prioritu výsledků"
|
|
||||||
|
@ -9,99 +9,99 @@ msgstr ""
|
|||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Keine Duplikate gefunden."
|
msgstr "Keine Duplikate gefunden."
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
msgstr "%d Dateien werden in zukünftigen Scans ignoriert werden. Fortfahren?"
|
msgstr "%d Dateien werden in zukünftigen Scans ignoriert werden. Fortfahren?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr "kopieren"
|
msgstr "kopieren"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr "verschieben"
|
msgstr "verschieben"
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr "Wählen sie einen Ordner zum {} der ausgewählten Dateien"
|
msgstr "Wählen sie einen Ordner zum {} der ausgewählten Dateien"
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sie haben keinen eigenen Befehl erstellt. Bitte in den Einstellungen "
|
"Sie haben keinen eigenen Befehl erstellt. Bitte in den Einstellungen "
|
||||||
"konfigurieren."
|
"konfigurieren."
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "%d Dateien werden aus der Ergebnisliste entfernt. Fortfahren?"
|
msgstr "%d Dateien werden aus der Ergebnisliste entfernt. Fortfahren?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Sammle Dateien zum Scannen"
|
msgstr "Sammle Dateien zum Scannen"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "Der ausgewählte Ordner enthält keine scannbare Dateien."
|
msgstr "Der ausgewählte Ordner enthält keine scannbare Dateien."
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d verworfen)"
|
msgstr "%s (%d verworfen)"
|
||||||
|
|
||||||
@ -208,3 +208,35 @@ msgstr "%d/%d verifizierte Paare"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Suche nach Duplikaten"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Laden"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Verschieben"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Kopieren"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Verschiebe in den Mülleimer"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "Sende Dateien in den Mülleimer"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Eine vorherige Aktion ist noch in der Bearbeitung. Sie können noch keine "
|
||||||
|
"Neue starten. Warten Sie einige Sekunden und versuchen es erneut."
|
||||||
|
@ -9,26 +9,6 @@ msgstr ""
|
|||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Suche nach Duplikaten"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Laden"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Verschieben"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Kopieren"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Verschiebe in den Mülleimer"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Entferne tote Stücke aus Ihrer iTunes Bibliothek."
|
msgstr "Entferne tote Stücke aus Ihrer iTunes Bibliothek."
|
||||||
@ -81,10 +61,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "The iPhoto application couldn't be found."
|
msgstr "The iPhoto application couldn't be found."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr "Sende Dateien in den Mülleimer"
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Beenden"
|
msgstr "Beenden"
|
||||||
@ -118,14 +94,6 @@ msgstr "Auf Updates überprüfen"
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr "Debug Log öffnen"
|
msgstr "Debug Log öffnen"
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Eine vorherige Aktion ist noch in der Bearbeitung. Sie können noch keine "
|
|
||||||
"Neue starten. Warten Sie einige Sekunden und versuchen es erneut."
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -403,7 +371,7 @@ msgstr "Entferne Markierte aus den Ergebnissen"
|
|||||||
|
|
||||||
#: qt/base/result_window.py:52 cocoa/base/en.lproj/Localizable.strings:0
|
#: qt/base/result_window.py:52 cocoa/base/en.lproj/Localizable.strings:0
|
||||||
msgid "Re-Prioritize Results..."
|
msgid "Re-Prioritize Results..."
|
||||||
msgstr "Entferne Ausgewählte aus den Ergebnissen"
|
msgstr "Entferne Ausgewählte aus den Ergebnissen..."
|
||||||
|
|
||||||
#: qt/base/result_window.py:53 cocoa/base/en.lproj/Localizable.strings:0
|
#: qt/base/result_window.py:53 cocoa/base/en.lproj/Localizable.strings:0
|
||||||
msgid "Remove Selected from Results"
|
msgid "Remove Selected from Results"
|
||||||
@ -859,9 +827,3 @@ msgstr "Zoomen"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Re-Prioritize Results"
|
|
||||||
|
@ -11,15 +11,15 @@ msgstr ""
|
|||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr "Aucun doublon marqué. Rien à faire."
|
msgstr "Aucun doublon marqué. Rien à faire."
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr "Aucun doublon sélectionné. Rien à faire."
|
msgstr "Aucun doublon sélectionné. Rien à faire."
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
@ -27,28 +27,28 @@ msgstr ""
|
|||||||
"Beaucoup de fichiers seront ouverts en même temps. Cela peut gravement "
|
"Beaucoup de fichiers seront ouverts en même temps. Cela peut gravement "
|
||||||
"encombrer votre système. Continuer?"
|
"encombrer votre système. Continuer?"
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr "ne peut effacer, déplacer ou copier que 10 doublons à la fois"
|
msgstr "ne peut effacer, déplacer ou copier que 10 doublons à la fois"
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Aucun doublon trouvé."
|
msgstr "Aucun doublon trouvé."
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr "Tous les fichiers marqués ont été copiés correctement."
|
msgstr "Tous les fichiers marqués ont été copiés correctement."
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr "Tous les fichiers marqués ont été déplacés correctement."
|
msgstr "Tous les fichiers marqués ont été déplacés correctement."
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tous les fichiers marqués ont été correctement envoyés à la corbeille."
|
"Tous les fichiers marqués ont été correctement envoyés à la corbeille."
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
@ -56,58 +56,58 @@ msgstr ""
|
|||||||
"Vous ne pouvez pas effacer, déplacer ou copier plus de 10 doublons à la fois"
|
"Vous ne pouvez pas effacer, déplacer ou copier plus de 10 doublons à la fois"
|
||||||
" en mode démo."
|
" en mode démo."
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr "'{}' est déjà dans la liste."
|
msgstr "'{}' est déjà dans la liste."
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr "'{}' n'existe pas."
|
msgstr "'{}' n'existe pas."
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
msgstr "%d fichiers seront ignorés des prochains scans. Continuer?"
|
msgstr "%d fichiers seront ignorés des prochains scans. Continuer?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr "copier"
|
msgstr "copier"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr "déplacer"
|
msgstr "déplacer"
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr "Sélectionnez un dossier vers lequel {} les fichiers marqués."
|
msgstr "Sélectionnez un dossier vers lequel {} les fichiers marqués."
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr "Choisissez une destination pour votre exportation CSV"
|
msgstr "Choisissez une destination pour votre exportation CSV"
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Vous n'avez pas de commande personnalisée. Ajoutez-la dans vos préférences."
|
"Vous n'avez pas de commande personnalisée. Ajoutez-la dans vos préférences."
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "%d fichiers seront retirés des résultats. Continuer?"
|
msgstr "%d fichiers seront retirés des résultats. Continuer?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr "{} groupes de doublons ont été modifiés par la re-prioritisation."
|
msgstr "{} groupes de doublons ont été modifiés par la re-prioritisation."
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Collecte des fichiers à scanner"
|
msgstr "Collecte des fichiers à scanner"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "Les dossiers sélectionnés ne contiennent pas de fichiers valides."
|
msgstr "Les dossiers sélectionnés ne contiennent pas de fichiers valides."
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d hors-groupe)"
|
msgstr "%s (%d hors-groupe)"
|
||||||
|
|
||||||
@ -216,3 +216,35 @@ msgstr "Vérifié %d/%d paires"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr "Lu l'EXIF de %d/%d images"
|
msgstr "Lu l'EXIF de %d/%d images"
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Scan de doublons en cours"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Chargement en cours"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Déplacement en cours"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Copie en cours"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Envoi de fichiers à la corbeille"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "Envoi de fichiers à la corbeille"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Une action précédente est encore en cours. Attendez quelques secondes avant "
|
||||||
|
"d'en repartir une nouvelle."
|
||||||
|
@ -12,26 +12,6 @@ msgstr ""
|
|||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Scan de doublons en cours"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Chargement en cours"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Déplacement en cours"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Copie en cours"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Envoi vers corbeille"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Retrait des tracks mortes de votre librairie iTunes"
|
msgstr "Retrait des tracks mortes de votre librairie iTunes"
|
||||||
@ -89,10 +69,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "iPhoto n'a pas pu être trouvée dans vos applications."
|
msgstr "iPhoto n'a pas pu être trouvée dans vos applications."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr "Envoi de fichiers à la corbeille"
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Quitter"
|
msgstr "Quitter"
|
||||||
@ -126,14 +102,6 @@ msgstr "Vérifier les mises à jour"
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr "Ouvrir logs de déboguage"
|
msgstr "Ouvrir logs de déboguage"
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Une action précédente est encore en cours. Attendez quelques secondes avant "
|
|
||||||
"d'en repartir une nouvelle."
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr "Fichier {} (*.{})"
|
msgstr "Fichier {} (*.{})"
|
||||||
@ -872,9 +840,3 @@ msgstr "Réduire/agrandir"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr " (Mac OS X ou Linux seulement)"
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Re-prioriser les résultats"
|
|
||||||
|
@ -9,42 +9,42 @@ msgstr ""
|
|||||||
"Language: hy\n"
|
"Language: hy\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"միաժամանակ հնարավոր է ջնջել, տեղափոխել կամ պատճենել միայն 10 օրինակներ"
|
"միաժամանակ հնարավոր է ջնջել, տեղափոխել կամ պատճենել միայն 10 օրինակներ"
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Կրկնօրինակներ չկան:"
|
msgstr "Կրկնօրինակներ չկան:"
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ պատճենվել են:"
|
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ պատճենվել են:"
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ տեղափոխվել են:"
|
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ տեղափոխվել են:"
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ Ջնջվել են:"
|
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ Ջնջվել են:"
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
@ -52,58 +52,58 @@ msgstr ""
|
|||||||
"Չեք կարող ջնջել, տեղափձոխել կամ պատճենել ավելի քան 10 օրինակներ փորձնական "
|
"Չեք կարող ջնջել, տեղափձոխել կամ պատճենել ավելի քան 10 օրինակներ փորձնական "
|
||||||
"եղանակում:"
|
"եղանակում:"
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr "'{}'-ը արդեն առկա է ցանկում:"
|
msgstr "'{}'-ը արդեն առկա է ցանկում:"
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr "'{}'-ը գոյություն չունի:"
|
msgstr "'{}'-ը գոյություն չունի:"
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Ընտրված %d համընկնումները կանտեսվեն հետագա բոլոր ստուգումներից: Շարունակե՞լ:"
|
"Ընտրված %d համընկնումները կանտեսվեն հետագա բոլոր ստուգումներից: Շարունակե՞լ:"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr "պատճենել"
|
msgstr "պատճենել"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr "տեղափոխել"
|
msgstr "տեղափոխել"
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr "Ընտրել թղթապանակ՝ {} նշված ֆայլերի համար"
|
msgstr "Ընտրել թղթապանակ՝ {} նշված ֆայլերի համար"
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr "Դուք չեք կատարել Հրամանի ընտրություն: Կատարեք այն կարգավորումներում:"
|
msgstr "Դուք չեք կատարել Հրամանի ընտրություն: Կատարեք այն կարգավորումներում:"
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "Դուք պատրաստվում եք ջնջելու %d ֆայլեր: Շարունակե՞լ:"
|
msgstr "Դուք պատրաստվում եք ջնջելու %d ֆայլեր: Շարունակե՞լ:"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Հավաքվում են ֆայլեր՝ ստուգելու համար"
|
msgstr "Հավաքվում են ֆայլեր՝ ստուգելու համար"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "Ընտրված թղթապանակները պարունակում են չստուգվող ֆայլ:"
|
msgstr "Ընտրված թղթապանակները պարունակում են չստուգվող ֆայլ:"
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d անպիտան)"
|
msgstr "%s (%d անպիտան)"
|
||||||
|
|
||||||
@ -210,3 +210,35 @@ msgstr "Ստուգում է %d/%d համընկնումները"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr "Կարդալ EXIF-ը d/%d նկարներից"
|
msgstr "Կարդալ EXIF-ը d/%d նկարներից"
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Ստուգվում են կրկնօրինակները"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Բացվում է"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Տեղափոխվում է"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Պատճենվում է"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Ուղարկվում է Աղբարկղ"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "Ֆայլերը ուղարկվում են Աղբարկղ"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Նախորդ գործողությունը դեռևս ձեռադրում է այստեղ: Չեք կարող սկսել մեկ ուրիշը: "
|
||||||
|
"Սպասեք մի քանի վայրկյան և կրկին փորձեք:"
|
||||||
|
@ -9,26 +9,6 @@ msgstr ""
|
|||||||
"Language: hy\n"
|
"Language: hy\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Ստուգվում են կրկնօրինակները"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Բացվում է"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Տեղափոխվում է"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Պատճենվում է"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Ուղարկվում է Աղբարկղ"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Հեռացվում են վնասված շավիղները iTunes-ի Շտեմարանից"
|
msgstr "Հեռացվում են վնասված շավիղները iTunes-ի Շտեմարանից"
|
||||||
@ -82,10 +62,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "iPhoto ծրագիրը չի գտնվել:"
|
msgstr "iPhoto ծրագիրը չի գտնվել:"
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr "Ֆայլերը ուղարկվում են Աղբարկղ"
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Փակել"
|
msgstr "Փակել"
|
||||||
@ -119,14 +95,6 @@ msgstr "Ստուգել թարմացումները"
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr "Բացել Սխալների մատյանը"
|
msgstr "Բացել Սխալների մատյանը"
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Նախորդ գործողությունը դեռևս ձեռադրում է այստեղ: Չեք կարող սկսել մեկ ուրիշը: "
|
|
||||||
"Սպասեք մի քանի վայրկյան և կրկին փորձեք:"
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -859,9 +827,3 @@ msgstr "Չափը"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Վերաառաջնայնավորել արդյունքները"
|
|
||||||
|
@ -9,55 +9,55 @@ msgstr ""
|
|||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Non sono stati trovati dei duplicati."
|
msgstr "Non sono stati trovati dei duplicati."
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr "Tutti i file marcati sono stati copiati correttamente."
|
msgstr "Tutti i file marcati sono stati copiati correttamente."
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr "Tutti i file marcati sono stati spostati correttamente."
|
msgstr "Tutti i file marcati sono stati spostati correttamente."
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr "Tutti i file marcati sono stati inviati nel cestino."
|
msgstr "Tutti i file marcati sono stati inviati nel cestino."
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr "'{}' è già nella lista."
|
msgstr "'{}' è già nella lista."
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr "'{}' non esiste."
|
msgstr "'{}' non esiste."
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
@ -65,45 +65,45 @@ msgstr ""
|
|||||||
"Tutti i %d elementi che coincidono verranno ignorati in tutte le scansioni "
|
"Tutti i %d elementi che coincidono verranno ignorati in tutte le scansioni "
|
||||||
"successive. Continuare?"
|
"successive. Continuare?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Non hai impostato nessun comando personalizzato. Impostalo nelle tue "
|
"Non hai impostato nessun comando personalizzato. Impostalo nelle tue "
|
||||||
"preferenze."
|
"preferenze."
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "Stai per rimuovere %d file dai risultati. Continuare?"
|
msgstr "Stai per rimuovere %d file dai risultati. Continuare?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Raccolta file da scansionare"
|
msgstr "Raccolta file da scansionare"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "Le cartelle selezionate non contengono file da scansionare."
|
msgstr "Le cartelle selezionate non contengono file da scansionare."
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d scartati)"
|
msgstr "%s (%d scartati)"
|
||||||
|
|
||||||
@ -213,3 +213,35 @@ msgstr "Verificate %d/%d somiglianze"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Scansione per i duplicati"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Caricamento"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Spostamento"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Copia in corso"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Spostamento nel cestino"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "Spostamento nel cestino"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Un'azione precedente è ancora in corso. Non puoi cominciarne una nuova. "
|
||||||
|
"Aspetta qualche secondo e quindi riprova."
|
||||||
|
@ -9,26 +9,6 @@ msgstr ""
|
|||||||
"Language: it\n"
|
"Language: it\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Scansione per i duplicati"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Caricamento"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Spostamento"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Copia in corso"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Spostamento nel cestino"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Rimozione delle tracce insistenti dalla libreria di iTunes"
|
msgstr "Rimozione delle tracce insistenti dalla libreria di iTunes"
|
||||||
@ -82,10 +62,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "Non trovo l'applicazione iPhoto."
|
msgstr "Non trovo l'applicazione iPhoto."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -119,14 +95,6 @@ msgstr ""
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Un'azione precedente è ancora in corso. Non puoi cominciarne una nuova. "
|
|
||||||
"Aspetta qualche secondo e quindi riprova."
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -408,7 +376,7 @@ msgstr "Rimuovi gli elementi marcati dai risultati"
|
|||||||
|
|
||||||
#: qt/base/result_window.py:52 cocoa/base/en.lproj/Localizable.strings:0
|
#: qt/base/result_window.py:52 cocoa/base/en.lproj/Localizable.strings:0
|
||||||
msgid "Re-Prioritize Results..."
|
msgid "Re-Prioritize Results..."
|
||||||
msgstr ""
|
msgstr "Cambia la priorità dei risultati..."
|
||||||
|
|
||||||
#: qt/base/result_window.py:53 cocoa/base/en.lproj/Localizable.strings:0
|
#: qt/base/result_window.py:53 cocoa/base/en.lproj/Localizable.strings:0
|
||||||
msgid "Remove Selected from Results"
|
msgid "Remove Selected from Results"
|
||||||
@ -866,9 +834,3 @@ msgstr "Zoom"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Cambia la priorità dei risultati"
|
|
||||||
|
@ -13,15 +13,15 @@ msgstr ""
|
|||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr "Não há duplicatas marcadas. Nada foi feito."
|
msgstr "Não há duplicatas marcadas. Nada foi feito."
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr "Não há duplicatas selecionadas. Nada foi feito."
|
msgstr "Não há duplicatas selecionadas. Nada foi feito."
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
@ -29,27 +29,27 @@ msgstr ""
|
|||||||
"Você pretende abrir muitos arquivos de uma vez. Problemas podem surgir "
|
"Você pretende abrir muitos arquivos de uma vez. Problemas podem surgir "
|
||||||
"dependendo de qual app seja usado para abri-los. Continuar?"
|
"dependendo de qual app seja usado para abri-los. Continuar?"
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr "poderá apagar, mover ou copiar somente 10 duplicatas por vez"
|
msgstr "poderá apagar, mover ou copiar somente 10 duplicatas por vez"
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Nenhuma duplicata encontrada."
|
msgstr "Nenhuma duplicata encontrada."
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr "Todos os arquivos marcados foram copiados com sucesso."
|
msgstr "Todos os arquivos marcados foram copiados com sucesso."
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr "Todos os arquivos marcados foram relocados com sucesso."
|
msgstr "Todos os arquivos marcados foram relocados com sucesso."
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr "Todos os arquivos marcados foram movidos para o Lixo com sucesso."
|
msgstr "Todos os arquivos marcados foram movidos para o Lixo com sucesso."
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
@ -57,58 +57,58 @@ msgstr ""
|
|||||||
"Em modo demo, você não pode apagar, mover ou copiar mais do que 10 "
|
"Em modo demo, você não pode apagar, mover ou copiar mais do que 10 "
|
||||||
"duplicatas por vez."
|
"duplicatas por vez."
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr "'{}' já está na lista."
|
msgstr "'{}' já está na lista."
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr "'{}' não existe."
|
msgstr "'{}' não existe."
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
msgstr "Excluir %d duplicata(s) selecionada(s) de escaneamentos posteriores?"
|
msgstr "Excluir %d duplicata(s) selecionada(s) de escaneamentos posteriores?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr "copiar"
|
msgstr "copiar"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr "mover"
|
msgstr "mover"
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr "Selecione uma pasta para {} os arquivos marcados"
|
msgstr "Selecione uma pasta para {} os arquivos marcados"
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr "Selecione uma pasta para o CSV exportado"
|
msgstr "Selecione uma pasta para o CSV exportado"
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Você não possui nenhum comando personalizado. Crie um nas preferências."
|
"Você não possui nenhum comando personalizado. Crie um nas preferências."
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "Remover %d arquivo(s) dos resultados?"
|
msgstr "Remover %d arquivo(s) dos resultados?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr "{} grupos de duplicatas alterados ao re-priorizar."
|
msgstr "{} grupos de duplicatas alterados ao re-priorizar."
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Juntando arquivos para escanear"
|
msgstr "Juntando arquivos para escanear"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "As pastas selecionadas não contém arquivos escaneáveis."
|
msgstr "As pastas selecionadas não contém arquivos escaneáveis."
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d rejeitado(s))"
|
msgstr "%s (%d rejeitado(s))"
|
||||||
|
|
||||||
@ -215,3 +215,35 @@ msgstr "%d/%d coincidentes verificados"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr "EXIF de %d/%d fotos lidos"
|
msgstr "EXIF de %d/%d fotos lidos"
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Buscando por duplicatas"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Carregando"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Movendo"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Copiando"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Movendo para o Lixo"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "Enviando arquivos para o Lixo"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Ainda há uma ação em execução. Não é possível iniciar outra agora. Espere "
|
||||||
|
"alguns segundos e tente novamente."
|
||||||
|
@ -13,26 +13,6 @@ msgstr ""
|
|||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Buscando por duplicatas"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Carregando"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Movendo"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Copiando"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Movendo para o Lixo"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Removendo faixas sem referência da sua Biblioteca do iTunes"
|
msgstr "Removendo faixas sem referência da sua Biblioteca do iTunes"
|
||||||
@ -88,10 +68,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "O aplicativo iPhoto não foi encontrado."
|
msgstr "O aplicativo iPhoto não foi encontrado."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr "Enviando arquivos para o Lixo"
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Encerrar"
|
msgstr "Encerrar"
|
||||||
@ -125,14 +101,6 @@ msgstr "Buscar Atualizaçõs"
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr "Abrir Registro de Depuração"
|
msgstr "Abrir Registro de Depuração"
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Ainda há uma ação em execução. Não é possível iniciar outra agora. Espere "
|
|
||||||
"alguns segundos e tente novamente."
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr "Arquivo {} (*.{})"
|
msgstr "Arquivo {} (*.{})"
|
||||||
@ -872,9 +840,3 @@ msgstr "Reduzir/Ampliar"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr " (Mac OS X ou Linux somente)"
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Re-Priorizar Resultados"
|
|
||||||
|
@ -9,43 +9,43 @@ msgstr ""
|
|||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"вы сможете удалить, переместить или скопировать только 10 дубликатов за один"
|
"вы сможете удалить, переместить или скопировать только 10 дубликатов за один"
|
||||||
" раз"
|
" раз"
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Дубликаты не найдены."
|
msgstr "Дубликаты не найдены."
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr "Все отмеченные файлы были скопированы успешно."
|
msgstr "Все отмеченные файлы были скопированы успешно."
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr "Все отмеченные файлы были перемещены успешно."
|
msgstr "Все отмеченные файлы были перемещены успешно."
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr "Все отмеченные файлы были успешно отправлены в Корзину."
|
msgstr "Все отмеченные файлы были успешно отправлены в Корзину."
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
@ -53,15 +53,15 @@ msgstr ""
|
|||||||
"Вы не можете удалять, перемещать или копировать более 10 дубликатов за один "
|
"Вы не можете удалять, перемещать или копировать более 10 дубликатов за один "
|
||||||
"раз в демонстрационном режиме."
|
"раз в демонстрационном режиме."
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
@ -69,43 +69,43 @@ msgstr ""
|
|||||||
"Все выбранные %d совпадений будут игнорироваться при всех последующих "
|
"Все выбранные %d совпадений будут игнорироваться при всех последующих "
|
||||||
"проверках. Продолжить?"
|
"проверках. Продолжить?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr "копирование"
|
msgstr "копирование"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr "перемещение"
|
msgstr "перемещение"
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr "Выберите каталог {} для отмеченных файлов"
|
msgstr "Выберите каталог {} для отмеченных файлов"
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr "Вы не создали пользовательскую команду. Задайте её в настройках."
|
msgstr "Вы не создали пользовательскую команду. Задайте её в настройках."
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "Вы собираетесь удалить %d файлов из результата поиска. Продолжить?"
|
msgstr "Вы собираетесь удалить %d файлов из результата поиска. Продолжить?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Сбор файлов для сканирования"
|
msgstr "Сбор файлов для сканирования"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "Выбранные каталоги не содержат файлов для сканирования."
|
msgstr "Выбранные каталоги не содержат файлов для сканирования."
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s. (%d отменено)"
|
msgstr "%s. (%d отменено)"
|
||||||
|
|
||||||
@ -213,3 +213,35 @@ msgstr "Проверено %d/%d совпадений"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr "Прочитана EXIF-информация %d/%d фотографий"
|
msgstr "Прочитана EXIF-информация %d/%d фотографий"
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Проверка на наличие дубликатов"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Загрузка"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Перемещение"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Копирование"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Перемещение в Корзину"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "Перемещение файлов в Корзину"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Предыдущее действие до сих пор выполняется. Вы не можете начать новое. "
|
||||||
|
"Подождите несколько секунд, затем повторите попытку."
|
||||||
|
@ -9,26 +9,6 @@ msgstr ""
|
|||||||
"Language: ru\n"
|
"Language: ru\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Проверка на наличие дубликатов"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Загрузка"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Перемещение"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Копирование"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Перемещение в Корзину"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Удаление «мёртвых» треков из библиотеки iTunes"
|
msgstr "Удаление «мёртвых» треков из библиотеки iTunes"
|
||||||
@ -82,10 +62,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "Приложение iPhoto не найдено."
|
msgstr "Приложение iPhoto не найдено."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr "Перемещение файлов в Корзину"
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Выйти"
|
msgstr "Выйти"
|
||||||
@ -119,14 +95,6 @@ msgstr "Проверить обновления"
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr "Открыть журнал отладки"
|
msgstr "Открыть журнал отладки"
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Предыдущее действие до сих пор выполняется. Вы не можете начать новое. "
|
|
||||||
"Подождите несколько секунд, затем повторите попытку."
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -863,9 +831,3 @@ msgstr "Увеличить"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Изменить приоритеты результатов"
|
|
||||||
|
@ -4,26 +4,6 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: utf-8\n"
|
"Content-Transfer-Encoding: utf-8\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -75,10 +55,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -112,12 +88,6 @@ msgstr ""
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -9,41 +9,41 @@ msgstr ""
|
|||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr "Немає позначених дублікатів - нічого робити."
|
msgstr "Немає позначених дублікатів - нічого робити."
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr "Немає обраних дублікатів - нічого робити."
|
msgstr "Немає обраних дублікатів - нічого робити."
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr "може видаляти, переміщувати або копіювати лише 10 копій відразу"
|
msgstr "може видаляти, переміщувати або копіювати лише 10 копій відразу"
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "Не знайдено жодного дублікату."
|
msgstr "Не знайдено жодного дублікату."
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr "Усі позначені файли були скопійовані успішно."
|
msgstr "Усі позначені файли були скопійовані успішно."
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr "Усі позначені файли були переміщені успішно."
|
msgstr "Усі позначені файли були переміщені успішно."
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr "Усі позначені файли були успішно відправлені до кошика."
|
msgstr "Усі позначені файли були успішно відправлені до кошика."
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
@ -51,15 +51,15 @@ msgstr ""
|
|||||||
"Ви не можете видаляти, переміщати або копіювати більше 10 дублікатів відразу"
|
"Ви не можете видаляти, переміщати або копіювати більше 10 дублікатів відразу"
|
||||||
" в демонстраційному режимі."
|
" в демонстраційному режимі."
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr "'{}' вже є в списку."
|
msgstr "'{}' вже є в списку."
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr "'{}' не існує."
|
msgstr "'{}' не існує."
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
@ -67,43 +67,43 @@ msgstr ""
|
|||||||
"Усі обрані %d результатів будуть ігноруватися під час усіх наступних "
|
"Усі обрані %d результатів будуть ігноруватися під час усіх наступних "
|
||||||
"пошуків. Продовжити?"
|
"пошуків. Продовжити?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr "копіювання"
|
msgstr "копіювання"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr "переміщення"
|
msgstr "переміщення"
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr "Оберіть цільову папку для {} позначених файлів"
|
msgstr "Оберіть цільову папку для {} позначених файлів"
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr "Власна команда не встановлена. Встановіть її у налаштуваннях."
|
msgstr "Власна команда не встановлена. Встановіть її у налаштуваннях."
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "Ви збираєтеся видалити %d файлів з результату пошуку. Продовжити?"
|
msgstr "Ви збираєтеся видалити %d файлів з результату пошуку. Продовжити?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "Збір файлів для пошуку"
|
msgstr "Збір файлів для пошуку"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "Обрані папки не містять файлів придатних для пошуку."
|
msgstr "Обрані папки не містять файлів придатних для пошуку."
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d відкинуто)"
|
msgstr "%s (%d відкинуто)"
|
||||||
|
|
||||||
@ -210,3 +210,35 @@ msgstr "Перевірено %d/%d результатів"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr "Прочитано EXIF з %d/%d фотографій"
|
msgstr "Прочитано EXIF з %d/%d фотографій"
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "Пошук дублікатів"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "Завантаження"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "Переміщення"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "Копіювання"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "Відправка до кошику"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "Відправлення файлів до кошика"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr ""
|
||||||
|
"Попередню дію ще не закінчено. Ви покищо не можете розпочаті нову. Зачекайте"
|
||||||
|
" кілька секунд, потім повторіть спробу."
|
||||||
|
@ -9,26 +9,6 @@ msgstr ""
|
|||||||
"Language: uk\n"
|
"Language: uk\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "Пошук дублікатів"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "Завантаження"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "Переміщення"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "Копіювання"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "Відправка до кошику"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "Видалення мертвих треків з вашої бібліотеки iTunes "
|
msgstr "Видалення мертвих треків з вашої бібліотеки iTunes "
|
||||||
@ -82,10 +62,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "Не вдалося знайти програму iPhoto."
|
msgstr "Не вдалося знайти програму iPhoto."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr "Відправлення файлів до кошика"
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Вихід"
|
msgstr "Вихід"
|
||||||
@ -119,14 +95,6 @@ msgstr "Перевірити оновлення"
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr "Відкрити журнал налагодження"
|
msgstr "Відкрити журнал налагодження"
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr ""
|
|
||||||
"Попередню дію ще не закінчено. Ви покищо не можете розпочаті нову. Зачекайте"
|
|
||||||
" кілька секунд, потім повторіть спробу."
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -861,9 +829,3 @@ msgstr "Збільшити"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Змінити пріоритети Результати"
|
|
||||||
|
@ -9,97 +9,97 @@ msgstr ""
|
|||||||
"Language: zh_CN\n"
|
"Language: zh_CN\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: core/app.py:37
|
#: core/app.py:40
|
||||||
msgid "There are no marked duplicates. Nothing has been done."
|
msgid "There are no marked duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:38
|
#: core/app.py:41
|
||||||
msgid "There are no selected duplicates. Nothing has been done."
|
msgid "There are no selected duplicates. Nothing has been done."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:39
|
#: core/app.py:42
|
||||||
msgid ""
|
msgid ""
|
||||||
"You're about to open many files at once. Depending on what those files are "
|
"You're about to open many files at once. Depending on what those files are "
|
||||||
"opened with, doing so can create quite a mess. Continue?"
|
"opened with, doing so can create quite a mess. Continue?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:98
|
#: core/app.py:110
|
||||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:232
|
#: core/app.py:254
|
||||||
msgid "No duplicates found."
|
msgid "No duplicates found."
|
||||||
msgstr "没有找到重复文件。"
|
msgstr "没有找到重复文件。"
|
||||||
|
|
||||||
#: core/app.py:245
|
#: core/app.py:267
|
||||||
msgid "All marked files were copied successfully."
|
msgid "All marked files were copied successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:246
|
#: core/app.py:268
|
||||||
msgid "All marked files were moved successfully."
|
msgid "All marked files were moved successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:247
|
#: core/app.py:269
|
||||||
msgid "All marked files were successfully sent to Trash."
|
msgid "All marked files were successfully sent to Trash."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:274
|
#: core/app.py:296
|
||||||
msgid ""
|
msgid ""
|
||||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||||
"mode."
|
"mode."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:285
|
#: core/app.py:307
|
||||||
msgid "'{}' already is in the list."
|
msgid "'{}' already is in the list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:287
|
#: core/app.py:309
|
||||||
msgid "'{}' does not exist."
|
msgid "'{}' does not exist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:294
|
#: core/app.py:316
|
||||||
msgid ""
|
msgid ""
|
||||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||||
"Continue?"
|
"Continue?"
|
||||||
msgstr "目前已选的 %d 个匹配项将在后续的扫描中被忽略。继续吗?"
|
msgstr "目前已选的 %d 个匹配项将在后续的扫描中被忽略。继续吗?"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "copy"
|
msgid "copy"
|
||||||
msgstr "复制"
|
msgstr "复制"
|
||||||
|
|
||||||
#: core/app.py:354
|
#: core/app.py:376
|
||||||
msgid "move"
|
msgid "move"
|
||||||
msgstr "移动"
|
msgstr "移动"
|
||||||
|
|
||||||
#: core/app.py:355
|
#: core/app.py:377
|
||||||
msgid "Select a directory to {} marked files to"
|
msgid "Select a directory to {} marked files to"
|
||||||
msgstr "选择一个文件夹将标记的 {} 个文件进行..."
|
msgstr "选择一个文件夹将标记的 {} 个文件进行..."
|
||||||
|
|
||||||
#: core/app.py:381
|
#: core/app.py:403
|
||||||
msgid "Select a destination for your exported CSV"
|
msgid "Select a destination for your exported CSV"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:406
|
#: core/app.py:428
|
||||||
msgid "You have no custom command set up. Set it up in your preferences."
|
msgid "You have no custom command set up. Set it up in your preferences."
|
||||||
msgstr "你没有设定自定义命令。请在首选项中进行设定。"
|
msgstr "你没有设定自定义命令。请在首选项中进行设定。"
|
||||||
|
|
||||||
#: core/app.py:512 core/app.py:523
|
#: core/app.py:535 core/app.py:546
|
||||||
msgid "You are about to remove %d files from results. Continue?"
|
msgid "You are about to remove %d files from results. Continue?"
|
||||||
msgstr "你将从结果中移除 %d 个文件。继续吗?"
|
msgstr "你将从结果中移除 %d 个文件。继续吗?"
|
||||||
|
|
||||||
#: core/app.py:543
|
#: core/app.py:566
|
||||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: core/app.py:563
|
#: core/app.py:586
|
||||||
msgid "Collecting files to scan"
|
msgid "Collecting files to scan"
|
||||||
msgstr "收集文件以备扫描"
|
msgstr "收集文件以备扫描"
|
||||||
|
|
||||||
#: core/app.py:574
|
#: core/app.py:597
|
||||||
msgid "The selected directories contain no scannable file."
|
msgid "The selected directories contain no scannable file."
|
||||||
msgstr "所选文件夹中不包含可供扫描的文件。"
|
msgstr "所选文件夹中不包含可供扫描的文件。"
|
||||||
|
|
||||||
#: core/app.py:613
|
#: core/app.py:636
|
||||||
msgid "%s (%d discarded)"
|
msgid "%s (%d discarded)"
|
||||||
msgstr "%s (%d 无效)"
|
msgstr "%s (%d 无效)"
|
||||||
|
|
||||||
@ -206,3 +206,33 @@ msgstr "验证 %d/%d 匹配项"
|
|||||||
#: core_pe/matchexif.py:18
|
#: core_pe/matchexif.py:18
|
||||||
msgid "Read EXIF of %d/%d pictures"
|
msgid "Read EXIF of %d/%d pictures"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: core/app.py:58
|
||||||
|
msgid "Scanning for duplicates"
|
||||||
|
msgstr "重复文件扫描中"
|
||||||
|
|
||||||
|
#: core/app.py:59
|
||||||
|
msgid "Loading"
|
||||||
|
msgstr "载入中"
|
||||||
|
|
||||||
|
#: core/app.py:60
|
||||||
|
msgid "Moving"
|
||||||
|
msgstr "移动中"
|
||||||
|
|
||||||
|
#: core/app.py:61
|
||||||
|
msgid "Copying"
|
||||||
|
msgstr "复制中"
|
||||||
|
|
||||||
|
#: core/app.py:62
|
||||||
|
msgid "Sending to Trash"
|
||||||
|
msgstr "移到垃圾桶"
|
||||||
|
|
||||||
|
#: core/app.py:65
|
||||||
|
msgid "Sending files to the recycle bin"
|
||||||
|
msgstr "将文件移到回收站"
|
||||||
|
|
||||||
|
#: core/app.py:246
|
||||||
|
msgid ""
|
||||||
|
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||||
|
"Wait a few seconds, then try again."
|
||||||
|
msgstr "目前还有任务在执行,新任务无法开启。请等待几秒钟后再重新试一次。"
|
||||||
|
@ -9,26 +9,6 @@ msgstr ""
|
|||||||
"Language: zh_CN\n"
|
"Language: zh_CN\n"
|
||||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
#: cocoa/inter/app.py:15 qt/base/app.py:38
|
|
||||||
msgid "Scanning for duplicates"
|
|
||||||
msgstr "重复文件扫描中"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:16 qt/base/app.py:39
|
|
||||||
msgid "Loading"
|
|
||||||
msgstr "载入中"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:17 qt/base/app.py:40
|
|
||||||
msgid "Moving"
|
|
||||||
msgstr "移动中"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:18 qt/base/app.py:41
|
|
||||||
msgid "Copying"
|
|
||||||
msgstr "复制中"
|
|
||||||
|
|
||||||
#: cocoa/inter/app.py:19
|
|
||||||
msgid "Sending to Trash"
|
|
||||||
msgstr "移到垃圾桶"
|
|
||||||
|
|
||||||
#: cocoa/inter/app_me.py:34
|
#: cocoa/inter/app_me.py:34
|
||||||
msgid "Removing dead tracks from your iTunes Library"
|
msgid "Removing dead tracks from your iTunes Library"
|
||||||
msgstr "从你的iTunes库中移除无效的音轨"
|
msgstr "从你的iTunes库中移除无效的音轨"
|
||||||
@ -81,10 +61,6 @@ msgstr ""
|
|||||||
msgid "The iPhoto application couldn't be found."
|
msgid "The iPhoto application couldn't be found."
|
||||||
msgstr "The iPhoto application couldn't be found."
|
msgstr "The iPhoto application couldn't be found."
|
||||||
|
|
||||||
#: qt/base/app.py:42
|
|
||||||
msgid "Sending files to the recycle bin"
|
|
||||||
msgstr "将文件移到回收站"
|
|
||||||
|
|
||||||
#: qt/base/app.py:95
|
#: qt/base/app.py:95
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "退出"
|
msgstr "退出"
|
||||||
@ -118,12 +94,6 @@ msgstr "检查更新"
|
|||||||
msgid "Open Debug Log"
|
msgid "Open Debug Log"
|
||||||
msgstr "打开调试记录"
|
msgstr "打开调试记录"
|
||||||
|
|
||||||
#: qt/base/app.py:217 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."
|
|
||||||
msgstr "目前还有任务在执行,新任务无法开启。请等待几秒钟后再重新试一次。"
|
|
||||||
|
|
||||||
#: qt/base/app.py:257
|
#: qt/base/app.py:257
|
||||||
msgid "{} file (*.{})"
|
msgid "{} file (*.{})"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -854,9 +824,3 @@ msgstr "Zoom"
|
|||||||
#: qt/base/deletion_options.py:46
|
#: qt/base/deletion_options.py:46
|
||||||
msgid " (unsupported)"
|
msgid " (unsupported)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#~ msgid " (Mac OS X or Linux only)"
|
|
||||||
#~ msgstr ""
|
|
||||||
|
|
||||||
#~ msgid "Re-Prioritize Results"
|
|
||||||
#~ msgstr "Re-Prioritize Results"
|
|
||||||
|
@ -13,17 +13,14 @@ import os.path as op
|
|||||||
from PyQt4.QtCore import QTimer, QObject, QCoreApplication, QUrl, QProcess, SIGNAL, pyqtSignal
|
from PyQt4.QtCore import QTimer, QObject, QCoreApplication, QUrl, QProcess, SIGNAL, pyqtSignal
|
||||||
from PyQt4.QtGui import QDesktopServices, QFileDialog, QDialog, QMessageBox, QApplication
|
from PyQt4.QtGui import QDesktopServices, QFileDialog, QDialog, QMessageBox, QApplication
|
||||||
|
|
||||||
from jobprogress import job
|
|
||||||
from jobprogress.qt import Progress
|
|
||||||
from hscommon.trans import trget
|
from hscommon.trans import trget
|
||||||
from hscommon.plat import ISLINUX
|
from hscommon.plat import ISLINUX
|
||||||
|
|
||||||
from core.app import JobType
|
|
||||||
|
|
||||||
from qtlib.about_box import AboutBox
|
from qtlib.about_box import AboutBox
|
||||||
from qtlib.recent import Recent
|
from qtlib.recent import Recent
|
||||||
from qtlib.reg import Registration
|
from qtlib.reg import Registration
|
||||||
from qtlib.util import createActions, getAppData
|
from qtlib.util import createActions, getAppData
|
||||||
|
from qtlib.progress_window import ProgressWindow
|
||||||
|
|
||||||
from . import platform
|
from . import platform
|
||||||
from .result_window import ResultWindow
|
from .result_window import ResultWindow
|
||||||
@ -34,14 +31,6 @@ from .deletion_options import DeletionOptions
|
|||||||
|
|
||||||
tr = trget('ui')
|
tr = trget('ui')
|
||||||
|
|
||||||
JOBID2TITLE = {
|
|
||||||
JobType.Scan: tr("Scanning for duplicates"),
|
|
||||||
JobType.Load: tr("Loading"),
|
|
||||||
JobType.Move: tr("Moving"),
|
|
||||||
JobType.Copy: tr("Copying"),
|
|
||||||
JobType.Delete: tr("Sending files to the recycle bin"),
|
|
||||||
}
|
|
||||||
|
|
||||||
class DupeGuru(QObject):
|
class DupeGuru(QObject):
|
||||||
MODELCLASS = None
|
MODELCLASS = None
|
||||||
LOGO_NAME = '<replace this>'
|
LOGO_NAME = '<replace this>'
|
||||||
@ -68,7 +57,7 @@ class DupeGuru(QObject):
|
|||||||
self.recentResults = Recent(self, 'recentResults')
|
self.recentResults = Recent(self, 'recentResults')
|
||||||
self.recentResults.mustOpenItem.connect(self.model.load_from)
|
self.recentResults.mustOpenItem.connect(self.model.load_from)
|
||||||
self.resultWindow = self.RESULT_WINDOW_CLASS(self)
|
self.resultWindow = self.RESULT_WINDOW_CLASS(self)
|
||||||
self._progress = Progress(self.resultWindow)
|
self.progress_window = ProgressWindow(self.resultWindow, self.model.progress_window)
|
||||||
self.directories_dialog = DirectoriesDialog(self.resultWindow, self)
|
self.directories_dialog = DirectoriesDialog(self.resultWindow, self)
|
||||||
self.details_dialog = self.DETAILS_DIALOG_CLASS(self.resultWindow, self)
|
self.details_dialog = self.DETAILS_DIALOG_CLASS(self.resultWindow, self)
|
||||||
self.problemDialog = ProblemDialog(parent=self.resultWindow, model=self.model.problem_dialog)
|
self.problemDialog = ProblemDialog(parent=self.resultWindow, model=self.model.problem_dialog)
|
||||||
@ -86,7 +75,6 @@ class DupeGuru(QObject):
|
|||||||
# that the application haven't launched.
|
# that the application haven't launched.
|
||||||
QTimer.singleShot(0, self.finishedLaunching)
|
QTimer.singleShot(0, self.finishedLaunching)
|
||||||
self.connect(QCoreApplication.instance(), SIGNAL('aboutToQuit()'), self.application_will_terminate)
|
self.connect(QCoreApplication.instance(), SIGNAL('aboutToQuit()'), self.application_will_terminate)
|
||||||
self.connect(self._progress, SIGNAL('finished(QString)'), self.job_finished)
|
|
||||||
|
|
||||||
def _setupActions(self):
|
def _setupActions(self):
|
||||||
# Setup actions that are common to both the directory dialog and the results window.
|
# Setup actions that are common to both the directory dialog and the results window.
|
||||||
@ -164,11 +152,6 @@ class DupeGuru(QObject):
|
|||||||
def ignoreListTriggered(self):
|
def ignoreListTriggered(self):
|
||||||
self.model.ignore_list_dialog.show()
|
self.model.ignore_list_dialog.show()
|
||||||
|
|
||||||
def job_finished(self, jobid):
|
|
||||||
result = self.model._job_completed(jobid, self._progress.last_error)
|
|
||||||
if not result:
|
|
||||||
self._progress.reraise_if_error()
|
|
||||||
|
|
||||||
def openDebugLogTriggered(self):
|
def openDebugLogTriggered(self):
|
||||||
debugLogPath = op.join(self.model.appdata, 'debug.log')
|
debugLogPath = op.join(self.model.appdata, 'debug.log')
|
||||||
self.open_path(debugLogPath)
|
self.open_path(debugLogPath)
|
||||||
@ -207,16 +190,6 @@ class DupeGuru(QObject):
|
|||||||
def reveal_path(path):
|
def reveal_path(path):
|
||||||
DupeGuru.open_path(path[:-1])
|
DupeGuru.open_path(path[:-1])
|
||||||
|
|
||||||
def start_job(self, jobid, func, args=()):
|
|
||||||
title = JOBID2TITLE[jobid]
|
|
||||||
try:
|
|
||||||
j = self._progress.create_job()
|
|
||||||
args = (j, ) + tuple(args)
|
|
||||||
self._progress.run(jobid, title, func, args=args)
|
|
||||||
except job.JobInProgressError:
|
|
||||||
msg = tr("A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.")
|
|
||||||
QMessageBox.information(self.resultWindow, 'Action in progress', msg)
|
|
||||||
|
|
||||||
def get_default(self, key):
|
def get_default(self, key):
|
||||||
return self.prefs.get_value(key)
|
return self.prefs.get_value(key)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user