def setupLanguageMenu(self): self.languages = QDir(":/languages").entryList() if self.current_language is None: self.current_language = QLocale.system().name( ) # Retrieve Current Locale from the operating system. log.debug("Detected user's locale as %s" % self.current_language) for language in self.languages: translator = QTranslator( ) # Create a translator to translate Language Display Text. translator.load(":/languages/%s" % language) language_display_text = translator.translate( "Translation", "Language Display Text") languageAction = QAction(self) languageAction.setCheckable(True) languageAction.setText(language_display_text) languageAction.setData(language) self.menuLanguage.addAction(languageAction) self.langActionGroup.addAction(languageAction) if self.current_language == str(language).strip("tr_").rstrip( ".qm"): languageAction.setChecked(True)
def test_UI_raw_text_and_translations(self): gui = self.window.getGui() settingsText = gui.dock.pushButtonOptions.text() self.assertEqual(settingsText, "Settings") for lang, expected_translation in zip(["de", "pl"], ["Einrichten", "Ustawienia"]): path = os.path.join("i18n", "timemanager_{}.qm".format(lang)) translator = QTranslator() result = translator.load(path) translation = translator.translate(gui.dock.objectName(), settingsText) self.assertEqual(translation, expected_translation)
def test_UI_raw_text_and_translations(self): gui = self.window.getGui() settingsText = gui.dock.pushButtonOptions.text() self.assertEqual(settingsText,"Settings") for lang,expected_translation in zip(["de","pl"],["Einrichten","Ustawienia"]): path = os.path.join("i18n","timemanager_{}.qm".format(lang)) translator = QTranslator() result = translator.load(path) translation = translator.translate(gui.dock.objectName(),settingsText) self.assertEqual(translation, expected_translation)
def setupLanguageMenu(self): self.languages = QDir(":/languages").entryList() if self.current_language is None: self.current_language = QLocale.system().name() # Retrieve Current Locale from the operating system. log.debug("Detected user's locale as %s" % self.current_language) for language in self.languages: translator = QTranslator() # Create a translator to translate Language Display Text. translator.load(":/languages/%s" % language) language_display_text = translator.translate("Translation", "Language Display Text") languageAction = QAction(self) languageAction.setCheckable(True) languageAction.setText(language_display_text) languageAction.setData(language) self.menuLanguage.addAction(languageAction) self.langActionGroup.addAction(languageAction)
def __populateLanguageCombo(self): """ Private method to initialize the language combobox of the Interface configuration page. """ self.languageComboBox.clear() fnlist = glob.glob("eric4_*.qm") + \ glob.glob(os.path.join(getConfig('ericTranslationsDir'), "eric4_*.qm")) + \ glob.glob(os.path.join(Utilities.getConfigDir(), "eric4_*.qm")) locales = {} for fn in fnlist: locale = os.path.basename(fn)[6:-3] if not locales.has_key(locale): translator = QTranslator() translator.load(fn) locales[locale] = \ translator.translate("InterfacePage", "English", "Translate this with your language") + \ QString(" (%1)").arg(locale) localeList = locales.keys() localeList.sort() try: uiLanguage = unicode(Preferences.getUILanguage()) if uiLanguage == "None": currentIndex = 0 elif uiLanguage == "System": currentIndex = 1 else: currentIndex = localeList.index(uiLanguage) + 2 except ValueError: currentIndex = 0 self.languageComboBox.clear() self.languageComboBox.addItem("English (default)", QVariant("None")) self.languageComboBox.addItem(self.trUtf8('System'), QVariant("System")) for locale in localeList: self.languageComboBox.addItem(locales[locale], QVariant(locale)) self.languageComboBox.setCurrentIndex(currentIndex)
class AboutWidget(QWidget): """ Common About Dialog for the Freeseer Project. This should be used for the about dialog when including one in GUIs. Layout: Logo | About Infos | Buttons """ def __init__(self, parent=None): QWidget.__init__(self, parent) self.current_language = "en_US" self.uiTranslator = QTranslator() self.uiTranslator.load(":/languages/tr_en_US.qm") self.fontSize = self.font().pixelSize() self.fontUnit = "px" if self.fontSize == -1: # Font is set as points, not pixels. self.fontUnit = "pt" self.fontSize = self.font().pointSize() icon = QIcon() self.logoPixmap = QPixmap(_fromUtf8(":/freeseer/logo.png")) icon.addPixmap(self.logoPixmap, QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.mainLayout = QGridLayout() self.setLayout(self.mainLayout) # Logo self.logo = QLabel("Logo") # To offset the logo so that it's to the right of the title self.logo.setStyleSheet("QLabel {{ margin-left: {} {} }}".format( 90 + (self.fontSize * 2.5), self.fontUnit)) self.logo.setPixmap(self.logoPixmap.scaledToHeight(80)) self.mainLayout.addWidget(self.logo, 0, 0, Qt.AlignTop) # Info self.aboutInfo = QLabel("About Info", openExternalLinks=True) self.aboutInfo.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.aboutInfo.setWordWrap(True) self.mainLayout.addWidget(self.aboutInfo, 0, 0) # Buttons self.buttonsLayout = QHBoxLayout() self.issueButton = QPushButton("Report an issue") self.docsButton = QPushButton("Freeseer documentation") self.contactButton = QPushButton("Contact us") self.buttonsLayout.insertWidget(0, self.docsButton) self.buttonsLayout.insertWidget(1, self.issueButton) self.buttonsLayout.insertWidget(2, self.contactButton) self.mainLayout.addLayout(self.buttonsLayout, 2, 0) self.connect(self.docsButton, SIGNAL('clicked()'), self.openDocsUrl) self.connect(self.issueButton, SIGNAL('clicked()'), self.openNewIssueUrl) self.connect(self.contactButton, SIGNAL('clicked()'), self.openContactUrl) self.retranslate() def retranslate(self, language=None): if language is not None: self.current_language = language self.uiTranslator.load(":/languages/tr_%s.qm" % self.current_language) # # Main Text # self.descriptionString = self.uiTranslator.translate( "AboutDialog", "Freeseer is a video capture utility capable of capturing presentations. It captures " "video sources such as usb, firewire, or local desktop along with audio and mixes them " "together to produce a video.") self.copyrightString = self.uiTranslator.translate( "AboutDialog", 'Copyright (C) 2014 The Free and ' 'Open Source Software Learning Centre') self.licenseTextString = self.uiTranslator.translate( "AboutDialog", "Freeseer is licensed under the GPL " "version 3. This software is provided 'as-is',without any express or implied warranty. In " "no event will the authors be held liable for any damages arising from the use of this software." ) self.aboutInfoString = u'<h1>' + NAME.capitalize() + u'</h1>' + \ u'<br><b>' + self.uiTranslator.translate("AboutDialog", "Version") + \ ": " + __version__ + u'</b>' + \ u'<p>' + self.descriptionString + u'</p>' + \ u'<p>' + self.copyrightString + u'</p>' + \ u'<p><a href="' + URL + u'">' + URL + u'</a></p>' \ u'<p>' + self.licenseTextString + u'</p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Record button graphics by") + \ u': <a href="' + RECORD_BUTTON_LINK + u'">' + RECORD_BUTTON_ARTIST + u'</a></p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Headphones graphics by") + \ u': <a href="' + HEADPHONES_LINK + u'">' + HEADPHONES_ARTIST + u'</a></p><br>' self.aboutInfo.setText(self.aboutInfoString) # --- End Main Text def openDocsUrl(self): """Opens a link to the Freeseer online documentation""" url = QUrl("http://freeseer.readthedocs.org") QDesktopServices.openUrl(url) def openNewIssueUrl(self): """Opens a link to the Freeseer new issue page""" url = QUrl("https://github.com/Freeseer/freeseer/issues/new") QDesktopServices.openUrl(url) def openContactUrl(self): """Opens a link to Freeseer's contact information""" url = QUrl("http://freeseer.readthedocs.org/en/latest/contact.html") QDesktopServices.openUrl(url)
class AboutWidget(QWidgetWithDpi): """ Common About Dialog for the Freeseer Project. This should be used for the about dialog when including one in GUIs. Layout: Logo | About Infos | Buttons """ def __init__(self, parent=None): super(AboutWidget, self).__init__(parent) self.current_language = "en_US" self.uiTranslator = QTranslator() self.uiTranslator.load(":/languages/tr_en_US.qm") self.fontSize = self.font().pixelSize() self.fontUnit = "px" if self.fontSize == -1: # Font is set as points, not pixels. self.fontUnit = "pt" self.fontSize = self.font().pointSize() icon = QIcon() self.logoPixmap = QPixmap(_fromUtf8(":/freeseer/logo.png")) icon.addPixmap(self.logoPixmap, QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.mainLayout = QGridLayout() self.setLayout(self.mainLayout) # Logo self.logo = QLabel("Logo") # To offset the logo so that it's to the right of the title self.logo.setStyleSheet("QLabel {{ margin-left: {} {} }}" .format(self.set_width_with_dpi(90) + (self.fontSize * 2.5), self.fontUnit)) self.logo.setPixmap(self.logoPixmap.scaledToHeight(self.set_height_with_dpi(80))) self.mainLayout.addWidget(self.logo, 0, 0, Qt.AlignTop) # Info self.aboutInfo = QLabel("About Info", openExternalLinks=True) self.aboutInfo.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) self.aboutInfo.setWordWrap(True) self.mainLayout.addWidget(self.aboutInfo, 0, 0) # Buttons self.buttonsLayout = QHBoxLayout() self.issueButton = QPushButton("Report an issue") self.docsButton = QPushButton("Freeseer documentation") self.contactButton = QPushButton("Contact us") self.buttonsLayout.insertWidget(0, self.docsButton) self.buttonsLayout.insertWidget(1, self.issueButton) self.buttonsLayout.insertWidget(2, self.contactButton) self.mainLayout.addLayout(self.buttonsLayout, 2, 0) self.connect(self.docsButton, SIGNAL('clicked()'), self.openDocsUrl) self.connect(self.issueButton, SIGNAL('clicked()'), self.openNewIssueUrl) self.connect(self.contactButton, SIGNAL('clicked()'), self.openContactUrl) self.retranslate() def retranslate(self, language=None): if language is not None: self.current_language = language self.uiTranslator.load(":/languages/tr_%s.qm" % self.current_language) # # Main Text # self.descriptionString = self.uiTranslator.translate("AboutDialog", "Freeseer is a video capture utility capable of capturing presentations. It captures " "video sources such as usb, firewire, or local desktop along with audio and mixes them " "together to produce a video.") self.copyrightString = self.uiTranslator.translate("AboutDialog", 'Copyright (C) 2014 The Free and ' 'Open Source Software Learning Centre') self.licenseTextString = self.uiTranslator.translate("AboutDialog", "Freeseer is licensed under the GPL " "version 3. This software is provided 'as-is',without any express or implied warranty. In " "no event will the authors be held liable for any damages arising from the use of this software.") self.aboutInfoString = u'<h1>' + NAME.capitalize() + u'</h1>' + \ u'<br><b>' + self.uiTranslator.translate("AboutDialog", "Version") + \ ": " + __version__ + u'</b>' + \ u'<p>' + self.descriptionString + u'</p>' + \ u'<p>' + self.copyrightString + u'</p>' + \ u'<p><a href="' + URL + u'">' + URL + u'</a></p>' \ u'<p>' + self.licenseTextString + u'</p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Record button graphics by") + \ u': <a href="' + RECORD_BUTTON_LINK + u'">' + RECORD_BUTTON_ARTIST + u'</a></p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Headphones graphics by") + \ u': <a href="' + HEADPHONES_LINK + u'">' + HEADPHONES_ARTIST + u'</a></p><br>' self.aboutInfo.setText(self.aboutInfoString) # --- End Main Text def openDocsUrl(self): """Opens a link to the Freeseer online documentation""" url = QUrl("http://freeseer.readthedocs.org") QDesktopServices.openUrl(url) def openNewIssueUrl(self): """Opens a link to the Freeseer new issue page""" url = QUrl("https://github.com/Freeseer/freeseer/issues/new") QDesktopServices.openUrl(url) def openContactUrl(self): """Opens a link to Freeseer's contact information""" url = QUrl("http://freeseer.readthedocs.org/en/latest/contact.html") QDesktopServices.openUrl(url)
class AboutDialog(QDialog): """ Common About Dialog for the Freeseer Project. This should be used for the about dialog when including one in GUIs. Grid Layout: Logo | About Infos ------|------------- | Close Button """ def __init__(self, parent=None): QWidget.__init__(self, parent) self.current_language = "en_US" self.uiTranslator = QTranslator() self.uiTranslator.load(":/languages/tr_en_US.qm") icon = QIcon() icon.addPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png")), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.layout = QGridLayout() self.setLayout(self.layout) # Left Top corner of grid, Logo self.logo = QLabel("Logo") self.logo.setPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png"))) self.layout.addWidget(self.logo, 0, 0) # Right Top corner of grid, Infos self.aboutInfo = QLabel("About Info", openExternalLinks=True) self.aboutInfo.setWordWrap(True) self.layout.addWidget(self.aboutInfo, 0, 1) # Right Bottom corner of grid, Close Button self.buttonBox = QDialogButtonBox() self.closeButton = self.buttonBox.addButton("Close", QDialogButtonBox.AcceptRole) self.layout.addWidget(self.buttonBox, 1, 1) self.connect(self.closeButton, SIGNAL("clicked()"), self.close) self.retranslate() def retranslate(self, language=None): if language is not None: self.current_language = language self.uiTranslator.load(":/languages/tr_%s.qm" % self.current_language) self.setWindowTitle(self.uiTranslator.translate("AboutDialog", "Freeseer About")) self.closeButton.setText(self.uiTranslator.translate("AboutDialog", "Close")) # # Main Text # self.descriptionString = self.uiTranslator.translate("AboutDialog", "Freeseer is a video capture utility capable of capturing presentations. It captures video " "sources such as usb, firewire, or local desktop along with audio and mixes them together to " "produce a video.") self.copyrightString = self.uiTranslator.translate("AboutDialog", 'Copyright (C) 2011-2013 The Free and Open Source Software Learning Centre') self.licenseTextString = self.uiTranslator.translate("AboutDialog", "Freeseer is licensed under the GPL version 3. This software is provided 'as-is'," "without any express or implied warranty. In no event will the authors be held liable for any " "damages arising from the use of this software.") self.aboutInfoString = u'<h1>' + NAME + u'</h1>' + \ u'<br><b>' + self.uiTranslator.translate("AboutDialog", "Version") + ":" + __version__ + u'</b>' + \ u'<p>' + self.descriptionString + u'</p>' + \ u'<p>' + self.copyrightString + u'</p>' + \ u'<p><a href="' + URL + u'">' + URL + u'</a></p>' \ u'<p>' + self.licenseTextString + u'</p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Record button graphics by") + \ u': <a href="' + RECORD_BUTTON_LINK + u'">' + RECORD_BUTTON_ARTIST + u'</a></p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Headphones graphics by") + \ u': <a href="' + HEADPHONES_LINK + u'">' + HEADPHONES_ARTIST + u'</a></p>' self.aboutInfo.setText(self.aboutInfoString)
class AboutDialog(QDialog): """ Common About Dialog for the Freeseer Project. This should be used for the about dialog when including one in GUIs. Grid Layout: Logo | About Infos ------|------------- | Close Button """ def __init__(self, parent=None): QWidget.__init__(self, parent) self.current_language = "en_US" self.uiTranslator = QTranslator() self.uiTranslator.load(":/languages/tr_en_US.qm") icon = QIcon() icon.addPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png")), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.layout = QGridLayout() self.setLayout(self.layout) # Left Top corner of grid, Logo self.logo = QLabel("Logo") self.logo.setPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png"))) self.layout.addWidget(self.logo, 0, 0) # Right Top corner of grid, Infos self.aboutInfo = QLabel("About Info", openExternalLinks=True) self.aboutInfo.setWordWrap(True) self.layout.addWidget(self.aboutInfo, 0, 1) # Right Bottom corner of grid, Close Button self.buttonBox = QDialogButtonBox() self.closeButton = self.buttonBox.addButton( "Close", QDialogButtonBox.AcceptRole) self.layout.addWidget(self.buttonBox, 1, 1) self.connect(self.closeButton, SIGNAL("clicked()"), self.close) self.retranslate() def retranslate(self, language=None): if language is not None: self.current_language = language self.uiTranslator.load(":/languages/tr_%s.qm" % self.current_language) self.setWindowTitle( self.uiTranslator.translate("AboutDialog", "Freeseer About")) self.closeButton.setText( self.uiTranslator.translate("AboutDialog", "Close")) # # Main Text # self.descriptionString = self.uiTranslator.translate( "AboutDialog", "Freeseer is a video capture utility capable of capturing presentations. It captures video " "sources such as usb, firewire, or local desktop along with audio and mixes them together to " "produce a video.") self.copyrightString = self.uiTranslator.translate( "AboutDialog", 'Copyright (C) 2011-2013 The Free and Open Source Software Learning Centre' ) self.licenseTextString = self.uiTranslator.translate( "AboutDialog", "Freeseer is licensed under the GPL version 3. This software is provided 'as-is'," "without any express or implied warranty. In no event will the authors be held liable for any " "damages arising from the use of this software.") self.aboutInfoString = u'<h1>' + NAME + u'</h1>' + \ u'<br><b>' + self.uiTranslator.translate("AboutDialog", "Version") + ":" + __version__ + u'</b>' + \ u'<p>' + self.descriptionString + u'</p>' + \ u'<p>' + self.copyrightString + u'</p>' + \ u'<p><a href="' + URL + u'">' + URL + u'</a></p>' \ u'<p>' + self.licenseTextString + u'</p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Record button graphics by") + \ u': <a href="' + RECORD_BUTTON_LINK + u'">' + RECORD_BUTTON_ARTIST + u'</a></p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Headphones graphics by") + \ u': <a href="' + HEADPHONES_LINK + u'">' + HEADPHONES_ARTIST + u'</a></p>' self.aboutInfo.setText(self.aboutInfoString)
class AboutWidget(QWidget): """ Common About Dialog for the Freeseer Project. This should be used for the about dialog when including one in GUIs. Layout: Logo | About Infos | Buttons """ def __init__(self, parent=None): QWidget.__init__(self, parent) self.setMinimumSize(100, 400) self.current_language = "en_US" self.uiTranslator = QTranslator() self.uiTranslator.load(":/languages/tr_en_US.qm") icon = QIcon() icon.addPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png")), QIcon.Normal, QIcon.Off) self.setWindowIcon(icon) self.mainlayout = QGridLayout() self.setLayout(self.mainlayout) # Left top side of grid, Logo self.logo = QLabel("Logo") self.logo.setPixmap(QPixmap(_fromUtf8(":/freeseer/logo.png"))) self.mainlayout.addWidget(self.logo, 0, 0) # Right top side of grid, Infos self.aboutInfo = QLabel("About Info", openExternalLinks=True) self.aboutInfo.setWordWrap(True) self.mainlayout.addWidget(self.aboutInfo, 0, 1) # Right bottom side of grid, Buttons self.buttonsLayout = QHBoxLayout() self.issueButton = QPushButton("Report an issue") self.docsButton = QPushButton("Freeseer documentation") self.contactButton = QPushButton("Contact us") self.buttonsLayout.insertWidget(0, self.docsButton) self.buttonsLayout.insertWidget(1, self.issueButton) self.buttonsLayout.insertWidget(2, self.contactButton) self.mainlayout.addLayout(self.buttonsLayout, 2, 1) self.connect(self.docsButton, SIGNAL('clicked()'), self.openDocsUrl) self.connect(self.issueButton, SIGNAL('clicked()'), self.openNewIssueUrl) self.connect(self.contactButton, SIGNAL('clicked()'), self.openContactUrl) self.retranslate() def retranslate(self, language=None): if language is not None: self.current_language = language self.uiTranslator.load(":/languages/tr_%s.qm" % self.current_language) # # Main Text # self.descriptionString = self.uiTranslator.translate("AboutDialog", "Freeseer is a video capture utility capable of capturing presentations. It captures " "video sources such as usb, firewire, or local desktop along with audio and mixes them " "together to produce a video.") self.copyrightString = self.uiTranslator.translate("AboutDialog", 'Copyright (C) 2014 The Free and ' 'Open Source Software Learning Centre') self.licenseTextString = self.uiTranslator.translate("AboutDialog", "Freeseer is licensed under the GPL " "version 3. This software is provided 'as-is',without any express or implied warranty. In " "no event will the authors be held liable for any damages arising from the use of this software.") self.aboutInfoString = u'<h1>' + NAME + u'</h1>' + \ u'<br><b>' + self.uiTranslator.translate("AboutDialog", "Version") + ": " + __version__ + u'</b>' + \ u'<p>' + self.descriptionString + u'</p>' + \ u'<p>' + self.copyrightString + u'</p>' + \ u'<p><a href="' + URL + u'">' + URL + u'</a></p>' \ u'<p>' + self.licenseTextString + u'</p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Record button graphics by") + \ u': <a href="' + RECORD_BUTTON_LINK + u'">' + RECORD_BUTTON_ARTIST + u'</a></p>' \ u'<p>' + self.uiTranslator.translate("AboutDialog", "Headphones graphics by") + \ u': <a href="' + HEADPHONES_LINK + u'">' + HEADPHONES_ARTIST + u'</a></p><br>' self.aboutInfo.setText(self.aboutInfoString) # --- End Main Text def openDocsUrl(self): """Opens a link to the Freeseer online documentation""" url = QUrl("http://freeseer.readthedocs.org") QDesktopServices.openUrl(url) def openNewIssueUrl(self): """Opens a link to the Freeseer new issue page""" url = QUrl("https://github.com/Freeseer/freeseer/issues/new") QDesktopServices.openUrl(url) def openContactUrl(self): """Opens a link to Freeseer's contact information""" url = QUrl("http://freeseer.readthedocs.org/en/latest/contact.html") QDesktopServices.openUrl(url)