From 6c7779ef230e49048420b99fbedc04107bf3e865 Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Mon, 15 Jul 2024 13:13:57 -0400 Subject: [PATCH 01/50] Fix #371 --- safeeyes/platform/io.github.slgobinath.SafeEyes.desktop | 1 + 1 file changed, 1 insertion(+) diff --git a/safeeyes/platform/io.github.slgobinath.SafeEyes.desktop b/safeeyes/platform/io.github.slgobinath.SafeEyes.desktop index 5d88bb9a..e3561a4c 100644 --- a/safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +++ b/safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -24,6 +24,7 @@ Comment[ta]=உங்கள் கண்களை சோர்வடையாத Comment[tr]=Gözünüzü yorgunluğa karşı koruyun Comment[uk]=Захистіть свої очі від втоми Comment[vi]=Bảo vệ đôi mắt của bạn khỏi sự mệt mỏi +GenericName=RSI Prevention Exec=env GDK_BACKEND=x11 safeeyes Icon=io.github.slgobinath.SafeEyes Terminal=false From 4a54a5143bff700d3163a4cb421e5033b5e84449 Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Mon, 15 Jul 2024 13:15:33 -0400 Subject: [PATCH 02/50] update translation for desktop file --- safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/safeeyes.pot | 3 +++ safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po | 4 ++++ safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po | 4 ++++ 42 files changed, 167 insertions(+) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index ccb3b1da..17e1ba99 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -538,6 +538,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "مهلة تصفير الإعدادات (ساعات)" diff --git a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po index 76cfe60f..abac29dc 100644 --- a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po @@ -523,3 +523,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po index 9873cb68..f02951f3 100644 --- a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po @@ -527,3 +527,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po index 698f7b94..f1d76abe 100644 --- a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po @@ -534,6 +534,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval pro resetování statistik (v hodinách)" diff --git a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po index e86b54a6..a851c123 100644 --- a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po @@ -527,6 +527,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval for nulstilling af statistik (i timer)" diff --git a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po index b41880c3..98b33075 100644 --- a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po @@ -536,6 +536,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Zeit bis die Statistik zurückgesetzt wird (in Stunden)" diff --git a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po index 7ed23c79..e0122f77 100644 --- a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po @@ -529,6 +529,10 @@ msgstr "Limit how many breaks can be skipped or postponed in a row" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "Skipped or postponed %d/%d breaks in a row" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "RSI Prevention" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval to reset statistics (in hours)" diff --git a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po index 001a017a..f2159dcf 100644 --- a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po @@ -529,6 +529,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intertempo por restarigi statistikojn (en horoj)" diff --git a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po index 95eba7ef..40d76ba7 100644 --- a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po @@ -537,6 +537,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervalo para restablecer estadísticas (en horas)" diff --git a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po index f790a41d..1dea9df5 100644 --- a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po @@ -528,6 +528,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistika lähtestamise intervall (tundides)" diff --git a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po index c7206f0f..d7f2e2ea 100644 --- a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po @@ -533,3 +533,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index 36ea216e..ec0afe41 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -528,6 +528,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "فاصله برای تنظیم مجدد آمار (در چند ساعت)" diff --git a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po index c14df97f..a0dd520b 100644 --- a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po @@ -541,6 +541,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Fréquence de réinitialisation (en heures)" diff --git a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po index df59a560..3948beef 100644 --- a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po @@ -526,6 +526,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "הפרש בין איפוסי סטטיסטיקה (בשעות)" diff --git a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po index 659a2649..442307fc 100644 --- a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po @@ -523,3 +523,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po index 78bcbab2..00f3c0ff 100644 --- a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po @@ -524,3 +524,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po index 57112c6f..6b105fc9 100644 --- a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po @@ -529,6 +529,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval untuk mengatur ulang statistik (dalam jam)" diff --git a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po index 215703c8..2a718eb0 100644 --- a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po @@ -534,3 +534,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po index f4387b6f..5029564e 100644 --- a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po @@ -522,3 +522,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po index 830d5e64..8167b9b8 100644 --- a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po @@ -523,6 +523,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "통계 초기화 간격 (시)" diff --git a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po index e86acbc0..f4dcfebf 100644 --- a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po @@ -536,6 +536,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistikos atstatymo intervalas (valandomis)" diff --git a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po index ee59fd46..8c9c0751 100644 --- a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po @@ -442,5 +442,9 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistikas atstatīšanas intervāls (stundās)" diff --git a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po index 5d9dd3ca..88095195 100644 --- a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po @@ -525,3 +525,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po index a408a85f..70548d32 100644 --- a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po @@ -524,3 +524,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po index a729bd70..f9dd9abf 100644 --- a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po @@ -531,6 +531,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #, fuzzy #~ msgid "Interval to reset statistics (in hours)" diff --git a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po index 9330267d..1ddefdf5 100644 --- a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po @@ -534,6 +534,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Tussenpoos om statistieken te herstellen (in uren)" diff --git a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po index e4eedb32..0c9d74a1 100644 --- a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po @@ -534,6 +534,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Czas do wyzerowania statystyk (w godzinach)" diff --git a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po index df5c7171..01e0bed3 100644 --- a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po @@ -532,6 +532,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervalo para reiniciar estatísticas (em horas)" diff --git a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po index 190aa0a0..b454b41a 100644 --- a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po @@ -535,3 +535,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po index ef5d90e5..68b32802 100644 --- a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po @@ -535,6 +535,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Интервал для сброса статистики (в часах)" diff --git a/safeeyes/config/locale/safeeyes.pot b/safeeyes/config/locale/safeeyes.pot index 293d3a29..665e8e0f 100644 --- a/safeeyes/config/locale/safeeyes.pot +++ b/safeeyes/config/locale/safeeyes.pot @@ -508,3 +508,6 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po index 38286d71..85783c0b 100644 --- a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po @@ -531,3 +531,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po index 44d69e58..b8acfe2f 100644 --- a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po @@ -538,3 +538,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po index 034d72ba..39c1aa40 100644 --- a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po @@ -528,6 +528,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervall för att återställa statistik (i timmar)" diff --git a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po index 870a811d..9aac0309 100644 --- a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po @@ -531,6 +531,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "திரை நேரத்தை மீட்டமைப்பதற்கான இடைவேளை (மணித்தியாலங்களில்)" diff --git a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po index 830d9154..f28bf84d 100644 --- a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po @@ -532,6 +532,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "İstatistikleri sıfırlama aralığı (saat olarak)" diff --git a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po index a93d9d96..cd2ac114 100644 --- a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po @@ -519,3 +519,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po index c009d2ca..0c63cd23 100644 --- a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po @@ -535,6 +535,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Інтервал скидання статистики (в годинах)" diff --git a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po index add67425..3b4f4ad7 100644 --- a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po @@ -519,3 +519,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po index 92342d4a..047a99f9 100644 --- a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po @@ -528,3 +528,7 @@ msgstr "" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" + +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" diff --git a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po index fd427177..8c47259d 100644 --- a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po @@ -524,6 +524,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "重置统计间隔(小时)" diff --git a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po index 1aee1843..f50f34a7 100644 --- a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po @@ -521,6 +521,10 @@ msgstr "" msgid "Skipped or postponed %d/%d breaks in a row" msgstr "" +# safeeyes/platform/io.github.slgobinath.SafeEyes.desktop +msgid "RSI Prevention" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "重置數據間隔(時)" From 8fb1eb911db21deda0f7c935d9b2ab7cc3501a0e Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Wed, 17 Jul 2024 10:51:36 -0400 Subject: [PATCH 03/50] add python3-packaging to fedora --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a8bba1f..813043e8 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ sudo apt-get install safeeyes ### Fedora ```bash -sudo dnf install libappindicator-gtk3 python3-psutil cairo-devel python3-devel gobject-introspection-devel cairo-gobject-devel +sudo dnf install libappindicator-gtk3 python3-psutil python3-packaging cairo-devel python3-devel gobject-introspection-devel cairo-gobject-devel sudo pip3 install safeeyes sudo gtk-update-icon-cache /usr/share/icons/hicolor ``` From c23c84f6790dcd7dabe2c90f78aee3436c2d2cd9 Mon Sep 17 00:00:00 2001 From: deltragon Date: Wed, 17 Jul 2024 17:48:34 +0200 Subject: [PATCH 04/50] fix gtk startup order Ensure that the Gtk.Application is fully started up before other Gtk/Gdk methods are called. --- safeeyes/safeeyes.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/safeeyes/safeeyes.py b/safeeyes/safeeyes.py index a10c4a28..65ce8bfd 100644 --- a/safeeyes/safeeyes.py +++ b/safeeyes/safeeyes.py @@ -51,7 +51,7 @@ class SafeEyes(Gtk.Application): def __init__(self, system_locale, config, cli_args): super().__init__( application_id="io.github.slgobinath.SafeEyes", - flags=Gio.ApplicationFlags.IS_SERVICE + flags=Gio.ApplicationFlags.DEFAULT_FLAGS ) self.active = False self.break_screen = None @@ -63,12 +63,24 @@ def __init__(self, system_locale, config, cli_args): self.rpc_server = None self._status = '' self.cli_args = cli_args + self.system_locale = system_locale + + def start(self): + """ + Start Safe Eyes + """ + self.run() + + def do_startup(self): + Gtk.Application.do_startup(self) + + logging.info('Starting up Application') # Initialize the Safe Eyes Context self.context['version'] = SAFE_EYES_VERSION self.context['desktop'] = utility.desktop_environment() self.context['is_wayland'] = utility.is_wayland() - self.context['locale'] = system_locale + self.context['locale'] = self.system_locale self.context['api'] = {} self.context['api']['show_settings'] = lambda: utility.execute_main_thread( self.show_settings) @@ -108,10 +120,6 @@ def __init__(self, system_locale, config, cli_args): atexit.register(self.persist_session) - def start(self): - """ - Start Safe Eyes - """ if self.config.get('use_rpc_server', True): self.__start_rpc_server() @@ -122,10 +130,8 @@ def start(self): self.safe_eyes_core.start() self.handle_system_suspend() - self.run() - - def do_startup(self): - Gtk.Application.do_startup(self) + def do_activate(self): + logging.info('Application activated') if self.cli_args.about: self.show_about() From 8553693ddf8ca69fc1bea551147a484339b13006 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 31 Dec 2023 00:01:57 +0100 Subject: [PATCH 05/50] switch from dbus-python to gio --- debian/control | 2 +- safeeyes/plugins/mediacontrol/config.json | 2 +- safeeyes/plugins/mediacontrol/plugin.py | 34 +++++++++++++++++------ safeeyes/safeeyes.py | 24 ++++++++++++---- setup.py | 1 - 5 files changed, 45 insertions(+), 18 deletions(-) diff --git a/debian/control b/debian/control index 85544b33..e72dac34 100644 --- a/debian/control +++ b/debian/control @@ -9,7 +9,7 @@ Homepage: https://github.com/slgobinath/SafeEyes/ Package: safeeyes Architecture: all -Depends: ${misc:Depends}, ${python3:Depends}, gir1.2-ayatanaappindicator3-0.1, python3 (>= 3.10.0), python3-xlib, python3-dbus, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter, python3-packaging +Depends: ${misc:Depends}, ${python3:Depends}, gir1.2-ayatanaappindicator3-0.1, python3 (>= 3.10.0), python3-xlib, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter, python3-packaging Description: Safe Eyes Safe Eyes is a simple tool to remind you to take periodic breaks for your eyes. This is essential for anyone spending more time on the computer to avoid eye strain and other physical problems. . diff --git a/safeeyes/plugins/mediacontrol/config.json b/safeeyes/plugins/mediacontrol/config.json index b4bdcef3..5c5d3326 100644 --- a/safeeyes/plugins/mediacontrol/config.json +++ b/safeeyes/plugins/mediacontrol/config.json @@ -5,7 +5,7 @@ "version": "0.0.1" }, "dependencies": { - "python_modules": ["dbus"], + "python_modules": [], "shell_commands": [], "operating_systems": [], "desktop_environments": [], diff --git a/safeeyes/plugins/mediacontrol/plugin.py b/safeeyes/plugins/mediacontrol/plugin.py index df471cd3..5c43ac33 100644 --- a/safeeyes/plugins/mediacontrol/plugin.py +++ b/safeeyes/plugins/mediacontrol/plugin.py @@ -22,12 +22,11 @@ import logging import os -import dbus import re import gi from safeeyes.model import TrayAction gi.require_version('Gtk', '3.0') -from gi.repository import Gtk +from gi.repository import Gtk, Gio tray_icon_path = None @@ -37,13 +36,31 @@ def __active_players(): List of all media players which are playing now. """ players = [] - bus = dbus.SessionBus() - for service in bus.list_names(): + dbus_proxy = Gio.DBusProxy.new_for_bus_sync( + bus_type=Gio.BusType.SESSION, + flags=Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, + info=None, + name='org.freedesktop.DBus', + object_path='/org/freedesktop/DBus', + interface_name='org.freedesktop.DBus', + cancellable=None, + ) + + for service in dbus_proxy.ListNames(): if re.match('org.mpris.MediaPlayer2.', service): - player = bus.get_object(service, "/org/mpris/MediaPlayer2") - interface = dbus.Interface(player, 'org.freedesktop.DBus.Properties') - status = str(interface.Get('org.mpris.MediaPlayer2.Player', 'PlaybackStatus')).lower() + player = Gio.DBusProxy.new_for_bus_sync( + bus_type=Gio.BusType.SESSION, + flags=Gio.DBusProxyFlags.NONE, + info=None, + name=service, + object_path='/org/mpris/MediaPlayer2', + interface_name='org.mpris.MediaPlayer2.Player', + cancellable=None, + ) + + status = player.get_cached_property('PlaybackStatus').unpack().lower() + if status == "playing": players.append(player) return players @@ -54,8 +71,7 @@ def __pause_players(players): Pause all playing media players using dbus. """ for player in players: - interface = dbus.Interface(player, dbus_interface='org.mpris.MediaPlayer2.Player') - interface.Pause() + player.Pause() def init(ctx, safeeyes_config, plugin_config): diff --git a/safeeyes/safeeyes.py b/safeeyes/safeeyes.py index a10c4a28..7bb7bfdd 100644 --- a/safeeyes/safeeyes.py +++ b/safeeyes/safeeyes.py @@ -25,9 +25,7 @@ import os from threading import Timer -import dbus import gi -from dbus.mainloop.glib import DBusGMainLoop from safeeyes import utility from safeeyes.ui.about_dialog import AboutDialog from safeeyes.ui.break_screen import BreakScreen @@ -189,14 +187,28 @@ def handle_suspend_callback(self, sleeping): self.plugins_manager.start() self.safe_eyes_core.start() + def handle_suspend_signal(self, proxy, sender, signal, parameters): + if signal != "PrepareForSleep": + return + + (sleeping, ) = parameters + + self.handle_suspend_callback(sleeping) + def handle_system_suspend(self): """ Setup system suspend listener. """ - DBusGMainLoop(set_as_default=True) - bus = dbus.SystemBus() - bus.add_signal_receiver(self.handle_suspend_callback, 'PrepareForSleep', - 'org.freedesktop.login1.Manager', 'org.freedesktop.login1') + self.suspend_proxy = Gio.DBusProxy.new_for_bus_sync( + bus_type=Gio.BusType.SYSTEM, + flags=Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, + info=None, + name='org.freedesktop.login1', + object_path='/org/freedesktop/login1', + interface_name='org.freedesktop.login1.Manager', + cancellable=None, + ) + self.suspend_proxy.connect('g-signal', self.handle_suspend_signal) def on_skipped(self): """ diff --git a/setup.py b/setup.py index b8ef4d29..3e3f069a 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,6 @@ 'babel', 'psutil', 'croniter', - 'dbus-python', 'PyGObject', 'packaging', 'python-xlib' From ea2c74797804736cb43d7b1bd991ad9396a4eb19 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 31 Dec 2023 00:02:06 +0100 Subject: [PATCH 06/50] trayicon: migrate from libappindicator to statusnotifier --- README.md | 4 +- debian/control | 2 +- safeeyes/plugins/trayicon/plugin.py | 691 +++++++++++++++++++--------- 3 files changed, 474 insertions(+), 223 deletions(-) diff --git a/README.md b/README.md index 813043e8..550b5243 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ sudo apt-get install safeeyes ### Fedora ```bash -sudo dnf install libappindicator-gtk3 python3-psutil python3-packaging cairo-devel python3-devel gobject-introspection-devel cairo-gobject-devel +sudo dnf install python3-psutil python3-packaging cairo-devel python3-devel gobject-introspection-devel cairo-gobject-devel sudo pip3 install safeeyes sudo gtk-update-icon-cache /usr/share/icons/hicolor ``` @@ -105,9 +105,7 @@ flatpak install flathub io.github.slgobinath.SafeEyes Ensure to meet the following dependencies: -- gir1.2-appindicator3-0.1 or gir1.2-ayatanaappindicator3-0.1 - gir1.2-notify-0.7 -- libappindicator-gtk3 - python3-psutil - xprintidle (optional) - wlrctl (wayland optional) diff --git a/debian/control b/debian/control index e72dac34..c07cbb88 100644 --- a/debian/control +++ b/debian/control @@ -9,7 +9,7 @@ Homepage: https://github.com/slgobinath/SafeEyes/ Package: safeeyes Architecture: all -Depends: ${misc:Depends}, ${python3:Depends}, gir1.2-ayatanaappindicator3-0.1, python3 (>= 3.10.0), python3-xlib, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter, python3-packaging +Depends: ${misc:Depends}, ${python3:Depends}, python3 (>= 3.10.0), python3-xlib, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter, python3-packaging Description: Safe Eyes Safe Eyes is a simple tool to remind you to take periodic breaks for your eyes. This is essential for anyone spending more time on the computer to avoid eye strain and other physical problems. . diff --git a/safeeyes/plugins/trayicon/plugin.py b/safeeyes/plugins/trayicon/plugin.py index f8ba1e37..5c5a6bb3 100644 --- a/safeeyes/plugins/trayicon/plugin.py +++ b/safeeyes/plugins/trayicon/plugin.py @@ -20,14 +20,7 @@ from safeeyes.model import BreakType import gi gi.require_version('Gtk', '3.0') -try: - gi.require_version('AppIndicator3', '0.1') - from gi.repository import AppIndicator3 as appindicator -except: - #fall back to Ayatana - gi.require_version('AyatanaAppIndicator3', '0.1') - from gi.repository import AyatanaAppIndicator3 as appindicator -from gi.repository import Gtk +from gi.repository import Gio, GLib import logging from safeeyes import utility import threading @@ -37,11 +30,291 @@ Safe Eyes tray icon plugin """ -APPINDICATOR_ID = 'safeeyes_2' context = None tray_icon = None safeeyes_config = None +SNI_NODE_INFO = Gio.DBusNodeInfo.new_for_xml(""" + + + + + + + + + + + + + + + +""").interfaces[0] + +MENU_NODE_INFO = Gio.DBusNodeInfo.new_for_xml(""" + + + + + + + + + + + + + + + + + + + + + + + + + +""").interfaces[0] + +class DBusService: + def __init__(self, interface_info, object_path, bus): + self.interface_info = interface_info + self.bus = bus + self.object_path = object_path + self.registration_id = None + + def register(self): + self.registration_id = self.bus.register_object( + object_path=self.object_path, + interface_info=self.interface_info, + method_call_closure=self.on_method_call, + get_property_closure=self.on_get_property + ) + + if not self.registration_id: + raise GLib.Error(f"Failed to register object with path {self.object_path}") + + self.interface_info.cache_build() + + def unregister(self): + self.interface_info.cache_release() + + if self.registration_id is not None: + self.bus.unregister_object(self.registration_id) + self.registration_id = None + + def on_method_call(self, _connection, _sender, _path, _interface_name, method_name, parameters, invocation): + method_info = self.interface_info.lookup_method(method_name) + method = getattr(self, method_name) + result = method(*parameters.unpack()) + out_arg_types = "".join([arg.signature for arg in method_info.out_args]) + return_value = None + + if method_info.out_args: + return_value = GLib.Variant(f"({out_arg_types})", result) + + invocation.return_value(return_value) + + def on_get_property(self, _connection, _sender, _path, _interface_name, property_name): + property_info = self.interface_info.lookup_property(property_name) + return GLib.Variant(property_info.signature, getattr(self, property_name)) + + def emit_signal(self, signal_name, args = None): + signal_info = self.interface_info.lookup_signal(signal_name) + if len(signal_info.args) == 0: + parameters = None + else: + arg_types = "".join([arg.signature for arg in signal_info.args]) + parameters = GLib.Variant(f"({arg_types})", args) + self.bus.emit_signal( + destination_bus_name=None, + object_path=self.object_path, + interface_name=self.interface_info.name, + signal_name=signal_name, + parameters=parameters + ) + +class DBusMenuService(DBusService): + DBUS_SERVICE_PATH = '/io/github/slgobinath/SafeEyes/Menu' + + revision = 0 + + items = [] + idToCallback = {} + + def __init__(self, session_bus, context, items): + super().__init__( + interface_info=MENU_NODE_INFO, + object_path=self.DBUS_SERVICE_PATH, + bus=session_bus + ) + + self.set_items(items) + + def set_items(self, items): + self.items = items + + self.idToCallback = self.getItemCallbacks(items, {}) + + self.revision += 1 + + self.LayoutUpdated(self.revision, 0) + + @staticmethod + def getItemCallbacks(items, idToCallback): + for item in items: + if item.get('hidden', False) == True: + continue + if 'callback' in item: + idToCallback[item['id']] = item['callback'] + if 'children' in item: + idToCallback = DBusMenuService.getItemCallbacks(item['children'], idToCallback) + + return idToCallback + + @staticmethod + def itemToDbus(item, recursion_depth): + result = {} + + if item.get('hidden', False) == True: + return None + + string_props = ['label', 'icon-name', 'type', 'children-display'] + for key in string_props: + if key in item: + result[key] = GLib.Variant('s', item[key]) + + bool_props = ['enabled'] + for key in bool_props: + if key in item: + result[key] = GLib.Variant('b', item[key]) + + children = [] + if recursion_depth > 1 or recursion_depth == -1: + if "children" in item: + children = [DBusMenuService.itemToDbus(item, recursion_depth - 1) for item in item['children']] + children = [i for i in children if i is not None] + + return GLib.Variant("(ia{sv}av)", (item['id'], result, children)) + + def findItemsWithParent(self, parent_id, items): + for item in items: + if item.get('hidden', False) == True: + continue + if 'children' in item: + if item['id'] == parent_id: + return item['children'] + else: + ret = self.findItemsWithParent(parent_id, item['children']) + if ret is not None: + return ret + return None + + def GetLayout(self, parent_id, recursion_depth, property_names): + children = [] + + if parent_id == 0: + children = self.items + else: + children = self.findItemsWithParent(parent_id, self.items) + if children is None: + children = [] + + children = [self.itemToDbus(item, recursion_depth) for item in children] + children = [i for i in children if i is not None] + + ret = ( + self.revision, + ( + 0, + { 'children-display': GLib.Variant('s', 'submenu') }, + children + ) + ) + + return ret + + def Event(self, idx, event_id, data, timestamp): + if event_id != "clicked": + return + + if idx in self.idToCallback: + self.idToCallback[idx]() + + def AboutToShow(self, item_id): + return (False,) + + def LayoutUpdated(self, revision, parent): + self.emit_signal( + 'LayoutUpdated', + (revision, parent) + ) + +class StatusNotifierItemService(DBusService): + DBUS_SERVICE_PATH = '/io/github/slgobinath/SafeEyes' + + Category = 'ApplicationStatus' + Id = 'io.github.slgobinath.SafeEyes' + Title = _('Safe Eyes') + Status = 'Active' + IconName = 'io.github.slgobinath.SafeEyes-enabled' + IconThemePath = '' + ToolTip = ('', [], _('Safe Eyes'), '') + ItemIsMenu = True + Menu = None + + def __init__(self, session_bus, context, menu_items): + super().__init__( + interface_info=SNI_NODE_INFO, + object_path=self.DBUS_SERVICE_PATH, + bus=session_bus + ) + + self.bus = session_bus + + self._menu = DBusMenuService(session_bus, context, menu_items) + self.Menu = self._menu.DBUS_SERVICE_PATH + + def register(self): + self._menu.register() + super().register() + + watcher = Gio.DBusProxy.new_sync( + connection=self.bus, + flags=Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, + info=None, + name='org.kde.StatusNotifierWatcher', + object_path='/StatusNotifierWatcher', + interface_name='org.kde.StatusNotifierWatcher', + cancellable=None, + ) + + watcher.RegisterStatusNotifierItem('(s)', self.DBUS_SERVICE_PATH) + + def unregister(self): + super().unregister() + self._menu.unregister() + + def set_items(self, items): + self._menu.set_items(items) + + def set_icon(self, icon): + self.IconName = icon + + self.emit_signal( + 'NewIcon' + ) + + def set_tooltip(self, title, description): + self.ToolTip = ('', [], title, description) + + self.emit_signal( + 'NewTooltip' + ) class TrayIcon: """ @@ -66,185 +339,185 @@ def __init__(self, context, plugin_config): self.lock = threading.Lock() self.allow_disabling = plugin_config['allow_disabling'] self.animate = False + self.menu_locked = False - # Construct the tray icon - self.indicator = appindicator.Indicator.new( - APPINDICATOR_ID, "io.github.slgobinath.SafeEyes-enabled", appindicator.IndicatorCategory.APPLICATION_STATUS) - self.indicator.set_status(appindicator.IndicatorStatus.ACTIVE) - - # Construct the context menu - self.menu = Gtk.Menu() - - # Next break info menu item - self.item_info = Gtk.ImageMenuItem() - img_timer = Gtk.Image() - img_timer.set_from_icon_name("io.github.slgobinath.SafeEyes-timer", 16) - self.item_info.set_image(img_timer) + session_bus = Gio.bus_get_sync(Gio.BusType.SESSION) - self.item_separator = Gtk.SeparatorMenuItem() + self.sni_service = StatusNotifierItemService( + session_bus, + context, + menu_items = self.get_items() + ) + self.sni_service.register() - self.item_enable = Gtk.MenuItem() - self.item_enable.connect('activate', self.on_enable_clicked) - - self.item_disable = Gtk.MenuItem() - self.sub_menu_disable = Gtk.Menu() - self.sub_menu_disable_items = [] - - # Read disable options and build the sub menu - for disable_option in plugin_config['disable_options']: - time_in_minutes = disable_option['time'] - label = [] - # Validate time value - if not isinstance(time_in_minutes, int) or time_in_minutes <= 0: - logging.error('Invalid time in disable option: ' + str(time_in_minutes)) - continue - time_unit = disable_option['unit'].lower() - if time_unit == 'seconds' or time_unit == 'second': - time_in_minutes = int(time_in_minutes / 60) - label = ['For %d Second', 'For %d Seconds'] - elif time_unit == 'minutes' or time_unit == 'minute': - time_in_minutes = int(time_in_minutes * 1) - label = ['For %d Minute', 'For %d Minutes'] - elif time_unit == 'hours' or time_unit == 'hour': - time_in_minutes = int(time_in_minutes * 60) - label = ['For %d Hour', 'For %d Hours'] - else: - # Invalid unit - logging.error('Invalid unit in disable option: ' + str(disable_option)) - continue - - # Create submenu - sub_menu_item = Gtk.MenuItem() - sub_menu_item.connect('activate', self.on_disable_clicked, time_in_minutes) - self.sub_menu_disable_items.append([sub_menu_item, label, disable_option['time']]) - self.sub_menu_disable.append(sub_menu_item) - - # Disable until restart submenu - self.sub_menu_item_until_restart = Gtk.MenuItem() - self.sub_menu_item_until_restart.connect('activate', self.on_disable_clicked, -1) - self.sub_menu_disable.append(self.sub_menu_item_until_restart) - - # Add the sub menu to the enable/disable menu - self.item_disable.set_submenu(self.sub_menu_disable) - - # Manual break menu item - self.item_manual_break = Gtk.MenuItem() - - self.sub_menu_manual_next_break = Gtk.MenuItem() - self.sub_menu_manual_next_break.connect('activate', self.on_manual_break_clicked, None) - self.sub_menu_manual_next_short_break = Gtk.MenuItem() - self.sub_menu_manual_next_short_break.connect('activate', self.on_manual_break_clicked, BreakType.SHORT_BREAK) - self.sub_menu_manual_next_long_break = Gtk.MenuItem() - self.sub_menu_manual_next_long_break.connect('activate', self.on_manual_break_clicked, BreakType.LONG_BREAK) - - self.sub_menu_manual_break = Gtk.Menu() - self.sub_menu_manual_break.append(self.sub_menu_manual_next_break) - self.sub_menu_manual_break.append(self.sub_menu_manual_next_short_break) - self.sub_menu_manual_break.append(self.sub_menu_manual_next_long_break) - self.item_manual_break.set_submenu(self.sub_menu_manual_break) - - # Settings menu item - self.item_settings = Gtk.MenuItem() - self.item_settings.connect('activate', self.show_settings) - - # About menu item - self.item_about = Gtk.MenuItem() - self.item_about.connect('activate', self.show_about) - - # Quit menu item - self.item_quit = Gtk.MenuItem() - self.item_quit.connect('activate', self.quit_safe_eyes) - - self.set_labels() - - # At startup, no need for activate menu - self.item_enable.set_sensitive(False) - - # Append all menu items and show the menu - self.menu.append(self.item_info) - self.menu.append(self.item_separator) - self.menu.append(self.item_enable) - self.menu.append(self.item_disable) - self.menu.append(self.item_manual_break) - self.menu.append(self.item_settings) - self.menu.append(self.item_about) - self.menu.append(self.item_quit) - self.menu.show_all() - - self.item_enable.set_visible(self.allow_disabling) - self.item_disable.set_visible(self.allow_disabling) - self.item_quit.set_visible(self.allow_disabling) - self.item_quit.set_visible(self.allow_disabling) - - self.indicator.set_menu(self.menu) + self.update_tooltip() def initialize(self, plugin_config): """ Initialize the tray icon by setting the config. """ self.plugin_config = plugin_config - self.set_labels() self.allow_disabling = plugin_config['allow_disabling'] - self.item_enable.set_visible(self.allow_disabling) - self.item_disable.set_visible(self.allow_disabling) - self.item_quit.set_visible(self.allow_disabling) - self.item_quit.set_visible(self.allow_disabling) - - def set_labels(self): - """ - Update the text of menu items based on the selected language. - """ - for entry in self.sub_menu_disable_items: - # print(self.context['locale'].ngettext('For %d Hour', 'For %d Hours', 1) % 1) - entry[0].set_label(self.context['locale'].ngettext(entry[1][0], entry[1][1], entry[2]) % entry[2]) - self.sub_menu_item_until_restart.set_label(_('Until restart')) - self.item_enable.set_label(_('Enable Safe Eyes')) - self.item_disable.set_label(_('Disable Safe Eyes')) + self.update_menu() + self.update_tooltip() + def get_items(self): breaks_found = self.has_breaks() + + info_message = _('No breaks available') + if breaks_found: if self.active: - if self.date_time: - self.__set_next_break_info() - self.indicator.set_icon("io.github.slgobinath.SafeEyes-enabled") + next_break = self.get_next_break_time() + + if next_break is not None: + (next_time, next_long_time, next_is_long) = next_break + + if next_long_time: + if next_is_long: + info_message = _('Next long break at %s') % (next_long_time) + else: + info_message = _('Next breaks at %s/%s') % (next_time, next_long_time) + else: + info_message = _('Next break at %s') % (next_time) else: if self.wakeup_time: - self.item_info.set_label(_('Disabled until %s') % utility.format_time(self.wakeup_time)) + info_message = _('Disabled until %s') % utility.format_time(self.wakeup_time) + else: + info_message = _('Disabled until restart') + + disable_items = [] + + if self.allow_disabling: + disable_option_dynamic_id = 13 + + for disable_option in self.plugin_config['disable_options']: + time_in_minutes = time_in_x = disable_option['time'] + label = [] + # Validate time value + if not isinstance(time_in_minutes, int) or time_in_minutes <= 0: + logging.error('Invalid time in disable option: ' + str(time_in_minutes)) + continue + time_unit = disable_option['unit'].lower() + if time_unit == 'seconds' or time_unit == 'second': + time_in_minutes = int(time_in_minutes / 60) + label = ['For %d Second', 'For %d Seconds'] + elif time_unit == 'minutes' or time_unit == 'minute': + time_in_minutes = int(time_in_minutes * 1) + label = ['For %d Minute', 'For %d Minutes'] + elif time_unit == 'hours' or time_unit == 'hour': + time_in_minutes = int(time_in_minutes * 60) + label = ['For %d Hour', 'For %d Hours'] else: - self.item_info.set_label(_('Disabled until restart')) - self.indicator.set_label('', '') - self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled") + # Invalid unit + logging.error('Invalid unit in disable option: ' + str(disable_option)) + continue + + label = self.context['locale'].ngettext(label[0], label[1], time_in_x) % time_in_x + + disable_items.append({ + 'id': disable_option_dynamic_id, + 'label': label, + 'callback': lambda: self.on_disable_clicked(time_in_minutes), + }) + + disable_option_dynamic_id += 1 + + disable_items.append({ + 'id': 12, + 'label': _('Until restart'), + 'callback': lambda: self.on_disable_clicked(-1), + }) + + return [ + { + 'id': 1, + 'label': info_message, + 'icon-name': "io.github.slgobinath.SafeEyes-timer", + 'enabled': breaks_found and self.active, + }, + { + 'id': 2, + 'type': "separator", + }, + { + 'id': 3, + 'label': _("Enable Safe Eyes"), + 'enabled': breaks_found and not self.active, + 'callback': self.on_enable_clicked, + 'hidden': not self.allow_disabling, + }, + { + 'id': 4, + 'label': _("Disable Safe Eyes"), + 'enabled': breaks_found and self.active and not self.menu_locked, + 'children-display': 'submenu', + 'children': disable_items, + 'hidden': not self.allow_disabling, + }, + { + 'id': 5, + 'label': _('Take a break now'), + 'enabled': breaks_found and self.active and not self.menu_locked, + 'children-display': 'submenu', + 'children': [ + { + 'id': 9, + 'label': _('Any Break'), + 'callback': lambda: self.on_manual_break_clicked(None), + }, + { + 'id': 10, + 'label': _('Short Break'), + 'callback': lambda: self.on_manual_break_clicked(BreakType.SHORT_BREAK), + }, + { + 'id': 11, + 'label': _('Long Break'), + 'callback': lambda: self.on_manual_break_clicked(BreakType.LONG_BREAK), + }, + ] + }, + { + 'id': 6, + 'label': _('Settings'), + 'enabled': not self.menu_locked, + 'callback': self.show_settings, + }, + { + 'id': 7, + 'label': _('About'), + 'callback': self.show_about, + }, + { + 'id': 8, + 'label': _('Quit'), + 'enabled': not self.menu_locked, + 'callback': self.quit_safe_eyes, + 'hidden': not self.allow_disabling, + }, + ] + + def update_menu(self): + self.sni_service.set_items(self.get_items()) + + def update_tooltip(self): + next_break = self.get_next_break_time() + + if next_break is not None and self.plugin_config.get('show_time_in_tray', False): + (next_time, next_long_time, _next_is_long) = next_break + + if next_long_time and self.plugin_config.get('show_long_time_in_tray', False): + description = next_long_time + else: + description = next_time else: - self.item_info.set_label(_('No breaks available')) - self.indicator.set_label('', '') - self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled") - self.item_info.set_sensitive(breaks_found and self.active) - self.item_enable.set_sensitive(breaks_found and not self.active) - self.item_disable.set_sensitive(breaks_found and self.active) - self.item_manual_break.set_sensitive(breaks_found and self.active) - - self.item_manual_break.set_label(_('Take a break now')) - self.sub_menu_manual_next_break.set_label(_('Any break')) - self.sub_menu_manual_next_short_break.set_label(_('Short break')) - self.sub_menu_manual_next_long_break.set_label(_('Long break')) - self.item_settings.set_label(_('Settings')) - self.item_about.set_label(_('About')) - self.item_quit.set_label(_('Quit')) - - def show_icon(self): - """ - Show the tray icon. - """ - self.indicator.set_status(appindicator.IndicatorStatus.ACTIVE) + description = '' - def hide_icon(self): - """ - Hide the tray icon. - """ - self.indicator.set_status(appindicator.IndicatorStatus.PASSIVE) + self.sni_service.set_tooltip(_('Safe Eyes'), description) - def quit_safe_eyes(self, *args): + def quit_safe_eyes(self): """ Handle Quit menu action. This action terminates the application. @@ -257,14 +530,14 @@ def quit_safe_eyes(self, *args): self.idle_condition.release() self.quit() - def show_settings(self, *args): + def show_settings(self): """ Handle Settings menu action. This action shows the Settings dialog. """ self.on_show_settings() - def show_about(self, *args): + def show_about(self): """ Handle About menu action. This action shows the About dialog. @@ -277,50 +550,37 @@ def next_break_time(self, dateTime): """ logging.info("Update next break information") self.date_time = dateTime - self.__set_next_break_info() + self.update_menu() + self.update_tooltip() + + def get_next_break_time(self): + if not (self.has_breaks() and self.active and self.date_time): + return None - def __set_next_break_info(self): - """ - A private method to be called within this class to update the next break information using self.dateTime. - """ formatted_time = utility.format_time(self.get_break_time()) long_time = self.get_break_time(BreakType.LONG_BREAK) if long_time: long_time = utility.format_time(long_time) if long_time == formatted_time: - message = _('Next long break at %s') % (long_time) + return (long_time, long_time, True) else: - message = _('Next breaks at %s/%s') % (formatted_time, long_time) - else: - message = _('Next break at %s') % (formatted_time) + return (formatted_time, long_time, False) - # Update the menu item label - utility.execute_main_thread(self.item_info.set_label, message) + return (formatted_time, None, False) - # Update the tray icon label - if self.plugin_config.get('show_time_in_tray', False): - show_long = long_time and self.plugin_config.get('show_long_time_in_tray', False) - self.indicator.set_label(long_time if show_long else formatted_time, '') - else: - self.indicator.set_label('', '') - def on_manual_break_clicked(self, *args): + def on_manual_break_clicked(self, break_type): """ Trigger a break manually. """ - if len(args) > 1: - break_type = args[1] - self.take_break(break_type) - else: - self.take_break() + self.take_break(break_type) - def on_enable_clicked(self, *args): + def on_enable_clicked(self): """ Handle 'Enable Safe Eyes' menu action. This action enables the application if it is currently disabled. """ - # active = self.item_enable.get_active() if not self.active: with self.lock: self.enable_ui() @@ -330,41 +590,40 @@ def on_enable_clicked(self, *args): self.idle_condition.notify_all() self.idle_condition.release() - def on_disable_clicked(self, *args): + def on_disable_clicked(self, time_to_wait): """ Handle the menu actions of all the sub menus of 'Disable Safe Eyes'. This action disables the application if it is currently active. """ - # active = self.item_enable.get_active() - if self.active and len(args) > 1: + if self.active: self.disable_ui() - time_to_wait = args[1] if time_to_wait <= 0: info = _('Disabled until restart') self.disable_safeeyes(info) self.wakeup_time = None - self.item_info.set_label(info) else: self.wakeup_time = datetime.datetime.now() + datetime.timedelta(minutes=time_to_wait) info = _('Disabled until %s') % utility.format_time(self.wakeup_time) self.disable_safeeyes(info) - self.item_info.set_label(info) utility.start_thread(self.__schedule_resume, time_minutes=time_to_wait) + self.update_menu() def lock_menu(self): """ This method is called by the core to prevent user from disabling Safe Eyes after the notification. """ if self.active: - self.menu.set_sensitive(False) + self.menu_locked = True + self.update_menu() def unlock_menu(self): """ This method is called by the core to activate the menu after the the break. """ if self.active: - self.menu.set_sensitive(True) + self.menu_locked = False + self.update_menu() def disable_ui(self): """ @@ -373,13 +632,9 @@ def disable_ui(self): if self.active: logging.info('Disable Safe Eyes') self.active = False - self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled") - self.item_info.set_label(_('Disabled until restart')) - self.indicator.set_label('', '') - self.item_info.set_sensitive(False) - self.item_enable.set_sensitive(True) - self.item_disable.set_sensitive(False) - self.item_manual_break.set_sensitive(False) + + self.sni_service.set_icon("io.github.slgobinath.SafeEyes-disabled") + self.update_menu() def enable_ui(self): """ @@ -388,11 +643,9 @@ def enable_ui(self): if not self.active: logging.info('Enable Safe Eyes') self.active = True - self.indicator.set_icon("io.github.slgobinath.SafeEyes-enabled") - self.item_info.set_sensitive(True) - self.item_enable.set_sensitive(False) - self.item_disable.set_sensitive(True) - self.item_manual_break.set_sensitive(True) + + self.sni_service.set_icon("io.github.slgobinath.SafeEyes-enabled") + self.update_menu() def __schedule_resume(self, time_minutes): """ @@ -404,14 +657,14 @@ def __schedule_resume(self, time_minutes): with self.lock: if not self.active: - utility.execute_main_thread(self.item_enable.activate) + utility.execute_main_thread(self.on_enable_clicked) def start_animation(self): if not self.active or not self.animate: return - utility.execute_main_thread(lambda: self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled")) + utility.execute_main_thread(lambda: self.sni_service.set_icon("io.github.slgobinath.SafeEyes-disabled")) time.sleep(0.5) - utility.execute_main_thread(lambda: self.indicator.set_icon("io.github.slgobinath.SafeEyes-enabled")) + utility.execute_main_thread(lambda: self.sni_service.set_icon("io.github.slgobinath.SafeEyes-enabled")) if self.animate and self.active: time.sleep(0.5) if self.animate and self.active: @@ -420,9 +673,9 @@ def start_animation(self): def stop_animation(self): self.animate = False if self.active: - utility.execute_main_thread(lambda: self.indicator.set_icon("io.github.slgobinath.SafeEyes-enabled")) + utility.execute_main_thread(lambda: self.sni_service.set_icon("io.github.slgobinath.SafeEyes-enabled")) else: - utility.execute_main_thread(lambda: self.indicator.set_icon("io.github.slgobinath.SafeEyes-disabled")) + utility.execute_main_thread(lambda: self.sni_service.set_icon("io.github.slgobinath.SafeEyes-disabled")) def init(ctx, safeeyes_cfg, plugin_config): """ From 1967d32d11d218f18804bf0c939b364f497c98d8 Mon Sep 17 00:00:00 2001 From: deltragon Date: Mon, 8 Jul 2024 12:34:05 +0200 Subject: [PATCH 07/50] dbusmenu: implement all methods --- safeeyes/plugins/trayicon/plugin.py | 110 ++++++++++++++++++++++++---- 1 file changed, 96 insertions(+), 14 deletions(-) diff --git a/safeeyes/plugins/trayicon/plugin.py b/safeeyes/plugins/trayicon/plugin.py index 5c5a6bb3..3865ed84 100644 --- a/safeeyes/plugins/trayicon/plugin.py +++ b/safeeyes/plugins/trayicon/plugin.py @@ -63,16 +63,35 @@ + + + + + + + + + + + + + + + + + + + @@ -144,7 +163,7 @@ class DBusMenuService(DBusService): revision = 0 items = [] - idToCallback = {} + idToItems = {} def __init__(self, session_bus, context, items): super().__init__( @@ -158,30 +177,34 @@ def __init__(self, session_bus, context, items): def set_items(self, items): self.items = items - self.idToCallback = self.getItemCallbacks(items, {}) + self.idToItems = self.getItemsFlat(items, {}) self.revision += 1 self.LayoutUpdated(self.revision, 0) @staticmethod - def getItemCallbacks(items, idToCallback): + def getItemsFlat(items, idToItems): for item in items: if item.get('hidden', False) == True: continue - if 'callback' in item: - idToCallback[item['id']] = item['callback'] + + idToItems[item['id']] = item + if 'children' in item: - idToCallback = DBusMenuService.getItemCallbacks(item['children'], idToCallback) + idToItems = DBusMenuService.getItemsFlat(item['children'], idToItems) - return idToCallback + return idToItems @staticmethod - def itemToDbus(item, recursion_depth): - result = {} + def singleItemToDbus(item): + props = DBusMenuService.itemPropsToDbus(item) - if item.get('hidden', False) == True: - return None + return (item['id'], props) + + @staticmethod + def itemPropsToDbus(item): + result = {} string_props = ['label', 'icon-name', 'type', 'children-display'] for key in string_props: @@ -193,13 +216,22 @@ def itemToDbus(item, recursion_depth): if key in item: result[key] = GLib.Variant('b', item[key]) + return result + + @staticmethod + def itemToDbus(item, recursion_depth): + if item.get('hidden', False) == True: + return None + + props = DBusMenuService.itemPropsToDbus(item) + children = [] if recursion_depth > 1 or recursion_depth == -1: if "children" in item: children = [DBusMenuService.itemToDbus(item, recursion_depth - 1) for item in item['children']] children = [i for i in children if i is not None] - return GLib.Variant("(ia{sv}av)", (item['id'], result, children)) + return GLib.Variant("(ia{sv}av)", (item['id'], props, children)) def findItemsWithParent(self, parent_id, items): for item in items: @@ -238,16 +270,66 @@ def GetLayout(self, parent_id, recursion_depth, property_names): return ret + def GetGroupProperties(self, ids, property_names): + ret = [] + + for idx in ids: + if idx in self.idToItems: + props = DBusMenuService.singleItemToDbus(self.idToItems[idx]) + if props is not None: + ret.append(props) + + return (ret,) + + def GetProperty(self, idx, name): + ret = None + + if idx in self.idToItems: + props = DBusMenuService.singleItemToDbus(self.idToItems[idx]) + if props is not None and name in props: + ret = props[name] + + return ret + def Event(self, idx, event_id, data, timestamp): if event_id != "clicked": return - if idx in self.idToCallback: - self.idToCallback[idx]() + if idx in self.idToItems: + item = self.idToItems[idx] + if 'callback' in item: + item['callback']() + + def EventGroup(self, events): + not_found = [] + + for (idx, event_id, data, timestamp) in events: + if idx not in self.idToItems: + not_found.append(idx) + continue + + if event_id != "clicked": + continue + + item = self.idToItems[idx] + if 'callback' in item: + item['callback']() + + return not_found def AboutToShow(self, item_id): return (False,) + def AboutToShowGroup(self, ids): + not_found = [] + + for idx in ids: + if idx not in self.idToItems: + not_found.append(idx) + continue + + return ([], not_found) + def LayoutUpdated(self, revision, parent): self.emit_signal( 'LayoutUpdated', From 56d61882aa5c5ca1a417c4ff7cbce44f7ea191c9 Mon Sep 17 00:00:00 2001 From: deltragon Date: Mon, 8 Jul 2024 14:57:59 +0200 Subject: [PATCH 08/50] switch path to ayatana --- safeeyes/plugins/trayicon/plugin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safeeyes/plugins/trayicon/plugin.py b/safeeyes/plugins/trayicon/plugin.py index 3865ed84..48b7d596 100644 --- a/safeeyes/plugins/trayicon/plugin.py +++ b/safeeyes/plugins/trayicon/plugin.py @@ -337,7 +337,7 @@ def LayoutUpdated(self, revision, parent): ) class StatusNotifierItemService(DBusService): - DBUS_SERVICE_PATH = '/io/github/slgobinath/SafeEyes' + DBUS_SERVICE_PATH = '/org/ayatana/NotificationItem/io_github_slgobinath_SafeEyes' Category = 'ApplicationStatus' Id = 'io.github.slgobinath.SafeEyes' From f9274d77da9421e08d074f40de9175947e67b241 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 14 Jul 2024 16:18:18 +0200 Subject: [PATCH 09/50] trayicon: check for dependency on dbus service --- .../plugins/trayicon/dependency_checker.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 safeeyes/plugins/trayicon/dependency_checker.py diff --git a/safeeyes/plugins/trayicon/dependency_checker.py b/safeeyes/plugins/trayicon/dependency_checker.py new file mode 100644 index 00000000..927468b2 --- /dev/null +++ b/safeeyes/plugins/trayicon/dependency_checker.py @@ -0,0 +1,58 @@ +# Safe Eyes is a utility to remind you to take break frequently +# to protect your eyes from eye strain. + +# Copyright (C) 2017 Gobinath + +# 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 . + +from safeeyes import utility + +import gi +gi.require_version('Gio', '2.0') +from gi.repository import Gio + +def validate(plugin_config, plugin_settings): + dbus_proxy = Gio.DBusProxy.new_for_bus_sync( + bus_type=Gio.BusType.SESSION, + flags=Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES, + info=None, + name='org.freedesktop.DBus', + object_path='/org/freedesktop/DBus', + interface_name='org.freedesktop.DBus', + cancellable=None, + ) + + if dbus_proxy.NameHasOwner('(s)', 'org.kde.StatusNotifierWatcher'): + return None + else: + if utility.DESKTOP_ENVIRONMENT == "gnome": + return _("Please install a gnome shell plugin providing tray icons, eg. 'Tray Icons Reloaded'") + elif utility.IS_WAYLAND: + return _("Please install a plugin providing tray icons for your desktop environment") + elif utility.DESKTOP_ENVIRONMENT == "lxde": + return _("Please install the 'snixembed' service") + else: + return _("Please install the 'snixembed' service, or a plugin providing tray icons for your desktop environment") + + command = None + if utility.IS_WAYLAND: + if utility.DESKTOP_ENVIRONMENT == "gnome": + return None + command = "wlrctl" + else: + command = "xprop" + if not utility.command_exist(command): + return _("Please install the command-line tool '%s'") % command + else: + return None From 8b1607294cbb57e331faa125bc58c895a868a2c3 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 14 Jul 2024 21:31:14 +0200 Subject: [PATCH 10/50] plugins: add required_plugins setting with popup, use for trayicon --- safeeyes/glade/required_plugin_dialog.glade | 108 ++++++++++++++++++ safeeyes/model.py | 17 +++ safeeyes/plugin_manager.py | 12 +- safeeyes/plugins/trayicon/config.json | 1 + .../plugins/trayicon/dependency_checker.py | 8 +- safeeyes/safeeyes.py | 60 +++++++++- safeeyes/ui/required_plugin_dialog.py | 71 ++++++++++++ 7 files changed, 267 insertions(+), 10 deletions(-) create mode 100644 safeeyes/glade/required_plugin_dialog.glade create mode 100644 safeeyes/ui/required_plugin_dialog.py diff --git a/safeeyes/glade/required_plugin_dialog.glade b/safeeyes/glade/required_plugin_dialog.glade new file mode 100644 index 00000000..98940b96 --- /dev/null +++ b/safeeyes/glade/required_plugin_dialog.glade @@ -0,0 +1,108 @@ + + + + + + + Safe Eyes - Error + 0 + safeeyes + + + 5 + 5 + 5 + 5 + 1 + 1 + vertical + top + + + start + 1 + vertical + + + center + 10 + 10 + A required plugin is missing dependencies! + + + + + + + + + 5 + 5 + + + + + + + + + 5 + 5 + Please install the dependencies or disable the plugin. + + + + + + + + + + 5 + 5 + + + + + start + end + 5 + 1 + 1 + 5 + + + Quit + 1 + 1 + + + + + Disable plugin + + + + + + + + diff --git a/safeeyes/model.py b/safeeyes/model.py index c43dc570..f889b1d2 100644 --- a/safeeyes/model.py +++ b/safeeyes/model.py @@ -419,3 +419,20 @@ def build(cls, name, icon_path, icon_id, action): return TrayAction(name, icon_id, action, True) else: return TrayAction(name, icon_path, action, False) + +class RequiredPluginException(Exception): + def __init__(self, plugin_id, plugin_name, message): + super().__init__(message) + + self.plugin_id = plugin_id + self.plugin_name = plugin_name + self.message = message + + def get_plugin_id(self): + return self.plugin_id + + def get_plugin_name(self): + return self.plugin_name + + def get_message(self): + return self.message diff --git a/safeeyes/plugin_manager.py b/safeeyes/plugin_manager.py index e35c6921..ec6b30a1 100644 --- a/safeeyes/plugin_manager.py +++ b/safeeyes/plugin_manager.py @@ -57,6 +57,7 @@ import sys from safeeyes import utility +from safeeyes.model import RequiredPluginException sys.path.append(os.path.abspath(utility.SYSTEM_PLUGINS_DIR)) sys.path.append(os.path.abspath(utility.USER_PLUGINS_DIR)) @@ -94,6 +95,8 @@ def init(self, context, config): for plugin in config.get('plugins'): try: self.__load_plugin(plugin) + except RequiredPluginException as e: + raise e except BaseException as e: traceback_wanted = logging.getLogger().getEffectiveLevel() == logging.DEBUG if traceback_wanted: @@ -298,7 +301,14 @@ def __load_plugin(self, plugin): else: # This is the first time to load the plugin # Check for dependencies - if utility.check_plugin_dependencies(plugin['id'], plugin_config, plugin.get('settings', {}), plugin_path): + message = utility.check_plugin_dependencies(plugin['id'], plugin_config, plugin.get('settings', {}), plugin_path) + if message: + if plugin_config['required_plugin']: + raise RequiredPluginException( + plugin['id'], + plugin_config['meta']['name'], + message + ) return # Load the plugin module diff --git a/safeeyes/plugins/trayicon/config.json b/safeeyes/plugins/trayicon/config.json index 5ed2e5b1..4cc8c96d 100644 --- a/safeeyes/plugins/trayicon/config.json +++ b/safeeyes/plugins/trayicon/config.json @@ -11,6 +11,7 @@ "desktop_environments": [], "resources": [] }, + "required_plugin": true, "settings": [ { "id": "show_time_in_tray", diff --git a/safeeyes/plugins/trayicon/dependency_checker.py b/safeeyes/plugins/trayicon/dependency_checker.py index 927468b2..927e0ed5 100644 --- a/safeeyes/plugins/trayicon/dependency_checker.py +++ b/safeeyes/plugins/trayicon/dependency_checker.py @@ -37,13 +37,13 @@ def validate(plugin_config, plugin_settings): return None else: if utility.DESKTOP_ENVIRONMENT == "gnome": - return _("Please install a gnome shell plugin providing tray icons, eg. 'Tray Icons Reloaded'") + return _("Please install a gnome shell plugin providing tray icons, eg. 'Tray Icons Reloaded'.") elif utility.IS_WAYLAND: - return _("Please install a plugin providing tray icons for your desktop environment") + return _("Please install a service providing tray icons for your desktop environment.") elif utility.DESKTOP_ENVIRONMENT == "lxde": - return _("Please install the 'snixembed' service") + return _("Please install the 'snixembed' service.") else: - return _("Please install the 'snixembed' service, or a plugin providing tray icons for your desktop environment") + return _("Please install the 'snixembed' service, or a service providing tray icons for your desktop environment.") command = None if utility.IS_WAYLAND: diff --git a/safeeyes/safeeyes.py b/safeeyes/safeeyes.py index 7bb7bfdd..e9e008ee 100644 --- a/safeeyes/safeeyes.py +++ b/safeeyes/safeeyes.py @@ -29,7 +29,8 @@ from safeeyes import utility from safeeyes.ui.about_dialog import AboutDialog from safeeyes.ui.break_screen import BreakScreen -from safeeyes.model import State +from safeeyes.ui.required_plugin_dialog import RequiredPluginDialog +from safeeyes.model import State, RequiredPluginException from safeeyes.rpc import RPCServer from safeeyes.plugin_manager import PluginManager from safeeyes.core import SafeEyesCore @@ -46,6 +47,8 @@ class SafeEyes(Gtk.Application): This class represents a runnable Safe Eyes instance. """ + required_plugin_dialog_active = False + def __init__(self, system_locale, config, cli_args): super().__init__( application_id="io.github.slgobinath.SafeEyes", @@ -100,7 +103,12 @@ def __init__(self, system_locale, config, cli_args): self.context['api']['has_breaks'] = self.safe_eyes_core.has_breaks self.context['api']['postpone'] = self.safe_eyes_core.postpone self.context['api']['get_break_time'] = self.safe_eyes_core.get_break_time - self.plugins_manager.init(self.context, self.config) + + try: + self.plugins_manager.init(self.context, self.config) + except RequiredPluginException as e: + self.show_required_plugin_dialog(e.get_plugin_id(), e.get_plugin_name(), e.get_message()) + self.required_plugin_dialog_active = True self.hold() @@ -113,7 +121,7 @@ def start(self): if self.config.get('use_rpc_server', True): self.__start_rpc_server() - if self.safe_eyes_core.has_breaks(): + if not self.required_plugin_dialog_active and self.safe_eyes_core.has_breaks(): self.active = True self.context['state'] = State.START self.plugins_manager.start() # Call the start method of all plugins @@ -147,6 +155,35 @@ def show_settings(self): self.config.clone(), self.save_settings) settings_dialog.show() + def show_required_plugin_dialog(self, plugin_id, plugin_name, message): + """ + Listen to tray icon About action and send the signal to About dialog. + """ + logging.info("Show RequiredPlugin dialog") + dialog = RequiredPluginDialog( + plugin_id, + plugin_name, + message, + self.quit, + lambda: self.disable_plugin(plugin_id) + ) + dialog.show() + + def disable_plugin(self, plugin_id): + config = self.config.clone() + + for plugin in config.get('plugins'): + if plugin['id'] == plugin_id: + plugin['enabled'] = False + + logging.info("Saving settings to safeeyes.json") + + config.save() + + self.required_plugin_dialog_active = False + + self.restart(config, set_active=True) + def show_about(self): """ Listen to tray icon About action and send the signal to About dialog. @@ -246,6 +283,9 @@ def save_settings(self, config): config.save() self.persist_session() + self.restart(config) + + def restart(self, config, set_active=False): logging.info("Initialize SafeEyesCore with modified settings") if self.rpc_server is None and config.get('use_rpc_server'): @@ -259,7 +299,17 @@ def save_settings(self, config): self.config = config self.safe_eyes_core.initialize(config) self.break_screen.initialize(config) - self.plugins_manager.init(self.context, self.config) + + try: + self.plugins_manager.init(self.context, self.config) + except RequiredPluginException as e: + self.show_required_plugin_dialog(e.get_plugin_id(), e.get_plugin_name(), e.get_message()) + self.required_plugin_dialog_active = True + return + + if set_active: + self.active = True + if self.active and self.safe_eyes_core.has_breaks(): # 1 sec delay is required to give enough time for core to be stopped Timer(1.0, self.safe_eyes_core.start).start() @@ -269,7 +319,7 @@ def enable_safeeyes(self, scheduled_next_break_time=-1, reset_breaks=False): """ Listen to tray icon enable action and send the signal to core. """ - if not self.active and self.safe_eyes_core.has_breaks(): + if not self.required_plugin_dialog_active and not self.active and self.safe_eyes_core.has_breaks(): self.active = True self.safe_eyes_core.start(scheduled_next_break_time, reset_breaks) self.plugins_manager.start() diff --git a/safeeyes/ui/required_plugin_dialog.py b/safeeyes/ui/required_plugin_dialog.py new file mode 100644 index 00000000..9e05777b --- /dev/null +++ b/safeeyes/ui/required_plugin_dialog.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python +# Safe Eyes is a utility to remind you to take break frequently +# to protect your eyes from eye strain. + +# Copyright (C) 2016 Gobinath + +# 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 . +""" +This module creates the RequiredPluginDialog which shows the error for a required plugin. +""" + +import os + +from safeeyes import utility + +REQUIRED_PLUGIN_DIALOG_GLADE = os.path.join(utility.BIN_DIRECTORY, "glade/required_plugin_dialog.glade") + + +class RequiredPluginDialog: + """ + RequiredPluginDialog shows an error when a plugin has required dependencies. + """ + + def __init__(self, plugin_id, plugin_name, message, on_quit, on_disable_plugin): + self.on_quit = on_quit + self.on_disable_plugin = on_disable_plugin + + builder = utility.create_gtk_builder(REQUIRED_PLUGIN_DIALOG_GLADE) + self.window = builder.get_object('window_required_plugin') + + self.window.connect("delete-event", self.on_window_delete) + builder.get_object('btn_close').connect('clicked', self.on_close_clicked) + builder.get_object('btn_disable_plugin').connect('clicked', self.on_disable_plugin_clicked) + + builder.get_object('lbl_header').set_label(_("The required plugin '%s' is missing dependencies!") % _(plugin_name)) + + builder.get_object('lbl_main').set_label(_("Please install the dependencies or disable the plugin.")) + + builder.get_object('lbl_message').set_label(message) + + def show(self): + """ + Show the dialog. + """ + self.window.show_all() + + def on_window_delete(self, *args): + """ + Window close event handler. + """ + self.window.destroy() + self.on_quit() + + def on_close_clicked(self, *args): + self.window.destroy() + self.on_quit() + + def on_disable_plugin_clicked(self, *args): + self.window.destroy() + self.on_disable_plugin() From ebe2541f48effaf356d83fc465fa715ec78e56d7 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 14 Jul 2024 21:49:48 +0200 Subject: [PATCH 11/50] fix icon name --- safeeyes/glade/required_plugin_dialog.glade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safeeyes/glade/required_plugin_dialog.glade b/safeeyes/glade/required_plugin_dialog.glade index 98940b96..a53500ce 100644 --- a/safeeyes/glade/required_plugin_dialog.glade +++ b/safeeyes/glade/required_plugin_dialog.glade @@ -24,7 +24,7 @@ Safe Eyes - Error 0 - safeeyes + io.github.slgobinath.SafeEyes 5 From 2c7f1933026cf6751d2e85fb6a31b2e16763470d Mon Sep 17 00:00:00 2001 From: deltragon Date: Tue, 16 Jul 2024 10:52:31 +0200 Subject: [PATCH 12/50] add ability to show link in plugin dependencies, use for trayicon --- safeeyes/config/style/safeeyes_style.css | 6 +++++- safeeyes/glade/item_plugin.glade | 14 ++++++++++++++ safeeyes/glade/required_plugin_dialog.glade | 9 +++++++++ safeeyes/model.py | 15 +++++++++++++-- safeeyes/plugins/trayicon/dependency_checker.py | 13 +++++-------- safeeyes/ui/required_plugin_dialog.py | 10 +++++++++- safeeyes/ui/settings_dialog.py | 14 +++++++++++--- safeeyes/utility.py | 2 +- 8 files changed, 67 insertions(+), 16 deletions(-) diff --git a/safeeyes/config/style/safeeyes_style.css b/safeeyes/config/style/safeeyes_style.css index 35e508c6..6df25a45 100644 --- a/safeeyes/config/style/safeeyes_style.css +++ b/safeeyes/config/style/safeeyes_style.css @@ -90,6 +90,10 @@ color: #9B9B9B; } +.btn_plugin_extra_link { + padding-left: 0px; +} + .info_bar_long_break { opacity: 0.9; border-radius: 5px; @@ -120,4 +124,4 @@ border-image: None; background: whitesmoke; border-color: transparent; -} \ No newline at end of file +} diff --git a/safeeyes/glade/item_plugin.glade b/safeeyes/glade/item_plugin.glade index aa190378..377eb28d 100644 --- a/safeeyes/glade/item_plugin.glade +++ b/safeeyes/glade/item_plugin.glade @@ -91,6 +91,20 @@ 1 + + + Click here for more information + https://slgobinath.github.io/SafeEyes + 0 + 0 + 5 + 5 + start + + + True diff --git a/safeeyes/glade/required_plugin_dialog.glade b/safeeyes/glade/required_plugin_dialog.glade index a53500ce..9dc2542e 100644 --- a/safeeyes/glade/required_plugin_dialog.glade +++ b/safeeyes/glade/required_plugin_dialog.glade @@ -62,6 +62,15 @@ + + + Click here for more information + https://slgobinath.github.io/SafeEyes + 0 + 5 + 5 + + 5 diff --git a/safeeyes/model.py b/safeeyes/model.py index f889b1d2..e57a1f79 100644 --- a/safeeyes/model.py +++ b/safeeyes/model.py @@ -23,6 +23,7 @@ import logging import random from enum import Enum +from dataclasses import dataclass from packaging.version import parse @@ -420,9 +421,19 @@ def build(cls, name, icon_path, icon_id, action): else: return TrayAction(name, icon_path, action, False) +@dataclass +class PluginDependency: + message: str + link: str|None = None + class RequiredPluginException(Exception): - def __init__(self, plugin_id, plugin_name, message): - super().__init__(message) + def __init__(self, plugin_id, plugin_name: str, message: str|PluginDependency): + if isinstance(message, PluginDependency): + msg = message.message + else: + msg = message + + super().__init__(msg) self.plugin_id = plugin_id self.plugin_name = plugin_name diff --git a/safeeyes/plugins/trayicon/dependency_checker.py b/safeeyes/plugins/trayicon/dependency_checker.py index 927e0ed5..d7a92f97 100644 --- a/safeeyes/plugins/trayicon/dependency_checker.py +++ b/safeeyes/plugins/trayicon/dependency_checker.py @@ -17,6 +17,7 @@ # along with this program. If not, see . from safeeyes import utility +from safeeyes.model import PluginDependency import gi gi.require_version('Gio', '2.0') @@ -36,14 +37,10 @@ def validate(plugin_config, plugin_settings): if dbus_proxy.NameHasOwner('(s)', 'org.kde.StatusNotifierWatcher'): return None else: - if utility.DESKTOP_ENVIRONMENT == "gnome": - return _("Please install a gnome shell plugin providing tray icons, eg. 'Tray Icons Reloaded'.") - elif utility.IS_WAYLAND: - return _("Please install a service providing tray icons for your desktop environment.") - elif utility.DESKTOP_ENVIRONMENT == "lxde": - return _("Please install the 'snixembed' service.") - else: - return _("Please install the 'snixembed' service, or a service providing tray icons for your desktop environment.") + return PluginDependency( + message=_("Please install service providing tray icons for your desktop environment."), + link="https://github.com/slgobinath/SafeEyes/wiki/How-to-install-backend-for-Safe-Eyes-tray-icon" + ) command = None if utility.IS_WAYLAND: diff --git a/safeeyes/ui/required_plugin_dialog.py b/safeeyes/ui/required_plugin_dialog.py index 9e05777b..aa0953e7 100644 --- a/safeeyes/ui/required_plugin_dialog.py +++ b/safeeyes/ui/required_plugin_dialog.py @@ -23,6 +23,7 @@ import os from safeeyes import utility +from safeeyes.model import PluginDependency REQUIRED_PLUGIN_DIALOG_GLADE = os.path.join(utility.BIN_DIRECTORY, "glade/required_plugin_dialog.glade") @@ -47,7 +48,14 @@ def __init__(self, plugin_id, plugin_name, message, on_quit, on_disable_plugin): builder.get_object('lbl_main').set_label(_("Please install the dependencies or disable the plugin.")) - builder.get_object('lbl_message').set_label(message) + if isinstance(message, PluginDependency): + builder.get_object('lbl_message').set_label(_(message.message)) + btn_extra_link = builder.get_object('btn_extra_link') + btn_extra_link.set_label(_("Click here for more information")) + btn_extra_link.set_uri(message.link) + btn_extra_link.set_visible(True) + else: + builder.get_object('lbl_message').set_label(_(message)) def show(self): """ diff --git a/safeeyes/ui/settings_dialog.py b/safeeyes/ui/settings_dialog.py index f4bc4e33..e17c9652 100644 --- a/safeeyes/ui/settings_dialog.py +++ b/safeeyes/ui/settings_dialog.py @@ -21,7 +21,7 @@ import gi from safeeyes import utility -from safeeyes.model import Config +from safeeyes.model import Config, PluginDependency gi.require_version('Gtk', '3.0') from gi.repository import Gtk @@ -220,7 +220,15 @@ def __create_plugin_item(self, plugin_config): lbl_plugin_name.set_label(_(plugin_config['meta']['name'])) switch_enable.set_active(plugin_config['enabled']) if plugin_config['error']: - lbl_plugin_description.set_label(_(plugin_config['meta']['description'])) + message = plugin_config['meta']['dependency_description'] + if isinstance(message, PluginDependency): + lbl_plugin_description.set_label(_(message.message)) + btn_plugin_extra_link = builder.get_object('btn_plugin_extra_link') + btn_plugin_extra_link.set_label(_("Click here for more information")) + btn_plugin_extra_link.set_uri(message.link) + btn_plugin_extra_link.set_visible(True) + else: + lbl_plugin_description.set_label(_(message)) lbl_plugin_name.set_sensitive(False) lbl_plugin_description.set_sensitive(False) switch_enable.set_sensitive(False) @@ -258,7 +266,7 @@ def show(self): """ Show the SettingsDialog. """ - self.window.show_all() + self.window.show() def on_switch_postpone_activate(self, switch, state): """ diff --git a/safeeyes/utility.py b/safeeyes/utility.py index fb487f10..f4411092 100644 --- a/safeeyes/utility.py +++ b/safeeyes/utility.py @@ -243,7 +243,7 @@ def load_plugins_config(safeeyes_config): if dependency_description: plugin['enabled'] = False config['error'] = True - config['meta']['description'] = dependency_description + config['meta']['dependency_description'] = dependency_description icon = get_resource_path('ic_warning.png') else: config['error'] = False From df3ae00e92afc2a9a1aa6f26e4ae1525c56cc451 Mon Sep 17 00:00:00 2001 From: deltragon Date: Tue, 16 Jul 2024 12:29:13 +0200 Subject: [PATCH 13/50] correct/add missing translations --- .../config/locale/ar/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/bg/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/ca/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/cs/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/da/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/de/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../locale/en_US/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/eo/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/es/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/et/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/eu/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/fa/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/fr/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/he/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/hi/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/hu/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/id/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/it/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/kn/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/ko/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/lt/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/lv/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/mk/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/mr/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/nb/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/nl/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/pl/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/pt/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../locale/pt_BR/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/ru/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ safeeyes/config/locale/safeeyes.pot | 18 ++++++++++++++++++ .../config/locale/sk/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/sr/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/sv/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/ta/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/tr/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/ug/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/uk/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../locale/uz_Latn/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../config/locale/vi/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../locale/zh_CN/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ .../locale/zh_TW/LC_MESSAGES/safeeyes.po | 19 +++++++++++++++++++ safeeyes/plugins/trayicon/plugin.py | 14 +++++++------- 43 files changed, 804 insertions(+), 7 deletions(-) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index 17e1ba99..16c60235 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -542,6 +542,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "مهلة تصفير الإعدادات (ساعات)" diff --git a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po index abac29dc..679c28b6 100644 --- a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po @@ -527,3 +527,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po index f02951f3..2dccfd6a 100644 --- a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po @@ -531,3 +531,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po index f1d76abe..51707a9e 100644 --- a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po @@ -538,6 +538,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval pro resetování statistik (v hodinách)" diff --git a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po index a851c123..e8614f26 100644 --- a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po @@ -531,6 +531,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval for nulstilling af statistik (i timer)" diff --git a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po index 98b33075..728b6a3b 100644 --- a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po @@ -540,6 +540,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Zeit bis die Statistik zurückgesetzt wird (in Stunden)" diff --git a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po index e0122f77..662c9cca 100644 --- a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po @@ -533,6 +533,25 @@ msgstr "Skipped or postponed %d/%d breaks in a row" msgid "RSI Prevention" msgstr "RSI Prevention" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval to reset statistics (in hours)" diff --git a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po index f2159dcf..ef6971cf 100644 --- a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po @@ -533,6 +533,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intertempo por restarigi statistikojn (en horoj)" diff --git a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po index 40d76ba7..453108fa 100644 --- a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po @@ -541,6 +541,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervalo para restablecer estadísticas (en horas)" diff --git a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po index 1dea9df5..40523b1d 100644 --- a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po @@ -532,6 +532,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistika lähtestamise intervall (tundides)" diff --git a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po index d7f2e2ea..e0e95049 100644 --- a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po @@ -537,3 +537,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index ec0afe41..ddf6df12 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -532,6 +532,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "فاصله برای تنظیم مجدد آمار (در چند ساعت)" diff --git a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po index a0dd520b..35b070b3 100644 --- a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po @@ -545,6 +545,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Fréquence de réinitialisation (en heures)" diff --git a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po index 3948beef..0bb78c63 100644 --- a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po @@ -530,6 +530,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "הפרש בין איפוסי סטטיסטיקה (בשעות)" diff --git a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po index 442307fc..11fe4840 100644 --- a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po @@ -527,3 +527,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po index 00f3c0ff..2fe7e20a 100644 --- a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po @@ -528,3 +528,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po index 6b105fc9..8282d7ba 100644 --- a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po @@ -533,6 +533,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval untuk mengatur ulang statistik (dalam jam)" diff --git a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po index 2a718eb0..c23afbf7 100644 --- a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po @@ -538,3 +538,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po index 5029564e..b74fffbd 100644 --- a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po @@ -526,3 +526,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po index 8167b9b8..2917dd9c 100644 --- a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po @@ -527,6 +527,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "통계 초기화 간격 (시)" diff --git a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po index f4dcfebf..58b1a0ad 100644 --- a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po @@ -540,6 +540,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistikos atstatymo intervalas (valandomis)" diff --git a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po index 8c9c0751..f24aeb30 100644 --- a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po @@ -446,5 +446,24 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistikas atstatīšanas intervāls (stundās)" diff --git a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po index 88095195..13f93f5b 100644 --- a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po @@ -529,3 +529,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po index 70548d32..6fae595e 100644 --- a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po @@ -528,3 +528,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po index f9dd9abf..6d72b545 100644 --- a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po @@ -535,6 +535,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #, fuzzy #~ msgid "Interval to reset statistics (in hours)" diff --git a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po index 1ddefdf5..b75c9713 100644 --- a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po @@ -538,6 +538,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Tussenpoos om statistieken te herstellen (in uren)" diff --git a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po index 0c9d74a1..6a3e36bf 100644 --- a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po @@ -538,6 +538,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Czas do wyzerowania statystyk (w godzinach)" diff --git a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po index 01e0bed3..7c230c96 100644 --- a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po @@ -536,6 +536,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervalo para reiniciar estatísticas (em horas)" diff --git a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po index b454b41a..6a30fdc2 100644 --- a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po @@ -539,3 +539,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po index 68b32802..ce42eee1 100644 --- a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po @@ -539,6 +539,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Интервал для сброса статистики (в часах)" diff --git a/safeeyes/config/locale/safeeyes.pot b/safeeyes/config/locale/safeeyes.pot index 665e8e0f..fa024d24 100644 --- a/safeeyes/config/locale/safeeyes.pot +++ b/safeeyes/config/locale/safeeyes.pot @@ -511,3 +511,21 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po index 85783c0b..49853b4a 100644 --- a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po @@ -535,3 +535,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po index b8acfe2f..6b90b880 100644 --- a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po @@ -542,3 +542,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po index 39c1aa40..03e87288 100644 --- a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po @@ -532,6 +532,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervall för att återställa statistik (i timmar)" diff --git a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po index 9aac0309..2cfd8956 100644 --- a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po @@ -535,6 +535,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "திரை நேரத்தை மீட்டமைப்பதற்கான இடைவேளை (மணித்தியாலங்களில்)" diff --git a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po index f28bf84d..c0bc944b 100644 --- a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po @@ -536,6 +536,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "İstatistikleri sıfırlama aralığı (saat olarak)" diff --git a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po index cd2ac114..2ef08df0 100644 --- a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po @@ -523,3 +523,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po index 0c63cd23..facb3bbf 100644 --- a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po @@ -539,6 +539,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Інтервал скидання статистики (в годинах)" diff --git a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po index 3b4f4ad7..bee12e33 100644 --- a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po @@ -523,3 +523,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po index 047a99f9..f986285f 100644 --- a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po @@ -532,3 +532,22 @@ msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" msgstr "" + +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" diff --git a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po index 8c47259d..e73062d8 100644 --- a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po @@ -528,6 +528,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "重置统计间隔(小时)" diff --git a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po index f50f34a7..059c01d3 100644 --- a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po @@ -525,6 +525,25 @@ msgstr "" msgid "RSI Prevention" msgstr "" +msgid "" +"Please install service providing tray icons for your desktop environment." +msgstr "" + +msgid "Next long break at %s" +msgstr "" + +msgid "Next breaks at %s/%s" +msgstr "" + +msgid "The required plugin '%s' is missing dependencies!" +msgstr "" + +msgid "Please install the dependencies or disable the plugin." +msgstr "" + +msgid "Click here for more information" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "重置數據間隔(時)" diff --git a/safeeyes/plugins/trayicon/plugin.py b/safeeyes/plugins/trayicon/plugin.py index 48b7d596..a149f014 100644 --- a/safeeyes/plugins/trayicon/plugin.py +++ b/safeeyes/plugins/trayicon/plugin.py @@ -341,11 +341,11 @@ class StatusNotifierItemService(DBusService): Category = 'ApplicationStatus' Id = 'io.github.slgobinath.SafeEyes' - Title = _('Safe Eyes') + Title = 'Safe Eyes' Status = 'Active' IconName = 'io.github.slgobinath.SafeEyes-enabled' IconThemePath = '' - ToolTip = ('', [], _('Safe Eyes'), '') + ToolTip = ('', [], 'Safe Eyes', '') ItemIsMenu = True Menu = None @@ -447,7 +447,7 @@ def initialize(self, plugin_config): def get_items(self): breaks_found = self.has_breaks() - info_message = _('No breaks available') + info_message = _('No Breaks Available') if breaks_found: if self.active: @@ -546,17 +546,17 @@ def get_items(self): 'children': [ { 'id': 9, - 'label': _('Any Break'), + 'label': _('Any break'), 'callback': lambda: self.on_manual_break_clicked(None), }, { 'id': 10, - 'label': _('Short Break'), + 'label': _('Short break'), 'callback': lambda: self.on_manual_break_clicked(BreakType.SHORT_BREAK), }, { 'id': 11, - 'label': _('Long Break'), + 'label': _('Long break'), 'callback': lambda: self.on_manual_break_clicked(BreakType.LONG_BREAK), }, ] @@ -597,7 +597,7 @@ def update_tooltip(self): else: description = '' - self.sni_service.set_tooltip(_('Safe Eyes'), description) + self.sni_service.set_tooltip('Safe Eyes', description) def quit_safe_eyes(self): """ From 4d7cdfb35efe42d9cbf9b892e3a79d26ecf89b85 Mon Sep 17 00:00:00 2001 From: deltragon Date: Tue, 16 Jul 2024 18:11:01 +0200 Subject: [PATCH 14/50] disable plugin only temporarily --- safeeyes/glade/required_plugin_dialog.glade | 12 ++++++------ safeeyes/safeeyes.py | 10 +++------- safeeyes/ui/required_plugin_dialog.py | 5 ++++- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/safeeyes/glade/required_plugin_dialog.glade b/safeeyes/glade/required_plugin_dialog.glade index 9dc2542e..2a28837e 100644 --- a/safeeyes/glade/required_plugin_dialog.glade +++ b/safeeyes/glade/required_plugin_dialog.glade @@ -67,15 +67,15 @@ Click here for more information https://slgobinath.github.io/SafeEyes 0 - 5 - 5 - 5 - 5 - Please install the dependencies or disable the plugin. + 5 + 1 + center + 60 + Please install the dependencies or disable the plugin. To hide this message, you can also deactivate the plugin in the settings. @@ -106,7 +106,7 @@ - Disable plugin + Disable plugin temporarily diff --git a/safeeyes/safeeyes.py b/safeeyes/safeeyes.py index e9e008ee..4b68d259 100644 --- a/safeeyes/safeeyes.py +++ b/safeeyes/safeeyes.py @@ -156,9 +156,6 @@ def show_settings(self): settings_dialog.show() def show_required_plugin_dialog(self, plugin_id, plugin_name, message): - """ - Listen to tray icon About action and send the signal to About dialog. - """ logging.info("Show RequiredPlugin dialog") dialog = RequiredPluginDialog( plugin_id, @@ -170,16 +167,15 @@ def show_required_plugin_dialog(self, plugin_id, plugin_name, message): dialog.show() def disable_plugin(self, plugin_id): + """ + Temporarily disable plugin, and restart SafeEyes. + """ config = self.config.clone() for plugin in config.get('plugins'): if plugin['id'] == plugin_id: plugin['enabled'] = False - logging.info("Saving settings to safeeyes.json") - - config.save() - self.required_plugin_dialog_active = False self.restart(config, set_active=True) diff --git a/safeeyes/ui/required_plugin_dialog.py b/safeeyes/ui/required_plugin_dialog.py index aa0953e7..debe53b3 100644 --- a/safeeyes/ui/required_plugin_dialog.py +++ b/safeeyes/ui/required_plugin_dialog.py @@ -46,7 +46,10 @@ def __init__(self, plugin_id, plugin_name, message, on_quit, on_disable_plugin): builder.get_object('lbl_header').set_label(_("The required plugin '%s' is missing dependencies!") % _(plugin_name)) - builder.get_object('lbl_main').set_label(_("Please install the dependencies or disable the plugin.")) + builder.get_object('lbl_main').set_label(_("Please install the dependencies or disable the plugin. To hide this message, you can also deactivate the plugin in the settings.")) + + builder.get_object('btn_close').set_label(_("Quit")) + builder.get_object('btn_disable_plugin').set_label(_("Disable plugin temporarily")) if isinstance(message, PluginDependency): builder.get_object('lbl_message').set_label(_(message.message)) From e6b358f4954b2307482180bfad460d1a5e6ec5d1 Mon Sep 17 00:00:00 2001 From: deltragon Date: Tue, 16 Jul 2024 18:59:43 +0200 Subject: [PATCH 15/50] settings: show difference between errored and disabled plugin add option to disable errored plugin --- safeeyes/glade/item_plugin.glade | 28 ++++++++++++++++++---------- safeeyes/plugin_manager.py | 2 +- safeeyes/ui/settings_dialog.py | 23 ++++++++++++++++++----- safeeyes/utility.py | 1 - 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/safeeyes/glade/item_plugin.glade b/safeeyes/glade/item_plugin.glade index 377eb28d..6cea3f3a 100644 --- a/safeeyes/glade/item_plugin.glade +++ b/safeeyes/glade/item_plugin.glade @@ -26,6 +26,11 @@ False gtk-properties + + True + False + _Cancel + True False @@ -124,11 +129,19 @@ end center - - False - True - 0 - + + + + False + center + center + img_disable + Disable permanently + True + + @@ -143,11 +156,6 @@ - - False - False - 1 - diff --git a/safeeyes/plugin_manager.py b/safeeyes/plugin_manager.py index ec6b30a1..1bc3f8f6 100644 --- a/safeeyes/plugin_manager.py +++ b/safeeyes/plugin_manager.py @@ -303,7 +303,7 @@ def __load_plugin(self, plugin): # Check for dependencies message = utility.check_plugin_dependencies(plugin['id'], plugin_config, plugin.get('settings', {}), plugin_path) if message: - if plugin_config['required_plugin']: + if plugin_config.get('required_plugin', False): raise RequiredPluginException( plugin['id'], plugin_config['meta']['name'], diff --git a/safeeyes/ui/settings_dialog.py b/safeeyes/ui/settings_dialog.py index e17c9652..62f54f4b 100644 --- a/safeeyes/ui/settings_dialog.py +++ b/safeeyes/ui/settings_dialog.py @@ -232,18 +232,24 @@ def __create_plugin_item(self, plugin_config): lbl_plugin_name.set_sensitive(False) lbl_plugin_description.set_sensitive(False) switch_enable.set_sensitive(False) + btn_properties.set_sensitive(False) + if plugin_config['enabled']: + btn_disable_errored = builder.get_object('btn_disable_errored') + btn_disable_errored.set_visible(True) + btn_disable_errored.connect('clicked', lambda button: self.__disable_errored_plugin(button, plugin_config)) + else: lbl_plugin_description.set_label(_(plugin_config['meta']['description'])) + if plugin_config['settings']: + btn_properties.set_sensitive(True) + btn_properties.connect('clicked', lambda button: self.__show_plugins_properties_dialog(plugin_config)) + else: + btn_properties.set_sensitive(False) self.plugin_switches[plugin_config['id']] = switch_enable if plugin_config.get('break_override_allowed', False): self.plugin_map[plugin_config['id']] = plugin_config['meta']['name'] if plugin_config['icon']: builder.get_object('img_plugin_icon').set_from_file(plugin_config['icon']) - if plugin_config['settings']: - btn_properties.set_sensitive(True) - btn_properties.connect('clicked', lambda button: self.__show_plugins_properties_dialog(plugin_config)) - else: - btn_properties.set_sensitive(False) box = builder.get_object('box') box.set_visible(True) return box @@ -255,6 +261,13 @@ def __show_plugins_properties_dialog(self, plugin_config): dialog = PluginSettingsDialog(plugin_config) dialog.show() + def __disable_errored_plugin(self, button, plugin_config): + """ + Permanently disable errored plugin + """ + button.set_sensitive(False) + self.plugin_switches[plugin_config['id']].set_active(False) + def __show_break_properties_dialog(self, break_config, is_short, parent, on_close, on_add, on_remove): """ Show the BreakProperties dialog diff --git a/safeeyes/utility.py b/safeeyes/utility.py index f4411092..022d63c2 100644 --- a/safeeyes/utility.py +++ b/safeeyes/utility.py @@ -241,7 +241,6 @@ def load_plugins_config(safeeyes_config): continue dependency_description = check_plugin_dependencies(plugin['id'], config, plugin.get('settings', {}), plugin_path) if dependency_description: - plugin['enabled'] = False config['error'] = True config['meta']['dependency_description'] = dependency_description icon = get_resource_path('ic_warning.png') From 239bb994189ef32de130d4b39732cf874f2cc166 Mon Sep 17 00:00:00 2001 From: deltragon Date: Tue, 16 Jul 2024 18:59:53 +0200 Subject: [PATCH 16/50] translations --- safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/safeeyes.pot | 8 +++++++- safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po | 10 +++++++++- safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po | 10 +++++++++- 42 files changed, 376 insertions(+), 42 deletions(-) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index 16c60235..8dbc9caf 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -555,12 +555,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "مهلة تصفير الإعدادات (ساعات)" diff --git a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po index 679c28b6..fc24276d 100644 --- a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po @@ -541,8 +541,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po index 2dccfd6a..d4e8a1fa 100644 --- a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po @@ -545,8 +545,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po index 51707a9e..cfcd9412 100644 --- a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po @@ -551,12 +551,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval pro resetování statistik (v hodinách)" diff --git a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po index e8614f26..378302b5 100644 --- a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po @@ -544,12 +544,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval for nulstilling af statistik (i timer)" diff --git a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po index 728b6a3b..b90b1658 100644 --- a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po @@ -553,12 +553,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "Permanent deaktivieren" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Zeit bis die Statistik zurückgesetzt wird (in Stunden)" diff --git a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po index 662c9cca..564464c0 100644 --- a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po @@ -546,12 +546,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval to reset statistics (in hours)" diff --git a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po index ef6971cf..cb40dc55 100644 --- a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po @@ -546,12 +546,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intertempo por restarigi statistikojn (en horoj)" diff --git a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po index 453108fa..9ae2b3ff 100644 --- a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po @@ -554,12 +554,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervalo para restablecer estadísticas (en horas)" diff --git a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po index 40523b1d..4054b5e4 100644 --- a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po @@ -545,12 +545,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistika lähtestamise intervall (tundides)" diff --git a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po index e0e95049..ec893896 100644 --- a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po @@ -551,8 +551,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index ddf6df12..7b39ab29 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -545,12 +545,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "فاصله برای تنظیم مجدد آمار (در چند ساعت)" diff --git a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po index 35b070b3..b4b45ffa 100644 --- a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po @@ -558,12 +558,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Fréquence de réinitialisation (en heures)" diff --git a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po index 0bb78c63..0405706c 100644 --- a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po @@ -543,12 +543,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "הפרש בין איפוסי סטטיסטיקה (בשעות)" diff --git a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po index 11fe4840..3f8117a3 100644 --- a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po @@ -541,8 +541,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po index 2fe7e20a..d6357474 100644 --- a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po @@ -542,8 +542,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po index 8282d7ba..7c6b8be6 100644 --- a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po @@ -546,12 +546,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Interval untuk mengatur ulang statistik (dalam jam)" diff --git a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po index c23afbf7..0cd6d158 100644 --- a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po @@ -552,8 +552,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po index b74fffbd..a5b61856 100644 --- a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po @@ -540,8 +540,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po index 2917dd9c..c46f5da3 100644 --- a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po @@ -540,12 +540,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "통계 초기화 간격 (시)" diff --git a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po index 58b1a0ad..cb383056 100644 --- a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po @@ -553,12 +553,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistikos atstatymo intervalas (valandomis)" diff --git a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po index f24aeb30..4bb98d4e 100644 --- a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po @@ -459,11 +459,19 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Statistikas atstatīšanas intervāls (stundās)" diff --git a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po index 13f93f5b..070996ae 100644 --- a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po @@ -543,8 +543,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po index 6fae595e..657a4d79 100644 --- a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po @@ -542,8 +542,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po index 6d72b545..870498a6 100644 --- a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po @@ -548,12 +548,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #, fuzzy #~ msgid "Interval to reset statistics (in hours)" diff --git a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po index b75c9713..7e2a114f 100644 --- a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po @@ -551,12 +551,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Tussenpoos om statistieken te herstellen (in uren)" diff --git a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po index 6a3e36bf..78279175 100644 --- a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po @@ -551,12 +551,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Czas do wyzerowania statystyk (w godzinach)" diff --git a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po index 7c230c96..b099b000 100644 --- a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po @@ -549,12 +549,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervalo para reiniciar estatísticas (em horas)" diff --git a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po index 6a30fdc2..e38d21b8 100644 --- a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po @@ -553,8 +553,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po index ce42eee1..cd43479b 100644 --- a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po @@ -552,12 +552,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Интервал для сброса статистики (в часах)" diff --git a/safeeyes/config/locale/safeeyes.pot b/safeeyes/config/locale/safeeyes.pot index fa024d24..6e9fe389 100644 --- a/safeeyes/config/locale/safeeyes.pot +++ b/safeeyes/config/locale/safeeyes.pot @@ -524,8 +524,14 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "Please install the dependencies or disable the plugin. To hide this message, you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po index 49853b4a..0b0b3962 100644 --- a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po @@ -549,8 +549,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po index 6b90b880..addbb96c 100644 --- a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po @@ -556,8 +556,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po index 03e87288..0894ef3f 100644 --- a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po @@ -545,12 +545,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Intervall för att återställa statistik (i timmar)" diff --git a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po index 2cfd8956..f855d244 100644 --- a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po @@ -548,12 +548,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "திரை நேரத்தை மீட்டமைப்பதற்கான இடைவேளை (மணித்தியாலங்களில்)" diff --git a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po index c0bc944b..60b0a8b2 100644 --- a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po @@ -549,12 +549,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "İstatistikleri sıfırlama aralığı (saat olarak)" diff --git a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po index 2ef08df0..aaabab11 100644 --- a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po @@ -537,8 +537,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po index facb3bbf..854d1696 100644 --- a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po @@ -552,12 +552,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "Інтервал скидання статистики (в годинах)" diff --git a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po index bee12e33..78c5e760 100644 --- a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po @@ -537,8 +537,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po index f986285f..3ffb4ab0 100644 --- a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po @@ -546,8 +546,16 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" + +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" diff --git a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po index e73062d8..93f9df62 100644 --- a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po @@ -541,12 +541,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "重置统计间隔(小时)" diff --git a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po index 059c01d3..f103963b 100644 --- a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po @@ -538,12 +538,20 @@ msgstr "" msgid "The required plugin '%s' is missing dependencies!" msgstr "" -msgid "Please install the dependencies or disable the plugin." +msgid "" +"Please install the dependencies or disable the plugin. To hide this message, " +"you can also deactivate the plugin in the settings." msgstr "" msgid "Click here for more information" msgstr "" +msgid "Disable plugin temporarily" +msgstr "" + +msgid "Disable permanently" +msgstr "" + # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" #~ msgstr "重置數據間隔(時)" From a45d6bf8a0af45462882916c64c26768fd556eb1 Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Wed, 24 Jul 2024 01:43:32 -0400 Subject: [PATCH 17/50] Create LICENSE --- LICENSE | 674 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 674 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. From de5e7ea5c275d37f4eeaca3d44c60e2357c1f9da Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Wed, 24 Jul 2024 01:47:06 -0400 Subject: [PATCH 18/50] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 128 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..18c91471 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. From bd600d099489091d0582d9d47e8ae8ddf5f3ad38 Mon Sep 17 00:00:00 2001 From: deltragon Date: Thu, 25 Jul 2024 22:39:08 +0200 Subject: [PATCH 19/50] fix missing stylesheet --- safeeyes/__main__.py | 1 + safeeyes/utility.py | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/safeeyes/__main__.py b/safeeyes/__main__.py index a3c11714..61ec8a83 100755 --- a/safeeyes/__main__.py +++ b/safeeyes/__main__.py @@ -93,6 +93,7 @@ def main(): utility.initialize_logging(args.debug) utility.initialize_platform() config = Config() + utility.create_user_stylesheet_if_missing() if __running(): logging.info("Safe Eyes is already running") diff --git a/safeeyes/utility.py b/safeeyes/utility.py index 022d63c2..80cfe403 100644 --- a/safeeyes/utility.py +++ b/safeeyes/utility.py @@ -365,21 +365,28 @@ def initialize_safeeyes(): # Remove the ~/.config/safeeyes/safeeyes.json file delete(CONFIG_FILE_PATH) - # Create the XDG_CONFIG_HOME(or ~/.config)/safeeyes/style directory - mkdir(STYLE_SHEET_DIRECTORY) + if not os.path.isdir(CONFIG_DIRECTORY): + mkdir(CONFIG_DIRECTORY) # Copy the safeeyes.json shutil.copy2(SYSTEM_CONFIG_FILE_PATH, CONFIG_FILE_PATH) os.chmod(CONFIG_FILE_PATH, 0o777) + create_user_stylesheet_if_missing() + + # initialize_safeeyes gets called when the configuration file is not present, which happens just after installation or manual deletion of .config/safeeyes/safeeyes.json file. In these cases, we want to force the creation of a startup entry + create_startup_entry(force=True) + +def create_user_stylesheet_if_missing(): + # Create the XDG_CONFIG_HOME(or ~/.config)/safeeyes/style directory + if not os.path.isdir(STYLE_SHEET_DIRECTORY): + mkdir(STYLE_SHEET_DIRECTORY) + # Copy the new style sheet if not os.path.isfile(STYLE_SHEET_PATH): shutil.copy2(SYSTEM_STYLE_SHEET_PATH, STYLE_SHEET_PATH) os.chmod(STYLE_SHEET_PATH, 0o777) - # initialize_safeeyes gets called when the configuration file is not present, which happens just after installation or manual deletion of .config/safeeyes/safeeyes.json file. In these cases, we want to force the creation of a startup entry - create_startup_entry(force=True) - def create_startup_entry(force=False): """ Create start up entry. From cb0c32dc91877bb6f8bbd63803e6ce490925d326 Mon Sep 17 00:00:00 2001 From: Parsa Nobahari Date: Thu, 25 Jul 2024 15:46:36 +0000 Subject: [PATCH 20/50] Translated using Weblate (Persian) Currently translated at 100.0% (119 of 119 strings) Translation: Safe Eyes/Translations Translate-URL: https://hosted.weblate.org/projects/safe-eyes/translations/fa/ --- safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index c00542a7..ebbcec12 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-07-07 10:18+0000\n" -"Last-Translator: Danial Behzadi \n" +"PO-Revision-Date: 2024-07-26 11:09+0000\n" +"Last-Translator: Parsa Nobahari \n" "Language-Team: Persian \n" "Language: fa\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.13.1-dev\n" +"X-Generator: Weblate 5.7-dev\n" # Short break msgid "Tightly close your eyes" @@ -478,15 +478,15 @@ msgstr "اکنون استراحت کنید" #: plugins/trayicon msgid "Any break" -msgstr "" +msgstr "هر استراحتی" #: plugins/trayicon msgid "Short break" -msgstr "" +msgstr "استراحت کوتاه" #: plugins/trayicon msgid "Long break" -msgstr "" +msgstr "استراحت طولانی" #: plugins/trayicon msgid "Until restart" From e77e3e4156d0d431fa6fbab201838cd5261fdccb Mon Sep 17 00:00:00 2001 From: RDWN IT Date: Thu, 25 Jul 2024 10:43:11 +0000 Subject: [PATCH 21/50] Translated using Weblate (Arabic) Currently translated at 100.0% (119 of 119 strings) Translation: Safe Eyes/Translations Translate-URL: https://hosted.weblate.org/projects/safe-eyes/translations/ar/ --- safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index 6d8b8ac6..5b2192d4 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2022-05-24 17:15+0000\n" -"Last-Translator: Mohamed Omran \n" +"PO-Revision-Date: 2024-07-26 11:09+0000\n" +"Last-Translator: RDWN IT \n" "Language-Team: Arabic \n" "Language: ar\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Weblate 4.13-dev\n" +"X-Generator: Weblate 5.7-dev\n" # Short break msgid "Tightly close your eyes" @@ -488,15 +488,15 @@ msgstr "خُذ استراحة الآن" #: plugins/trayicon msgid "Any break" -msgstr "" +msgstr "كل ألإستراحات" #: plugins/trayicon msgid "Short break" -msgstr "" +msgstr "إستراحة قصيرة" #: plugins/trayicon msgid "Long break" -msgstr "" +msgstr "إستراحة طويلة" #: plugins/trayicon msgid "Until restart" From af6f1da4664096883e711f1814098ced8c3cb394 Mon Sep 17 00:00:00 2001 From: gallegonovato Date: Fri, 26 Jul 2024 12:30:20 +0000 Subject: [PATCH 22/50] Translated using Weblate (Spanish) Currently translated at 100.0% (133 of 133 strings) Translation: Safe Eyes/Translations Translate-URL: https://hosted.weblate.org/projects/safe-eyes/translations/es/ --- .../config/locale/es/LC_MESSAGES/safeeyes.po | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po index 9ae2b3ff..ec0a2425 100644 --- a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-06-30 21:09+0000\n" +"PO-Revision-Date: 2024-07-26 20:27+0000\n" "Last-Translator: gallegonovato \n" "Language-Team: Spanish \n" @@ -112,7 +112,7 @@ msgstr "Licencia" # About dialog msgid "List of Contributors" -msgstr "" +msgstr "Colaboradores" # Break screen msgid "Skip" @@ -523,50 +523,55 @@ msgstr "Pausar multimedia" # plugin/limitconsecutiveskipping msgid "Limit Consecutive Skipping" -msgstr "" +msgstr "Límite de saltos consecutivos" # plugin/limitconsecutiveskipping msgid "How many skips or postpones are allowed in a row" -msgstr "" +msgstr "¿Cuántos saltos o aplazamientos se permiten seguidos?" # plugin/limitconsecutiveskipping msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" +"Limitar la cantidad de descansos que se pueden omitir o posponer seguidos" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" -msgstr "" +msgstr "Se ha(n) saltado o pospuesto %d/%d pausa(s) seguida(s)" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" -msgstr "" +msgstr "Prevención de RSI" msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +"Por favor, instalea el servicio que proporciona iconos para la bandeja para " +"tu escritorio." msgid "Next long break at %s" -msgstr "" +msgstr "La siguiente pausa larga es en %s" msgid "Next breaks at %s/%s" -msgstr "" +msgstr "Próximos descansos en %s/%s" msgid "The required plugin '%s' is missing dependencies!" -msgstr "" +msgstr "¡Al complemento requerido '%s' no tiene las dependencias!" msgid "" "Please install the dependencies or disable the plugin. To hide this message, " "you can also deactivate the plugin in the settings." msgstr "" +"Por favor, instala las dependencias o desactiva el complemento. Para ocultar " +"este mensaje, también puedes desactivar el complemento en la configuración." msgid "Click here for more information" -msgstr "" +msgstr "Haz clic aquí para obtener más información" msgid "Disable plugin temporarily" -msgstr "" +msgstr "Desactivar el complemento temporalmente" msgid "Disable permanently" -msgstr "" +msgstr "Desactivar permanentemente" # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" From 5d1779d18f72b5c885b8b5f0107e8aa173e3b09d Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Sat, 27 Jul 2024 13:35:41 -0400 Subject: [PATCH 23/50] add dependencies to README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 550b5243..71940615 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,11 @@ flatpak install flathub io.github.slgobinath.SafeEyes Ensure to meet the following dependencies: - gir1.2-notify-0.7 +- python3-babel +- python3-croniter - python3-psutil +- python3-packaging +- python3-xlib - xprintidle (optional) - wlrctl (wayland optional) - Python 3.10+ From be5e85e5e4a1d7feb471752f09d19df56290db8f Mon Sep 17 00:00:00 2001 From: Ettore Atalan Date: Sat, 27 Jul 2024 22:08:32 +0000 Subject: [PATCH 24/50] Translated using Weblate (German) Currently translated at 90.2% (120 of 133 strings) Translation: Safe Eyes/Translations Translate-URL: https://hosted.weblate.org/projects/safe-eyes/translations/de/ --- safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po index b90b1658..62fa3521 100644 --- a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2023-07-04 20:53+0000\n" -"Last-Translator: Sebastian Pipping \n" +"PO-Revision-Date: 2024-07-28 15:09+0000\n" +"Last-Translator: Ettore Atalan \n" "Language-Team: German \n" "Language: de\n" @@ -15,7 +15,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 5.0-dev\n" +"X-Generator: Weblate 5.7-dev\n" # Short break msgid "Tightly close your eyes" @@ -113,7 +113,7 @@ msgstr "Lizenz" # About dialog msgid "List of Contributors" -msgstr "" +msgstr "Liste der Mitwirkenden" # Break screen msgid "Skip" @@ -494,11 +494,11 @@ msgstr "" #: plugins/trayicon msgid "Short break" -msgstr "" +msgstr "Kurze Pause" #: plugins/trayicon msgid "Long break" -msgstr "" +msgstr "Lange Pause" #: plugins/trayicon msgid "Until restart" From cd0d53d55657ad49d0aad48d659887cf32735b13 Mon Sep 17 00:00:00 2001 From: Parsa Nobahari Date: Sat, 27 Jul 2024 14:20:41 +0000 Subject: [PATCH 25/50] Translated using Weblate (Persian) Currently translated at 100.0% (133 of 133 strings) Translation: Safe Eyes/Translations Translate-URL: https://hosted.weblate.org/projects/safe-eyes/translations/fa/ --- .../config/locale/fa/LC_MESSAGES/safeeyes.po | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index a3aa2b4d..abe28c34 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2024-07-26 11:09+0000\n" +"PO-Revision-Date: 2024-07-28 15:09+0000\n" "Last-Translator: Parsa Nobahari \n" "Language-Team: Persian \n" @@ -112,11 +112,11 @@ msgstr "پروانه" # About dialog msgid "List of Contributors" -msgstr "" +msgstr "لیست مشارکت‌کنندگان" # Break screen msgid "Skip" -msgstr "پرش" +msgstr "ردکن" # Break screen msgid "Postpone" @@ -148,7 +148,7 @@ msgstr "نمایش استراحت‌ها به ترتیب کاتوره‌ای" # Settings dialog msgid "Strict break (No way to skip breaks)" -msgstr "استراحت قاطع ( بدون راهی برای پرش از استراحت)" +msgstr "استراحت قاطع ( راهی برای ردکردن از استراحت نباشد)" # Settings dialog msgid "Allow postponing breaks" @@ -324,7 +324,7 @@ msgstr "مزاحم نشوید" # plugin/donotdisturb msgid "Skip break if the active window is in fullscreen mode" -msgstr "اگر پنجره فعال در حالت تمام صفحه است ، از پرش صرف نظر کنید" +msgstr "اگر پنجره فعال در حالت تمام‌صفحه است، از ردکردن صرف نظر کنید" # plugin/donotdisturb msgid "Do not interrupt these windows anytime" @@ -384,7 +384,7 @@ msgstr "دستور محافظ صفحه نمایش سفارشی" # plugin/screensaver msgid "Minimum seconds to skip without screensaver" -msgstr "کمینهٔ ثانیه‌ها برای پرش بدون محافظ صفحه" +msgstr "حداقل ثانیه‌ها برای ردکردن بدون محافظ صفحه" # plugin/screensaver msgid "Lock screen" @@ -514,50 +514,53 @@ msgstr "مکث رسانه" # plugin/limitconsecutiveskipping msgid "Limit Consecutive Skipping" -msgstr "" +msgstr "محدود‌کردن ردکردن بیش‌از‌حد" # plugin/limitconsecutiveskipping msgid "How many skips or postpones are allowed in a row" -msgstr "" +msgstr "چقدر پشت‌سرهم ردکردن یا به تعویق انداختن مجاز است" # plugin/limitconsecutiveskipping msgid "Limit how many breaks can be skipped or postponed in a row" -msgstr "" +msgstr "تعداد استراحت‌ها را که می‌توان پشت‌سرهم رد یا به تعویق انداخت محدود کن" # plugin/limitconsecutiveskipping msgid "Skipped or postponed %d/%d breaks in a row" -msgstr "" +msgstr "%d/%d استراحت‌ها پشت‌سرهم رد یا به تعویق افتاده‌اند" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" -msgstr "" +msgstr "جلوگیری از آر‌ اس آی" msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +"لطفاً آیکون‌های نوار ارائه دهنده خدمات را برای محیط دسکتاپ خود نصب کنید." msgid "Next long break at %s" -msgstr "" +msgstr "استراحت طولانی بعدی در %s" msgid "Next breaks at %s/%s" -msgstr "" +msgstr "استراحت‌های بعدی در %s" msgid "The required plugin '%s' is missing dependencies!" -msgstr "" +msgstr "افزونه موردنیاز '%s' فاقد دِپِندِنسی است!" msgid "" "Please install the dependencies or disable the plugin. To hide this message, " "you can also deactivate the plugin in the settings." msgstr "" +"لطفاً دِپِندِنسی ها را نصب کنید یا افزونه را غیرفعال کنید. برای مخفی کردن این " +"پیام، می توانید افزونه را در تنظیمات غیرفعال کنید." msgid "Click here for more information" -msgstr "" +msgstr "برای اطلاعات بیشتر اینجا کلیک کنید" msgid "Disable plugin temporarily" -msgstr "" +msgstr "غیرفعال کردن موقت افزونه" msgid "Disable permanently" -msgstr "" +msgstr "غیرفعال کردن دائمی" # plugin/healthstats #~ msgid "Interval to reset statistics (in hours)" From 48dae1e8e81db30f4aa4e39bde17ebf6b6a84d3e Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Thu, 1 Aug 2024 13:51:11 -0400 Subject: [PATCH 26/50] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 71940615..0fdc060a 100644 --- a/README.md +++ b/README.md @@ -48,14 +48,18 @@ It is also available in Ubuntu PPA, Arch AUR, Gentoo and Python PyPI. You can ch ### Ubuntu, Linux Mint and other Ubuntu Derivatives -The [Official PPA for Safe Eyes](https://launchpad.net/~safeeyes-team/+archive/ubuntu/safeeyes) hosts the latest version of safeeyes for Ubuntu 22.04 and above. On older versions of Ubuntu, an older version of Safe Eyes is available on the official repositories. - +The [Official PPA for Safe Eyes](https://launchpad.net/~safeeyes-team/+archive/ubuntu/safeeyes) hosts the latest version of safeeyes **for Ubuntu 22.04 and above**. ```bash sudo add-apt-repository ppa:safeeyes-team/safeeyes sudo apt update sudo apt install safeeyes ``` +On older versions of Ubuntu, an older version of Safe Eyes is available on the official repositories. +```bash +sudo apt install safeeyes +``` + ### Arch ```bash From 3421403a81ee2d78711ec79bfad19af7b9e46b47 Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Thu, 1 Aug 2024 20:03:13 -0400 Subject: [PATCH 27/50] update one line description --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index c07cbb88..cccfc32e 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,7 @@ Homepage: https://github.com/slgobinath/SafeEyes/ Package: safeeyes Architecture: all Depends: ${misc:Depends}, ${python3:Depends}, python3 (>= 3.10.0), python3-xlib, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter, python3-packaging -Description: Safe Eyes +Description: Prevent eye strain with Safe Eyes – your screen break reminder. Safe Eyes is a simple tool to remind you to take periodic breaks for your eyes. This is essential for anyone spending more time on the computer to avoid eye strain and other physical problems. . Features: From 003812cb96551b03c2b0322baf34ca826f9d0dc8 Mon Sep 17 00:00:00 2001 From: Archisman Panigrahi Date: Thu, 1 Aug 2024 20:06:33 -0400 Subject: [PATCH 28/50] Update control --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index cccfc32e..e96dc223 100644 --- a/debian/control +++ b/debian/control @@ -10,7 +10,7 @@ Homepage: https://github.com/slgobinath/SafeEyes/ Package: safeeyes Architecture: all Depends: ${misc:Depends}, ${python3:Depends}, python3 (>= 3.10.0), python3-xlib, gir1.2-notify-0.7, python3-babel, x11-utils, xprintidle, alsa-utils, python3-psutil, python3-croniter, python3-packaging -Description: Prevent eye strain with Safe Eyes – your screen break reminder. +Description: Prevent eye strain with Safe Eyes – an essential screen break reminder. Safe Eyes is a simple tool to remind you to take periodic breaks for your eyes. This is essential for anyone spending more time on the computer to avoid eye strain and other physical problems. . Features: From 93964e6bc6edc086b37c117444dbe534ff6f09b9 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 16:08:53 +0200 Subject: [PATCH 29/50] translations: fa: fix string formatting errors --- safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index abe28c34..a0ca1381 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -450,13 +450,13 @@ msgstr "به کار انداختن محافظ چشم" msgid "For %d Hour" msgid_plural "For %d Hours" msgstr[0] "برای ۱ ساعت" -msgstr[1] "برای %Id ساعت" +msgstr[1] "برای %dI ساعت" #: plugins/trayicon msgid "For %d Minute" msgid_plural "For %d Minutes" msgstr[0] "برای ۱ دقیقه" -msgstr[1] "برای %Id دقیقه" +msgstr[1] "برای %dI دقیقه" #: plugins/trayicon msgid "For %d Second" @@ -541,7 +541,7 @@ msgid "Next long break at %s" msgstr "استراحت طولانی بعدی در %s" msgid "Next breaks at %s/%s" -msgstr "استراحت‌های بعدی در %s" +msgstr "استراحت‌های بعدی در %s/%s" msgid "The required plugin '%s' is missing dependencies!" msgstr "افزونه موردنیاز '%s' فاقد دِپِندِنسی است!" From 762305c5c10e37f3936e740191c2a6a5c1160308 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 16:13:13 +0200 Subject: [PATCH 30/50] translations: use named placeholder for plural translation Fixes TypeError when numbers are optional in eg. singular forms. See https://github.com/python/cpython/issues/52606 --- .../config/locale/ar/LC_MESSAGES/safeeyes.po | 36 +++++++++---------- .../config/locale/bg/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/ca/LC_MESSAGES/safeeyes.po | 16 ++++----- .../config/locale/cs/LC_MESSAGES/safeeyes.po | 30 ++++++++-------- .../config/locale/da/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/de/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../locale/en_US/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/eo/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/es/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/et/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/eu/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/fa/LC_MESSAGES/safeeyes.po | 18 +++++----- .../config/locale/fr/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/he/LC_MESSAGES/safeeyes.po | 18 +++++----- .../config/locale/hi/LC_MESSAGES/safeeyes.po | 12 +++---- .../config/locale/hu/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/id/LC_MESSAGES/safeeyes.po | 18 +++++----- .../config/locale/it/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/kn/LC_MESSAGES/safeeyes.po | 12 +++---- .../config/locale/ko/LC_MESSAGES/safeeyes.po | 18 +++++----- .../config/locale/lt/LC_MESSAGES/safeeyes.po | 30 ++++++++-------- .../config/locale/lv/LC_MESSAGES/safeeyes.po | 30 ++++++++-------- .../config/locale/mk/LC_MESSAGES/safeeyes.po | 12 +++---- .../config/locale/mr/LC_MESSAGES/safeeyes.po | 12 +++---- .../config/locale/nb/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/nl/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/pl/LC_MESSAGES/safeeyes.po | 30 ++++++++-------- .../config/locale/pt/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../locale/pt_BR/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/ru/LC_MESSAGES/safeeyes.po | 30 ++++++++-------- safeeyes/config/locale/safeeyes.pot | 12 +++---- .../config/locale/sk/LC_MESSAGES/safeeyes.po | 30 ++++++++-------- .../config/locale/sr/LC_MESSAGES/safeeyes.po | 12 +++---- .../config/locale/sv/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/ta/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/tr/LC_MESSAGES/safeeyes.po | 24 ++++++------- .../config/locale/ug/LC_MESSAGES/safeeyes.po | 12 +++---- .../config/locale/uk/LC_MESSAGES/safeeyes.po | 30 ++++++++-------- .../locale/uz_Latn/LC_MESSAGES/safeeyes.po | 12 +++---- .../config/locale/vi/LC_MESSAGES/safeeyes.po | 18 +++++----- .../locale/zh_CN/LC_MESSAGES/safeeyes.po | 18 +++++----- .../locale/zh_TW/LC_MESSAGES/safeeyes.po | 18 +++++----- safeeyes/plugins/trayicon/plugin.py | 22 ++++++++---- 43 files changed, 474 insertions(+), 464 deletions(-) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index f7fb146b..a86f022b 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -445,34 +445,34 @@ msgid "Enable Safe Eyes" msgstr "فعِّل Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "لمدة %d ساعة" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "لمدة %(num)d ساعة" msgstr[1] "لمدة ساعة" msgstr[2] "لمدة ساعتين" -msgstr[3] "لمدة %d ساعات" -msgstr[4] "لمدة %d ساعة" -msgstr[5] "لمدة %d ساعة" +msgstr[3] "لمدة %(num)d ساعات" +msgstr[4] "لمدة %(num)d ساعة" +msgstr[5] "لمدة %(num)d ساعة" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "لمدة %d دقيقة" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "لمدة %(num)d دقيقة" msgstr[1] "لمدة دقيقة" msgstr[2] "لمدة دقيقتين" -msgstr[3] "لمدة %d دقائق" -msgstr[4] "لمدة %d دقيقة" -msgstr[5] "لمدة %d دقيقة" +msgstr[3] "لمدة %(num)d دقائق" +msgstr[4] "لمدة %(num)d دقيقة" +msgstr[5] "لمدة %(num)d دقيقة" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "لمدة %d ثانية" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "لمدة %(num)d ثانية" msgstr[1] "لمدة ثانية" msgstr[2] "لمدة ثانيتين" -msgstr[3] "لمدة %d ثوان" -msgstr[4] "لمدة %d ثانية" -msgstr[5] "لمدة %d ثانية" +msgstr[3] "لمدة %(num)d ثوان" +msgstr[4] "لمدة %(num)d ثانية" +msgstr[5] "لمدة %(num)d ثانية" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po index fc24276d..6b3d3fb3 100644 --- a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po @@ -443,22 +443,22 @@ msgid "Enable Safe Eyes" msgstr "Включване на Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "За %d Час" -msgstr[1] "За %d Часа" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "За %(num)d Час" +msgstr[1] "За %(num)d Часа" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "За %d Минута" -msgstr[1] "За %d Минути" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "За %(num)d Минута" +msgstr[1] "За %(num)d Минути" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "За %d Секунда" -msgstr[1] "За %d Секунди" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "За %(num)d Секунда" +msgstr[1] "За %(num)d Секунди" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po index d4e8a1fa..826de8d9 100644 --- a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po @@ -447,20 +447,20 @@ msgid "Enable Safe Eyes" msgstr "Activa Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Durant %d hora" -msgstr[1] "Durant %d hores" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Durant %(num)d hora" +msgstr[1] "Durant %(num)d hores" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" diff --git a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po index cfcd9412..a1f37909 100644 --- a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po @@ -450,25 +450,25 @@ msgid "Enable Safe Eyes" msgstr "Odblokovat Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Na %d hodinu" -msgstr[1] "Na %d hodiny" -msgstr[2] "Na %d hodin" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Na %(num)d hodinu" +msgstr[1] "Na %(num)d hodiny" +msgstr[2] "Na %(num)d hodin" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Na %d minutu" -msgstr[1] "Na %d minuty" -msgstr[2] "Na %d minut" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Na %(num)d minutu" +msgstr[1] "Na %(num)d minuty" +msgstr[2] "Na %(num)d minut" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Na %d sekundu" -msgstr[1] "Na %d sekundy" -msgstr[2] "Na %d sekund" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Na %(num)d sekundu" +msgstr[1] "Na %(num)d sekundy" +msgstr[2] "Na %(num)d sekund" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po index 378302b5..f897da79 100644 --- a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po @@ -446,22 +446,22 @@ msgid "Enable Safe Eyes" msgstr "Aktivér Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "i %d time" -msgstr[1] "i %d timer" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "i %(num)d time" +msgstr[1] "i %(num)d timer" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "i %d minut" -msgstr[1] "i %d minutter" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "i %(num)d minut" +msgstr[1] "i %(num)d minutter" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "i %d sekund" -msgstr[1] "i %d sekunder" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "i %(num)d sekund" +msgstr[1] "i %(num)d sekunder" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po index 62fa3521..3c05bf78 100644 --- a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po @@ -455,22 +455,22 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes aktivieren" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Für %d Stunde" -msgstr[1] "Für %d Stunden" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Für %(num)d Stunde" +msgstr[1] "Für %(num)d Stunden" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d Minute lang" -msgstr[1] "%d Minuten lang" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d Minute lang" +msgstr[1] "%(num)d Minuten lang" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d Sekunde lang" -msgstr[1] "%d Sekunden lang" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d Sekunde lang" +msgstr[1] "%(num)d Sekunden lang" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po index 564464c0..d2c35591 100644 --- a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po @@ -448,22 +448,22 @@ msgid "Enable Safe Eyes" msgstr "Enable Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "For %d Hour" -msgstr[1] "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "For %(num)d Hour" +msgstr[1] "For %(num)d Hours" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "For %d Minute" -msgstr[1] "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "For %(num)d Minute" +msgstr[1] "For %(num)d Minutes" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "For %d Second" -msgstr[1] "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "For %(num)d Second" +msgstr[1] "For %(num)d Seconds" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po index cb40dc55..e6f1e9a7 100644 --- a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po @@ -448,22 +448,22 @@ msgid "Enable Safe Eyes" msgstr "Malebligi je Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Dum %d Horo" -msgstr[1] "Dum %d Horoj" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Dum %(num)d Horo" +msgstr[1] "Dum %(num)d Horoj" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Dum %d Minuto" -msgstr[1] "Dum %d Minutoj" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Dum %(num)d Minuto" +msgstr[1] "Dum %(num)d Minutoj" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Dum %d Sekundo" -msgstr[1] "Dum %d Sekundoj" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Dum %(num)d Sekundo" +msgstr[1] "Dum %(num)d Sekundoj" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po index ec0a2425..334c57f1 100644 --- a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po @@ -456,22 +456,22 @@ msgid "Enable Safe Eyes" msgstr "Activar Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Por %d hora" -msgstr[1] "Por %d horas" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Por %(num)d hora" +msgstr[1] "Por %(num)d horas" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Por %d minuto" -msgstr[1] "Por %d minutos" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Por %(num)d minuto" +msgstr[1] "Por %(num)d minutos" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Por %d segundo" -msgstr[1] "Por %d segundos" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Por %(num)d segundo" +msgstr[1] "Por %(num)d segundos" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po index 4054b5e4..e4ff7c14 100644 --- a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po @@ -447,22 +447,22 @@ msgid "Enable Safe Eyes" msgstr "Käivita Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d-ks tunniks" -msgstr[1] "%d-ks tunniks" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d-ks tunniks" +msgstr[1] "%(num)d-ks tunniks" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d-ks minutiks" -msgstr[1] "%d-ks minutiks" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d-ks minutiks" +msgstr[1] "%(num)d-ks minutiks" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d-ks sekundiks" -msgstr[1] "%d-ks sekundiks" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d-ks sekundiks" +msgstr[1] "%(num)d-ks sekundiks" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po index ec893896..949800c2 100644 --- a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po @@ -453,22 +453,22 @@ msgid "Enable Safe Eyes" msgstr "Gaitu Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Ordu %dez" -msgstr[1] "%d orduz" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Ordu %(num)dez" +msgstr[1] "%(num)d orduz" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Minutu %dez" -msgstr[1] "%d minutuz" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Minutu %(num)dez" +msgstr[1] "%(num)d minutuz" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Segundo %dez" -msgstr[1] "%d segundoz" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Segundo %(num)dez" +msgstr[1] "%(num)d segundoz" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index a0ca1381..c2b0c1e6 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -447,22 +447,22 @@ msgid "Enable Safe Eyes" msgstr "به کار انداختن محافظ چشم" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "برای ۱ ساعت" -msgstr[1] "برای %dI ساعت" +msgstr[1] "برای %(num)dI ساعت" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "برای ۱ دقیقه" -msgstr[1] "برای %dI دقیقه" +msgstr[1] "برای %(num)dI دقیقه" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "برای ۱ ثانیه" -msgstr[1] "برای %dI ثانیه" +msgstr[1] "برای %(num)dI ثانیه" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po index b4b45ffa..06571fb6 100644 --- a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po @@ -460,22 +460,22 @@ msgid "Enable Safe Eyes" msgstr "Activer Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Pendant %d heure" -msgstr[1] "Pendant %d heures" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Pendant %(num)d heure" +msgstr[1] "Pendant %(num)d heures" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Pendant %d minute" -msgstr[1] "Pendant %d minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Pendant %(num)d minute" +msgstr[1] "Pendant %(num)d minutes" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Pendant %d seconde" -msgstr[1] "Pendant %d secondes" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Pendant %(num)d seconde" +msgstr[1] "Pendant %(num)d secondes" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po index 0405706c..5407ec7e 100644 --- a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po @@ -445,22 +445,22 @@ msgid "Enable Safe Eyes" msgstr "להפעיל את ההגנה על העיניים" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "למשך שעה" -msgstr[1] "למשך %s שעות" +msgstr[1] "למשך %(num)d שעות" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "למשך דקה" -msgstr[1] "למשך %s דקות" +msgstr[1] "למשך %(num)d דקות" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "למשך שנייה" -msgstr[1] "למשך %s שניות" +msgstr[1] "למשך %(num)d שניות" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po index 3f8117a3..4391aea5 100644 --- a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po @@ -443,20 +443,20 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" diff --git a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po index d6357474..34e86a77 100644 --- a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po @@ -444,22 +444,22 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes Engedélyezése" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d Órára" -msgstr[1] "%d Órára" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d Órára" +msgstr[1] "%(num)d Órára" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d Percre" -msgstr[1] "%d Percre" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d Percre" +msgstr[1] "%(num)d Percre" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d Másodpercre" -msgstr[1] "%d Másodpercre" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d Másodpercre" +msgstr[1] "%(num)d Másodpercre" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po index 7c6b8be6..01b8f84a 100644 --- a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po @@ -451,19 +451,19 @@ msgid "Enable Safe Eyes" msgstr "Hidupkan Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Selama %d jam" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Selama %(num)d jam" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Selama %d menit" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Selama %(num)d menit" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Selama %d detik" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Selama %(num)d detik" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po index 0cd6d158..5363f617 100644 --- a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po @@ -454,22 +454,22 @@ msgid "Enable Safe Eyes" msgstr "Abilita Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Per %d ora" -msgstr[1] "Per %d ore" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Per %(num)d ora" +msgstr[1] "Per %(num)d ore" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Per %d minuto" -msgstr[1] "Per %d minuti" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Per %(num)d minuto" +msgstr[1] "Per %(num)d minuti" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Per %d secondo" -msgstr[1] "Per %d secondi" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Per %(num)d secondo" +msgstr[1] "Per %(num)d secondi" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po index a5b61856..a0a53a59 100644 --- a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po @@ -445,18 +445,18 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" #: plugins/trayicon diff --git a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po index c46f5da3..297be4b8 100644 --- a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po @@ -445,19 +445,19 @@ msgid "Enable Safe Eyes" msgstr "세이프 아이즈 활성화" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d시간" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d시간" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d분" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d분" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d초" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d초" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po index cb383056..eb1f21d6 100644 --- a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po @@ -452,25 +452,25 @@ msgid "Enable Safe Eyes" msgstr "Įjungti Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d valandai" -msgstr[1] "%d valandoms" -msgstr[2] "%d valandų" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d valandai" +msgstr[1] "%(num)d valandoms" +msgstr[2] "%(num)d valandų" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d minutei" -msgstr[1] "%d minutėms" -msgstr[2] "%d minučių" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d minutei" +msgstr[1] "%(num)d minutėms" +msgstr[2] "%(num)d minučių" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d sekundei" -msgstr[1] "%d sekundėms" -msgstr[2] "%d sekundžių" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d sekundei" +msgstr[1] "%(num)d sekundėms" +msgstr[2] "%(num)d sekundžių" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po index 4bb98d4e..677daad2 100644 --- a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po @@ -361,25 +361,25 @@ msgid "Enable Safe Eyes" msgstr "Iespējot Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Uz %d stundām" -msgstr[1] "Uz %d stundu" -msgstr[2] "Uz %d stundām" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Uz %(num)d stundām" +msgstr[1] "Uz %(num)d stundu" +msgstr[2] "Uz %(num)d stundām" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Uz %d minūtēm" -msgstr[1] "Uz %d minūti" -msgstr[2] "Uz %d minūtēm" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Uz %(num)d minūtēm" +msgstr[1] "Uz %(num)d minūti" +msgstr[2] "Uz %(num)d minūtēm" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Uz %d sekundēm" -msgstr[1] "Uz %d sekundi" -msgstr[2] "Uz %d sekundēm" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Uz %(num)d sekundēm" +msgstr[1] "Uz %(num)d sekundi" +msgstr[2] "Uz %(num)d sekundēm" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po index 070996ae..728db46d 100644 --- a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po @@ -445,20 +445,20 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" diff --git a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po index 657a4d79..2b39ad68 100644 --- a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po @@ -444,20 +444,20 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" diff --git a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po index 870498a6..bd2337d0 100644 --- a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po @@ -450,22 +450,22 @@ msgid "Enable Safe Eyes" msgstr "Skru på Øyetrygg" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "I %d time" -msgstr[1] "I %d timer" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "I %(num)d time" +msgstr[1] "I %(num)d timer" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "I %d minutt" -msgstr[1] "I %d minutter" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "I %(num)d minutt" +msgstr[1] "I %(num)d minutter" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "I %d sekund" -msgstr[1] "I %d sekunder" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "I %(num)d sekund" +msgstr[1] "I %(num)d sekunder" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po index 7e2a114f..e276d4c5 100644 --- a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po @@ -453,22 +453,22 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes inschakelen" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Voor %d uur" -msgstr[1] "Voor %d uur" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Voor %(num)d uur" +msgstr[1] "Voor %(num)d uur" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Voor %d minuut" -msgstr[1] "Voor %d minuten" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Voor %(num)d minuut" +msgstr[1] "Voor %(num)d minuten" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Voor %d seconde" -msgstr[1] "Voor %d seconden" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Voor %(num)d seconde" +msgstr[1] "Voor %(num)d seconden" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po index 78279175..63a28a4e 100644 --- a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po @@ -450,25 +450,25 @@ msgid "Enable Safe Eyes" msgstr "Włącz Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Na %d godzinę" -msgstr[1] "Na %d godziny" -msgstr[2] "Na %d godzin" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Na %(num)d godzinę" +msgstr[1] "Na %(num)d godziny" +msgstr[2] "Na %(num)d godzin" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Na %d minutę" -msgstr[1] "Na %d minuty" -msgstr[2] "Na %d minut" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Na %(num)d minutę" +msgstr[1] "Na %(num)d minuty" +msgstr[2] "Na %(num)d minut" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Na %d sekundę" -msgstr[1] "Na %d sekundy" -msgstr[2] "Na %d sekund" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Na %(num)d sekundę" +msgstr[1] "Na %(num)d sekundy" +msgstr[2] "Na %(num)d sekund" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po index b099b000..ea243ca5 100644 --- a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po @@ -451,22 +451,22 @@ msgid "Enable Safe Eyes" msgstr "Ativar o Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Por %d Hora" -msgstr[1] "Por %d Horas" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Por %(num)d Hora" +msgstr[1] "Por %(num)d Horas" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Por %d Minuto" -msgstr[1] "Por %d Minutos" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Por %(num)d Minuto" +msgstr[1] "Por %(num)d Minutos" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Por %d Segundo" -msgstr[1] "Por %d Segundos" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Por %(num)d Segundo" +msgstr[1] "Por %(num)d Segundos" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po index e38d21b8..ebaa84f0 100644 --- a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po @@ -455,22 +455,22 @@ msgid "Enable Safe Eyes" msgstr "Habilitar o Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Para %d Hora" -msgstr[1] "Para %d Horas" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Para %(num)d Hora" +msgstr[1] "Para %(num)d Horas" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Para %d Minuto" -msgstr[1] "Para %d Minutos" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Para %(num)d Minuto" +msgstr[1] "Para %(num)d Minutos" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Para %d Segundo" -msgstr[1] "Para %d Segundos" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Para %(num)d Segundo" +msgstr[1] "Para %(num)d Segundos" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po index cd43479b..8d12340d 100644 --- a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po @@ -451,25 +451,25 @@ msgid "Enable Safe Eyes" msgstr "Активировать Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "На %d час" -msgstr[1] "На %d часа" -msgstr[2] "На %d часов" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "На %(num)d час" +msgstr[1] "На %(num)d часа" +msgstr[2] "На %(num)d часов" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "На %d минуту" -msgstr[1] "На %d минуты" -msgstr[2] "На %d минут" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "На %(num)d минуту" +msgstr[1] "На %(num)d минуты" +msgstr[2] "На %(num)d минут" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "На %d секунду" -msgstr[1] "На %d секунды" -msgstr[2] "На %d секунд" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "На %(num)d секунду" +msgstr[1] "На %(num)d секунды" +msgstr[2] "На %(num)d секунд" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/safeeyes.pot b/safeeyes/config/locale/safeeyes.pot index 6e9fe389..3860ce7c 100644 --- a/safeeyes/config/locale/safeeyes.pot +++ b/safeeyes/config/locale/safeeyes.pot @@ -427,20 +427,20 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" diff --git a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po index 0b0b3962..a9116e22 100644 --- a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po @@ -448,25 +448,25 @@ msgid "Enable Safe Eyes" msgstr "Povoliť Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Počas %d hodiny" -msgstr[1] "Počas %d hodín" -msgstr[2] "Počas %d hodín" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Počas %(num)d hodiny" +msgstr[1] "Počas %(num)d hodín" +msgstr[2] "Počas %(num)d hodín" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Počas %d minúty" -msgstr[1] "Počas %d minút" -msgstr[2] "Počas %d minút" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Počas %(num)d minúty" +msgstr[1] "Počas %(num)d minút" +msgstr[2] "Počas %(num)d minút" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Počas %d sekundy" -msgstr[1] "Počas %d sekúnd" -msgstr[2] "Počas %d sekúnd" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Počas %(num)d sekundy" +msgstr[1] "Počas %(num)d sekúnd" +msgstr[2] "Počas %(num)d sekúnd" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po index addbb96c..ecd01e4a 100644 --- a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po @@ -455,22 +455,22 @@ msgid "Enable Safe Eyes" msgstr "Омогући Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "сат" msgstr[1] "сати" msgstr[2] "сати" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "минут" msgstr[1] "минута" msgstr[2] "минута" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "секунда" msgstr[1] "секунде" msgstr[2] "секунди" diff --git a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po index 0894ef3f..cdb65b7f 100644 --- a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po @@ -447,22 +447,22 @@ msgid "Enable Safe Eyes" msgstr "Aktivera Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "För %d timme" -msgstr[1] "För %d timmar" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "För %(num)d timme" +msgstr[1] "För %(num)d timmar" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "För %d minut" -msgstr[1] "För %d minuter" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "För %(num)d minut" +msgstr[1] "För %(num)d minuter" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "För %d sekund" -msgstr[1] "För %d sekunder" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "För %(num)d sekund" +msgstr[1] "För %(num)d sekunder" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po index f855d244..e906fd90 100644 --- a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po @@ -450,22 +450,22 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes ஐ செயல்படுத்துக" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d மணித்தியாலத்திற்கு" -msgstr[1] "%d மணித்தியாலங்களுக்கு" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d மணித்தியாலத்திற்கு" +msgstr[1] "%(num)d மணித்தியாலங்களுக்கு" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d நிமிடத்திற்கு" -msgstr[1] "%d நிமிடங்களுக்கு" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d நிமிடத்திற்கு" +msgstr[1] "%(num)d நிமிடங்களுக்கு" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d வினாடிக்கு" -msgstr[1] "%d வினாடிகளுக்கு" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d வினாடிக்கு" +msgstr[1] "%(num)d வினாடிகளுக்கு" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po index 60b0a8b2..75d08cba 100644 --- a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po @@ -451,22 +451,22 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes'ı etkinleştir" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d Saat Boyunca" -msgstr[1] "%d Saat" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d Saat Boyunca" +msgstr[1] "%(num)d Saat" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d Dakika Boyunca" -msgstr[1] "%d Dakika" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d Dakika Boyunca" +msgstr[1] "%(num)d Dakika" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d Saniye Boyunca" -msgstr[1] "%d Saniye" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d Saniye Boyunca" +msgstr[1] "%(num)d Saniye" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po index aaabab11..0cf580aa 100644 --- a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po @@ -442,18 +442,18 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" #: plugins/trayicon diff --git a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po index 854d1696..1d2156f5 100644 --- a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po @@ -451,25 +451,25 @@ msgid "Enable Safe Eyes" msgstr "Увімкнути Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "На %d годину" -msgstr[1] "На %d годин" -msgstr[2] "На %d годин" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "На %(num)d годину" +msgstr[1] "На %(num)d годин" +msgstr[2] "На %(num)d годин" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "На %d хвилину" -msgstr[1] "На %d хвилин" -msgstr[2] "На %d хвилин" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "На %(num)d хвилину" +msgstr[1] "На %(num)d хвилин" +msgstr[2] "На %(num)d хвилин" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "На %d секунду" -msgstr[1] "На %d секунд" -msgstr[2] "На %d секунд" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "На %(num)d секунду" +msgstr[1] "На %(num)d секунд" +msgstr[2] "На %(num)d секунд" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po index 78c5e760..4111068c 100644 --- a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po @@ -442,18 +442,18 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" msgstr[0] "" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" msgstr[0] "" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" msgstr[0] "" #: plugins/trayicon diff --git a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po index 3ffb4ab0..666e6e53 100644 --- a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po @@ -451,19 +451,19 @@ msgid "Enable Safe Eyes" msgstr "Bật Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "Khoảng %d giờ" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "Khoảng %(num)d giờ" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "Khoảng %d phút" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "Khoảng %(num)d phút" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "Khoảng %d giây" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "Khoảng %(num)d giây" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po index 93f9df62..92a1885b 100644 --- a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po @@ -446,19 +446,19 @@ msgid "Enable Safe Eyes" msgstr "恢复 Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d 小时" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d 小时" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d 分钟" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d 分钟" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d 秒" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d 秒" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po index f103963b..138d5d00 100644 --- a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po @@ -443,19 +443,19 @@ msgid "Enable Safe Eyes" msgstr "開啟 Safe Eyes" #: plugins/trayicon -msgid "For %d Hour" -msgid_plural "For %d Hours" -msgstr[0] "%d 小時" +msgid "For %(num)d Hour" +msgid_plural "For %(num)d Hours" +msgstr[0] "%(num)d 小時" #: plugins/trayicon -msgid "For %d Minute" -msgid_plural "For %d Minutes" -msgstr[0] "%d 分鐘" +msgid "For %(num)d Minute" +msgid_plural "For %(num)d Minutes" +msgstr[0] "%(num)d 分鐘" #: plugins/trayicon -msgid "For %d Second" -msgid_plural "For %d Seconds" -msgstr[0] "%d 秒" +msgid "For %(num)d Second" +msgid_plural "For %(num)d Seconds" +msgstr[0] "%(num)d 秒" #: plugins/trayicon msgid "Next break at %s" diff --git a/safeeyes/plugins/trayicon/plugin.py b/safeeyes/plugins/trayicon/plugin.py index a149f014..d97861ff 100644 --- a/safeeyes/plugins/trayicon/plugin.py +++ b/safeeyes/plugins/trayicon/plugin.py @@ -476,7 +476,7 @@ def get_items(self): for disable_option in self.plugin_config['disable_options']: time_in_minutes = time_in_x = disable_option['time'] - label = [] + # Validate time value if not isinstance(time_in_minutes, int) or time_in_minutes <= 0: logging.error('Invalid time in disable option: ' + str(time_in_minutes)) @@ -484,20 +484,30 @@ def get_items(self): time_unit = disable_option['unit'].lower() if time_unit == 'seconds' or time_unit == 'second': time_in_minutes = int(time_in_minutes / 60) - label = ['For %d Second', 'For %d Seconds'] + label = self.context['locale'].ngettext( + 'For %(num)d Second', + 'For %(num)d Seconds', + time_in_x + ) % {'num': time_in_x} elif time_unit == 'minutes' or time_unit == 'minute': time_in_minutes = int(time_in_minutes * 1) - label = ['For %d Minute', 'For %d Minutes'] + label = self.context['locale'].ngettext( + 'For %(num)d Minute', + 'For %(num)d Minutes', + time_in_x + ) % {'num': time_in_x} elif time_unit == 'hours' or time_unit == 'hour': time_in_minutes = int(time_in_minutes * 60) - label = ['For %d Hour', 'For %d Hours'] + label = self.context['locale'].ngettext( + 'For %(num)d Hour', + 'For %(num)d Hours', + time_in_x + ) % {'num': time_in_x} else: # Invalid unit logging.error('Invalid unit in disable option: ' + str(disable_option)) continue - label = self.context['locale'].ngettext(label[0], label[1], time_in_x) % time_in_x - disable_items.append({ 'id': disable_option_dynamic_id, 'label': label, From 57f45b7c4a5654eb01d971c317824d4535f341e9 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 16:28:59 +0200 Subject: [PATCH 31/50] remove translated description placeholder --- safeeyes/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safeeyes/__main__.py b/safeeyes/__main__.py index 61ec8a83..71234544 100755 --- a/safeeyes/__main__.py +++ b/safeeyes/__main__.py @@ -76,7 +76,7 @@ def main(): logging.warning('installed python\'s gettext module does not support locale.bindtextdomain. locale.bindtextdomain is required for Glade files') - parser = argparse.ArgumentParser(prog='safeeyes', description=_('description')) + parser = argparse.ArgumentParser(prog='safeeyes') group = parser.add_mutually_exclusive_group() group.add_argument('-a', '--about', help=_('show the about dialog'), action='store_true') group.add_argument('-d', '--disable', help=_('disable the currently running safeeyes instance'), action='store_true') From 1db2fdd4874dc52e7ea717c9c2304762b0b3e524 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 18:40:04 +0200 Subject: [PATCH 32/50] translations: more exact validation of po files --- validate_po.py | 48 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 9 deletions(-) diff --git a/validate_po.py b/validate_po.py index f37150a4..6e64ddab 100644 --- a/validate_po.py +++ b/validate_po.py @@ -17,20 +17,49 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +from collections import defaultdict import os import polib +import re import sys +def has_equal_placeholders(left: str, right: str) -> bool: + percents = re.finditer(r'%(?P\(\w+\))?(?P[a-z])', left) + + unnamed = defaultdict(int) + named = [] + for percent in percents: + if percent.group('name'): + named.append(f"%({percent.group('name')}){percent.group('format')}") + else: + match = f"%{percent.group('format')}" + unnamed[match] += 1 + + # count unnamed cases (eg. %s, %d) + for match, count in unnamed.items(): + if right.count(match) != count: + return False + + # no need to count named cases - they are optional + + return True + def validate_po(locale: str, path: str) -> bool: - success = True - po = polib.pofile(path) - for entry in po: - if entry.msgstr and (entry.msgid.count("%") != entry.msgstr.count("%")): - print("Number of variables mismatched in " + locale) - print(entry.msgid + " -> " + entry.msgstr) - print() - success = False - return success + success = True + po = polib.pofile(path) + for entry in po: + if entry.msgstr and not has_equal_placeholders(entry.msgid, entry.msgstr): + print("Number of variables mismatched in " + locale) + print(entry.msgid + " -> " + entry.msgstr) + print() + success = False + for plural in entry.msgstr_plural.values(): + if plural and not has_equal_placeholders(entry.msgid, plural): + print("Number of variables mismatched in " + locale) + print(entry.msgid + " -> " + plural) + print() + success = False + return success success = True locales = os.listdir('safeeyes/config/locale') @@ -39,4 +68,5 @@ def validate_po(locale: str, path: str) -> bool: if os.path.isfile(path): print('Validating translation %s...' % path) success = validate_po(locale, path) and success + sys.exit(0 if success else 1) From 55c01fc9e556f472bd0c19a555692398e6581765 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 18:40:40 +0200 Subject: [PATCH 33/50] translations: serbian: fix placeholder --- safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po index ecd01e4a..d2c37806 100644 --- a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po @@ -272,7 +272,7 @@ msgstr "Подешавање додатака" # Settings dialog msgid "Plugin does not support %s desktop environment" -msgstr "Додатак не подржава % радну површину" +msgstr "Додатак не подржава %s радну површину" # Settings dialog msgid "Please install the Python module '%s'" From 4cc899df4028793783f27b599653a2fb237b8fe7 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 18:59:36 +0200 Subject: [PATCH 34/50] translations: use named placeholders when there are multiple --- safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po | 6 +++--- safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po | 8 ++++---- safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po | 8 ++++---- safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/safeeyes.pot | 4 ++-- safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po | 4 ++-- safeeyes/plugins/limitconsecutiveskipping/plugin.py | 5 ++++- safeeyes/plugins/trayicon/plugin.py | 5 ++++- 44 files changed, 97 insertions(+), 91 deletions(-) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index a86f022b..b2a27eb3 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -535,7 +535,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -549,7 +549,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po index 6b3d3fb3..ac610da4 100644 --- a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po @@ -521,7 +521,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -535,7 +535,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po index 826de8d9..76349dcb 100644 --- a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po @@ -525,7 +525,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -539,7 +539,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po index a1f37909..a3214acb 100644 --- a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po @@ -531,7 +531,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -545,7 +545,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po index f897da79..eecc3d6a 100644 --- a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po @@ -524,7 +524,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -538,7 +538,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po index 3c05bf78..43a2553c 100644 --- a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po @@ -533,7 +533,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -547,7 +547,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po index d2c35591..28d83540 100644 --- a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po @@ -526,8 +526,8 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "Limit how many breaks can be skipped or postponed in a row" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" -msgstr "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" +msgstr "Skipped or postponed %(num)d/%(allowed)d breaks in a row" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" @@ -540,7 +540,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po index e6f1e9a7..8fa2bcfd 100644 --- a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po @@ -526,7 +526,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -540,7 +540,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po index 334c57f1..d184b601 100644 --- a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po @@ -535,8 +535,8 @@ msgstr "" "Limitar la cantidad de descansos que se pueden omitir o posponer seguidos" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" -msgstr "Se ha(n) saltado o pospuesto %d/%d pausa(s) seguida(s)" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" +msgstr "Se ha(n) saltado o pospuesto %(num)d/%(allowed)d pausa(s) seguida(s)" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" @@ -551,8 +551,8 @@ msgstr "" msgid "Next long break at %s" msgstr "La siguiente pausa larga es en %s" -msgid "Next breaks at %s/%s" -msgstr "Próximos descansos en %s/%s" +msgid "Next breaks at %(short)s/%(long)s" +msgstr "Próximos descansos en %(short)s/%(long)s" msgid "The required plugin '%s' is missing dependencies!" msgstr "¡Al complemento requerido '%s' no tiene las dependencias!" diff --git a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po index e4ff7c14..7ab6a1b6 100644 --- a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po @@ -525,7 +525,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -539,7 +539,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po index 949800c2..a3f35699 100644 --- a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po @@ -531,7 +531,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -545,7 +545,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index c2b0c1e6..80df636f 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -525,8 +525,8 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "تعداد استراحت‌ها را که می‌توان پشت‌سرهم رد یا به تعویق انداخت محدود کن" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" -msgstr "%d/%d استراحت‌ها پشت‌سرهم رد یا به تعویق افتاده‌اند" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" +msgstr "%(num)d/%(allowed)d استراحت‌ها پشت‌سرهم رد یا به تعویق افتاده‌اند" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop msgid "RSI Prevention" @@ -540,8 +540,8 @@ msgstr "" msgid "Next long break at %s" msgstr "استراحت طولانی بعدی در %s" -msgid "Next breaks at %s/%s" -msgstr "استراحت‌های بعدی در %s/%s" +msgid "Next breaks at %(short)s/%(long)s" +msgstr "استراحت‌های بعدی در %(short)s/%(long)s" msgid "The required plugin '%s' is missing dependencies!" msgstr "افزونه موردنیاز '%s' فاقد دِپِندِنسی است!" diff --git a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po index 06571fb6..c24c72b4 100644 --- a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po @@ -538,7 +538,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -552,7 +552,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po index 5407ec7e..30c4382a 100644 --- a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po @@ -523,7 +523,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -537,7 +537,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po index 4391aea5..a30606de 100644 --- a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po @@ -521,7 +521,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -535,7 +535,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po index 34e86a77..895a9c83 100644 --- a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po @@ -522,7 +522,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -536,7 +536,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po index 01b8f84a..6c48907c 100644 --- a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po @@ -526,7 +526,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -540,7 +540,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po index 5363f617..93d8ddc7 100644 --- a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po @@ -532,7 +532,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -546,7 +546,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po index a0a53a59..952bf9dd 100644 --- a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po @@ -520,7 +520,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -534,7 +534,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po index 297be4b8..f4d686fc 100644 --- a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po @@ -520,7 +520,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -534,7 +534,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po index eb1f21d6..30c5b7f1 100644 --- a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po @@ -533,7 +533,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -547,7 +547,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po index 677daad2..66269f87 100644 --- a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po @@ -439,7 +439,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -453,7 +453,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po index 728db46d..656cc055 100644 --- a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po @@ -523,7 +523,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -537,7 +537,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po index 2b39ad68..e4fd0bbc 100644 --- a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po @@ -522,7 +522,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -536,7 +536,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po index bd2337d0..716da0a0 100644 --- a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po @@ -528,7 +528,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -542,7 +542,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po index e276d4c5..e8597390 100644 --- a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po @@ -531,7 +531,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -545,7 +545,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po index 63a28a4e..ed5bb23e 100644 --- a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po @@ -531,7 +531,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -545,7 +545,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po index ea243ca5..27999101 100644 --- a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po @@ -529,7 +529,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -543,7 +543,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po index ebaa84f0..4dcc5c0c 100644 --- a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po @@ -533,7 +533,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -547,7 +547,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po index 8d12340d..c2a1d497 100644 --- a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po @@ -532,7 +532,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -546,7 +546,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/safeeyes.pot b/safeeyes/config/locale/safeeyes.pot index 3860ce7c..9841fdae 100644 --- a/safeeyes/config/locale/safeeyes.pot +++ b/safeeyes/config/locale/safeeyes.pot @@ -505,7 +505,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -518,7 +518,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po index a9116e22..ed6181c3 100644 --- a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po @@ -529,7 +529,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -543,7 +543,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po index d2c37806..48c35d2a 100644 --- a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po @@ -536,7 +536,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -550,7 +550,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po index cdb65b7f..f62e3388 100644 --- a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po @@ -525,7 +525,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -539,7 +539,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po index e906fd90..18e0e2c6 100644 --- a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po @@ -528,7 +528,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -542,7 +542,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po index 75d08cba..d58f43b5 100644 --- a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po @@ -529,7 +529,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -543,7 +543,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po index 0cf580aa..da4102c3 100644 --- a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po @@ -517,7 +517,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -531,7 +531,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po index 1d2156f5..62b29a49 100644 --- a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po @@ -532,7 +532,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -546,7 +546,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po index 4111068c..ef9229cd 100644 --- a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po @@ -517,7 +517,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -531,7 +531,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po index 666e6e53..3090f857 100644 --- a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po @@ -526,7 +526,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -540,7 +540,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po index 92a1885b..40505e3b 100644 --- a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po @@ -521,7 +521,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -535,7 +535,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po index 138d5d00..d75d40c5 100644 --- a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po @@ -518,7 +518,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping -msgid "Skipped or postponed %d/%d breaks in a row" +msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" # safeeyes/platform/io.github.slgobinath.SafeEyes.desktop @@ -532,7 +532,7 @@ msgstr "" msgid "Next long break at %s" msgstr "" -msgid "Next breaks at %s/%s" +msgid "Next breaks at %(short)s/%(long)s" msgstr "" msgid "The required plugin '%s' is missing dependencies!" diff --git a/safeeyes/plugins/limitconsecutiveskipping/plugin.py b/safeeyes/plugins/limitconsecutiveskipping/plugin.py index 864333f3..1a55183e 100644 --- a/safeeyes/plugins/limitconsecutiveskipping/plugin.py +++ b/safeeyes/plugins/limitconsecutiveskipping/plugin.py @@ -95,5 +95,8 @@ def get_widget_content(break_obj): if not enabled: return "" - return _('Skipped or postponed %d/%d breaks in a row') % (no_of_skipped_breaks, no_allowed_skips) + return _('Skipped or postponed %(num)d/%(allowed)d breaks in a row') % { + 'num': no_of_skipped_breaks, + 'allowed': no_allowed_skips + } diff --git a/safeeyes/plugins/trayicon/plugin.py b/safeeyes/plugins/trayicon/plugin.py index d97861ff..39766c18 100644 --- a/safeeyes/plugins/trayicon/plugin.py +++ b/safeeyes/plugins/trayicon/plugin.py @@ -460,7 +460,10 @@ def get_items(self): if next_is_long: info_message = _('Next long break at %s') % (next_long_time) else: - info_message = _('Next breaks at %s/%s') % (next_time, next_long_time) + info_message = _('Next breaks at %(short)s/%(long)s') % { + 'short': next_time, + 'long': next_long_time + } else: info_message = _('Next break at %s') % (next_time) else: From 3a8f6a095362f6341bbff6522747544680eaac9c Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 19:04:12 +0200 Subject: [PATCH 35/50] translations: add format comments This makes sure that Weblate properly validates the placeholders. --- .../config/locale/ar/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/bg/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/ca/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/cs/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/da/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/de/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../locale/en_US/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/eo/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/es/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/et/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/eu/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/fa/LC_MESSAGES/safeeyes.po | 18 ++++++++++++++++-- .../config/locale/fr/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/he/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/hi/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/hu/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/id/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/it/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/kn/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/ko/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/lt/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/lv/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/mk/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/mr/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/nb/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/nl/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/pl/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/pt/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../locale/pt_BR/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/ru/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ safeeyes/config/locale/safeeyes.pot | 15 +++++++++++++++ .../config/locale/sk/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/sr/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/sv/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/ta/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/tr/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/ug/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/uk/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../locale/uz_Latn/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../config/locale/vi/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../locale/zh_CN/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ .../locale/zh_TW/LC_MESSAGES/safeeyes.po | 15 +++++++++++++++ 42 files changed, 631 insertions(+), 2 deletions(-) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index b2a27eb3..a6e7981b 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -265,14 +265,17 @@ msgid "Plugin Settings" msgstr "إعدادات الإضافة" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "لا تدعم الإضافة بيئة سطح المكتب %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "من فضلك ثبّت وحدة بايثون باسم '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "من فضلك ثبّت أداة سطر الأوامر '%s'" @@ -281,6 +284,7 @@ msgid "Invalid cron expression '%s'" msgstr "تعبير الوظيفة المجدولة غير صحيح '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "من فضلك أضف المورد %(resource)s إلى الدليل %(config_resource)" @@ -361,10 +365,12 @@ msgid "Show a system notification before breaks" msgstr "أظهر إشعار نظام قبل الراحة" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "استعد لاستراحة قصيرة في %s من الثواني" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "استعد لراحة طويلة بعد %s من الثواني" @@ -433,6 +439,7 @@ msgid "Disable Safe Eyes" msgstr "عطّل Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "معطّل إلى %s" @@ -445,6 +452,7 @@ msgid "Enable Safe Eyes" msgstr "فعِّل Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "لمدة %(num)d ساعة" @@ -455,6 +463,7 @@ msgstr[4] "لمدة %(num)d ساعة" msgstr[5] "لمدة %(num)d ساعة" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "لمدة %(num)d دقيقة" @@ -465,6 +474,7 @@ msgstr[4] "لمدة %(num)d دقيقة" msgstr[5] "لمدة %(num)d دقيقة" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "لمدة %(num)d ثانية" @@ -475,6 +485,7 @@ msgstr[4] "لمدة %(num)d ثانية" msgstr[5] "لمدة %(num)d ثانية" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "فترة الاستراحة القادمة بعد %s" @@ -535,6 +546,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -546,12 +558,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po index ac610da4..7943f8cb 100644 --- a/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/bg/LC_MESSAGES/safeeyes.po @@ -263,14 +263,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -279,6 +282,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -359,10 +363,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -431,6 +437,7 @@ msgid "Disable Safe Eyes" msgstr "Изключване на Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Изключено до %s" @@ -443,24 +450,28 @@ msgid "Enable Safe Eyes" msgstr "Включване на Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "За %(num)d Час" msgstr[1] "За %(num)d Часа" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "За %(num)d Минута" msgstr[1] "За %(num)d Минути" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "За %(num)d Секунда" msgstr[1] "За %(num)d Секунди" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Следваща почивка в %s" @@ -521,6 +532,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -532,12 +544,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po index 76349dcb..d131eff1 100644 --- a/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ca/LC_MESSAGES/safeeyes.po @@ -267,14 +267,17 @@ msgid "Plugin Settings" msgstr "Preferències del complement" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -283,6 +286,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -363,10 +367,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -435,6 +441,7 @@ msgid "Disable Safe Eyes" msgstr "Desactiva Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Inhabilitat fins %s" @@ -447,24 +454,28 @@ msgid "Enable Safe Eyes" msgstr "Activa Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Durant %(num)d hora" msgstr[1] "Durant %(num)d hores" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Propera pausa a les %s" @@ -525,6 +536,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -536,12 +548,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po index a3214acb..9e8b763f 100644 --- a/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/cs/LC_MESSAGES/safeeyes.po @@ -267,14 +267,17 @@ msgid "Plugin Settings" msgstr "Nastavení rozšíření" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Rozšíření nepodporuje pracovní (desktop) prostředí %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Nainstalujte si modul pro Python „%s“" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Nainstalujte si nástroj pro příkazový řádek „%s“" @@ -283,6 +286,7 @@ msgid "Invalid cron expression '%s'" msgstr "Neplatný výraz pro plánovač (cron) „%s“" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Přidejte prostředek %(resource)s do složky %(config_resource)s" @@ -364,10 +368,12 @@ msgid "Show a system notification before breaks" msgstr "Zobrazovat oznámení před přestávkami" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Připravte se na přestávku za %s sekund" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Připravte se na dlouhou přestávku za %s sekund" @@ -438,6 +444,7 @@ msgid "Disable Safe Eyes" msgstr "Zablokovat Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Zablokovat do %s" @@ -450,6 +457,7 @@ msgid "Enable Safe Eyes" msgstr "Odblokovat Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Na %(num)d hodinu" @@ -457,6 +465,7 @@ msgstr[1] "Na %(num)d hodiny" msgstr[2] "Na %(num)d hodin" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Na %(num)d minutu" @@ -464,6 +473,7 @@ msgstr[1] "Na %(num)d minuty" msgstr[2] "Na %(num)d minut" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Na %(num)d sekundu" @@ -471,6 +481,7 @@ msgstr[1] "Na %(num)d sekundy" msgstr[2] "Na %(num)d sekund" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Příští přestávka v %s" @@ -531,6 +542,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -542,12 +554,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po index eecc3d6a..50451382 100644 --- a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po @@ -266,14 +266,17 @@ msgid "Plugin Settings" msgstr "Udvidelsesindstillinger" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Udvidelse understøtter ikke %s skrivebordsmiljø" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Installer Python-modul '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Installer kommandolinjeværktøjet '%s'" @@ -282,6 +285,7 @@ msgid "Invalid cron expression '%s'" msgstr "Ugyldigt cron-udtryk '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Tilføj ressource %(ressource)s til %(config_resource)s bibliotek" @@ -362,10 +366,12 @@ msgid "Show a system notification before breaks" msgstr "Vis en systemmeddelelse før pauser" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Klar til en kort pause om %s sekunder" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Klar til en lang pause om %s sekunder" @@ -434,6 +440,7 @@ msgid "Disable Safe Eyes" msgstr "Deaktiver Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Deaktiveret indtil %s" @@ -446,24 +453,28 @@ msgid "Enable Safe Eyes" msgstr "Aktivér Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "i %(num)d time" msgstr[1] "i %(num)d timer" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "i %(num)d minut" msgstr[1] "i %(num)d minutter" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "i %(num)d sekund" msgstr[1] "i %(num)d sekunder" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Næste pause %s" @@ -524,6 +535,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -535,12 +547,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po index 43a2553c..6fc5a652 100644 --- a/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/de/LC_MESSAGES/safeeyes.po @@ -272,14 +272,17 @@ msgid "Plugin Settings" msgstr "Plugin-Einstellungen" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Das Plugin unterstützt die Desktop-Umgebung %s nicht" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Bitte Python-Modul '%s' installieren" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Bitte Programm '%s' für die Kommandozeile installieren" @@ -288,6 +291,7 @@ msgid "Invalid cron expression '%s'" msgstr "Ungültiger Cron-Ausdruck „%s“" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Bitte in Verzeichnis %(config_resource)s die Ressource %(resource)s " @@ -371,10 +375,12 @@ msgid "Show a system notification before breaks" msgstr "Vor Pausen Benachrichtigung anzeigen" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Bereit für eine Pause in %s Sekunden" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Bereit für eine lange Pause in %s Sekunden" @@ -443,6 +449,7 @@ msgid "Disable Safe Eyes" msgstr "Safe Eyes deaktivieren" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Deaktiviert bis %s" @@ -455,24 +462,28 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes aktivieren" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Für %(num)d Stunde" msgstr[1] "Für %(num)d Stunden" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d Minute lang" msgstr[1] "%(num)d Minuten lang" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d Sekunde lang" msgstr[1] "%(num)d Sekunden lang" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Nächste Pause um %s" @@ -533,6 +544,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -544,12 +556,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po index 28d83540..b0f36c08 100644 --- a/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/en_US/LC_MESSAGES/safeeyes.po @@ -268,14 +268,17 @@ msgid "Plugin Settings" msgstr "Plugin Settings" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Plugin does not support %s desktop environment" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Please install the Python module '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Please install the command-line tool '%s'" @@ -284,6 +287,7 @@ msgid "Invalid cron expression '%s'" msgstr "Invalid cron expression “%s”" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Please add the resource %(resource)s to %(config_resource)s directory" @@ -364,10 +368,12 @@ msgid "Show a system notification before breaks" msgstr "Show a system notification before breaks" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Ready for a short break in %s seconds" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Ready for a long break in %s seconds" @@ -436,6 +442,7 @@ msgid "Disable Safe Eyes" msgstr "Disable Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Disabled until %s" @@ -448,24 +455,28 @@ msgid "Enable Safe Eyes" msgstr "Enable Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "For %(num)d Hour" msgstr[1] "For %(num)d Hours" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "For %(num)d Minute" msgstr[1] "For %(num)d Minutes" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "For %(num)d Second" msgstr[1] "For %(num)d Seconds" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Next break at %s" @@ -526,6 +537,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "Limit how many breaks can be skipped or postponed in a row" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "Skipped or postponed %(num)d/%(allowed)d breaks in a row" @@ -537,12 +549,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po index 8fa2bcfd..de5fdb2a 100644 --- a/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eo/LC_MESSAGES/safeeyes.po @@ -266,14 +266,17 @@ msgid "Plugin Settings" msgstr "Kromaĵaj Agordoj" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Kromaĵo ne subtenas %s-fenestrilon" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Bonvolu instali la modulo de Python '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Bonvolu instali la ilo de komanda linio '%s'" @@ -282,6 +285,7 @@ msgid "Invalid cron expression '%s'" msgstr "Nevalida esprimo de cron '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Bonvolu aldoni la rimedon %(resource)s al %(config_resource)s-dosierujo" @@ -363,10 +367,12 @@ msgid "Show a system notification before breaks" msgstr "Montri sisteman sciigon antaŭ paŭzoj" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Preta por mallonga paŭzo en %s sekundoj" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Preta por longa paŭzo en %s sekundoj" @@ -436,6 +442,7 @@ msgid "Disable Safe Eyes" msgstr "Malebligi je Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Malebligita ĝis %s" @@ -448,24 +455,28 @@ msgid "Enable Safe Eyes" msgstr "Malebligi je Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Dum %(num)d Horo" msgstr[1] "Dum %(num)d Horoj" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Dum %(num)d Minuto" msgstr[1] "Dum %(num)d Minutoj" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Dum %(num)d Sekundo" msgstr[1] "Dum %(num)d Sekundoj" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Sekva paŭzo je %s" @@ -526,6 +537,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -537,12 +549,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po index d184b601..492224d0 100644 --- a/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/es/LC_MESSAGES/safeeyes.po @@ -273,14 +273,17 @@ msgid "Plugin Settings" msgstr "Configuración de complementos" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "El complemento no admite el entorno de escritorio %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Instale el módulo de Python «%s»" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Instale la herramienta de línea de órdenes «%s»" @@ -289,6 +292,7 @@ msgid "Invalid cron expression '%s'" msgstr "La expresión de cron «%s» no es válida" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Añada el recurso %(resource)s al directorio %(config_resource)s" @@ -369,10 +373,12 @@ msgid "Show a system notification before breaks" msgstr "Mostrar una notificacion del sistema antes de los descansos" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Listo para un breve descanso en %s segundos" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Listo para un largo descanso en %s segundos" @@ -444,6 +450,7 @@ msgid "Disable Safe Eyes" msgstr "Desactivar Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Desactivado hasta %s" @@ -456,24 +463,28 @@ msgid "Enable Safe Eyes" msgstr "Activar Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Por %(num)d hora" msgstr[1] "Por %(num)d horas" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Por %(num)d minuto" msgstr[1] "Por %(num)d minutos" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Por %(num)d segundo" msgstr[1] "Por %(num)d segundos" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "El siguiente descanso será en %s" @@ -535,6 +546,7 @@ msgstr "" "Limitar la cantidad de descansos que se pueden omitir o posponer seguidos" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "Se ha(n) saltado o pospuesto %(num)d/%(allowed)d pausa(s) seguida(s)" @@ -548,12 +560,15 @@ msgstr "" "Por favor, instalea el servicio que proporciona iconos para la bandeja para " "tu escritorio." +#, python-format msgid "Next long break at %s" msgstr "La siguiente pausa larga es en %s" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "Próximos descansos en %(short)s/%(long)s" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "¡Al complemento requerido '%s' no tiene las dependencias!" diff --git a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po index 7ab6a1b6..568e1130 100644 --- a/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/et/LC_MESSAGES/safeeyes.po @@ -267,14 +267,17 @@ msgid "Plugin Settings" msgstr "Plugina seaded" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Plugin ei toeta aknahaldurit %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Palun paigalda järgnev Pythoni moodul: '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Palun paigalda järgnev käsurea tööriist: '%s'" @@ -283,6 +286,7 @@ msgid "Invalid cron expression '%s'" msgstr "Vigane croni väljend '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Palun lisa ressurss %(resource)s kataloogi %(config_resource)s" @@ -363,10 +367,12 @@ msgid "Show a system notification before breaks" msgstr "Süsteemiteavituste kuvamine enne pausi" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Lühike paus %s sekundi pärast" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Pikk paus %s sekundi pärast" @@ -435,6 +441,7 @@ msgid "Disable Safe Eyes" msgstr "Peata Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Peatatud kuni %s" @@ -447,24 +454,28 @@ msgid "Enable Safe Eyes" msgstr "Käivita Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d-ks tunniks" msgstr[1] "%(num)d-ks tunniks" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d-ks minutiks" msgstr[1] "%(num)d-ks minutiks" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d-ks sekundiks" msgstr[1] "%(num)d-ks sekundiks" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Järgmine paus %s" @@ -525,6 +536,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -536,12 +548,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po index a3f35699..a340cc0d 100644 --- a/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/eu/LC_MESSAGES/safeeyes.po @@ -270,14 +270,17 @@ msgid "Plugin Settings" msgstr "Gehigarriaren ezarpenak" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Gehigarriak ez du %s ingurune-grafikoa onartzen" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Instalatu '%s' Python modulua" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Instalatu '%s' komandu-lerroko tresna" @@ -286,6 +289,7 @@ msgid "Invalid cron expression '%s'" msgstr "Baliogabeko '%s' cron adierazpena" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Gehitu %(resource)s baliabidea %(config_resource)s direktorioan" @@ -366,10 +370,12 @@ msgid "Show a system notification before breaks" msgstr "Erakutsi sistemako jakinarazpen bat etenaldien aurretik" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Prestatu %s segundo barru etenaldi motza egiteko" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Prestatu %s segundo barru etenaldi luzea egiteko" @@ -441,6 +447,7 @@ msgid "Disable Safe Eyes" msgstr "Desgaitu Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "%s arte desgaituta" @@ -453,24 +460,28 @@ msgid "Enable Safe Eyes" msgstr "Gaitu Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Ordu %(num)dez" msgstr[1] "%(num)d orduz" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Minutu %(num)dez" msgstr[1] "%(num)d minutuz" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Segundo %(num)dez" msgstr[1] "%(num)d segundoz" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Hurrengo etenaldia: %s" @@ -531,6 +542,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -542,12 +554,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po index 80df636f..9f9a4789 100644 --- a/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fa/LC_MESSAGES/safeeyes.po @@ -267,14 +267,17 @@ msgid "Plugin Settings" msgstr "تنظیمات افزایه" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "افزایه از محیط میزکار %s پشتیبانی نمی‌کند" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "لطفاً پیمانهٔ %s پایتون را نصب کنید" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "لطفاً ابزار خط فرمان %s را نصب کنید" @@ -283,6 +286,7 @@ msgid "Invalid cron expression '%s'" msgstr "عبارت کرون نامعتبر «%s»" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "لطفا منبع %(resource)s را به شاخهٔ %(config_resource)s بیفزایید" @@ -363,10 +367,12 @@ msgid "Show a system notification before breaks" msgstr "نمایش یک آگاهی سامانه پیش از استراحت‌ها" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "آماده برای استراحتی کوتاه در %s ثانیه" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "آماده برای استراحتی طولانی در %s ثانیه" @@ -435,6 +441,7 @@ msgid "Disable Safe Eyes" msgstr "از کار انداختن محافظ چشم" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "از کار افتاده تا %s" @@ -447,24 +454,28 @@ msgid "Enable Safe Eyes" msgstr "به کار انداختن محافظ چشم" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "برای ۱ ساعت" msgstr[1] "برای %(num)dI ساعت" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "برای ۱ دقیقه" msgstr[1] "برای %(num)dI دقیقه" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "برای ۱ ثانیه" msgstr[1] "برای %(num)dI ثانیه" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "استراحت بعدی در %s" @@ -525,6 +536,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "تعداد استراحت‌ها را که می‌توان پشت‌سرهم رد یا به تعویق انداخت محدود کن" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "%(num)d/%(allowed)d استراحت‌ها پشت‌سرهم رد یا به تعویق افتاده‌اند" @@ -534,15 +546,17 @@ msgstr "جلوگیری از آر‌ اس آی" msgid "" "Please install service providing tray icons for your desktop environment." -msgstr "" -"لطفاً آیکون‌های نوار ارائه دهنده خدمات را برای محیط دسکتاپ خود نصب کنید." +msgstr "لطفاً آیکون‌های نوار ارائه دهنده خدمات را برای محیط دسکتاپ خود نصب کنید." +#, python-format msgid "Next long break at %s" msgstr "استراحت طولانی بعدی در %s" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "استراحت‌های بعدی در %(short)s/%(long)s" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "افزونه موردنیاز '%s' فاقد دِپِندِنسی است!" diff --git a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po index c24c72b4..c9c18d99 100644 --- a/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/fr/LC_MESSAGES/safeeyes.po @@ -274,14 +274,17 @@ msgid "Plugin Settings" msgstr "Paramètres du greffon" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Le greffon ne prend pas en charge l’environnement de bureau %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Veuillez installer le module Python « %s »" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Veuillez installer l’outil de ligne de commande « %s »" @@ -290,6 +293,7 @@ msgid "Invalid cron expression '%s'" msgstr "L’expression cron « %s » est invalide" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Veuillez ajouter la ressource %(resource)s au répertoire %(config_resource)s" @@ -371,10 +375,12 @@ msgid "Show a system notification before breaks" msgstr "Afficher une notification système avant les pauses" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Préparez-vous à une pause courte dans %s secondes" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Préparez-vous à une pause longue dans %s secondes" @@ -448,6 +454,7 @@ msgid "Disable Safe Eyes" msgstr "Désactiver Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Désactivée jusqu'à %s" @@ -460,24 +467,28 @@ msgid "Enable Safe Eyes" msgstr "Activer Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Pendant %(num)d heure" msgstr[1] "Pendant %(num)d heures" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Pendant %(num)d minute" msgstr[1] "Pendant %(num)d minutes" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Pendant %(num)d seconde" msgstr[1] "Pendant %(num)d secondes" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Prochaine pause à %s" @@ -538,6 +549,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -549,12 +561,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po index 30c4382a..125b2035 100644 --- a/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/he/LC_MESSAGES/safeeyes.po @@ -265,14 +265,17 @@ msgid "Plugin Settings" msgstr "הגדרות תוסף" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "התוסף אינו תומך בסביבת שולחן העבודה %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "נא להתקין את מודול ה־Python‏ ‚%s’" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "נא להתקין את כלי שורת הפקודה ‚%s’" @@ -281,6 +284,7 @@ msgid "Invalid cron expression '%s'" msgstr "ביטוי cron שגוי ‚%s’" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "נא להוסיף את המשאב %(resource)s לתיקייה %(config_resource)s" @@ -361,10 +365,12 @@ msgid "Show a system notification before breaks" msgstr "להציג התראות מערכת לפני הפסקות" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "להתכונן להפסקה קצרה בעוד %s שניות" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "להתכונן להפסקה ארוכה בעוד %s שניות" @@ -433,6 +439,7 @@ msgid "Disable Safe Eyes" msgstr "השבתת ההגנה על העיניים" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "להשבית עד %s" @@ -445,24 +452,28 @@ msgid "Enable Safe Eyes" msgstr "להפעיל את ההגנה על העיניים" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "למשך שעה" msgstr[1] "למשך %(num)d שעות" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "למשך דקה" msgstr[1] "למשך %(num)d דקות" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "למשך שנייה" msgstr[1] "למשך %(num)d שניות" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "ההפסקה הבאה ב־%s" @@ -523,6 +534,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -534,12 +546,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po index a30606de..4b66321b 100644 --- a/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hi/LC_MESSAGES/safeeyes.po @@ -263,14 +263,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -279,6 +282,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -359,10 +363,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -431,6 +437,7 @@ msgid "Disable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "" @@ -443,24 +450,28 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "" @@ -521,6 +532,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -532,12 +544,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po index 895a9c83..ce79f1d1 100644 --- a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po @@ -263,14 +263,17 @@ msgid "Plugin Settings" msgstr "Bővítmény Beállítások" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "A Bővítmény nem támogatja a(z) %s asztali környezetet" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Kérem telepítse a '%s' Python modul-t" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Kérem telepítse a '%s' parancssori eszközt" @@ -279,6 +282,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Kérem adja hozzá a(z) %(resource) erőforrást a %(config_resource) könyvtárhoz" @@ -360,10 +364,12 @@ msgid "Show a system notification before breaks" msgstr "Mutass Rendszer Értesítést a pihenők előtt" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Pihenő következik %s másodperc múlva" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Hosszú pihenő következik %s másodperc múlva" @@ -432,6 +438,7 @@ msgid "Disable Safe Eyes" msgstr "Safe Eyes Letiltása" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Letiltás eddig: %s" @@ -444,24 +451,28 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes Engedélyezése" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d Órára" msgstr[1] "%(num)d Órára" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d Percre" msgstr[1] "%(num)d Percre" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d Másodpercre" msgstr[1] "%(num)d Másodpercre" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Következő pihenő %s-kor" @@ -522,6 +533,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -533,12 +545,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po index 6c48907c..3f1f5fb5 100644 --- a/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/id/LC_MESSAGES/safeeyes.po @@ -267,14 +267,17 @@ msgid "Plugin Settings" msgstr "Pengaturan Plugin" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Plugin tidak mendukung %s lingkungan desktop" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Silakan lakukan pemasangan Python module '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Silakan lakukan pemasangan alat command-line '%s'" @@ -283,6 +286,7 @@ msgid "Invalid cron expression '%s'" msgstr "Ekspresi cron tidak valid '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Silakan tambahkan sumber %(resource)s ke direktori %(config_resource)s" @@ -365,10 +369,12 @@ msgid "Show a system notification before breaks" msgstr "Tampilkan sebuah sistem notifikasi sebelum istirahat" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Bersiap untuk istirahat singkat dalam %s detik" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Bersiap untuk istirahat panjang dalam %s detik" @@ -439,6 +445,7 @@ msgid "Disable Safe Eyes" msgstr "Matikan Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Mati dalam %s" @@ -451,21 +458,25 @@ msgid "Enable Safe Eyes" msgstr "Hidupkan Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Selama %(num)d jam" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Selama %(num)d menit" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Selama %(num)d detik" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Istirahat selanjutnya pada %s" @@ -526,6 +537,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -537,12 +549,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po index 93d8ddc7..cb524544 100644 --- a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po @@ -271,14 +271,17 @@ msgid "Plugin Settings" msgstr "Preferenze delle estensioni" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "L'estensione non supporta %s l'ambiente desktop" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Devi installare il modulo Python '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Devi installare lo strumento a riga di comando '%s'" @@ -287,6 +290,7 @@ msgid "Invalid cron expression '%s'" msgstr "Espressione cron non valida '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Aggiungi la/le risorse %(resource) nella/e cartella/e %(config_resource)" @@ -368,10 +372,12 @@ msgid "Show a system notification before breaks" msgstr "Mostra una notifica di sistema prima delle pause" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Pausa breve tra %s secondi" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Pausa lunga tra %s secondi" @@ -442,6 +448,7 @@ msgid "Disable Safe Eyes" msgstr "Disabilita Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Disabilita fino a %s" @@ -454,24 +461,28 @@ msgid "Enable Safe Eyes" msgstr "Abilita Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Per %(num)d ora" msgstr[1] "Per %(num)d ore" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Per %(num)d minuto" msgstr[1] "Per %(num)d minuti" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Per %(num)d secondo" msgstr[1] "Per %(num)d secondi" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Prossima pausa alle ore %s" @@ -532,6 +543,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -543,12 +555,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po index 952bf9dd..0e204d35 100644 --- a/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/kn/LC_MESSAGES/safeeyes.po @@ -265,14 +265,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -281,6 +284,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -361,10 +365,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -433,6 +439,7 @@ msgid "Disable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "" @@ -445,21 +452,25 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "" @@ -520,6 +531,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -531,12 +543,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po index f4d686fc..5cc7067b 100644 --- a/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ko/LC_MESSAGES/safeeyes.po @@ -265,14 +265,17 @@ msgid "Plugin Settings" msgstr "부가기능 설정" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "부가기능이 %s 데스크톱 환경을 지원하지 않습니다" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "'%s' 파이썬 모듈을 설치해주세요" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "'%s' 명령줄 도구를 설치해주세요" @@ -281,6 +284,7 @@ msgid "Invalid cron expression '%s'" msgstr "잘못된 크론 표현식 '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "%(resource)s를 %(config_resource)s 디렉토리에 추가해주세요" @@ -361,10 +365,12 @@ msgid "Show a system notification before breaks" msgstr "휴식 전 시스템 알림 표시" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "%s초 안에 짧은 휴식 준비" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "%s초 안에 긴 휴식 준비" @@ -433,6 +439,7 @@ msgid "Disable Safe Eyes" msgstr "세이프 아이즈 비활성화" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "%s까지 비활성화됨" @@ -445,21 +452,25 @@ msgid "Enable Safe Eyes" msgstr "세이프 아이즈 활성화" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d시간" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d분" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d초" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "%s에 다음 휴식" @@ -520,6 +531,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -531,12 +543,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po index 30c5b7f1..fb5db343 100644 --- a/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lt/LC_MESSAGES/safeeyes.po @@ -269,14 +269,17 @@ msgid "Plugin Settings" msgstr "Papildinio nuostatos" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Papildinys nepalaiko %s darbalaukio aplinkos" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Įdiekite Python modulį „%s“" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Įdiekite komandų eilutės įrankį „%s“" @@ -285,6 +288,7 @@ msgid "Invalid cron expression '%s'" msgstr "Neteisingas cron reiškinys „%s“" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Pridėkite išteklių %(resource)s į %(config_resource)s katalogą" @@ -365,10 +369,12 @@ msgid "Show a system notification before breaks" msgstr "Prieš pertraukas rodyti sistemos pranešimą" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Pasiruoškite trumpai pertraukai po %s sekundžių" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Pasiruoškite ilgai pertraukai po %s sekundžių" @@ -440,6 +446,7 @@ msgid "Disable Safe Eyes" msgstr "Išjungti Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Išjungta iki %s" @@ -452,6 +459,7 @@ msgid "Enable Safe Eyes" msgstr "Įjungti Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d valandai" @@ -459,6 +467,7 @@ msgstr[1] "%(num)d valandoms" msgstr[2] "%(num)d valandų" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d minutei" @@ -466,6 +475,7 @@ msgstr[1] "%(num)d minutėms" msgstr[2] "%(num)d minučių" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d sekundei" @@ -473,6 +483,7 @@ msgstr[1] "%(num)d sekundėms" msgstr[2] "%(num)d sekundžių" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Kita pertrauka %s" @@ -533,6 +544,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -544,12 +556,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po index 66269f87..c9e16dba 100644 --- a/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/lv/LC_MESSAGES/safeeyes.po @@ -212,12 +212,15 @@ msgstr "Pārtraukuma iestatījumi" msgid "Plugin Settings" msgstr "Spraudņu iestatījumi" +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Spraudnis neatbalsta %s darbvirsmas vidi" +#, python-format msgid "Please install the Python module '%s'" msgstr "Lūdzu instalējiet Python moduli '%s'" +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Lūdzu instalējiet komandrindas rīku '%s'" @@ -225,6 +228,7 @@ msgstr "Lūdzu instalējiet komandrindas rīku '%s'" msgid "Invalid cron expression '%s'" msgstr "" +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Lūdzu ievietojiet artefaktu %(resource)s mapē %(config_resource)s" @@ -286,9 +290,11 @@ msgstr "Paziņojumi" msgid "Show a system notification before breaks" msgstr "Rādīt sistēmas paziņojumus pirms pārtraukumiem" +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Gatavojies īsam pārtraukumam pēc %s sekundēm" +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Gatavojies garam pārtraukumam pēc %s sekundēm" @@ -349,6 +355,7 @@ msgid "Disable Safe Eyes" msgstr "Atspējot Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Atspējots līdz %s" @@ -361,6 +368,7 @@ msgid "Enable Safe Eyes" msgstr "Iespējot Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Uz %(num)d stundām" @@ -368,6 +376,7 @@ msgstr[1] "Uz %(num)d stundu" msgstr[2] "Uz %(num)d stundām" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Uz %(num)d minūtēm" @@ -375,6 +384,7 @@ msgstr[1] "Uz %(num)d minūti" msgstr[2] "Uz %(num)d minūtēm" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Uz %(num)d sekundēm" @@ -382,6 +392,7 @@ msgstr[1] "Uz %(num)d sekundi" msgstr[2] "Uz %(num)d sekundēm" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Nākamais pārtraukums – %s" @@ -439,6 +450,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -450,12 +462,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po index 656cc055..153e070a 100644 --- a/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mk/LC_MESSAGES/safeeyes.po @@ -265,14 +265,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -281,6 +284,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -361,10 +365,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -433,6 +439,7 @@ msgid "Disable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "" @@ -445,24 +452,28 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "" @@ -523,6 +534,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -534,12 +546,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po index e4fd0bbc..0ab4cdee 100644 --- a/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/mr/LC_MESSAGES/safeeyes.po @@ -264,14 +264,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -280,6 +283,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -360,10 +364,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -432,6 +438,7 @@ msgid "Disable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "" @@ -444,24 +451,28 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "" @@ -522,6 +533,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -533,12 +545,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po index 716da0a0..817d6e41 100644 --- a/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nb/LC_MESSAGES/safeeyes.po @@ -267,14 +267,17 @@ msgid "Plugin Settings" msgstr "Programtilleggsinnstillinger" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Programtillegget støtter ikke %s-skrivebordsmiljøet" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Installer Python-modulen \"%s\"" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Installer kommandolinjeverktøyet \"%s\"" @@ -284,6 +287,7 @@ msgid "Invalid cron expression '%s'" msgstr "Ugyldig Cron-uttrykk «%s»" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Legg til ressursen %(resource)s i %(config_resource)s-mappen" @@ -366,10 +370,12 @@ msgid "Show a system notification before breaks" msgstr "Vis en systemmerknad før pauser" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Klar for en kort pause om %s sekunder" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Klar for en lang pause om %s sekunder" @@ -438,6 +444,7 @@ msgid "Disable Safe Eyes" msgstr "Skru av Øyetrygg" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Avskrudd til %s" @@ -450,24 +457,28 @@ msgid "Enable Safe Eyes" msgstr "Skru på Øyetrygg" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "I %(num)d time" msgstr[1] "I %(num)d timer" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "I %(num)d minutt" msgstr[1] "I %(num)d minutter" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "I %(num)d sekund" msgstr[1] "I %(num)d sekunder" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Neste pause klokka %s" @@ -528,6 +539,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -539,12 +551,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po index e8597390..9736231f 100644 --- a/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/nl/LC_MESSAGES/safeeyes.po @@ -272,14 +272,17 @@ msgid "Plugin Settings" msgstr "Plug-in-instellingen" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "De plug-in biedt geen ondersteuning voor de %s-bureaubladomgeving" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Installeer de Python-module '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Installeer het terminalprogramma '%s'" @@ -288,6 +291,7 @@ msgid "Invalid cron expression '%s'" msgstr "Ongeldige cron-uitdrukking '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Voeg de bron %(resource)s toe aan de %(config_resource)s-map" @@ -369,10 +373,12 @@ msgid "Show a system notification before breaks" msgstr "Systeemmelding tonen voorafgaand aan pauzes" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Bereid je voor op een korte pauze over %s seconden" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Bereid je voor op een lange pauze over %s seconden" @@ -441,6 +447,7 @@ msgid "Disable Safe Eyes" msgstr "Safe Eyes uitschakelen" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Uitgeschakeld tot %s" @@ -453,24 +460,28 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes inschakelen" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Voor %(num)d uur" msgstr[1] "Voor %(num)d uur" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Voor %(num)d minuut" msgstr[1] "Voor %(num)d minuten" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Voor %(num)d seconde" msgstr[1] "Voor %(num)d seconden" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Volgende pauze over %s" @@ -531,6 +542,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -542,12 +554,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po index ed5bb23e..fae39af2 100644 --- a/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pl/LC_MESSAGES/safeeyes.po @@ -268,14 +268,17 @@ msgid "Plugin Settings" msgstr "Ustawienia Wtyczek" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Wtyczki nie wspierają środowiska %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Proszę zainstalować moduł Pythona '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Proszę zainstalować wiersz poleceń '%s'" @@ -284,6 +287,7 @@ msgid "Invalid cron expression '%s'" msgstr "Nieprawidłowe wyrażenie cron '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Proszę dodać źródło %(resource)s do katalogu %(config_resource)s" @@ -364,10 +368,12 @@ msgid "Show a system notification before breaks" msgstr "Pokaż powiadomienia systemowe przed przerwami" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Przygotuj się na krótką przerwę w ciągu %s sekund" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Przygotuj się na długą przerwę w ciągu %s sekund" @@ -438,6 +444,7 @@ msgid "Disable Safe Eyes" msgstr "Wyłącz Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Wyłączony do %s" @@ -450,6 +457,7 @@ msgid "Enable Safe Eyes" msgstr "Włącz Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Na %(num)d godzinę" @@ -457,6 +465,7 @@ msgstr[1] "Na %(num)d godziny" msgstr[2] "Na %(num)d godzin" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Na %(num)d minutę" @@ -464,6 +473,7 @@ msgstr[1] "Na %(num)d minuty" msgstr[2] "Na %(num)d minut" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Na %(num)d sekundę" @@ -471,6 +481,7 @@ msgstr[1] "Na %(num)d sekundy" msgstr[2] "Na %(num)d sekund" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Kolejna przerwa o %s" @@ -531,6 +542,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -542,12 +554,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po index 27999101..b9baf342 100644 --- a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po @@ -271,14 +271,17 @@ msgid "Plugin Settings" msgstr "Definições do Acrescento" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "O acrescento não funciona no ambiente de trabalho %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Instalar o módulo Python '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Instalar a ferramenta de linha de comando '%s'" @@ -287,6 +290,7 @@ msgid "Invalid cron expression '%s'" msgstr "A expressão cron '%s' é inválida" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Adicionar o recurso %(resource)s à pasta %(config_resources)s" @@ -367,10 +371,12 @@ msgid "Show a system notification before breaks" msgstr "Mostrar notificações do sistema antes das pausas" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Pausa curta em %s segundos" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Pausa longa em %s segundos" @@ -439,6 +445,7 @@ msgid "Disable Safe Eyes" msgstr "Desativar o Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Desativado até %s" @@ -451,24 +458,28 @@ msgid "Enable Safe Eyes" msgstr "Ativar o Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Por %(num)d Hora" msgstr[1] "Por %(num)d Horas" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Por %(num)d Minuto" msgstr[1] "Por %(num)d Minutos" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Por %(num)d Segundo" msgstr[1] "Por %(num)d Segundos" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Próxima pausa às %s" @@ -529,6 +540,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -540,12 +552,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po index 4dcc5c0c..5d79ac47 100644 --- a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po @@ -271,14 +271,17 @@ msgid "Plugin Settings" msgstr "Definições de Plug-in" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "O plug-in não suporta o ambiente da área de trabalho %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Por favor, instale o módulo '%s' do Pynthon" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Por favor, instale a ferramenta '%s' da linha de comandos" @@ -287,6 +290,7 @@ msgid "Invalid cron expression '%s'" msgstr "A expressão de cron '%s' é inválida" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Por favor, adicione o recurso %(resource)s para a diretoria " @@ -369,10 +373,12 @@ msgid "Show a system notification before breaks" msgstr "Mostrar uma notificação do sistema antes da parada" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Prepare-se para uma parada curta em %s segundos" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Prepare-se para uma parada longa em %s segundos" @@ -443,6 +449,7 @@ msgid "Disable Safe Eyes" msgstr "Desabilitar o Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Desabilitado até %s" @@ -455,24 +462,28 @@ msgid "Enable Safe Eyes" msgstr "Habilitar o Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Para %(num)d Hora" msgstr[1] "Para %(num)d Horas" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Para %(num)d Minuto" msgstr[1] "Para %(num)d Minutos" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Para %(num)d Segundo" msgstr[1] "Para %(num)d Segundos" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Próxima parada as %s" @@ -533,6 +544,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -544,12 +556,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po index c2a1d497..1423ea44 100644 --- a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po @@ -269,14 +269,17 @@ msgid "Plugin Settings" msgstr "Настройки дополнений" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Дополнение не поддерживает окружение рабочего стола: %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Пожалуйста, установите модуль Python: %s" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Пожалуйста, установите инструмент командной строки '%s'" @@ -285,6 +288,7 @@ msgid "Invalid cron expression '%s'" msgstr "Недопустимое выражение cron '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Пожалуйста, добавьте источник %(resource)s в папку %(config_resource)" @@ -365,10 +369,12 @@ msgid "Show a system notification before breaks" msgstr "Показывать системные уведомления перед перерывами" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Приготовьтесь к короткому перерыву через %s секунд" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Приготовьтесь к длинному перерыву через %s секунд" @@ -439,6 +445,7 @@ msgid "Disable Safe Eyes" msgstr "Отключить Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Отключено до %s" @@ -451,6 +458,7 @@ msgid "Enable Safe Eyes" msgstr "Активировать Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "На %(num)d час" @@ -458,6 +466,7 @@ msgstr[1] "На %(num)d часа" msgstr[2] "На %(num)d часов" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "На %(num)d минуту" @@ -465,6 +474,7 @@ msgstr[1] "На %(num)d минуты" msgstr[2] "На %(num)d минут" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "На %(num)d секунду" @@ -472,6 +482,7 @@ msgstr[1] "На %(num)d секунды" msgstr[2] "На %(num)d секунд" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Следующий перерыв в %s" @@ -532,6 +543,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -543,12 +555,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/safeeyes.pot b/safeeyes/config/locale/safeeyes.pot index 9841fdae..21610d71 100644 --- a/safeeyes/config/locale/safeeyes.pot +++ b/safeeyes/config/locale/safeeyes.pot @@ -247,14 +247,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -263,6 +266,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -343,10 +347,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -415,6 +421,7 @@ msgid "Disable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "" @@ -427,24 +434,28 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" msgstr[1] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "" @@ -505,6 +516,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -515,12 +527,15 @@ msgstr "" msgid "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po index ed6181c3..ddca89f7 100644 --- a/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sk/LC_MESSAGES/safeeyes.po @@ -268,14 +268,17 @@ msgid "Plugin Settings" msgstr "Nastavenie rozšírení" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Rozšírenie nepodporuje desktopové prostredie %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Prosím naištalujte si Python modul '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Prosím nainštalujte si nástroj '%s'" @@ -284,6 +287,7 @@ msgid "Invalid cron expression '%s'" msgstr "Neplatný výraz pre cron '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Prosím pridajte zdroj %(resource)s do adresára %(config_resource)s" @@ -364,10 +368,12 @@ msgid "Show a system notification before breaks" msgstr "Zobraziť oznámenia pred prestávkami" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Priprav sa na krátku prestávku za %s sekúnd" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Priprav sa na dlhú prestávku za %s sekúnd" @@ -436,6 +442,7 @@ msgid "Disable Safe Eyes" msgstr "Zakázať" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Zakázať do %s" @@ -448,6 +455,7 @@ msgid "Enable Safe Eyes" msgstr "Povoliť Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Počas %(num)d hodiny" @@ -455,6 +463,7 @@ msgstr[1] "Počas %(num)d hodín" msgstr[2] "Počas %(num)d hodín" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Počas %(num)d minúty" @@ -462,6 +471,7 @@ msgstr[1] "Počas %(num)d minút" msgstr[2] "Počas %(num)d minút" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Počas %(num)d sekundy" @@ -469,6 +479,7 @@ msgstr[1] "Počas %(num)d sekúnd" msgstr[2] "Počas %(num)d sekúnd" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Ďalšia prestávka o %s" @@ -529,6 +540,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -540,12 +552,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po index 48c35d2a..6e92085f 100644 --- a/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sr/LC_MESSAGES/safeeyes.po @@ -271,14 +271,17 @@ msgid "Plugin Settings" msgstr "Подешавање додатака" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Додатак не подржава %s радну површину" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Молимо Вас, преузмите модул '%s' за Пајтон" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Молимо Вас, преузмите алатку командне-линије '%s'" @@ -287,6 +290,7 @@ msgid "Invalid cron expression '%s'" msgstr "Неправилан формат за извршавање cron посла '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Молимо Вас, додајте ресурс %(resource)s у %(config_resource)s директоријум" @@ -368,10 +372,12 @@ msgid "Show a system notification before breaks" msgstr "Покажите системско обавештење пре почетка пауза" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Спремите се за кратку паузу у року од %s секунди" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Спремите се за дугу паузу у року од %s секунди" @@ -443,6 +449,7 @@ msgid "Disable Safe Eyes" msgstr "Онемогући Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Онемогућено до %s" @@ -455,6 +462,7 @@ msgid "Enable Safe Eyes" msgstr "Омогући Safe Eyes" #: plugins/trayicon +#, fuzzy, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "сат" @@ -462,6 +470,7 @@ msgstr[1] "сати" msgstr[2] "сати" #: plugins/trayicon +#, fuzzy, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "минут" @@ -469,6 +478,7 @@ msgstr[1] "минута" msgstr[2] "минута" #: plugins/trayicon +#, fuzzy, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "секунда" @@ -476,6 +486,7 @@ msgstr[1] "секунде" msgstr[2] "секунди" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Наредна пауза је у %s" @@ -536,6 +547,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -547,12 +559,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po index f62e3388..7544c7f8 100644 --- a/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/sv/LC_MESSAGES/safeeyes.po @@ -266,14 +266,17 @@ msgid "Plugin Settings" msgstr "Tilläggsinställningar" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Insticksmodul stöder inte %s skrivbordsmiljö" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Installera Python-modulen '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Installera kommandoradsverktyget '%s'" @@ -282,6 +285,7 @@ msgid "Invalid cron expression '%s'" msgstr "Ogiltigt cron uttryck '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Lägg till resursen %(resource)s till %(config_resource)s katalog" @@ -362,10 +366,12 @@ msgid "Show a system notification before breaks" msgstr "Visa ett systemmeddelande före pauser" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Redo för en kort paus på %s sekunder" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Redo för en lång paus på %s sekunder" @@ -435,6 +441,7 @@ msgid "Disable Safe Eyes" msgstr "Inaktivera Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Inaktiverad tills %s" @@ -447,24 +454,28 @@ msgid "Enable Safe Eyes" msgstr "Aktivera Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "För %(num)d timme" msgstr[1] "För %(num)d timmar" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "För %(num)d minut" msgstr[1] "För %(num)d minuter" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "För %(num)d sekund" msgstr[1] "För %(num)d sekunder" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Nästa paus vid %s" @@ -525,6 +536,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -536,12 +548,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po index 18e0e2c6..cf00cd5f 100644 --- a/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ta/LC_MESSAGES/safeeyes.po @@ -270,14 +270,17 @@ msgid "Plugin Settings" msgstr "நீட்சி அமைப்புகள்" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "இந்த நீட்சி %s முகத்திரை சூழலை ஆதரிக்கவில்லை" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "தயவுசெய்து '%s' Python தொகுப்பை நிறுவவும்" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "தயவுசெய்து '%s' முனைய கட்டளையை நிறுவுக" @@ -286,6 +289,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "தயவுசெய்து %(resource)s வளத்தை %(config_resource)s கோப்புறையில் சேர்க்கவும்" @@ -366,10 +370,12 @@ msgid "Show a system notification before breaks" msgstr "இடைவேளைகளின் முன் தயார்படுத்தலுக்கான அறிவிப்பு" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "%s விநாடிகளில் குறுகிய இடைவேளைக்கு தயாராகுங்கள்" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "%s விநாடிகளில் நீண்ட இடைவேளைக்கு தயாராகுங்கள்" @@ -438,6 +444,7 @@ msgid "Disable Safe Eyes" msgstr "Safe Eyes ஐ நிறுத்துக" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "%s வரை நிறுத்தி வைக்கப்பட்டுள்ளது" @@ -450,24 +457,28 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes ஐ செயல்படுத்துக" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d மணித்தியாலத்திற்கு" msgstr[1] "%(num)d மணித்தியாலங்களுக்கு" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d நிமிடத்திற்கு" msgstr[1] "%(num)d நிமிடங்களுக்கு" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d வினாடிக்கு" msgstr[1] "%(num)d வினாடிகளுக்கு" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "அடுத்த இடைவேளை %s" @@ -528,6 +539,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -539,12 +551,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po index d58f43b5..5192e60d 100644 --- a/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/tr/LC_MESSAGES/safeeyes.po @@ -268,14 +268,17 @@ msgid "Plugin Settings" msgstr "Eklenti Ayarları" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Bu eklenti %s masaüstü ortamını desteklemiyor" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Lütfen '%s' Python modülünü kurun" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Lütfen '%s' komut satırı aracını kurunuz" @@ -284,6 +287,7 @@ msgid "Invalid cron expression '%s'" msgstr "Geçersiz cron ifadesi '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Lütfen %(resource)s kaynağını %(config_resource)s klasörüne ekleyiniz" @@ -364,10 +368,12 @@ msgid "Show a system notification before breaks" msgstr "Molalardan önce bir sistem bildirimi göster" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "%s Saniye sonra verilecek bir kısa mola için hazır olun" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "%s Saniye sonra verilecek bir uzun mola için hazır olun" @@ -439,6 +445,7 @@ msgid "Disable Safe Eyes" msgstr "Safe Eyes'ı pasifleştir" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "%s'e kadar pasif" @@ -451,24 +458,28 @@ msgid "Enable Safe Eyes" msgstr "Safe Eyes'ı etkinleştir" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d Saat Boyunca" msgstr[1] "%(num)d Saat" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d Dakika Boyunca" msgstr[1] "%(num)d Dakika" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d Saniye Boyunca" msgstr[1] "%(num)d Saniye" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Sonraki mola %s'de" @@ -529,6 +540,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -540,12 +552,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po index da4102c3..658672d4 100644 --- a/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ug/LC_MESSAGES/safeeyes.po @@ -262,14 +262,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -278,6 +281,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -358,10 +362,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -430,6 +436,7 @@ msgid "Disable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "" @@ -442,21 +449,25 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "" @@ -517,6 +528,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -528,12 +540,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po index 62b29a49..e7d1f4df 100644 --- a/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uk/LC_MESSAGES/safeeyes.po @@ -267,14 +267,17 @@ msgid "Plugin Settings" msgstr "Налаштування плагінів" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Плагін не підтримує стільничне середовище %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Будь ласка, встановіть модуль Python «%s»" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Будь ласка, встановіть засіб вказівкового рядка «%s»" @@ -283,6 +286,7 @@ msgid "Invalid cron expression '%s'" msgstr "Неприпустимий вираз cron '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Будь ласка, додайте ресурс %(resource)s до каталогу %(config_resource)s" @@ -365,10 +369,12 @@ msgid "Show a system notification before breaks" msgstr "Показувати системне сповіщення перед перервами" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Приготуйтесь до короткої перерви через %s секунд" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Приготуйтесь до довгої переви через %s секунд" @@ -439,6 +445,7 @@ msgid "Disable Safe Eyes" msgstr "Вимкнути Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Вимкнено до %s" @@ -451,6 +458,7 @@ msgid "Enable Safe Eyes" msgstr "Увімкнути Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "На %(num)d годину" @@ -458,6 +466,7 @@ msgstr[1] "На %(num)d годин" msgstr[2] "На %(num)d годин" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "На %(num)d хвилину" @@ -465,6 +474,7 @@ msgstr[1] "На %(num)d хвилин" msgstr[2] "На %(num)d хвилин" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "На %(num)d секунду" @@ -472,6 +482,7 @@ msgstr[1] "На %(num)d секунд" msgstr[2] "На %(num)d секунд" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Наступна перерва о %s" @@ -532,6 +543,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -543,12 +555,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po index ef9229cd..a4e358f7 100644 --- a/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/uz_Latn/LC_MESSAGES/safeeyes.po @@ -262,14 +262,17 @@ msgid "Plugin Settings" msgstr "" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "" @@ -278,6 +281,7 @@ msgid "Invalid cron expression '%s'" msgstr "" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" @@ -358,10 +362,12 @@ msgid "Show a system notification before breaks" msgstr "" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "" @@ -430,6 +436,7 @@ msgid "Disable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "" @@ -442,21 +449,25 @@ msgid "Enable Safe Eyes" msgstr "" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "" @@ -517,6 +528,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -528,12 +540,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po index 3090f857..eb79d946 100644 --- a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po @@ -268,14 +268,17 @@ msgid "Plugin Settings" msgstr "Cài đặt plugin" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "Plugin không hỗ trợ Môi trường destop %s" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "Vui lòng cài đặt Python module '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "Vui lòng cài đặt công cụ dòng lệnh (command-line tool) '%s'" @@ -284,6 +287,7 @@ msgid "Invalid cron expression '%s'" msgstr "Biểu thức cron '%s' không hợp lệ" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "Vui lòng thêm tài nguyên %(resource) vào thư mục %(config_resource)" @@ -365,10 +369,12 @@ msgid "Show a system notification before breaks" msgstr "Hiện một thông báo hệ thống trước khi nghỉ" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "Chuẩn bị cho giờ nghỉ ngắn trong %s giây nữa" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "Chuẩn bị cho giờ nghỉ dài trong %s giây nữa" @@ -439,6 +445,7 @@ msgid "Disable Safe Eyes" msgstr "Tắt Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "Tắt cho đến %s" @@ -451,21 +458,25 @@ msgid "Enable Safe Eyes" msgstr "Bật Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "Khoảng %(num)d giờ" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "Khoảng %(num)d phút" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "Khoảng %(num)d giây" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "Lần nghỉ tiếp theo là %s" @@ -526,6 +537,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -537,12 +549,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po index 40505e3b..d1a27472 100644 --- a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po @@ -266,14 +266,17 @@ msgid "Plugin Settings" msgstr "插件设置" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "插件不支持 %s 桌面环境" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "请安装Python模块“%s\"" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "请安装命令行工具”%s“" @@ -282,6 +285,7 @@ msgid "Invalid cron expression '%s'" msgstr "无效的 cron 正则表达式 '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "请将资源 %(resource) 添加到 %(config_resource) 目录" @@ -362,10 +366,12 @@ msgid "Show a system notification before breaks" msgstr "在休息之前显示系统通知" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "%s 秒后将进入一个短休息" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "%s 秒后将进入一个长休息" @@ -434,6 +440,7 @@ msgid "Disable Safe Eyes" msgstr "暂停 Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "暂停,直到 %s" @@ -446,21 +453,25 @@ msgid "Enable Safe Eyes" msgstr "恢复 Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d 小时" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d 分钟" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d 秒" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "下次休息将在 %s" @@ -521,6 +532,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -532,12 +544,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" diff --git a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po index d75d40c5..7b18e462 100644 --- a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po @@ -263,14 +263,17 @@ msgid "Plugin Settings" msgstr "外掛設定" # Settings dialog +#, python-format msgid "Plugin does not support %s desktop environment" msgstr "外掛未支持 %s 桌機環境" # Settings dialog +#, python-format msgid "Please install the Python module '%s'" msgstr "請安裝 Python 模組 '%s'" # Settings dialog +#, python-format msgid "Please install the command-line tool '%s'" msgstr "請安裝終端指令工具 '%s'" @@ -279,6 +282,7 @@ msgid "Invalid cron expression '%s'" msgstr "無效的 cron 表述式 '%s'" # Settings dialog +#, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "請將資源 %(resource)s 加入至 %(config_resource) 的路徑" @@ -359,10 +363,12 @@ msgid "Show a system notification before breaks" msgstr "在休息之前顯示系統通知" # plugin/notification +#, python-format msgid "Ready for a short break in %s seconds" msgstr "在 %s 秒後準備進入一個短休息" # plugin/notification +#, python-format msgid "Ready for a long break in %s seconds" msgstr "在 %s 秒後準備進入一個長休息" @@ -431,6 +437,7 @@ msgid "Disable Safe Eyes" msgstr "關閉 Safe Eyes" #: plugins/trayicon +#, python-format msgid "Disabled until %s" msgstr "關閉直到 %s" @@ -443,21 +450,25 @@ msgid "Enable Safe Eyes" msgstr "開啟 Safe Eyes" #: plugins/trayicon +#, python-format msgid "For %(num)d Hour" msgid_plural "For %(num)d Hours" msgstr[0] "%(num)d 小時" #: plugins/trayicon +#, python-format msgid "For %(num)d Minute" msgid_plural "For %(num)d Minutes" msgstr[0] "%(num)d 分鐘" #: plugins/trayicon +#, python-format msgid "For %(num)d Second" msgid_plural "For %(num)d Seconds" msgstr[0] "%(num)d 秒" #: plugins/trayicon +#, python-format msgid "Next break at %s" msgstr "下次休息在 %s" @@ -518,6 +529,7 @@ msgid "Limit how many breaks can be skipped or postponed in a row" msgstr "" # plugin/limitconsecutiveskipping +#, python-format msgid "Skipped or postponed %(num)d/%(allowed)d breaks in a row" msgstr "" @@ -529,12 +541,15 @@ msgid "" "Please install service providing tray icons for your desktop environment." msgstr "" +#, python-format msgid "Next long break at %s" msgstr "" +#, python-format msgid "Next breaks at %(short)s/%(long)s" msgstr "" +#, python-format msgid "The required plugin '%s' is missing dependencies!" msgstr "" From dc6f333fae61029d69e00eddbb97082a89be2470 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 19:54:25 +0200 Subject: [PATCH 36/50] translations: more validations, ensure named placeholders match --- .../config/locale/ar/LC_MESSAGES/safeeyes.po | 2 +- .../config/locale/da/LC_MESSAGES/safeeyes.po | 2 +- .../config/locale/hu/LC_MESSAGES/safeeyes.po | 2 +- .../config/locale/it/LC_MESSAGES/safeeyes.po | 2 +- .../config/locale/pt/LC_MESSAGES/safeeyes.po | 2 +- .../locale/pt_BR/LC_MESSAGES/safeeyes.po | 2 +- .../config/locale/ru/LC_MESSAGES/safeeyes.po | 2 +- .../config/locale/vi/LC_MESSAGES/safeeyes.po | 2 +- .../locale/zh_CN/LC_MESSAGES/safeeyes.po | 2 +- .../locale/zh_TW/LC_MESSAGES/safeeyes.po | 2 +- validate_po.py | 106 ++++++++++++++---- 11 files changed, 96 insertions(+), 30 deletions(-) diff --git a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po index a6e7981b..2ca905c6 100644 --- a/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ar/LC_MESSAGES/safeeyes.po @@ -286,7 +286,7 @@ msgstr "تعبير الوظيفة المجدولة غير صحيح '%s'" # Settings dialog #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" -msgstr "من فضلك أضف المورد %(resource)s إلى الدليل %(config_resource)" +msgstr "من فضلك أضف المورد %(resource)s إلى الدليل %(config_resource)s" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po index 50451382..7106d008 100644 --- a/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/da/LC_MESSAGES/safeeyes.po @@ -287,7 +287,7 @@ msgstr "Ugyldigt cron-udtryk '%s'" # Settings dialog #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" -msgstr "Tilføj ressource %(ressource)s til %(config_resource)s bibliotek" +msgstr "Tilføj ressource %(resource)s til %(config_resource)s bibliotek" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po index ce79f1d1..45c02ddc 100644 --- a/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/hu/LC_MESSAGES/safeeyes.po @@ -285,7 +285,7 @@ msgstr "" #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" -"Kérem adja hozzá a(z) %(resource) erőforrást a %(config_resource) könyvtárhoz" +"Kérem adja hozzá a(z) %(resource)s erőforrást a %(config_resource)s könyvtárhoz" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po index cb524544..22dbca16 100644 --- a/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/it/LC_MESSAGES/safeeyes.po @@ -293,7 +293,7 @@ msgstr "Espressione cron non valida '%s'" #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" -"Aggiungi la/le risorse %(resource) nella/e cartella/e %(config_resource)" +"Aggiungi la/le risorse %(resource)s nella/e cartella/e %(config_resource)s" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po index b9baf342..bc5504e0 100644 --- a/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt/LC_MESSAGES/safeeyes.po @@ -292,7 +292,7 @@ msgstr "A expressão cron '%s' é inválida" # Settings dialog #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" -msgstr "Adicionar o recurso %(resource)s à pasta %(config_resources)s" +msgstr "Adicionar o recurso %(resource)s à pasta %(config_resource)s" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po index 5d79ac47..d528c421 100644 --- a/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/pt_BR/LC_MESSAGES/safeeyes.po @@ -294,7 +294,7 @@ msgstr "A expressão de cron '%s' é inválida" msgid "Please add the resource %(resource)s to %(config_resource)s directory" msgstr "" "Por favor, adicione o recurso %(resource)s para a diretoria " -"%(config_resources)s" +"%(config_resource)s" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po index 1423ea44..e078fd6d 100644 --- a/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/ru/LC_MESSAGES/safeeyes.po @@ -290,7 +290,7 @@ msgstr "Недопустимое выражение cron '%s'" # Settings dialog #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" -msgstr "Пожалуйста, добавьте источник %(resource)s в папку %(config_resource)" +msgstr "Пожалуйста, добавьте источник %(resource)s в папку %(config_resource)s" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po index eb79d946..fe2a14fa 100644 --- a/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/vi/LC_MESSAGES/safeeyes.po @@ -289,7 +289,7 @@ msgstr "Biểu thức cron '%s' không hợp lệ" # Settings dialog #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" -msgstr "Vui lòng thêm tài nguyên %(resource) vào thư mục %(config_resource)" +msgstr "Vui lòng thêm tài nguyên %(resource)s vào thư mục %(config_resource)s" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po index d1a27472..01c69ef7 100644 --- a/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_CN/LC_MESSAGES/safeeyes.po @@ -287,7 +287,7 @@ msgstr "无效的 cron 正则表达式 '%s'" # Settings dialog #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" -msgstr "请将资源 %(resource) 添加到 %(config_resource) 目录" +msgstr "请将资源 %(resource)s 添加到 %(config_resource)s 目录" # Settings dialog msgid "New Break" diff --git a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po index 7b18e462..65970b38 100644 --- a/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po +++ b/safeeyes/config/locale/zh_TW/LC_MESSAGES/safeeyes.po @@ -284,7 +284,7 @@ msgstr "無效的 cron 表述式 '%s'" # Settings dialog #, python-format msgid "Please add the resource %(resource)s to %(config_resource)s directory" -msgstr "請將資源 %(resource)s 加入至 %(config_resource) 的路徑" +msgstr "請將資源 %(resource)s 加入至 %(config_resource)s 的路徑" # Settings dialog msgid "New Break" diff --git a/validate_po.py b/validate_po.py index 6e64ddab..8447cae9 100644 --- a/validate_po.py +++ b/validate_po.py @@ -23,24 +23,84 @@ import re import sys +def validate_placeholders(message: str) -> bool: + pos = 0 + + success = True + + count_placeholders = 0 + count_unnamed = 0 + + while True: + index = message.find("%", pos) + if index == -1: + break + + pos = index + 1 + + nextchar = message[pos : pos + 1] + + name = None + + if nextchar == "(": + index = message.find(")", pos) + if index == -1: + success = False + print(f"Unclosed parenthetical in '{message}'") + break + name = message[pos + 1 : index] + + pos = index + 1 + + nextchar = message[pos : pos + 1] + if nextchar not in ["%", "s", "d", "i", "f", "F"]: + success = False + print(f"Invalid format modifier in '{message}'") + break + + if nextchar != "%": + count_placeholders += 1 + if name is None: + count_unnamed += 1 + + pos += 1 + continue + + if count_unnamed > 1: + success = False + print(f"Multiple unnamed placeholders in '{message}'") + + if count_unnamed > 0 and count_placeholders > count_unnamed: + success = False + print(f"Mixing named and unnamed placeholders in '{message}'") + + return success + def has_equal_placeholders(left: str, right: str) -> bool: - percents = re.finditer(r'%(?P\(\w+\))?(?P[a-z])', left) + def _get_placeholders(message: str) -> tuple: + percents = re.finditer(r"%(?P\(\w+\))?(?P[a-z])", message) + + unnamed = defaultdict(int) + named = set() + for percent in percents: + if percent.group("name"): + named.add(f"%({percent.group('name')}){percent.group('format')}") + else: + match = f"%{percent.group('format')}" + unnamed[match] += 1 + return (unnamed, named) - unnamed = defaultdict(int) - named = [] - for percent in percents: - if percent.group('name'): - named.append(f"%({percent.group('name')}){percent.group('format')}") - else: - match = f"%{percent.group('format')}" - unnamed[match] += 1 + (left_unnamed, left_named) = _get_placeholders(left) + (right_unnamed, right_named) = _get_placeholders(right) # count unnamed cases (eg. %s, %d) - for match, count in unnamed.items(): - if right.count(match) != count: + for match, count in left_unnamed.items(): + if right_unnamed.get(match, 0) != count: return False - # no need to count named cases - they are optional + # named cases are optional - but ensure that translation does not add new ones + if not right_named.issubset(left_named): + return False return True @@ -48,17 +108,23 @@ def validate_po(locale: str, path: str) -> bool: success = True po = polib.pofile(path) for entry in po: - if entry.msgstr and not has_equal_placeholders(entry.msgid, entry.msgstr): - print("Number of variables mismatched in " + locale) - print(entry.msgid + " -> " + entry.msgstr) - print() - success = False - for plural in entry.msgstr_plural.values(): - if plural and not has_equal_placeholders(entry.msgid, plural): + if entry.msgstr: + if not validate_placeholders(entry.msgstr): + success = False + if not has_equal_placeholders(entry.msgid, entry.msgstr): print("Number of variables mismatched in " + locale) - print(entry.msgid + " -> " + plural) + print(entry.msgid + " -> " + entry.msgstr) print() success = False + for plural in entry.msgstr_plural.values(): + if plural: + if not validate_placeholders(plural): + success = False + if not has_equal_placeholders(entry.msgid, plural): + print("Number of variables mismatched in " + locale) + print(entry.msgid + " -> " + plural) + print() + success = False return success success = True From a95382807fe1f1b5c9af3faa2614346a742d66f1 Mon Sep 17 00:00:00 2001 From: deltragon Date: Sun, 4 Aug 2024 18:41:20 +0200 Subject: [PATCH 37/50] translations: dont translate placeholder/untranslatable strings in glade files --- safeeyes/glade/about_dialog.glade | 8 ++++---- safeeyes/glade/break_screen.glade | 6 +++--- safeeyes/glade/item_bool.glade | 2 +- safeeyes/glade/item_break.glade | 2 +- safeeyes/glade/item_int.glade | 2 +- safeeyes/glade/item_plugin.glade | 4 ++-- safeeyes/glade/item_text.glade | 2 +- safeeyes/glade/new_break.glade | 2 +- safeeyes/glade/settings_break.glade | 4 ++-- safeeyes/glade/settings_dialog.glade | 22 +++++++++++----------- safeeyes/glade/settings_plugin.glade | 2 +- 11 files changed, 28 insertions(+), 28 deletions(-) diff --git a/safeeyes/glade/about_dialog.glade b/safeeyes/glade/about_dialog.glade index ae76bce5..cad666fb 100644 --- a/safeeyes/glade/about_dialog.glade +++ b/safeeyes/glade/about_dialog.glade @@ -22,7 +22,7 @@ - This program is free software: you can redistribute it and/or modify + 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. @@ -37,7 +37,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. False - Safe Eyes + Safe Eyes False center-always safeeyes @@ -71,7 +71,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.center 10 10 - Safe Eyes 2.2.1 + Safe Eyes 2.2.1 center @@ -135,7 +135,7 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. - https://slgobinath.github.io/SafeEyes + https://slgobinath.github.io/SafeEyes True True False diff --git a/safeeyes/glade/break_screen.glade b/safeeyes/glade/break_screen.glade index 873a26bd..277ef4a9 100644 --- a/safeeyes/glade/break_screen.glade +++ b/safeeyes/glade/break_screen.glade @@ -77,7 +77,7 @@ True False - Hello World + Hello World center @@ -169,7 +169,7 @@ True False - Widget + Widget 0.25