feat(#248): add TAG_NOT_FOUND/MERGE_SELF/MERGE_INVALID_TARGET to errors.ts and all i18n keys

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Marcel
2026-04-16 22:38:28 +02:00
parent a669f6368d
commit e01733eaf2
4 changed files with 96 additions and 3 deletions

View File

@@ -576,5 +576,33 @@
"mission_control_ready_empty_cta": "Jetzt mitmachen",
"mission_control_weekly_pulse": "↑ +{count} diese Woche",
"mission_control_blocks_progress": "{texted} / {total} Blöcke",
"mission_control_reviewed_pct": "{pct}% geprüft"
"mission_control_reviewed_pct": "{pct}% geprüft",
"error_tag_not_found": "Dieses Schlagwort wurde nicht gefunden.",
"error_tag_merge_self": "Ein Schlagwort kann nicht mit sich selbst zusammengeführt werden.",
"error_tag_merge_invalid_target": "Das Ziel-Schlagwort ist ein Untergeordnetes des Quell-Schlagworts.",
"admin_tag_tree_label": "Schlagwörter",
"admin_tag_collapse_node": "Einklappen",
"admin_tag_expand_node": "Ausklappen",
"admin_tag_parent_placeholder": "Übergeordnetes Schlagwort suchen …",
"admin_tag_inherited_color": "Farbe wird von {parent} vererbt",
"admin_tag_ancestry_label": "Pfad",
"admin_tag_children_label": "Untergeordnete Schlagwörter",
"admin_tag_children_more": "… und {count} weitere",
"admin_tag_merge_heading": "Zusammenführen",
"admin_tag_merge_description": "Alle Dokumente und untergeordnete Schlagwörter auf ein anderes Schlagwort übertragen und dieses danach löschen.",
"admin_tag_merge_btn": "Mit anderem Schlagwort zusammenführen …",
"admin_tag_merge_target_label": "Ziel-Schlagwort",
"admin_tag_merge_preview_docs": "{count} Dokumente",
"admin_tag_merge_preview_children": "{count} Untergeordnete",
"admin_tag_merge_deleted_after": "wird danach gelöscht",
"admin_tag_merge_confirm_btn": "Jetzt zusammenführen",
"admin_tag_merge_step1": "Schritt 1 von 2",
"admin_tag_merge_step2": "Schritt 2 von 2",
"admin_tag_delete_impact": "{docs} Dokument(e) · {descendants} Untergeordnete",
"admin_tag_delete_only_this": "Nur dieses Schlagwort löschen",
"admin_tag_delete_only_this_sub": "Untergeordnete werden zu {parent} verschoben",
"admin_tag_delete_only_this_sub_root": "Untergeordnete werden zu Root-Schlagwörtern",
"admin_tag_delete_subtree": "Gesamten Teilbaum löschen",
"admin_tag_delete_subtree_warn": "Löscht auch {count} untergeordnete Schlagwörter",
"admin_tag_delete_confirm_heading": "Gib «{name}» zur Bestätigung ein:"
}

View File

@@ -576,5 +576,33 @@
"mission_control_ready_empty_cta": "Start contributing",
"mission_control_weekly_pulse": "↑ +{count} this week",
"mission_control_blocks_progress": "{texted} / {total} blocks",
"mission_control_reviewed_pct": "{pct}% reviewed"
"mission_control_reviewed_pct": "{pct}% reviewed",
"error_tag_not_found": "This tag was not found.",
"error_tag_merge_self": "A tag cannot be merged with itself.",
"error_tag_merge_invalid_target": "The target tag is a descendant of the source tag.",
"admin_tag_tree_label": "Tags",
"admin_tag_collapse_node": "Collapse",
"admin_tag_expand_node": "Expand",
"admin_tag_parent_placeholder": "Search parent tag …",
"admin_tag_inherited_color": "Color inherited from {parent}",
"admin_tag_ancestry_label": "Path",
"admin_tag_children_label": "Child Tags",
"admin_tag_children_more": "… and {count} more",
"admin_tag_merge_heading": "Merge",
"admin_tag_merge_description": "Transfer all documents and child tags to another tag, then delete this one.",
"admin_tag_merge_btn": "Merge with another tag …",
"admin_tag_merge_target_label": "Target Tag",
"admin_tag_merge_preview_docs": "{count} documents",
"admin_tag_merge_preview_children": "{count} children",
"admin_tag_merge_deleted_after": "will be deleted after",
"admin_tag_merge_confirm_btn": "Merge now",
"admin_tag_merge_step1": "Step 1 of 2",
"admin_tag_merge_step2": "Step 2 of 2",
"admin_tag_delete_impact": "{docs} document(s) · {descendants} child tags",
"admin_tag_delete_only_this": "Delete only this tag",
"admin_tag_delete_only_this_sub": "Children will be moved to {parent}",
"admin_tag_delete_only_this_sub_root": "Children will become root tags",
"admin_tag_delete_subtree": "Delete entire subtree",
"admin_tag_delete_subtree_warn": "Also deletes {count} child tags",
"admin_tag_delete_confirm_heading": "Type «{name}» to confirm:"
}

View File

@@ -576,5 +576,33 @@
"mission_control_ready_empty_cta": "Empezar a colaborar",
"mission_control_weekly_pulse": "↑ +{count} esta semana",
"mission_control_blocks_progress": "{texted} / {total} bloques",
"mission_control_reviewed_pct": "{pct}% revisado"
"mission_control_reviewed_pct": "{pct}% revisado",
"error_tag_not_found": "Esta etiqueta no fue encontrada.",
"error_tag_merge_self": "Una etiqueta no puede fusionarse consigo misma.",
"error_tag_merge_invalid_target": "La etiqueta de destino es descendiente de la etiqueta de origen.",
"admin_tag_tree_label": "Etiquetas",
"admin_tag_collapse_node": "Colapsar",
"admin_tag_expand_node": "Expandir",
"admin_tag_parent_placeholder": "Buscar etiqueta superior …",
"admin_tag_inherited_color": "Color heredado de {parent}",
"admin_tag_ancestry_label": "Ruta",
"admin_tag_children_label": "Etiquetas subordinadas",
"admin_tag_children_more": "… y {count} más",
"admin_tag_merge_heading": "Fusionar",
"admin_tag_merge_description": "Transferir todos los documentos y etiquetas subordinadas a otra etiqueta y luego eliminar esta.",
"admin_tag_merge_btn": "Fusionar con otra etiqueta …",
"admin_tag_merge_target_label": "Etiqueta de destino",
"admin_tag_merge_preview_docs": "{count} documentos",
"admin_tag_merge_preview_children": "{count} subordinados",
"admin_tag_merge_deleted_after": "se eliminará después",
"admin_tag_merge_confirm_btn": "Fusionar ahora",
"admin_tag_merge_step1": "Paso 1 de 2",
"admin_tag_merge_step2": "Paso 2 de 2",
"admin_tag_delete_impact": "{docs} documento(s) · {descendants} subordinados",
"admin_tag_delete_only_this": "Eliminar solo esta etiqueta",
"admin_tag_delete_only_this_sub": "Las subordinadas se moverán a {parent}",
"admin_tag_delete_only_this_sub_root": "Las subordinadas se convertirán en etiquetas raíz",
"admin_tag_delete_subtree": "Eliminar todo el subárbol",
"admin_tag_delete_subtree_warn": "También elimina {count} etiquetas subordinadas",
"admin_tag_delete_confirm_heading": "Escribe «{name}» para confirmar:"
}

View File

@@ -29,6 +29,9 @@ export type ErrorCode =
| 'TRAINING_ALREADY_RUNNING'
| 'INVALID_TAG_COLOR'
| 'TAG_CYCLE_DETECTED'
| 'TAG_NOT_FOUND'
| 'TAG_MERGE_SELF'
| 'TAG_MERGE_INVALID_TARGET'
| 'UNAUTHORIZED'
| 'FORBIDDEN'
| 'VALIDATION_ERROR'
@@ -106,6 +109,12 @@ export function getErrorMessage(code: ErrorCode | string | undefined): string {
return m.error_invalid_tag_color();
case 'TAG_CYCLE_DETECTED':
return m.error_tag_cycle_detected();
case 'TAG_NOT_FOUND':
return m.error_tag_not_found();
case 'TAG_MERGE_SELF':
return m.error_tag_merge_self();
case 'TAG_MERGE_INVALID_TARGET':
return m.error_tag_merge_invalid_target();
case 'UNAUTHORIZED':
return m.error_unauthorized();
case 'FORBIDDEN':