1
mirror of https://invent.kde.org/network/falkon.git synced 2024-09-21 09:42:10 +02:00

Support loading translations for Python extensions

This commit is contained in:
David Rosca 2018-02-27 12:17:22 +01:00
parent c991df30f4
commit 332b7a8e0a
No known key found for this signature in database
GPG Key ID: EBC3FC294452C6D8
4 changed files with 38 additions and 6 deletions

View File

@ -1,6 +1,7 @@
function(install_python_script name) function(install_python_script name)
if (ENABLE_PYTHON_PLUGINS) if (ENABLE_PYTHON_PLUGINS)
install(DIRECTORY ${name} DESTINATION "${FALKON_INSTALL_PLUGINDIR}/python") install(DIRECTORY ${name} DESTINATION "${FALKON_INSTALL_PLUGINDIR}/python")
install(FILES i18n.py DESTINATION "${FALKON_INSTALL_PLUGINDIR}/python/${name}")
endif() endif()
endfunction() endfunction()

View File

@ -18,6 +18,7 @@
import Falkon import Falkon
from PySide2 import QtCore, QtGui, QtWidgets from PySide2 import QtCore, QtGui, QtWidgets
from hellopython import sidebar, button from hellopython import sidebar, button
from hellopython.i18n import i18n
class HelloPlugin(Falkon.PluginInterface, QtCore.QObject): class HelloPlugin(Falkon.PluginInterface, QtCore.QObject):
buttons = {} buttons = {}
@ -62,19 +63,19 @@ class HelloPlugin(Falkon.PluginInterface, QtCore.QObject):
if r.isContentEditable(): if r.isContentEditable():
title += " on input" title += " on input"
menu.addAction("My first plugin action" + title, self.actionSlot) menu.addAction(i18n("My first plugin action") + title, self.actionSlot)
def mousePress(self, type, obj, event): def mousePress(self, type, obj, event):
print("mousePress {} {} {}".format(type, obj, event)) print("mousePress {} {} {}".format(type, obj, event))
return False return False
def actionSlot(self): def actionSlot(self):
QtWidgets.QMessageBox.information(self.view, "Hello", "First plugin action works :-)") QtWidgets.QMessageBox.information(self.view, i18n("Hello"), i18n("First plugin action works :-)"))
def showSettings(self, parent): def showSettings(self, parent):
self.settings = QtWidgets.QDialog(parent) self.settings = QtWidgets.QDialog(parent)
b = QtWidgets.QPushButton("Hello Python v0.0.1") b = QtWidgets.QPushButton("Hello Python v0.0.1")
closeButton = QtWidgets.QPushButton("Close") closeButton = QtWidgets.QPushButton(i18n("Close"))
label = QtWidgets.QLabel() label = QtWidgets.QLabel()
label.setPixmap(QtGui.QPixmap(":icons/other/about.svg")) label.setPixmap(QtGui.QPixmap(":icons/other/about.svg"))
@ -84,7 +85,7 @@ class HelloPlugin(Falkon.PluginInterface, QtCore.QObject):
l.addWidget(closeButton) l.addWidget(closeButton)
self.settings.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.settings.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.settings.setWindowTitle("Hello Python Settings") self.settings.setWindowTitle(i18n("Hello Python Settings"))
self.settings.setWindowIcon(QtGui.QIcon(":icons/falkon.svg")) self.settings.setWindowIcon(QtGui.QIcon(":icons/falkon.svg"))
closeButton.clicked.connect(self.settings.close) closeButton.clicked.connect(self.settings.close)

View File

@ -17,13 +17,14 @@
# ============================================================ # ============================================================
import Falkon import Falkon
from PySide2 import QtGui, QtWidgets from PySide2 import QtGui, QtWidgets
from hellopython.i18n import i18n
class HelloSidebar(Falkon.SideBarInterface): class HelloSidebar(Falkon.SideBarInterface):
def title(self): def title(self):
return "HelloPython Sidebar" return i18n("Hello Python Sidebar")
def createMenuAction(self): def createMenuAction(self):
act = QtWidgets.QAction("Hello Python Sidebar") act = QtWidgets.QAction(i18n("Hello Python Sidebar"))
act.setCheckable(True) act.setCheckable(True)
return act return act

29
src/scripts/i18n.py Normal file
View File

@ -0,0 +1,29 @@
# ============================================================
# Falkon - Qt web browser
# Copyright (C) 2018 David Rosca <nowrep@gmail.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# ============================================================
import gettext
from PySide2 import QtCore
locale = QtCore.QLocale.system()
languages = [ locale.name(), locale.bcp47Name() ]
i = locale.name().find('_')
if i > 0: languages.append(locale.name()[:i])
localedir = QtCore.QStandardPaths.locate(QtCore.QStandardPaths.GenericDataLocation, 'locale', QtCore.QStandardPaths.LocateDirectory)
t = gettext.translation('falkon_' + __package__, localedir, languages, fallback=True)
i18n = t.gettext
i18np = t.ngettext