v0.253.0 — errors carry the key of the sentence they are (R-557 slice 2 release B)
gates / gates (push) Successful in 24s

179 Hungarian sentences were built deep inside a package with fmt.Errorf and printed by
whoever caught them: too late to translate where they are shown, too early where they are
made. Every one now carries its key across that gap. ZERO Hungarian error literals remain.

util.MsgError does three things at once, each earned:
  - Error() is the Hungarian, byte for byte, so every un-converted printer is unchanged;
  - errors.Is answers for the kind AND for a wrapped cause (KindErrorf dropped the cause);
  - an error ARGUMENT renders recursively, so "formázás sikertelen: %w" translates whole.
A foreign error — restic, docker, ssh, the stdlib — prints verbatim. It is not ours.

76 display sites go through errText, and TestNoErrErrorInPageOutput convicts any that do
not. memoryVerdict returns an error rather than a sentence, so the deploy's 409 and the
household's language come from one value; UpdateRefusal gained a Cause to carry it.

Plurals, one rule, stated once: a key with .one/.other takes its COUNT first. Not a
per-call-site flag — the producer somebody forgot would read "3 app is not running". The
guard caught a real key collision (alert.deadapp.one) the day the rule landed.

TWO DEFECTS FOUND IN MY OWN TOOLING, recorded rather than quietly fixed. The bulk converter
silently dropped multi-line concatenations, damaging 7 producers — and the parity gate could
not see it, because every surviving fragment WAS a real base literal while the CALL had lost
text; two behaviour tests caught it. And the counting script was case-sensitive, so it said
"0 left" while five remained.

MinAgent: 0.131.0 (unchanged). No hub release needed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-09-18 11:44:30 +02:00
parent 5270bad76e
commit 7c05b59708
70 changed files with 1853 additions and 377 deletions
+184 -3
View File
@@ -1998,8 +1998,8 @@
"alert.link.monitoring": "System monitor",
"alert.link.update": "Update",
"alert.deadapp.group": "%d installed apps are not running — look at the system monitor",
"alert.deadapp.one": "An installed app is not running: %s",
"alert.deadapp.one_state": "An installed app is not running: %s (%s)",
"alert.deadapp.single": "An installed app is not running: %s",
"alert.deadapp.single_state": "An installed app is not running: %s (%s)",
"alert.storage.disconnected": "A drive is disconnected: %s (%s)",
"alert.hub.disabled": "The hub connection is off — central monitoring is not running",
"alert.hub.unreachable": "The hub cannot be reached — last error: %s",
@@ -2015,5 +2015,186 @@
"disk.err.init_in_progress": "a drive is already being initialised",
"disk.err.protected": "this drive is protected (system / backup) — erasing it needs an operator signature",
"disk.err.wipe_failed": "the erase failed: %s",
"disk.err.attach_unavailable": "This drive cannot be attached right now — it may already be registered, or it may have been unplugged. Reload the page and look at Storage → Drives."
"disk.err.attach_unavailable": "This drive cannot be attached right now — it may already be registered, or it may have been unplugged. Reload the page and look at Storage → Drives.",
"err.stacks.migracio_mar_folyamatban": "a migration is already running",
"err.stacks.alkalmazas_nem_talalhato": "app not found: %s",
"err.stacks.ismeretlen_migracios_hatokor": "unknown migration scope: %s",
"err.stacks.migracios_naplo_irasa": "writing the migration log: %s",
"err.stacks.biztonsagi_mentes_folyamatban_probald_ujra": "a backup is running, try again",
"err.stacks.az_rsync_nem_erheto_el_a": "rsync is not available on this system",
"err.stacks.a_cel_es_a_forras_tarolo": "the source and the target storage are the same",
"err.stacks.a_celtarolo_nem_elerheto_vagy_nem": "the target storage is unreachable or cannot be picked",
"err.stacks.utkozes_a_celtarolon_mar_letezik_ezeknek": "clash on the target storage — these apps already have data there: %s",
"err.stacks.nincs_eleg_hely_a_celtarolon_kb": "not enough space on the target storage (about %d GB needed, %.1f GB free)",
"err.stacks.ismeretlen_migracios_fazis": "unknown migration phase: %q",
"err.stacks.alkalmazas_leallitasa_sikertelen": "the app could not be stopped (%s): %s",
"err.stacks.masolas_sikertelen_appdata": "the copy failed (%s app data): %s",
"err.stacks.masolas_sikertelen_mentes": "the copy failed (%s backup): %s",
"err.stacks.ugyfel_adatok_osszefesulese_sikertelen": "merging your own files failed: %s",
"err.stacks.ellenorzes_sikertelen_appdata": "the check failed (%s app data): %s",
"err.stacks.ellenorzes_sikertelen_mentes": "the check failed (%s backup): %s",
"err.stacks.ugyfel_adatok_ellenorzese_sikertelen": "checking your own files failed: %s",
"err.stacks.ujratelepites_sikertelen": "the reinstall failed (%s): %s",
"err.stacks.forras_torlese_sikertelen_appdata": "removing the source failed (%s app data): %s",
"err.stacks.forras_torlese_sikertelen_mentes": "removing the source failed (%s backup): %s",
"err.stacks.forras_nevter_olvasasa_sikertelen": "reading the source folder failed: %s",
"err.stacks.forras_torlese_sikertelen": "removing the source failed (%s): %s",
"err.stacks.cleanup_gate_a_z_egyseg_nincs": "cleanup gate: unit %q is not verified (state=%s)",
"err.stacks.cleanup_gate_a_z_alkalmazas_nincs": "cleanup gate: app %q is not reinstalled (state=%s)",
"err.stacks.az_alkalmazas_nem_indult_el_az": "the app did not start on the new storage",
"err.stacks.fuggoben_levo_atvitel_maradt_pl": "%d transfers are still pending, for example %q",
"err.stacks.a_forrasfajlnak_nincs_azonos_masolata_a": "the source file has no identical copy on the target: %s",
"err.stacks.az_aldomain_nem_lehet_ures": "the subdomain cannot be empty",
"err.stacks.az_aldomain_csak_kisbetuket_szamokat_es": "the subdomain may hold only lower-case letters, digits and hyphens, and cannot start or end with a hyphen",
"err.stacks.a_z_aldomain_foglalt_rendszer_szamara": "the subdomain %q is reserved for the system",
"err.stacks.a_z_aldomain_mar_hasznalatban_van": "the subdomain %q is already used by another app",
"err.stacks.a_beallitasok_nem_erhetok_el": "the settings are not reachable",
"err.stacks.a_halozati_megosztas_nincs_bekapcsolva": "network sharing is not turned on",
"err.stacks.a_megosztas_szolgaltatas_inditasa_sikertelen": "the sharing service could not be started: %s",
"err.stacks.a_megosztas_leallitasa_sikertelen": "the sharing service could not be stopped: %s",
"err.stacks.a_z_alkalmazas_nem_tamogatja_az": "the app %q cannot send email",
"err.stacks.a_z_alkalmazas_nincs_telepitve": "the app %q is not installed",
"err.backup.a_biztonsagi_mentes_elott_nem_sikerult": "the databases could not be found before the backup: %s",
"err.backup.a_biztonsagi_mentes_konyvtara_nem_hozhato": "the backup folder could not be created: %s",
"err.backup.a_jelenlegi_adatbazis_biztonsagi_mentese_sikertelen": "backing up the current database failed (%s): %s — the restore did not start",
"err.backup.a_visszavonas_elott_nem_sikerult_felderiteni": "the databases could not be found before the undo: %s",
"err.backup.a_visszavonashoz_szukseges_mentes_nem_talalhato": "the backup the undo needs is missing (%s): %s",
"err.backup.a_z_adatbazis_taroloja_nem_talalhato": "the database container for %s is missing, so the undo cannot run",
"err.backup.a_korabbi_allapot_visszaallitasa_sikertelen": "putting the earlier state back failed (%s): %s",
"err.backup.egy_masik_mentesi_visszaallitasi_muvelet_mar": "another backup or restore is already running",
"err.backup.nincs_elokeszitett_teljes_visszaallitas_futtass_elobb": "no full restore is prepared — run a full restore first",
"err.backup.a_teljes_visszaallitas_hianyos_nincs_meg": "the full restore is incomplete (%s is missing) — run a full restore first",
"err.backup.a_pillanatkepben_nincs_mentesi_egyseg_a": "the snapshot holds no backup unit — the restore cannot start",
"err.backup.a_biztonsagi_mentes_nem_talalhato_a": "the backup is not on the disk — the restore did not start, for safety",
"err.backup.az_adatbazis_szolgaltatas_nem_azonosithato_a": "The database service cannot be identified in %s — the restore did not start, for safety.",
"err.backup.a_z_leallitasa_elotti_jelolo_nem": "the marker written before stopping %s could not be saved: %s",
"err.backup.a_z_fajljainak_visszaallitasa_sikertelen": "putting back the files of %s failed: %s",
"err.backup.a_z_adatkotetenek_visszaallitasa_sikertelen": "putting back the data volume of %s failed: %s",
"err.backup.a_z_adatbazis_szolgaltatasanak_inditasa_sikertelen": "starting the database service of %s failed: %s",
"err.backup.a_z_ujrainditasa_sikertelen_a_fajlok": "%s could not be restarted after its files were put back: %s",
"err.backup.offbox_nincs_pillanatkep_a_z_alkalmazashoz": "off-site: there is no snapshot for %s",
"err.backup.offbox_a_z_pillanatkep_merete_ismeretlen": "off-site: the size of snapshot %s is unknown",
"err.backup.a_z_pillanatkepeben_nincs_mentesi_egyseg": "the snapshot of %s holds no backup unit — the restore cannot start",
"err.backup.a_pillanatkepben_nincs_mentesi_egyseg_backups": "the snapshot holds no backup unit (backups/primary/%s)",
"err.backup.a_pillanatkep_egy_utvonala_a_nevteren": "a path in the snapshot points outside its own folder: %s",
"err.backup.a_pillanatkep_egy_utvonala_ervenytelen": "a path in the snapshot is not valid (..): %s",
"err.backup.nem_egyseg_utvonal_a_fenntartott_backups": "a non-unit path inside the reserved backups area: %s",
"err.backup.a_z_nincs_telepitve_elobb_allitsd": "%s is not installed — put the app back first, then its data",
"err.backup.a_z_helyreallitasa_sikertelen": "recovering %s failed: %s",
"err.backup.nincs_elerheto_adatmeghajto_a_visszaallitashoz": "no data drive is available for the restore",
"err.backup.a_tavoli_mentes_nincs_beallitva": "the remote backup is not set up",
"err.backup.nincs_eleg_szabad_hely_a_visszaallitashoz": "There is not enough free space for the restore (%s needed, %s free).",
"err.backup.nincs_visszaallithato_megosztas_mentes": "there is no share backup to restore: %s",
"err.backup.a_megosztasok_visszaallitasa_sikertelen": "restoring the shares failed: %s: %s",
"err.backup.a_mentesben_nincs_megosztas_leiro": "the backup holds no share description: %s",
"err.backup.a_megosztas_leiro_olvashatatlan": "the share description cannot be read: %s",
"err.backup.nincs_elokeszitett_visszaallitas_futtass_elobb_egy": "no restore is prepared — run a share restore first",
"err.backup.a_z_megosztas_fajljainak_visszaallitasa_sikertelen": "putting back the files of share “%s” failed: %s",
"err.backup.a_frissites_elotti_mentes_lefutott_de": "the pre-update backup ran, but no restorable copy was made",
"err.backup.adatathelyezes_folyamatban_a_mentes_most_nem": "data is being moved — the backup cannot start right now",
"err.backup.az_alkalmazas_meghajtoja_nem_hatarozhato_meg": "the app’s drive cannot be determined",
"err.backup.az_alkalmazas_meghajtoja_nem_elerheto": "the app’s drive cannot be reached (%s)",
"err.backup.nincs_eleg_szabad_hely_a_menteshez": "not enough free space for the backup on drive %s",
"err.backup.adatbazis_felderites_sikertelen": "finding the databases failed: %s",
"err.backup.adatbazis_mentes_sikertelen": "the database backup failed (%s): %s",
"err.backup.kotetmentes_sikertelen": "the volume backup failed: %s",
"err.backup.a_mentesi_egyseg_rogzitese_sikertelen": "recording the backup unit failed: %s",
"err.backup.az_alkalmazas_mentesi_helye_nem_hatarozhato": "the app’s backup location cannot be determined",
"err.backup.nincs_masodlagos_fajlmasolat_ehhez_az_alkalmazashoz": "there is no second file copy for this app",
"err.backup.a_masodlagos_meghajto_nincs_csatlakoztatva": "the second drive is not connected",
"err.backup.az_alkalmazas_meghajtoja_nincs_csatlakoztatva": "the app’s drive is not connected",
"err.backup.az_alkalmazas_meghajtoja_le_van_szerelve": "the app’s drive is decommissioned",
"err.backup.a_2_mentes_regi_formatumu_futtass": "The second backup is in the old format — run a new second backup first.",
"err.backup.ennek_az_alkalmazasnak_az_adatai_nem": "this app’s data cannot be restored from this copy",
"err.backup.a_masodlagos_masolatban_nincs_megnyithato_mentesi": "the second copy holds no openable backup unit for this app",
"err.backup.fajlmasolas_sikertelen": "copying the files failed: %s",
"err.backup.fajl_visszaallitva_de_az_alkalmazas_ujrainditasa": "%d files were put back, but the app could not be restarted: %s",
"err.backup.ervenytelen_alkalmazasnev": "that app name is not valid",
"err.backup.a_torles_utvonala_kivul_esik_az": "the path to delete is outside the check folder",
"err.backup.a_masolat_torlese_nem_sikerult": "the copy could not be deleted: %s",
"err.backup.nincs_ilyen_ellenorzo_masolat": "there is no such check copy",
"err.backup.az_offsite_tarolo_nincs_elarvult_allapotban": "the off-site store is not orphaned",
"err.backup.halozati_tarolo_nem_lehet_a_2": "Network storage cannot be the target of the second backup — file ownership cannot be guaranteed there.",
"err.web.ervenytelen_csatlakoztatasi_nev_csak_betuk_szamok": "that mount name is not valid (only letters, digits, _ and - are allowed)",
"err.web.nem_tamogatott_fajlrendszer_ext4_vagy_xfs": "unsupported file system: %q (use ext4 or xfs)",
"err.web.formazas_sikertelen": "formatting failed: %s",
"err.web.formazas_kesz_de_az_uj_fajlrendszer": "the format finished, but the new file-system id cannot be resolved — reload the page and use Attach",
"err.web.csatlakoztatas_sikertelen": "mounting failed: %s",
"err.web.a_kivalasztott_meghajtohoz_nem_talalhato_fajlrendszer": "no file-system id was found for the drive you picked (only a drive that already has a file system can be attached)",
"err.web.a_formazas_allapota_nem_kerdezheto_le": "the format status cannot be read: %s",
"err.web.formazas_sikertelen_2": "formatting failed: %s",
"err.web.a_formazas_nem_indult_el_az": "the format did not start on the device (%s)",
"err.web.leszereles_visszavonasa_sikertelen": "undoing the decommission failed: %s",
"err.web.utemezhetoseg_visszaallitasa_sikertelen": "restoring the schedulable flag failed: %s",
"err.web.regisztracio_sikertelen": "registering it failed: %s",
"err.web.ez_az_egyetlen_hasznalhato_tarhely_a": "this is the only usable storage — the decommission is refused (add another drive, or set a different default, first)",
"err.web.nyilvantartas_frissitese_sikertelen": "updating the register failed: %s",
"err.web.a_meghajto_leszerelese_sikertelen": "decommissioning the drive failed: %s",
"err.settings.a_kiszolgalo_neve_nem_lehet_ures": "the server name cannot be empty",
"err.settings.a_kiszolgalo_neve_legfeljebb_15_karakter": "the server name can be at most 15 characters",
"err.settings.a_kiszolgalo_neve_csak_betut_szamot": "the server name may hold only letters, digits, hyphens and underscores",
"err.settings.a_megosztas_neve_nem_lehet_ures": "the share name cannot be empty",
"err.settings.a_megosztas_neve_legfeljebb_15_karakter": "the share name can be at most 15 characters",
"err.settings.a_megosztas_neve_nem_tartalmazhat_perjelet": "the share name cannot hold a slash or a dot",
"err.settings.a_megosztas_neve_nem_kezdodhet_alahuzassal": "the share name cannot start with an underscore — those names are reserved for the system",
"err.settings.a_megosztas_neve_csak_betut_szamot": "the share name may hold only letters, digits, hyphens and underscores",
"err.settings.mar_letezik_nevu_megosztas": "a share named “%s” already exists",
"err.settings.a_z_megosztas_a_rendszer_resze": "the share “%s” is part of the system and cannot be deleted",
"err.settings.nincs_nevu_megosztas": "there is no share named “%s”",
"err.settings.a_halozati_tarhely_nem_lehet_a": "network storage cannot be the target of the system backup: %s",
"err.integrations.nincs_kezelo_a_z_integraciohoz": "there is no handler for the %s integration",
"err.integrations.a_szolgaltato_alkalmazas_nincs_telepitve": "the provider app (%s) is not installed",
"err.integrations.a_szolgaltato_alkalmazas_nem_fut": "the provider app (%s) is not running",
"err.integrations.a_celalkalmazas_nincs_telepitve": "the target app (%s) is not installed",
"err.integrations.a_celalkalmazas_nem_fut": "the target app (%s) is not running",
"err.integrations.integracio_alkalmazasa_sikertelen": "applying the integration failed: %s",
"err.integrations.integracio_allapotanak_mentese_sikertelen": "saving the integration state failed: %s",
"err.integrations.szolgaltato_stack_nem_talalhato": "provider stack %q not found",
"err.integrations.onlyoffice_jwt_secret_nincs_beallitva_telepitsd": "the OnlyOffice JWT_SECRET is not set — reinstall the app",
"err.integrations.filebrowser_config_olvasasi_hiba": "the File manager config could not be read: %s",
"err.integrations.config_irasi_hiba": "the config could not be written: %s",
"err.integrations.config_atnevezesi_hiba": "the config could not be renamed: %s",
"err.integrations.config_olvasasi_hiba": "the config could not be read: %s",
"err.integrations.onlyoffice_jwt_secret_nincs_beallitva": "the OnlyOffice JWT_SECRET is not set",
"err.selfupdate.hianyos_registry_hitelesito_adatok_felhasznalonev_es": "incomplete registry credentials (the user name and the token are needed together)",
"err.selfupdate.frissites_mar_folyamatban": "An update is already running",
"err.selfupdate.dev_verzio_nem_frissitheto": "A dev build cannot be updated",
"err.selfupdate.mentes_fut_probalja_kesobb": "A backup is running, try again later",
"err.selfupdate.a_frissites_nem_erheto_el_nincs": "The update is not available (there is no host agent)",
"err.selfupdate.nincs_elerheto_frissites": "No update is available",
"err.selfupdate.docker_pull_hianyos_registry_hitelesito_adatok": "docker pull: incomplete registry credentials (the user name and the token are needed together)",
"err.appexport.visszafejtes_sikertelen": "decryption failed: %s",
"err.appexport.a_z_kotet_adata_hianyzik_a": "the data of volume %q is missing from the package",
"err.appexport.a_z_adatkonyvtar_tartalma_hianyzik_a": "the contents of data folder %q are missing from the package",
"err.appexport.ket_adatkonyvtar_azonos_nevvel_vegzodik_es": "two data folders end in the same name (%q: %s and %s) — the package could not tell them apart",
"err.appexport.a_mentes_nem_tartalmaz_alkalmazasadatot_0": "the backup holds no app data (0 data folders, 0 volumes for an app that stores data)",
"err.appexport.jelszo_hibas_vagy_a_fajl_serult": "wrong password, or the file is damaged",
"err.web.a_meghajtok_listaja_nem_olvashato": "the list of drives cannot be read",
"err.web.a_meghajto_nem_talalhato": "the drive was not found",
"err.web.ez_a_mappa_nem_oszthato_meg": "This folder cannot be shared.",
"err.notify.hub_nem_konfiguralt": "the hub is not configured",
"err.notify.hub_elerhetetlen": "the hub cannot be reached: %s",
"err.stacks.field_required_password": "the %q field has to be filled in — use the Generate button, or type a password",
"err.stacks.field_required": "the %q (%s) field has to be filled in",
"err.backup.offsite_over_quota": "The remote backup went over its storage limit (%d/%d GB) — delete old backups, or ask for a bigger limit.",
"err.stacks.not_enough_memory": "There is not enough memory to install this app. Needs %d MB, %d MB is free (%d MB in total, %d MB of it used, %d MB reserved for the system)",
"err.stacks.memory_overcommit_warning": "At peak, the apps together may need more memory than there is. In normal use this causes no trouble.",
"err.backup.not_installed_known_drive": "%s is not installed, so there is nowhere to put its data back. The backup says its data was here: %s. Install the app again (Apps) in the same place, and this restore will work",
"err.backup.not_installed": "%s is not installed, so there is nowhere to put its data back — install the app again (Apps), and this restore will work",
"err.backup.no_data_root": "%s is installed, but the controller cannot tell where its data belongs (no system data area is set). Check the storage settings (Storage), then start the restore again",
"err.backup.no_registered_drive": "no data drive is registered, so there is nowhere to restore to — the drives are still there, they only need attaching again on the Storage → Drives page, and this restore will work",
"err.backup.db_restore_and_rollback_failed": "putting back the database of %s failed, and the earlier state could not be restored either. We have left the app STOPPED, for safety, so your data cannot be damaged further. Get in touch with us — %s",
"err.backup.db_restore_failed_rolled_back": "putting back the database of %s failed — your data is back as it was before the restore, and the app is still running. If you want to try again, get in touch with us first",
"alert.deadapp.group.one": "%d installed app is not running — look at the system monitor",
"alert.deadapp.group.other": "%d installed apps are not running — look at the system monitor",
"alert.overflow.one": "+ %d more warning",
"alert.overflow.other": "+ %d more warnings",
"err.stacks.fuggoben_levo_atvitel_maradt_pl.one": "%d transfer is still pending, for example %q",
"err.stacks.fuggoben_levo_atvitel_maradt_pl.other": "%d transfers are still pending, for example %q",
"err.backup.fajl_visszaallitva_de_az_alkalmazas_ujrainditasa.one": "%d file was put back, but the app could not be restarted: %s",
"err.backup.fajl_visszaallitva_de_az_alkalmazas_ujrainditasa.other": "%d files were put back, but the app could not be restarted: %s",
"err.integrations.onlyoffice_no_subdomain": "the OnlyOffice subdomain is not known",
"err.integrations.occ_failed": "the occ command failed (%s): %s (output: %s)",
"err.integrations.occ_disable_failed": "occ app:disable failed: %s (output: %s)",
"err.notify.hub_error": "hub error (%d): %s"
}