diff --git a/.github/scripts/tests/test_build_i18n_messages.py b/.github/scripts/tests/test_build_i18n_messages.py index 0049a387..1f57c74e 100644 --- a/.github/scripts/tests/test_build_i18n_messages.py +++ b/.github/scripts/tests/test_build_i18n_messages.py @@ -97,10 +97,23 @@ class I18nMessagesTests(unittest.TestCase): if text == "Two": raise RuntimeError("offline fixture failure") return "IT " + text + # --refresh alone never replaces an existing translation. result, actual, calls, output, _ = self.run_generator( {"items": ["One", "Two", "Three"]}, {"items": ["Uno", "Due"]}, "--refresh", "--save-every", "1", provider=provider) self.assertEqual(result, 0) + self.assertEqual(actual, {"items": ["Uno", "Due", "IT Three"]}) + self.assertEqual(len(calls), 1) + # Named keys are retranslated; a provider failure keeps the value. + with tempfile.NamedTemporaryFile("w", suffix=".txt", delete=False) as keys: + keys.write("items.0\nitems.1\n") + try: + result, actual, calls, output, _ = self.run_generator( + {"items": ["One", "Two", "Three"]}, {"items": ["Uno", "Due"]}, + "--refresh", "--refresh-keys", keys.name, "--save-every", "1", provider=provider) + finally: + Path(keys.name).unlink() + self.assertEqual(result, 0) self.assertEqual(actual, {"items": ["IT One", "Due", "IT Three"]}) self.assertEqual(len(calls), 3) self.assertIn("1 translation failures", output) @@ -178,9 +191,10 @@ class I18nMessagesTests(unittest.TestCase): mock.patch.object(MODULE, "write_json", wraps=MODULE.write_json) as writer, \ redirect_stderr(output), redirect_stdout(output): self.assertEqual(MODULE.main(), 1) + # --refresh without --refresh-keys keeps the existing value. self.assertEqual(json.loads((root / "sk/common.json").read_text()), - {"items": ["SK One" if options else "Human", "SK Two"]}) - self.assertEqual(provider.call_count, 2 if options else 1) + {"items": ["Human", "SK Two"]}) + self.assertEqual(provider.call_count, 1) self.assertTrue(all(call.args[0].parent.name == "sk" for call in writer.call_args_list)) for lang in ["en", "it", "de"]: self.assertEqual((root / lang / "common.json").read_bytes(), before[lang]) diff --git a/.github/scripts/tests/test_build_web_docs_i18n.py b/.github/scripts/tests/test_build_web_docs_i18n.py index e9c832c8..ea2693ca 100644 --- a/.github/scripts/tests/test_build_web_docs_i18n.py +++ b/.github/scripts/tests/test_build_web_docs_i18n.py @@ -58,7 +58,7 @@ class WebDocsI18nTests(unittest.TestCase): def test_human_translation_is_not_pending(self): source = {"title": "Updates", "url": "https://example.com"} target = {"title": "Actualizaciones", "url": "https://example.com"} - self.assertEqual(MODULE.pending_leaves(source, target, refresh=False), []) + self.assertEqual(MODULE.pending_leaves(source, target), []) def test_changed_source_text_is_pending_even_with_existing_translation(self): source = {"title": "Updated installation guidance"} @@ -67,7 +67,6 @@ class WebDocsI18nTests(unittest.TestCase): leaves = MODULE.pending_leaves( source, target, - refresh=False, forced_tokens={token}, ) self.assertEqual([leaf.path for leaf in leaves], [("title",)]) diff --git a/AppImage/messages/de/common.json b/AppImage/messages/de/common.json index fad84f32..256e7a32 100644 --- a/AppImage/messages/de/common.json +++ b/AppImage/messages/de/common.json @@ -1069,7 +1069,8 @@ "backups": "Backups", "updates": "Aktualisierungen", "firewall": "Firewall", - "app": "App" + "app": "App", + "logs": "Logs" }, "actions": { "start": "Start", @@ -1169,6 +1170,44 @@ "empty": "Es wurden noch keine Firewall-Ereignisse aufgezeichnet.", "emptyHint": "Regeln mit log:info oder höher füllen diese Ansicht, wenn Pakete eintreffen." }, + "consoleLog": { + "title": "Konsolenausgabe", + "description": "Standardausgabe und Fehlerausgabe des Hauptprozesses des Images.", + "stopped": "Der Container ist gestoppt; das Log enthält die Ausgabe seiner vorherigen Läufe.", + "lastLines": "Letzte {count} Zeilen", + "follow": "Folgen", + "pause": "Pausieren", + "refresh": "Aktualisieren", + "download": "Herunterladen", + "filter": "Zeilen filtern", + "loading": "Konsolenausgabe wird geladen...", + "empty": "Noch keine Ausgabe aufgezeichnet.", + "emptyHint": "Zeilen erscheinen hier, sobald der Container auf seine Konsole schreibt.", + "noMatches": "Keine Zeile entspricht dem Filter.", + "readFailed": "Das Konsolen-Log konnte nicht gelesen werden", + "notAvailableTitle": "Dieser Container hat kein Konsolen-Log", + "notAvailableHint": "Das Konsolen-Log wird eingerichtet, wenn ProxMenux den Container aus seinem OCI-Image installiert." + }, + "ociUpdates": { + "notTracked": "Wird die Anwendung in der App-Registerkarte registriert, wird ihr Image hier verfolgt.", + "installedImage": "Installiertes Image", + "newImage": "Neues Image {image} verfügbar", + "stackNote": "Teil einer Multi-Container-Anwendung (Haupt-CT {primary}, {count} Container): Das Update umfasst alle.", + "pendingNote": "Ein Vorgang an diesem Container wurde unterbrochen; Wiederherstellen öffnet seine Wiederherstellung.", + "update": "Aktualisieren", + "recreate": "Neu erstellen", + "recover": "Wiederherstellen", + "terminalTitleUpdate": "OCI-Anwendung aktualisieren", + "terminalTitleRecreate": "OCI-Anwendung neu erstellen", + "terminalDescription": "Derselbe Ablauf wie OCI manager Apps → Installierte OCI-Anwendungen verwalten.", + "keepBackup": "Das vor dem Update erstellte Backup behalten", + "noKeepBackup": "Das vor dem Update erstellte Backup wird nicht behalten", + "keepBackupHelp": "Jedes Update sichert den Container, bevor sein Image ersetzt wird, um ihn wiederherzustellen, falls das Update fehlschlägt. Mit dieser Option wird dieses Backup im gewählten Speicher behalten; auf Proxmox Backup Server wird vor dem Update ein Backup geschrieben.", + "scheduleHelp": "Nur das Image wird aktualisiert, und nur wenn seine Registry ein neues veröffentlicht.", + "releaseDelayHelp": "Ein neues Image wird erst installiert, wenn es mindestens so alt ist.", + "ackExternal": "Host-Verzeichnisse werden durch das Backup nicht zurückgesetzt", + "ackExternalHelp": "Dieser Container nutzt Host-Verzeichnisse. Ein geplantes Update läuft nur, wenn dies bestätigt ist." + }, "options": { "title": "Optionen", "snapshotBefore": "Schnappschuss vor der Bewerbung", @@ -1429,6 +1468,14 @@ "loadFailed": "Die Massenaktualisierungskonfiguration konnte nicht geladen werden." }, "appEditor": { + "methodOciImage": "OCI-Image (von ProxMenux installiert)", + "ociImageHelp": "Version und Updates werden aus dem Image gelesen, aus dem dieser Container erstellt wurde. ProxMenux hat ihn installiert, daher gibt es nichts zu konfigurieren: Das installierte Image wird mit dem verglichen, das seine Registry heute veröffentlicht.", + "ociAppVersion": "Anwendung", + "ociImage": "Image", + "ociNewImage": "Neues Image", + "ociImageCurrent": "Version", + "refreshData": "Daten aktualisieren", + "refreshingData": "Wird aktualisiert…", "dockerDetectedWithWorkloads": "Docker mit {count} Anwendungen in Containern erkannt", "dockerWorkloadsHeading": "Anwendungen in Docker", "runsInsideDocker": "Wird mit dem Docker-Image aktualisiert", diff --git a/AppImage/messages/fr/common.json b/AppImage/messages/fr/common.json index 7b289a8d..fe80f79c 100644 --- a/AppImage/messages/fr/common.json +++ b/AppImage/messages/fr/common.json @@ -1069,7 +1069,8 @@ "backups": "Sauvegardes", "updates": "Mises à jour", "firewall": "Pare-feu", - "app": "Application" + "app": "Application", + "logs": "Logs" }, "actions": { "start": "Commencer", @@ -1169,6 +1170,44 @@ "empty": "Aucun événement de pare-feu enregistré pour le moment.", "emptyHint": "Règles avec journal : informations ou supérieures rempliront cette vue à mesure que les paquets arrivent." }, + "consoleLog": { + "title": "Sortie console", + "description": "Sortie standard et sortie d'erreur du processus principal de l'image.", + "stopped": "Le conteneur est arrêté ; le log conserve la sortie de ses exécutions précédentes.", + "lastLines": "{count} dernières lignes", + "follow": "Suivre", + "pause": "Pause", + "refresh": "Actualiser", + "download": "Télécharger", + "filter": "Filtrer les lignes", + "loading": "Chargement de la sortie console...", + "empty": "Aucune sortie enregistrée pour l'instant.", + "emptyHint": "Les lignes apparaissent ici à mesure que le conteneur écrit sur sa console.", + "noMatches": "Aucune ligne ne correspond au filtre.", + "readFailed": "Impossible de lire le log de la console", + "notAvailableTitle": "Ce conteneur n'a pas de log de console", + "notAvailableHint": "Le log de la console est configuré lorsque ProxMenux installe le conteneur depuis son image OCI." + }, + "ociUpdates": { + "notTracked": "En enregistrant l'application dans l'onglet App, son image est suivie ici.", + "installedImage": "Image installée", + "newImage": "Nouvelle image {image} disponible", + "stackNote": "Fait partie d'une application multi-conteneurs (CT principal {primary}, {count} conteneurs) : la mise à jour les couvre tous.", + "pendingNote": "Une opération sur ce conteneur a été interrompue ; Récupérer ouvre sa récupération.", + "update": "Mettre à jour", + "recreate": "Recréer", + "recover": "Récupérer", + "terminalTitleUpdate": "Mettre à jour l'application OCI", + "terminalTitleRecreate": "Recréer l'application OCI", + "terminalDescription": "Le même parcours que OCI manager Apps → Gérer les applications OCI installées.", + "keepBackup": "Conserver la sauvegarde prise avant la mise à jour", + "noKeepBackup": "La sauvegarde prise avant la mise à jour n'est pas conservée", + "keepBackupHelp": "Chaque mise à jour sauvegarde le conteneur avant de remplacer son image, pour le restaurer si la mise à jour échoue. Avec cette option, cette sauvegarde est conservée dans le stockage choisi ; sur Proxmox Backup Server, une sauvegarde est écrite avant la mise à jour.", + "scheduleHelp": "Seule l'image est mise à jour, et seulement lorsque son registre en publie une nouvelle.", + "releaseDelayHelp": "Une nouvelle image n'est installée qu'une fois qu'elle a au moins cette ancienneté.", + "ackExternal": "Les répertoires de l'hôte ne sont pas rétablis par la sauvegarde", + "ackExternalHelp": "Ce conteneur utilise des répertoires de l'hôte. Une mise à jour planifiée ne s'exécute qu'avec cette confirmation." + }, "options": { "title": "Possibilités", "snapshotBefore": "Instantané avant de postuler", @@ -1429,6 +1468,14 @@ "loadFailed": "Impossible de charger la configuration de la mise à jour groupée." }, "appEditor": { + "methodOciImage": "Image OCI (installée par ProxMenux)", + "ociImageHelp": "La version et ses mises à jour sont lues depuis l'image à partir de laquelle ce conteneur a été créé. ProxMenux l'a installé, il n'y a donc rien à configurer : l'image installée est comparée à celle que son registre publie aujourd'hui.", + "ociAppVersion": "Application", + "ociImage": "Image", + "ociNewImage": "Nouvelle image", + "ociImageCurrent": "Version", + "refreshData": "Actualiser les données", + "refreshingData": "Actualisation…", "dockerDetectedWithWorkloads": "Docker détecté avec {count} applications conteneurisées", "dockerWorkloadsHeading": "Applications dans Docker", "runsInsideDocker": "Mise à jour avec son image Docker", diff --git a/AppImage/messages/it/common.json b/AppImage/messages/it/common.json index 16e8a321..fe44d79f 100644 --- a/AppImage/messages/it/common.json +++ b/AppImage/messages/it/common.json @@ -1069,7 +1069,8 @@ "backups": "Backup", "updates": "Aggiornamenti", "firewall": "Firewall", - "app": "App" + "app": "App", + "logs": "Logs" }, "actions": { "start": "Inizio", @@ -1169,6 +1170,44 @@ "empty": "Nessun evento firewall ancora registrato.", "emptyHint": "Le regole con log: info o superiore popoleranno questa visualizzazione all'arrivo dei pacchetti." }, + "consoleLog": { + "title": "Output della console", + "description": "Output standard e di errore del processo principale dell'immagine.", + "stopped": "Il container è fermo; il log conserva l'output delle esecuzioni precedenti.", + "lastLines": "Ultime {count} righe", + "follow": "Segui", + "pause": "Pausa", + "refresh": "Aggiorna", + "download": "Scarica", + "filter": "Filtra righe", + "loading": "Caricamento dell'output della console...", + "empty": "Nessun output registrato finora.", + "emptyHint": "Le righe compaiono qui man mano che il container scrive sulla sua console.", + "noMatches": "Nessuna riga corrisponde al filtro.", + "readFailed": "Impossibile leggere il log della console", + "notAvailableTitle": "Questo container non ha un log della console", + "notAvailableHint": "Il log della console viene configurato quando ProxMenux installa il container dalla sua immagine OCI." + }, + "ociUpdates": { + "notTracked": "Registrando l'applicazione nella scheda App, qui se ne segue l'immagine.", + "installedImage": "Immagine installata", + "newImage": "Nuova immagine {image} disponibile", + "stackNote": "Parte di un'applicazione multi-container (CT principale {primary}, {count} container): l'aggiornamento li comprende tutti.", + "pendingNote": "Un'operazione su questo container è stata interrotta; Recupera ne apre il ripristino.", + "update": "Aggiorna", + "recreate": "Ricrea", + "recover": "Recupera", + "terminalTitleUpdate": "Aggiorna applicazione OCI", + "terminalTitleRecreate": "Ricrea applicazione OCI", + "terminalDescription": "Lo stesso percorso di OCI manager Apps → Gestisci le applicazioni OCI installate.", + "keepBackup": "Conserva il backup eseguito prima dell'aggiornamento", + "noKeepBackup": "Il backup eseguito prima dell'aggiornamento non viene conservato", + "keepBackupHelp": "Ogni aggiornamento esegue il backup del container prima di sostituirne l'immagine, per ripristinarlo se l'aggiornamento fallisce. Con questa opzione quel backup viene conservato nello storage scelto; su Proxmox Backup Server viene scritto un backup prima dell'aggiornamento.", + "scheduleHelp": "Viene aggiornata solo l'immagine, e solo quando il suo registro ne pubblica una nuova.", + "releaseDelayHelp": "Una nuova immagine viene installata solo quando ha almeno questa età.", + "ackExternal": "Le directory dell'host non vengono ripristinate dal backup", + "ackExternalHelp": "Questo container usa directory dell'host. Un aggiornamento pianificato viene eseguito solo con questa conferma." + }, "options": { "title": "Opzioni", "snapshotBefore": "Istantanea prima dell'applicazione", @@ -1429,6 +1468,14 @@ "loadFailed": "impossibile caricare la configurazione dell'aggiornamento collettivo." }, "appEditor": { + "methodOciImage": "Immagine OCI (installata da ProxMenux)", + "ociImageHelp": "La versione e i suoi aggiornamenti vengono letti dall'immagine da cui è stato creato questo container. ProxMenux lo ha installato, quindi non c'è nulla da configurare: l'immagine installata viene confrontata con quella che il suo registro pubblica oggi.", + "ociAppVersion": "Applicazione", + "ociImage": "Immagine", + "ociNewImage": "Nuova immagine", + "ociImageCurrent": "Versione", + "refreshData": "Aggiorna dati", + "refreshingData": "Aggiornamento…", "dockerDetectedWithWorkloads": "Docker rilevato con {count} applicazioni in container", "dockerWorkloadsHeading": "Applicazioni in Docker", "runsInsideDocker": "Si aggiorna con la sua immagine Docker", diff --git a/AppImage/messages/pt/common.json b/AppImage/messages/pt/common.json index 4527596c..086c0dd4 100644 --- a/AppImage/messages/pt/common.json +++ b/AppImage/messages/pt/common.json @@ -1069,7 +1069,8 @@ "backups": "Cópias de segurança", "updates": "Atualizações", "firewall": "Firewall", - "app": "Aplicativo" + "app": "Aplicativo", + "logs": "Logs" }, "actions": { "start": "Começar", @@ -1169,6 +1170,44 @@ "empty": "Nenhum evento de firewall registrado ainda.", "emptyHint": "Regras com log: info ou superior preencherão esta visualização conforme os pacotes chegam." }, + "consoleLog": { + "title": "Saída da consola", + "description": "Saída padrão e de erro do processo principal da imagem.", + "stopped": "O contentor está parado; o log conserva a saída das execuções anteriores.", + "lastLines": "Últimas {count} linhas", + "follow": "Seguir", + "pause": "Pausar", + "refresh": "Atualizar", + "download": "Transferir", + "filter": "Filtrar linhas", + "loading": "A carregar a saída da consola...", + "empty": "Ainda não há saída registada.", + "emptyHint": "As linhas aparecem aqui à medida que o contentor escreve na sua consola.", + "noMatches": "Nenhuma linha corresponde ao filtro.", + "readFailed": "Não foi possível ler o log da consola", + "notAvailableTitle": "Este contentor não tem log da consola", + "notAvailableHint": "O log da consola é configurado quando o ProxMenux instala o contentor a partir da sua imagem OCI." + }, + "ociUpdates": { + "notTracked": "Ao registar a aplicação no separador App, a sua imagem é acompanhada aqui.", + "installedImage": "Imagem instalada", + "newImage": "Nova imagem {image} disponível", + "stackNote": "Faz parte de uma aplicação com vários contentores (CT principal {primary}, {count} contentores): a atualização abrange todos.", + "pendingNote": "Uma operação neste contentor foi interrompida; Recuperar abre a sua recuperação.", + "update": "Atualizar", + "recreate": "Recriar", + "recover": "Recuperar", + "terminalTitleUpdate": "Atualizar aplicação OCI", + "terminalTitleRecreate": "Recriar aplicação OCI", + "terminalDescription": "O mesmo percurso de OCI manager Apps → Gerir aplicações OCI instaladas.", + "keepBackup": "Manter o backup feito antes da atualização", + "noKeepBackup": "O backup feito antes da atualização não é mantido", + "keepBackupHelp": "Cada atualização faz um backup do contentor antes de substituir a sua imagem, para o restaurar se a atualização falhar. Com esta opção esse backup é mantido no armazenamento escolhido; no Proxmox Backup Server é escrito um backup antes da atualização.", + "scheduleHelp": "Só a imagem é atualizada, e apenas quando o seu registo publica uma nova.", + "releaseDelayHelp": "Uma imagem nova só é instalada quando tem pelo menos esta idade.", + "ackExternal": "Os diretórios do host não são revertidos pelo backup", + "ackExternalHelp": "Este contentor usa diretórios do host. Uma atualização agendada só é executada com esta confirmação." + }, "options": { "title": "Opções", "snapshotBefore": "Instantâneo antes de aplicar", @@ -1429,6 +1468,14 @@ "loadFailed": "não foi possível carregar a configuração de atualização em massa." }, "appEditor": { + "methodOciImage": "Imagem OCI (instalada pelo ProxMenux)", + "ociImageHelp": "A versão e as suas atualizações são lidas da imagem a partir da qual este contentor foi criado. O ProxMenux instalou-o, pelo que não há nada a configurar: a imagem instalada é comparada com a que o seu registo publica hoje.", + "ociAppVersion": "Aplicação", + "ociImage": "Imagem", + "ociNewImage": "Nova imagem", + "ociImageCurrent": "Versão", + "refreshData": "Atualizar dados", + "refreshingData": "A atualizar…", "dockerDetectedWithWorkloads": "Docker detetado com {count} aplicações em contentores", "dockerWorkloadsHeading": "Aplicações no Docker", "runsInsideDocker": "Atualizada através da sua imagem Docker", diff --git a/AppImage/messages/sk/common.json b/AppImage/messages/sk/common.json index cff2d754..52474efa 100644 --- a/AppImage/messages/sk/common.json +++ b/AppImage/messages/sk/common.json @@ -1090,7 +1090,8 @@ "backups": "Zálohy", "updates": "Aktualizácie", "firewall": "Firewall", - "app": "Aplikácie" + "app": "Aplikácie", + "logs": "Logy" }, "actions": { "start": "Spustiť", @@ -1190,6 +1191,44 @@ "empty": "Zatiaľ tu nie sú žiadne záznamy.", "emptyHint": "Pravidlá s log: info alebo vyššie začnú tento prehľad napĺňať, keď príde sieťová prevádzka." }, + "consoleLog": { + "title": "Výstup konzoly", + "description": "Štandardný a chybový výstup hlavného procesu obrazu.", + "stopped": "Kontajner je zastavený; log uchováva výstup z jeho predchádzajúcich behov.", + "lastLines": "Posledných {count} riadkov", + "follow": "Sledovať", + "pause": "Pozastaviť", + "refresh": "Obnoviť", + "download": "Stiahnuť", + "filter": "Filtrovať riadky", + "loading": "Načítava sa výstup konzoly...", + "empty": "Zatiaľ nie je zaznamenaný žiadny výstup.", + "emptyHint": "Riadky sa tu zobrazia, keď kontajner zapisuje do svojej konzoly.", + "noMatches": "Filtru nezodpovedá žiadny riadok.", + "readFailed": "Log konzoly sa nepodarilo načítať", + "notAvailableTitle": "Tento kontajner nemá log konzoly", + "notAvailableHint": "Log konzoly sa nastaví, keď ProxMenux nainštaluje kontajner z jeho OCI obrazu." + }, + "ociUpdates": { + "notTracked": "Po zaregistrovaní aplikácie na karte Aplikácie sa tu sleduje jej obraz.", + "installedImage": "Nainštalovaný obraz", + "newImage": "K dispozícii je nový obraz {image}", + "stackNote": "Súčasť aplikácie s viacerými kontajnermi (hlavný CT {primary}, {count} kontajnerov): aktualizácia sa týka všetkých.", + "pendingNote": "Operácia na tomto kontajneri bola prerušená; Obnoviť otvorí jej obnovenie.", + "update": "Aktualizovať", + "recreate": "Znovu vytvoriť", + "recover": "Obnoviť", + "terminalTitleUpdate": "Aktualizovať OCI aplikáciu", + "terminalTitleRecreate": "Znovu vytvoriť OCI aplikáciu", + "terminalDescription": "Rovnaký postup ako OCI manager Apps → Spravovať nainštalované OCI aplikácie.", + "keepBackup": "Ponechať zálohu vytvorenú pred aktualizáciou", + "noKeepBackup": "Záloha vytvorená pred aktualizáciou sa neponecháva", + "keepBackupHelp": "Každá aktualizácia zálohuje kontajner pred nahradením jeho obrazu, aby ho bolo možné obnoviť, ak aktualizácia zlyhá. S touto možnosťou sa táto záloha ponechá vo zvolenom úložisku; na Proxmox Backup Server sa pred aktualizáciou zapíše záloha.", + "scheduleHelp": "Aktualizuje sa iba obraz, a to len keď jeho register zverejní nový.", + "releaseDelayHelp": "Nový obraz sa nainštaluje až vtedy, keď je aspoň takto starý.", + "ackExternal": "Adresáre hostiteľa sa zálohou neobnovia", + "ackExternalHelp": "Tento kontajner používa adresáre hostiteľa. Plánovaná aktualizácia sa spustí iba s týmto potvrdením." + }, "options": { "title": "Možnosti", "snapshotBefore": "Snapshot pred použitím zmien", @@ -1450,6 +1489,14 @@ "loadFailed": "Konfiguráciu hromadnej aktualizácie sa nepodarilo načítať." }, "appEditor": { + "methodOciImage": "OCI obraz (nainštalovaný ProxMenux)", + "ociImageHelp": "Verzia a jej aktualizácie sa čítajú z obrazu, z ktorého bol tento kontajner vytvorený. Nainštaloval ho ProxMenux, takže nie je čo nastavovať: nainštalovaný obraz sa porovnáva s tým, ktorý jeho register zverejňuje dnes.", + "ociAppVersion": "Aplikácia", + "ociImage": "Obraz", + "ociNewImage": "Nový obraz", + "ociImageCurrent": "Verzia", + "refreshData": "Obnoviť údaje", + "refreshingData": "Obnovuje sa…", "dockerDetectedWithWorkloads": "Zistený Docker s {count} aplikáciami v kontajneroch", "dockerWorkloadsHeading": "Aplikácie v Dockeri", "runsInsideDocker": "Aktualizuje sa spolu s obrazom Docker", @@ -3320,7 +3367,14 @@ "auditReports": "Správy — k dispozícii je úplný audit aj samostatné prehľady bezpečnosti, záloh a kapacity diskov. Každý začne stručným zhrnutím, ponúkne tlačiteľný inventár a dá sa vyexportovať do PDF. Pred bezpečnostnou kontrolou s Lynisom sa aplikácia opýta, aby bežná kontrola ostala rýchla.", "auditPolicyBaseline": "Pravidlá a porovnanie — nastavte, čo má server spĺňať: zálohy, firewall aj prihlásenie roota cez SSH. Jeden beh môžete označiť ako východiskový stav a neskôr jednoducho vidieť nové, vyriešené aj prijaté zistenia.", "groupedAppUpdates": "Zoskupené upozornenia na aktualizácie aplikácií — po kontrole príde jedno prehľadné upozornenie namiesto samostatnej správy pre každú aplikáciu. Aplikácie sú zoskupené podľa LXC a zobrazia sa nainštalované aj dostupné verzie.", - "adminTokenScope": "Prístup správcu — otvorenie terminálu Monitoru a vypnutie overovania teraz vyžadujú token s úplnými právami správcu. Token iba na čítanie, napríklad pre monitorovaciu integráciu, tak zostáva bezpečne obmedzený (nahlásil @f3rs3n)." + "adminTokenScope": "Prístup správcu — otvorenie terminálu Monitoru a vypnutie overovania teraz vyžadujú token s úplnými právami správcu. Token iba na čítanie, napríklad pre monitorovaciu integráciu, tak zostáva bezpečne obmedzený (nahlásil @f3rs3n).", + "ociAppTab": "OCI kontajnery na karte Aplikácie — kontajner nainštalovaný cez OCI manager Apps sa rozpozná podľa záznamu o inštalácii: aplikácia a jej obraz, nový obraz zistený podľa digestu a odkaz na repozitár obrazu.", + "ociUpdatesTab": "Aktualizácie OCI kontajnerov — Aktualizovať a Znovu vytvoriť otvoria rovnaký postup ako ponuka OCI, zálohu vytvorenú pred aktualizáciou možno ponechať v úložisku záloh a obraz možno aktualizovať podľa plánu.", + "ociLogsTab": "Karta Logy pre OCI kontajnery — výstup konzoly aplikácie uložený na hostiteľovi a sledovaný naživo, s filtrom a stiahnutím. Konzola Proxmoxu týchto kontajnerov otvorí shell.", + "appsUpdateShortcut": "Ikona aktualizácie na stránke Aplikácie otvorí kontajner priamo na jeho karte Aktualizácie.", + "webhookHttps": "Upozornenia Proxmoxu sa dostanú do Monitora aj so zapnutým HTTPS — doručujú sa na výhradne lokálnu adresu a už nezlyhávajú na chybe certifikátu.", + "persistentLogs": "Skončená vlna chýb v logoch sa už nehlási ako trvalá: vzor sa musí opakovať 15 minút a jeho upozornenie sa zatvorí samo (nahlásil @Joshua1264).", + "mountsLanAddress": "Body pripojenia na LVM-thin a inom blokovom úložisku zobrazujú svoje využitie a aplikácie s viacerými kontajnermi sa otvárajú na svojej LAN adrese." } }, "network": { @@ -5034,6 +5088,8 @@ "customLinkNewTitle": "Nový webový odkaz", "customLinkEditTitle": "Upraviť webový odkaz", "customLinkEditAria": "Upraviť vlastný odkaz {name}", + "openUpdatesAria": "Otvoriť kartu Aktualizácie pre {name}", + "openUpdatesTitle": "K dispozícii je aktualizácia — otvoriť kartu Aktualizácie", "customLinkName": "Názov", "customLinkNamePlaceholder": "napr. Moja aplikácia", "customLinkUrl": "URL", diff --git a/AppImage/messages/sv/common.json b/AppImage/messages/sv/common.json index 039afcc3..88dc9c8e 100644 --- a/AppImage/messages/sv/common.json +++ b/AppImage/messages/sv/common.json @@ -1069,7 +1069,8 @@ "backups": "Säkerhetskopieringar", "updates": "Uppdateringar", "firewall": "Brandvägg", - "app": "App" + "app": "App", + "logs": "Loggar" }, "actions": { "start": "Start", @@ -1169,6 +1170,44 @@ "empty": "Inga brandväggshändelser har registrerats ännu.", "emptyHint": "Regler med log: info eller högre kommer att fylla denna vy när paket anländer." }, + "consoleLog": { + "title": "Konsolutdata", + "description": "Standardutdata och standardfel från avbildens huvudprocess.", + "stopped": "Containern är stoppad; loggen behåller utdata från tidigare körningar.", + "lastLines": "Senaste {count} raderna", + "follow": "Följ", + "pause": "Pausa", + "refresh": "Uppdatera", + "download": "Ladda ned", + "filter": "Filtrera rader", + "loading": "Läser in konsolutdata...", + "empty": "Ingen utdata registrerad ännu.", + "emptyHint": "Rader visas här när containern skriver till sin konsol.", + "noMatches": "Inga rader matchar filtret.", + "readFailed": "Det gick inte att läsa konsolloggen", + "notAvailableTitle": "Den här containern har ingen konsollogg", + "notAvailableHint": "Konsolloggen konfigureras när ProxMenux installerar containern från dess OCI-avbild." + }, + "ociUpdates": { + "notTracked": "När applikationen registreras i fliken App följs dess avbild här.", + "installedImage": "Installerad avbild", + "newImage": "Ny avbild {image} tillgänglig", + "stackNote": "Del av en applikation med flera containrar (huvud-CT {primary}, {count} containrar): uppdateringen omfattar alla.", + "pendingNote": "En åtgärd på den här containern avbröts; Återställ öppnar dess återställning.", + "update": "Uppdatera", + "recreate": "Återskapa", + "recover": "Återställ", + "terminalTitleUpdate": "Uppdatera OCI-applikation", + "terminalTitleRecreate": "Återskapa OCI-applikation", + "terminalDescription": "Samma flöde som OCI manager Apps → Hantera installerade OCI-applikationer.", + "keepBackup": "Behåll säkerhetskopian som tas före uppdateringen", + "noKeepBackup": "Säkerhetskopian som tas före uppdateringen behålls inte", + "keepBackupHelp": "Varje uppdatering säkerhetskopierar containern innan dess avbild ersätts, för att återställa den om uppdateringen misslyckas. Med det här alternativet behålls säkerhetskopian i den valda lagringen; på Proxmox Backup Server skrivs en säkerhetskopia före uppdateringen.", + "scheduleHelp": "Endast avbilden uppdateras, och bara när dess register publicerar en ny.", + "releaseDelayHelp": "En ny avbild installeras först när den är minst så här gammal.", + "ackExternal": "Värdkataloger återställs inte av säkerhetskopian", + "ackExternalHelp": "Den här containern använder värdkataloger. En schemalagd uppdatering körs bara när detta är bekräftat." + }, "options": { "title": "Alternativ", "snapshotBefore": "Ögonblicksbild innan applicering", @@ -1429,6 +1468,14 @@ "loadFailed": "Det gick inte att läsa in massuppdateringskonfigurationen." }, "appEditor": { + "methodOciImage": "OCI-avbild (installerad av ProxMenux)", + "ociImageHelp": "Versionen och dess uppdateringar läses från avbilden som containern skapades från. ProxMenux installerade den, så det finns inget att konfigurera: den installerade avbilden jämförs med den som registret publicerar i dag.", + "ociAppVersion": "Applikation", + "ociImage": "Avbild", + "ociNewImage": "Ny avbild", + "ociImageCurrent": "Version", + "refreshData": "Uppdatera data", + "refreshingData": "Uppdaterar…", "dockerDetectedWithWorkloads": "Docker hittades med {count} applikationer i containrar", "dockerWorkloadsHeading": "Applikationer i Docker", "runsInsideDocker": "Uppdateras med sin Docker-avbildning",