示例#1
0
def languageDescription(translation):

    translator = QTranslator()
    translator.load(translation)

    locale = QLocale(translator.language())
    return QCoreApplication.translate("main", "{0} ({1})").format(
        locale.languageToString(locale.language()),
        locale.nativeLanguageName())
示例#2
0
class Application(QApplication):
    known_lang = {
        'C': QApplication.translate('app', 'English'),
        'fr': QApplication.translate('app', 'French')
    }

    def __init__(self, argv):
        params = parse(sys.argv[1:])[0]
        super().__init__(argv)
        self.setOrganizationName('SBA')
        self.setApplicationName('QtImgren')
        if params.lang is None:
            settings = QSettings()
            lang = settings.value('MainWindow/lang')
            loc = QLocale() if lang is None else QLocale(lang)
        elif params.lang == 'native':
            loc = QLocale(None)
        else:
            loc = QLocale(params.lang)
        self.qt_trans = QTranslator()
        self.qt_trans.load(
            loc, 'qtbase', '_',
            QLibraryInfo.location(QLibraryInfo.TranslationsPath))
        self.installTranslator(self.qt_trans)
        self.translator = QTranslator()
        self.translator.load(loc, '', '', ':/lang', '')
        self.installTranslator(self.translator)
        self.setWindowIcon(QIcon(':/icon/app.ico'))
        self.main_window = MainWindow()

    def set_language(self, lang):
        self.removeTranslator(self.translator)
        self.removeTranslator(self.qt_trans)
        loc = QLocale(lang)
        self.qt_trans.load(
            loc, 'qt', '_',
            QLibraryInfo.location(QLibraryInfo.TranslationsPath))
        self.installTranslator(self.qt_trans)
        self.translator.load(loc, '', '', ':/lang', '')
        self.installTranslator(self.translator)

    def get_language(self):
        lang = self.translator.language()
        return 'C' if (lang is None or lang == '') else lang

    def get_languages(self):
        yield 'C', self.translate('app', 'English')
        for lang in QDir(':/lang').entryList():
            if lang in self.known_lang:
                name = self.translate('app', self.known_lang[lang])
            else:
                loc = QLocale(lang)
                name = loc.nativeLanguageName()
            yield lang, name