From c5aeb1acad2029ddea57ba0e8a60503f1ffdcc2d Mon Sep 17 00:00:00 2001 From: Neko Nekowazarashi Date: Mon, 27 Feb 2023 16:51:47 +0000 Subject: [PATCH 01/90] Translated using Weblate (Indonesian) Currently translated at 88.8% (40 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/id/ --- locales/id.json | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/locales/id.json b/locales/id.json index ac55a468..a9ee749f 100644 --- a/locales/id.json +++ b/locales/id.json @@ -1,19 +1,43 @@ { "argument_required": "Argumen '{argument}' dibutuhkan", - "authentication_required": "Otentikasi dibutuhkan", + "authentication_required": "Autentikasi dibutuhkan", "deprecated_command": "'{prog} {command}' sudah usang dan akan dihapus nanti", "logged_out": "Berhasil keluar", - "password": "Kata sandi", - "deprecated_command_alias": "'{prog} {old}' sudah usang dan akan dihapus nanti, gunakan '{prog} {new}' saja", + "password": "Kata Sandi", + "deprecated_command_alias": "'{prog} {old}' sudah usang dan akan dihapus nanti, gunakan '{prog} {new}'", "info": "Informasi:", - "instance_already_running": "Sudah ada operasi YunoHost yang sedang berjalan. Tunggu itu selesai sebelum menjalankan yang lain.", + "instance_already_running": "Sudah ada tindakan YunoHost yang sedang berjalan. Tunggu itu selesai sebelum menjalankan yang lain.", "logged_in": "Berhasil masuk", "warning": "Peringatan:", "cannot_open_file": "Tidak dapat membuka berkas {file} (alasan: {error})", - "error_removing": "Terjadi kesalahan ketika menghapus {path}: {error}", + "error_removing": "Terjadi galat ketika menghapus {path}: {error}", "success": "Berhasil!", "warn_the_user_about_waiting_lock": "Perintah YunoHost lain sedang berjalan saat ini, kami sedang menunggu itu selesai sebelum menjalankan yang ini", "warn_the_user_about_waiting_lock_again": "Masih menunggu...", - "unable_authenticate": "Tidak dapat mengotentikasi", - "warn_the_user_that_lock_is_acquired": "Perintah yang tadi baru saja selesai, akan memulai perintah ini" + "unable_authenticate": "Tidak dapat mengautentikasi", + "warn_the_user_that_lock_is_acquired": "Perintah yang tadi baru saja selesai, akan memulai perintah ini", + "server_already_running": "Sebuah peladen telah berjalan di porta tersebut", + "unknown_group": "Kelompok '{group}' tidak diketahui", + "unknown_user": "Pengguna '{user}' tidak diketahui", + "values_mismatch": "Tidak sama", + "cannot_write_file": "Tidak dapat menyimpan berkas {file} (alasan: {error})", + "unknown_error_reading_file": "Galat yang tidak diketahui ketika membaca berkas {file} (alasan: {error})", + "invalid_url": "Gagal terhubung dengan {url} ... mungkin layanan tersebut sedang tidak berjalan atau Anda tidak terhubung ke internet di IPv4/IPv6.", + "download_timeout": "{url} memakan waktu yang lama untuk menjawab, menyerah.", + "download_unknown_error": "Galat ketika mengunduh data dari {url}: {error}", + "download_bad_status_code": "{url} menjawab dengan kode status {code}", + "confirm": "Konfirmasi {prompt}", + "edit_text_question": "{}. Sunting teks ini ? [yN]: ", + "error": "Galat:", + "file_not_exist": "Berkas tidak ada: '{path}'", + "folder_exists": "Berkas sudah ada: '{path}'", + "invalid_argument": "Argumen tidak valid '{argument}': {error}", + "invalid_usage": "Tidak valid, ikutkan --help untuk melihat bantuan", + "not_logged_in": "Anda belum masuk", + "operation_interrupted": "Tindakan terganggu", + "error_writing_file": "Galat ketika menyimpan berkas {file}: {error}", + "error_changing_file_permissions": "Galat ketika mengubah izin untuk {path}: {error}", + "download_ssl_error": "Galat SSL ketika menghubungi {url}", + "pattern_not_match": "Tidak cocok dengan pola", + "root_required": "Anda harus berada di root untuk melakukan tindakan ini" } From d1e10e23d4fbb82f935b4017037cb18d7dd2407b Mon Sep 17 00:00:00 2001 From: liimee Date: Sun, 5 Mar 2023 10:00:52 +0000 Subject: [PATCH 02/90] Translated using Weblate (Indonesian) Currently translated at 88.8% (40 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/id/ --- locales/id.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/id.json b/locales/id.json index a9ee749f..4e4d4d35 100644 --- a/locales/id.json +++ b/locales/id.json @@ -23,7 +23,7 @@ "cannot_write_file": "Tidak dapat menyimpan berkas {file} (alasan: {error})", "unknown_error_reading_file": "Galat yang tidak diketahui ketika membaca berkas {file} (alasan: {error})", "invalid_url": "Gagal terhubung dengan {url} ... mungkin layanan tersebut sedang tidak berjalan atau Anda tidak terhubung ke internet di IPv4/IPv6.", - "download_timeout": "{url} memakan waktu yang lama untuk menjawab, menyerah.", + "download_timeout": "{url} memakan waktu yang terlalu lama untuk menjawab, menyerah.", "download_unknown_error": "Galat ketika mengunduh data dari {url}: {error}", "download_bad_status_code": "{url} menjawab dengan kode status {code}", "confirm": "Konfirmasi {prompt}", From 6ec06b4ce3fc047f3a23ceebd2cd32604e3aa14e Mon Sep 17 00:00:00 2001 From: Neko Nekowazarashi Date: Mon, 27 Mar 2023 00:28:14 +0000 Subject: [PATCH 03/90] Translated using Weblate (Indonesian) Currently translated at 88.8% (40 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/id/ --- locales/id.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/id.json b/locales/id.json index 4e4d4d35..a7a9b22f 100644 --- a/locales/id.json +++ b/locales/id.json @@ -3,7 +3,7 @@ "authentication_required": "Autentikasi dibutuhkan", "deprecated_command": "'{prog} {command}' sudah usang dan akan dihapus nanti", "logged_out": "Berhasil keluar", - "password": "Kata Sandi", + "password": "Kata sandi", "deprecated_command_alias": "'{prog} {old}' sudah usang dan akan dihapus nanti, gunakan '{prog} {new}'", "info": "Informasi:", "instance_already_running": "Sudah ada tindakan YunoHost yang sedang berjalan. Tunggu itu selesai sebelum menjalankan yang lain.", From f6234577c4731f21b02450887c6e0a6642614371 Mon Sep 17 00:00:00 2001 From: Neko Nekowazarashi Date: Mon, 27 Mar 2023 00:29:51 +0000 Subject: [PATCH 04/90] Translated using Weblate (Indonesian) Currently translated at 95.5% (43 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/id/ --- locales/id.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/locales/id.json b/locales/id.json index a7a9b22f..5e603fe3 100644 --- a/locales/id.json +++ b/locales/id.json @@ -3,7 +3,7 @@ "authentication_required": "Autentikasi dibutuhkan", "deprecated_command": "'{prog} {command}' sudah usang dan akan dihapus nanti", "logged_out": "Berhasil keluar", - "password": "Kata sandi", + "password": "Kata Sandi", "deprecated_command_alias": "'{prog} {old}' sudah usang dan akan dihapus nanti, gunakan '{prog} {new}'", "info": "Informasi:", "instance_already_running": "Sudah ada tindakan YunoHost yang sedang berjalan. Tunggu itu selesai sebelum menjalankan yang lain.", @@ -23,7 +23,7 @@ "cannot_write_file": "Tidak dapat menyimpan berkas {file} (alasan: {error})", "unknown_error_reading_file": "Galat yang tidak diketahui ketika membaca berkas {file} (alasan: {error})", "invalid_url": "Gagal terhubung dengan {url} ... mungkin layanan tersebut sedang tidak berjalan atau Anda tidak terhubung ke internet di IPv4/IPv6.", - "download_timeout": "{url} memakan waktu yang terlalu lama untuk menjawab, menyerah.", + "download_timeout": "{url} memakan waktu yang lama untuk menjawab, menyerah.", "download_unknown_error": "Galat ketika mengunduh data dari {url}: {error}", "download_bad_status_code": "{url} menjawab dengan kode status {code}", "confirm": "Konfirmasi {prompt}", @@ -39,5 +39,8 @@ "error_changing_file_permissions": "Galat ketika mengubah izin untuk {path}: {error}", "download_ssl_error": "Galat SSL ketika menghubungi {url}", "pattern_not_match": "Tidak cocok dengan pola", - "root_required": "Anda harus berada di root untuk melakukan tindakan ini" + "root_required": "Anda harus berada di root untuk melakukan tindakan ini", + "corrupted_yaml": "Pembacaan rusak untuk YAML {ressource} (alasan: {error})", + "corrupted_toml": "Pembacaan rusak untuk TOML {ressource} (alasan: {error})", + "corrupted_json": "Pembacaan rusak untuk JSON {ressource} (alasan: {error})" } From 9078c881ea6989355898e5e738f9ae080bd7cfc6 Mon Sep 17 00:00:00 2001 From: Neko Nekowazarashi Date: Tue, 25 Apr 2023 08:15:12 +0000 Subject: [PATCH 05/90] Translated using Weblate (Indonesian) Currently translated at 95.5% (43 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/id/ --- locales/id.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/id.json b/locales/id.json index 5e603fe3..dfd66b6b 100644 --- a/locales/id.json +++ b/locales/id.json @@ -3,7 +3,7 @@ "authentication_required": "Autentikasi dibutuhkan", "deprecated_command": "'{prog} {command}' sudah usang dan akan dihapus nanti", "logged_out": "Berhasil keluar", - "password": "Kata Sandi", + "password": "Kata sandi", "deprecated_command_alias": "'{prog} {old}' sudah usang dan akan dihapus nanti, gunakan '{prog} {new}'", "info": "Informasi:", "instance_already_running": "Sudah ada tindakan YunoHost yang sedang berjalan. Tunggu itu selesai sebelum menjalankan yang lain.", From c06e1a91c9911935b51a53b9389089272c3697b5 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 10 Jul 2023 21:28:54 +0200 Subject: [PATCH 06/90] auth: prevent stupid issue where outdated cookie usage would trigger error 500 intead of 401, resulting in a ~bug after Yunohost self-upgrade and the webadmin is confused about the API not being up again --- moulinette/interfaces/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 14ba0b54..34b51143 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -388,7 +388,7 @@ class _ActionsMapPlugin: try: authenticator.get_session_cookie() - except KeyError: + except Exception: raise HTTPResponse(m18n.g("not_logged_in"), 401) else: # Delete cookie and clean the session From 0c71095db3d41a29e817509b8c1616bed5a2147d Mon Sep 17 00:00:00 2001 From: Weblate Date: Sun, 9 Jul 2023 04:32:55 +0200 Subject: [PATCH 07/90] Added translation using Weblate (Japanese) --- locales/ja.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 locales/ja.json diff --git a/locales/ja.json b/locales/ja.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/locales/ja.json @@ -0,0 +1 @@ +{} From 145fd9a91ac7baeb2bdc5b0e3900aacfc47f915e Mon Sep 17 00:00:00 2001 From: motcha Date: Sun, 9 Jul 2023 05:54:49 +0000 Subject: [PATCH 08/90] Translated using Weblate (Japanese) Currently translated at 4.4% (2 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ja/ --- locales/ja.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/locales/ja.json b/locales/ja.json index 0967ef42..fcda4d88 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -1 +1,4 @@ -{} +{ + "logged_out": "ログアウトしました", + "password": "パスワード" +} From e5fa7ab73449215bd0c6b5b7609a20d954df074f Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 10 Jul 2023 21:34:12 +0200 Subject: [PATCH 09/90] Update changelog for 11.1.5 --- debian/changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/debian/changelog b/debian/changelog index a1d37106..09b957fb 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +moulinette (11.1.5) stable; urgency=low + + - setup.py: fix version specifier in python_requires, python tooling not happy with * i guess (2373a7fa) + - auth: prevent stupid issue where outdated cookie usage would trigger error 500 intead of 401, resulting in a ~bug after Yunohost self-upgrade and the webadmin is confused about the API not being up again (c06e1a91) + - i18n: Translations updated for Chinese (Simplified), Indonesian, Japanese + + Thanks to all contributors <3 ! (liimee, motcha, Neko Nekowazarashi, Poesty Li) + + -- Alexandre Aubin Mon, 10 Jul 2023 21:32:20 +0200 + moulinette (11.1.4) stable; urgency=low - Releasing as stable From 64a39cc595819788090d3aee41ed6e54d710fb0f Mon Sep 17 00:00:00 2001 From: motcha Date: Tue, 11 Jul 2023 14:37:28 +0000 Subject: [PATCH 10/90] Translated using Weblate (Japanese) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ja/ --- locales/ja.json | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/locales/ja.json b/locales/ja.json index fcda4d88..e55d18c3 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -1,4 +1,47 @@ { "logged_out": "ログアウトしました", - "password": "パスワード" + "password": "パスワード", + "argument_required": "引数 '{argument}' が必要です", + "authentication_required": "認証が必要", + "confirm": "{prompt}の確認", + "deprecated_command": "'{prog} {command}' は非推奨であり、将来削除される予定です", + "deprecated_command_alias": "'{prog} {old}' は非推奨であり、今後削除される予定です。代わりに '{prog} {new}' を使用してください", + "edit_text_question": "{}.このテキストを編集しますか?[yN]: ", + "error": "エラー:", + "info": "インフォメーション:", + "download_unknown_error": "{url}からデータをダウンロードする際のエラー:{error}", + "download_bad_status_code": "{url}は状態コード {code} を返しました", + "warn_the_user_about_waiting_lock": "別のYunoHostコマンドが現在実行されているため、完了するのを待っています", + "warn_the_user_about_waiting_lock_again": "まだ待っています...", + "warn_the_user_that_lock_is_acquired": "他のコマンドが完了しました。このコマンドが開始されました", + "file_not_exist": "ファイルが存在しません: '{path}'", + "folder_exists": "フォルダは既に存在します: '{path}'", + "instance_already_running": "YunoHost 操作が既に実行されています。他の操作が完了するのを待ってください。", + "invalid_argument": "無効な引数 '{argument}': {error}", + "invalid_usage": "無効な使用法です。--help を渡してヘルプを表示します", + "logged_in": "ログイン済み", + "not_logged_in": "ログインしていません", + "operation_interrupted": "操作が中断されました", + "pattern_not_match": "パターンと一致しない", + "root_required": "このアクションを実行するには、rootである必要があります", + "server_already_running": "サーバーはそのポートで既に実行されています", + "success": "成功!", + "unable_authenticate": "認証できません", + "unknown_group": "不明な '{group}' グループ", + "unknown_user": "不明な '{user}' ユーザー", + "values_mismatch": "値が一致しない", + "warning": "警告:", + "websocket_request_expected": "WebSocket 要求が必要です", + "cannot_open_file": "ファイル{file}を開けませんでした(理由:{error})", + "cannot_write_file": "ファイル {file}を書き込めませんでした (理由: {error})", + "unknown_error_reading_file": "ファイル{file}を読み取ろうとしているときに不明なエラーが発生しました(理由:{error})", + "corrupted_json": "{ressource}から読み取られたJSONは破損していました(理由:{error})", + "corrupted_yaml": "破損した YAML が{ressource}から読み取られました (理由: {error})", + "corrupted_toml": "破損した TOML が{ressource}から読み取られました (理由: {error})", + "error_writing_file": "ファイル{file}書き込み時のエラー:{error}", + "error_removing": "{path}を削除するときのエラー:{error}", + "error_changing_file_permissions": "{path}のアクセス許可変更時のエラー: {error}", + "invalid_url": "{url}に接続できませんでした...サービスがダウンしているか、IPv4 / IPv6でインターネットに正しく接続されていない可能性があります。", + "download_ssl_error": "{url}への接続時のSSLエラー", + "download_timeout": "{url}は応答に時間がかかりすぎたため、あきらめました。" } From 34a2a660272c4501d96276acc2b19e4251b3f87f Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Fri, 14 Jul 2023 19:09:00 +0200 Subject: [PATCH 11/90] Fix boring login API expecting a weird form/multiparam thing instead of classic JSON for credentials ... --- moulinette/interfaces/api.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 34b51143..bf3b0c7f 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -353,11 +353,18 @@ class _ActionsMapPlugin: """ - if "credentials" not in request.params: - raise HTTPResponse("Missing credentials parameter", 400) - credentials = request.params["credentials"] + if request.get_header("Content-Type") == "application/json": + if "credentials" not in request.json: + raise HTTPResponse("Missing credentials parameter", 400) + credentials = request.json["credentials"] + profile = request.json.get("profile", self.actionsmap.default_authentication) + else: + if "credentials" not in request.params: + raise HTTPResponse("Missing credentials parameter", 400) + credentials = request.params["credentials"] + + profile = request.params.get("profile", self.actionsmap.default_authentication) - profile = request.params.get("profile", self.actionsmap.default_authentication) authenticator = self.actionsmap.get_authenticator(profile) try: @@ -732,7 +739,7 @@ class Interface: def wrapper(*args, **kwargs): try: locale = request.params.pop("locale") - except KeyError: + except (KeyError, ValueError): locale = m18n.default_locale m18n.set_locale(locale) return callback(*args, **kwargs) From b4e79bd2784a6188563be974a9cc730ac6fba730 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 17 Jul 2023 16:33:14 +0200 Subject: [PATCH 12/90] Update changelog for 11.2 --- debian/changelog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/changelog b/debian/changelog index 09b957fb..9b60f354 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +moulinette (11.2) stable; urgency=low + + - [i18n] Translations updated for Japanese + + Thanks to all contributors <3 ! (motcha) + + -- Alexandre Aubin Mon, 17 Jul 2023 16:32:34 +0200 + moulinette (11.1.5) stable; urgency=low - setup.py: fix version specifier in python_requires, python tooling not happy with * i guess (2373a7fa) From 0f056d66d7572eb070a0ebf5be591503b9dbacd5 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Tue, 18 Jul 2023 00:20:24 +0200 Subject: [PATCH 13/90] Moulinette logging is an unecessarily complex mess, episode 57682 --- moulinette/actionsmap.py | 19 +------- moulinette/interfaces/__init__.py | 3 +- moulinette/interfaces/cli.py | 22 ++++----- moulinette/utils/log.py | 81 ++----------------------------- 4 files changed, 16 insertions(+), 109 deletions(-) diff --git a/moulinette/actionsmap.py b/moulinette/actionsmap.py index e5e9547b..c213ab2e 100644 --- a/moulinette/actionsmap.py +++ b/moulinette/actionsmap.py @@ -19,7 +19,6 @@ from moulinette.core import ( MoulinetteValidationError, ) from moulinette.interfaces import BaseActionsMapParser -from moulinette.utils.log import start_action_logging from moulinette.utils.filesystem import read_yaml logger = logging.getLogger("moulinette.actionsmap") @@ -398,8 +397,6 @@ class ActionsMap: self.from_cache = False - logger.debug("loading actions map") - actionsmap_yml_dir = os.path.dirname(actionsmap_yml) actionsmap_yml_file = os.path.basename(actionsmap_yml) actionsmap_yml_stat = os.stat(actionsmap_yml) @@ -562,17 +559,7 @@ class ActionsMap: logger.exception(error_message) raise MoulinetteError(error_message, raw_msg=True) else: - log_id = start_action_logging() - if logger.isEnabledFor(logging.DEBUG): - # Log arguments in debug mode only for safety reasons - logger.debug( - "processing action [%s]: %s with args=%s", - log_id, - full_action_name, - arguments, - ) - else: - logger.debug("processing action [%s]: %s", log_id, full_action_name) + logger.debug("processing action '%s'", full_action_name) # Load translation and process the action start = time() @@ -580,7 +567,7 @@ class ActionsMap: return func(**arguments) finally: stop = time() - logger.debug("action [%s] executed in %.3fs", log_id, stop - start) + logger.debug("action executed in %.3fs", stop - start) # Private methods @@ -598,7 +585,6 @@ class ActionsMap: """ - logger.debug("building parser...") start = time() interface_type = top_parser.interface @@ -717,5 +703,4 @@ class ActionsMap: else: action_parser.want_to_take_lock = True - logger.debug("building parser took %.3fs", time() - start) return top_parser diff --git a/moulinette/interfaces/__init__.py b/moulinette/interfaces/__init__.py index 54776552..73d75f1e 100644 --- a/moulinette/interfaces/__init__.py +++ b/moulinette/interfaces/__init__.py @@ -33,8 +33,7 @@ class BaseActionsMapParser: """ def __init__(self, parent=None, **kwargs): - if not parent: - logger.debug("initializing base actions map parser for %s", self.interface) + pass # Virtual properties # Each parser classes must implement these properties. diff --git a/moulinette/interfaces/cli.py b/moulinette/interfaces/cli.py index 84e72185..f1005558 100644 --- a/moulinette/interfaces/cli.py +++ b/moulinette/interfaces/cli.py @@ -235,28 +235,26 @@ class TTYHandler(logging.StreamHandler): log.CRITICAL: "red", } - def __init__(self, message_key="fmessage"): + def __init__(self, message_key="message_with_color"): logging.StreamHandler.__init__(self) self.message_key = message_key def format(self, record): """Enhance message with level and colors if supported.""" msg = record.getMessage() + level = record.levelname + level_with_color = level if self.supports_color(): - level = "" - if self.level <= log.DEBUG: - # add level name before message - level = "%s " % record.levelname - elif record.levelname in ["SUCCESS", "WARNING", "ERROR", "INFO"]: - # add translated level name before message - level = "%s " % m18n.g(record.levelname.lower()) + if self.level > log.DEBUG and record.levelname in ["SUCCESS", "WARNING", "ERROR", "INFO"]: + level = m18n.g(record.levelname.lower()) color = self.LEVELS_COLOR.get(record.levelno, "white") - msg = "{}{}{}{}".format(colors_codes[color], level, END_CLI_COLOR, msg) + level_with_color = f"{colors_codes[color]}{level}{END_CLI_COLOR}" + if self.level == log.DEBUG: + level_with_color = level_with_color + " " * max(0, 7 - len(level)) if self.formatter: - # use user-defined formatter - record.__dict__[self.message_key] = msg + record.__dict__["level_with_color"] = level_with_color return self.formatter.format(record) - return msg + return level_with_color + " " + msg def emit(self, record): # set proper stream first diff --git a/moulinette/utils/log.py b/moulinette/utils/log.py index 02f8a30a..3d010726 100644 --- a/moulinette/utils/log.py +++ b/moulinette/utils/log.py @@ -110,89 +110,14 @@ class MoulinetteLogger(Logger): f = currentframe() if f is not None: f = f.f_back - rv = "(unknown file)", 0, "(unknown function)" + rv = "(unknown file)", 0, "(unknown function)", None while hasattr(f, "f_code"): co = f.f_code filename = os.path.normcase(co.co_filename) if filename == _srcfile or filename == __file__: f = f.f_back continue - rv = (co.co_filename, f.f_lineno, co.co_name) + rv = (co.co_filename, f.f_lineno, co.co_name, None) break + return rv - - def _log(self, *args, **kwargs): - """Append action_id if available to the extra.""" - if self.action_id is not None: - extra = kwargs.get("extra", {}) - if "action_id" not in extra: - # FIXME: Get real action_id instead of logger/current one - extra["action_id"] = _get_action_id() - kwargs["extra"] = extra - return super()._log(*args, **kwargs) - - -# Action logging ------------------------------------------------------- - -pid = os.getpid() -action_id = 0 - - -def _get_action_id(): - return "%d.%d" % (pid, action_id) - - -def start_action_logging(): - """Configure logging for a new action - - Returns: - The new action id - - """ - global action_id - action_id += 1 - - return _get_action_id() - - -def getActionLogger(name=None, logger=None, action_id=None): - """Get the logger adapter for an action - - Return a logger for the specified name - or use given logger - and - optionally for a given action id, retrieving it if necessary. - - Either a name or a logger must be specified. - - """ - if not name and not logger: - raise ValueError("Either a name or a logger must be specified") - - logger = logger or getLogger(name) - logger.action_id = action_id if action_id else _get_action_id() - return logger - - -class ActionFilter: - - """Extend log record for an optionnal action - - Filter a given record and look for an `action_id` key. If it is not found - and `strict` is True, the record will not be logged. Otherwise, the key - specified by `message_key` will be added to the record, containing the - message formatted for the action or just the original one. - - """ - - def __init__(self, message_key="fmessage", strict=False): - self.message_key = message_key - self.strict = strict - - def filter(self, record): - msg = record.getMessage() - action_id = record.__dict__.get("action_id", None) - if action_id is not None: - msg = "[{:s}] {:s}".format(action_id, msg) - elif self.strict: - return False - record.__dict__[self.message_key] = msg - return True From 4104704a87b97daa96985c1c48c3f6d6f29131c9 Mon Sep 17 00:00:00 2001 From: axolotle Date: Fri, 28 Jul 2023 17:17:51 +0200 Subject: [PATCH 14/90] allow json requests --- moulinette/interfaces/api.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index bf3b0c7f..c0e18be8 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -312,6 +312,9 @@ class _ActionsMapPlugin: return value def wrapper(*args, **kwargs): + if request.get_header("Content-Type") == "application/json": + return callback((request.method, context.rule), request.json) + params = kwargs # Format boolean params for a in args: From 328107c94699074cd00692451fd55589c96f16f2 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 29 Jul 2023 19:09:52 +0200 Subject: [PATCH 15/90] api: Add a proper mechanism to allow specific, configurable CORS origins --- moulinette/__init__.py | 3 ++- moulinette/interfaces/api.py | 27 +++++++++++++++++++++------ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/moulinette/__init__.py b/moulinette/__init__.py index 6df5abef..92b7e691 100755 --- a/moulinette/__init__.py +++ b/moulinette/__init__.py @@ -53,7 +53,7 @@ class Moulinette: # Easy access to interfaces -def api(host="localhost", port=80, routes={}, actionsmap=None, locales_dir=None): +def api(host="localhost", port=80, routes={}, actionsmap=None, locales_dir=None, allowed_cors_origins=[]): """Web server (API) interface Run a HTTP server with the moulinette for an API usage. @@ -73,6 +73,7 @@ def api(host="localhost", port=80, routes={}, actionsmap=None, locales_dir=None) Api( routes=routes, actionsmap=actionsmap, + allowed_cors_origins=allowed_cors_origins, ).run(host, port) except MoulinetteError as e: import logging diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index c0e18be8..32383977 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -717,9 +717,11 @@ class Interface: type = "api" - def __init__(self, routes={}, actionsmap=None): + def __init__(self, routes={}, actionsmap=None, allowed_cors_origins=[]): actionsmap = ActionsMap(actionsmap, ActionsMapParser()) + self.allowed_cors_origins = allowed_cors_origins + # Attempt to retrieve log queues from an APIQueueHandler handler = log.getHandlersByClass(APIQueueHandler, limit=1) if handler: @@ -729,11 +731,18 @@ class Interface: # TODO: Return OK to 'OPTIONS' xhr requests (l173) app = Bottle(autojson=True) - # Wrapper which sets proper header - def apiheader(callback): + def cors(callback): def wrapper(*args, **kwargs): - response.set_header("Access-Control-Allow-Origin", "*") - return callback(*args, **kwargs) + r = callback(*args, **kwargs) + origin = request.headers.environ.get("HTTP_ORIGIN", "") + if origin and origin in self.allowed_cors_origins: + resp = r if isinstance(r, HTTPResponse) else response + resp.headers['Access-Control-Allow-Origin'] = origin + resp.headers['Access-Control-Allow-Methods'] = 'GET, HEAD, POST, PUT, OPTIONS, DELETE' + resp.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token' + resp.headers['Access-Control-Allow-Credentials'] = 'true' + + return r return wrapper @@ -751,7 +760,7 @@ class Interface: # Install plugins app.install(filter_csrf) - app.install(apiheader) + app.install(cors) app.install(api18n) actionsmapplugin = _ActionsMapPlugin(actionsmap, log_queues) app.install(actionsmapplugin) @@ -760,6 +769,12 @@ class Interface: self.display = actionsmapplugin.display self.prompt = actionsmapplugin.prompt + def handle_options(): + return HTTPResponse("", 204) + + app.route('/<:re:.*>', method="OPTIONS", + callback=handle_options, skip=["actionsmap"]) + # Append additional routes # TODO: Add optional authentication to those routes? for (m, p), c in routes.items(): From a6c7e55d1dcfc26c94cc97713b270037d236b30a Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Sat, 29 Jul 2023 19:10:47 +0200 Subject: [PATCH 16/90] api: fix authentication failure not deleting expired cookies --- moulinette/interfaces/api.py | 1 + 1 file changed, 1 insertion(+) diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 32383977..ac632ec0 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -387,6 +387,7 @@ class _ActionsMapPlugin: try: session_infos = authenticator.get_session_cookie() except Exception: + authenticator.delete_session_cookie() msg = m18n.g("authentication_required") raise HTTPResponse(msg, 401) From 2696e811cef26f2249d33f8b7fc864a1a579ef92 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:02:41 +0200 Subject: [PATCH 17/90] quality: make linter gods happy --- moulinette/actionsmap.py | 2 -- moulinette/utils/log.py | 1 - 2 files changed, 3 deletions(-) diff --git a/moulinette/actionsmap.py b/moulinette/actionsmap.py index c213ab2e..a0f60a13 100644 --- a/moulinette/actionsmap.py +++ b/moulinette/actionsmap.py @@ -585,8 +585,6 @@ class ActionsMap: """ - start = time() - interface_type = top_parser.interface # If loading from cache, extra were already checked when cache was diff --git a/moulinette/utils/log.py b/moulinette/utils/log.py index 3d010726..be7eb6f3 100644 --- a/moulinette/utils/log.py +++ b/moulinette/utils/log.py @@ -6,7 +6,6 @@ from logging import ( addLevelName, setLoggerClass, Logger, - getLogger, NOTSET, # noqa DEBUG, INFO, From 7210b66fbad4ed47b7e61380d87fbc3d3c8682e6 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:04:15 +0200 Subject: [PATCH 18/90] quality: update tox.ini, bookworm has python 3.11 --- tox.ini | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/tox.ini b/tox.ini index ff656a7b..837dd19e 100644 --- a/tox.ini +++ b/tox.ini @@ -1,6 +1,6 @@ [tox] envlist = - py{37,39}-{pytest,lint,invalidcode,mypy} + py311-{pytest,lint,invalidcode,mypy} format format-check docs @@ -11,20 +11,19 @@ usedevelop = True passenv = * extras = tests deps = - py{37,39}-pytest: .[tests] - py{37,39}-lint: flake8 - py{37,39}-invalidcode: flake8 - py{37,39}-mypy: mypy >= 0.761 + py311-pytest: .[tests] + py311-lint: flake8 + py311-invalidcode: flake8 + py311-mypy: mypy >= 0.761 commands = - py{37,39}-pytest: pytest {posargs} -c pytest.ini - py{37,39}-lint: flake8 moulinette test - py{37,39}-invalidcode: flake8 moulinette test --select F - py{37,39}-mypy: mypy --ignore-missing-imports --install-types --non-interactive moulinette/ + py311-pytest: pytest {posargs} -c pytest.ini + py311-lint: flake8 moulinette test + py311-invalidcode: flake8 moulinette test --select F + py311-mypy: mypy --ignore-missing-imports --install-types --non-interactive moulinette/ [gh-actions] python = - 3.7: py37 - 3.9: py39 + 3.11: py311 [testenv:format] basepython = python3 From 37331cb1d6ed83463d66f5bb43e92a6420c961b5 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:06:34 +0200 Subject: [PATCH 19/90] quality: fix test/conftest.py, there's no ActionFilter anymore --- test/conftest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/conftest.py b/test/conftest.py index 50b73580..c211e81b 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -46,7 +46,7 @@ def logging_configuration(moulinette): "format": "%(asctime)-15s %(levelname)-8s %(name)s %(funcName)s - %(fmessage)s" # noqa }, }, - "filters": {"action": {"()": "moulinette.utils.log.ActionFilter"}}, + "filters": {}, "handlers": { "api": { "level": level, From fc1eef2d928861823578e1ad1533a8434318b592 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:08:38 +0200 Subject: [PATCH 20/90] quality: we're in python 3.11 bruh --- .github/workflows/tox.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 2c4cf7f5..1f53d1eb 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.9] + python-version: [3.11] steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} @@ -26,7 +26,7 @@ jobs: python -m pip install --upgrade pip pip install tox tox-gh-actions - name: Test with tox - run: tox -e py39-pytest + run: tox -e py311-pytest invalidcode: runs-on: ubuntu-latest @@ -44,6 +44,6 @@ jobs: python -m pip install --upgrade pip pip install tox tox-gh-actions - name: Linter - run: tox -e py39-invalidcode + run: tox -e py311-invalidcode - name: Mypy - run: tox -e py39-mypy + run: tox -e py311-mypy From 8c28a573e2e86185aa694504e9d7feedeb8298fa Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:09:48 +0200 Subject: [PATCH 21/90] =?UTF-8?q?quality:=20we're=20in=20python=203.11=20b?= =?UTF-8?q?ruh=C2=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/tox.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 1f53d1eb..d06d7c48 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [3.9] + python-version: [3.11] steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} From bd9736efc1f59dc04f10614bfd972eb8d0801a6f Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:11:16 +0200 Subject: [PATCH 22/90] =?UTF-8?q?quality:=20we're=20in=20python=203.11=20b?= =?UTF-8?q?ruh=C2=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 435d43f6..9cb279ca 100755 --- a/setup.py +++ b/setup.py @@ -60,7 +60,7 @@ setup( license="AGPL", packages=find_packages(exclude=["test"]), data_files=[("/usr/share/moulinette/locales", locale_files)], - python_requires=">=3.7.0,<3.10", + python_requires=">=3.11.0,<3.12", install_requires=install_deps, tests_require=test_deps, extras_require=extras, From f562a9b333799c2889d316522a86b2cd661f02f8 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:15:57 +0200 Subject: [PATCH 23/90] fix old logger mechanism remants --- moulinette/interfaces/api.py | 2 +- moulinette/interfaces/cli.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index ac632ec0..9c17ca17 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -30,7 +30,7 @@ from moulinette.interfaces import ( ) from moulinette.utils import log -logger = log.getLogger("moulinette.interface.api") +logger = logging.getLogger("moulinette.interface.api") # API helpers ---------------------------------------------------------- diff --git a/moulinette/interfaces/cli.py b/moulinette/interfaces/cli.py index f1005558..010f3346 100644 --- a/moulinette/interfaces/cli.py +++ b/moulinette/interfaces/cli.py @@ -50,7 +50,7 @@ def monkey_get_action_name(argument): argparse._get_action_name = monkey_get_action_name -logger = log.getLogger("moulinette.cli") +logger = logging.getLogger("moulinette.cli") # CLI helpers ---------------------------------------------------------- From 20d3b82340ee4f1705f87a2cd5a68a6b38b26add Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Wed, 27 Sep 2023 20:23:11 +0200 Subject: [PATCH 24/90] fix test ... apparently the API now returns 405 when no action is specified, I guess that's okay --- test/test_auth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_auth.py b/test/test_auth.py index 1f557329..033901a2 100644 --- a/test/test_auth.py +++ b/test/test_auth.py @@ -180,7 +180,7 @@ class TestAuthAPI: def test_request_arg_without_action(self, moulinette_webapi, caplog, mocker): self.login(moulinette_webapi) - moulinette_webapi.get("/test-auth", status=404) + moulinette_webapi.get("/test-auth", status=405) class TestAuthCLI: From ed0cd88da930d68bf60cdfe67813977bc0afcb09 Mon Sep 17 00:00:00 2001 From: Metin Bektas <30674934+methbkts@users.noreply.github.com> Date: Tue, 31 Oct 2023 10:51:49 +0100 Subject: [PATCH 25/90] chore: update actions version to use node 16 version --- .github/workflows/autoblack.yml | 2 +- .github/workflows/i18n.yml | 2 +- .github/workflows/tox.yml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml index 35380607..81c441bf 100644 --- a/.github/workflows/autoblack.yml +++ b/.github/workflows/autoblack.yml @@ -8,7 +8,7 @@ jobs: name: Check / auto apply black runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Check files using the black formatter uses: rickstaa/action-black@v1 id: action_black diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index 1bbedb57..baa9a1f0 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -8,7 +8,7 @@ jobs: name: Autoreformat locale files runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Apply reformating scripts id: action_reformat run: | diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 2c4cf7f5..e50de2aa 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -14,9 +14,9 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Install apt dependencies @@ -34,9 +34,9 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Install tox From 924fd7825e3e43d53daeb7c33e7ff1d7816bc223 Mon Sep 17 00:00:00 2001 From: axolotle Date: Wed, 8 Nov 2023 19:11:18 +0100 Subject: [PATCH 26/90] cors: fix some http response error not being catched by cors decorator --- moulinette/interfaces/api.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 9c17ca17..20c9ec11 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -734,7 +734,11 @@ class Interface: def cors(callback): def wrapper(*args, **kwargs): - r = callback(*args, **kwargs) + try: + r = callback(*args, **kwargs) + except HTTPResponse as e: + r = e + origin = request.headers.environ.get("HTTP_ORIGIN", "") if origin and origin in self.allowed_cors_origins: resp = r if isinstance(r, HTTPResponse) else response From d53dfc29970b4fc0728984911a9395b20f2fccb5 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 13 Nov 2023 15:35:49 +0100 Subject: [PATCH 27/90] debug: print stacktrace to stderr upon 500 errors, because otherwise APIs are hell to debug ~_~ --- moulinette/interfaces/api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 20c9ec11..3a3450be 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- - +import sys import re import errno import logging @@ -471,6 +471,7 @@ class _ActionsMapPlugin: tb = traceback.format_exc() logs = {"route": _route, "arguments": arguments, "traceback": tb} + print(tb, file=sys.stderr) return HTTPResponse(json_encode(logs), 500) else: return format_for_response(ret) From 976aac0d052796b2bbb0ab213b204d6bf96ed08f Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 27 Nov 2023 15:55:45 +0100 Subject: [PATCH 28/90] Do not log about loading auth module, it creates tricky issue when manually launching yunohost APIs to debug them --- moulinette/actionsmap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moulinette/actionsmap.py b/moulinette/actionsmap.py index a0f60a13..fc93ed9f 100644 --- a/moulinette/actionsmap.py +++ b/moulinette/actionsmap.py @@ -464,7 +464,7 @@ class ActionsMap: # Load and initialize the authenticator module auth_module = f"{self.namespace}.authenticators.{auth_method}" - logger.debug(f"Loading auth module {auth_module}") + #logger.debug(f"Loading auth module {auth_module}") try: mod = import_module(auth_module) except ImportError as e: From cfb840c5ccb8417494fb4d9556b59068abf4150e Mon Sep 17 00:00:00 2001 From: Alexandre Aubin Date: Mon, 27 Nov 2023 15:56:52 +0100 Subject: [PATCH 29/90] perf: in call_async_output: only wait for 0.1 sec, should speed up things significantly for stuff that calls a lot of hooks... --- moulinette/utils/process.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/moulinette/utils/process.py b/moulinette/utils/process.py index 99945428..d015f8c9 100644 --- a/moulinette/utils/process.py +++ b/moulinette/utils/process.py @@ -82,7 +82,7 @@ def call_async_output(args, callback, **kwargs): while p.poll() is None: while True: try: - callback, message = log_queue.get(True, 1) + callback, message = log_queue.get(True, 0.1) except queue.Empty: break From a69b276188ce90286fd808f6fe955c987641a2e2 Mon Sep 17 00:00:00 2001 From: Weblate Date: Thu, 25 Jan 2024 13:39:25 +0100 Subject: [PATCH 30/90] Added translation using Weblate (Korean) --- locales/ko.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 locales/ko.json diff --git a/locales/ko.json b/locales/ko.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/locales/ko.json @@ -0,0 +1 @@ +{} From 1d3908c9a5cf25df755ec0dc913b074ea35c1abd Mon Sep 17 00:00:00 2001 From: Francescc Date: Mon, 29 Jan 2024 01:16:53 +0000 Subject: [PATCH 31/90] Translated using Weblate (Catalan) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ca/ --- locales/ca.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/locales/ca.json b/locales/ca.json index d3afdcad..95c02168 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -1,5 +1,5 @@ { - "argument_required": "Es requereix l'argument {argument}", + "argument_required": "Es requereix l'argument «{argument}»", "authentication_required": "Es requereix autenticació", "confirm": "Confirmar{prompt}", "deprecated_command": "{prog}{command}és obsolet i es desinstal·larà en el futur", @@ -42,5 +42,6 @@ "corrupted_toml": "El fitxer TOML ha estat corromput en la lectura des de {ressource} (motiu: {error})", "warn_the_user_about_waiting_lock": "Hi ha una altra ordre de YunoHost en execució, s'executarà aquesta ordre un cop l'anterior hagi acabat", "warn_the_user_about_waiting_lock_again": "Encara en espera…", - "warn_the_user_that_lock_is_acquired": "L'altra ordre tot just ha acabat, ara s'executarà aquesta ordre" -} \ No newline at end of file + "warn_the_user_that_lock_is_acquired": "L'altra ordre tot just ha acabat, ara s'executarà aquesta ordre", + "edit_text_question": "{}. Edita aquest text ? [yN]: " +} From ecdc43a09a9641a2e08872fa8bdc5eaa1495fab0 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sun, 25 Feb 2024 07:13:47 +0100 Subject: [PATCH 32/90] chores: update actions to nodejs 20 --- .github/workflows/autoblack.yml | 8 ++++---- .github/workflows/i18n.yml | 4 ++-- .github/workflows/tox.yml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml index 81c441bf..d0ef3531 100644 --- a/.github/workflows/autoblack.yml +++ b/.github/workflows/autoblack.yml @@ -8,16 +8,16 @@ jobs: name: Check / auto apply black runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check files using the black formatter - uses: rickstaa/action-black@v1 - id: action_black + uses: psf/black@v24 + id: black with: black_args: "." continue-on-error: true - name: Create Pull Request if: steps.action_black.outputs.is_formatted == 'true' - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} title: "Format Python code with Black" diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index baa9a1f0..76735e29 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -8,7 +8,7 @@ jobs: name: Autoreformat locale files runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Apply reformating scripts id: action_reformat run: | @@ -18,7 +18,7 @@ jobs: git diff -w --exit-code - name: Create Pull Request if: ${{ failure() }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} title: "Reformat locale files" diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index e50de2aa..d89788ef 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -14,7 +14,7 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 with: @@ -34,9 +34,9 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install tox From d0089dbdf975d236dbded3ea1fc9fadef0a32342 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sun, 25 Feb 2024 07:18:12 +0100 Subject: [PATCH 33/90] revert x___x --- .github/workflows/autoblack.yml | 8 ++++---- .github/workflows/i18n.yml | 4 ++-- .github/workflows/tox.yml | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml index d0ef3531..81c441bf 100644 --- a/.github/workflows/autoblack.yml +++ b/.github/workflows/autoblack.yml @@ -8,16 +8,16 @@ jobs: name: Check / auto apply black runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Check files using the black formatter - uses: psf/black@v24 - id: black + uses: rickstaa/action-black@v1 + id: action_black with: black_args: "." continue-on-error: true - name: Create Pull Request if: steps.action_black.outputs.is_formatted == 'true' - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v3 with: token: ${{ secrets.GITHUB_TOKEN }} title: "Format Python code with Black" diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index 76735e29..baa9a1f0 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -8,7 +8,7 @@ jobs: name: Autoreformat locale files runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Apply reformating scripts id: action_reformat run: | @@ -18,7 +18,7 @@ jobs: git diff -w --exit-code - name: Create Pull Request if: ${{ failure() }} - uses: peter-evans/create-pull-request@v6 + uses: peter-evans/create-pull-request@v3 with: token: ${{ secrets.GITHUB_TOKEN }} title: "Reformat locale files" diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index d89788ef..e50de2aa 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -14,7 +14,7 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 with: @@ -34,9 +34,9 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Install tox From 1b28bca0c04c8cf24885892a19a0799ca38b0fd0 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sun, 25 Feb 2024 07:22:16 +0100 Subject: [PATCH 34/90] chores: update actions to nodejs 20 Also replaces rickstaa/action-black by psf/black --- .github/workflows/autoblack.yml | 8 ++++---- .github/workflows/i18n.yml | 4 ++-- .github/workflows/tox.yml | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml index 81c441bf..d0ef3531 100644 --- a/.github/workflows/autoblack.yml +++ b/.github/workflows/autoblack.yml @@ -8,16 +8,16 @@ jobs: name: Check / auto apply black runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Check files using the black formatter - uses: rickstaa/action-black@v1 - id: action_black + uses: psf/black@v24 + id: black with: black_args: "." continue-on-error: true - name: Create Pull Request if: steps.action_black.outputs.is_formatted == 'true' - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} title: "Format Python code with Black" diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index baa9a1f0..76735e29 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -8,7 +8,7 @@ jobs: name: Autoreformat locale files runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Apply reformating scripts id: action_reformat run: | @@ -18,7 +18,7 @@ jobs: git diff -w --exit-code - name: Create Pull Request if: ${{ failure() }} - uses: peter-evans/create-pull-request@v3 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} title: "Reformat locale files" diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index e50de2aa..10c7e6ee 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -14,9 +14,9 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install apt dependencies @@ -34,9 +34,9 @@ jobs: matrix: python-version: [3.9] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: Install tox From 7a46e1499df9ecc810d9160b824dd28b7fedfda2 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sun, 25 Feb 2024 07:28:58 +0100 Subject: [PATCH 35/90] ci(autoblack): use the now available official psf/black github action --- .github/workflows/autoblack.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml index d0ef3531..87c3d722 100644 --- a/.github/workflows/autoblack.yml +++ b/.github/workflows/autoblack.yml @@ -10,13 +10,13 @@ jobs: steps: - uses: actions/checkout@v4 - name: Check files using the black formatter - uses: psf/black@v24 + uses: psf/black@stable id: black with: black_args: "." continue-on-error: true - name: Create Pull Request - if: steps.action_black.outputs.is_formatted == 'true' + if: steps.black.outputs.is_formatted == 'true' uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} From f1010fb8a368823d18b7f87da259342af004e6ad Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Thu, 7 Mar 2024 01:45:38 +0100 Subject: [PATCH 36/90] fix: port doc/ldif2dot-0.1.py to python3 for black --- doc/ldif2dot-0.1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ldif2dot-0.1.py b/doc/ldif2dot-0.1.py index 11165474..49baaaa1 100644 --- a/doc/ldif2dot-0.1.py +++ b/doc/ldif2dot-0.1.py @@ -200,4 +200,4 @@ if __name__ == '__main__': else: name = '' file = sys.stdin - print Converter().parse(file, name) + print(Converter().parse(file, name)) From d09e1a2fab8f91bfcf9272c32af8f174d61a8b57 Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Thu, 7 Mar 2024 01:48:23 +0100 Subject: [PATCH 37/90] ci(autoblack): Input 'black_args' has been deprecated with message: Input is deprecated. Use and instead. --- .github/workflows/autoblack.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml index 87c3d722..de552880 100644 --- a/.github/workflows/autoblack.yml +++ b/.github/workflows/autoblack.yml @@ -13,7 +13,7 @@ jobs: uses: psf/black@stable id: black with: - black_args: "." + options: "." continue-on-error: true - name: Create Pull Request if: steps.black.outputs.is_formatted == 'true' From 518e5ebb85629e90b45a3afdce14818e46af6cdc Mon Sep 17 00:00:00 2001 From: Laurent Peuch Date: Thu, 7 Mar 2024 02:27:53 +0100 Subject: [PATCH 38/90] ci(autoblacks): add step to check if black reformatted some code --- .github/workflows/autoblack.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/autoblack.yml b/.github/workflows/autoblack.yml index de552880..369f8882 100644 --- a/.github/workflows/autoblack.yml +++ b/.github/workflows/autoblack.yml @@ -15,8 +15,15 @@ jobs: with: options: "." continue-on-error: true + - shell: pwsh + id: check_files_changed + run: | + # Diff HEAD with the previous commit + $diff = git diff + $HasDiff = $diff.Length -gt 0 + Write-Host "::set-output name=files_changed::$HasDiff" - name: Create Pull Request - if: steps.black.outputs.is_formatted == 'true' + if: steps.check_files_changed.outputs.files_changed == 'true' uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.GITHUB_TOKEN }} From cadb44952855ce001b2882b563c138157db50086 Mon Sep 17 00:00:00 2001 From: Psycojoker <41827+Psycojoker@users.noreply.github.com> Date: Thu, 7 Mar 2024 01:36:30 +0000 Subject: [PATCH 39/90] :art: Format Python code with Black --- doc/ldif2dot-0.1.py | 40 ++++++++++++++++++----------- moulinette/actionsmap.py | 6 ----- moulinette/authentication.py | 1 - moulinette/core.py | 3 --- moulinette/interfaces/__init__.py | 3 --- moulinette/interfaces/api.py | 5 ---- moulinette/interfaces/cli.py | 3 --- moulinette/utils/log.py | 2 -- test/src/authenticators/dummy.py | 1 - test/src/authenticators/yoloswag.py | 1 - 10 files changed, 25 insertions(+), 40 deletions(-) diff --git a/doc/ldif2dot-0.1.py b/doc/ldif2dot-0.1.py index 49baaaa1..f492bebf 100644 --- a/doc/ldif2dot-0.1.py +++ b/doc/ldif2dot-0.1.py @@ -43,7 +43,7 @@ class Element: def __repr__(self): """Returns a basic state dump.""" - return 'Element' + str(self.index) + str(self.attributes) + return "Element" + str(self.index) + str(self.attributes) def add(self, line): """Adds a line of input to the object. @@ -57,10 +57,10 @@ class Element: """ def _valid(line): - return line and not line.startswith('#') + return line and not line.startswith("#") def _interesting(line): - return line != 'objectClass: top' + return line != "objectClass: top" if self.is_valid() and not _valid(line): return True @@ -70,11 +70,11 @@ class Element: def is_valid(self): """Indicates whether a valid entry has been read.""" - return len(self.attributes) != 0 and self.attributes[0].startswith('dn: ') + return len(self.attributes) != 0 and self.attributes[0].startswith("dn: ") def dn(self): """Returns the DN for this entry.""" - if self.attributes[0].startswith('dn: '): + if self.attributes[0].startswith("dn: "): return self.attributes[0][4:] else: return None @@ -86,12 +86,12 @@ class Element: Element objects) and returns a string which declares a DOT edge, or an empty string, if no parent was found. """ - dn_components = self.dn().split(',') + dn_components = self.dn().split(",") for i in range(1, len(dn_components) + 1): - parent = ','.join(dn_components[i:]) + parent = ",".join(dn_components[i:]) if parent in dnmap: - return ' n%d->n%d\n' % (dnmap[parent].index, self.index) - return '' + return " n%d->n%d\n" % (dnmap[parent].index, self.index) + return "" def dot(self, dnmap): """Returns a text representation of the node and perhaps its parent edge. @@ -99,6 +99,7 @@ class Element: Args: - dnmap: dictionary mapping dn names to Element objects """ + def _format(attributes): result = [TITLE_ENTRY_TEMPALTE % attributes[0]] @@ -107,7 +108,12 @@ class Element: return result - return TABLE_TEMPLATE % (self.index, '\n '.join(_format(self.attributes)), self.edge(dnmap)) + return TABLE_TEMPLATE % ( + self.index, + "\n ".join(_format(self.attributes)), + self.edge(dnmap), + ) + class Converter: """An LDIF to DOT converter.""" @@ -144,7 +150,11 @@ class Converter: e = Element() if e.is_valid(): self._append(e) - return (BASE_TEMPLATE % (name, ''.join([e.dot(self.dnmap) for e in self.elements]))) + return BASE_TEMPLATE % ( + name, + "".join([e.dot(self.dnmap) for e in self.elements]), + ) + BASE_TEMPLATE = """\ strict digraph "%s" { @@ -191,13 +201,13 @@ ENTRY_TEMPALTE = """\ """ -if __name__ == '__main__': +if __name__ == "__main__": if len(sys.argv) > 2: - raise 'Expected at most one argument.' + raise "Expected at most one argument." elif len(sys.argv) == 2: name = sys.argv[1] - file = open(sys.argv[1], 'r') + file = open(sys.argv[1], "r") else: - name = '' + name = "" file = sys.stdin print(Converter().parse(file, name)) diff --git a/moulinette/actionsmap.py b/moulinette/actionsmap.py index e5e9547b..6d36b252 100644 --- a/moulinette/actionsmap.py +++ b/moulinette/actionsmap.py @@ -107,7 +107,6 @@ class CommentParameter(_ExtraParameter): class AskParameter(_ExtraParameter): - """ Ask for the argument value if possible and needed. @@ -146,7 +145,6 @@ class AskParameter(_ExtraParameter): class PasswordParameter(AskParameter): - """ Ask for the password argument value if possible and needed. @@ -169,7 +167,6 @@ class PasswordParameter(AskParameter): class PatternParameter(_ExtraParameter): - """ Check if the argument value match a pattern. @@ -222,7 +219,6 @@ class PatternParameter(_ExtraParameter): class RequiredParameter(_ExtraParameter): - """ Check if a required argument is defined or not. @@ -262,7 +258,6 @@ extraparameters_list = [ class ExtraArgumentParser: - """ Argument validator and parser for the extra parameters. @@ -374,7 +369,6 @@ class ExtraArgumentParser: class ActionsMap: - """Validate and process actions defined into an actions map The actions map defines the features - and their usage - of an diff --git a/moulinette/authentication.py b/moulinette/authentication.py index bf2f76a3..40fdcbb0 100644 --- a/moulinette/authentication.py +++ b/moulinette/authentication.py @@ -11,7 +11,6 @@ logger = logging.getLogger("moulinette.authenticator") class BaseAuthenticator: - """Authenticator base representation Each authenticators must implement an Authenticator class derived diff --git a/moulinette/core.py b/moulinette/core.py index e83f716b..e5370c2c 100644 --- a/moulinette/core.py +++ b/moulinette/core.py @@ -18,7 +18,6 @@ def during_unittests_run(): class Translator: - """Internationalization class Provide an internationalization mechanism based on JSON files to @@ -173,7 +172,6 @@ class Translator: class Moulinette18n: - """Internationalization service for the moulinette Manage internationalization and access to the proper keys translation @@ -270,7 +268,6 @@ class MoulinetteAuthenticationError(MoulinetteError): class MoulinetteLock: - """Locker for a moulinette instance It provides a lock mechanism for a given moulinette instance. It can diff --git a/moulinette/interfaces/__init__.py b/moulinette/interfaces/__init__.py index 54776552..db814159 100644 --- a/moulinette/interfaces/__init__.py +++ b/moulinette/interfaces/__init__.py @@ -18,7 +18,6 @@ logger = logging.getLogger("moulinette.interface") class BaseActionsMapParser: - """Actions map's base Parser Each interfaces must implement an ActionsMapParser class derived @@ -148,7 +147,6 @@ class BaseActionsMapParser: class _ExtendedSubParsersAction(argparse._SubParsersAction): - """Subparsers with extended properties for argparse It provides the following additional properties at initialization, @@ -448,7 +446,6 @@ class PositionalsFirstHelpFormatter(argparse.HelpFormatter): class JSONExtendedEncoder(JSONEncoder): - """Extended JSON encoder Extend default JSON encoder to recognize more types and classes. It will diff --git a/moulinette/interfaces/api.py b/moulinette/interfaces/api.py index 34b51143..d5132c9c 100644 --- a/moulinette/interfaces/api.py +++ b/moulinette/interfaces/api.py @@ -66,14 +66,12 @@ def filter_csrf(callback): class LogQueues(dict): - """Map of session ids to queue.""" pass class APIQueueHandler(logging.Handler): - """ A handler class which store logging records into a queue, to be used and retrieved from the API. @@ -109,7 +107,6 @@ class APIQueueHandler(logging.Handler): class _HTTPArgumentParser: - """Argument parser for HTTP requests Object for parsing HTTP requests into Python objects. It is based @@ -547,7 +544,6 @@ def format_for_response(content): class ActionsMapParser(BaseActionsMapParser): - """Actions map's Parser for the API Provide actions map parsing methods for a CLI usage. The parser for @@ -691,7 +687,6 @@ class ActionsMapParser(BaseActionsMapParser): class Interface: - """Application Programming Interface for the moulinette Initialize a HTTP server which serves the API connected to a given diff --git a/moulinette/interfaces/cli.py b/moulinette/interfaces/cli.py index 84e72185..b4c42ebc 100644 --- a/moulinette/interfaces/cli.py +++ b/moulinette/interfaces/cli.py @@ -208,7 +208,6 @@ def get_locale(): class TTYHandler(logging.StreamHandler): - """TTY log handler A handler class which prints logging records for a tty. The record is @@ -274,7 +273,6 @@ class TTYHandler(logging.StreamHandler): class ActionsMapParser(BaseActionsMapParser): - """Actions map's Parser for the CLI Provide actions map parsing methods for a CLI usage. The parser for @@ -446,7 +444,6 @@ class ActionsMapParser(BaseActionsMapParser): class Interface: - """Command-line Interface for the moulinette Initialize an interface connected to the standard input/output diff --git a/moulinette/utils/log.py b/moulinette/utils/log.py index 02f8a30a..08fec631 100644 --- a/moulinette/utils/log.py +++ b/moulinette/utils/log.py @@ -85,7 +85,6 @@ def getHandlersByClass(classinfo, limit=0): class MoulinetteLogger(Logger): - """Custom logger class Extend base Logger class to provide the SUCCESS custom log level with @@ -173,7 +172,6 @@ def getActionLogger(name=None, logger=None, action_id=None): class ActionFilter: - """Extend log record for an optionnal action Filter a given record and look for an `action_id` key. If it is not found diff --git a/test/src/authenticators/dummy.py b/test/src/authenticators/dummy.py index 1d11a609..cef42c34 100644 --- a/test/src/authenticators/dummy.py +++ b/test/src/authenticators/dummy.py @@ -13,7 +13,6 @@ session_secret = random_ascii() class Authenticator(BaseAuthenticator): - """Dummy authenticator used for tests""" name = "dummy" diff --git a/test/src/authenticators/yoloswag.py b/test/src/authenticators/yoloswag.py index 7dc41fdc..f68122c9 100644 --- a/test/src/authenticators/yoloswag.py +++ b/test/src/authenticators/yoloswag.py @@ -13,7 +13,6 @@ session_secret = random_ascii() class Authenticator(BaseAuthenticator): - """Dummy authenticator used for tests""" name = "yoloswag" From c8193819c70246a722e7d4df7521a2952d4f76bb Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 7 Mar 2024 04:28:21 +0000 Subject: [PATCH 40/90] Translated using Weblate (Hindi) Currently translated at 57.7% (26 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/hi/ --- locales/hi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/hi.json b/locales/hi.json index 57781db8..2a052d6e 100644 --- a/locales/hi.json +++ b/locales/hi.json @@ -26,4 +26,4 @@ "warning": "चेतावनी:", "websocket_request_expected": "एक WebSocket अनुरोध की उम्मीद।", "info": "सूचना:" -} \ No newline at end of file +} From 95f7e6804a541e80181f4aff431a95aeff9b0bdb Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Thu, 7 Mar 2024 04:26:52 +0000 Subject: [PATCH 41/90] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 37.7% (17 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/nb_NO/ --- locales/nb_NO.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/nb_NO.json b/locales/nb_NO.json index 13e87fd8..a5562803 100644 --- a/locales/nb_NO.json +++ b/locales/nb_NO.json @@ -7,7 +7,7 @@ "unknown_user": "Ukjent '{user}' bruker", "unknown_group": "Ukjent '{group}' gruppe", "unable_authenticate": "Kunne ikke identitetsbekrefte", - "success": "Vellykket.", + "success": "Vellykket!", "operation_interrupted": "Operasjon forstyrret", "not_logged_in": "Du er ikke innlogget", "logged_in": "Innlogget", @@ -16,4 +16,4 @@ "confirm": "Bekreft {prompt}", "logged_out": "Utlogget", "password": "Passord" -} \ No newline at end of file +} From c698807f123c32f812a28abb530716dc513f97e5 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 9 Mar 2024 03:02:08 +0000 Subject: [PATCH 42/90] Translated using Weblate (French) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fr/ --- locales/fr.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/fr.json b/locales/fr.json index 7c5723e1..44019c79 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -16,12 +16,12 @@ "operation_interrupted": "Opération interrompue", "password": "Mot de passe", "pattern_not_match": "Ne correspond pas au motif", - "root_required": "Vous devez être super-utilisateur pour exécuter cette action", + "root_required": "Vous devez être admin pour exécuter cette action", "server_already_running": "Un serveur est déjà en cours d'exécution sur ce port", "success": "Succès !", "unable_authenticate": "Impossible de vous authentifier", "unknown_group": "Le groupe '{group}' est inconnu", - "unknown_user": "L'utilisateur '{user}' est inconnu", + "unknown_user": "Le compte '{user}' est inconnu", "values_mismatch": "Les valeurs ne correspondent pas", "warning": "Attention :", "websocket_request_expected": "Une requête WebSocket est attendue", @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock_again": "Toujours en attente...", "warn_the_user_that_lock_is_acquired": "La commande précédente vient de se terminer, lancement de cette nouvelle commande", "edit_text_question": "{}. Modifier ce texte ? [yN] : " -} \ No newline at end of file +} From 6e434cddc691dd6c63e5063de44a48886828f076 Mon Sep 17 00:00:00 2001 From: Alexandre Aubin <4533074+alexAubin@users.noreply.github.com> Date: Wed, 20 Mar 2024 18:41:00 +0100 Subject: [PATCH 43/90] Update locales/fr.json --- locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fr.json b/locales/fr.json index 44019c79..aa601a3a 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -16,7 +16,7 @@ "operation_interrupted": "Opération interrompue", "password": "Mot de passe", "pattern_not_match": "Ne correspond pas au motif", - "root_required": "Vous devez être admin pour exécuter cette action", + "root_required": "Vous devez avoir les droits d'administration pour exécuter cette action", "server_already_running": "Un serveur est déjà en cours d'exécution sur ce port", "success": "Succès !", "unable_authenticate": "Impossible de vous authentifier", From e00be08beed84b71d864b171fefb7fc2849897bd Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 04:49:37 +0000 Subject: [PATCH 44/90] Translated using Weblate (English) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/en/ --- locales/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/en.json b/locales/en.json index ca0ff36d..032b4856 100644 --- a/locales/en.json +++ b/locales/en.json @@ -36,12 +36,12 @@ "error_writing_file": "Error when writing file {file}: {error}", "error_removing": "Error when removing {path}: {error}", "error_changing_file_permissions": "Error when changing permissions for {path}: {error}", - "invalid_url": "Failed to connect to {url} ... maybe the service is down, or you are not properly connected to the Internet in IPv4/IPv6.", + "invalid_url": "Failed to connect to {url} … maybe the service is down, or you are not properly connected to the Internet in IPv4/IPv6.", "download_ssl_error": "SSL error when connecting to {url}", "download_timeout": "{url} took too long to answer, gave up.", "download_unknown_error": "Error when downloading data from {url}: {error}", "download_bad_status_code": "{url} returned status code {code}", "warn_the_user_about_waiting_lock": "Another YunoHost command is running right now, we are waiting for it to finish before running this one", - "warn_the_user_about_waiting_lock_again": "Still waiting...", + "warn_the_user_about_waiting_lock_again": "Still waiting…", "warn_the_user_that_lock_is_acquired": "The other command just completed, now starting this command" } From 0ad9eac48c9cd6839b7b93097ab9f831708df4b4 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 04:59:32 +0000 Subject: [PATCH 45/90] Translated using Weblate (French) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fr/ --- locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fr.json b/locales/fr.json index aa601a3a..dc2e1c73 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -41,7 +41,7 @@ "info": "Info :", "corrupted_toml": "Fichier TOML corrompu en lecture depuis {ressource} (raison : {error})", "warn_the_user_about_waiting_lock": "Une autre commande YunoHost est actuellement en cours, nous attendons qu'elle se termine avant de démarrer celle là", - "warn_the_user_about_waiting_lock_again": "Toujours en attente...", + "warn_the_user_about_waiting_lock_again": "Toujours en attente…", "warn_the_user_that_lock_is_acquired": "La commande précédente vient de se terminer, lancement de cette nouvelle commande", "edit_text_question": "{}. Modifier ce texte ? [yN] : " } From 6e5429ce0022e09420b3d405280e48a0908ee7d5 Mon Sep 17 00:00:00 2001 From: xaloc33 Date: Sat, 23 Mar 2024 11:10:18 +0000 Subject: [PATCH 46/90] Translated using Weblate (Catalan) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ca/ --- locales/ca.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/ca.json b/locales/ca.json index 95c02168..4b2341cc 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -1,7 +1,7 @@ { "argument_required": "Es requereix l'argument «{argument}»", "authentication_required": "Es requereix autenticació", - "confirm": "Confirmar{prompt}", + "confirm": "Confirmar {prompt}", "deprecated_command": "{prog}{command}és obsolet i es desinstal·larà en el futur", "deprecated_command_alias": "{prog}{old}és obsolet i es desinstal·larà en el futur, utilitzeu {prog}{new}en el seu lloc", "error": "Error:", @@ -33,7 +33,7 @@ "error_writing_file": "Error al escriure el fitxer {file}: {error}", "error_removing": "Error al eliminar {path}: {error}", "error_changing_file_permissions": "Error al canviar els permisos per {path}: {error}", - "invalid_url": "URL invàlid {url} (el lloc web existeix?)", + "invalid_url": "No s'ha pogut connectar a {url}… pot ser que el servei estigui caigut, o que no hi hagi connexió a Internet amb IPv4/IPv6.", "download_ssl_error": "Error SSL al connectar amb {url}", "download_timeout": "{url} ha tardat massa en respondre, s'ha deixat d'esperar.", "download_unknown_error": "Error al baixar dades des de {url}: {error}", From 97a24dbbce3f72b7167f9a519d6a42bb27ed0f68 Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Sat, 23 Mar 2024 12:43:26 +0000 Subject: [PATCH 47/90] Translated using Weblate (Basque) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/eu/ --- locales/eu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/eu.json b/locales/eu.json index 5f8e3763..9717f40f 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -42,6 +42,6 @@ "error_writing_file": "Errorea {file} fitxategia idazterakoan: {error}", "error_removing": "Errorea {path} ezabatzerakoan: {error}", "download_bad_status_code": "{url} helbideak {code} egoera kodea agertu du", - "invalid_url": "Ezinezkoa izan da {url}-(e)ra konektatzea… agian zerbitzua ez dago martxan, edo zeu ez zaude IPv4/IPv6 bidez ondo konektatuta internetera.", + "invalid_url": "{url}-(e)ra konektatzeak huts egin du… agian zerbitzua ez dago martxan, edo ez zaude IPv4/IPv6 bidez ondo konektatuta internetera.", "download_timeout": "{url}(e)k denbora gehiegi behar izan du erantzuteko, bertan behera utzi du zerbitzariak." } From 0ee77f922e8d75a9a3cdd005db37a2e89705ace7 Mon Sep 17 00:00:00 2001 From: ppr Date: Sat, 23 Mar 2024 09:15:19 +0000 Subject: [PATCH 48/90] Translated using Weblate (French) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fr/ --- locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fr.json b/locales/fr.json index dc2e1c73..57ecbecb 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -32,7 +32,7 @@ "error_writing_file": "Erreur en écrivant le fichier {file} : {error}", "error_removing": "Erreur lors de la suppression {path} : {error}", "error_changing_file_permissions": "Erreur lors de la modification des autorisations pour {path} : {error}", - "invalid_url": "Impossible de se connecter à {url}... peut-être que le service est hors service/indisponible/interrompu, ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", + "invalid_url": "Impossible de se connecter à {url} ... peut-être que le service est tombé/indisponible/interrompu, ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", "download_ssl_error": "Erreur SSL lors de la connexion à {url}", "download_timeout": "{url} a pris trop de temps pour répondre : abandon.", "download_unknown_error": "Erreur lors du téléchargement des données à partir de {url} : {error}", From 8bde8eee147a13db53ce6e119b056d2cfa301013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Sat, 23 Mar 2024 06:20:26 +0000 Subject: [PATCH 49/90] Translated using Weblate (Galician) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/gl/ --- locales/gl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/gl.json b/locales/gl.json index ed120952..a7d15800 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -26,13 +26,13 @@ "not_logged_in": "Non iniciaches sesión", "logged_in": "Sesión iniciada", "warn_the_user_that_lock_is_acquired": "O outro comando rematou, agora executarase este", - "warn_the_user_about_waiting_lock_again": "Agardando...", + "warn_the_user_about_waiting_lock_again": "Agardando…", "warn_the_user_about_waiting_lock": "Estase executando outro comando de YunoHost neste intre, estamos agardando a que remate para executar este", "download_bad_status_code": "{url} devolveu o código de estado {code}", "download_unknown_error": "Erro ao descargar os datos desde {url}: {error}", "download_timeout": "{url} está tardando en responder, deixámolo.", "download_ssl_error": "Erro SSL ao conectar con {url}", - "invalid_url": "Fallou a conexión con {url} ... pode que o servizo esté caído, ou que non teñas conexión a Internet con IPv4/IPv6.", + "invalid_url": "Fallou a conexión con {url}… pode que o servizo estea caído, ou que non teñas conexión a Internet con IPv4/IPv6.", "error_changing_file_permissions": "Erro ao cambiar os permisos de {path}: {error}", "error_removing": "Erro ao eliminar {path}: {error}", "error_writing_file": "Erro ao escribir o ficheiro {file}: {error}", From 21ecfbcd696bc4fbbd4cb3f37daaa574cdd6271f Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:45:54 +0000 Subject: [PATCH 50/90] Translated using Weblate (Chinese (Simplified)) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/zh_Hans/ --- locales/cmn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/cmn.json b/locales/cmn.json index d832b5de..b146339a 100644 --- a/locales/cmn.json +++ b/locales/cmn.json @@ -40,7 +40,7 @@ "download_unknown_error": "下载{url}失败:{error}", "download_bad_status_code": "{url}返回状态码:{code}", "warn_the_user_that_lock_is_acquired": "另一个命令刚刚完成,现在启动此命令", - "warn_the_user_about_waiting_lock_again": "仍在等待...", + "warn_the_user_about_waiting_lock_again": "仍在等待…", "warn_the_user_about_waiting_lock": "目前正在运行另一个YunoHost命令,我们在运行此命令之前等待它完成", "corrupted_toml": "从{ressource}读取的TOML已损坏(原因:{error})", "edit_text_question": "{}.编辑此文本?[yN]: " From e8e206b482818a975f0550847a2b4ced98d91bcf Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:42:46 +0000 Subject: [PATCH 51/90] Translated using Weblate (German) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/de/ --- locales/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/de.json b/locales/de.json index 4ea4c77f..15f431ee 100644 --- a/locales/de.json +++ b/locales/de.json @@ -32,7 +32,7 @@ "cannot_open_file": "Datei {file} konnte nicht geöffnet werden (Ursache: {error})", "corrupted_yaml": "Beschädigtes YAML gelesen von {ressource} (reason: {error})", "warn_the_user_that_lock_is_acquired": "Der andere Befehl wurde gerade abgeschlossen, starte jetzt diesen Befehl", - "warn_the_user_about_waiting_lock_again": "Immer noch wartend...", + "warn_the_user_about_waiting_lock_again": "Immer noch wartend…", "warn_the_user_about_waiting_lock": "Ein anderer YunoHost Befehl läuft gerade, wir warten bis er fertig ist, bevor dieser laufen kann", "download_bad_status_code": "{url} lieferte folgende(n) Status Code(s) {code}", "download_unknown_error": "Fehler beim Herunterladen von Daten von {url}: {error}", From 8c38478d02ec2afce50dc5f0e40d2013bfc9540b Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:43:05 +0000 Subject: [PATCH 52/90] Translated using Weblate (Esperanto) Currently translated at 93.3% (42 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/eo/ --- locales/eo.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/eo.json b/locales/eo.json index 02d8a43b..ed1a9a9a 100644 --- a/locales/eo.json +++ b/locales/eo.json @@ -1,7 +1,7 @@ { "password": "Pasvorto", "warn_the_user_that_lock_is_acquired": "La alia komando ĵus kompletigis, nun komencante ĉi tiun komandon", - "warn_the_user_about_waiting_lock_again": "Ankoraŭ atendanta...", + "warn_the_user_about_waiting_lock_again": "Ankoraŭ atendanta…", "warn_the_user_about_waiting_lock": "Alia komando de YunoHost funkcias ĝuste nun, ni atendas, ke ĝi finiĝos antaŭ ol funkcii ĉi tiu", "download_bad_status_code": "{url} redonita statuskodo {code}", "download_unknown_error": "Eraro dum elŝutado de datumoj de {url}: {error}", @@ -43,4 +43,4 @@ "authentication_required": "Aŭtentigo bezonata", "argument_required": "Argumento '{argument}' estas bezonata", "logged_out": "Ensalutinta" -} \ No newline at end of file +} From c59b869286dce9b3d5bc46d97350a3daea200e6a Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:43:13 +0000 Subject: [PATCH 53/90] Translated using Weblate (Spanish) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/es/ --- locales/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/es.json b/locales/es.json index f766f850..b981a5f2 100644 --- a/locales/es.json +++ b/locales/es.json @@ -41,7 +41,7 @@ "info": "Información:", "corrupted_toml": "Lectura corrupta de TOML desde {ressource} (motivo: {error})", "warn_the_user_that_lock_is_acquired": "La otra orden recién terminó, iniciando esta orden ahora", - "warn_the_user_about_waiting_lock_again": "Aún esperando...", + "warn_the_user_about_waiting_lock_again": "Aún esperando…", "warn_the_user_about_waiting_lock": "Otra orden de YunoHost se está ejecutando ahora, estamos esperando a que termine antes de ejecutar esta", "edit_text_question": "{}. Editar este texto ? [sN]: " } From d59f142019f8da9045f78239e5729d78dc136726 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:31:51 +0000 Subject: [PATCH 54/90] Translated using Weblate (French) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fr/ --- locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fr.json b/locales/fr.json index 57ecbecb..de1ab158 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -32,7 +32,7 @@ "error_writing_file": "Erreur en écrivant le fichier {file} : {error}", "error_removing": "Erreur lors de la suppression {path} : {error}", "error_changing_file_permissions": "Erreur lors de la modification des autorisations pour {path} : {error}", - "invalid_url": "Impossible de se connecter à {url} ... peut-être que le service est tombé/indisponible/interrompu, ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", + "invalid_url": "Impossible de se connecter à {url} … peut-être que le service est en panne ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", "download_ssl_error": "Erreur SSL lors de la connexion à {url}", "download_timeout": "{url} a pris trop de temps pour répondre : abandon.", "download_unknown_error": "Erreur lors du téléchargement des données à partir de {url} : {error}", From fe607a2ef13da8818728def803e967a5de64c137 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:44:31 +0000 Subject: [PATCH 55/90] Translated using Weblate (Italian) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/it/ --- locales/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/it.json b/locales/it.json index 4ce12abe..7781b879 100644 --- a/locales/it.json +++ b/locales/it.json @@ -40,7 +40,7 @@ "download_bad_status_code": "{url} ha restituito il codice di stato {code}", "info": "Info:", "warn_the_user_that_lock_is_acquired": "L'altro comando è appena completato, ora avvio questo comando", - "warn_the_user_about_waiting_lock_again": "Sto ancora aspettando ...", + "warn_the_user_about_waiting_lock_again": "Sto ancora aspettando…", "warn_the_user_about_waiting_lock": "Un altro comando YunoHost è in esecuzione in questo momento, stiamo aspettando che finisca prima di eseguire questo", "corrupted_toml": "TOML corrotto da {ressource} (motivo: {error})", "edit_text_question": "{}. Modificare il testo? [yN]: " From 39113a8ed5c2be1b76f752c6cf04cd086dc894b0 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:45:03 +0000 Subject: [PATCH 56/90] Translated using Weblate (Dutch) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/nl/ --- locales/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/nl.json b/locales/nl.json index 0410d57b..dba8a9ad 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -38,7 +38,7 @@ "download_unknown_error": "Fout tijdens het downloaden van data van {url}: {error}", "download_bad_status_code": "{url} stuurt status code {code}", "warn_the_user_that_lock_is_acquired": "De andere opdracht is zojuist voltooid; nu wordt nu deze opdracht gestart", - "warn_the_user_about_waiting_lock_again": "Nog steeds aan het wachten...", + "warn_the_user_about_waiting_lock_again": "Nog steeds aan het wachten…", "warn_the_user_about_waiting_lock": "Een ander YunoHost commando wordt uitgevoerd, we wachten tot het gedaan is alovrens dit te starten", "corrupted_toml": "Ongeldige TOML werd gelezen van {ressource} (reason: {error})", "corrupted_yaml": "Ongeldig YAML bestand op {ressource} (reden: {error})", From 080d244f442657242fd88e7c52dd57f91678ff7e Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:45:21 +0000 Subject: [PATCH 57/90] Translated using Weblate (Portuguese) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/pt/ --- locales/pt.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/pt.json b/locales/pt.json index 69962143..1f677ce5 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -39,7 +39,7 @@ "corrupted_json": "JSON corrompido lido do {ressource} (motivo: {error})", "corrupted_yaml": "YAML corrompido lido do {ressource} (motivo: {error})", "warn_the_user_that_lock_is_acquired": "O outro comando acabou de concluir, agora iniciando este comando", - "warn_the_user_about_waiting_lock_again": "Ainda esperando...", + "warn_the_user_about_waiting_lock_again": "Ainda esperando…", "warn_the_user_about_waiting_lock": "Outro comando YunoHost está sendo executado agora, estamos aguardando o término antes de executar este", "corrupted_toml": "TOML corrompido lido em {ressource} (motivo: {error})", "info": "Informações:", From 4dfa2ee710c82ab3eb996a9614477b75df61c77f Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:45:30 +0000 Subject: [PATCH 58/90] Translated using Weblate (Russian) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ru/ --- locales/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ru.json b/locales/ru.json index 7b629d1c..d7942f3b 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -36,7 +36,7 @@ "root_required": "Чтобы выполнить это действие, вы должны иметь права root", "corrupted_json": "Повреждённый json получен от {ressource} (причина: {error})", "warn_the_user_that_lock_is_acquired": "Другая команда только что завершилась, теперь запускается эта команда", - "warn_the_user_about_waiting_lock_again": "Все еще жду...", + "warn_the_user_about_waiting_lock_again": "Все еще жду…", "warn_the_user_about_waiting_lock": "Сейчас запускается еще одна команда YunoHost, мы ждем ее завершения, прежде чем запустить эту", "download_bad_status_code": "{url} вернул код состояния {code}", "error_changing_file_permissions": "Ошибка при изменении разрешений для {path}: {error}", From 257e7095e5af4b3fb12f3e66802835008df30f97 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:45:38 +0000 Subject: [PATCH 59/90] Translated using Weblate (Turkish) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/tr/ --- locales/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/tr.json b/locales/tr.json index ab503c73..6fe8bf02 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -19,7 +19,7 @@ "warning": "Uyarı:", "websocket_request_expected": "WebSocket isteği gerekli", "warn_the_user_that_lock_is_acquired": "Diğer komut şimdi tamamlandı, şimdi bu komutu başlatıyor", - "warn_the_user_about_waiting_lock_again": "Hala bekliyor...", + "warn_the_user_about_waiting_lock_again": "Hala bekliyor…", "warn_the_user_about_waiting_lock": "Başka bir YunoHost komutu şu anda çalışıyor, bunu çalıştırmadan önce bitmesini bekliyoruz", "download_bad_status_code": "{url} döndürülen durum kodu {code}", "download_unknown_error": "{url} adresinden veri indirilirken hata oluştu: {error}", From 45b1a9274376d0f8efd4ae35f505b54a123d3cc1 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:45:11 +0000 Subject: [PATCH 60/90] Translated using Weblate (Polish) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/pl/ --- locales/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/pl.json b/locales/pl.json index 07395681..db236d4a 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -2,7 +2,7 @@ "logged_out": "Wylogowano", "password": "Hasło", "warn_the_user_that_lock_is_acquired": "Inne polecenie właśnie się zakończyło, teraz uruchamiam to polecenie", - "warn_the_user_about_waiting_lock_again": "Wciąż czekam...", + "warn_the_user_about_waiting_lock_again": "Wciąż czekam…", "warn_the_user_about_waiting_lock": "Kolejne polecenie YunoHost jest obecnie uruchomione, czekamy na jego zakończenie przed uruchomieniem tego", "download_bad_status_code": "{url} zwrócił kod stanu {code}", "download_unknown_error": "Błąd podczas pobierania danych z {url}: {error}", From 3bed227f6df620fa7752d83784c0476b2672de6f Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:44:57 +0000 Subject: [PATCH 61/90] Translated using Weblate (Nepali) Currently translated at 13.3% (6 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ne/ --- locales/ne.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ne.json b/locales/ne.json index 275cf377..68aaf675 100644 --- a/locales/ne.json +++ b/locales/ne.json @@ -6,4 +6,4 @@ "confirm": "कन्फर्म {prompt}", "authentication_required": "प्रमाणीकरण आवाश्यक छ", "argument_required": "तर्क '{argument}' आवश्यक छ" -} \ No newline at end of file +} From 50ce4c9b03fd6c45640b8a5f971d1103c40033c6 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:42:37 +0000 Subject: [PATCH 62/90] Translated using Weblate (Czech) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/cs/ --- locales/cs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/cs.json b/locales/cs.json index 87a8207c..76ba73d9 100644 --- a/locales/cs.json +++ b/locales/cs.json @@ -2,7 +2,7 @@ "password": "Heslo", "logged_out": "Jste odhlášen/a", "warn_the_user_that_lock_is_acquired": "Předchozí operace dokončena, nyní spouštíme tuto", - "warn_the_user_about_waiting_lock_again": "Stále čekáme...", + "warn_the_user_about_waiting_lock_again": "Stále čekáme…", "warn_the_user_about_waiting_lock": "Jiná YunoHost operace právě probíhá, před spuštěním této čekáme na její dokončení", "download_bad_status_code": "{url} vrátil stavový kód {code}", "download_unknown_error": "Chyba při stahování dat z {url}: {error}", From f7a9678b598bd8f818bf0b74778c5dafac949a8a Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:45:48 +0000 Subject: [PATCH 63/90] Translated using Weblate (Ukrainian) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/uk/ --- locales/uk.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/uk.json b/locales/uk.json index 017feae9..f6e3d4b0 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -3,7 +3,7 @@ "logged_out": "Ви вийшли з системи", "invalid_url": "Помилка з'єднання із {url}... можливо, служба не працює, або ви неправильно під'єднані до Інтернету в IPv4/IPv6.", "warn_the_user_that_lock_is_acquired": "Інша команда щойно завершилася, тепер запускаємо цю команду", - "warn_the_user_about_waiting_lock_again": "Досі очікуємо...", + "warn_the_user_about_waiting_lock_again": "Досі очікуємо…", "warn_the_user_about_waiting_lock": "Зараз запускається ще одна команда YunoHost, ми чекаємо її завершення, перш ніж запустити цю", "download_bad_status_code": "{url} повернув код стану {code}", "download_unknown_error": "Помилка під час завантаження даних з {url}: {error}", @@ -44,4 +44,4 @@ "authentication_required": "Потрібна автентифікація", "argument_required": "Потрібен аргумент '{argument}'", "edit_text_question": "{}. Редагувати цей текст? [yN]: " -} \ No newline at end of file +} From 2a2bb468fc50e4bc884292ca38b340cb4219570e Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:43:22 +0000 Subject: [PATCH 64/90] Translated using Weblate (Persian) Currently translated at 95.5% (43 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fa/ --- locales/fa.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/fa.json b/locales/fa.json index 5873da9d..6177d812 100644 --- a/locales/fa.json +++ b/locales/fa.json @@ -14,7 +14,7 @@ "argument_required": "استدلال '{argument}' ضروری است", "password": "کلمه عبور", "warn_the_user_that_lock_is_acquired": "فرمان دیگر به تازگی تکمیل شده است ، اکنون این دستور را شروع کنید", - "warn_the_user_about_waiting_lock_again": "هنوز در انتظار...", + "warn_the_user_about_waiting_lock_again": "هنوز در انتظار…", "warn_the_user_about_waiting_lock": "یکی دیگر از دستورات YunoHost در حال اجرا است ، ما منتظر هستیم تا قبل از اجرای این دستور به پایان برسد", "download_bad_status_code": "{url} کد وضعیّت بازگشتی {code}", "download_unknown_error": "خطا هنگام بارگیری داده ها از {url}: {error}", @@ -43,4 +43,4 @@ "operation_interrupted": "عملیات قطع شده است", "not_logged_in": "‌شما وارد نشده اید", "logged_out": "خارج شده" -} \ No newline at end of file +} From efc7d237388bafb271feb2c4cc503db86ace7be6 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:44:22 +0000 Subject: [PATCH 65/90] Translated using Weblate (Indonesian) Currently translated at 93.3% (42 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/id/ --- locales/id.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/id.json b/locales/id.json index dfd66b6b..9b3b5aa7 100644 --- a/locales/id.json +++ b/locales/id.json @@ -13,7 +13,7 @@ "error_removing": "Terjadi galat ketika menghapus {path}: {error}", "success": "Berhasil!", "warn_the_user_about_waiting_lock": "Perintah YunoHost lain sedang berjalan saat ini, kami sedang menunggu itu selesai sebelum menjalankan yang ini", - "warn_the_user_about_waiting_lock_again": "Masih menunggu...", + "warn_the_user_about_waiting_lock_again": "Masih menunggu…", "unable_authenticate": "Tidak dapat mengautentikasi", "warn_the_user_that_lock_is_acquired": "Perintah yang tadi baru saja selesai, akan memulai perintah ini", "server_already_running": "Sebuah peladen telah berjalan di porta tersebut", From cdd5ee613465df5aa1ee2652bfc402038e58a0f1 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 17:44:41 +0000 Subject: [PATCH 66/90] Translated using Weblate (Japanese) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ja/ --- locales/ja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ja.json b/locales/ja.json index e55d18c3..70d76c0d 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -12,7 +12,7 @@ "download_unknown_error": "{url}からデータをダウンロードする際のエラー:{error}", "download_bad_status_code": "{url}は状態コード {code} を返しました", "warn_the_user_about_waiting_lock": "別のYunoHostコマンドが現在実行されているため、完了するのを待っています", - "warn_the_user_about_waiting_lock_again": "まだ待っています...", + "warn_the_user_about_waiting_lock_again": "まだ待っています…", "warn_the_user_that_lock_is_acquired": "他のコマンドが完了しました。このコマンドが開始されました", "file_not_exist": "ファイルが存在しません: '{path}'", "folder_exists": "フォルダは既に存在します: '{path}'", From 4a52f20417662bbc6c7e58903849d2011dadb9f4 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 67/90] Translated using Weblate (English) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/en/ --- locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/en.json b/locales/en.json index 032b4856..d219246c 100644 --- a/locales/en.json +++ b/locales/en.json @@ -36,7 +36,7 @@ "error_writing_file": "Error when writing file {file}: {error}", "error_removing": "Error when removing {path}: {error}", "error_changing_file_permissions": "Error when changing permissions for {path}: {error}", - "invalid_url": "Failed to connect to {url} … maybe the service is down, or you are not properly connected to the Internet in IPv4/IPv6.", + "invalid_url": "Failed to connect to {url}… maybe the service is down, or you are not properly connected to the Internet in IPv4/IPv6.", "download_ssl_error": "SSL error when connecting to {url}", "download_timeout": "{url} took too long to answer, gave up.", "download_unknown_error": "Error when downloading data from {url}: {error}", From b2b912e7b9aa9d5f865573ee72e91e37a5c90728 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 68/90] Translated using Weblate (Arabic) Currently translated at 95.5% (43 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ar/ --- locales/ar.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ar.json b/locales/ar.json index a551db49..390c00d6 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -32,7 +32,7 @@ "error_writing_file": "طرأ هناك خطأ أثناء الكتابة في الملف {file}: {error}", "error_removing": "خطأ أثناء عملية حذف {path}: {error}", "error_changing_file_permissions": "خطأ أثناء عملية تعديل التصريحات لـ {path}: {error}", - "invalid_url": "فشل الاتصال بـ {url} ... ربما تكون الخدمة معطلة ، أو أنك غير متصل بشكل صحيح بالإنترنت في IPv4 / IPv6.", + "invalid_url": "فشل الاتصال بـ {url}… ربما تكون الخدمة معطلة ، أو أنك غير متصل بشكل صحيح بالإنترنت في IPv4 / IPv6.", "download_ssl_error": "خطأ في الاتصال الآمن عبر الـ SSL أثناء محاولة الربط بـ {url}", "download_timeout": "{url} استغرق مدة طويلة جدا للإستجابة، فتوقّف.", "download_unknown_error": "خطأ أثناء عملية تنزيل البيانات مِن {url} : {error}", From 0ffda1a0db358d88fd9bd1df1fed279941e5f436 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 69/90] Translated using Weblate (Chinese (Simplified)) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/zh_Hans/ --- locales/cmn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/cmn.json b/locales/cmn.json index b146339a..1f679702 100644 --- a/locales/cmn.json +++ b/locales/cmn.json @@ -34,7 +34,7 @@ "error_writing_file": "写入文件{file}失败:{error}", "error_removing": "删除路径{path}失败:{error}", "error_changing_file_permissions": "目录{path}权限修改失败:{error}", - "invalid_url": "{url} 连接失败... 可能是服务中断了,或者你没有正确连接到IPv4/IPv6的互联网。", + "invalid_url": "{url} 连接失败… 可能是服务中断了,或者你没有正确连接到IPv4/IPv6的互联网。", "download_ssl_error": "连接{url}时发生SSL错误", "download_timeout": "{url}响应超时,放弃。", "download_unknown_error": "下载{url}失败:{error}", From d81b4578e9637882a2d684af05502005173c21dd Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 70/90] Translated using Weblate (German) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/de/ --- locales/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/de.json b/locales/de.json index 15f431ee..3cc2f736 100644 --- a/locales/de.json +++ b/locales/de.json @@ -38,7 +38,7 @@ "download_unknown_error": "Fehler beim Herunterladen von Daten von {url}: {error}", "download_timeout": "{url} brauchte zu lange zum Antworten, hab aufgegeben.", "download_ssl_error": "SSL Fehler beim Verbinden zu {url}", - "invalid_url": "Konnte keine Verbindung zu {url} herstellen... vielleicht ist der Dienst ausgefallen, oder Sie sind nicht richtig mit dem Internet in IPv4/IPv6 verbunden.", + "invalid_url": "Konnte keine Verbindung zu {url} herstellen… vielleicht ist der Dienst ausgefallen, oder Sie sind nicht richtig mit dem Internet in IPv4/IPv6 verbunden.", "error_changing_file_permissions": "Fehler beim Ändern der Berechtigungen für {path}: {error}", "error_removing": "Fehler beim Entfernen {path}: {error}", "error_writing_file": "Fehler beim Schreiben von Datei {file}: {error}", From e96c380d29003d8e0b368027edf1814fb286134e Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:27:28 +0000 Subject: [PATCH 71/90] Translated using Weblate (Esperanto) Currently translated at 95.5% (43 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/eo/ --- locales/eo.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/eo.json b/locales/eo.json index ed1a9a9a..90ccfb59 100644 --- a/locales/eo.json +++ b/locales/eo.json @@ -16,7 +16,7 @@ "corrupted_json": "Koruptita JSON legis de {ressource} (Kialo: {error})", "unknown_error_reading_file": "Nekonata eraro dum provi legi dosieron {file} (kialo: {error})", "cannot_write_file": "Ne povis skribi dosieron {file} (kialo: {error})", - "cannot_open_file": "Ne povis malfermi dosieron {file: s} (kialo: {error: s})", + "cannot_open_file": "Ne povis malfermi dosieron {file} (kialo: {error})", "websocket_request_expected": "Atendis ret-peto", "warning": "Averto:", "values_mismatch": "Valoroj ne kongruas", From f4712d9300d2a9c462e94e7740321ff926a6b4bd Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 72/90] Translated using Weblate (French) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fr/ --- locales/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fr.json b/locales/fr.json index de1ab158..610507c3 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -32,7 +32,7 @@ "error_writing_file": "Erreur en écrivant le fichier {file} : {error}", "error_removing": "Erreur lors de la suppression {path} : {error}", "error_changing_file_permissions": "Erreur lors de la modification des autorisations pour {path} : {error}", - "invalid_url": "Impossible de se connecter à {url} … peut-être que le service est en panne ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", + "invalid_url": "Impossible de se connecter à {url}… peut-être que le service est en panne ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", "download_ssl_error": "Erreur SSL lors de la connexion à {url}", "download_timeout": "{url} a pris trop de temps pour répondre : abandon.", "download_unknown_error": "Erreur lors du téléchargement des données à partir de {url} : {error}", From 1cac05b9fc5fac14b5a8c97f270f8f0d9c059167 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 73/90] Translated using Weblate (Italian) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/it/ --- locales/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/it.json b/locales/it.json index 7781b879..99dfb3cd 100644 --- a/locales/it.json +++ b/locales/it.json @@ -33,7 +33,7 @@ "error_writing_file": "Errore durante la scrittura del file {file}: {error}", "error_removing": "Errore durante la rimozione {path}: {error}", "error_changing_file_permissions": "Errore durante il cambio di permessi per {path}: {error}", - "invalid_url": "Fallita connessione a {url}... magari il servizio è down, o non sei connesso correttamente ad internet con IPv4/IPv6.", + "invalid_url": "Fallita connessione a {url}… magari il servizio è down, o non sei connesso correttamente ad internet con IPv4/IPv6.", "download_ssl_error": "Errore SSL durante la connessione a {url}", "download_timeout": "{url} ci ha messo troppo a rispondere, abbandonato.", "download_unknown_error": "Errore durante il download di dati da {url} : {error}", From 750aab64da49daf87e04ab75042b429e1f5b259e Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 74/90] Translated using Weblate (Dutch) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/nl/ --- locales/nl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/nl.json b/locales/nl.json index dba8a9ad..d0c68a52 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -32,7 +32,7 @@ "error_writing_file": "Fout tijdens het schrijven van bestand {file}: {error}", "error_removing": "Fout tijdens het verwijderen van {path}: {error}", "error_changing_file_permissions": "Fout tijdens het veranderen van machtiging voor {path}: {error}", - "invalid_url": "Kon niet verbinden met {url} ... misschien is de dienst uit de lucht, of ben je niet goed verbonden via IPv4 of IPv6.", + "invalid_url": "Kon niet verbinden met {url}… misschien is de dienst uit de lucht, of ben je niet goed verbonden via IPv4 of IPv6.", "download_ssl_error": "SSL fout gedurende verbinding met {url}", "download_timeout": "{url} neemt te veel tijd om te antwoorden, we geven het op.", "download_unknown_error": "Fout tijdens het downloaden van data van {url}: {error}", From e196ed34c4b3f14f6261835c0af2cfb3b7f22e0c Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 75/90] Translated using Weblate (Russian) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ru/ --- locales/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ru.json b/locales/ru.json index d7942f3b..a61f4cdf 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -28,7 +28,7 @@ "corrupted_yaml": "Повреждённой YAML получен от {ressource} (причина: {error})", "error_writing_file": "Ошибка при записи файла {file}: {error}", "error_removing": "Ошибка при удалении {path}: {error}", - "invalid_url": "Не удалось подключиться к {url} ... возможно этот сервис недоступен или вы не подключены к Интернету через IPv4/IPv6.", + "invalid_url": "Не удалось подключиться к {url}… возможно этот сервис недоступен или вы не подключены к Интернету через IPv4/IPv6.", "download_ssl_error": "Ошибка SSL при соединении с {url}", "download_timeout": "Превышено время ожидания ответа от {url}.", "download_unknown_error": "Ошибка при загрузке данных с {url} : {error}", From e8b46f8c9b8c270a6a389f5d1df1375ecf1c921b Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 76/90] Translated using Weblate (Turkish) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/tr/ --- locales/tr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/tr.json b/locales/tr.json index 6fe8bf02..5e6ae491 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -25,7 +25,7 @@ "download_unknown_error": "{url} adresinden veri indirilirken hata oluştu: {error}", "download_timeout": "{url} yanıtlaması çok uzun sürdü, pes etti.", "download_ssl_error": "{url} ağına bağlanırken SSL hatası", - "invalid_url": "{url} bağlanılamadı... URL çalışmıyor olabilir veya IPv4/IPv6 internete düzgün bir şekilde bağlı değilsiniz.", + "invalid_url": "{url} bağlanılamadı… URL çalışmıyor olabilir veya IPv4/IPv6 internete düzgün bir şekilde bağlı değilsiniz.", "error_changing_file_permissions": "{path} için izinler değiştirilirken hata oluştu: {error}", "error_removing": "{path} kaldırılırken hata oluştu: {error}", "error_writing_file": "{file} dosyası yazılırken hata oluştu: {error}", From 7f2563e65ae2f81ac1dceaa5a5ec50f8a2b68b4a Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:18 +0000 Subject: [PATCH 77/90] Translated using Weblate (Polish) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/pl/ --- locales/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/pl.json b/locales/pl.json index db236d4a..cd34277c 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -8,7 +8,7 @@ "download_unknown_error": "Błąd podczas pobierania danych z {url}: {error}", "download_timeout": "{url} potrzebował zbyt dużo czasu na odpowiedź, rezygnacja.", "download_ssl_error": "Błąd SSL podczas łączenia z {url}", - "invalid_url": "Nie udało się połączyć z {url}... być może strona nie jest dostępna, lub nie jesteś prawidłowo połączony z Internetem po IPv4/IPv6.", + "invalid_url": "Nie udało się połączyć z {url}… być może strona nie jest dostępna, lub nie jesteś prawidłowo połączony z Internetem po IPv4/IPv6.", "error_changing_file_permissions": "Błąd podczas zmiany uprawnień dla {path}: {error}", "error_removing": "Błąd podczas usuwania {path}: {error}", "error_writing_file": "Błąd podczas zapisywania pliku {file}: {error}", From dbcadf0c874bf37616b4eccaccbcd3271595d065 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:07:17 +0000 Subject: [PATCH 78/90] Translated using Weblate (Swedish) Currently translated at 84.4% (38 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/sv/ --- locales/sv.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/sv.json b/locales/sv.json index 005c68e1..d6920fca 100644 --- a/locales/sv.json +++ b/locales/sv.json @@ -1,5 +1,5 @@ { - "warn_the_user_about_waiting_lock_again": "Väntar fortfarande …", + "warn_the_user_about_waiting_lock_again": "Väntar fortfarande…", "download_bad_status_code": "{url} svarade med statuskod {code}", "download_timeout": "Gav upp eftersom {url} tog för lång tid på sig att svara.", "download_ssl_error": "Ett SSL-fel påträffades vid anslutning till {url}", @@ -43,4 +43,4 @@ "invalid_usage": "Ogiltig användning, pass --help för att se hjälp", "instance_already_running": "Det finns redan en YunoHost-operation. Vänta tills den är klar innan du kör en annan.", "authentication_required": "Autentisering krävs" -} \ No newline at end of file +} From 41e170a214dc4b0a0b7849e269ac10986307a952 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:11:14 +0000 Subject: [PATCH 79/90] Translated using Weblate (Ukrainian) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/uk/ --- locales/uk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/uk.json b/locales/uk.json index f6e3d4b0..3d5128ca 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -1,7 +1,7 @@ { "password": "Пароль", "logged_out": "Ви вийшли з системи", - "invalid_url": "Помилка з'єднання із {url}... можливо, служба не працює, або ви неправильно під'єднані до Інтернету в IPv4/IPv6.", + "invalid_url": "Помилка з'єднання із {url}… можливо, служба не працює, або ви неправильно під'єднані до Інтернету в IPv4/IPv6.", "warn_the_user_that_lock_is_acquired": "Інша команда щойно завершилася, тепер запускаємо цю команду", "warn_the_user_about_waiting_lock_again": "Досі очікуємо…", "warn_the_user_about_waiting_lock": "Зараз запускається ще одна команда YunoHost, ми чекаємо її завершення, перш ніж запустити цю", From d1a7445773b1baf8772ed5ca1ee22169f6c2fefd Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:11:15 +0000 Subject: [PATCH 80/90] Translated using Weblate (Persian) Currently translated at 95.5% (43 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fa/ --- locales/fa.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/fa.json b/locales/fa.json index 6177d812..e1aa08b5 100644 --- a/locales/fa.json +++ b/locales/fa.json @@ -20,7 +20,7 @@ "download_unknown_error": "خطا هنگام بارگیری داده ها از {url}: {error}", "download_timeout": "پاسخ {url} خیلی طول کشید ، منصرف شو.", "download_ssl_error": "خطای SSL هنگام اتصال به {url}", - "invalid_url": "اتصال به {url} انجام نشد ... شاید سرویس خاموش باشد یا در IPv4/IPv6 به درستی به اینترنت متصل نشده باشید.", + "invalid_url": "اتصال به {url} انجام نشد … شاید سرویس خاموش باشد یا در IPv4/IPv6 به درستی به اینترنت متصل نشده باشید.", "error_changing_file_permissions": "خطا هنگام تغییر مجوزهای {path}: {error}", "error_removing": "خطا هنگام حذف {path}: {error}", "error_writing_file": "خطا هنگام نوشتن فایل {file}: {error}", From 8eb3ce337700553aa19c79af11b47d4a5cb22942 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:11:15 +0000 Subject: [PATCH 81/90] Translated using Weblate (Indonesian) Currently translated at 93.3% (42 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/id/ --- locales/id.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/id.json b/locales/id.json index 9b3b5aa7..190e823f 100644 --- a/locales/id.json +++ b/locales/id.json @@ -22,7 +22,7 @@ "values_mismatch": "Tidak sama", "cannot_write_file": "Tidak dapat menyimpan berkas {file} (alasan: {error})", "unknown_error_reading_file": "Galat yang tidak diketahui ketika membaca berkas {file} (alasan: {error})", - "invalid_url": "Gagal terhubung dengan {url} ... mungkin layanan tersebut sedang tidak berjalan atau Anda tidak terhubung ke internet di IPv4/IPv6.", + "invalid_url": "Gagal terhubung dengan {url} … mungkin layanan tersebut sedang tidak berjalan atau Anda tidak terhubung ke internet di IPv4/IPv6.", "download_timeout": "{url} memakan waktu yang lama untuk menjawab, menyerah.", "download_unknown_error": "Galat ketika mengunduh data dari {url}: {error}", "download_bad_status_code": "{url} menjawab dengan kode status {code}", From 5cb073bb7593aea559a427cf5f054ed1f6e800ae Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sat, 23 Mar 2024 18:11:19 +0000 Subject: [PATCH 82/90] Translated using Weblate (Japanese) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/ja/ --- locales/ja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/locales/ja.json b/locales/ja.json index 70d76c0d..28169b75 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -41,7 +41,7 @@ "error_writing_file": "ファイル{file}書き込み時のエラー:{error}", "error_removing": "{path}を削除するときのエラー:{error}", "error_changing_file_permissions": "{path}のアクセス許可変更時のエラー: {error}", - "invalid_url": "{url}に接続できませんでした...サービスがダウンしているか、IPv4 / IPv6でインターネットに正しく接続されていない可能性があります。", + "invalid_url": "{url}に接続できませんでした…サービスがダウンしているか、IPv4 / IPv6でインターネットに正しく接続されていない可能性があります。", "download_ssl_error": "{url}への接続時のSSLエラー", "download_timeout": "{url}は応答に時間がかかりすぎたため、あきらめました。" } From 14bbff41adfa82d0e981c77f7690d9eeeed648dd Mon Sep 17 00:00:00 2001 From: OniriCorpe <6963387+OniriCorpe@users.noreply.github.com> Date: Sat, 23 Mar 2024 19:09:18 +0000 Subject: [PATCH 83/90] :robot: Reformat locale files --- locales/ar.json | 2 +- locales/ca.json | 2 +- locales/cmn.json | 2 +- locales/cs.json | 2 +- locales/da.json | 2 +- locales/de.json | 2 +- locales/en.json | 4 ++-- locales/eo.json | 2 +- locales/es.json | 2 +- locales/eu.json | 2 +- locales/fa.json | 2 +- locales/fi.json | 2 +- locales/fr.json | 6 +++--- locales/gl.json | 2 +- locales/he.json | 2 +- locales/hi.json | 2 +- locales/id.json | 2 +- locales/it.json | 2 +- locales/ja.json | 2 +- locales/kab.json | 2 +- locales/ko.json | 2 +- locales/lt.json | 2 +- locales/nb_NO.json | 2 +- locales/ne.json | 2 +- locales/nl.json | 2 +- locales/oc.json | 2 +- locales/pl.json | 2 +- locales/pt.json | 2 +- locales/pt_BR.json | 2 +- locales/ru.json | 2 +- locales/sk.json | 2 +- locales/sl.json | 2 +- locales/sv.json | 2 +- locales/te.json | 2 +- locales/tr.json | 2 +- locales/uk.json | 2 +- 36 files changed, 39 insertions(+), 39 deletions(-) diff --git a/locales/ar.json b/locales/ar.json index 390c00d6..59b825fb 100644 --- a/locales/ar.json +++ b/locales/ar.json @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock": "هناك أمر لـ YunoHost قيد التشغيل حاليا. في انتظار انتهاء تنفيذه قبل تشغيل التالي", "edit_text_question": "{}. تعديل هذا النص؟ [yN]: ", "corrupted_toml": "قراءة مُشوّهة لملف TOML مِن {ressource} (السبب : {error})" -} +} \ No newline at end of file diff --git a/locales/ca.json b/locales/ca.json index 4b2341cc..a12f3f5f 100644 --- a/locales/ca.json +++ b/locales/ca.json @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock_again": "Encara en espera…", "warn_the_user_that_lock_is_acquired": "L'altra ordre tot just ha acabat, ara s'executarà aquesta ordre", "edit_text_question": "{}. Edita aquest text ? [yN]: " -} +} \ No newline at end of file diff --git a/locales/cmn.json b/locales/cmn.json index 1f679702..75103d73 100644 --- a/locales/cmn.json +++ b/locales/cmn.json @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock": "目前正在运行另一个YunoHost命令,我们在运行此命令之前等待它完成", "corrupted_toml": "从{ressource}读取的TOML已损坏(原因:{error})", "edit_text_question": "{}.编辑此文本?[yN]: " -} +} \ No newline at end of file diff --git a/locales/cs.json b/locales/cs.json index 76ba73d9..beb3186c 100644 --- a/locales/cs.json +++ b/locales/cs.json @@ -44,4 +44,4 @@ "authentication_required": "Vyžadováno ověření", "argument_required": "Je vyžadován argument '{argument}'", "edit_text_question": "{}. Upravit tento text? [yN]: " -} +} \ No newline at end of file diff --git a/locales/da.json b/locales/da.json index 0967ef42..9e26dfee 100644 --- a/locales/da.json +++ b/locales/da.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/de.json b/locales/de.json index 3cc2f736..e02a64b4 100644 --- a/locales/de.json +++ b/locales/de.json @@ -44,4 +44,4 @@ "error_writing_file": "Fehler beim Schreiben von Datei {file}: {error}", "corrupted_toml": "Beschädigtes TOML gelesen von {ressource} (reason: {error})", "edit_text_question": "{}. Diesen Text bearbeiten? [yN]: " -} +} \ No newline at end of file diff --git a/locales/en.json b/locales/en.json index d219246c..dd276ed0 100644 --- a/locales/en.json +++ b/locales/en.json @@ -36,12 +36,12 @@ "error_writing_file": "Error when writing file {file}: {error}", "error_removing": "Error when removing {path}: {error}", "error_changing_file_permissions": "Error when changing permissions for {path}: {error}", - "invalid_url": "Failed to connect to {url}… maybe the service is down, or you are not properly connected to the Internet in IPv4/IPv6.", + "invalid_url": "Failed to connect to {url}... maybe the service is down, or you are not properly connected to the Internet in IPv4/IPv6.", "download_ssl_error": "SSL error when connecting to {url}", "download_timeout": "{url} took too long to answer, gave up.", "download_unknown_error": "Error when downloading data from {url}: {error}", "download_bad_status_code": "{url} returned status code {code}", "warn_the_user_about_waiting_lock": "Another YunoHost command is running right now, we are waiting for it to finish before running this one", - "warn_the_user_about_waiting_lock_again": "Still waiting…", + "warn_the_user_about_waiting_lock_again": "Still waiting...", "warn_the_user_that_lock_is_acquired": "The other command just completed, now starting this command" } diff --git a/locales/eo.json b/locales/eo.json index 90ccfb59..f1610b15 100644 --- a/locales/eo.json +++ b/locales/eo.json @@ -43,4 +43,4 @@ "authentication_required": "Aŭtentigo bezonata", "argument_required": "Argumento '{argument}' estas bezonata", "logged_out": "Ensalutinta" -} +} \ No newline at end of file diff --git a/locales/es.json b/locales/es.json index b981a5f2..f301104a 100644 --- a/locales/es.json +++ b/locales/es.json @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock_again": "Aún esperando…", "warn_the_user_about_waiting_lock": "Otra orden de YunoHost se está ejecutando ahora, estamos esperando a que termine antes de ejecutar esta", "edit_text_question": "{}. Editar este texto ? [sN]: " -} +} \ No newline at end of file diff --git a/locales/eu.json b/locales/eu.json index 9717f40f..71248f33 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -44,4 +44,4 @@ "download_bad_status_code": "{url} helbideak {code} egoera kodea agertu du", "invalid_url": "{url}-(e)ra konektatzeak huts egin du… agian zerbitzua ez dago martxan, edo ez zaude IPv4/IPv6 bidez ondo konektatuta internetera.", "download_timeout": "{url}(e)k denbora gehiegi behar izan du erantzuteko, bertan behera utzi du zerbitzariak." -} +} \ No newline at end of file diff --git a/locales/fa.json b/locales/fa.json index e1aa08b5..643c8b98 100644 --- a/locales/fa.json +++ b/locales/fa.json @@ -43,4 +43,4 @@ "operation_interrupted": "عملیات قطع شده است", "not_logged_in": "‌شما وارد نشده اید", "logged_out": "خارج شده" -} +} \ No newline at end of file diff --git a/locales/fi.json b/locales/fi.json index 12a8a727..81a8ddc9 100644 --- a/locales/fi.json +++ b/locales/fi.json @@ -1,4 +1,4 @@ { "password": "Salasana", "logged_out": "Kirjauduttu ulos" -} +} \ No newline at end of file diff --git a/locales/fr.json b/locales/fr.json index 610507c3..317ccf0c 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -32,7 +32,7 @@ "error_writing_file": "Erreur en écrivant le fichier {file} : {error}", "error_removing": "Erreur lors de la suppression {path} : {error}", "error_changing_file_permissions": "Erreur lors de la modification des autorisations pour {path} : {error}", - "invalid_url": "Impossible de se connecter à {url}… peut-être que le service est en panne ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", + "invalid_url": "Impossible de se connecter à {url}... peut-être que le service est en panne ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", "download_ssl_error": "Erreur SSL lors de la connexion à {url}", "download_timeout": "{url} a pris trop de temps pour répondre : abandon.", "download_unknown_error": "Erreur lors du téléchargement des données à partir de {url} : {error}", @@ -41,7 +41,7 @@ "info": "Info :", "corrupted_toml": "Fichier TOML corrompu en lecture depuis {ressource} (raison : {error})", "warn_the_user_about_waiting_lock": "Une autre commande YunoHost est actuellement en cours, nous attendons qu'elle se termine avant de démarrer celle là", - "warn_the_user_about_waiting_lock_again": "Toujours en attente…", + "warn_the_user_about_waiting_lock_again": "Toujours en attente...", "warn_the_user_that_lock_is_acquired": "La commande précédente vient de se terminer, lancement de cette nouvelle commande", "edit_text_question": "{}. Modifier ce texte ? [yN] : " -} +} \ No newline at end of file diff --git a/locales/gl.json b/locales/gl.json index a7d15800..4fa355cf 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -44,4 +44,4 @@ "cannot_open_file": "Non se puido abrir o ficheiro {file} (razón: {error})", "websocket_request_expected": "Agardábase unha solicitude WebSocket", "edit_text_question": "{}. Editar este texto ? [yN]: " -} +} \ No newline at end of file diff --git a/locales/he.json b/locales/he.json index 0967ef42..9e26dfee 100644 --- a/locales/he.json +++ b/locales/he.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/hi.json b/locales/hi.json index 2a052d6e..57781db8 100644 --- a/locales/hi.json +++ b/locales/hi.json @@ -26,4 +26,4 @@ "warning": "चेतावनी:", "websocket_request_expected": "एक WebSocket अनुरोध की उम्मीद।", "info": "सूचना:" -} +} \ No newline at end of file diff --git a/locales/id.json b/locales/id.json index 190e823f..4dacc72e 100644 --- a/locales/id.json +++ b/locales/id.json @@ -43,4 +43,4 @@ "corrupted_yaml": "Pembacaan rusak untuk YAML {ressource} (alasan: {error})", "corrupted_toml": "Pembacaan rusak untuk TOML {ressource} (alasan: {error})", "corrupted_json": "Pembacaan rusak untuk JSON {ressource} (alasan: {error})" -} +} \ No newline at end of file diff --git a/locales/it.json b/locales/it.json index 99dfb3cd..a7e9f82c 100644 --- a/locales/it.json +++ b/locales/it.json @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock": "Un altro comando YunoHost è in esecuzione in questo momento, stiamo aspettando che finisca prima di eseguire questo", "corrupted_toml": "TOML corrotto da {ressource} (motivo: {error})", "edit_text_question": "{}. Modificare il testo? [yN]: " -} +} \ No newline at end of file diff --git a/locales/ja.json b/locales/ja.json index 28169b75..f9f6e5ba 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -44,4 +44,4 @@ "invalid_url": "{url}に接続できませんでした…サービスがダウンしているか、IPv4 / IPv6でインターネットに正しく接続されていない可能性があります。", "download_ssl_error": "{url}への接続時のSSLエラー", "download_timeout": "{url}は応答に時間がかかりすぎたため、あきらめました。" -} +} \ No newline at end of file diff --git a/locales/kab.json b/locales/kab.json index 1c276ae4..29179138 100644 --- a/locales/kab.json +++ b/locales/kab.json @@ -5,4 +5,4 @@ "logged_in": "Taqqneḍ", "logged_out": "Yeffeɣ", "authentication_required": "Tlaq tuqqna" -} +} \ No newline at end of file diff --git a/locales/ko.json b/locales/ko.json index 0967ef42..9e26dfee 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/lt.json b/locales/lt.json index 0967ef42..9e26dfee 100644 --- a/locales/lt.json +++ b/locales/lt.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/nb_NO.json b/locales/nb_NO.json index a5562803..b56a7ebd 100644 --- a/locales/nb_NO.json +++ b/locales/nb_NO.json @@ -16,4 +16,4 @@ "confirm": "Bekreft {prompt}", "logged_out": "Utlogget", "password": "Passord" -} +} \ No newline at end of file diff --git a/locales/ne.json b/locales/ne.json index 68aaf675..275cf377 100644 --- a/locales/ne.json +++ b/locales/ne.json @@ -6,4 +6,4 @@ "confirm": "कन्फर्म {prompt}", "authentication_required": "प्रमाणीकरण आवाश्यक छ", "argument_required": "तर्क '{argument}' आवश्यक छ" -} +} \ No newline at end of file diff --git a/locales/nl.json b/locales/nl.json index d0c68a52..e931d294 100644 --- a/locales/nl.json +++ b/locales/nl.json @@ -44,4 +44,4 @@ "corrupted_yaml": "Ongeldig YAML bestand op {ressource} (reden: {error})", "info": "Ter info:", "edit_text_question": "{}. Deze tekst bewerken ? [yN]: " -} +} \ No newline at end of file diff --git a/locales/oc.json b/locales/oc.json index 9835ea85..497a1f83 100644 --- a/locales/oc.json +++ b/locales/oc.json @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock_again": "Encara en espèra…", "warn_the_user_that_lock_is_acquired": "l’autra comanda ven d’acabar, ara lançament d’aquesta comanda", "edit_text_question": "{}. Modificar aqueste tèxte ? [yN]: " -} +} \ No newline at end of file diff --git a/locales/pl.json b/locales/pl.json index cd34277c..db5788c2 100644 --- a/locales/pl.json +++ b/locales/pl.json @@ -44,4 +44,4 @@ "authentication_required": "Wymagane uwierzytelnienie", "argument_required": "Argument „{argument}” jest wymagany", "edit_text_question": "{}. Zedytować ten tekst? [tN]: " -} +} \ No newline at end of file diff --git a/locales/pt.json b/locales/pt.json index 1f677ce5..561f2788 100644 --- a/locales/pt.json +++ b/locales/pt.json @@ -44,4 +44,4 @@ "corrupted_toml": "TOML corrompido lido em {ressource} (motivo: {error})", "info": "Informações:", "edit_text_question": "{}. Editar este texto ? [yN]: " -} +} \ No newline at end of file diff --git a/locales/pt_BR.json b/locales/pt_BR.json index 0967ef42..9e26dfee 100644 --- a/locales/pt_BR.json +++ b/locales/pt_BR.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/ru.json b/locales/ru.json index a61f4cdf..b4501027 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -44,4 +44,4 @@ "invalid_usage": "Неправильное использование, передайте --help, чтобы увидеть помощь", "info": "Информация:", "edit_text_question": "{}. Изменить этот текст? [yN]: " -} +} \ No newline at end of file diff --git a/locales/sk.json b/locales/sk.json index 2254917d..06acbc39 100644 --- a/locales/sk.json +++ b/locales/sk.json @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock": "Práve prebieha iná operácia YunoHost, pred spustením čakáme na jej dokončenie", "warn_the_user_about_waiting_lock_again": "Stále čakáme…", "warn_the_user_that_lock_is_acquired": "Predchádzajúca operácia bola dokončená, teraz spúšťame túto" -} +} \ No newline at end of file diff --git a/locales/sl.json b/locales/sl.json index 0967ef42..9e26dfee 100644 --- a/locales/sl.json +++ b/locales/sl.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/sv.json b/locales/sv.json index d6920fca..e103b3aa 100644 --- a/locales/sv.json +++ b/locales/sv.json @@ -43,4 +43,4 @@ "invalid_usage": "Ogiltig användning, pass --help för att se hjälp", "instance_already_running": "Det finns redan en YunoHost-operation. Vänta tills den är klar innan du kör en annan.", "authentication_required": "Autentisering krävs" -} +} \ No newline at end of file diff --git a/locales/te.json b/locales/te.json index 0967ef42..9e26dfee 100644 --- a/locales/te.json +++ b/locales/te.json @@ -1 +1 @@ -{} +{} \ No newline at end of file diff --git a/locales/tr.json b/locales/tr.json index 5e6ae491..61b0a80e 100644 --- a/locales/tr.json +++ b/locales/tr.json @@ -44,4 +44,4 @@ "deprecated_command_alias": "'{prog} {old}' kullanımdan kaldırıldı ve gelecekte kaldırılacak, bunun yerine '{prog} {new}' kullanın", "deprecated_command": "'{prog} {command}' kullanımdan kaldırıldı ve gelecekte kaldırılacak", "edit_text_question": "{}. Bu metni düzenle ? [yN]: " -} +} \ No newline at end of file diff --git a/locales/uk.json b/locales/uk.json index 3d5128ca..8f91ffff 100644 --- a/locales/uk.json +++ b/locales/uk.json @@ -44,4 +44,4 @@ "authentication_required": "Потрібна автентифікація", "argument_required": "Потрібен аргумент '{argument}'", "edit_text_question": "{}. Редагувати цей текст? [yN]: " -} +} \ No newline at end of file From ac447a1f9df635c268c1900d88aef2210ecd708d Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Tue, 7 May 2024 23:08:42 +0000 Subject: [PATCH 84/90] Translated using Weblate (French) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/fr/ --- locales/fr.json | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/locales/fr.json b/locales/fr.json index 317ccf0c..9b3d01d2 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -4,11 +4,11 @@ "confirm": "Confirmez {prompt}", "deprecated_command": "'{prog} {command}' est déprécié et sera bientôt supprimé", "deprecated_command_alias": "'{prog} {old}' est déprécié et sera bientôt supprimé, utilisez '{prog} {new}' à la place", - "error": "Erreur :", + "error": "Erreur :", "file_not_exist": "Le fichier '{path}' n'existe pas", - "folder_exists": "Le dossier existe déjà : '{path}'", + "folder_exists": "Le dossier existe déjà : '{path}'", "instance_already_running": "Une instance est déjà en cours d'exécution, merci d'attendre sa fin avant d'en lancer une autre.", - "invalid_argument": "Argument '{argument}' incorrect : {error}", + "invalid_argument": "Argument '{argument}' incorrect : {error}", "invalid_usage": "Utilisation erronée, utilisez --help pour accéder à l'aide", "logged_in": "Connecté", "logged_out": "Déconnecté", @@ -18,30 +18,30 @@ "pattern_not_match": "Ne correspond pas au motif", "root_required": "Vous devez avoir les droits d'administration pour exécuter cette action", "server_already_running": "Un serveur est déjà en cours d'exécution sur ce port", - "success": "Succès !", + "success": "Succès !", "unable_authenticate": "Impossible de vous authentifier", "unknown_group": "Le groupe '{group}' est inconnu", "unknown_user": "Le compte '{user}' est inconnu", "values_mismatch": "Les valeurs ne correspondent pas", - "warning": "Attention :", + "warning": "Attention :", "websocket_request_expected": "Une requête WebSocket est attendue", - "cannot_open_file": "Impossible d'ouvrir le fichier {file} (raison : {error})", - "cannot_write_file": "Ne peut pas écrire le fichier {file} (raison : {error})", - "unknown_error_reading_file": "Erreur inconnue en essayant de lire le fichier {file} (raison :{error})", - "corrupted_json": "Fichier JSON corrompu en lecture depuis {ressource} (raison : {error})", - "error_writing_file": "Erreur en écrivant le fichier {file} : {error}", - "error_removing": "Erreur lors de la suppression {path} : {error}", - "error_changing_file_permissions": "Erreur lors de la modification des autorisations pour {path} : {error}", + "cannot_open_file": "Impossible d'ouvrir le fichier {file} (raison : {error})", + "cannot_write_file": "Ne peut pas écrire le fichier {file} (raison : {error})", + "unknown_error_reading_file": "Erreur inconnue en essayant de lire le fichier {file} (raison :{error})", + "corrupted_json": "Fichier JSON corrompu en lecture depuis {ressource} (raison : {error})", + "error_writing_file": "Erreur en écrivant le fichier {file} : {error}", + "error_removing": "Erreur lors de la suppression {path} : {error}", + "error_changing_file_permissions": "Erreur lors de la modification des autorisations pour {path} : {error}", "invalid_url": "Impossible de se connecter à {url}... peut-être que le service est en panne ou que vous n'êtes pas correctement connecté à Internet en IPv4/IPv6.", "download_ssl_error": "Erreur SSL lors de la connexion à {url}", - "download_timeout": "{url} a pris trop de temps pour répondre : abandon.", - "download_unknown_error": "Erreur lors du téléchargement des données à partir de {url} : {error}", + "download_timeout": "{url} a pris trop de temps pour répondre : abandon.", + "download_unknown_error": "Erreur lors du téléchargement des données à partir de {url} : {error}", "download_bad_status_code": "{url} renvoie le code d'état {code}", - "corrupted_yaml": "Fichier YAML corrompu en lecture depuis {ressource} (raison : {error})", - "info": "Info :", - "corrupted_toml": "Fichier TOML corrompu en lecture depuis {ressource} (raison : {error})", + "corrupted_yaml": "Fichier YAML corrompu en lecture depuis {ressource} (raison : {error})", + "info": "Info :", + "corrupted_toml": "Fichier TOML corrompu en lecture depuis {ressource} (raison : {error})", "warn_the_user_about_waiting_lock": "Une autre commande YunoHost est actuellement en cours, nous attendons qu'elle se termine avant de démarrer celle là", "warn_the_user_about_waiting_lock_again": "Toujours en attente...", "warn_the_user_that_lock_is_acquired": "La commande précédente vient de se terminer, lancement de cette nouvelle commande", - "edit_text_question": "{}. Modifier ce texte ? [yN] : " -} \ No newline at end of file + "edit_text_question": "{}. Modifier ce texte ? [yN] : " +} From 578fb497e9de2da1c21a88d13eb85501c9995f6f Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Wed, 8 May 2024 01:52:11 +0200 Subject: [PATCH 85/90] i18n: accept U+202F as an okay char --- test/reformat_locales.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/reformat_locales.py b/test/reformat_locales.py index 1807e756..7b49e451 100644 --- a/test/reformat_locales.py +++ b/test/reformat_locales.py @@ -24,8 +24,8 @@ godamn_spaces_of_hell = [ "\u2008", "\u2009", "\u200A", - "\u202f", - "\u202F", + #"\u202f", + #"\u202F", "\u3000", ] From 96539ce5c759c4bdf1a094dddf325825a175c491 Mon Sep 17 00:00:00 2001 From: OniriCorpe <6963387+OniriCorpe@users.noreply.github.com> Date: Tue, 7 May 2024 23:52:31 +0000 Subject: [PATCH 86/90] :art: Format Python code with Black --- test/reformat_locales.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/reformat_locales.py b/test/reformat_locales.py index 7b49e451..b7020c85 100644 --- a/test/reformat_locales.py +++ b/test/reformat_locales.py @@ -24,8 +24,8 @@ godamn_spaces_of_hell = [ "\u2008", "\u2009", "\u200A", - #"\u202f", - #"\u202F", + # "\u202f", + # "\u202F", "\u3000", ] From 36c20d5582f8beb8019b55007571dfe4ea087da3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20M?= Date: Wed, 8 May 2024 04:43:20 +0000 Subject: [PATCH 87/90] Translated using Weblate (Galician) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/gl/ --- locales/gl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/gl.json b/locales/gl.json index 4fa355cf..8bfb5670 100644 --- a/locales/gl.json +++ b/locales/gl.json @@ -32,7 +32,7 @@ "download_unknown_error": "Erro ao descargar os datos desde {url}: {error}", "download_timeout": "{url} está tardando en responder, deixámolo.", "download_ssl_error": "Erro SSL ao conectar con {url}", - "invalid_url": "Fallou a conexión con {url}… pode que o servizo estea caído, ou que non teñas conexión a Internet con IPv4/IPv6.", + "invalid_url": "Fallou a conexión con {url}... pode que o servizo estea caído, ou que non teñas conexión a Internet con IPv4/IPv6.", "error_changing_file_permissions": "Erro ao cambiar os permisos de {path}: {error}", "error_removing": "Erro ao eliminar {path}: {error}", "error_writing_file": "Erro ao escribir o ficheiro {file}: {error}", @@ -44,4 +44,4 @@ "cannot_open_file": "Non se puido abrir o ficheiro {file} (razón: {error})", "websocket_request_expected": "Agardábase unha solicitude WebSocket", "edit_text_question": "{}. Editar este texto ? [yN]: " -} \ No newline at end of file +} From 663d80666a664c728078a2357cc9cc1ae312ec26 Mon Sep 17 00:00:00 2001 From: rosbeef andino Date: Thu, 9 May 2024 16:24:35 +0000 Subject: [PATCH 88/90] Translated using Weblate (Spanish) Currently translated at 97.7% (44 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/es/ --- locales/es.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/locales/es.json b/locales/es.json index f301104a..a0bd92c9 100644 --- a/locales/es.json +++ b/locales/es.json @@ -32,7 +32,7 @@ "error_writing_file": "Error al escribir el archivo {file}: {error}", "error_removing": "Error al eliminar {path}: {error}", "error_changing_file_permissions": "Error al cambiar los permisos para {path}: {error}", - "invalid_url": "URL inválida {url} (¿Existe este sitio?).", + "invalid_url": "Imposible de conectarse a {url} (¿ la URL esta correcta, existe este sitio, o internet esta accesible?).", "download_ssl_error": "Error SSL al conectar con {url}", "download_timeout": "{url} tardó demasiado en responder, abandono.", "download_unknown_error": "Error al descargar datos desde {url} : {error}", @@ -44,4 +44,4 @@ "warn_the_user_about_waiting_lock_again": "Aún esperando…", "warn_the_user_about_waiting_lock": "Otra orden de YunoHost se está ejecutando ahora, estamos esperando a que termine antes de ejecutar esta", "edit_text_question": "{}. Editar este texto ? [sN]: " -} \ No newline at end of file +} From dc1ce5a9ab3c96aeb7caac7ee628c64563ecfdb1 Mon Sep 17 00:00:00 2001 From: xabirequejo Date: Thu, 9 May 2024 16:41:06 +0000 Subject: [PATCH 89/90] Translated using Weblate (Basque) Currently translated at 100.0% (45 of 45 strings) Translation: YunoHost/moulinette Translate-URL: https://translate.yunohost.org/projects/yunohost/moulinette/eu/ --- locales/eu.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/locales/eu.json b/locales/eu.json index 71248f33..74266205 100644 --- a/locales/eu.json +++ b/locales/eu.json @@ -22,7 +22,7 @@ "download_ssl_error": "SSL errorea {url}-(e)ra konektatzean", "corrupted_toml": "{ressource}-eko/go TOMLa kaltetuta dago (zergatia: {error})", "warn_the_user_about_waiting_lock": "YunoHosten beste komando bat ari da exekutatzen, horrek amaitu arte gaude zain", - "warn_the_user_about_waiting_lock_again": "Zain…", + "warn_the_user_about_waiting_lock_again": "Zain...", "folder_exists": "Direktorioa existitzen da dagoeneko: '{path}'", "instance_already_running": "YunoHosten eragiketa bat exekutatzen ari da dagoeneko. Itxaron amaitu arte beste eragiketa bat abiarazi baino lehen.", "invalid_usage": "Erabilera okerra, idatzi --help aukerak ikusteko", @@ -42,6 +42,6 @@ "error_writing_file": "Errorea {file} fitxategia idazterakoan: {error}", "error_removing": "Errorea {path} ezabatzerakoan: {error}", "download_bad_status_code": "{url} helbideak {code} egoera kodea agertu du", - "invalid_url": "{url}-(e)ra konektatzeak huts egin du… agian zerbitzua ez dago martxan, edo ez zaude IPv4/IPv6 bidez ondo konektatuta internetera.", + "invalid_url": "{url}-(e)ra konektatzeak huts egin du... agian zerbitzua ez dago martxan, edo ez zaude IPv4/IPv6 bidez ondo konektatuta internetera.", "download_timeout": "{url}(e)k denbora gehiegi behar izan du erantzuteko, bertan behera utzi du zerbitzariak." -} \ No newline at end of file +} From 497ea8a4af1c0b486837e72b5bf757848f8e1854 Mon Sep 17 00:00:00 2001 From: OniriCorpe Date: Sun, 19 May 2024 23:55:58 +0200 Subject: [PATCH 90/90] chores: update changelog for 11.2.1 & add make_changelog script --- debian/changelog | 9 +++++++++ maintenance/make_changelog.sh | 37 +++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 maintenance/make_changelog.sh diff --git a/debian/changelog b/debian/changelog index 9b60f354..6561ca05 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +moulinette (11.2.1) stable; urgency=low + + - repo chores: various black enhancements + - [i18n] Translations updated for Arabic, Basque, Catalan, Chinese (Simplified), Czech, Dutch, English, Esperanto, French, Galician, German, Hindi, Indonesian, Italian, Japanese, Nepali, Norwegian Bokmål, Persian, Polish, Portuguese, Russian, Spanish, Swedish, Turkish, Ukrainian + + Thanks to all contributors <3 ! (Alexandre Aubin, Francescc, José M, Metin Bektas, ppr, Psycojoker, rosbeef andino, Tagada, xabirequejo, xaloc33) + + -- OniriCorpe Sun, 19 May 2024 23:49:00 +0200 + moulinette (11.2) stable; urgency=low - [i18n] Translations updated for Japanese diff --git a/maintenance/make_changelog.sh b/maintenance/make_changelog.sh new file mode 100644 index 00000000..6acf3a92 --- /dev/null +++ b/maintenance/make_changelog.sh @@ -0,0 +1,37 @@ +VERSION="11.2.1" +RELEASE="stable" +REPO=$(basename $(git rev-parse --show-toplevel)) +REPO_URL=$(git remote get-url origin) +ME=$(git config --get user.name) +EMAIL=$(git config --get user.email) + +LAST_RELEASE=$(git tag --list 'debian/11.*' --sort="v:refname" | tail -n 1) + +echo "$REPO ($VERSION) $RELEASE; urgency=low" +echo "" + +git log $LAST_RELEASE.. -n 10000 --first-parent --pretty=tformat:' - %b%s (%h)' \ +| sed -E "s&Merge .*#([0-9]+).*\$& \([#\1]\(http://github.com/YunoHost/$REPO/pull/\1\)\)&g" \ +| sed -E "/Co-authored-by: .* <.*>/d" \ +| grep -v "Translations update from Weblate" \ +| tac + +TRANSLATIONS=$(git log $LAST_RELEASE... -n 10000 --pretty=format:"%s" \ + | grep "Translated using Weblate" \ + | sed -E "s/Translated using Weblate \((.*)\)/\1/g" \ + | sort | uniq | tr '\n' ', ' | sed -e 's/,$//g' -e 's/,/, /g') +[[ -z "$TRANSLATIONS" ]] || echo " - [i18n] Translations updated for $TRANSLATIONS" + +echo "" +CONTRIBUTORS=$(git log -n10 --pretty=format:'%Cred%h%Creset %C(bold blue)(%an) %Creset%Cgreen(%cr)%Creset - %s %C(yellow)%d%Creset' --abbrev-commit $LAST_RELEASE... -n 10000 --pretty=format:"%an" \ + | sort | uniq | grep -v "$ME" | grep -v 'yunohost-bot' | grep -vi 'weblate' \ + | tr '\n' ', ' | sed -e 's/,$//g' -e 's/,/, /g') +[[ -z "$CONTRIBUTORS" ]] || echo " Thanks to all contributors <3 ! ($CONTRIBUTORS)" +echo "" +echo " -- $ME <$EMAIL> $(date -R)" +echo "" + + + +# PR links can be converted to regular texts using : sed -E 's@\[(#[0-9]*)\]\([^ )]*\)@\1@g' +# Or readded with sed -E 's@#([0-9]*)@[YunoHost#\1](https://github.com/yunohost/yunohost/pull/\1)@g' | sed -E 's@\((\w+)\)@([YunoHost/\1](https://github.com/yunohost/yunohost/commit/\1))@g'