diff --git a/src/calibre/debug.py b/src/calibre/debug.py index f9ee3b0f44..1b913318e3 100644 --- a/src/calibre/debug.py +++ b/src/calibre/debug.py @@ -168,7 +168,9 @@ def main(args=sys.argv): sys.argv = args[:1] base = os.path.dirname(os.path.abspath(opts.exec_file)) sys.path.insert(0, base) - execfile(opts.exec_file) + g = globals() + g['__name__'] = '__main__' + execfile(opts.exec_file, g) elif opts.debug_device_driver: debug_device_driver() elif opts.migrate: diff --git a/src/calibre/gui2/wizard/__init__.py b/src/calibre/gui2/wizard/__init__.py index 68f2777daa..13222861ef 100644 --- a/src/calibre/gui2/wizard/__init__.py +++ b/src/calibre/gui2/wizard/__init__.py @@ -33,8 +33,8 @@ class Device(object): output_profile = 'default' output_format = 'EPUB' - name = _('Default') - manufacturer = _('Default') + name = 'Default' + manufacturer = 'Default' id = 'default' @classmethod @@ -146,8 +146,9 @@ def get_manufacturers(): mans = set([]) for x in get_devices(): mans.add(x.manufacturer) - mans.remove(_('Default')) - return [_('Default')] + sorted(mans) + if 'Default' in mans: + mans.remove('Default') + return ['Default'] + sorted(mans) def get_devices_of(manufacturer): ans = [d for d in get_devices() if d.manufacturer == manufacturer] @@ -464,6 +465,36 @@ class LibraryPage(QWizardPage, LibraryUI): self.setupUi(self) self.registerField('library_location', self.location) self.connect(self.button_change, SIGNAL('clicked()'), self.change) + self.init_languages() + self.connect(self.language, SIGNAL('currentIndexChanged(int)'), + self.change_language) + + def init_languages(self): + self.language.blockSignals(True) + self.language.clear() + from calibre.utils.localization import available_translations, \ + get_language, get_lang + lang = get_lang() + if lang is None or lang not in available_translations(): + lang = 'en' + self.language.addItem(get_language(lang), QVariant(lang)) + items = [(l, get_language(l)) for l in available_translations() \ + if l != lang] + if lang != 'en': + items.append(('en', get_language('en'))) + items.sort(cmp=lambda x, y: cmp(x[1], y[1])) + for item in items: + self.language.addItem(item[1], QVariant(item[0])) + self.language.blockSignals(False) + + def change_language(self, idx): + prefs['language'] = str(self.language.itemData(self.language.currentIndex()).toString()) + import __builtin__ + __builtin__.__dict__['_'] = lambda(x): x + from calibre.utils.localization import set_translators + set_translators() + self.emit(SIGNAL('retranslate()')) + self.init_languages() def change(self): dir = choose_dir(self, 'database location dialog', @@ -548,6 +579,8 @@ class Wizard(QWizard): self.setPixmap(self.BackgroundPixmap, QPixmap(I('wizard.svg'))) self.device_page = DevicePage() self.library_page = LibraryPage() + self.connect(self.library_page, SIGNAL('retranslate()'), + self.retranslate) self.finish_page = FinishPage() bt = unicode(self.buttonText(self.FinishButton)).replace('&', '') t = unicode(self.finish_page.finish_text.text()) @@ -572,6 +605,10 @@ class Wizard(QWizard): nw = min(580, nw) self.resize(nw, nh) + def retranslate(self): + for pid in self.pageIds(): + page = self.page(pid) + page.retranslateUi(page) def accept(self): pages = map(self.page, self.visitedPages()) diff --git a/src/calibre/gui2/wizard/library.ui b/src/calibre/gui2/wizard/library.ui index 756f7ab851..0d43f4ccee 100644 --- a/src/calibre/gui2/wizard/library.ui +++ b/src/calibre/gui2/wizard/library.ui @@ -20,7 +20,20 @@ The one stop solution to all your e-book needs. - + + + + Choose your &language: + + + language + + + + + + + Choose a location for your books. When you add books to calibre, they will be copied here: @@ -30,21 +43,31 @@ - + true - + &Change - + + + + If you have an existing calibre library, it will be copied to the new location. If a calibre library already exists at the new location, calibre will switch to using it. + + + true + + + + Qt::Vertical @@ -57,15 +80,18 @@ - - - - If you have an existing calibre library, it will be copied to the new location. If a calibre library already exists at the new location, calibre will switch to using it. + + + + Qt::Vertical - - true + + + 20 + 40 + - +