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:
Virgil Dupras 2013-12-07 10:19:31 -05:00
commit 418acf6e5e
80 changed files with 475 additions and 3329 deletions

View File

@ -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]

View File

@ -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

View File

@ -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];

View File

@ -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";

View File

@ -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')

View File

@ -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',

View File

@ -14,8 +14,6 @@ http://www.hardcoded.net/licenses/bsd_license
NSTextField *titleTextField;
NSTextField *versionTextField;
NSTextField *copyrightTextField;
NSTextField *registeredTextField;
NSButton *registerButton;
PyBaseApp *app;
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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";

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -379,23 +379,14 @@ 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'),
('about.py', 'HSAboutBox_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:
srcpath = op.join('cocoalib', 'ui', srcname)
dstpath = op.join(dest, dstname)

View File

@ -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?\"."

View File

@ -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 ""

View File

@ -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?\"."

View File

@ -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."

View File

@ -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 ""

View File

@ -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 է՞\":"

View File

@ -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?\"."

View File

@ -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."

View File

@ -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?\"."

View File

@ -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?\"."

View File

@ -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?\"."

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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')

View File

@ -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 ""

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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)

View File

@ -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)

View File

@ -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)

View File

@ -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_())

View File

@ -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

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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 ""

View File

@ -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_()

View File

@ -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_())

View File

@ -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_())