Compare commits

..

45 Commits

Author SHA1 Message Date
b6ad4da554 Actualizar 'debian/changelog' 2023-12-01 22:29:28 -06:00
18afebb4df Galician translate. 2023-12-01 22:18:59 +00:00
7b0361b969 Add appropriate changelog entries for the new translations. 2023-12-01 14:12:47 -06:00
Roberalz
940bdd320c
Delete po/gl.po 2023-12-01 19:03:51 +01:00
Roberalz
8d4c10c1a6
Galician and Basque traductions 2023-12-01 16:39:10 +01:00
Roberalz
01a7816d7e
Update es.po 2023-12-01 14:32:53 +01:00
a5da2f12fb Update translation sources. 2023-11-29 17:44:06 -06:00
vaba
1e809cd92f Add files via upload (#6) 2023-11-29 16:46:07 -06:00
Roberalz
10eb134e54 Update upg-apply.desktop (#4) 2023-11-29 16:35:16 -06:00
FuRuYa7
9ef796d74d Added Japanese translation "po/ja.po" file (#3) 2023-11-29 16:33:44 -06:00
cee2f2143b This should now be ready to upload (ish). 2023-10-10 14:16:52 -05:00
03e0b5f538 Rough, initial migration to systemd units. 2023-10-10 14:15:55 -05:00
ebaacb49c2 Upload to Mantic. 2023-10-10 14:07:32 -05:00
25111b9197 Add support for release upgrading, when all updates are applied. 2023-10-10 14:05:26 -05:00
Aaron Rainbolt
a175069ed3 Fix a type mismatch error in lubuntu-notifier.py 2023-03-26 10:58:00 -05:00
Aaron Rainbolt
4054e9bf03 Unbreak the download progress indicator 2023-03-26 10:50:25 -05:00
Aaron Rainbolt
f7f06d05c9 Changed some strings and fixed a typo in the autopkgtest tweak 2023-02-02 11:47:16 -06:00
Aaron Rainbolt
46bece00eb Added more debugging output to the autopkgtest 2023-02-02 10:42:20 -06:00
Aaron Rainbolt
1f79703ee1 Added bug reference. 2023-01-08 17:10:29 -06:00
Aaron Rainbolt
ea80117a18 Bumped version number in lubuntu-upgrader. 2023-01-08 13:34:33 -06:00
Aaron Rainbolt
c86d8ea9dc Removed non-functional config-file-conflict connection in repair_install(). 2023-01-08 13:32:10 -06:00
Aaron Rainbolt
f5f745f90a Set debconf frontend for the upgrade repair function. 2022-12-15 23:34:05 -06:00
Aaron Rainbolt
c143cd572c Added interrupted upgrade repair functionality. 2022-12-15 21:34:14 -06:00
Aaron Rainbolt
a73ce1aab8 Fixed an assumption in the config-file-conflict frontend. 2022-12-15 21:32:58 -06:00
db429fc70c Upload to Lunar. 2022-12-07 13:38:20 -06:00
6f173457a8 Update Standards-version to 4.6.1, no changes needed. 2022-12-07 13:38:20 -06:00
4ea74c1cd5 Add a frontend for config-file-conflict. 2022-12-07 13:38:16 -06:00
Hans P. Möller
0969079731 update changelog 2021-02-14 21:06:32 -03:00
Hans P. Möller
47a3ae7fe3 update manpages 2021-02-14 16:32:35 -03:00
Hans P. Möller
73448df6db update changelog 2020-11-08 16:20:05 -03:00
Hans P. Möller
70bc904cee added number of security upgrades text 2020-11-07 10:57:33 -03:00
Hans P. Möller
37b3f7cade fix typo in es transalation 2020-10-22 15:12:46 -03:00
Hans P. Möller
ab7695279f solved lintian unnecessary-testsuite-autopkgtest-field 2020-09-28 22:44:38 -03:00
Hans P. Möller
4c1dbb68fd remove functions now imported from apt_check 2020-09-28 22:38:21 -03:00
Hans P. Möller
e58cb06644 import apt_check.py instead of defininf the same functions 2020-09-28 15:18:52 -03:00
Hans P. Möller
2cb075738b add package description 2020-09-27 12:22:38 -03:00
Hans P. Möller
cf4581e9bd remove debug code 2020-09-26 18:19:15 -03:00
Hans P. Möller
da74c198e2 added security package mark 2020-09-26 18:16:42 -03:00
Hans P. Möller
131b40b2b4 add autopkgtest 2020-09-13 22:50:09 -03:00
Hans P. Möller
148e751176 hide upgrade button when not needed 2020-09-13 20:28:59 -03:00
Hans P. Möller
7e06da13ab fix some translations 2020-09-13 17:13:50 -03:00
Hans P. Möller
d4b440f66e update changelog 2020-09-13 17:13:28 -03:00
Hans P. Möller
78f3fb3d61 add version info 2020-09-13 17:11:58 -03:00
Hans P. Möller
cea3cb0229 change QPushButton to QDialogButtonBox so Qt can do the text translations 2020-09-13 11:04:11 -03:00
Hans P. Möller
be1a29219c add support for internationalization with gettext and updated setup script for .po format 2020-09-12 22:40:15 -03:00
27 changed files with 1524 additions and 127 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*~
debian/files

View File

@ -9,3 +9,76 @@ Version=0.1
Categories=System;Settings;
Keywords=upgrade;update
Terminal=false
Name[ar]=تطبيق الترقية الكاملة
GenericName[ar]=تطبيق الترقية الكاملة
Comment[ar]=بحث وتطبيق الترقية الكاملة
Name[bg]=Приложете пълно надграждане
GenericName[bg]=Приложете пълно надграждане
Comment[bg]=Търсете и прилагайте пълно надграждане
Name[ca]=Aplica l'actualització completa
GenericName[ca]=Aplica l'actualització completa
Comment[ca]=Cerca i aplica l'actualització completa
Name[cs]=Použít úplný upgrade
GenericName[cs]=Použít úplný upgrade
Comment[cs]=Vyhledejte a použijte úplný upgrade
Name[da]=Anvend fuld opgradering
GenericName[da]=Anvend fuld opgradering
Comment[da]=Søg og anvend fuld opgradering
Name[de]=Vollständiges Upgrade anwenden
GenericName[de]=Vollständiges Upgrade anwenden
Comment[de]=Vollständiges Upgrade suchen und anwenden
Name[el]=Εφαρμογή πλήρους αναβάθμισης
GenericName[el]=Εφαρμογή πλήρους αναβάθμισης
Comment[el]=Αναζήτηση και εφαρμογή πλήρους αναβάθμισης
Name[es]=Aplicar actualización completa
GenericName[es]=Aplicar actualización completa
Comment[es]=Buscar y aplicar la actualización completa
Name[et]=Rakendage täielikku täiendust
GenericName[et]=Rakendage täielikku täiendust
Comment[et]=Otsige ja rakendage täielikku versiooniuuendust
Name[fr]=Appliquer la mise à niveau complète
GenericName[fr]=Appliquer la mise à niveau complète
Comment[fr]=Rechercher et appliquer la mise à niveau complète
Name[gl]=Aplicar a actualización completa
GenericName[gl]=Aplicar a actualización completa
Comment[gl]=Busca e aplica a actualización completa
Name[he]=החל שדרוג מלא
GenericName[he]=החל שדרוג מלא
Comment[he]=חפש והחל שדרוג מלא
Name[hr]=Primijenite potpunu nadogradnju
GenericName[hr]=Primijenite potpunu nadogradnju
Comment[hr]=Pretražite i primijenite potpunu nadogradnju
Name[hu]=Teljes frissítés alkalmazása
GenericName[hu]=Teljes frissítés alkalmazása
Comment[hu]=Keresés és teljes frissítés alkalmazása
Name[it]=Applicare l'aggiornamento completo
GenericName[it]=Applicare l'aggiornamento completo
Comment[it]=Cerca e applica l'aggiornamento completo
Name[ja]=
GenericName[ja]=
Comment[ja]=
GenericName[lt]=Taikykite visą atnaujinimą
Name[lt]=Taikykite visą atnaujinimą
Comment[lt]=Ieškokite ir taikykite visą atnaujinimą
Name[nl]=Volledige upgrade toepassen
GenericName[nl]=Volledige upgrade toepassen
Comment[nl]=Volledige upgrade zoeken en toepassen
GenericName[pl]=Zastosuj pełną aktualizację
Name[pl]=Zastosuj pełną aktualizację
Comment[pl]=Wyszukaj i zastosuj pełną aktualizację
Name[pt]=Aplicar atualização completa
GenericName[pt]=Aplicar atualização completa
Comment[pt]=Pesquisar e aplicar a atualização completa
Name[ru]=Применить полное обновление
GenericName[ru]=Применить полное обновление
Comment[ru]=Поиск и применение полного обновления
Name[tr]=Tam Yükseltmeyi Uygula
GenericName[tr]=Tam Yükseltmeyi Uygula
Comment[tr]=Tam Yükseltmeyi Ara ve Uygula
Name[zh_CN]=
GenericName[zh_CN]=
Comment[zh_CN]=
Name[zh_TW]=
GenericName[zh_TW]=
Comment[zh_TW]=

View File

@ -1,7 +0,0 @@
[Desktop Entry]
Exec=/usr/libexec/lubuntu-update-notifier/lubuntu-upg-notifier.sh
NoDisplay=true
Name=upgNotifier
Icon=system-software-update
Type=Application
Version=0.1

71
debian/changelog vendored
View File

@ -1,3 +1,74 @@
lubuntu-update-notifier (0.6.1) UNRELEASED; urgency=medium
[ Simon Quigley ]
* Rough, initial migration to systemd units.
* Update translation sources.
[ FuRuYa7 ]
* Added Japanese translation "po/ja.po" file.
[ Roberalz ]
* Update upg-apply.desktop.
* Update Spanish translations.
* Add Basque translations.
* Add Galician translations.
[ vaba ]
* Add an Estonian translation.
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 10 Oct 2023 14:14:56 -0500
lubuntu-update-notifier (0.6.0) mantic; urgency=medium
* Add support for release upgrading, when all updates are applied (LP: #2038958).
-- Simon Quigley <tsimonq2@ubuntu.com> Tue, 10 Oct 2023 14:06:19 -0500
lubuntu-update-notifier (0.5.4) lunar; urgency=medium
* Disconnect the status_changed() function from the status-changed signal in
repair_install(), as it interferes with upgrade_progress_download().
(LP: #2012702)
* Don't try to pass a string to QTreeWidgetItem when it expects an
Iterable[str]. (LP: #2012823)
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Sun, 26 Mar 2023 10:48:15 -0500
lubuntu-update-notifier (0.5.3) lunar; urgency=medium
* Changed some strings and fixed a typo in the autopkgtest tweak
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 02 Feb 2023 11:45:32 -0600
lubuntu-update-notifier (0.5.2) lunar; urgency=medium
* Tweaked the autopkgtest script to return more detailed debugging info.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Thu, 02 Feb 2023 10:41:08 -0600
lubuntu-update-notifier (0.5.1) lunar; urgency=medium
* Added functionality for repairing an interrupted upgrade. (LP: #2002255)
* Fixed an assumption in the config-file-conflict frontend.
* Bumped version number in lubuntu-upgrader.
-- Aaron Rainbolt <arraybolt3@ubuntu.com> Wed, 14 Dec 2022 12:32:48 -0600
lubuntu-update-notifier (0.5) lunar; urgency=medium
* Add a frontend for config-file-conflict.
* Update Standards-version to 4.6.1, no changes needed.
-- Simon Quigley <tsimonq2@ubuntu.com> Wed, 07 Dec 2022 13:26:39 -0600
lubuntu-update-notifier (0.4) hirsute; urgency=medium
* Added internationalization support.
* Added packages version and description.
* Added security package mark and count.
-- Hans P Möller <hmollercl@lubuntu.me> Sun, 14 Feb 2021 21:06:03 -0300
lubuntu-update-notifier (0.3) groovy; urgency=medium
* Added affected packages info.

8
debian/control vendored
View File

@ -2,13 +2,15 @@ Source: lubuntu-update-notifier
Section: admin
Priority: optional
Maintainer: Hans P Möller <hmollercl@lubuntu.me>
Build-Depends: debhelper-compat (=13),
Build-Depends: debhelper-compat (= 13),
dh-python,
gettext,
python3-all,
python3-apt,
python3-setuptools
Standards-Version: 4.5.0
Standards-Version: 4.6.1
Rules-Requires-Root: no
Testsuite: autopkgtest-pkg-python
Package: lubuntu-update-notifier
Architecture: all
@ -17,8 +19,10 @@ Depends: aptdaemon,
lxqt-sudo,
python3,
python3-aptdaemon (>= 0.6.20ubuntu16),
python3-launchpadlib,
python3-pyqt5,
update-notifier-common,
ubuntu-release-upgrader-qt,
${misc:Depends},
${python3:Depends},
${shlibs:Depends}

5
debian/copyright vendored
View File

@ -2,8 +2,9 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://phab.lubuntu.me/source/lubuntu-update-notifier/
Files: *
Copyright: © 2019 Lubuntu Team.
© 2019 Hans P Möller <hmollercl@lubuntu.me>
Copyright: 2019-2022 Lubuntu Team <lubuntu-devel@lists.ubuntu.com>
2019 Hans P Möller <hmollercl@lubuntu.me>
2022 Simon Quigley <tsimonq2@lubuntu.me>
License: GPL-3+
License: GPL-3+

View File

@ -1,2 +0,0 @@
#data/upg-apply.desktop usr/share/applications
data/upg-notifier-autostart.desktop etc/xdg/autostart

12
debian/lubuntu-update-notifier.postinst vendored Normal file
View File

@ -0,0 +1,12 @@
#!/bin/sh
set -e
# This file can be removed following the release of Lubuntu 24.04 LTS
# It's to ensure a smooth transition between the autostart file and the new
# systemd user units provided
rm -f /etc/xdg/autostart/upg-notifier-autostart.desktop
rm -f /home/*/.config/autostart/upg-notifier-autostart.desktop
#DEBHELPER#

View File

@ -0,0 +1,7 @@
[Unit]
Description=Lubuntu Update Notifier
Wants=update-notifier-download.timer
[Service]
Type=oneshot
ExecStart=/usr/libexec/lubuntu-update-notifier/lubuntu-upg-notifier.sh

View File

@ -0,0 +1,10 @@
[Unit]
Description=Lubuntu Update Notifier
Requires=lubuntu-update-notifier.service
[Timer]
Unit=lubuntu-update-notifier.service
OnCalendar=*-*-* *:00:00
[Install]
WantedBy=timers.target

View File

@ -1,14 +1,10 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.11.
.TH LUBUNTU-UPGRADER "1" "August 2019" "lubuntu-upgrader 0.1" "User Commands"
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.16.
.TH LUBUNTU-UPGRADER "1" "February 2021" "lubuntu-upgrader 0.4" "User Commands"
.SH NAME
lubuntu-upgrader \- is a LXQt GUI for ubuntu system upgrade
.SH SYNOPSIS
.B lubuntu-upgrader
[\fI\,options\/\fR]
.SH OPTIONS
.TP
\fB\-\-version\fR
show program's version number and exit
.SH DESCRIPTION
usage: lubuntu\-upgrader [\-h] [\-c] [\-f] [\-\-version]
.SS "optional arguments:"
.TP
\fB\-h\fR, \fB\-\-help\fR
show this help message and exit
@ -18,5 +14,8 @@ Update Cache Before Upgrade
.TP
\fB\-f\fR, \fB\-\-full\-upgrade\fR
Full upgrade same as dist\-upgrade
.TP
\fB\-\-version\fR
show program's version number and exit
.SH AUTHORS
lubuntu-upgrader was primarily written by Hans P Moller.

View File

@ -1,2 +1,2 @@
# Wishlist
lubuntu-update-notifier source: testsuite-autopkgtest-missing
# lubuntu-update-notifier source: testsuite-autopkgtest-missing

2
debian/tests/control vendored Normal file
View File

@ -0,0 +1,2 @@
Tests: run-tests
Depends: @

31
debian/tests/run-tests vendored Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
# test if apt-check is working as expected.
OUT=`/usr/lib/update-notifier/apt-check 2>&1`
oldIFS=$IFS
IFS=';'
j=0
for STRING in $OUT; do
case $j in
0)
UPG=$STRING;;
1)
SEC=$STRING;;
esac
j=`expr $j + 1`
done
IFS=$oldIFS
if [ $UPG -ge 0 ]; then
echo "Success: /usr/lib/update-notifier/apt-check is working"
echo "Debugging output:"
echo $OUT;
echo "End debugging output"
exit 0
else
echo "Failure: /usr/lib/update-notifier/apt-check is NOT working"
echo "Debugging output:"
echo $OUT;
echo "End debugging output"
exit 1
fi

1
helper Normal file
View File

@ -0,0 +1 @@
./lubuntu-notifier.py -u 0 -s 0 -p ./lubuntu-upgrader

View File

@ -2,6 +2,7 @@
# coding=utf-8
# Copyright (C) 2019 Hans P. Möller <hmollercl@lubuntu.me>
# Copyright (C) 2023 Simon Quigley <tsimonq2@lubuntu.me>
#
# 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
@ -23,54 +24,90 @@ import subprocess
from pathlib import Path
import apt_pkg
from argparse import ArgumentParser
import gettext
from PyQt5.QtWidgets import (QWidget, QApplication, QLabel, QPushButton,
from PyQt5.QtWidgets import (QWidget, QApplication, QLabel, QDialogButtonBox,
QHBoxLayout, QVBoxLayout, QTreeWidget,
QTreeWidgetItem)
from PyQt5.QtCore import Qt
QTreeWidgetItem, QHeaderView)
from PyQt5.QtCore import Qt, QThread, pyqtSignal
from PyQt5.QtGui import QIcon
from launchpadlib.launchpad import Launchpad
import importlib.util
spec = importlib.util.spec_from_file_location(
"apt_check", "/usr/lib/update-notifier/apt_check.py")
apt_check = importlib.util.module_from_spec(spec)
spec.loader.exec_module(apt_check)
class RunUpgradeThread(QThread):
finished = pyqtSignal()
def __init__(self, cmd):
super().__init__()
self.cmd = cmd
def run(self):
process = subprocess.Popen(self.cmd)
process.wait()
self.finished.emit()
class Dialog(QWidget):
''' UI '''
def __init__(self, upgrades, security_upgrades, reboot_required, upg_path):
def __init__(self, upgrades, security_upgrades, release_upgrade, version, reboot_required, upg_path):
QWidget.__init__(self)
self.upgrades = upgrades
self.security_upgrades = security_upgrades
self.release_upgrade = release_upgrade
self.version = version
self.upg_path = upg_path
self.reboot_required = reboot_required
try:
self.launchpad = Launchpad.login_anonymously("lubuntu-update-notifier", "production", version="devel")
except:
self.launchpad = None
apt_pkg.init()
try:
self.cache = apt_pkg.Cache()
except SystemError as e:
sys.stderr.write("Error: Opening the cache (%s)" % e)
sys.stderr.write(_("Error: Opening the cache (%s)") % e)
sys.exit(-1)
self.depcache = apt_pkg.DepCache(self.cache)
self.records = apt_pkg.PackageRecords(self.cache)
self.initUI()
self.upgradeBtn.clicked.connect(self.call_upgrade)
self.closeBtn.clicked.connect(self.call_reject)
self.buttonBox.rejected.connect(self.call_reject)
self.buttonBox.clicked.connect(self.call_upgrade)
def initUI(self):
''' UI initialization '''
self.label = QLabel()
self.label.setAlignment(Qt.AlignHCenter)
self.label.setTextFormat(Qt.RichText)
self.label.setOpenExternalLinks(True)
self.tw = QTreeWidget()
self.tw.setColumnCount(1)
self.tw.setHeaderLabels(['Affected Packages'])
self.tw.setHeaderHidden(True)
if self.security_upgrades > 0:
self.tw.setColumnCount(2)
self.tw.setHeaderLabels([_('Affected Packages'),
_('Security')])
self.tw.header().setSectionResizeMode(0, QHeaderView.Stretch)
self.tw.header().setStretchLastSection(False)
else:
self.tw.setColumnCount(1)
self.tw.setHeaderLabels([_('Affected Packages')])
self.tw.setHeaderHidden(True)
self.upgradeBtn = QPushButton("Upgrade")
self.closeBtn = QPushButton("Close")
self.buttonBox = QDialogButtonBox(QDialogButtonBox.Cancel |
QDialogButtonBox.Apply)
text = ""
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(self.upgradeBtn)
hbox.addWidget(self.closeBtn)
hbox.addWidget(self.buttonBox)
hbox.addStretch(1)
vbox = QVBoxLayout()
@ -78,8 +115,10 @@ class Dialog(QWidget):
vbox.addWidget(self.tw)
vbox.addLayout(hbox)
if self.upg_path is None:
self.upgradeBtn.setVisible(False)
self.tw.setVisible(False)
if self.upg_path is None and not self.release_upgrade:
self.buttonBox.button(QDialogButtonBox.Apply).setVisible(False)
self.setLayout(vbox)
self.setGeometry(300, 300, 500, 150)
@ -87,49 +126,79 @@ class Dialog(QWidget):
self.center()
if self.upgrades > 0:
self.tw.setVisible(True)
self.depcache.upgrade(True) # True for non safe.
pkg_install = list()
pkg_upgrade = list()
pkg_delete = list()
for p in self.cache.packages:
if self.depcache.marked_delete(p):
pkg_delete.append(p.name)
pkg_delete.append(p)
elif self.depcache.marked_install(p):
pkg_install.append(p.name)
pkg_install.append([p, self.depcache.get_candidate_ver(p)])
elif self.depcache.marked_upgrade(p):
pkg_upgrade.append(p.name)
text = "There are upgrades available. Do you want to do a system"
text += " upgrade?\nThis will mean packages could be upgraded,"
text += " installed, or removed."
pkg_upgrade.append([p, self.depcache.get_candidate_ver(p)])
text = _("There are upgrades available. Do you want to do a system"
" upgrade?")
text += "\n"
text += _("This will mean packages could be upgraded, installed or"
" removed.")
if self.security_upgrades > 0:
text += "\n" + str(self.security_upgrades)
if self.security_upgrades == 1:
text += _(" is a security upgrade.")
else:
text += _(" are security upgrades.")
if len(pkg_delete) > 0:
toDelete = QTreeWidgetItem(['Remove'])
toDelete = QTreeWidgetItem([_('Remove')])
for p in pkg_delete:
td_child = QTreeWidgetItem([p])
td_child = QTreeWidgetItem([p.name])
toDelete.addChild(td_child)
toDelete.setIcon(0, QIcon.fromTheme("edit-delete"))
self.tw.addTopLevelItem(toDelete)
if len(pkg_install) > 0:
toInstall = QTreeWidgetItem(['Install'])
toInstall = QTreeWidgetItem([_('Install')])
for p in pkg_install:
td_child = QTreeWidgetItem([p])
td_child = QTreeWidgetItem([p[0].name + " / "
+ p[1].ver_str])
if apt_check.isSecurityUpgrade(p[1]):
td_child.setIcon(1, QIcon.fromTheme("security-high"))
toInstall.setIcon(1, QIcon.fromTheme("security-high"))
toInstall.addChild(td_child)
toInstall.setIcon(0, QIcon.fromTheme("system-software-install"))
self.records.lookup(p[1].file_list[0])
short = QTreeWidgetItem([self.records.short_desc])
td_child.addChild(short)
toInstall.setIcon(0, QIcon.fromTheme(
"system-software-install"))
self.tw.addTopLevelItem(toInstall)
if len(pkg_upgrade) > 0:
toUpgrade = QTreeWidgetItem(['Upgrade'])
toUpgrade = QTreeWidgetItem([_('Upgrade')])
for p in pkg_upgrade:
td_child = QTreeWidgetItem([p])
td_child = QTreeWidgetItem(
[p[0].name + " / " + p[0].current_ver.ver_str +
" -> " + p[1].ver_str])
if apt_check.isSecurityUpgrade(p[1]):
td_child.setIcon(1, QIcon.fromTheme("security-high"))
toUpgrade.setIcon(1, QIcon.fromTheme("security-high"))
toUpgrade.addChild(td_child)
self.records.lookup(p[1].file_list[0])
short = QTreeWidgetItem([self.records.short_desc])
td_child.addChild(short)
toUpgrade.setIcon(0, QIcon.fromTheme("system-software-update"))
self.tw.addTopLevelItem(toUpgrade)
elif self.release_upgrade:
self.setWindowTitle("Upgrade Lubuntu")
text = self.new_version_text()
self.buttonBox.clicked.connect(self.call_release_upgrader)
if self.reboot_required:
if text == "":
text = "Reboot is needed"
self.upgradeBtn.setVisible(False)
text = _("Reboot required")
self.buttonBox.button(QDialogButtonBox.Apply).setVisible(False)
else:
text = text + "\nReboot is needed"
text += "\n"
text += _("Reboot required")
self.label.setText(text)
@ -146,70 +215,126 @@ class Dialog(QWidget):
''' when close button is pressed, quit '''
app.quit()
def call_upgrade(self):
''' starts upgrade process '''
self.label.setText("Upgrading...")
# TODO maybe open another thread so notifier won't freeze
if self.upg_path == "terminal":
# cmd = ['qterminal', '-e', 'sudo', 'apt', 'dist-upgrade']
cmd = ['qterminal', '-e', './upg.sh']
else:
cmd = ['lxqt-sudo', self.upg_path, '--full-upgrade']
# process = subprocess.Popen(self.upg_path)
# process = subprocess.Popen(cmd, shell=True)
self.upgradeBtn.setVisible(False)
self.upgradeBtn.setEnabled(False)
process = subprocess.Popen(cmd)
process.wait()
def call_upgrade(self, btnClicked):
if(self.buttonBox.buttonRole(btnClicked) ==
QDialogButtonBox.ApplyRole):
''' starts upgrade process '''
self.label.setText(_("Upgrading..."))
self.buttonBox.button(QDialogButtonBox.Apply).setEnabled(False)
self.buttonBox.button(QDialogButtonBox.Apply).setVisible(False)
self.tw.setVisible(False)
cmd = ["lxqt-sudo", self.upg_path, "--full-upgrade"]
self.thread = RunUpgradeThread(cmd)
self.thread.finished.connect(self.on_upgrade_finished)
self.thread.start()
def on_upgrade_finished(self):
if self.upg_path == "terminal":
text = "Upgrade finished"
text = _("Upgrade finished")
reboot_required_path = Path("/var/run/reboot-required")
if reboot_required_path.exists():
text = text + "\n" + "Restart required"
text += "\n" + _("Reboot required")
self.label.setText(text)
self.closeBtn.setVisible(True)
self.closeBtn.setEnabled(True)
elif self.release_upgrade:
self.setWindowTitle("Upgrade Lubuntu")
self.label.setText(self.new_version_text())
self.buttonBox.button(QDialogButtonBox.Apply).setEnabled(True)
self.buttonBox.button(QDialogButtonBox.Apply).setVisible(True)
self.buttonBox.clicked.disconnect(self.call_upgrade)
self.buttonBox.clicked.connect(self.call_release_upgrader)
else:
app.quit()
def call_release_upgrader(self, btnClicked):
if self.buttonBox.buttonRole(btnClicked) == QDialogButtonBox.ApplyRole:
cmd = ["lxqt-sudo", "do-release-upgrade", "-m", "desktop", "-f", "DistUpgradeViewKDE"]
self.thread2 = RunUpgradeThread(cmd)
self.thread2.finished.connect(self.call_reject)
self.thread2.start()
elif self.buttonBox.buttonRole(btnClicked) == QDialogButtonBox.RejectRole:
self.call_reject()
def new_version_text(self):
try:
main_version = '.'.join(self.version.split()[0].split('.')[:2])
codename = self.launchpad.distributions["ubuntu"].getSeries(name_or_version=main_version).name
except:
codename = None
if codename:
url_suffix = ""
point_release = self.version.split(".")[2].split(" ")[0] if "." in self.version[4:] else "0"
if point_release != "0":
url_suffix = f"-{int(point_release)}"
url_suffix += "-released"
text = f"<a href='https://lubuntu.me/{codename}{url_suffix}/'>"
text += _("A new version of Lubuntu") + "</a> "
text += _("is available. Would you like to install it?")
else:
text = _("A new version of Lubuntu is available. Would you like to install it?")
return text
class App(QApplication):
'''application'''
def __init__(self, upgrades, security_upgrades, reboot_required, upg_path,
def __init__(self, upgrades, security_upgrades, release_upgrade, version, reboot_required, upg_path,
*args):
QApplication.__init__(self, *args)
self.dialog = Dialog(upgrades, security_upgrades, reboot_required,
self.dialog = Dialog(upgrades, security_upgrades, release_upgrade, version, reboot_required,
upg_path)
self.dialog.show()
def main(args, upgrades, security_upgrades, reboot_required, upg_path):
def main(args, upgrades, security_upgrades, release_upgrade, version, reboot_required, upg_path):
'''main'''
global app
app = App(upgrades, security_upgrades, reboot_required, upg_path, args)
app = App(upgrades, security_upgrades, release_upgrade, version, reboot_required, upg_path, args)
app.setWindowIcon(QIcon.fromTheme("system-software-update"))
app.exec_()
if __name__ == "__main__":
localesApp = "lubuntu-update-notifier"
localesDir = "/usr/share/locale"
gettext.bindtextdomain(localesApp, localesDir)
gettext.textdomain(localesApp)
_ = gettext.gettext
parser = ArgumentParser()
parser.add_argument("-p",
"--upgrader-sw",
dest="upg_path",
help="Define software/app to open for upgrade",
help=_("Define software/app to open for upgrade"),
metavar="APP")
parser.add_argument("-u",
"--upgrades",
dest="upgrades",
help="How many upgrades are available",
help=_("How many upgrades are available"),
metavar="APP")
parser.add_argument("-s",
"--security-upg",
dest="security_upgrades",
help="How many security upgrades are available",
help=_("How many security upgrades are available"),
metavar="APP")
parser.add_argument("-r",
"--release-upgrade",
dest="release_upgrade",
help=_("Whether a release upgrade is required"),
type=str,
metavar="APP")
parser.add_argument("-v",
"--release-upgrade-version",
dest="version",
help=_("If a release upgrade is available, provide the version"),
type=str,
metavar="APP")
options = parser.parse_args()
@ -217,6 +342,11 @@ if __name__ == "__main__":
reboot_required_path = Path("/var/run/reboot-required")
reboot_required = reboot_required_path.exists()
if int(options.upgrades) > 0 or reboot_required:
if int(options.release_upgrade) == 0:
options.release_upgrade = True
else:
options.release_upgrade = False
if int(options.upgrades) > 0 or reboot_required or options.release_upgrade:
main(sys.argv, int(options.upgrades), int(options.security_upgrades),
reboot_required, options.upg_path)
options.release_upgrade, options.version, reboot_required, options.upg_path)

View File

@ -16,22 +16,25 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
while true;
do
OUT=`/usr/lib/update-notifier/apt-check 2>&1`
oldIFS=$IFS
IFS=';'
j=0
for STRING in $OUT; do
case $j in
0)
UPG=$STRING;;
1)
SEC=$STRING;;
esac
j=`expr $j + 1`
done
IFS=$oldIFS
/usr/libexec/lubuntu-update-notifier/lubuntu-notifier.py -u $UPG -s $SEC -p /usr/bin/lubuntu-upgrader
sleep 86400
done;
OUT=`/usr/lib/update-notifier/apt-check 2>&1`
oldIFS=$IFS
IFS=';'
j=0
for STRING in $OUT; do
case $j in
0)
UPG=$STRING;;
1)
SEC=$STRING;;
esac
j=`expr $j + 1`
done
IFS=$oldIFS
NEWREL_CHECK=`/usr/bin/do-release-upgrade -c 2>&1`
NEWREL=$?
if [ "$NEWREL" -eq 0 ]; then
VERSION=`echo $NEWREL_CHECK | awk -F\' '/available/{print $2}'`
fi
/usr/libexec/lubuntu-update-notifier/lubuntu-notifier.py -u $UPG -s $SEC -r $NEWREL -v $VERSION -p /usr/bin/lubuntu-upgrader

View File

@ -2,6 +2,7 @@
# coding=utf-8
# Copyright (C) 2019 Hans P. Möller <hmollercl@lubuntu.me>
# Copyright (C) 2022 Simon Quigley <tsimonq2@lubuntu.me>
#
# 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
@ -22,7 +23,7 @@
import sys
import os
from pathlib import Path
# from optparse import OptionParser
import gettext
from argparse import ArgumentParser
from PyQt5.QtWidgets import (QWidget, QApplication, QLabel, QPushButton,
QHBoxLayout, QVBoxLayout, QProgressBar,
@ -64,6 +65,8 @@ class DialogUpg(QWidget):
#stderr=subprocess.PIPE
stderr=self.slave)'''
self.trans3 = self.apt_client.fix_incomplete_install()
self.repair_install()
if options.fullUpgrade:
self.trans2 = self.apt_client.upgrade_system(safe_mode=False)
self.setWindowTitle('Full Upgrade')
@ -126,7 +129,13 @@ class DialogUpg(QWidget):
'''upgrade progressbar during update'''
self.progressBar.setVisible(True)
self.progressBar.setValue(progress)
self.label.setText("Updating cache...")
self.label.setText(_("Updating cache..."))
def repair_progress(self, transaction, progress):
'''upgrade progressbar during update'''
self.progressBar.setVisible(True)
self.progressBar.setValue(progress)
self.label.setText(_("Repairing interrupted upgrade if necessary..."))
def update_progress_download(self, transaction, uri, status, short_desc,
total_size, current_size, msg):
@ -183,11 +192,11 @@ class DialogUpg(QWidget):
'''print update detail info'''
if total_items > 0:
self.plainTextEdit.setVisible(True)
if self.detailText != "Fetching " + str(
current_items) + " of " + str(total_items):
if self.detailText != _("Fetching") + str(
current_items) + " " + _("of") + " " + str(total_items):
self.detailText = (
"Fetching " + str(current_items) + " of "
+ str(total_items)
_("Fetching") + " " + str(current_items) + " " + _("of") +
" " + str(total_items)
)
self.label.setText(self.detailText + "\n" + self.downloadText)
@ -196,11 +205,11 @@ class DialogUpg(QWidget):
'''print upgrade detail info'''
if total_items > 0:
self.plainTextEdit.setVisible(True)
if self.detailText != "Downloaded " + str(
current_items) + " of " + str(total_items):
if self.detailText != _("Downloaded") + " " + str(
current_items) + " " + _("of") + " " + str(total_items):
self.detailText = (
"Downloaded " + str(current_items) + " of "
+ str(total_items)
_("Downloaded") + " " + str(current_items) + " " +
_("of") + " " + str(total_items)
)
self.label.setText(self.detailText + "\n" + self.downloadText)
@ -211,16 +220,16 @@ class DialogUpg(QWidget):
error_desc = get_error_description_from_enum(
transaction.error.code)
text = "Upgrade finished"
text = _("Upgrade finished")
reboot_required_path = Path("/var/run/reboot-required")
if reboot_required_path.exists():
text = text + "\n" + "Restart required"
text = text + "\n" + _("Reboot required")
self.progressBar.setVisible(False)
if len(self.errors) > 0:
text = text + "\n With some Errors"
self.plainTextEdit.appendPlainText("Error Resume:\n")
text += "\n" + _("With some Errors")
self.plainTextEdit.appendPlainText(_("Error Resume:") + "\n")
for error in self.errors:
self.plainTextEdit.setEnabled(False)
self.plainTextEdit.insertPlainText(error + "\n")
@ -271,7 +280,7 @@ class DialogUpg(QWidget):
def update_finish(self, transaction, exit_state):
'''when update finish'''
self.label.setText("Update Cache Finished")
self.label.setText(_("Update Cache Finished"))
if exit_state == EXIT_FAILED:
error_string = get_error_string_from_enum(transaction.error.code)
error_desc = get_error_description_from_enum(
@ -312,6 +321,29 @@ class DialogUpg(QWidget):
# print("PTY:" + str(self.slave))
print("Status Details:" + details)
def config_file_conflict(self, transaction, cur, new):
title = "Conflicting Configuration"
text = "Updating the system will result in the following file being "
text += "overwritten: " + cur + "\n\nWhat would you like to do?"
query = QMessageBox()
query.setWindowTitle(title)
query.setText(text)
query.setIcon(QMessageBox.Question)
query.setStandardButtons(QMessageBox.Yes|QMessageBox.No)
yes = query.button(QMessageBox.Yes)
yes.setText("Overwrite")
no = query.button(QMessageBox.No)
no.setText("Keep Existing")
query.setDefaultButton(no)
query.exec_()
if query.clickedButton() == yes:
answer = "replace"
elif query.clickedButton() == no:
answer = "keep"
transaction.resolve_config_file_conflict(config=cur, answer=answer)
def upgrade(self):
'''runs upgrade'''
try:
@ -327,6 +359,8 @@ class DialogUpg(QWidget):
self.trans2.connect("status-details-changed",
self.status_details_changed)
self.trans2.connect("status-changed", self.status_changed)
self.trans2.connect("config-file-conflict",
self.config_file_conflict)
# TODO make a terminal work to see more info
# self.trans2.set_terminal(os.ttyname(self.slave))
@ -334,8 +368,6 @@ class DialogUpg(QWidget):
'''
# TODO implement this
self.trans2.connect("medium-required", self._on_medium_required)
self.trans2.connect("config-file-conflict",
self._on_config_file_conflict)
remove_obsoleted_depends
'''
self.trans2.set_debconf_frontend('kde')
@ -349,6 +381,37 @@ class DialogUpg(QWidget):
'''when close button is pushed, quit'''
app.quit()
def repair_install(self):
self.closeBtn.setVisible(False)
try:
self.trans3.connect('progress-changed', self.repair_progress)
# TODO the next line breaks the ability to see download progress
# for... some reason. Maybe an aptd bug?
# self.trans3.connect('status-changed', self.status_changed)
self.trans3.connect('status-details-changed',
self.status_details_changed)
self.trans3.connect('finished', self.repair_finish)
self.trans3.connect('error', self.upgrade_error)
self.trans3.set_debconf_frontend('kde')
self.trans3.run()
except (NotAuthorizedError, TransactionFailed) as e:
print("Warning: install transaction not completed successfully:"
+ "{}".format(e))
def repair_finish(self, transaction, exit_state):
'''when repair finish'''
self.label.setText(_("Repair Finished (if repair was needed)"))
if exit_state == EXIT_FAILED:
error_string = get_error_string_from_enum(transaction.error.code)
error_desc = get_error_description_from_enum(
transaction.error.code)
self.plainTextEdit.setEnabled(False)
self.plainTextEdit.moveCursor(QTextCursor.End)
self.plainTextEdit.insertPlainText(error_string + "\n")
self.plainTextEdit.insertPlainText(error_desc + "\n")
self.plainTextEdit.moveCursor(QTextCursor.End)
self.plainTextEdit.setEnabled(True)
class App(QApplication):
'''app'''
@ -366,8 +429,8 @@ def main(args, options):
# Check for root permissions
if os.geteuid() != 0:
text = "Please run this software with administrative rights."
text += "To do so, run this program with lxqt-sudo."
text = _("Please run this software with administrative rights."
"To do so, run this program with lxqt-sudo.")
title = "Need administrative powers"
QMessageBox.critical(None, title, text)
sys.exit()
@ -376,21 +439,27 @@ def main(args, options):
if __name__ == "__main__":
localesApp ="lubuntu-update-notifier"
localesDir ="/usr/share/locale"
gettext.bindtextdomain(localesApp, localesDir)
gettext.textdomain(localesApp)
_ = gettext.gettext
# check arguments
parser = ArgumentParser()
parser.add_argument("-c",
"--cache-update",
action="store_true",
dest="cacheUpdate",
help="Update Cache Before Upgrade")
help=_("Update Cache Before Upgrade"))
parser.add_argument("-f",
"--full-upgrade",
action="store_true",
dest="fullUpgrade",
help="Full upgrade same as dist-upgrade")
help=_("Full upgrade same as dist-upgrade"))
parser.add_argument('--version',
action='version',
version='%(prog)s 0.1')
version='%(prog)s 0.5.1')
options = parser.parse_args()
# run it

159
po/es.po Normal file
View File

@ -0,0 +1,159 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-29 17:43-0600\n"
"PO-Revision-Date: 2023-12-01 14:31+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.1\n"
#: lubuntu-upgrader:132
msgid "Updating cache..."
msgstr "Actualizando cache..."
#: lubuntu-upgrader:138
msgid "Repairing interrupted upgrade if necessary..."
msgstr "Reparando la actualización interrumpida si es necesario..."
#: lubuntu-upgrader:195 lubuntu-upgrader:198
msgid "Fetching"
msgstr "Recuperando"
#: lubuntu-upgrader:196 lubuntu-upgrader:198 lubuntu-upgrader:209
#: lubuntu-upgrader:212
msgid "of"
msgstr "de"
#: lubuntu-upgrader:208 lubuntu-upgrader:211
msgid "Downloaded"
msgstr "Descargado"
#: lubuntu-upgrader:223 lubuntu-notifier.py:234
msgid "Upgrade finished"
msgstr "Actualización completada"
#: lubuntu-upgrader:227 lubuntu-notifier.py:197 lubuntu-notifier.py:201
#: lubuntu-notifier.py:238
msgid "Reboot required"
msgstr "Requiere reinicio"
#: lubuntu-upgrader:231
msgid "With some Errors"
msgstr "Con algunos Errores"
#: lubuntu-upgrader:232
msgid "Error Resume:"
msgstr "Resumen de Errores:"
#: lubuntu-upgrader:283
msgid "Update Cache Finished"
msgstr "Actualización de Cache Terminada"
#: lubuntu-upgrader:404
msgid "Repair Finished (if repair was needed)"
msgstr "Reparación terminada (si se necesitaba reparación)"
#: lubuntu-upgrader:432
msgid ""
"Please run this software with administrative rights.To do so, run this "
"program with lxqt-sudo."
msgstr ""
"Por favor corre este software como administrador. Para hacerlo ejecútarlo "
"con lxqt-sudo."
#: lubuntu-upgrader:454
msgid "Update Cache Before Upgrade"
msgstr "Actualiza el Cache antes de la Actualización"
#: lubuntu-upgrader:459
msgid "Full upgrade same as dist-upgrade"
msgstr "\"Full upgrade\" lo mismo que \"dist-upgrade\""
#: lubuntu-notifier.py:76
#, python-format
msgid "Error: Opening the cache (%s)"
msgstr "Error: Abriendo el caché (%s)"
#: lubuntu-notifier.py:95 lubuntu-notifier.py:101
msgid "Affected Packages"
msgstr "Paquetes afectados"
#: lubuntu-notifier.py:96
msgid "Security"
msgstr "Seguridad"
#: lubuntu-notifier.py:141
msgid "There are upgrades available. Do you want to do a system upgrade?"
msgstr ""
"Hay actualizaciones disponibles ¿Quiere hacer una actualización del sistema?"
#: lubuntu-notifier.py:144
msgid "This will mean packages could be upgraded, installed or removed."
msgstr "Esto implica que paquetes pueden actualizarse, instalarse o removerse."
#: lubuntu-notifier.py:149
msgid " is a security upgrade."
msgstr " es una actualización de seguridad."
#: lubuntu-notifier.py:151
msgid " are security upgrades."
msgstr " son actualizaciones de seguridad."
#: lubuntu-notifier.py:154
msgid "Remove"
msgstr "Quitar"
#: lubuntu-notifier.py:161
msgid "Install"
msgstr "Instalar"
#: lubuntu-notifier.py:176
msgid "Upgrade"
msgstr "Actualizar"
#: lubuntu-notifier.py:222
msgid "Upgrading..."
msgstr "Actualizando..."
#: lubuntu-notifier.py:276
msgid "A new version of Lubuntu"
msgstr "Una nueva versión de Lubuntu"
#: lubuntu-notifier.py:277
msgid "is available. Would you like to install it?"
msgstr "está disponible. ¿Quiere instalarlo?"
#: lubuntu-notifier.py:279
msgid "A new version of Lubuntu is available. Would you like to install it?"
msgstr "Ya está disponible una nueva versión de Lubuntu. Quieres instalarla?"
#: lubuntu-notifier.py:315
msgid "Define software/app to open for upgrade"
msgstr "Define el software o app para actualizar"
#: lubuntu-notifier.py:320
msgid "How many upgrades are available"
msgstr "Cuántas actualizaciones hay disponibles"
#: lubuntu-notifier.py:325
msgid "How many security upgrades are available"
msgstr "Cuántas actualizaciones de seguridad hay disponibles"
#: lubuntu-notifier.py:330
msgid "Whether a release upgrade is required"
msgstr "Si se requiere una actualización de versión"
#: lubuntu-notifier.py:336
msgid "If a release upgrade is available, provide the version"
msgstr "Si hay una actualización de versión disponible, proporcione la versión"

160
po/et.po Normal file
View File

@ -0,0 +1,160 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-29 17:43-0600\n"
"PO-Revision-Date: 2023-05-27 13:36+0300\n"
"Last-Translator: vaba <vaba@riseup.net>\n"
"Language-Team: \n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: lubuntu-upgrader:132
msgid "Updating cache..."
msgstr "Vahemälu värskendamine..."
#: lubuntu-upgrader:138
msgid "Repairing interrupted upgrade if necessary..."
msgstr ""
#: lubuntu-upgrader:195 lubuntu-upgrader:198
msgid "Fetching"
msgstr "Tõmbamine"
#: lubuntu-upgrader:196 lubuntu-upgrader:198 lubuntu-upgrader:209
#: lubuntu-upgrader:212
msgid "of"
msgstr "/"
#: lubuntu-upgrader:208 lubuntu-upgrader:211
msgid "Downloaded"
msgstr "Allalaaditud"
#: lubuntu-upgrader:223 lubuntu-notifier.py:234
msgid "Upgrade finished"
msgstr "Uuendamine on lõpetatud"
#: lubuntu-upgrader:227 lubuntu-notifier.py:197 lubuntu-notifier.py:201
#: lubuntu-notifier.py:238
msgid "Reboot required"
msgstr "Vajalik taaskäivitus"
#: lubuntu-upgrader:231
msgid "With some Errors"
msgstr "Mõnede vigadega"
#: lubuntu-upgrader:232
msgid "Error Resume:"
msgstr "Viga jätkamisel:"
#: lubuntu-upgrader:283
msgid "Update Cache Finished"
msgstr "Vahemälu värskendamine on lõpetatud"
#: lubuntu-upgrader:404
msgid "Repair Finished (if repair was needed)"
msgstr ""
#: lubuntu-upgrader:432
msgid ""
"Please run this software with administrative rights.To do so, run this "
"program with lxqt-sudo."
msgstr ""
"Käivitage see tarkvara administraatoriõigustega. Selleks käivitage see "
"programm lxqt-sudo abil."
#: lubuntu-upgrader:454
msgid "Update Cache Before Upgrade"
msgstr "Värskendage vahemälu enne versiooniuuendust"
#: lubuntu-upgrader:459
msgid "Full upgrade same as dist-upgrade"
msgstr "Täielik uuendus on sama, mis dist-upgrade"
#: lubuntu-notifier.py:76
#, python-format
msgid "Error: Opening the cache (%s)"
msgstr ""
#: lubuntu-notifier.py:95 lubuntu-notifier.py:101
msgid "Affected Packages"
msgstr "Mõjutatud paketid"
#: lubuntu-notifier.py:96
msgid "Security"
msgstr ""
#: lubuntu-notifier.py:141
msgid "There are upgrades available. Do you want to do a system upgrade?"
msgstr "Saadaval on uuendused. Kas soovite süsteemi uuendada?"
#: lubuntu-notifier.py:144
msgid "This will mean packages could be upgraded, installed or removed."
msgstr "See tähendab, et pakette saab uuendada, installida või eemaldada."
#: lubuntu-notifier.py:149
#, fuzzy
msgid " is a security upgrade."
msgstr "Kui palju turvauuendusi on saadaval"
#: lubuntu-notifier.py:151
#, fuzzy
msgid " are security upgrades."
msgstr "Kui palju turvauuendusi on saadaval"
#: lubuntu-notifier.py:154
msgid "Remove"
msgstr "Eemalda"
#: lubuntu-notifier.py:161
msgid "Install"
msgstr "Paigalda"
#: lubuntu-notifier.py:176
msgid "Upgrade"
msgstr "Uuenda"
#: lubuntu-notifier.py:222
msgid "Upgrading..."
msgstr "Uuendamine..."
#: lubuntu-notifier.py:276
msgid "A new version of Lubuntu"
msgstr ""
#: lubuntu-notifier.py:277
msgid "is available. Would you like to install it?"
msgstr ""
#: lubuntu-notifier.py:279
msgid "A new version of Lubuntu is available. Would you like to install it?"
msgstr ""
#: lubuntu-notifier.py:315
msgid "Define software/app to open for upgrade"
msgstr "Uuendamiseks avatava tarkvara/rakenduse määratlemine"
#: lubuntu-notifier.py:320
msgid "How many upgrades are available"
msgstr "Kui palju uuendusi on saadaval"
#: lubuntu-notifier.py:325
msgid "How many security upgrades are available"
msgstr "Kui palju turvauuendusi on saadaval"
#: lubuntu-notifier.py:330
msgid "Whether a release upgrade is required"
msgstr ""
#: lubuntu-notifier.py:336
msgid "If a release upgrade is available, provide the version"
msgstr ""

160
po/eu.po Normal file
View File

@ -0,0 +1,160 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-29 17:43-0600\n"
"PO-Revision-Date: 2023-12-01 16:18+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.1\n"
#: lubuntu-upgrader:132
msgid "Updating cache..."
msgstr "Cachea eguneratzen..."
#: lubuntu-upgrader:138
msgid "Repairing interrupted upgrade if necessary..."
msgstr "Beharrezkoa bada etendako bertsio-berritzea konpontzen..."
#: lubuntu-upgrader:195 lubuntu-upgrader:198
msgid "Fetching"
msgstr "Lortzen"
#: lubuntu-upgrader:196 lubuntu-upgrader:198 lubuntu-upgrader:209
#: lubuntu-upgrader:212
msgid "of"
msgstr "-ren"
#: lubuntu-upgrader:208 lubuntu-upgrader:211
msgid "Downloaded"
msgstr "Deskargatuta"
#: lubuntu-upgrader:223 lubuntu-notifier.py:234
msgid "Upgrade finished"
msgstr "Berritzea amaitu da"
#: lubuntu-upgrader:227 lubuntu-notifier.py:197 lubuntu-notifier.py:201
#: lubuntu-notifier.py:238
msgid "Reboot required"
msgstr "Berrabiarazi behar da"
#: lubuntu-upgrader:231
msgid "With some Errors"
msgstr "Akats batzuekin"
#: lubuntu-upgrader:232
msgid "Error Resume:"
msgstr "Errorea berekin:"
#: lubuntu-upgrader:283
msgid "Update Cache Finished"
msgstr "Eguneratu cachea amaitu da"
#: lubuntu-upgrader:404
msgid "Repair Finished (if repair was needed)"
msgstr "Konponketa amaituta (konponketa behar izanez gero)"
#: lubuntu-upgrader:432
msgid ""
"Please run this software with administrative rights.To do so, run this "
"program with lxqt-sudo."
msgstr ""
"Exekutatu software hau administrazio-eskubideekin. Horretarako, exekutatu "
"programa hau lxqt-sudo-rekin."
#: lubuntu-upgrader:454
msgid "Update Cache Before Upgrade"
msgstr "Eguneratu cachea Berritu aurretik"
#: lubuntu-upgrader:459
msgid "Full upgrade same as dist-upgrade"
msgstr "Bertsio osoa dist-berritze berdina da"
#: lubuntu-notifier.py:76
#, python-format
msgid "Error: Opening the cache (%s)"
msgstr "Errorea: cachea irekitzen (%s)"
#: lubuntu-notifier.py:95 lubuntu-notifier.py:101
msgid "Affected Packages"
msgstr "Eragindako paketeak"
#: lubuntu-notifier.py:96
msgid "Security"
msgstr "Segurtasuna"
#: lubuntu-notifier.py:141
msgid "There are upgrades available. Do you want to do a system upgrade?"
msgstr "Berritzeak daude eskuragarri. Sistema berritzea nahi duzu?"
#: lubuntu-notifier.py:144
msgid "This will mean packages could be upgraded, installed or removed."
msgstr ""
"Horrek esan nahi du paketeak berritu, instalatu edo kendu daitezkeela."
#: lubuntu-notifier.py:149
msgid " is a security upgrade."
msgstr " segurtasun-berritzea da."
#: lubuntu-notifier.py:151
msgid " are security upgrades."
msgstr " segurtasun-berrikuntzak dira."
#: lubuntu-notifier.py:154
msgid "Remove"
msgstr "Kendu"
#: lubuntu-notifier.py:161
msgid "Install"
msgstr "Instalatu"
#: lubuntu-notifier.py:176
msgid "Upgrade"
msgstr "Eguneratu"
#: lubuntu-notifier.py:222
msgid "Upgrading..."
msgstr "Berritzen..."
#: lubuntu-notifier.py:276
msgid "A new version of Lubuntu"
msgstr "Lubuntu-ren bertsio berria"
#: lubuntu-notifier.py:277
msgid "is available. Would you like to install it?"
msgstr "eskuragarri dago. Instalatu nahiko zenuke?"
#: lubuntu-notifier.py:279
msgid "A new version of Lubuntu is available. Would you like to install it?"
msgstr ""
"Lubuntu-ren bertsio berri bat dago eskuragarri. Instalatu nahiko zenuke?"
#: lubuntu-notifier.py:315
msgid "Define software/app to open for upgrade"
msgstr "Definitu berritzeko irekitzeko softwarea/aplikazioa"
#: lubuntu-notifier.py:320
msgid "How many upgrades are available"
msgstr "Zenbat berritze eskuragarri dauden"
#: lubuntu-notifier.py:325
msgid "How many security upgrades are available"
msgstr "Zenbat segurtasun-berrikuntza dauden eskuragarri"
#: lubuntu-notifier.py:330
msgid "Whether a release upgrade is required"
msgstr "Oharra bertsio-berritzea beharrezkoa den ala ez"
#: lubuntu-notifier.py:336
msgid "If a release upgrade is available, provide the version"
msgstr "Bertsio-berritze bat eskuragarri badago, eman bertsioa"

162
po/gl.po Normal file
View File

@ -0,0 +1,162 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-29 17:43-0600\n"
"PO-Revision-Date: 2023-12-01 16:33+0100\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.4.1\n"
#: lubuntu-upgrader:132
msgid "Updating cache..."
msgstr "Actualizando a caché..."
#: lubuntu-upgrader:138
msgid "Repairing interrupted upgrade if necessary..."
msgstr "Reparando a actualización interrompida se é necesario..."
#: lubuntu-upgrader:195 lubuntu-upgrader:198
msgid "Fetching"
msgstr "Buscando"
#: lubuntu-upgrader:196 lubuntu-upgrader:198 lubuntu-upgrader:209
#: lubuntu-upgrader:212
msgid "of"
msgstr "de"
#: lubuntu-upgrader:208 lubuntu-upgrader:211
msgid "Downloaded"
msgstr "Descargado"
#: lubuntu-upgrader:223 lubuntu-notifier.py:234
msgid "Upgrade finished"
msgstr "Actualización rematada"
#: lubuntu-upgrader:227 lubuntu-notifier.py:197 lubuntu-notifier.py:201
#: lubuntu-notifier.py:238
msgid "Reboot required"
msgstr "É necesario reiniciar"
#: lubuntu-upgrader:231
msgid "With some Errors"
msgstr "Con algúns erros"
#: lubuntu-upgrader:232
msgid "Error Resume:"
msgstr "Erro Reanudar:"
#: lubuntu-upgrader:283
msgid "Update Cache Finished"
msgstr "Actualización da caché rematada"
#: lubuntu-upgrader:404
msgid "Repair Finished (if repair was needed)"
msgstr "Reparación rematada (se fose necesaria a reparación)"
#: lubuntu-upgrader:432
msgid ""
"Please run this software with administrative rights.To do so, run this "
"program with lxqt-sudo."
msgstr ""
"Executa este software con dereitos administrativos. Para facelo, executa "
"este programa con lxqt-sudo."
#: lubuntu-upgrader:454
msgid "Update Cache Before Upgrade"
msgstr "Actualiza a caché antes da actualización"
#: lubuntu-upgrader:459
msgid "Full upgrade same as dist-upgrade"
msgstr "Actualización completa igual que dist-upgrade"
#: lubuntu-notifier.py:76
#, python-format
msgid "Error: Opening the cache (%s)"
msgstr "Erro: ao abrir a caché (%s)"
#: lubuntu-notifier.py:95 lubuntu-notifier.py:101
msgid "Affected Packages"
msgstr "Paquetes afectados"
#: lubuntu-notifier.py:96
msgid "Security"
msgstr "Seguridade"
#: lubuntu-notifier.py:141
msgid "There are upgrades available. Do you want to do a system upgrade?"
msgstr ""
"Hai actualizacións dispoñibles. Queres facer unha actualización do "
"sistema?"
#: lubuntu-notifier.py:144
msgid "This will mean packages could be upgraded, installed or removed."
msgstr ""
"Isto significará que os paquetes poderían actualizarse, instalarse ou "
"eliminarse."
#: lubuntu-notifier.py:149
msgid " is a security upgrade."
msgstr " é unha actualización de seguridade."
#: lubuntu-notifier.py:151
msgid " are security upgrades."
msgstr " son actualizacións de seguridade."
#: lubuntu-notifier.py:154
msgid "Remove"
msgstr "Quitar"
#: lubuntu-notifier.py:161
msgid "Install"
msgstr "Instalar"
#: lubuntu-notifier.py:176
msgid "Upgrade"
msgstr "Actualizar"
#: lubuntu-notifier.py:222
msgid "Upgrading..."
msgstr "Actualizando..."
#: lubuntu-notifier.py:276
msgid "A new version of Lubuntu"
msgstr "Unha nova versión de Lubuntu"
#: lubuntu-notifier.py:277
msgid "is available. Would you like to install it?"
msgstr "está dispoñible. Gustaríache instalalo?"
#: lubuntu-notifier.py:279
msgid "A new version of Lubuntu is available. Would you like to install it?"
msgstr "Hai unha nova versión de Lubuntu dispoñible. Gustaríache instalalo?"
#: lubuntu-notifier.py:315
msgid "Define software/app to open for upgrade"
msgstr "Define o software/aplicación para abrir para actualizar"
#: lubuntu-notifier.py:320
msgid "How many upgrades are available"
msgstr "Cantas actualizacións hai dispoñibles"
#: lubuntu-notifier.py:325
msgid "How many security upgrades are available"
msgstr "Cantas actualizacións de seguridade hai dispoñibles"
#: lubuntu-notifier.py:330
msgid "Whether a release upgrade is required"
msgstr "Indica se é necesaria unha actualización de versión"
#: lubuntu-notifier.py:336
msgid "If a release upgrade is available, provide the version"
msgstr "Se hai unha actualización dispoñible, proporcione a versión"

152
po/ja.po Normal file
View File

@ -0,0 +1,152 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-29 17:43-0600\n"
"PO-Revision-Date: 2022-03-15 01:45+0900\n"
"Last-Translator: FuRuYa7\n"
"Language-Team: \n"
"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: lubuntu-upgrader:132
msgid "Updating cache..."
msgstr "キャッシュを更新中..."
#: lubuntu-upgrader:138
msgid "Repairing interrupted upgrade if necessary..."
msgstr ""
#: lubuntu-upgrader:195 lubuntu-upgrader:198
msgid "Fetching"
msgstr "読み込み中"
# "Note that in Japanese, translating into 'of' reverses the meaning."
#: lubuntu-upgrader:196 lubuntu-upgrader:198 lubuntu-upgrader:209
#: lubuntu-upgrader:212
msgid "of"
msgstr " / "
#: lubuntu-upgrader:208 lubuntu-upgrader:211
msgid "Downloaded"
msgstr "ダウンロード済みです"
#: lubuntu-upgrader:223 lubuntu-notifier.py:234
msgid "Upgrade finished"
msgstr "アップグレードが完了しました"
#: lubuntu-upgrader:227 lubuntu-notifier.py:197 lubuntu-notifier.py:201
#: lubuntu-notifier.py:238
msgid "Reboot required"
msgstr "再起動が必要です"
#: lubuntu-upgrader:231
msgid "With some Errors"
msgstr "いくつかのエラーがあります"
#: lubuntu-upgrader:232
msgid "Error Resume:"
msgstr "エラーからの再開:"
#: lubuntu-upgrader:283
msgid "Update Cache Finished"
msgstr "キャッシュの更新が完了しました"
#: lubuntu-upgrader:404
msgid "Repair Finished (if repair was needed)"
msgstr ""
#: lubuntu-upgrader:432
msgid ""
"Please run this software with administrative rights.To do so, run this "
"program with lxqt-sudo."
msgstr "管理者権限で実行してください。lxqt-sudo を使用して実行します。"
#: lubuntu-upgrader:454
msgid "Update Cache Before Upgrade"
msgstr "アップグレード前にキャッシュを更新します"
#: lubuntu-upgrader:459
msgid "Full upgrade same as dist-upgrade"
msgstr "dist-upgrade と同じフルアップグレード"
#: lubuntu-notifier.py:76
#, python-format
msgid "Error: Opening the cache (%s)"
msgstr "エラー: キャッシュ (%s) を開いています"
#: lubuntu-notifier.py:95 lubuntu-notifier.py:101
msgid "Affected Packages"
msgstr "影響を受けるパッケージ"
#: lubuntu-notifier.py:96
msgid "Security"
msgstr "セキュリティ"
#: lubuntu-notifier.py:141
msgid "There are upgrades available. Do you want to do a system upgrade?"
msgstr ""
"利用可能なアップグレードがあります。システムのアップグレードを行いますか?"
#: lubuntu-notifier.py:144
msgid "This will mean packages could be upgraded, installed or removed."
msgstr "パッケージがアップグレード、インストール、または削除されます。"
#: lubuntu-notifier.py:149
msgid " is a security upgrade."
msgstr " 個がセキュリティのアップグレードです。"
#: lubuntu-notifier.py:151
msgid " are security upgrades."
msgstr " 個がセキュリティのアップグレードです。"
#: lubuntu-notifier.py:154
msgid "Remove"
msgstr "削除"
#: lubuntu-notifier.py:161
msgid "Install"
msgstr "インストール"
#: lubuntu-notifier.py:176
msgid "Upgrade"
msgstr "アップグレード"
#: lubuntu-notifier.py:222
msgid "Upgrading..."
msgstr "アップグレード中..."
#: lubuntu-notifier.py:276
msgid "A new version of Lubuntu"
msgstr ""
#: lubuntu-notifier.py:277
msgid "is available. Would you like to install it?"
msgstr ""
#: lubuntu-notifier.py:279
msgid "A new version of Lubuntu is available. Would you like to install it?"
msgstr ""
#: lubuntu-notifier.py:315
msgid "Define software/app to open for upgrade"
msgstr "アップグレードで開くソフトウェア/アプリを定義します"
#: lubuntu-notifier.py:320
msgid "How many upgrades are available"
msgstr "利用可能なアップグレードの数"
#: lubuntu-notifier.py:325
msgid "How many security upgrades are available"
msgstr "利用可能なセキュリティアップグレードの数"
#: lubuntu-notifier.py:330
msgid "Whether a release upgrade is required"
msgstr ""
#: lubuntu-notifier.py:336
msgid "If a release upgrade is available, provide the version"
msgstr ""

View File

@ -0,0 +1,155 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-11-29 17:43-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: lubuntu-upgrader:132
msgid "Updating cache..."
msgstr ""
#: lubuntu-upgrader:138
msgid "Repairing interrupted upgrade if necessary..."
msgstr ""
#: lubuntu-upgrader:195 lubuntu-upgrader:198
msgid "Fetching"
msgstr ""
#: lubuntu-upgrader:196 lubuntu-upgrader:198 lubuntu-upgrader:209
#: lubuntu-upgrader:212
msgid "of"
msgstr ""
#: lubuntu-upgrader:208 lubuntu-upgrader:211
msgid "Downloaded"
msgstr ""
#: lubuntu-upgrader:223 lubuntu-notifier.py:234
msgid "Upgrade finished"
msgstr ""
#: lubuntu-upgrader:227 lubuntu-notifier.py:197 lubuntu-notifier.py:201
#: lubuntu-notifier.py:238
msgid "Reboot required"
msgstr ""
#: lubuntu-upgrader:231
msgid "With some Errors"
msgstr ""
#: lubuntu-upgrader:232
msgid "Error Resume:"
msgstr ""
#: lubuntu-upgrader:283
msgid "Update Cache Finished"
msgstr ""
#: lubuntu-upgrader:404
msgid "Repair Finished (if repair was needed)"
msgstr ""
#: lubuntu-upgrader:432
msgid ""
"Please run this software with administrative rights.To do so, run this "
"program with lxqt-sudo."
msgstr ""
#: lubuntu-upgrader:454
msgid "Update Cache Before Upgrade"
msgstr ""
#: lubuntu-upgrader:459
msgid "Full upgrade same as dist-upgrade"
msgstr ""
#: lubuntu-notifier.py:76
#, python-format
msgid "Error: Opening the cache (%s)"
msgstr ""
#: lubuntu-notifier.py:95 lubuntu-notifier.py:101
msgid "Affected Packages"
msgstr ""
#: lubuntu-notifier.py:96
msgid "Security"
msgstr ""
#: lubuntu-notifier.py:141
msgid "There are upgrades available. Do you want to do a system upgrade?"
msgstr ""
#: lubuntu-notifier.py:144
msgid "This will mean packages could be upgraded, installed or removed."
msgstr ""
#: lubuntu-notifier.py:149
msgid " is a security upgrade."
msgstr ""
#: lubuntu-notifier.py:151
msgid " are security upgrades."
msgstr ""
#: lubuntu-notifier.py:154
msgid "Remove"
msgstr ""
#: lubuntu-notifier.py:161
msgid "Install"
msgstr ""
#: lubuntu-notifier.py:176
msgid "Upgrade"
msgstr ""
#: lubuntu-notifier.py:222
msgid "Upgrading..."
msgstr ""
#: lubuntu-notifier.py:276
msgid "A new version of Lubuntu"
msgstr ""
#: lubuntu-notifier.py:277
msgid "is available. Would you like to install it?"
msgstr ""
#: lubuntu-notifier.py:279
msgid "A new version of Lubuntu is available. Would you like to install it?"
msgstr ""
#: lubuntu-notifier.py:315
msgid "Define software/app to open for upgrade"
msgstr ""
#: lubuntu-notifier.py:320
msgid "How many upgrades are available"
msgstr ""
#: lubuntu-notifier.py:325
msgid "How many security upgrades are available"
msgstr ""
#: lubuntu-notifier.py:330
msgid "Whether a release upgrade is required"
msgstr ""
#: lubuntu-notifier.py:336
msgid "If a release upgrade is available, provide the version"
msgstr ""

1
resources Normal file
View File

@ -0,0 +1 @@
https://apt-team.pages.debian.net/python-apt/library/apt_pkg.html

View File

@ -17,13 +17,48 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from setuptools import setup
import subprocess
import os
from distutils.command.clean import clean
class MyClean(clean):
def run(self):
# Execute the classic clean command
super().run()
# Custom clean
print("Removing translations")
subprocess.run(['rm', '-rf', 'translations'])
def add_mo_files(data_files):
app_name = 'lubuntu-update-notifier'
mo = ''
subprocess.run(['mkdir', 'translations/'])
for f in os.listdir('po'):
loc, ext = os.path.splitext(f)
if ext == '.po':
mo = app_name + '.mo'
subprocess.run(['mkdir', 'translations/' + loc])
subprocess.run(['msgfmt', '-o', 'translations/' + loc + '/' + mo,
'po/' + f], check=True)
data_files.append(('share/locale/' + loc + '/LC_MESSAGES/',
['translations/' + loc + '/' + mo]))
return data_files
data_files=[('libexec/lubuntu-update-notifier/',
['lubuntu-upg-notifier.sh', 'lubuntu-notifier.py']),
('share/applications', ['data/upg-apply.desktop'])]
setup(
name="lubuntu-update-notifier",
version="0.1",
version="0.4dev",
packages=['lubuntu-update-notifier'],
scripts=['lubuntu-upgrader'],
data_files=[('libexec/lubuntu-update-notifier/',
['lubuntu-upg-notifier.sh', 'lubuntu-notifier.py']),
('share/applications', ['data/upg-apply.desktop'])]
data_files=add_mo_files(data_files),
cmdclass={'clean': MyClean}
)

7
translation_helper Executable file
View File

@ -0,0 +1,7 @@
#!/bin/bash
xgettext lubuntu-upgrader lubuntu-notifier.py --language=Python -o po/lubuntu-update-notifier.pot
for po_file in po/*.po; do
msgmerge -U "$po_file" po/lubuntu-update-notifier.pot
done