mirror of
https://github.com/arsenetar/dupeguru.git
synced 2025-03-10 05:34:36 +00:00
Merge branch 'regless' into develop
Conflicts: cocoa/inter/app.py core/app.py hscommon/reg.py locale/cs/LC_MESSAGES/ui.po locale/de/LC_MESSAGES/ui.po locale/fr/LC_MESSAGES/ui.po locale/hy/LC_MESSAGES/ui.po locale/it/LC_MESSAGES/ui.po locale/pt_BR/LC_MESSAGES/ui.po locale/ru/LC_MESSAGES/ui.po locale/ui.pot locale/uk/LC_MESSAGES/ui.po locale/vi/LC_MESSAGES/ui.po locale/zh_CN/LC_MESSAGES/ui.po qt/base/app.py
This commit is contained in:
commit
418acf6e5e
15
build.py
15
build.py
@ -170,17 +170,12 @@ def build_help(edition):
|
||||
conftmpl = op.join(current_path, 'help', 'conf.tmpl')
|
||||
sphinxgen.gen(help_basepath, help_destpath, changelog_path, tixurl, confrepl, conftmpl, changelogtmpl)
|
||||
|
||||
def build_base_localizations():
|
||||
loc.compile_all_po('locale')
|
||||
loc.compile_all_po(op.join('hscommon', 'locale'))
|
||||
loc.merge_locale_dir(op.join('hscommon', 'locale'), 'locale')
|
||||
|
||||
def build_qt_localizations():
|
||||
loc.compile_all_po(op.join('qtlib', 'locale'))
|
||||
loc.merge_locale_dir(op.join('qtlib', 'locale'), 'locale')
|
||||
|
||||
def build_localizations(ui, edition):
|
||||
build_base_localizations()
|
||||
loc.compile_all_po('locale')
|
||||
if ui == 'cocoa':
|
||||
app = cocoa_app(edition)
|
||||
loc.build_cocoa_localizations(app, en_stringsfile=op.join('cocoa', 'base', 'en.lproj', 'Localizable.strings'))
|
||||
@ -222,8 +217,6 @@ def build_updatepot():
|
||||
# We want to merge the generated pot with the old pot in the most preserving way possible.
|
||||
ui_packages = ['qt', op.join('cocoa', 'inter')]
|
||||
loc.generate_pot(ui_packages, op.join('locale', 'ui.pot'), ['tr'], merge=(not ISOSX))
|
||||
print("Building hscommon.pot")
|
||||
loc.generate_pot(['hscommon'], op.join('hscommon', 'locale', 'hscommon.pot'), ['tr'])
|
||||
print("Building qtlib.pot")
|
||||
loc.generate_pot(['qtlib'], op.join('qtlib', 'locale', 'qtlib.pot'), ['tr'])
|
||||
if ISOSX:
|
||||
@ -238,13 +231,11 @@ def build_updatepot():
|
||||
def build_mergepot():
|
||||
print("Updating .po files using .pot files")
|
||||
loc.merge_pots_into_pos('locale')
|
||||
loc.merge_pots_into_pos(op.join('hscommon', 'locale'))
|
||||
loc.merge_pots_into_pos(op.join('qtlib', 'locale'))
|
||||
loc.merge_pots_into_pos(op.join('cocoalib', 'locale'))
|
||||
|
||||
def build_normpo():
|
||||
loc.normalize_all_pos('locale')
|
||||
loc.normalize_all_pos(op.join('hscommon', 'locale'))
|
||||
loc.normalize_all_pos(op.join('qtlib', 'locale'))
|
||||
loc.normalize_all_pos(op.join('cocoalib', 'locale'))
|
||||
|
||||
@ -266,7 +257,7 @@ def build_cocoa_bridging_interfaces(edition):
|
||||
add_to_pythonpath('cocoalib')
|
||||
from cocoa.inter import (PyGUIObject, GUIObjectView, PyColumns, ColumnsView, PyOutline,
|
||||
OutlineView, PySelectableList, SelectableListView, PyTable, TableView, PyBaseApp,
|
||||
PyFairware, PyTextField, ProgressWindowView, PyProgressWindow)
|
||||
PyTextField, ProgressWindowView, PyProgressWindow)
|
||||
from inter.deletion_options import PyDeletionOptions, DeletionOptionsView
|
||||
from inter.details_panel import PyDetailsPanel, DetailsPanelView
|
||||
from inter.directory_outline import PyDirectoryOutline, DirectoryOutlineView
|
||||
@ -278,7 +269,7 @@ def build_cocoa_bridging_interfaces(edition):
|
||||
from inter.stats_label import PyStatsLabel, StatsLabelView
|
||||
from inter.app import PyDupeGuruBase, DupeGuruView
|
||||
appmod = importlib.import_module('inter.app_{}'.format(edition))
|
||||
allclasses = [PyGUIObject, PyColumns, PyOutline, PySelectableList, PyTable, PyBaseApp, PyFairware,
|
||||
allclasses = [PyGUIObject, PyColumns, PyOutline, PySelectableList, PyTable, PyBaseApp,
|
||||
PyDetailsPanel, PyDirectoryOutline, PyPrioritizeDialog, PyPrioritizeList, PyProblemDialog,
|
||||
PyIgnoreListDialog, PyDeletionOptions, PyResultTable, PyStatsLabel, PyDupeGuruBase,
|
||||
PyTextField, PyProgressWindow, appmod.PyDupeGuru]
|
||||
|
@ -13,7 +13,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
#import "DetailsPanel.h"
|
||||
#import "DirectoryPanel.h"
|
||||
#import "IgnoreListDialog.h"
|
||||
#import "HSFairwareAboutBox.h"
|
||||
#import "HSAboutBox.h"
|
||||
#import "HSRecentFiles.h"
|
||||
#import "HSProgressWindow.h"
|
||||
|
||||
@ -30,7 +30,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
IgnoreListDialog *_ignoreListDialog;
|
||||
HSProgressWindow *_progressWindow;
|
||||
NSWindowController *_preferencesPanel;
|
||||
HSFairwareAboutBox *_aboutBox;
|
||||
HSAboutBox *_aboutBox;
|
||||
HSRecentFiles *_recentResults;
|
||||
}
|
||||
|
||||
@ -73,6 +73,4 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
/* model --> view */
|
||||
- (void)showMessage:(NSString *)msg;
|
||||
- (void)setupAsRegistered;
|
||||
- (void)showDemoNagWithPrompt:(NSString *)prompt;
|
||||
@end
|
||||
|
@ -8,7 +8,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
#import "AppDelegateBase.h"
|
||||
#import "ProgressController.h"
|
||||
#import "HSFairwareReminder.h"
|
||||
#import "HSPyUtil.h"
|
||||
#import "Consts.h"
|
||||
#import "Dialogs.h"
|
||||
@ -162,7 +161,7 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
- (void)showAboutBox
|
||||
{
|
||||
if (_aboutBox == nil) {
|
||||
_aboutBox = [[HSFairwareAboutBox alloc] initWithApp:model];
|
||||
_aboutBox = [[HSAboutBox alloc] initWithApp:model];
|
||||
}
|
||||
[[_aboutBox window] makeKeyAndOrderFront:nil];
|
||||
}
|
||||
@ -199,7 +198,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
/* Delegate */
|
||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
|
||||
{
|
||||
[model initialRegistrationSetup];
|
||||
[model loadSession];
|
||||
}
|
||||
|
||||
@ -261,16 +259,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
[[self resultWindow] showProblemDialog];
|
||||
}
|
||||
|
||||
- (void)setupAsRegistered
|
||||
{
|
||||
// Nothing to do.
|
||||
}
|
||||
|
||||
- (void)showDemoNagWithPrompt:(NSString *)prompt
|
||||
{
|
||||
[HSFairwareReminder showDemoNagWithApp:[self model] prompt:prompt];
|
||||
}
|
||||
|
||||
- (NSString *)selectDestFolderWithPrompt:(NSString *)prompt
|
||||
{
|
||||
NSOpenPanel *op = [NSOpenPanel openPanel];
|
||||
|
@ -1,6 +1,5 @@
|
||||
|
||||
"%@ Results" = "%@ Results";
|
||||
"A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again." = "A previous action is still hanging in there. You can't start a new one yet. Wait a few seconds, then try again.";
|
||||
"About dupeGuru" = "About dupeGuru";
|
||||
"Action" = "Action";
|
||||
"Actions" = "Actions";
|
||||
|
@ -2,15 +2,15 @@ import logging
|
||||
|
||||
from objp.util import pyref, dontwrap
|
||||
from cocoa import install_exception_hook, install_cocoa_logger, patch_threaded_job_performer
|
||||
from cocoa.inter import PyFairware, FairwareView
|
||||
from cocoa.inter import PyBaseApp, BaseAppView
|
||||
|
||||
class DupeGuruView(FairwareView):
|
||||
class DupeGuruView(BaseAppView):
|
||||
def askYesNoWithPrompt_(self, prompt: str) -> bool: pass
|
||||
def showProblemDialog(self): pass
|
||||
def selectDestFolderWithPrompt_(self, prompt: str) -> str: pass
|
||||
def selectDestFileWithPrompt_extension_(self, prompt: str, extension: str) -> str: pass
|
||||
|
||||
class PyDupeGuruBase(PyFairware):
|
||||
class PyDupeGuruBase(PyBaseApp):
|
||||
@dontwrap
|
||||
def _init(self, modelclass):
|
||||
logging.basicConfig(level=logging.WARNING, format='%(levelname)s %(message)s')
|
||||
|
@ -44,7 +44,7 @@ def build(ctx):
|
||||
cocoalib_node = ctx.srcnode.find_dir('..').find_dir('cocoalib')
|
||||
cocoalib_folders = ['controllers', 'views']
|
||||
cocoalib_includes = [cocoalib_node] + [cocoalib_node.find_dir(folder) for folder in cocoalib_folders]
|
||||
cocoalib_uses = ['NSEventAdditions', 'Dialogs', 'HSFairwareAboutBox', 'HSFairwareReminder', 'Utils',
|
||||
cocoalib_uses = ['NSEventAdditions', 'Dialogs', 'HSAboutBox', 'Utils',
|
||||
'HSPyUtil', 'ProgressController', 'HSRecentFiles', 'HSQuicklook', 'ValueTransformers',
|
||||
'NSImageAdditions', 'NSNotificationAdditions',
|
||||
'views/HSTableView', 'views/HSOutlineView', 'views/NSIndexPathAdditions',
|
||||
|
@ -14,8 +14,6 @@ http://www.hardcoded.net/licenses/bsd_license
|
||||
NSTextField *titleTextField;
|
||||
NSTextField *versionTextField;
|
||||
NSTextField *copyrightTextField;
|
||||
NSTextField *registeredTextField;
|
||||
NSButton *registerButton;
|
||||
|
||||
PyBaseApp *app;
|
||||
}
|
||||
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "HSFairwareProtocol.h"
|
||||
|
||||
@interface HSFairware : NSObject <HSFairwareProtocol>
|
||||
{
|
||||
NSInteger appId;
|
||||
NSString *name;
|
||||
BOOL registered;
|
||||
}
|
||||
- (id)initWithAppId:(NSInteger)aAppId name:(NSString *)aName;
|
||||
@end
|
@ -1,150 +0,0 @@
|
||||
/*
|
||||
Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "HSFairware.h"
|
||||
#import <CommonCrypto/CommonDigest.h>
|
||||
#import "HSFairwareReminder.h"
|
||||
#import "Dialogs.h"
|
||||
#import "Utils.h"
|
||||
|
||||
NSString* md5str(NSString *source)
|
||||
{
|
||||
const char *cSource = [source UTF8String];
|
||||
unsigned char result[16];
|
||||
CC_MD5(cSource, strlen(cSource), result);
|
||||
return fmt(@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
|
||||
result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],
|
||||
result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15]
|
||||
);
|
||||
}
|
||||
|
||||
BOOL validateCode(NSString *code, NSString *email, NSInteger appId)
|
||||
{
|
||||
if ([code length] != 32) {
|
||||
return NO;
|
||||
}
|
||||
NSInteger i;
|
||||
for (i=0; i<=100; i++) {
|
||||
NSString *blob = fmt(@"%i%@%iaybabtu", appId, email, i);
|
||||
if ([md5str(blob) isEqualTo:code]) {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
return NO;
|
||||
}
|
||||
|
||||
NSString* normalizeString(NSString *str)
|
||||
{
|
||||
return [[str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] lowercaseString];
|
||||
}
|
||||
|
||||
@implementation HSFairware
|
||||
- (id)initWithAppId:(NSInteger)aAppId name:(NSString *)aName;
|
||||
{
|
||||
self = [super init];
|
||||
appId = aAppId;
|
||||
name = [aName retain];
|
||||
registered = NO;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[name release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
/* Private */
|
||||
- (void)setRegistrationCode:(NSString *)aCode email:(NSString *)aEmail
|
||||
{
|
||||
registered = validateCode(aCode, aEmail, appId);
|
||||
}
|
||||
|
||||
/* Public */
|
||||
- (void)initialRegistrationSetup
|
||||
{
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
NSString *code = [ud stringForKey:@"RegistrationCode"];
|
||||
NSString *email = [ud stringForKey:@"RegistrationEmail"];
|
||||
if (code && email) {
|
||||
[self setRegistrationCode:code email:email];
|
||||
}
|
||||
if (!registered) {
|
||||
BOOL fairwareMode = [ud boolForKey:@"FairwareMode"];
|
||||
if (!fairwareMode) {
|
||||
NSString *prompt = @"%@ is fairware, which means \"open source software developed "
|
||||
"with expectation of fair contributions from users\". It's a very interesting "
|
||||
"concept, but one year of fairware has shown that most people just want to know "
|
||||
"how much it costs and not be bothered with theories about intellectual property."
|
||||
"\n\n"
|
||||
"So I won't bother you and will be very straightforward: You can try %@ for "
|
||||
"free but you have to buy it in order to use it without limitations. In demo mode, "
|
||||
"%@ will show this dialog on startup."
|
||||
"\n\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage "
|
||||
"you to read more about it by clicking on the \"Fairware?\" button.";
|
||||
[HSFairwareReminder showDemoNagWithApp:self prompt:fmt(prompt, name, name, name)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NSString *)appName
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
- (NSString *)appLongName
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
- (BOOL)isRegistered
|
||||
{
|
||||
return registered;
|
||||
}
|
||||
|
||||
- (BOOL)setRegisteredCode:(NSString *)code andEmail:(NSString *)email
|
||||
{
|
||||
code = normalizeString(code);
|
||||
email = normalizeString(email);
|
||||
NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
|
||||
if (([code isEqualTo:@"fairware"]) || ([email isEqualTo:@"fairware"])) {
|
||||
[ud setBool:YES forKey:@"FairwareMode"];
|
||||
[Dialogs showMessage:@"Fairware mode enabled."];
|
||||
return YES;
|
||||
}
|
||||
[self setRegistrationCode:code email:email];
|
||||
if (registered) {
|
||||
[ud setObject:code forKey:@"RegistrationCode"];
|
||||
[ud setObject:email forKey:@"RegistrationEmail"];
|
||||
[Dialogs showMessage:@"Your code is valid, thanks!"];
|
||||
return YES;
|
||||
}
|
||||
else {
|
||||
[Dialogs showMessage:@"Your code is invalid. Make sure that you wrote the good code. Also "
|
||||
"make sure that the e-mail you gave is the same as the e-mail you used for your purchase."];
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)contribute
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://open.hardcoded.net/contribute/"]];
|
||||
}
|
||||
|
||||
- (void)buy
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.hardcoded.net/purchase.htm"]];
|
||||
}
|
||||
|
||||
- (void)aboutFairware
|
||||
{
|
||||
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://open.hardcoded.net/about/"]];
|
||||
}
|
||||
|
||||
@end
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "PyFairware.h"
|
||||
|
||||
@interface HSFairwareAboutBox : NSWindowController
|
||||
{
|
||||
NSTextField *titleTextField;
|
||||
NSTextField *versionTextField;
|
||||
NSTextField *copyrightTextField;
|
||||
NSTextField *registeredTextField;
|
||||
NSButton *registerButton;
|
||||
|
||||
PyFairware *app;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSTextField *titleTextField;
|
||||
@property (readwrite, retain) NSTextField *versionTextField;
|
||||
@property (readwrite, retain) NSTextField *copyrightTextField;
|
||||
@property (readwrite, retain) NSTextField *registeredTextField;
|
||||
@property (readwrite, retain) NSButton *registerButton;
|
||||
|
||||
- (id)initWithApp:(PyFairware *)app;
|
||||
- (void)updateFields;
|
||||
|
||||
- (void)showRegisterDialog;
|
||||
@end
|
@ -1,60 +0,0 @@
|
||||
/*
|
||||
Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "HSFairwareAboutBox.h"
|
||||
#import "HSFairwareAboutBox_UI.h"
|
||||
#import "HSFairwareReminder.h"
|
||||
|
||||
@implementation HSFairwareAboutBox
|
||||
|
||||
@synthesize titleTextField;
|
||||
@synthesize versionTextField;
|
||||
@synthesize copyrightTextField;
|
||||
@synthesize registeredTextField;
|
||||
@synthesize registerButton;
|
||||
|
||||
- (id)initWithApp:(PyFairware *)aApp
|
||||
{
|
||||
self = [super initWithWindow:nil];
|
||||
[self setWindow:createHSFairwareAboutBox_UI(self)];
|
||||
app = [aApp retain];
|
||||
[self updateFields];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[app release];
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
- (void)updateFields
|
||||
{
|
||||
[titleTextField setStringValue:[app appLongName]];
|
||||
NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
|
||||
[versionTextField setStringValue:[NSString stringWithFormat:@"Version: %@",version]];
|
||||
NSString *copyright = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"NSHumanReadableCopyright"];
|
||||
[copyrightTextField setStringValue:copyright];
|
||||
if ([app isRegistered]) {
|
||||
[registeredTextField setHidden:NO];
|
||||
[registerButton setHidden:YES];
|
||||
}
|
||||
else {
|
||||
[registeredTextField setHidden:YES];
|
||||
[registerButton setHidden:NO];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)showRegisterDialog
|
||||
{
|
||||
HSFairwareReminder *fr = [[HSFairwareReminder alloc] initWithApp:app];
|
||||
[fr enterCode];
|
||||
[fr release];
|
||||
[self updateFields];
|
||||
}
|
||||
@end
|
@ -1,20 +0,0 @@
|
||||
/*
|
||||
Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@protocol HSFairwareProtocol
|
||||
- (void)initialRegistrationSetup;
|
||||
- (NSString *)appName;
|
||||
- (NSString *)appLongName;
|
||||
- (BOOL)isRegistered;
|
||||
- (BOOL)setRegisteredCode:(NSString *)code andEmail:(NSString *)email;
|
||||
- (void)contribute;
|
||||
- (void)buy;
|
||||
- (void)aboutFairware;
|
||||
@end
|
@ -1,46 +0,0 @@
|
||||
/*
|
||||
Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "HSFairwareProtocol.h"
|
||||
|
||||
@interface HSFairwareReminder : NSObject
|
||||
{
|
||||
NSWindow *codePanel;
|
||||
NSTextField *codePromptTextField;
|
||||
NSTextField *codeTextField;
|
||||
NSTextField *emailTextField;
|
||||
NSWindow *demoNagPanel;
|
||||
NSTextField *demoPromptTextField;
|
||||
|
||||
id <HSFairwareProtocol> app;
|
||||
}
|
||||
|
||||
@property (readwrite, retain) NSWindow *codePanel;
|
||||
@property (readwrite, retain) NSTextField *codePromptTextField;
|
||||
@property (readwrite, retain) NSTextField *codeTextField;
|
||||
@property (readwrite, retain) NSTextField *emailTextField;
|
||||
@property (readwrite, retain) NSWindow *demoNagPanel;
|
||||
@property (readwrite, retain) NSTextField *demoPromptTextField;
|
||||
|
||||
//Show nag only if needed
|
||||
+ (BOOL)showDemoNagWithApp:(id <HSFairwareProtocol>)app prompt:(NSString *)prompt;
|
||||
- (id)initWithApp:(id <HSFairwareProtocol>)app;
|
||||
|
||||
- (void)contribute;
|
||||
- (void)buy;
|
||||
- (void)moreInfo;
|
||||
- (void)cancelCode;
|
||||
- (void)showEnterCode;
|
||||
- (void)submitCode;
|
||||
- (void)closeDialog;
|
||||
|
||||
- (BOOL)showNagPanel:(NSWindow *)panel; //YES: The code has been sucessfully submitted NO: The use wan't to try the demo.
|
||||
- (BOOL)showDemoNagPanelWithPrompt:(NSString *)prompt;
|
||||
- (NSInteger)enterCode; //returns the modal code.
|
||||
@end
|
@ -1,115 +0,0 @@
|
||||
/*
|
||||
Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
|
||||
This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
which should be included with this package. The terms are also available at
|
||||
http://www.hardcoded.net/licenses/bsd_license
|
||||
*/
|
||||
|
||||
#import "HSFairwareReminder.h"
|
||||
#import "HSDemoReminder_UI.h"
|
||||
#import "HSEnterCode_UI.h"
|
||||
#import "Dialogs.h"
|
||||
#import "Utils.h"
|
||||
|
||||
@implementation HSFairwareReminder
|
||||
|
||||
@synthesize codePanel;
|
||||
@synthesize codePromptTextField;
|
||||
@synthesize codeTextField;
|
||||
@synthesize emailTextField;
|
||||
@synthesize demoNagPanel;
|
||||
@synthesize demoPromptTextField;
|
||||
|
||||
+ (BOOL)showDemoNagWithApp:(id <HSFairwareProtocol>)app prompt:(NSString *)prompt
|
||||
{
|
||||
HSFairwareReminder *fr = [[HSFairwareReminder alloc] initWithApp:app];
|
||||
BOOL r = [fr showDemoNagPanelWithPrompt:prompt];
|
||||
[fr release];
|
||||
return r;
|
||||
}
|
||||
|
||||
- (id)initWithApp:(id <HSFairwareProtocol>)aApp
|
||||
{
|
||||
self = [super init];
|
||||
app = aApp;
|
||||
[self setDemoNagPanel:createHSDemoReminder_UI(self)];
|
||||
[self setCodePanel:createHSEnterCode_UI(self)];
|
||||
[codePanel update];
|
||||
[codePromptTextField setStringValue:fmt([codePromptTextField stringValue],[app appName])];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)contribute
|
||||
{
|
||||
[app contribute];
|
||||
}
|
||||
|
||||
- (void)buy
|
||||
{
|
||||
[app buy];
|
||||
}
|
||||
|
||||
- (void)moreInfo
|
||||
{
|
||||
[app aboutFairware];
|
||||
}
|
||||
|
||||
- (void)cancelCode
|
||||
{
|
||||
[codePanel close];
|
||||
[NSApp stopModalWithCode:NSCancelButton];
|
||||
}
|
||||
|
||||
- (void)showEnterCode
|
||||
{
|
||||
[demoNagPanel close];
|
||||
[NSApp stopModalWithCode:NSOKButton];
|
||||
}
|
||||
|
||||
- (void)submitCode
|
||||
{
|
||||
NSString *code = [codeTextField stringValue];
|
||||
NSString *email = [emailTextField stringValue];
|
||||
if ([app setRegisteredCode:code andEmail:email]) {
|
||||
[codePanel close];
|
||||
[NSApp stopModalWithCode:NSOKButton];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)closeDialog
|
||||
{
|
||||
[demoNagPanel close];
|
||||
[NSApp stopModalWithCode:NSCancelButton];
|
||||
}
|
||||
|
||||
- (BOOL)showNagPanel:(NSWindow *)panel;
|
||||
{
|
||||
NSInteger r;
|
||||
while (YES) {
|
||||
r = [NSApp runModalForWindow:panel];
|
||||
if (r == NSOKButton) {
|
||||
r = [self enterCode];
|
||||
if (r == NSOKButton) {
|
||||
return YES;
|
||||
}
|
||||
}
|
||||
else {
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)showDemoNagPanelWithPrompt:(NSString *)prompt
|
||||
{
|
||||
[demoNagPanel setTitle:fmt([demoNagPanel title],[app appName])];
|
||||
[demoPromptTextField setStringValue:prompt];
|
||||
return [self showNagPanel:demoNagPanel];
|
||||
}
|
||||
|
||||
- (NSInteger)enterCode
|
||||
{
|
||||
return [NSApp runModalForWindow:codePanel];
|
||||
}
|
||||
|
||||
@end
|
@ -298,37 +298,3 @@ class PyBaseApp(PyGUIObject):
|
||||
def show_message(self, msg):
|
||||
self.callback.showMessage_(msg)
|
||||
|
||||
class FairwareView(BaseAppView):
|
||||
def setupAsRegistered(self): pass
|
||||
def showDemoNagWithPrompt_(self, prompt: str): pass
|
||||
|
||||
class PyFairware(PyBaseApp):
|
||||
FOLLOW_PROTOCOLS = ['HSFairwareProtocol']
|
||||
|
||||
def initialRegistrationSetup(self):
|
||||
self.model.initial_registration_setup()
|
||||
|
||||
def isRegistered(self) -> bool:
|
||||
return self.model.registered
|
||||
|
||||
def setRegisteredCode_andEmail_(self, code: str, email: str) -> bool:
|
||||
return self.model.set_registration(code, email, False)
|
||||
|
||||
def contribute(self):
|
||||
self.model.contribute()
|
||||
|
||||
def buy(self):
|
||||
self.model.buy()
|
||||
|
||||
def aboutFairware(self):
|
||||
self.model.about_fairware()
|
||||
|
||||
#--- Python --> Cocoa
|
||||
@dontwrap
|
||||
def setup_as_registered(self):
|
||||
self.callback.setupAsRegistered()
|
||||
|
||||
@dontwrap
|
||||
def show_demo_nag(self, prompt):
|
||||
self.callback.showDemoNagWithPrompt_(prompt)
|
||||
|
||||
|
@ -1,28 +1,15 @@
|
||||
|
||||
"%@ is Fairware" = "%@ is Fairware";
|
||||
"Although the application should continue to run after this error, it may be in an instable state, so it is recommended that you restart the application." = "Although the application should continue to run after this error, it may be in an instable state, so it is recommended that you restart the application.";
|
||||
"Buy" = "Buy";
|
||||
"Cancel" = "Cancel";
|
||||
"Clear List" = "Clear List";
|
||||
"Contribute" = "Contribute";
|
||||
"Don't Send" = "Don't Send";
|
||||
"Enter Key" = "Enter Key";
|
||||
"Enter your key" = "Enter your key";
|
||||
"Error Report" = "Error Report";
|
||||
"Fairware?" = "Fairware?";
|
||||
"No" = "No";
|
||||
"OK" = "OK";
|
||||
"Please wait..." = "Please wait...";
|
||||
"Register" = "Register";
|
||||
"Registration e-mail:" = "Registration e-mail:";
|
||||
"Registration key:" = "Registration key:";
|
||||
"Send" = "Send";
|
||||
"Something went wrong. Would you like to send the error report to Hardcoded Software?" = "Something went wrong. Would you like to send the error report to Hardcoded Software?";
|
||||
"Status: Working..." = "Status: Working...";
|
||||
"Submit" = "Submit";
|
||||
"This app is registered, thanks!" = "This app is registered, thanks!";
|
||||
"Try" = "Try";
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail used as a reference for the purchase." = "Type the key you received when you contributed to %@, as well as the e-mail used as a reference for the purchase.";
|
||||
"Work in progress, please wait." = "Work in progress, please wait.";
|
||||
"Work in progress..." = "Work in progress...";
|
||||
"Yes" = "Yes";
|
||||
|
@ -1,12 +1,6 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
@ -14,10 +8,6 @@ msgid ""
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@ -26,30 +16,14 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -62,18 +36,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
@ -88,24 +50,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ is Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Buy"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
@ -31,30 +23,14 @@ msgstr "Cancel"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Contribute"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Don't Send"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Enter Key"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Enter your key"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Register"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Registration key:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Send"
|
||||
@ -95,26 +59,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Submit"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "This app is registered, thanks!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Try"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ is Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Buy"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
@ -31,30 +23,14 @@ msgstr "Abbrechen"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Spenden"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Don't Send"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Registrieren"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Schlüssel eingeben"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Register"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Registrierungsschlüssel:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Send"
|
||||
@ -95,26 +59,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Abschicken"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "This app is registered, thanks!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Try"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Geben Sie den empfangenen Schlüssel und die E-Mail-Adresse als Referenz für "
|
||||
"den Kauf an, wenn Sie für %@ gespendet haben."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,10 +9,6 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ es Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
@ -21,10 +17,6 @@ msgstr ""
|
||||
"Aunque la aplicación debería continuar funcionado tras el fallo, sin embargo"
|
||||
" podría volverse inestable. Se recomienda reiniciar la aplicación."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Comprar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
@ -33,30 +25,14 @@ msgstr "Cancelar"
|
||||
msgid "Clear List"
|
||||
msgstr "Limpiar lista"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Donar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "No envíar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Introducir clave"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Introduzca su clave"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr "Informe de error"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "¿Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr "No"
|
||||
@ -69,18 +45,6 @@ msgstr "Aceptar"
|
||||
msgid "Please wait..."
|
||||
msgstr "Por favor, espere..."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Registrar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr "Correo electrónico de registro:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Clave de registro"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Enviar"
|
||||
@ -97,26 +61,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr "Estado: procesando..."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Enviar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "La aplicación está registrada. ¡Gracias!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Probar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Escriba la clave que recibió al donar a %@, así como el correo electrónico "
|
||||
"que usó en el proceso."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr "En proceso, por favor, espere."
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ est Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Acheter"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
@ -31,30 +23,14 @@ msgstr "Annuler"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Contribuer"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Ignorer"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Entrez votre clé"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Clé d'enregistrement:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Envoyer"
|
||||
@ -94,26 +58,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Soumettre"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "L'application est enregistrée, merci!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Essayer"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Entrez la clé que vous avez reçue en contribuant à %@, ainsi que le courriel"
|
||||
" utilisé pour la contribution."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "$appname-ը Fairware է"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Գնել"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Չեղարկել"
|
||||
@ -31,30 +23,14 @@ msgstr "Չեղարկել"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Մասնակցել"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Չուղարկել"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Գրել բանալին"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Շարունակել"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware է՞"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Գրանցել"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Գրանցման բանալին."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Ուղարկել"
|
||||
@ -94,26 +58,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Հաստատել"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "Այս ծրագիրը գրանցված է, շնորհակալություն!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Փորձել"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Մուտքագրեք այն բանալին, որը ստացել եք %@-ին աջակցելիս, քանզի Ձեր էլ. հասցեն "
|
||||
"օգտագործվել է գնման ժամանակ:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ è Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Acquista"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
@ -31,30 +23,14 @@ msgstr "Annulla"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Contribuisci"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Non inviare"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Inserisci Codice"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Inserisci il tuo codice"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Registra"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Codice di registrazione:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Invia"
|
||||
@ -95,26 +59,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Invia"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "Questa applicazione è registrata, grazie!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Prova"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Inserisci il codice che hai ricevuto quando hai contribuito a %@, così come "
|
||||
"l'email di riferimento utilizzata per l'acquisto."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@ -31,30 +23,14 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
@ -93,24 +57,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "This app is registered, thanks!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,10 +9,6 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ é Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
@ -21,10 +17,6 @@ msgstr ""
|
||||
"Embora o aplicativo continue a funcionar após este erro, ele pode estar "
|
||||
"instável. É recomendável reiniciá-lo."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Comprar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
@ -33,30 +25,14 @@ msgstr "Cancelar"
|
||||
msgid "Clear List"
|
||||
msgstr "Limpar Lista"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Contribuir"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Não Enviar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Entrar Chave"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Entre sua chave"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr "Não"
|
||||
@ -69,18 +45,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr "Aguarde..."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Registrar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Chave de registro:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Enviar"
|
||||
@ -96,26 +60,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Enviar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "O app está registrado, obrigado!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Testar"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Digite a chave que você recebeu ao contribuir com o %@, assim como o e-mail "
|
||||
"usado para a compra."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"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"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ является Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Купить"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
@ -31,30 +23,14 @@ msgstr "Отменить"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Способствовайте"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Не отправлять"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Видите ключ"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Видите Ваш ключ"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Регистрация"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Регистрационный ключ:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Отправить"
|
||||
@ -94,26 +58,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Передать"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "Это приложение зарегистрировано, спасибо!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Пробовать"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Тип ключа, который вы получили при способствовала %@, а также электронной "
|
||||
"почты используется в качестве ссылки для покупки."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,10 +9,6 @@ msgstr ""
|
||||
"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"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ це Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
@ -21,10 +17,6 @@ msgstr ""
|
||||
"Хоча програма має продовжувати роботу після цієї помилки, вона може "
|
||||
"перебувати у нестабільному стані, тож рекомендується перезапустити програму."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Купити"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "Відмінити"
|
||||
@ -33,30 +25,14 @@ msgstr "Відмінити"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "Зробити внесок"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Не надсилати"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "Введіть ключ"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Введіть Ваш ключ"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -69,18 +45,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Зареєструвати"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "Реєстраційний ключ:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Надіслати"
|
||||
@ -96,26 +60,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "Надіслати"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "Програму зареєстровано, дякуємо!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Спробувати"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Введіть ключ, який Ви отримали зробивши внесок за %@, а також адресу "
|
||||
"електронної пошти, яка була вказана під час покупки."
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -10,20 +10,12 @@ msgstr ""
|
||||
"Language: vi\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
@ -32,30 +24,14 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -68,18 +44,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
@ -94,24 +58,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -9,20 +9,12 @@ msgstr ""
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "%@ is Fairware"
|
||||
msgstr "%@ is Fairware"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Although the application should continue to run after this error, it may be "
|
||||
"in an instable state, so it is recommended that you restart the application."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Buy"
|
||||
msgstr "Buy"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
@ -31,30 +23,14 @@ msgstr "取消"
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Contribute"
|
||||
msgstr "捐助"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Don't Send"
|
||||
msgstr "Don't Send"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter Key"
|
||||
msgstr "输入密钥"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Enter your key"
|
||||
msgstr "Enter your key"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "No"
|
||||
msgstr ""
|
||||
@ -67,18 +43,6 @@ msgstr ""
|
||||
msgid "Please wait..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Register"
|
||||
msgstr "Register"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Registration key:"
|
||||
msgstr "密钥:"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Send"
|
||||
msgstr "Send"
|
||||
@ -95,24 +59,6 @@ msgstr ""
|
||||
msgid "Status: Working..."
|
||||
msgstr ""
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Submit"
|
||||
msgstr "提交"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "This app is registered, thanks!"
|
||||
msgstr "This app is registered, thanks!"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Try"
|
||||
msgstr "Try"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to %@, as well as the e-mail "
|
||||
"used as a reference for the purchase."
|
||||
msgstr "当您捐助 %@ 后,请输入收到的注册密钥以及电子邮件,这将作为购买凭证。"
|
||||
|
||||
#: cocoalib/en.lproj/cocoalib.strings:0
|
||||
msgid "Work in progress, please wait."
|
||||
msgstr ""
|
||||
|
@ -1,32 +0,0 @@
|
||||
ownerclass = 'HSFairwareReminder'
|
||||
ownerimport = 'HSFairwareReminder.h'
|
||||
|
||||
result = Window(528, 253, "%@ is Fairware")
|
||||
result.canClose = False
|
||||
result.canResize = False
|
||||
result.canMinimize = False
|
||||
demoPromptLabel = Label(result, NLSTR("<demo prompt>"))
|
||||
tryButton = Button(result, "Try")
|
||||
enterKeyButton = Button(result, "Enter Key")
|
||||
buyButton = Button(result, "Buy")
|
||||
fairwareButton = Button(result, "Fairware?")
|
||||
|
||||
owner.demoPromptTextField = demoPromptLabel
|
||||
result.initialFirstResponder = tryButton
|
||||
demoPromptLabel.font = Font(FontFamily.Label, FontSize.SmallControl)
|
||||
tryButton.action = Action(owner, 'closeDialog')
|
||||
tryButton.keyEquivalent = "\\r"
|
||||
enterKeyButton.action = Action(owner, 'showEnterCode')
|
||||
buyButton.action = Action(owner, 'buy')
|
||||
fairwareButton.action = Action(owner, 'moreInfo')
|
||||
|
||||
for button in (tryButton, enterKeyButton, buyButton, fairwareButton):
|
||||
button.width = 113
|
||||
demoPromptLabel.height = 185
|
||||
|
||||
demoPromptLabel.packToCorner(Pack.UpperLeft)
|
||||
demoPromptLabel.fill(Pack.Right)
|
||||
tryButton.packRelativeTo(demoPromptLabel, Pack.Below, Pack.Left)
|
||||
enterKeyButton.packRelativeTo(tryButton, Pack.Right, Pack.Middle)
|
||||
buyButton.packRelativeTo(enterKeyButton, Pack.Right, Pack.Middle)
|
||||
fairwareButton.packRelativeTo(buyButton, Pack.Right, Pack.Middle)
|
@ -1,52 +0,0 @@
|
||||
ownerclass = 'HSFairwareReminder'
|
||||
ownerimport = 'HSFairwareReminder.h'
|
||||
|
||||
result = Window(450, 185, "Enter Key")
|
||||
result.canClose = False
|
||||
result.canResize = False
|
||||
result.canMinimize = False
|
||||
titleLabel = Label(result, "Enter your key")
|
||||
promptLabel = Label(result, "Type the key you received when you contributed to %@, as well as the e-mail used as a reference for the purchase.")
|
||||
regkeyLabel = Label(result, "Registration key:")
|
||||
regkeyField = TextField(result, "")
|
||||
regemailLabel = Label(result, "Registration e-mail:")
|
||||
regemailField = TextField(result, "")
|
||||
contributeButton = Button(result, "Contribute")
|
||||
cancelButton = Button(result, "Cancel")
|
||||
submitButton = Button(result, "Submit")
|
||||
|
||||
owner.codePromptTextField = promptLabel
|
||||
owner.codeTextField = regkeyField
|
||||
owner.emailTextField = regemailField
|
||||
result.initialFirstResponder = regkeyField
|
||||
|
||||
titleLabel.font = Font(FontFamily.Label, FontSize.RegularControl, traits=[FontTrait.Bold])
|
||||
smallerFont = Font(FontFamily.Label, FontSize.SmallControl)
|
||||
for control in (promptLabel, regkeyLabel, regemailLabel):
|
||||
control.font = smallerFont
|
||||
regkeyField.usesSingleLineMode = regemailField.usesSingleLineMode = True
|
||||
contributeButton.action = Action(owner, 'contribute')
|
||||
cancelButton.action = Action(owner, 'cancelCode')
|
||||
cancelButton.keyEquivalent = "\\E"
|
||||
submitButton.action = Action(owner, 'submitCode')
|
||||
submitButton.keyEquivalent = "\\r"
|
||||
|
||||
for button in (contributeButton, cancelButton, submitButton):
|
||||
button.width = 100
|
||||
regkeyLabel.width = 128
|
||||
regemailLabel.width = 128
|
||||
promptLabel.height = 32
|
||||
|
||||
titleLabel.packToCorner(Pack.UpperLeft)
|
||||
titleLabel.fill(Pack.Right)
|
||||
promptLabel.packRelativeTo(titleLabel, Pack.Below, Pack.Left)
|
||||
promptLabel.fill(Pack.Right)
|
||||
regkeyField.packRelativeTo(promptLabel, Pack.Below, Pack.Right)
|
||||
regkeyLabel.packRelativeTo(regkeyField, Pack.Left, Pack.Middle)
|
||||
regkeyField.fill(Pack.Left)
|
||||
regemailField.packRelativeTo(regkeyField, Pack.Below, Pack.Right)
|
||||
regemailLabel.packRelativeTo(regemailField, Pack.Left, Pack.Middle)
|
||||
regemailField.fill(Pack.Left)
|
||||
contributeButton.packRelativeTo(regemailLabel, Pack.Below, Pack.Left)
|
||||
submitButton.packRelativeTo(regemailField, Pack.Below, Pack.Right)
|
||||
cancelButton.packRelativeTo(submitButton, Pack.Left, Pack.Middle)
|
@ -1,46 +0,0 @@
|
||||
ownerclass = 'HSFairwareAboutBox'
|
||||
ownerimport = 'HSFairwareAboutBox.h'
|
||||
|
||||
result = Window(259, 217, "")
|
||||
result.canResize = False
|
||||
result.canMinimize = False
|
||||
image = ImageView(result, "NSApplicationIcon")
|
||||
titleLabel = Label(result, NLSTR("AppTitle"))
|
||||
versionLabel = Label(result, NLSTR("AppVersion"))
|
||||
copyrightLabel = Label(result, NLSTR("AppCopyright"))
|
||||
registeredLabel = Label(result, "This app is registered, thanks!")
|
||||
registerButton = Button(result, "Register")
|
||||
|
||||
owner.window = result
|
||||
owner.titleTextField = titleLabel
|
||||
owner.versionTextField = versionLabel
|
||||
owner.copyrightTextField = copyrightLabel
|
||||
owner.registeredTextField = registeredLabel
|
||||
owner.registerButton = registerButton
|
||||
for label in (titleLabel, versionLabel, copyrightLabel, registeredLabel):
|
||||
label.alignment = const.NSCenterTextAlignment
|
||||
titleLabel.font = Font(FontFamily.Label, FontSize.RegularControl, traits=[FontTrait.Bold])
|
||||
for label in (versionLabel, copyrightLabel, registeredLabel):
|
||||
label.font = Font(FontFamily.Label, FontSize.SmallControl)
|
||||
label.height = 14
|
||||
registerButton.bezelStyle = const.NSRoundRectBezelStyle
|
||||
registerButton.action = Action(owner, 'showRegisterDialog')
|
||||
|
||||
image.height = 96
|
||||
image.packToCorner(Pack.UpperLeft)
|
||||
image.y = result.height - 10 - image.height
|
||||
image.fill(Pack.Right)
|
||||
image.setAnchor(Pack.UpperLeft, growX=True)
|
||||
titleLabel.packRelativeTo(image, Pack.Below, Pack.Left)
|
||||
titleLabel.fill(Pack.Right)
|
||||
titleLabel.setAnchor(Pack.UpperLeft, growX=True)
|
||||
versionLabel.packRelativeTo(titleLabel, Pack.Below, Pack.Left)
|
||||
versionLabel.fill(Pack.Right)
|
||||
versionLabel.setAnchor(Pack.UpperLeft, growX=True)
|
||||
copyrightLabel.packRelativeTo(versionLabel, Pack.Below, Pack.Left)
|
||||
copyrightLabel.fill(Pack.Right)
|
||||
copyrightLabel.setAnchor(Pack.UpperLeft, growX=True)
|
||||
registeredLabel.packRelativeTo(copyrightLabel, Pack.Below, Pack.Left)
|
||||
registeredLabel.fill(Pack.Right)
|
||||
registeredLabel.setAnchor(Pack.UpperLeft, growX=True)
|
||||
registerButton.packRelativeTo(copyrightLabel, Pack.Below, Pack.Middle)
|
23
core/app.py
23
core/app.py
@ -16,7 +16,6 @@ import shutil
|
||||
|
||||
from send2trash import send2trash
|
||||
from jobprogress import job
|
||||
from hscommon.reg import RegistrableApplication
|
||||
from hscommon.notify import Broadcaster
|
||||
from hscommon.path import Path
|
||||
from hscommon.conflict import smart_move, smart_copy
|
||||
@ -109,7 +108,7 @@ def fix_surrogate_encoding(s, encoding='utf-8'):
|
||||
else:
|
||||
return s
|
||||
|
||||
class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
class DupeGuru(Broadcaster):
|
||||
"""Holds everything together.
|
||||
|
||||
Instantiated once per running application, it holds a reference to every high-level object
|
||||
@ -141,6 +140,12 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
Instance of :mod:`meta-gui <core.gui>` table listing the results from :attr:`results`
|
||||
"""
|
||||
#--- View interface
|
||||
# get_default(key_name)
|
||||
# set_default(key_name, value)
|
||||
# show_message(msg)
|
||||
# open_url(url)
|
||||
# open_path(path)
|
||||
# reveal_path(path)
|
||||
# ask_yes_no(prompt) --> bool
|
||||
# show_results_window()
|
||||
# show_problem_dialog()
|
||||
@ -149,14 +154,13 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
|
||||
# in fairware prompts, we don't mention the edition, it's too long.
|
||||
PROMPT_NAME = "dupeGuru"
|
||||
DEMO_LIMITATION = tr("will only be able to delete, move or copy 10 duplicates at once")
|
||||
|
||||
def __init__(self, view):
|
||||
if view.get_default(DEBUG_MODE_PREFERENCE):
|
||||
logging.getLogger().setLevel(logging.DEBUG)
|
||||
logging.debug("Debug mode enabled")
|
||||
RegistrableApplication.__init__(self, view, appid=1)
|
||||
Broadcaster.__init__(self)
|
||||
self.view = view
|
||||
self.appdata = desktop.special_folder_path(desktop.SpecialFolder.AppData, appname=self.NAME)
|
||||
if not op.exists(self.appdata):
|
||||
os.makedirs(self.appdata)
|
||||
@ -330,13 +334,6 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
self.selected_dupes = dupes
|
||||
self.notify('dupes_selected')
|
||||
|
||||
def _check_demo(self):
|
||||
if self.should_apply_demo_limitation and self.results.mark_count > 10:
|
||||
msg = tr("You cannot delete, move or copy more than 10 duplicates at once in demo mode.")
|
||||
self.view.show_message(msg)
|
||||
return False
|
||||
return True
|
||||
|
||||
#--- Public
|
||||
def add_directory(self, d):
|
||||
"""Adds folder ``d`` to :attr:`directories`.
|
||||
@ -423,8 +420,6 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
j.start_job(self.results.mark_count)
|
||||
self.results.perform_on_marked(op, not copy)
|
||||
|
||||
if not self._check_demo():
|
||||
return
|
||||
if not self.results.mark_count:
|
||||
self.view.show_message(MSG_NO_MARKED_DUPES)
|
||||
return
|
||||
@ -439,8 +434,6 @@ class DupeGuru(RegistrableApplication, Broadcaster):
|
||||
def delete_marked(self):
|
||||
"""Start an async job to send marked duplicates to the trash.
|
||||
"""
|
||||
if not self._check_demo():
|
||||
return
|
||||
if not self.results.mark_count:
|
||||
self.view.show_message(MSG_NO_MARKED_DUPES)
|
||||
return
|
||||
|
@ -379,21 +379,12 @@ class OSXFrameworkStructure:
|
||||
action(op.abspath(path), header_dest)
|
||||
|
||||
|
||||
def build_cocoalib_xibless(dest='cocoa/autogen', withfairware=True):
|
||||
def build_cocoalib_xibless(dest='cocoa/autogen'):
|
||||
import xibless
|
||||
ensure_folder(dest)
|
||||
FNPAIRS = [
|
||||
('progress.py', 'ProgressController_UI'),
|
||||
('error_report.py', 'HSErrorReportWindow_UI'),
|
||||
]
|
||||
if withfairware:
|
||||
FNPAIRS += [
|
||||
('fairware_about.py', 'HSFairwareAboutBox_UI'),
|
||||
('demo_reminder.py', 'HSDemoReminder_UI'),
|
||||
('enter_code.py', 'HSEnterCode_UI'),
|
||||
]
|
||||
else:
|
||||
FNPAIRS += [
|
||||
('about.py', 'HSAboutBox_UI'),
|
||||
]
|
||||
for srcname, dstname in FNPAIRS:
|
||||
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} je fairware, což znamená \"open source software vyvíjený v očekávání poctivých příspěvků od uživatelů\". Jde o velmi zajímavý nápad, a po roce se ukazuje, že většina lidí se zajímá o cenu vývoje, ale jsou jim ukradené povídačky o duševním vlastnictví.\n"
|
||||
"\n"
|
||||
"Takže vás nebudu otravovat a řeknu to bez okolků: {name} si můžete zdarma vyzkoušet, ale pokud ho chcete používat bez omezení, musíte si ho koupit. V demo režimu, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"A to je celé. Pokud se o fairware chcete dozvědět více, klepněte na tlačítko \"Fairware?\"."
|
@ -1,31 +0,0 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
|
||||
#: hscommon/reg.py:39
|
||||
msgid ""
|
||||
"{name} is Fairware, which means \"open source software developed with expectation of fair contributions from users\". Hours have been invested in this software with the expectation that users will be fair enough to compensate them. The \"Unpaid hours\" figure you see below is the hours that have yet to be compensated for this project.\n"
|
||||
"\n"
|
||||
"If you like this application, please make a contribution that you consider fair. Thanks!\n"
|
||||
"\n"
|
||||
"If you cannot afford to contribute, you can either ignore this reminder or send an e-mail at support@hardcoded.net so I can send you a registration key.\n"
|
||||
"\n"
|
||||
"This dialog doesn't show when there are no unpaid hours or when you have a valid contribution key."
|
||||
msgstr ""
|
||||
"{name} ist Fairware, das bedeutet \"Open Source Software, entwickelt in der Hoffnung auf einen fairen Beitrag von den Benutzern\". Viel Zeit wurde in die Software investiert, mit der Erwartung der Nutzer möge fair genug sein die Entwickler für ihren Einsatz zu kompensieren. Die \"Unbezahlte Stunden\" Abbildung zeigt die Anzahl der Stunden die noch nicht bezahlt wurden.\n"
|
||||
"Wenn Sie diese Anwendung mögen, so spenden Sie bitte einen Ihrer Ansicht nach angemessenen Betrag. Danke!\n"
|
||||
"\n"
|
||||
"Wenn Sie es sich nicht leisten können zu spenden, können Sie diese Erinnerung entweder ignorieren oder mir eine Anfrage an hsoft@hardcoded.net schicken, mit der Bitte für einen Registrierungsschlüssel.\n"
|
||||
"\n"
|
||||
"Dieser Dialog erscheint nicht, wenn es keine unbezahlten Stunden gibt oder Sie einen gültigen Registrierungsschlüssel besitzen."
|
||||
|
||||
#: hscommon/reg.py:51
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} es Fairware, es decir \"software de código abierto desarrollado con la expectativa de recibir una retribución justa por parte de los usuarios\". Es una idea muy interesante, aunque tras más de un año de uso es evidente que la mayoría de los usuarios sólo están interesados en el precio del producto y no en teorías sobre la propiedad intelectual.\n"
|
||||
"\n"
|
||||
"Así pues seré claro: puede probar {name} gratuitamente pero debe comprarlo para un uso completo sin limitaciones. En el modo de prueba, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"En resumen, si tiene curiosidad por conocer fairware le animo a que lea sobre ello pulsando el botón de \"¿Fairware?\"."
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} est Fairware, ce qui signifie \"open source développé avec des attentes de contributions justes de la part des utilisateurs\". C'est un concept excessivement intéressant, mais un an de fairware a révélé que la plupart des gens ne sont que peu intéressés à des discours sur la propriété intellectuelle et veulent simplement savoir combien ça coûte.\n"
|
||||
"\n"
|
||||
"Donc, je serai bref et direct: Vous pouvez essayer {name} gratuitement, mais un achat est requis pour un usage sans limitation. En mode démo, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"C'est aussi simple que ça. Par contre, si vous êtes curieux, je vous encourage à cliquer sur le bouton \"Fairware?\" pour en savoir plus."
|
@ -1,15 +0,0 @@
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name}-ը fairware է, ինչը նշանակում է \"ազատ կոդով ծրագիր, որը զարգացվում է՝ ակնկալելով օգտվողների աջակցությունը\": Սա շատ հետաքրքիր սկզբունք է, սակայն մեկ տարվա fairware-ի արդյունքը ցույց է տալիս, որ շատ մարդիկ պարզապես ցանկանում են իմանալ, թե այն ինչ արժե, բայց չեն մտահոգվում ինտելեկտուալ սեփականության մասին:\n"
|
||||
"\n"
|
||||
"Ուստի ես չեմ ցանկանում խանգարել Ձեզ և կլինեմ շատ պարզ. Կարող եք փորձել {name}-ը ազատորեն, բայց պետք է գնեք ծրագիրը՝ հանելու համար բոլոր սահմանափակումները: Փորձնական եղանակում {name} {limitation}:\n"
|
||||
"\n"
|
||||
"Ամեն ինչ պարզ է, եթե Ձեզ հետաքրքիր է fairware-ը, ապա կարող եք մանրամասն կարդաք՝ սեղմելով այս հղմանը՝ \"Fairware է՞\":"
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} è denominato \"Fairware\", che significa \"software 'open source' sviluppato aspettandosi un contributo equo e corretto da parte degli utilizzatori\". E' un concetto molto interessante, ma un anno di 'fairware' ha dimostrato che la maggior parte della gente vuole solo sapere 'quanto costa' e non essere scocciata con delle teorie sulla proprietà intellettuale.\n"
|
||||
"\n"
|
||||
"Così non vi disturberò oltre e sarò diretto: potete provare {name} gratuitamente ma dovrete acquistarlo per usarlo senza limitazioni. In modalità 'demo', {name} {limitation}.\n"
|
||||
"\n"
|
||||
"In questo modo è semplice. Se siete curiosi e volete approfondire il concetto di 'fairware', vi invito a leggere di più sull'argomento cliccando sul pulsante \"Fairware?\"."
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} is Fairware, dit betekent \"open source software ontwikkeld in de hoop op een redelijke bijdrage van gebruikers\". Het is een interessant concept, maar na een jaar fairware is gebleken dat de meeste mensen gewoon willen weten wat het kost en niet lastig gevallen willen worden met theorieën over intellectueel eigendom.\n"
|
||||
"\n"
|
||||
"Ik zal u dus niet lastig vallen en duidelijk zijn: U kunt {name} gratis proberen, maar moet het kopen om het zonder beperkingen te kunnen gebruiken. In demo mode {name} {limitation}.\n"
|
||||
"\n"
|
||||
"Het is dus eigenlijk heel simpel. Als u toch geïnteresseerd bent in fairware, raad ik u aan hier meer over te lezen door op de knop \"Fairware?\" te klikken."
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} é fairware, o que quer dizer \"software de código aberto desenvolvido sob a expectativa de contribuição justa de seus usuários\". É um conceito muito interessante, mas um ano de fairware mostrou que a maioria das pessoas só deseja saber quanto o software custa, sem ser incomodada com teorias sobre propriedade intelectual.\n"
|
||||
"\n"
|
||||
"Portanto não o incomodarei e serei bem direto: você pode testar {name} de graça, mas deverá comprá-lo para usá-lo sem limitações. Em modo demo, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"É simples assim. Caso você tenha curiosidade sobre fairware, recomendo que leia mais sobre o assunto clicando o botão \"Fairware?\"."
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\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"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} является fairware, что означает \"программное обеспечение с открытым исходным кодом, с ожиданием справедливого вклада от пользователей\". Это очень интересная концепция, но один год fairware показал, что большинство людей просто хотят знать, сколько это стоит, а не возиться с теориями об интеллектуальной собственности.\n"
|
||||
"\n"
|
||||
"Так что, я не буду утомлять вас и буду очень краток: вы можете попробовать {name} бесплатно, но вам придётся купить её, чтобы использовать без ограничений. В демо-режиме {name} {limitation}.\n"
|
||||
"\n"
|
||||
"То есть, это просто. Если вам интересно, о fairware вы можете больше узнать нажав на кнопку \"Fairware?\"."
|
@ -1,24 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-04-28 18:29+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\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"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
||||
"{name} є fairware, що означає \"програмне забезпечення з відкритим вихідним кодом, з очікуванням справедливого вкладу від користувачів\". Це дуже цікава концепція, але один рік fairware показав, що більшість людей просто хочуть знати, скільки це коштує, а не возитися з теоріями про інтелектуальну власність.\n"
|
||||
"\n"
|
||||
"Тож я не буду втомлювати Вас і поясню просто: Ви можете спробувати {name} безкоштовно, але Вам доведеться купити його, щоб використовувати її без обмежень. У демо-режимі, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"Ось так це просто. Якщо Вас цікавить ідея fairware, то я запрошую Вас дізнатися більше про це, натиснувши на кнопку \"Fairware?\"."
|
@ -1,20 +0,0 @@
|
||||
# Translators:
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: hscommon\n"
|
||||
"PO-Revision-Date: 2013-07-05 11:23+0000\n"
|
||||
"Last-Translator: hsoft <hsoft@hardcoded.net>\n"
|
||||
"Language-Team: Vietnamese (http://www.transifex.com/projects/p/hscommon/language/vi/)\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
"Language: vi\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: hscommon/reg.py:32
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
@ -1,32 +0,0 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
|
||||
#: hscommon/reg.py:39
|
||||
msgid ""
|
||||
"{name} is Fairware, which means \"open source software developed with expectation of fair contributions from users\". Hours have been invested in this software with the expectation that users will be fair enough to compensate them. The \"Unpaid hours\" figure you see below is the hours that have yet to be compensated for this project.\n"
|
||||
"\n"
|
||||
"If you like this application, please make a contribution that you consider fair. Thanks!\n"
|
||||
"\n"
|
||||
"If you cannot afford to contribute, you can either ignore this reminder or send an e-mail at support@hardcoded.net so I can send you a registration key.\n"
|
||||
"\n"
|
||||
"This dialog doesn't show when there are no unpaid hours or when you have a valid contribution key."
|
||||
msgstr ""
|
||||
"{name} 是一款捐助软件,也就是说 \"用户对研发开源软件所花费的时间进行符合用户意愿的捐助\"。用户可以根据研发人员花费在开发软件上的时间进行合理的补偿。用户在下面看到的 \"未支付的时间\" (Unpaid hours)表示需要对该软件进行补偿的时间。\n"
|
||||
" \n"
|
||||
"如果您喜欢这款软件,我诚挚的希望您可以进行必要的捐助。谢谢!\n"
|
||||
"\n"
|
||||
"如果您无法承担捐助,您也可以忽略此提醒,或者发送电子邮件至 support@hardcoded.net ,我会发送给您一个注册密钥。\n"
|
||||
"\n"
|
||||
"当软件没有未支付的时间或您已使用一个有效的注册密钥,此对话框将不会再显示。"
|
||||
|
||||
#: hscommon/reg.py:51
|
||||
msgid ""
|
||||
"{name} is fairware, which means \"open source software developed with expectation of fair contributions from users\". It's a very interesting concept, but one year of fairware has shown that most people just want to know how much it costs and not be bothered with theories about intellectual property.\n"
|
||||
"\n"
|
||||
"So I won't bother you and will be very straightforward: You can try {name} for free but you have to buy it in order to use it without limitations. In demo mode, {name} {limitation}.\n"
|
||||
"\n"
|
||||
"So it's as simple as this. If you're curious about fairware, however, I encourage you to read more about it by clicking on the \"Fairware?\" button."
|
||||
msgstr ""
|
@ -1,68 +0,0 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2010-01-31
|
||||
# Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
#
|
||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
from hashlib import md5
|
||||
|
||||
from ..testutil import CallLogger
|
||||
from ..reg import RegistrableApplication, InvalidCodeError
|
||||
|
||||
def md5s(s):
|
||||
return md5(s.encode('utf-8')).hexdigest()
|
||||
|
||||
def assert_valid(appid, code, email):
|
||||
app = RegistrableApplication(CallLogger(), appid)
|
||||
try:
|
||||
app.validate_code(code, email)
|
||||
except InvalidCodeError as e:
|
||||
raise AssertionError("Registration failed: {0}".format(str(e)))
|
||||
|
||||
def assert_invalid(appid, code, email, msg_contains=None):
|
||||
app = RegistrableApplication(CallLogger(), appid)
|
||||
try:
|
||||
app.validate_code(code, email)
|
||||
except InvalidCodeError as e:
|
||||
if msg_contains:
|
||||
assert msg_contains in str(e)
|
||||
else:
|
||||
raise AssertionError("InvalidCodeError not raised")
|
||||
|
||||
def test_valid_code():
|
||||
email = 'foo@bar.com'
|
||||
appid = 42
|
||||
code = md5s('42' + email + '43' + 'aybabtu')
|
||||
assert_valid(appid, code, email)
|
||||
|
||||
def test_invalid_code():
|
||||
email = 'foo@bar.com'
|
||||
appid = 42
|
||||
code = md5s('43' + email + '43' + 'aybabtu')
|
||||
assert_invalid(appid, code, email)
|
||||
|
||||
def test_suggest_other_apps():
|
||||
# If a code is valid for another app, say so in the error message.
|
||||
email = 'foo@bar.com'
|
||||
appid = 42
|
||||
# 2 is moneyGuru's appid
|
||||
code = md5s('2' + email + '43' + 'aybabtu')
|
||||
assert_invalid(appid, code, email, msg_contains="moneyGuru")
|
||||
|
||||
def test_invert_code_and_email():
|
||||
# Try inverting code and email during validation in case the user mixed the fields up.
|
||||
# We still show an error here. It kind of sucks, but if we don't, the email and code fields
|
||||
# end up mixed up in the preferences. It's not as if this kind of error happened all the time...
|
||||
email = 'foo@bar.com'
|
||||
appid = 42
|
||||
code = md5s('42' + email + '43' + 'aybabtu')
|
||||
assert_invalid(appid, email, code, msg_contains="inverted")
|
||||
|
||||
def test_paypal_transaction():
|
||||
# If the code looks like a paypal transaction, mention it in the error message.
|
||||
email = 'foo@bar.com'
|
||||
appid = 42
|
||||
code = '2A693827WX9676888'
|
||||
assert_invalid(appid, code, email, 'Paypal transaction')
|
@ -4,135 +4,127 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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 ""
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
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
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:296
|
||||
msgid "You cannot delete, move or copy more than 10 duplicates at once in demo mode."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid "All selected %d matches are going to be ignored in all subsequent scans. Continue?"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr ""
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr ""
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr ""
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr ""
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr ""
|
||||
|
||||
@ -180,11 +172,11 @@ msgstr ""
|
||||
msgid "Oldest"
|
||||
msgstr ""
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr ""
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10,49 +10,45 @@ msgstr ""
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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 ""
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Vyhledávám duplicity"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Nahrávám"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Přesouvám"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Kopíruji"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Vyhazuji do koše"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -60,37 +56,31 @@ msgstr ""
|
||||
"Předchozí akce stále nebyla ukončena. Novou zatím nemůžete spustit. Počkejte"
|
||||
" pár sekund a zkuste to znovu."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Nebyli nalezeny žádné duplicity."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
@ -98,60 +88,60 @@ msgstr ""
|
||||
"Všech %d vybraných shod bude v následujících hledáních ignorováno. "
|
||||
"Pokračovat?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr ""
|
||||
"Nedefinoval jste žádný uživatelský příkaz. Nadefinujete ho v předvolbách."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "Chystáte se z výsledků odstranit %d souborů. Pokračovat?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Shromažďuji prohlížené soubory"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Vybrané adresáře neobsahují žádné soubory vhodné k prohledávání."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d vyřazeno)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "Nalezeno 0 shod"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "Nalezeno %d shod"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Read size of %d/%d files"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "Grouped %d/%d matches"
|
||||
|
||||
@ -199,11 +189,11 @@ msgstr "Nejnovější"
|
||||
msgid "Oldest"
|
||||
msgstr "Nejstarší"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) duplicit označeno."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr " filtr: %s"
|
||||
|
||||
|
@ -10,49 +10,45 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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 ""
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Suche nach Duplikaten"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Laden"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Verschieben"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Kopieren"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Verschiebe in den Mülleimer"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
msgid "Sending files to the recycle bin"
|
||||
msgstr "Sende Dateien in den Mülleimer"
|
||||
|
||||
#: core/app.py:110
|
||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -60,97 +56,91 @@ msgstr ""
|
||||
"Eine vorherige Aktion ist noch in der Bearbeitung. Sie können noch keine "
|
||||
"Neue starten. Warten Sie einige Sekunden und versuchen es erneut."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Keine Duplikate gefunden."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
msgstr "%d Dateien werden in zukünftigen Scans ignoriert werden. Fortfahren?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "kopieren"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "verschieben"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "Wählen sie einen Ordner zum {} der ausgewählten Dateien"
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr ""
|
||||
"Sie haben keinen eigenen Befehl erstellt. Bitte in den Einstellungen "
|
||||
"konfigurieren."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "%d Dateien werden aus der Ergebnisliste entfernt. Fortfahren?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Sammle Dateien zum Scannen"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Der ausgewählte Ordner enthält keine scannbare Dateien."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d verworfen)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "0 Paare gefunden"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "%d Paare gefunden"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Lese Größe von %d/%d Dateien"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "%d/%d Paare gruppiert"
|
||||
|
||||
@ -198,11 +188,11 @@ msgstr "Newest"
|
||||
msgid "Oldest"
|
||||
msgstr "Oldest"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) Duplikate markiert."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr " Filter: %s"
|
||||
|
||||
|
@ -12,15 +12,15 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr "Aucun doublon marqué. Rien à faire."
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr "Aucun doublon sélectionné. Rien à faire."
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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?"
|
||||
@ -28,35 +28,31 @@ msgstr ""
|
||||
"Beaucoup de fichiers seront ouverts en même temps. Cela peut gravement "
|
||||
"encombrer votre système. Continuer?"
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Scan de doublons en cours"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Chargement en cours"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Déplacement en cours"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Copie en cours"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Envoi de fichiers à la corbeille"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
msgid "Sending files to the recycle bin"
|
||||
msgstr "Envoi de fichiers à la corbeille"
|
||||
|
||||
#: core/app.py:110
|
||||
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"
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -64,99 +60,91 @@ msgstr ""
|
||||
"Une action précédente est encore en cours. Attendez quelques secondes avant "
|
||||
"d'en repartir une nouvelle."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Aucun doublon trouvé."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr "Tous les fichiers marqués ont été copiés correctement."
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr "Tous les fichiers marqués ont été déplacés correctement."
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr ""
|
||||
"Tous les fichiers marqués ont été correctement envoyés à la corbeille."
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
"Vous ne pouvez pas effacer, déplacer ou copier plus de 10 doublons à la fois"
|
||||
" en mode démo."
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr "'{}' est déjà dans la liste."
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr "'{}' n'existe pas."
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
msgstr "%d fichiers seront ignorés des prochains scans. Continuer?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "copier"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "déplacer"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "Sélectionnez un dossier vers lequel {} les fichiers marqués."
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr "Choisissez une destination pour votre exportation CSV"
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr ""
|
||||
"Vous n'avez pas de commande personnalisée. Ajoutez-la dans vos préférences."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "%d fichiers seront retirés des résultats. Continuer?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr "{} groupes de doublons ont été modifiés par la re-prioritisation."
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Collecte des fichiers à scanner"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Les dossiers sélectionnés ne contiennent pas de fichiers valides."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d hors-groupe)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "0 paires trouvées"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "%d paires trouvées"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Lu la taille de %d/%d fichiers"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "%d/%d paires groupées"
|
||||
|
||||
@ -206,11 +194,11 @@ msgstr "Plus récent"
|
||||
msgid "Oldest"
|
||||
msgstr "Moins récent"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) doublons marqués."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr " filtre: %s"
|
||||
|
||||
|
@ -10,50 +10,45 @@ msgstr ""
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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 ""
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Ստուգվում են կրկնօրինակները"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Բացվում է"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Տեղափոխվում է"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Պատճենվում է"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Ուղարկվում է Աղբարկղ"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
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"
|
||||
msgstr ""
|
||||
"միաժամանակ հնարավոր է ջնջել, տեղափոխել կամ պատճենել միայն 10 օրինակներ"
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -61,98 +56,90 @@ msgstr ""
|
||||
"Նախորդ գործողությունը դեռևս ձեռադրում է այստեղ: Չեք կարող սկսել մեկ ուրիշը: "
|
||||
"Սպասեք մի քանի վայրկյան և կրկին փորձեք:"
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Կրկնօրինակներ չկան:"
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ պատճենվել են:"
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ տեղափոխվել են:"
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr "Բոլոր նշված ֆայլերը հաջողությամբ Ջնջվել են:"
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
"Չեք կարող ջնջել, տեղափձոխել կամ պատճենել ավելի քան 10 օրինակներ փորձնական "
|
||||
"եղանակում:"
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr "'{}'-ը արդեն առկա է ցանկում:"
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr "'{}'-ը գոյություն չունի:"
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
msgstr ""
|
||||
"Ընտրված %d համընկնումները կանտեսվեն հետագա բոլոր ստուգումներից: Շարունակե՞լ:"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "պատճենել"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "տեղափոխել"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "Ընտրել թղթապանակ՝ {} նշված ֆայլերի համար"
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr "Դուք չեք կատարել Հրամանի ընտրություն: Կատարեք այն կարգավորումներում:"
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "Դուք պատրաստվում եք ջնջելու %d ֆայլեր: Շարունակե՞լ:"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Հավաքվում են ֆայլեր՝ ստուգելու համար"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Ընտրված թղթապանակները պարունակում են չստուգվող ֆայլ:"
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d անպիտան)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "0 համընկնում է գտնվել"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "%d համընկնում է գտնվել"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Կարդալ %d/%d ֆայլերի չափը"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "Խմբավորվել է %d/%d համընկնում"
|
||||
|
||||
@ -200,11 +187,11 @@ msgstr "Նորագույնը"
|
||||
msgid "Oldest"
|
||||
msgstr "Ամենահինը"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) նշված կրկնօրինակներ:"
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr "ֆիլտր. %s"
|
||||
|
||||
|
@ -10,49 +10,45 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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 ""
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Scansione per i duplicati"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Caricamento"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Spostamento"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Copia in corso"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Spostamento nel cestino"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
msgid "Sending files to the recycle bin"
|
||||
msgstr "Spostamento nel cestino"
|
||||
|
||||
#: core/app.py:110
|
||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -60,37 +56,31 @@ msgstr ""
|
||||
"Un'azione precedente è ancora in corso. Non puoi cominciarne una nuova. "
|
||||
"Aspetta qualche secondo e quindi riprova."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Non sono stati trovati dei duplicati."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr "Tutti i file marcati sono stati copiati correttamente."
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr "Tutti i file marcati sono stati spostati correttamente."
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr "Tutti i file marcati sono stati inviati nel cestino."
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr "'{}' è già nella lista."
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr "'{}' non esiste."
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
@ -98,61 +88,61 @@ msgstr ""
|
||||
"Tutti i %d elementi che coincidono verranno ignorati in tutte le scansioni "
|
||||
"successive. Continuare?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr ""
|
||||
"Non hai impostato nessun comando personalizzato. Impostalo nelle tue "
|
||||
"preferenze."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "Stai per rimuovere %d file dai risultati. Continuare?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Raccolta file da scansionare"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Le cartelle selezionate non contengono file da scansionare."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d scartati)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "Nessun duplicato trovato"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "Trovato/i %d duplicato/i"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Lettura dimensione di %d/%d file"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "Raggruppati %d/%d duplicati"
|
||||
|
||||
@ -202,11 +192,11 @@ msgstr "Il più nuovo"
|
||||
msgid "Oldest"
|
||||
msgstr "Il più vecchio"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) duplicati marcati."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr " filtro: %s"
|
||||
|
||||
|
@ -14,15 +14,15 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr "Não há duplicatas marcadas. Nada foi feito."
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr "Não há duplicatas selecionadas. Nada foi feito."
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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?"
|
||||
@ -30,35 +30,31 @@ msgstr ""
|
||||
"Você pretende abrir muitos arquivos de uma vez. Problemas podem surgir "
|
||||
"dependendo de qual app seja usado para abri-los. Continuar?"
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Buscando por duplicatas"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Carregando"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Movendo"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Copiando"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Movendo para o Lixo"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
msgid "Sending files to the recycle bin"
|
||||
msgstr "Movendo arquivos para o Lixo"
|
||||
|
||||
#: core/app.py:110
|
||||
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"
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -66,98 +62,90 @@ msgstr ""
|
||||
"Ainda há uma ação em execução. Não é possível iniciar outra agora. Espere "
|
||||
"alguns segundos e tente novamente."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Nenhuma duplicata encontrada."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr "Todos os arquivos marcados foram copiados com sucesso."
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr "Todos os arquivos marcados foram relocados com sucesso."
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr "Todos os arquivos marcados foram movidos para o Lixo com sucesso."
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
"Em modo demo, você não pode apagar, mover ou copiar mais do que 10 "
|
||||
"duplicatas por vez."
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr "'{}' já está na lista."
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr "'{}' não existe."
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
msgstr "Excluir %d duplicata(s) selecionada(s) de escaneamentos posteriores?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "copiar"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "mover"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "Selecione uma pasta para {} os arquivos marcados"
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr "Selecione uma pasta para o CSV exportado"
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr ""
|
||||
"Você não possui nenhum comando personalizado. Crie um nas preferências."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "Remover %d arquivo(s) dos resultados?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr "{} grupos de duplicatas alterados ao re-priorizar."
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Juntando arquivos para escanear"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "As pastas selecionadas não contém arquivos escaneáveis."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d rejeitado(s))"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "0 coincidentes encontrados"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "%d coincidentes encontrados"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Tamanho de leitura de %d/%d arquivos"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "%d/%d coincidentes agrupados"
|
||||
|
||||
@ -205,11 +193,11 @@ msgstr "Mais recente"
|
||||
msgid "Oldest"
|
||||
msgstr "Mais antigo"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) duplicatas marcadas."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr " filtro: %s"
|
||||
|
||||
|
@ -11,15 +11,15 @@ msgstr ""
|
||||
"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"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr "Дубликаты не отмечены. Нечего выполнять."
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr "Дубликаты не выбраны. Нечего выполнять."
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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?"
|
||||
@ -28,37 +28,31 @@ msgstr ""
|
||||
"файлы будут открыты, это действие может создать настоящий беспорядок. "
|
||||
"Продолжать?"
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Проверка на наличие дубликатов"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Загрузка"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Перемещение"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Копирование"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Перемещение в Корзину"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
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"
|
||||
msgstr ""
|
||||
"вы сможете удалить, переместить или скопировать только 10 дубликатов за один"
|
||||
" раз"
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -66,39 +60,31 @@ msgstr ""
|
||||
"Предыдущее действие до сих пор выполняется. Вы не можете начать новое. "
|
||||
"Подождите несколько секунд, затем повторите попытку."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Дубликаты не найдены."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr "Все отмеченные файлы были скопированы успешно."
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr "Все отмеченные файлы были перемещены успешно."
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr "Все отмеченные файлы были успешно отправлены в Корзину."
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
"Вы не можете удалять, перемещать или копировать более 10 дубликатов за один "
|
||||
"раз в демонстрационном режиме."
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr "'{}' уже присутствует в списке."
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr "'{}' не существует."
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
@ -106,59 +92,59 @@ msgstr ""
|
||||
"Все выбранные %d совпадений будут игнорироваться при всех последующих "
|
||||
"проверках. Продолжить?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "копирование"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "перемещение"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "Выберите каталог {} для отмеченных файлов"
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr "Выберите назначение для экспортируемого "
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr "Вы не создали пользовательскую команду. Задайте её в настройках."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "Вы собираетесь удалить %d файлов из результата поиска. Продолжить?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr "{} групп дубликатов было изменено при реприоритезации."
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Сбор файлов для сканирования"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Выбранные каталоги не содержат файлов для сканирования."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s. (%d отменено)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "0 совпадений найдено"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "%d совпадений найдено"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Подсчитан размер %d/%d файлов"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "Группировка %d/%d совпадений"
|
||||
|
||||
@ -207,11 +193,11 @@ msgstr "Новейший"
|
||||
msgid "Oldest"
|
||||
msgstr "Старейшие"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) дубликатов отмечено."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr "фильтр: %s"
|
||||
|
||||
|
@ -10,49 +10,45 @@ msgstr ""
|
||||
"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"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr "Немає позначених дублікатів - нічого робити."
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr "Немає обраних дублікатів - нічого робити."
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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 ""
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Пошук дублікатів"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Завантаження"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Переміщення"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Копіювання"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Відправка до кошику"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
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"
|
||||
msgstr "може видаляти, переміщувати або копіювати лише 10 копій відразу"
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -60,39 +56,31 @@ msgstr ""
|
||||
"Попередню дію ще не закінчено. Ви покищо не можете розпочаті нову. Зачекайте"
|
||||
" кілька секунд, потім повторіть спробу."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Не знайдено жодного дублікату."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr "Усі позначені файли були скопійовані успішно."
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr "Усі позначені файли були переміщені успішно."
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr "Усі позначені файли були успішно відправлені до кошика."
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
"Ви не можете видаляти, переміщати або копіювати більше 10 дублікатів відразу"
|
||||
" в демонстраційному режимі."
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr "'{}' вже є в списку."
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr "'{}' не існує."
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
@ -100,59 +88,59 @@ msgstr ""
|
||||
"Усі обрані %d результатів будуть ігноруватися під час усіх наступних "
|
||||
"пошуків. Продовжити?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "копіювання"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "переміщення"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "Оберіть цільову папку для {} позначених файлів"
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr "Власна команда не встановлена. Встановіть її у налаштуваннях."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "Ви збираєтеся видалити %d файлів з результату пошуку. Продовжити?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Збір файлів для пошуку"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Обрані папки не містять файлів придатних для пошуку."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d відкинуто)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "0 результатів знайдено"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "%d результатів знайдено"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Прочитано розмір %d/%d файлів"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "Згруповано %d/%d результатів"
|
||||
|
||||
@ -200,11 +188,11 @@ msgstr ""
|
||||
msgid "Oldest"
|
||||
msgstr ""
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) дублікатів позначено."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr "фільтр: %s"
|
||||
|
||||
|
@ -11,17 +11,17 @@ msgstr ""
|
||||
"Language: vi\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
"Không có phần đánh dấu nào trùng nhau. Vẫn chưa thực hiện thao tác nào."
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
"Không có phần đánh dấu nào trùng nhau. Vẫn chưa thực hiện thao tác nào."
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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?"
|
||||
@ -29,37 +29,31 @@ msgstr ""
|
||||
"Bạn chuẩn bị mở nhiều tập tin cùng lúc. Dựa trên chương trình các tập tin "
|
||||
"được mở, thao tác này có thể gây ra trạng thái lộn xộn. Vẫn muốn tiếp tục?"
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "Quét các phần trùng nhau"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "Đang tải"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "Đang di chuyển"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "Đang sao chép"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "Đang gửi vào thùng rác"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
msgid "Sending files to the recycle bin"
|
||||
msgstr "Đang chuyển các tập tin vào thùng rác trong Windows"
|
||||
|
||||
#: core/app.py:110
|
||||
msgid "will only be able to delete, move or copy 10 duplicates at once"
|
||||
msgstr ""
|
||||
"chỉ được xóa, di chuyển hoặc sao chép 10 thành phần trùng nhau trong cùng "
|
||||
"một lần"
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
msgid ""
|
||||
"A previous action is still hanging in there. You can't start a new one yet. "
|
||||
"Wait a few seconds, then try again."
|
||||
@ -67,40 +61,32 @@ msgstr ""
|
||||
"Hiện đã có một tiến trình đang được tiến hành. Bạn không thể bắt đầu một "
|
||||
"phần khác. Hãy đợi trong vài giây, và sau đó thử lại lần nữa."
|
||||
|
||||
#: core/app.py:254
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "Không tìm thấy thành phần trùng nhau."
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr "Tất cả tập tin được đánh dấu đã được sao chép thành công."
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr "Tất cả các tập tin được đánh dấu đã được di chuyển thành công."
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr ""
|
||||
"Tất cả các tập tin được đánh dấu đã được gửi đến Thùng Rác thành công."
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
"Bạn không thể xóa, di chuyển hoặc sao chép nhiều hơn 10 đối tượng trùng nhau"
|
||||
" trong cùng một lần ở chế độ xài thử."
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr "'{}' đã tồn tại trong danh sách."
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr "'{}' không tồn tại."
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
@ -108,61 +94,61 @@ msgstr ""
|
||||
"Các phần được chọn %d khớp với nhau sẽ được bỏ qua trong các lần quét sau. "
|
||||
"Tiếp tục?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "sao chép"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "di chuyển"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "Chọn một thư mục để {} các tập tin được đánh dấu đến"
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr "Chọn một điểm xuất dữ liệu dạng CSV"
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr ""
|
||||
"Bạn vẫn chưa chỉnh sửa phần thiết lập dòng lệnh. Hãy sử dụng tính năng này "
|
||||
"trong phần tùy biến của bạn."
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "Bạn chuẩn bị loại bỏ %d tập tin từ phần kết quả. Tiếp tục?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr "{} các nhóm trùng nhau đã được thay đổi bởi thứ tự-tái ưu tiên."
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "Đang thu thập các tập tin để quét"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "Các thứ mục được chọn chứa các tập tin không thể quét được."
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d bị bỏ qua)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "đã tìm thấy 0 phần khớp nhau"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "đã tìm thấy %d phần khớp nhau"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "Đọc kích thước của các tập tin %d/%d"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "Đã nhóm %d/%d phần khớp nhau"
|
||||
|
||||
@ -210,11 +196,11 @@ msgstr "Mới nhất"
|
||||
msgid "Oldest"
|
||||
msgstr "Cũ nhất"
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "%d / %d (%s / %s) phần trùng nhau đã được đánh dấu."
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr " bộ lọc: %s"
|
||||
|
||||
|
@ -10,143 +10,133 @@ msgstr ""
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: core/app.py:40
|
||||
#: core/app.py:39
|
||||
msgid "There are no marked duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:41
|
||||
#: core/app.py:40
|
||||
msgid "There are no selected duplicates. Nothing has been done."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:42
|
||||
#: core/app.py:41
|
||||
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 ""
|
||||
|
||||
#: core/app.py:58
|
||||
#: core/app.py:57
|
||||
msgid "Scanning for duplicates"
|
||||
msgstr "重复文件扫描中"
|
||||
|
||||
#: core/app.py:59
|
||||
#: core/app.py:58
|
||||
msgid "Loading"
|
||||
msgstr "载入中"
|
||||
|
||||
#: core/app.py:60
|
||||
#: core/app.py:59
|
||||
msgid "Moving"
|
||||
msgstr "移动中"
|
||||
|
||||
#: core/app.py:61
|
||||
#: core/app.py:60
|
||||
msgid "Copying"
|
||||
msgstr "复制中"
|
||||
|
||||
#: core/app.py:62
|
||||
#: core/app.py:61
|
||||
msgid "Sending to Trash"
|
||||
msgstr "移到垃圾桶"
|
||||
|
||||
#: core/app.py:65
|
||||
#: core/app.py:64
|
||||
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"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:246
|
||||
#: core/app.py:295
|
||||
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
|
||||
#: core/app.py:302
|
||||
msgid "No duplicates found."
|
||||
msgstr "没有找到重复文件。"
|
||||
|
||||
#: core/app.py:267
|
||||
#: core/app.py:315
|
||||
msgid "All marked files were copied successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:268
|
||||
#: core/app.py:316
|
||||
msgid "All marked files were moved successfully."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:269
|
||||
#: core/app.py:317
|
||||
msgid "All marked files were successfully sent to Trash."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:296
|
||||
msgid ""
|
||||
"You cannot delete, move or copy more than 10 duplicates at once in demo "
|
||||
"mode."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:307
|
||||
#: core/app.py:354
|
||||
msgid "'{}' already is in the list."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:309
|
||||
#: core/app.py:356
|
||||
msgid "'{}' does not exist."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:316
|
||||
#: core/app.py:365
|
||||
msgid ""
|
||||
"All selected %d matches are going to be ignored in all subsequent scans. "
|
||||
"Continue?"
|
||||
msgstr "目前已选的 %d 个匹配项将在后续的扫描中被忽略。继续吗?"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "copy"
|
||||
msgstr "复制"
|
||||
|
||||
#: core/app.py:376
|
||||
#: core/app.py:431
|
||||
msgid "move"
|
||||
msgstr "移动"
|
||||
|
||||
#: core/app.py:377
|
||||
#: core/app.py:432
|
||||
msgid "Select a directory to {} marked files to"
|
||||
msgstr "选择一个文件夹将标记的 {} 个文件进行..."
|
||||
|
||||
#: core/app.py:403
|
||||
#: core/app.py:469
|
||||
msgid "Select a destination for your exported CSV"
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:428
|
||||
#: core/app.py:494
|
||||
msgid "You have no custom command set up. Set it up in your preferences."
|
||||
msgstr "你没有设定自定义命令。请在首选项中进行设定。"
|
||||
|
||||
#: core/app.py:535 core/app.py:546
|
||||
#: core/app.py:646 core/app.py:659
|
||||
msgid "You are about to remove %d files from results. Continue?"
|
||||
msgstr "你将从结果中移除 %d 个文件。继续吗?"
|
||||
|
||||
#: core/app.py:566
|
||||
#: core/app.py:693
|
||||
msgid "{} duplicate groups were changed by the re-prioritization."
|
||||
msgstr ""
|
||||
|
||||
#: core/app.py:586
|
||||
#: core/app.py:721
|
||||
msgid "Collecting files to scan"
|
||||
msgstr "收集文件以备扫描"
|
||||
|
||||
#: core/app.py:597
|
||||
#: core/app.py:732
|
||||
msgid "The selected directories contain no scannable file."
|
||||
msgstr "所选文件夹中不包含可供扫描的文件。"
|
||||
|
||||
#: core/app.py:636
|
||||
#: core/app.py:773
|
||||
msgid "%s (%d discarded)"
|
||||
msgstr "%s (%d 无效)"
|
||||
|
||||
#: core/engine.py:178 core/engine.py:215
|
||||
#: core/engine.py:220 core/engine.py:265
|
||||
msgid "0 matches found"
|
||||
msgstr "未找到匹配项"
|
||||
|
||||
#: core/engine.py:196 core/engine.py:223
|
||||
#: core/engine.py:238 core/engine.py:273
|
||||
msgid "%d matches found"
|
||||
msgstr "找到 %d 个匹配项"
|
||||
|
||||
#: core/engine.py:208 core/scanner.py:79
|
||||
#: core/engine.py:258 core/scanner.py:79
|
||||
msgid "Read size of %d/%d files"
|
||||
msgstr "读取 %d/%d 文件大小"
|
||||
|
||||
#: core/engine.py:361
|
||||
#: core/engine.py:464
|
||||
msgid "Grouped %d/%d matches"
|
||||
msgstr "%d/%d 匹配项组合在一起"
|
||||
|
||||
@ -194,11 +184,11 @@ msgstr ""
|
||||
msgid "Oldest"
|
||||
msgstr ""
|
||||
|
||||
#: core/results.py:113
|
||||
#: core/results.py:126
|
||||
msgid "%d / %d (%s / %s) duplicates marked."
|
||||
msgstr "已标记 %d / %d (%s / %s) 个重复项。"
|
||||
|
||||
#: core/results.py:120
|
||||
#: core/results.py:133
|
||||
msgid " filter: %s"
|
||||
msgstr " 筛选: %s"
|
||||
|
||||
|
@ -18,7 +18,6 @@ from hscommon import desktop
|
||||
|
||||
from qtlib.about_box import AboutBox
|
||||
from qtlib.recent import Recent
|
||||
from qtlib.reg import Registration
|
||||
from qtlib.util import createActions
|
||||
from qtlib.progress_window import ProgressWindow
|
||||
|
||||
@ -85,7 +84,6 @@ class DupeGuru(QObject):
|
||||
('actionIgnoreList', '', '', tr("Ignore List"), self.ignoreListTriggered),
|
||||
('actionShowHelp', 'F1', '', tr("dupeGuru Help"), self.showHelpTriggered),
|
||||
('actionAbout', '', '', tr("About dupeGuru"), self.showAboutBoxTriggered),
|
||||
('actionRegister', '', '', tr("Register dupeGuru"), self.registerTriggered),
|
||||
('actionCheckForUpdate', '', '', tr("Check for Update"), self.checkForUpdateTriggered),
|
||||
('actionOpenDebugLog', '', '', tr("Open Debug Log"), self.openDebugLogTriggered),
|
||||
]
|
||||
@ -108,10 +106,6 @@ class DupeGuru(QObject):
|
||||
def remove_selected(self):
|
||||
self.model.remove_selected(self)
|
||||
|
||||
def askForRegCode(self):
|
||||
reg = Registration(self.model)
|
||||
reg.ask_for_code()
|
||||
|
||||
def confirm(self, title, msg, default_button=QMessageBox.Yes):
|
||||
active = QApplication.activeWindow()
|
||||
buttons = QMessageBox.Yes | QMessageBox.No
|
||||
@ -133,7 +127,6 @@ class DupeGuru(QObject):
|
||||
|
||||
#--- Events
|
||||
def finishedLaunching(self):
|
||||
self.model.initial_registration_setup()
|
||||
if sys.getfilesystemencoding() == 'ascii':
|
||||
# No need to localize this, it's a debugging message.
|
||||
msg = "Something is wrong with the way your system locale is set. If the files you're "\
|
||||
@ -168,10 +161,6 @@ class DupeGuru(QObject):
|
||||
def quitTriggered(self):
|
||||
self.directories_dialog.close()
|
||||
|
||||
def registerTriggered(self):
|
||||
reg = Registration(self.model)
|
||||
reg.ask_for_code()
|
||||
|
||||
def showAboutBoxTriggered(self):
|
||||
self.about_box.show()
|
||||
|
||||
@ -187,15 +176,6 @@ class DupeGuru(QObject):
|
||||
def set_default(self, key, value):
|
||||
self.prefs.set_value(key, value)
|
||||
|
||||
def setup_as_registered(self):
|
||||
self.actionRegister.setVisible(False)
|
||||
self.about_box.registerButton.hide()
|
||||
self.about_box.registeredEmailLabel.setText(self.model.registration_email)
|
||||
|
||||
def show_demo_nag(self, prompt):
|
||||
reg = Registration(self.model)
|
||||
reg.show_demo_nag(prompt)
|
||||
|
||||
def show_message(self, msg):
|
||||
window = QApplication.activeWindow()
|
||||
QMessageBox.information(window, '', msg)
|
||||
|
@ -81,7 +81,6 @@ class DirectoriesDialog(QMainWindow):
|
||||
self.menuView.addAction(self.actionShowResultsWindow)
|
||||
self.menuView.addAction(self.app.actionIgnoreList)
|
||||
self.menuHelp.addAction(self.app.actionShowHelp)
|
||||
self.menuHelp.addAction(self.app.actionRegister)
|
||||
self.menuHelp.addAction(self.app.actionCheckForUpdate)
|
||||
self.menuHelp.addAction(self.app.actionOpenDebugLog)
|
||||
self.menuHelp.addAction(self.app.actionAbout)
|
||||
|
@ -111,7 +111,6 @@ class ResultWindow(QMainWindow):
|
||||
self.menuView.addAction(self.app.actionIgnoreList)
|
||||
self.menuView.addAction(self.app.actionPreferences)
|
||||
self.menuHelp.addAction(self.app.actionShowHelp)
|
||||
self.menuHelp.addAction(self.app.actionRegister)
|
||||
self.menuHelp.addAction(self.app.actionCheckForUpdate)
|
||||
self.menuHelp.addAction(self.app.actionOpenDebugLog)
|
||||
self.menuHelp.addAction(self.app.actionAbout)
|
||||
|
@ -37,7 +37,5 @@ if __name__ == "__main__":
|
||||
from qt.{edition}.app import DupeGuru
|
||||
app.setWindowIcon(QIcon(QPixmap(":/{0}".format(DupeGuru.LOGO_NAME))))
|
||||
dgapp = DupeGuru()
|
||||
if not ISWINDOWS:
|
||||
dgapp.model.registered = True
|
||||
install_excepthook()
|
||||
sys.exit(app.exec_())
|
||||
|
@ -15,17 +15,14 @@ from hscommon.trans import trget
|
||||
tr = trget('qtlib')
|
||||
|
||||
class AboutBox(QDialog):
|
||||
def __init__(self, parent, app, withreg=True):
|
||||
def __init__(self, parent, app):
|
||||
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.MSWindowsFixedSizeDialogHint
|
||||
QDialog.__init__(self, parent, flags)
|
||||
self.app = app
|
||||
self.withreg = withreg
|
||||
self._setupUi()
|
||||
|
||||
self.buttonBox.accepted.connect(self.accept)
|
||||
self.buttonBox.rejected.connect(self.reject)
|
||||
if self.withreg:
|
||||
self.buttonBox.clicked.connect(self.buttonClicked)
|
||||
|
||||
def _setupUi(self):
|
||||
self.setWindowTitle(tr("About {}").format(QCoreApplication.instance().applicationName()))
|
||||
@ -59,23 +56,12 @@ class AboutBox(QDialog):
|
||||
font.setBold(True)
|
||||
self.label.setFont(font)
|
||||
self.verticalLayout.addWidget(self.label)
|
||||
self.registeredEmailLabel = QLabel(self)
|
||||
if self.withreg:
|
||||
self.registeredEmailLabel.setText(tr("UNREGISTERED"))
|
||||
self.verticalLayout.addWidget(self.registeredEmailLabel)
|
||||
self.buttonBox = QDialogButtonBox(self)
|
||||
self.buttonBox.setOrientation(Qt.Horizontal)
|
||||
self.buttonBox.setStandardButtons(QDialogButtonBox.Ok)
|
||||
if self.withreg:
|
||||
self.registerButton = self.buttonBox.addButton(tr("Register"), QDialogButtonBox.ActionRole)
|
||||
self.verticalLayout.addWidget(self.buttonBox)
|
||||
self.horizontalLayout.addLayout(self.verticalLayout)
|
||||
|
||||
#--- Events
|
||||
def buttonClicked(self, button):
|
||||
if button is self.registerButton:
|
||||
self.app.askForRegCode()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
import sys
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -105,58 +97,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Přispět"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Zrušit"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -105,58 +97,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname ist Fairware"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Spenden"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Registrieren"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Geben Sie ihren Schlüssel ein"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Geben Sie den empfangenen Schlüssel und die E-Mail-Adresse als Referenz für "
|
||||
"den Kauf an, wenn Sie für $appname gespendet haben."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Registrierungsschlüssel:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "Registrierte E-Mail:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Spenden"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Abschicken"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr "Acerca de {}"
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr "Versión {}"
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr "Copyright Hardcoded Software 2013"
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr "SIN REGISTRAR"
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr "Registrar"
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr "Informe de error"
|
||||
@ -109,58 +101,10 @@ msgstr "Español"
|
||||
msgid "Clear List"
|
||||
msgstr "Limpiar lista"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname es Fairware"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Probar"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Introducir clave"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr "Comprar"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr "¿Fairware?"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Introduzca su clave de registro"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Escriba la clave que recibió al donar a $appname, así como el correo "
|
||||
"electrónico que usó durante la compra."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Clave de registro"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "Correo electrónico de registro:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Donar"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Enviar"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr "Búsqueda..."
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -105,58 +97,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr "Vider la liste"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname est Fairware"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Essayer"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Enregistrer"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr "Acheter"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Entrez votre clé"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Entrez la clé que vous avez reçue en contribuant à $appname, ainsi que le "
|
||||
"courriel utilisé pour la contribution."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Clé d'enregistrement:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "Courriel référence:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Contribuer"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Soumettre"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr "Recherche..."
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: hy\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr "Հեղ. իրավունքը Hardcoded Software 2013"
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr "ՉԳՐԱՆՑՎԱԾ"
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr "Սխալի զեկույցը"
|
||||
@ -106,58 +98,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr "Մաքրել ցանկը"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname-ը Fairware է"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Փորձել"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Գրել բանալին"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr "Գնել"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware է՞"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Գրեք գրանցման բանալին"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Մուտքագրեք այն բանալին, որը ստացել եք $appname-ին աջակցելիս, քանզի Ձեր էլ. "
|
||||
"հասցեն օգտագործվել է գնման ժամանակ:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Գրանցման բանալին."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "Գրանցված էլ. հասցեն."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Մասնակցել"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Չեղարկել"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Հաստատել"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -105,58 +97,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -105,56 +97,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname is Fairware"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Probeer"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Registreren"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr "Koop"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Voer uw registratiesleutel in"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Registratiesleutel:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "Geregistreerde E-Mail:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Bijdragen"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleren"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Doorgeven"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr "Direitos Autorais Hardcoded Software 2013"
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr "NÃO REGISTRADO"
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr "Relatório de Erro"
|
||||
@ -108,58 +100,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr "Limpar Lista"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname é Fairware"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Testar"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Entrar Chave"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr "Comprar"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Entre sua chave de registro"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Digite a chave que você recebeu ao contribuir com o $appname, assim como o "
|
||||
"e-mail usado para a compra."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Chave de registro:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "e-mail registrado:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Contribuir"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Enviar"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr "Buscar…"
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -4,26 +4,18 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: utf-8\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -92,58 +84,14 @@ msgstr ""
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/recent.py:53
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid "Type the key you received when you contributed to $appname, as well as the e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"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"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr "Copyright Hardcoded Software 2013"
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr "НЕЗАРЕГИСТРИРОВАННАЯ"
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr "Сообщение об ошибке"
|
||||
@ -106,58 +98,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr "Очистить список"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname является Fairware"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Попробовать"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Ввод ключа"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr "Купить"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Введите ваш регистрационный ключ"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Введите ключ, который вы получили при вкладе в $appname, а также адрес "
|
||||
"электронной почты использованный для покупки."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Регистрационный ключ:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "Зарегистрированный e-mail:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Поддержите"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Подтвердить"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"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"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr "Авторське право Hardcoded Software 2013"
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr "НЕЗАРЕЄСТРОВАНИЙ"
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr "Повідомлення про помилки"
|
||||
@ -108,58 +100,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr "Очистити список"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname є Fairware"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "Спробувати"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "Введіть Ваш ключ"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr "Купити"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr "Fairware?"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "Введіть Ваш реєстраційний ключ"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
"Введіть ключ, який Ви отримали зробивши внесок за $appname, а також адресу "
|
||||
"електронної пошти, яка була вказана під час покупки."
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "Реєстраційний ключ:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "Адреса електронної пошти:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "Зробити внесок"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "Скасувати"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "Надіслати"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr "Шукати..."
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -10,26 +10,18 @@ msgstr ""
|
||||
"Language: vi\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -106,56 +98,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
@ -9,26 +9,18 @@ msgstr ""
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: qtlib/about_box.py:31
|
||||
#: qtlib/about_box.py:28
|
||||
msgid "About {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:51
|
||||
#: qtlib/about_box.py:48
|
||||
msgid "Version {}"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:55
|
||||
#: qtlib/about_box.py:52
|
||||
msgid "Copyright Hardcoded Software 2013"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:64
|
||||
msgid "UNREGISTERED"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/about_box.py:70
|
||||
msgid "Register"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/error_report_dialog.py:38
|
||||
msgid "Error Report"
|
||||
msgstr ""
|
||||
@ -105,56 +97,10 @@ msgstr ""
|
||||
msgid "Clear List"
|
||||
msgstr "清空列表"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:35
|
||||
msgid "$appname is Fairware"
|
||||
msgstr "$appname 是一款捐助型软件"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:49
|
||||
msgid "Try"
|
||||
msgstr "捐助"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:52
|
||||
msgid "Enter Key"
|
||||
msgstr "输入密钥"
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:55
|
||||
msgid "Buy"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_demo_dialog.py:57
|
||||
msgid "Fairware?"
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:31
|
||||
msgid "Enter your registration key"
|
||||
msgstr "输入密钥"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:36
|
||||
msgid ""
|
||||
"Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase."
|
||||
msgstr "当您捐助 $appname 后,请输入收到的注册密钥以及电子邮件,这将作为购买凭证。"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:48
|
||||
msgid "Registration key:"
|
||||
msgstr "密钥:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:51
|
||||
msgid "Registered e-mail:"
|
||||
msgstr "电子邮箱:"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:60
|
||||
msgid "Contribute"
|
||||
msgstr "捐助"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:71
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#: qtlib/reg_submit_dialog.py:80
|
||||
msgid "Submit"
|
||||
msgstr "提交"
|
||||
|
||||
#: qtlib/search_edit.py:41
|
||||
msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: qtlib/preferences.py:29
|
||||
msgid "Vietnamese"
|
||||
msgstr ""
|
||||
|
25
qtlib/reg.py
25
qtlib/reg.py
@ -1,25 +0,0 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2009-05-09
|
||||
# Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
#
|
||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
from PyQt4.QtGui import QDialog
|
||||
|
||||
from .reg_submit_dialog import RegSubmitDialog
|
||||
from .reg_demo_dialog import RegDemoDialog
|
||||
|
||||
class Registration:
|
||||
def __init__(self, app):
|
||||
self.app = app
|
||||
|
||||
def ask_for_code(self):
|
||||
dialog = RegSubmitDialog(None, self)
|
||||
return dialog.exec_() == QDialog.Accepted
|
||||
|
||||
def show_demo_nag(self, prompt):
|
||||
dialog = RegDemoDialog(None, self, prompt)
|
||||
dialog.exec_()
|
||||
|
@ -1,80 +0,0 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2009-05-10
|
||||
# Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
#
|
||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
import sys
|
||||
|
||||
from PyQt4.QtCore import Qt, QCoreApplication
|
||||
from PyQt4.QtGui import (QDialog, QApplication, QVBoxLayout, QHBoxLayout, QLabel,
|
||||
QFont, QSpacerItem, QSizePolicy, QPushButton)
|
||||
|
||||
from hscommon.plat import ISLINUX
|
||||
from hscommon.trans import trget
|
||||
|
||||
tr = trget('qtlib')
|
||||
|
||||
class RegDemoDialog(QDialog):
|
||||
def __init__(self, parent, reg, prompt):
|
||||
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
|
||||
QDialog.__init__(self, parent, flags)
|
||||
self.reg = reg
|
||||
self._setupUi()
|
||||
self.descLabel.setText(prompt)
|
||||
|
||||
self.enterCodeButton.clicked.connect(self.enterCodeClicked)
|
||||
self.buyButton.clicked.connect(self.buyClicked)
|
||||
self.tryButton.clicked.connect(self.accept)
|
||||
self.moreInfoButton.clicked.connect(self.moreInfoClicked)
|
||||
|
||||
def _setupUi(self):
|
||||
appname = QCoreApplication.instance().applicationName()
|
||||
title = tr("$appname is Fairware")
|
||||
title = title.replace('$appname', appname)
|
||||
self.setWindowTitle(title)
|
||||
# Workaround for bug at http://bugreports.qt.nokia.com/browse/QTBUG-8212
|
||||
dlg_height = 370 if ISLINUX else 240
|
||||
self.resize(400, dlg_height)
|
||||
self.verticalLayout = QVBoxLayout(self)
|
||||
self.descLabel = QLabel(self)
|
||||
self.descLabel.setWordWrap(True)
|
||||
self.verticalLayout.addWidget(self.descLabel)
|
||||
spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
|
||||
self.verticalLayout.addItem(spacerItem)
|
||||
self.horizontalLayout = QHBoxLayout()
|
||||
self.tryButton = QPushButton(self)
|
||||
self.tryButton.setText(tr("Try"))
|
||||
self.horizontalLayout.addWidget(self.tryButton)
|
||||
self.enterCodeButton = QPushButton(self)
|
||||
self.enterCodeButton.setText(tr("Enter Key"))
|
||||
self.horizontalLayout.addWidget(self.enterCodeButton)
|
||||
self.buyButton = QPushButton(self)
|
||||
self.buyButton.setText(tr("Buy"))
|
||||
self.horizontalLayout.addWidget(self.buyButton)
|
||||
self.moreInfoButton = QPushButton(tr("Fairware?"))
|
||||
self.horizontalLayout.addWidget(self.moreInfoButton)
|
||||
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||
|
||||
#--- Events
|
||||
def enterCodeClicked(self):
|
||||
if self.reg.ask_for_code():
|
||||
self.accept()
|
||||
|
||||
def buyClicked(self):
|
||||
self.reg.app.buy()
|
||||
|
||||
def moreInfoClicked(self):
|
||||
self.reg.app.about_fairware()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication([])
|
||||
app.unpaid_hours = 42.4
|
||||
class FakeReg:
|
||||
app = app
|
||||
dialog = RegDemoDialog(None, FakeReg(), "foo bar baz")
|
||||
dialog.show()
|
||||
sys.exit(app.exec_())
|
@ -1,102 +0,0 @@
|
||||
# Created By: Virgil Dupras
|
||||
# Created On: 2009-05-09
|
||||
# Copyright 2013 Hardcoded Software (http://www.hardcoded.net)
|
||||
#
|
||||
# This software is licensed under the "BSD" License as described in the "LICENSE" file,
|
||||
# which should be included with this package. The terms are also available at
|
||||
# http://www.hardcoded.net/licenses/bsd_license
|
||||
|
||||
import sys
|
||||
|
||||
from PyQt4.QtCore import Qt, QCoreApplication
|
||||
from PyQt4.QtGui import (QDialog, QApplication, QVBoxLayout, QHBoxLayout, QLabel, QFormLayout,
|
||||
QLayout, QLineEdit, QPushButton, QSpacerItem, QSizePolicy)
|
||||
|
||||
from hscommon.trans import trget
|
||||
|
||||
tr = trget('qtlib')
|
||||
|
||||
class RegSubmitDialog(QDialog):
|
||||
def __init__(self, parent, reg):
|
||||
flags = Qt.CustomizeWindowHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint
|
||||
QDialog.__init__(self, parent, flags)
|
||||
self._setupUi()
|
||||
self.reg = reg
|
||||
|
||||
self.submitButton.clicked.connect(self.submitClicked)
|
||||
self.contributeButton.clicked.connect(self.contributeClicked)
|
||||
self.cancelButton.clicked.connect(self.reject)
|
||||
|
||||
def _setupUi(self):
|
||||
self.setWindowTitle(tr("Enter your registration key"))
|
||||
self.resize(365, 126)
|
||||
self.verticalLayout = QVBoxLayout(self)
|
||||
self.promptLabel = QLabel(self)
|
||||
appname = str(QCoreApplication.instance().applicationName())
|
||||
prompt = tr("Type the key you received when you contributed to $appname, as well as the "
|
||||
"e-mail used as a reference for the purchase.").replace('$appname', appname)
|
||||
self.promptLabel.setText(prompt)
|
||||
self.promptLabel.setAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignTop)
|
||||
self.promptLabel.setWordWrap(True)
|
||||
self.verticalLayout.addWidget(self.promptLabel)
|
||||
self.formLayout = QFormLayout()
|
||||
self.formLayout.setSizeConstraint(QLayout.SetNoConstraint)
|
||||
self.formLayout.setFieldGrowthPolicy(QFormLayout.ExpandingFieldsGrow)
|
||||
self.formLayout.setLabelAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter)
|
||||
self.formLayout.setFormAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignTop)
|
||||
self.label2 = QLabel(self)
|
||||
self.label2.setText(tr("Registration key:"))
|
||||
self.formLayout.setWidget(0, QFormLayout.LabelRole, self.label2)
|
||||
self.label3 = QLabel(self)
|
||||
self.label3.setText(tr("Registered e-mail:"))
|
||||
self.formLayout.setWidget(1, QFormLayout.LabelRole, self.label3)
|
||||
self.codeEdit = QLineEdit(self)
|
||||
self.formLayout.setWidget(0, QFormLayout.FieldRole, self.codeEdit)
|
||||
self.emailEdit = QLineEdit(self)
|
||||
self.formLayout.setWidget(1, QFormLayout.FieldRole, self.emailEdit)
|
||||
self.verticalLayout.addLayout(self.formLayout)
|
||||
self.horizontalLayout = QHBoxLayout()
|
||||
self.contributeButton = QPushButton(self)
|
||||
self.contributeButton.setText(tr("Contribute"))
|
||||
self.contributeButton.setAutoDefault(False)
|
||||
self.horizontalLayout.addWidget(self.contributeButton)
|
||||
spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
|
||||
self.horizontalLayout.addItem(spacerItem)
|
||||
self.cancelButton = QPushButton(self)
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.cancelButton.sizePolicy().hasHeightForWidth())
|
||||
self.cancelButton.setSizePolicy(sizePolicy)
|
||||
self.cancelButton.setText(tr("Cancel"))
|
||||
self.cancelButton.setAutoDefault(False)
|
||||
self.horizontalLayout.addWidget(self.cancelButton)
|
||||
self.submitButton = QPushButton(self)
|
||||
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.submitButton.sizePolicy().hasHeightForWidth())
|
||||
self.submitButton.setSizePolicy(sizePolicy)
|
||||
self.submitButton.setText(tr("Submit"))
|
||||
self.submitButton.setAutoDefault(False)
|
||||
self.submitButton.setDefault(True)
|
||||
self.horizontalLayout.addWidget(self.submitButton)
|
||||
self.verticalLayout.addLayout(self.horizontalLayout)
|
||||
|
||||
#--- Events
|
||||
def contributeClicked(self):
|
||||
self.reg.app.contribute()
|
||||
|
||||
def submitClicked(self):
|
||||
code = self.codeEdit.text()
|
||||
email = self.emailEdit.text()
|
||||
if self.reg.app.set_registration(code, email, False):
|
||||
self.accept()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = QApplication([])
|
||||
validate = lambda *args: True
|
||||
dialog = RegSubmitDialog(None, validate)
|
||||
dialog.show()
|
||||
sys.exit(app.exec_())
|
Loading…
x
Reference in New Issue
Block a user