i18n: add basic support for translations
Handle translations of GUI elements defined in .ui files. See README.md for details. Fixes QubesOS/qubes-issues#2599
This commit is contained in:
parent
cbd8afd2c3
commit
cf8b99c763
6
Makefile
6
Makefile
@ -30,6 +30,12 @@ res:
|
|||||||
pyuic4 -o qubesmanager/ui_about.py about.ui
|
pyuic4 -o qubesmanager/ui_about.py about.ui
|
||||||
pyuic4 -o qubesmanager/ui_releasenotes.py releasenotes.ui
|
pyuic4 -o qubesmanager/ui_releasenotes.py releasenotes.ui
|
||||||
|
|
||||||
|
translations:
|
||||||
|
lrelease-qt4 qubesmanager.pro
|
||||||
|
|
||||||
|
update_ts: res
|
||||||
|
pylupdate4 qubesmanager.pro
|
||||||
|
|
||||||
update-repo-current:
|
update-repo-current:
|
||||||
ln -f $(RPMS_DIR)/x86_64/qubes-manager-*$(VERSION)*.rpm ../yum/current-release/current/dom0/rpm/
|
ln -f $(RPMS_DIR)/x86_64/qubes-manager-*$(VERSION)*.rpm ../yum/current-release/current/dom0/rpm/
|
||||||
|
|
||||||
|
21
README.md
Normal file
21
README.md
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
Qubes Manager
|
||||||
|
==============
|
||||||
|
|
||||||
|
Managing translations
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
### Adding new language
|
||||||
|
|
||||||
|
1. Add `i18n/qubesmanager_LANGUAGECODE.ts` (replace `LANGUAGECODE` with actual code,
|
||||||
|
for example `es`) to `qubesmanager.pro` - `TRANSLATIONS` setting.
|
||||||
|
2. Run `make res update_ts`
|
||||||
|
|
||||||
|
### Regenerating translation source files (`.ts`)
|
||||||
|
|
||||||
|
make res update_ts
|
||||||
|
|
||||||
|
This will keep translated strings, but will add new ones.
|
||||||
|
|
||||||
|
### Updating translations
|
||||||
|
|
||||||
|
Commit updated `.ts` files into `i18n` directory.
|
1
i18n/.gitignore
vendored
Normal file
1
i18n/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.qm
|
47
qubesmanager.pro
Normal file
47
qubesmanager.pro
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
SOURCES = \
|
||||||
|
about.ui \
|
||||||
|
backupdlg.ui \
|
||||||
|
globalsettingsdlg.ui \
|
||||||
|
logdlg.ui \
|
||||||
|
mainwindow.ui \
|
||||||
|
multiselectwidget.ui \
|
||||||
|
newappvmdlg.ui \
|
||||||
|
newfwruledlg.ui \
|
||||||
|
releasenotes.ui \
|
||||||
|
restoredlg.ui \
|
||||||
|
settingsdlg.ui \
|
||||||
|
qubesmanager/about.py \
|
||||||
|
qubesmanager/appmenu_select.py \
|
||||||
|
qubesmanager/backup.py \
|
||||||
|
qubesmanager/backup_utils.py \
|
||||||
|
qubesmanager/block.py \
|
||||||
|
qubesmanager/clipboard.py \
|
||||||
|
qubesmanager/create_new_vm.py \
|
||||||
|
qubesmanager/firewall.py \
|
||||||
|
qubesmanager/global_settings.py \
|
||||||
|
qubesmanager/log_dialog.py \
|
||||||
|
qubesmanager/main.py \
|
||||||
|
qubesmanager/multiselectwidget.py \
|
||||||
|
qubesmanager/releasenotes.py \
|
||||||
|
qubesmanager/resources_rc.py \
|
||||||
|
qubesmanager/restore.py \
|
||||||
|
qubesmanager/settings.py \
|
||||||
|
qubesmanager/table_widgets.py \
|
||||||
|
qubesmanager/thread_monitor.py \
|
||||||
|
qubesmanager/ui_about.py \
|
||||||
|
qubesmanager/ui_backupdlg.py \
|
||||||
|
qubesmanager/ui_globalsettingsdlg.py \
|
||||||
|
qubesmanager/ui_logdlg.py \
|
||||||
|
qubesmanager/ui_mainwindow.py \
|
||||||
|
qubesmanager/ui_multiselectwidget.py \
|
||||||
|
qubesmanager/ui_newappvmdlg.py \
|
||||||
|
qubesmanager/ui_newfwruledlg.py \
|
||||||
|
qubesmanager/ui_releasenotes.py \
|
||||||
|
qubesmanager/ui_restoredlg.py \
|
||||||
|
qubesmanager/ui_settingsdlg.py
|
||||||
|
|
||||||
|
TRANSLATIONS =
|
||||||
|
|
||||||
|
|
||||||
|
CODECFORTR = UTF-8
|
||||||
|
CODECFORSRC = UTF-8
|
@ -2114,6 +2114,14 @@ def main():
|
|||||||
app.setWindowIcon(QIcon.fromTheme("qubes-manager"))
|
app.setWindowIcon(QIcon.fromTheme("qubes-manager"))
|
||||||
app.setAttribute(Qt.AA_DontShowIconsInMenus, False)
|
app.setAttribute(Qt.AA_DontShowIconsInMenus, False)
|
||||||
|
|
||||||
|
qt_translator = QTranslator()
|
||||||
|
locale = QLocale.system().name()
|
||||||
|
i18n_dir = os.path.join(
|
||||||
|
os.path.dirname(os.path.realpath(__file__)),
|
||||||
|
'i18n')
|
||||||
|
qt_translator.load("qubesmanager_{!s}.qm".format(locale), i18n_dir)
|
||||||
|
app.installTranslator(qt_translator)
|
||||||
|
|
||||||
sys.excepthook = handle_exception
|
sys.excepthook = handle_exception
|
||||||
|
|
||||||
global session_bus
|
global session_bus
|
||||||
|
@ -24,7 +24,7 @@ AutoReq: 0
|
|||||||
The Graphical Qubes VM Manager.
|
The Graphical Qubes VM Manager.
|
||||||
|
|
||||||
%build
|
%build
|
||||||
make res
|
make res translations
|
||||||
python -m compileall qubesmanager
|
python -m compileall qubesmanager
|
||||||
python -O -m compileall qubesmanager
|
python -O -m compileall qubesmanager
|
||||||
|
|
||||||
@ -68,6 +68,9 @@ cp qubesmanager/ui_logdlg.py{,c,o} $RPM_BUILD_ROOT%{python_sitearch}/qubesmanage
|
|||||||
cp qubesmanager/ui_about.py{,c,o} $RPM_BUILD_ROOT%{python_sitearch}/qubesmanager
|
cp qubesmanager/ui_about.py{,c,o} $RPM_BUILD_ROOT%{python_sitearch}/qubesmanager
|
||||||
cp qubesmanager/ui_releasenotes.py{,c,o} $RPM_BUILD_ROOT%{python_sitearch}/qubesmanager
|
cp qubesmanager/ui_releasenotes.py{,c,o} $RPM_BUILD_ROOT%{python_sitearch}/qubesmanager
|
||||||
|
|
||||||
|
mkdir -p $RPM_BUILD_ROOT%{python_sitearch}/qubesmanager/i18n
|
||||||
|
cp i18n/qubesmanager_*.qm $RPM_BUILD_ROOT%{python_sitearch}/qubesmanager/i18n/
|
||||||
|
|
||||||
mkdir -p $RPM_BUILD_ROOT/usr/share/applications
|
mkdir -p $RPM_BUILD_ROOT/usr/share/applications
|
||||||
cp qubes-manager.desktop $RPM_BUILD_ROOT/usr/share/applications
|
cp qubes-manager.desktop $RPM_BUILD_ROOT/usr/share/applications
|
||||||
mkdir -p $RPM_BUILD_ROOT/etc/xdg/autostart/
|
mkdir -p $RPM_BUILD_ROOT/etc/xdg/autostart/
|
||||||
@ -182,6 +185,7 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{python_sitearch}/qubesmanager/ui_releasenotes.py
|
%{python_sitearch}/qubesmanager/ui_releasenotes.py
|
||||||
%{python_sitearch}/qubesmanager/ui_releasenotes.pyc
|
%{python_sitearch}/qubesmanager/ui_releasenotes.pyc
|
||||||
%{python_sitearch}/qubesmanager/ui_releasenotes.pyo
|
%{python_sitearch}/qubesmanager/ui_releasenotes.pyo
|
||||||
|
%{python_sitearch}/qubesmanager/i18n/qubesmanager_*.qm
|
||||||
|
|
||||||
|
|
||||||
/usr/share/applications/qubes-manager.desktop
|
/usr/share/applications/qubes-manager.desktop
|
||||||
|
Loading…
Reference in New Issue
Block a user