Leonie FINDING-02/03 + Elicit NFR concern + Sara #4: role="region" with no aria-label is an axe-core warning, and the pulsing-bars skeleton carries no semantics for SR clients. - Add aria-label to the region root: person displayName when loaded, localised "Lade Person…" while loading. Region always has a name. - Add aria-busy="true" while loading; cleared on loaded/error so the state change is announced via aria-live="polite". - Add role="status" + aria-label on the skeleton so SR clients hear "Lade Person" rather than three silent <div>s. - New Paraglide key person_mention_loading in de/en/es. Five new tests pin: aria-busy true while loading, aria-busy unset/false when loaded, aria-label is displayName when loaded, aria-label is the loading label while loading. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
995 lines
49 KiB
JSON
995 lines
49 KiB
JSON
{
|
||
"$schema": "https://inlang.com/schema/inlang-message-format",
|
||
"error_annotation_not_found": "Annotation not found.",
|
||
"error_annotation_update_failed": "Could not save annotation position.",
|
||
"annotation_edit_mode_active": "Annotation selected — resize handles visible.",
|
||
"annotation_resize_area": "Resize and reposition annotation",
|
||
"annotation_resize_handle": "Resize handle: {direction}",
|
||
"annotation_outdated_notice": "Some annotations refer to an earlier file version and are not shown.",
|
||
"error_document_not_found": "Document not found.",
|
||
"error_document_no_file": "No file is associated with this document.",
|
||
"error_file_not_found": "The file could not be found in storage.",
|
||
"error_file_upload_failed": "The file could not be uploaded.",
|
||
"error_unsupported_file_type": "This file format is not supported.",
|
||
"error_file_too_large": "The file is too large (max. 50 MB).",
|
||
"error_user_not_found": "User not found.",
|
||
"error_import_already_running": "An import is already running. Please wait for it to finish.",
|
||
"error_unauthorized": "You are not logged in.",
|
||
"error_forbidden": "You do not have permission for this action.",
|
||
"error_validation_error": "The input is invalid.",
|
||
"error_internal_error": "An unexpected error occurred.",
|
||
"nav_documents": "Documents",
|
||
"nav_persons": "Persons",
|
||
"nav_conversations": "Letters",
|
||
"nav_admin": "Admin",
|
||
"nav_logout": "Sign out",
|
||
"theme_toggle_to_light": "Switch to light mode",
|
||
"theme_toggle_to_dark": "Switch to dark mode",
|
||
"btn_save": "Save",
|
||
"btn_cancel": "Cancel",
|
||
"btn_confirm": "Confirm",
|
||
"btn_edit": "Edit",
|
||
"btn_create": "Create",
|
||
"btn_delete": "Delete",
|
||
"doc_delete_confirm": "Really delete this document? This action cannot be undone.",
|
||
"btn_back_to_overview": "Back to overview",
|
||
"btn_back": "Back",
|
||
"btn_back_to_document": "Back to document",
|
||
"form_label_person_type": "Type",
|
||
"form_label_name": "Name",
|
||
"form_label_first_name": "First name",
|
||
"form_label_last_name": "Last name",
|
||
"form_label_alias": "Nickname / Alias",
|
||
"form_placeholder_alias": "e.g. Grandma Frieda, Uncle Karl…",
|
||
"form_label_date": "Date",
|
||
"form_placeholder_date": "DD.MM.YYYY",
|
||
"form_date_error": "Please enter in DD.MM.YYYY format, e.g. 20.12.2026",
|
||
"form_label_location": "Location",
|
||
"form_placeholder_location": "e.g. Berlin, Vienna…",
|
||
"form_label_sender": "Sender",
|
||
"form_label_receivers": "Recipients",
|
||
"form_label_title": "Title",
|
||
"form_label_tags": "Tags",
|
||
"form_label_content": "Content",
|
||
"form_placeholder_content": "Brief description of the content…",
|
||
"form_label_transcription": "Transcription",
|
||
"form_placeholder_transcription": "Full text of the document…",
|
||
"form_label_archive_location": "Storage location",
|
||
"form_placeholder_archive_location": "e.g. Cabinet 3, Folder B",
|
||
"form_helper_archive_location": "Where is the original document stored?",
|
||
"label_optional": "Optional",
|
||
"label_required_fields": "Required fields",
|
||
"login_heading": "Sign in",
|
||
"login_label_email": "Email",
|
||
"login_label_password": "Password",
|
||
"login_error_missing_credentials": "Please enter your email address and password.",
|
||
"login_btn_submit": "Sign in",
|
||
"docs_search_placeholder": "Search title, people, tags…",
|
||
"docs_sort_label": "Sort",
|
||
"docs_sort_date": "Date",
|
||
"docs_sort_title": "Title",
|
||
"docs_sort_sender": "Sender",
|
||
"docs_sort_receiver": "Receiver",
|
||
"docs_sort_upload": "Uploaded",
|
||
"docs_result_count": "{count} documents",
|
||
"docs_empty_for_term": "No documents found for \"{term}\"",
|
||
"docs_btn_filter": "Filter",
|
||
"docs_btn_reset_title": "Reset filter",
|
||
"docs_filter_label_tags": "Tags",
|
||
"docs_filter_label_sender": "Sender",
|
||
"docs_filter_label_receivers": "Recipients",
|
||
"docs_filter_label_from": "From",
|
||
"docs_filter_label_to": "To",
|
||
"docs_btn_new": "New document",
|
||
"docs_empty_heading": "No documents found",
|
||
"docs_empty_text": "Try adjusting the filters or changing the search term.",
|
||
"docs_empty_btn_clear": "Clear all filters",
|
||
"docs_group_unknown_sender": "Unknown sender",
|
||
"docs_group_unknown_receiver": "Unknown recipient",
|
||
"docs_list_from": "From",
|
||
"docs_list_to": "To",
|
||
"docs_list_content": "Content",
|
||
"docs_list_summary": "Summary",
|
||
"docs_list_unknown": "Unknown",
|
||
"docs_group_undated": "Undated",
|
||
"docs_group_unknown": "Unknown",
|
||
"doc_section_who_when": "Who & When",
|
||
"doc_section_description": "Description",
|
||
"doc_section_file": "File",
|
||
"doc_file_upload_label": "Upload file",
|
||
"doc_file_upload_note": "(optional)",
|
||
"doc_file_replace_label": "Upload new file",
|
||
"doc_file_replace_note": "(replaces the current file)",
|
||
"doc_current_file_label": "Current file:",
|
||
"doc_more_details": "More details",
|
||
"doc_new_heading": "New document",
|
||
"doc_edit_heading": "Edit",
|
||
"doc_section_details": "Details",
|
||
"doc_label_document_date": "Document date",
|
||
"doc_label_creation_location": "Place of creation",
|
||
"doc_label_archive_location_original": "Storage location (original)",
|
||
"doc_section_persons": "Persons",
|
||
"doc_sender_not_specified": "Not specified",
|
||
"doc_no_receivers": "No recipients",
|
||
"doc_section_content": "Content",
|
||
"doc_label_summary": "Summary",
|
||
"doc_loading": "Loading document...",
|
||
"doc_download_link": "Try direct download",
|
||
"doc_no_scan": "No scan available",
|
||
"persons_heading": "Person directory",
|
||
"persons_subtitle": "Browse the index of all recorded persons in the family archive.",
|
||
"persons_btn_new": "New person",
|
||
"persons_search_placeholder": "Search names...",
|
||
"persons_empty_heading": "No persons found.",
|
||
"persons_empty_text": "Try a different search term.",
|
||
"persons_new_heading": "New person",
|
||
"persons_section_details": "Person details",
|
||
"person_edit_heading": "Edit person",
|
||
"person_label_full_name": "Full name",
|
||
"person_merge_heading": "Merge person",
|
||
"person_merge_description": "This person will be merged into the selected target person. All documents and links will be transferred, then this person will be deleted.",
|
||
"person_merge_target_label": "Merge with",
|
||
"person_btn_merge": "Merge",
|
||
"person_btn_merge_confirm": "Yes, merge",
|
||
"person_merge_warning": "Warning: This action cannot be undone.",
|
||
"person_label_notes": "Notes",
|
||
"person_placeholder_notes": "Biographical notes, remarks…",
|
||
"person_label_birth_year": "Birth year",
|
||
"person_label_death_year": "Death year",
|
||
"person_placeholder_year": "e.g. 1923",
|
||
"person_year_error": "Please enter a four-digit year",
|
||
"person_years_error_order": "Birth year must be before death year",
|
||
"person_docs_heading": "Sent documents",
|
||
"person_no_docs": "This person has not yet been linked as a sender.",
|
||
"person_received_docs_heading": "Received documents",
|
||
"person_no_received_docs": "This person has not yet been linked as a receiver.",
|
||
"person_role_sender": "Sent",
|
||
"person_role_receiver": "Received",
|
||
"person_co_correspondents_heading": "Frequent correspondents",
|
||
"person_correspondents_hint": "click to view conversation",
|
||
"person_show_more": "+ {count} more",
|
||
"conv_label_person_a": "Person A (Sender)",
|
||
"conv_label_person_b": "Correspondent",
|
||
"conv_label_from": "Period from",
|
||
"conv_label_to": "Period to",
|
||
"conv_sort_label": "Sort:",
|
||
"conv_sort_newest": "Newest first",
|
||
"conv_sort_oldest": "Oldest first",
|
||
"conv_empty_heading": "Whose letters would you like to read?",
|
||
"conv_hero_crosslink": "Looking for a specific document? → Go to document search",
|
||
"conv_no_results_heading": "No documents found.",
|
||
"conv_no_results_text": "Try adjusting the time period.",
|
||
"conv_swap_btn": "Swap persons",
|
||
"conv_new_doc_link": "New document in this exchange",
|
||
"conv_strip_sort_newest": "Newest",
|
||
"conv_strip_sort_oldest": "Oldest",
|
||
"conv_suggestions_heading": "Top correspondents",
|
||
"conv_suggestions_all_label": "All correspondents of {name}",
|
||
"conv_letters_count": "{count} letters",
|
||
"conv_hero_divider": "or",
|
||
"conv_empty_recent_label": "Recently opened",
|
||
"conv_no_party": "—",
|
||
"dist_bar_segment": "{count} from {name}",
|
||
"dist_bar_aria": "Letter distribution in this period: {outCount} from {senderName}, {inCount} from {receiverName}",
|
||
"row_direction_sent": "Sent",
|
||
"row_direction_received": "Received",
|
||
"admin_heading": "Admin Dashboard",
|
||
"admin_tab_users": "Users",
|
||
"admin_tab_groups": "Groups",
|
||
"admin_tab_tags": "Tags",
|
||
"admin_section_users": "User management",
|
||
"admin_col_login": "Email",
|
||
"admin_col_groups": "Groups",
|
||
"admin_col_password": "Password",
|
||
"admin_multiselect_hint": "Ctrl+Click to select",
|
||
"admin_password_placeholder": "New PW (optional)",
|
||
"admin_no_groups": "No groups",
|
||
"admin_btn_delete_user_title": "Delete user",
|
||
"admin_section_new_user": "Create new user",
|
||
"admin_multiselect_hint_multi": "Ctrl+Click for multiple",
|
||
"admin_multiselect_hint_full": "Ctrl+Click for multiple selection",
|
||
"admin_section_tags": "Tags",
|
||
"admin_tags_warning": "Warning: Renaming or deleting affects all linked documents.",
|
||
"admin_tags_list_title": "All Tags",
|
||
"admin_tags_empty": "No tags found.",
|
||
"admin_tags_select_prompt": "Select a tag from the list.",
|
||
"admin_tag_edit_heading": "Tag: {name}",
|
||
"admin_tag_updated": "Tag saved.",
|
||
"admin_unsaved_warning": "You have unsaved changes — save or discard before switching.",
|
||
"admin_btn_collapse_list": "Collapse list",
|
||
"admin_btn_expand_list": "Expand list",
|
||
"admin_btn_edit_tag_label": "Edit tag",
|
||
"admin_tag_delete_confirm": "Really delete? The tag will be removed from all documents.",
|
||
"admin_btn_delete_tag_label": "Delete tag",
|
||
"admin_section_groups": "Group management",
|
||
"admin_col_name": "Name",
|
||
"admin_col_permissions": "Permissions",
|
||
"admin_col_actions": "Actions",
|
||
"admin_group_delete_confirm": "Really delete group?",
|
||
"admin_section_new_group": "Create new group",
|
||
"admin_group_name_placeholder": "Group name (e.g. Editors)",
|
||
"admin_user_delete_confirm": "Really delete user {username}?",
|
||
"admin_btn_new_user": "New User",
|
||
"admin_users_list_title": "All Users",
|
||
"admin_users_search_placeholder": "Search users…",
|
||
"admin_users_empty": "No users found.",
|
||
"admin_users_select_prompt": "Select a user from the list.",
|
||
"admin_btn_new_group": "New Group",
|
||
"admin_groups_list_title": "All Groups",
|
||
"admin_groups_empty": "No groups found.",
|
||
"admin_groups_select_prompt": "Select a group from the list.",
|
||
"admin_groups_permission_count": "{count} permissions",
|
||
"admin_group_new_heading": "Create new group",
|
||
"admin_group_edit_heading": "Group: {name}",
|
||
"admin_group_updated": "Group saved.",
|
||
"admin_group_created": "Group created.",
|
||
"admin_groups_section_standard": "Standard",
|
||
"admin_groups_section_administrative": "Administrative",
|
||
"admin_perm_read_all": "Read only",
|
||
"admin_perm_annotate_all": "Read & Annotate",
|
||
"admin_perm_write_all": "Read & Write",
|
||
"admin_perm_admin": "Full access (Admin)",
|
||
"admin_perm_admin_user": "Manage users",
|
||
"admin_perm_admin_tag": "Manage tags",
|
||
"admin_perm_admin_permission": "Manage permissions",
|
||
"admin_user_new_heading": "Create new user",
|
||
"admin_user_edit_heading": "Edit user: {username}",
|
||
"admin_user_created": "User has been created.",
|
||
"admin_user_updated": "Changes saved.",
|
||
"admin_col_full_name": "Name",
|
||
"admin_label_new_password_optional": "New password (optional)",
|
||
"admin_label_initial_password": "Password",
|
||
"doc_file_error_preview": "Could not load preview.",
|
||
"doc_download_title": "Download",
|
||
"topbar_back_label": "Back to document list",
|
||
"topbar_more_actions": "More actions",
|
||
"topbar_overflow_more": "+{count} more",
|
||
"topbar_overflow_suffix": "more",
|
||
"topbar_overflow_heading": "More receivers",
|
||
"topbar_overflow_show": "Show {count} more receivers",
|
||
"doc_tag_filter_title": "Filter by {name}",
|
||
"doc_conversation_title": "Show conversation",
|
||
"doc_preview_iframe_title": "Document Preview",
|
||
"doc_image_alt": "Original scan",
|
||
"doc_no_date": "No date",
|
||
"person_merge_will_be_deleted": "will be deleted.",
|
||
"comp_typeahead_placeholder": "Type a name...",
|
||
"comp_typeahead_loading": "Searching...",
|
||
"comp_multiselect_placeholder": "Type a name...",
|
||
"comp_multiselect_remove": "Remove",
|
||
"comp_multiselect_loading": "Searching...",
|
||
"comp_taginput_placeholder_create": "Add tags...",
|
||
"comp_taginput_placeholder_filter": "Filter by tags...",
|
||
"comp_taginput_remove": "Remove tag",
|
||
"comp_taginput_create_hint": "Press Enter to create tag.",
|
||
"error_email_already_in_use": "This email address is already used by another account.",
|
||
"error_wrong_current_password": "The current password is incorrect.",
|
||
"nav_profile": "Profile",
|
||
"profile_heading": "My Profile",
|
||
"profile_section_personal": "Personal Information",
|
||
"profile_label_first_name": "First name",
|
||
"profile_label_last_name": "Last name",
|
||
"profile_label_birth_date": "Date of birth",
|
||
"profile_label_email": "Email address",
|
||
"profile_label_contact": "Contact details",
|
||
"profile_contact_placeholder": "Phone, address or other notes...",
|
||
"profile_section_password": "Change password",
|
||
"profile_label_current_password": "Current password",
|
||
"profile_label_new_password": "New password",
|
||
"profile_label_new_password_confirm": "New password (repeat)",
|
||
"profile_password_mismatch": "The new passwords do not match.",
|
||
"profile_saved": "Saved.",
|
||
"profile_password_changed": "Password changed successfully.",
|
||
"user_profile_heading": "Profile of",
|
||
"error_invalid_reset_token": "The link is invalid or has expired.",
|
||
"forgot_password_heading": "Forgot password",
|
||
"forgot_password_email_label": "Email address",
|
||
"forgot_password_submit": "Request link",
|
||
"forgot_password_success": "If an account with this email address exists, you will shortly receive an email with a link to reset your password.",
|
||
"forgot_password_back_to_login": "Back to login",
|
||
"reset_password_heading": "Set new password",
|
||
"reset_password_label": "New password",
|
||
"reset_password_confirm_label": "Confirm password",
|
||
"reset_password_submit": "Save password",
|
||
"reset_password_mismatch": "The passwords do not match.",
|
||
"reset_password_success": "Your password has been changed successfully. You can now log in.",
|
||
"login_forgot_password": "Forgot password?",
|
||
"history_section_title": "History",
|
||
"history_loading": "Loading history…",
|
||
"history_empty": "No versions yet.",
|
||
"history_version_label": "Version",
|
||
"history_compare_mode": "Compare",
|
||
"history_compare_select_a": "Version A",
|
||
"history_compare_select_b": "Version B",
|
||
"history_compare_apply": "Compare",
|
||
"history_diff_no_changes": "No changes between these versions.",
|
||
"history_field_title": "Title",
|
||
"history_field_document_date": "Date",
|
||
"history_field_location": "Location",
|
||
"history_field_document_location": "Archive location",
|
||
"history_field_transcription": "Transcription",
|
||
"history_field_summary": "Summary",
|
||
"history_field_sender": "Sender",
|
||
"history_field_receivers": "Receivers",
|
||
"history_field_tags": "Tags",
|
||
"admin_tab_system": "System",
|
||
"admin_tab_ocr": "OCR",
|
||
"ocr_status_online": "Online",
|
||
"ocr_status_offline": "Offline",
|
||
"ocr_stat_training_blocks": "Ready (OCR training)",
|
||
"ocr_stat_total_blocks": "Total text blocks",
|
||
"ocr_stat_documents": "Training documents",
|
||
"ocr_stat_seg_blocks": "Ready (seg. training)",
|
||
"ocr_table_person": "Person",
|
||
"ocr_table_cer": "CER",
|
||
"ocr_table_accuracy": "Accuracy",
|
||
"ocr_table_lines": "Lines",
|
||
"ocr_table_actions": "Actions",
|
||
"ocr_table_details": "Details",
|
||
"ocr_no_models": "No sender models trained yet.",
|
||
"ocr_sender_models_heading": "Sender Models",
|
||
"ocr_global_history_link": "Global history →",
|
||
"ocr_global_history_heading": "Global History",
|
||
"admin_system_backfill_heading": "Backfill history data",
|
||
"admin_system_backfill_description": "Creates an initial history entry for all documents that do not have one yet (e.g. imported documents). This ensures that future edits only highlight actually changed fields.",
|
||
"admin_system_backfill_btn": "Backfill now",
|
||
"admin_system_backfill_success": "{count} documents were backfilled.",
|
||
"admin_system_backfill_hashes_heading": "Compute file hashes",
|
||
"admin_system_backfill_hashes_description": "Computes the SHA-256 hash for all previously uploaded documents that do not have one yet. This ensures annotations are correctly linked to their file version and shown again.",
|
||
"admin_system_backfill_hashes_btn": "Compute file hashes",
|
||
"admin_system_backfill_hashes_success": "{count} documents were updated.",
|
||
"admin_system_import_heading": "Mass import",
|
||
"admin_system_import_description": "Imports documents and metadata from the spreadsheet file in the /import directory.",
|
||
"admin_system_import_btn_start": "Start import",
|
||
"admin_system_import_btn_retry": "Start again",
|
||
"admin_system_import_status_idle": "No import started.",
|
||
"admin_system_import_status_running": "Import running…",
|
||
"admin_system_import_status_done": "Import complete – {count} documents processed.",
|
||
"admin_system_import_status_failed": "Error: {message}",
|
||
"admin_system_thumbnails_heading": "Generate thumbnails",
|
||
"admin_system_thumbnails_description": "Generates preview images for documents without a thumbnail (e.g. after the mass import).",
|
||
"admin_system_thumbnails_btn_start": "Generate thumbnails",
|
||
"admin_system_thumbnails_btn_retry": "Run again",
|
||
"admin_system_thumbnails_status_running": "Thumbnail generation running…",
|
||
"admin_system_thumbnails_status_done": "Done — {processed} generated, {skipped} skipped, {failed} failed.",
|
||
"admin_system_thumbnails_status_failed": "Error: {message}",
|
||
"comp_expandable_show_more": "Show more",
|
||
"comp_expandable_show_less": "Show less",
|
||
"error_comment_not_found": "The comment could not be found.",
|
||
"comment_section_title": "Discussion",
|
||
"comment_placeholder": "Write a comment… (@name to mention · Enter to send)",
|
||
"comment_btn_post": "Send",
|
||
"comment_btn_reply": "Reply",
|
||
"comment_edited_label": "(Edited)",
|
||
"comment_edit_hint": "Enter to save · Esc to cancel",
|
||
"comment_time_just_now": "just now",
|
||
"comment_time_minutes": "{count} minute(s) ago",
|
||
"comment_time_hours": "{count} hour(s) ago",
|
||
"comment_time_days": "{count} day(s) ago",
|
||
"comment_panel_title": "Comments",
|
||
"comment_panel_close": "Close",
|
||
"comp_dismiss": "Dismiss",
|
||
"doc_panel_tab_metadata": "Metadata",
|
||
"doc_panel_tab_transcription": "Transcription",
|
||
"doc_panel_tab_discussion": "Discussion",
|
||
"doc_panel_tab_history": "History",
|
||
"doc_panel_annotate": "Annotate",
|
||
"doc_panel_annotate_stop": "Done",
|
||
"doc_panel_annotate_hint": "Click and drag to mark an area",
|
||
"doc_panel_annotation_thread_title": "Annotation",
|
||
"doc_panel_discussion_annotation_tab": "Annotation · Page {page}",
|
||
"pdf_annotations_show": "Show annotations",
|
||
"pdf_annotations_hide": "Hide annotations",
|
||
"upload_action": "Upload",
|
||
"upload_drop_hint": "Drop one or multiple files at once",
|
||
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
||
"upload_filename_hint": "Tip: 2024-03-15_Mueller_Hans.pdf → date and sender pre-filled",
|
||
"upload_success": "{count} document(s) created",
|
||
"upload_duplicate": "{filename} already exists —",
|
||
"upload_duplicate_link": "View document",
|
||
"upload_invalid_type": "{filename}: unsupported file format",
|
||
"upload_error": "Error uploading {filename}",
|
||
"enrich_list_back": "Back to overview",
|
||
"enrich_list_count": "documents",
|
||
"btn_save_and_mark_reviewed": "Save & mark as reviewed",
|
||
"btn_mark_for_review": "Mark for review",
|
||
"enrich_needs_metadata_title": "Documents without metadata",
|
||
"enrich_needs_metadata_count": "{count} document(s) waiting for metadata",
|
||
"enrich_needs_metadata_cta": "Complete now",
|
||
"enrich_list_heading": "Documents without metadata",
|
||
"enrich_list_empty_heading": "All documents complete",
|
||
"enrich_list_empty_body": "There are no documents that still need metadata.",
|
||
"enrich_list_start": "Start reviewing",
|
||
"enrich_progress": "{count} remaining",
|
||
"enrich_skip": "Skip",
|
||
"enrich_done_heading": "All done!",
|
||
"enrich_done_body": "All documents have been processed.",
|
||
"enrich_back_to_list": "Back to list",
|
||
"comment_empty_hint": "No comments yet – start the discussion!",
|
||
"comment_start_discussion": "Start discussion →",
|
||
"notification_bell_label": "Notifications",
|
||
"notification_bell_unread_label": "{count} unread notifications",
|
||
"notification_mark_all_read": "Mark all read",
|
||
"notification_empty": "No new notifications",
|
||
"notification_type_reply": "{actor} replied to your comment",
|
||
"notification_type_mention": "{actor} mentioned you in a comment",
|
||
"notification_prefs_heading": "Notifications",
|
||
"notification_pref_reply": "Email when someone replies to my comment",
|
||
"notification_pref_mention": "Email when someone mentions me in a comment",
|
||
"notification_prefs_no_email": "Please add an email address above to receive notifications.",
|
||
"notification_unread": "unread",
|
||
"mention_btn_label": "Mention person",
|
||
"mention_popup_empty": "No users found",
|
||
"person_mention_open_link": "Open person",
|
||
"person_mention_hover_hint": "Click opens the page",
|
||
"person_mention_load_error": "Could not load person.",
|
||
"person_mention_loading": "Loading person…",
|
||
"person_mention_popup_empty": "No persons found",
|
||
"person_mention_btn_label": "Link person",
|
||
"person_mention_create_new": "Create new person",
|
||
"page_title_home": "Archive",
|
||
"page_title_persons": "Persons",
|
||
"page_title_admin": "Administration",
|
||
"page_title_login": "Sign in",
|
||
"page_title_error": "Error – Family Archive",
|
||
"dashboard_notifications_heading": "Notifications",
|
||
"dashboard_notification_mentioned": "mentioned you",
|
||
"dashboard_notification_replied": "replied",
|
||
"dashboard_needs_metadata_heading": "Missing Metadata",
|
||
"dashboard_needs_metadata_show_all": "Show all",
|
||
"dashboard_needs_metadata_show_all_count": "Show all {count} →",
|
||
"upload_banner_singular": "1 document uploaded.",
|
||
"upload_banner_plural": "{count} documents uploaded.",
|
||
"upload_banner_cta": "Enrich now →",
|
||
"upload_banner_close": "Dismiss notification",
|
||
"dashboard_recent_heading": "Recent Activity",
|
||
"dashboard_stats_documents": "Documents",
|
||
"dashboard_stats_persons": "Persons",
|
||
"dashboard_resume_label": "Last opened:",
|
||
"dashboard_resume_fallback": "Unknown document",
|
||
"doc_status_placeholder": "Placeholder",
|
||
"doc_status_uploaded": "Uploaded",
|
||
"doc_status_transcribed": "Transcribed",
|
||
"doc_status_reviewed": "Reviewed",
|
||
"doc_status_archived": "Archived",
|
||
"doc_status_unknown": "Unknown",
|
||
"persons_stats_persons_one": "1 person",
|
||
"persons_stats_persons_many": "{count} persons",
|
||
"persons_stats_documents_one": "1 document",
|
||
"persons_stats_documents_many": "{count} documents",
|
||
"persons_stats_label_persons_one": "Person",
|
||
"persons_stats_label_persons_many": "Persons",
|
||
"persons_stats_label_documents_one": "Document",
|
||
"persons_stats_label_documents_many": "Documents",
|
||
"person_card_doc_count_one": "1 doc",
|
||
"person_card_doc_count_many": "{count} docs",
|
||
"error_person_not_found": "Person not found.",
|
||
"person_btn_edit": "Edit",
|
||
"person_discard_changes": "Discard changes",
|
||
"person_danger_zone_heading": "Danger zone",
|
||
"persons_new_birth_year": "Birth year",
|
||
"persons_new_death_year": "Death year",
|
||
"persons_new_notes": "Notes",
|
||
"person_save_changes": "Save changes",
|
||
"notification_view_all": "View all →",
|
||
"notification_history_heading": "Notifications",
|
||
"notification_history_view_link": "View notification history →",
|
||
"notification_filter_all": "All",
|
||
"notification_filter_unread": "Unread",
|
||
"notification_filter_mention": "Mention",
|
||
"notification_filter_reply": "Reply",
|
||
"notification_mark_all_read_aria": "Mark all notifications as read",
|
||
"notification_load_more": "Load older",
|
||
"notification_empty_history": "No notifications",
|
||
"notification_empty_history_body": "Mentions and replies to your comments will appear here.",
|
||
"notification_row_aria": "{actor} {type} on \"{title}\" — {time} — {readState}",
|
||
"notification_read_state_read": "read",
|
||
"notification_read_state_unread": "unread",
|
||
"error_transcription_block_not_found": "Transcription block not found.",
|
||
"error_transcription_block_conflict": "This block was modified by someone else. Please reload the page.",
|
||
"doc_details_toggle": "Details",
|
||
"doc_details_section_details": "Details",
|
||
"doc_details_section_persons": "Persons",
|
||
"doc_details_section_tags": "Tags",
|
||
"doc_details_field_date": "Date",
|
||
"doc_details_field_sender": "Sender",
|
||
"doc_details_field_receivers": "Receivers",
|
||
"doc_details_field_status": "Status",
|
||
"doc_details_no_persons": "No persons assigned",
|
||
"doc_details_no_tags": "No tags assigned",
|
||
"doc_details_more_receivers": "+{count} more",
|
||
"transcription_mode_label": "Transcribe",
|
||
"transcription_mode_stop": "Done",
|
||
"transcription_block_placeholder": "Type text here...",
|
||
"transcription_block_save_saving": "Saving...",
|
||
"transcription_block_save_saved": "Saved",
|
||
"transcription_block_save_error": "Not saved",
|
||
"transcription_block_save_retry": "Retry",
|
||
"transcription_block_comment_btn": "Comment",
|
||
"transcription_block_quote_hint": "Select text to quote",
|
||
"transcription_block_delete_confirm": "Really delete this block and all its comments?",
|
||
"transcription_block_history_btn": "History",
|
||
"transcription_empty_cta": "Mark a region on the scan to start transcribing",
|
||
"transcription_next_block_cta": "Draw a frame on the scan to create block {number}",
|
||
"transcription_draw_tooltip": "Click and drag to mark a text region",
|
||
"transcription_quote_stale": "Quote from an older version",
|
||
"transcription_block_conflict": "This block was changed by someone else — please reload",
|
||
"sort_dir_asc": "Sort ascending",
|
||
"sort_dir_desc": "Sort descending",
|
||
"mode_read": "Read",
|
||
"mode_edit": "Edit",
|
||
"mode_edit_short": "Edit",
|
||
"transcription_status_section": "1 section",
|
||
"transcription_status_sections": "{count} sections",
|
||
"transcription_status_last_edited": "Last edited: {time}",
|
||
"scan_expand": "Expand scan",
|
||
"scan_collapse": "Collapse scan",
|
||
"transcription_empty_title": "No transcription yet",
|
||
"transcription_empty_desc": "Draw regions on the scan and type the text to create a transcription.",
|
||
"transcription_panel_close": "Close panel",
|
||
"person_alias_heading": "Name history",
|
||
"person_alias_empty": "No name changes recorded yet.",
|
||
"person_alias_type_BIRTH": "Birth name",
|
||
"person_alias_type_WIDOWED": "Name as widow/widower",
|
||
"person_alias_type_DIVORCED": "Name after divorce",
|
||
"person_alias_type_MAIDEN_NAME": "Maiden name",
|
||
"person_alias_type_OTHER": "Other name",
|
||
"person_type_PERSON": "Person",
|
||
"person_type_INSTITUTION": "Institution",
|
||
"person_type_GROUP": "Group",
|
||
"person_type_UNKNOWN": "Unknown",
|
||
"a11y_type_changed": "Type changed to {type}",
|
||
"person_alias_add_heading": "Add name",
|
||
"person_alias_label_type": "Type",
|
||
"person_alias_label_last_name": "Last name",
|
||
"person_alias_label_first_name": "First name (optional)",
|
||
"person_alias_btn_add": "Add",
|
||
"person_alias_delete_title": "Remove alias?",
|
||
"person_alias_delete_body": "This name will be removed from search results.",
|
||
"person_alias_btn_delete": "Remove",
|
||
"error_alias_not_found": "The name alias was not found.",
|
||
"error_invalid_person_type": "The specified person type is not valid.",
|
||
"error_person_rename_conflict": "Another edit modified a referenced transcription block at the same time. Please try again.",
|
||
"validation_last_name_required": "Last name is required.",
|
||
"validation_first_name_required": "First name is required.",
|
||
"error_ocr_service_unavailable": "The OCR service is not available.",
|
||
"error_ocr_job_not_found": "The OCR job was not found.",
|
||
"error_ocr_document_not_uploaded": "The document has no file — OCR is not possible.",
|
||
"error_ocr_processing_failed": "OCR processing failed.",
|
||
"error_training_already_running": "A training run is already in progress.",
|
||
"error_invalid_tag_color": "The chosen color is not valid.",
|
||
"error_tag_cycle_detected": "This parent tag would create a cycle.",
|
||
"ocr_script_type_typewriter": "Typewriter",
|
||
"ocr_script_type_handwriting_latin": "Handwriting (Latin)",
|
||
"ocr_script_type_handwriting_kurrent": "Handwriting (Kurrent/Sütterlin)",
|
||
"ocr_trigger_label": "Script type",
|
||
"ocr_trigger_select_placeholder": "Select script type…",
|
||
"ocr_trigger_btn": "Start OCR",
|
||
"ocr_trigger_btn_disabled": "Please select a script type",
|
||
"ocr_confirm_title": "Replace existing transcription?",
|
||
"ocr_confirm_body": "All {count} existing blocks will be deleted and replaced with OCR results. This action cannot be undone.",
|
||
"ocr_confirm_btn": "Replace",
|
||
"ocr_rerun_label": "Re-run OCR…",
|
||
"ocr_progress_heading": "OCR running",
|
||
"ocr_progress_page": "Page {current} of {total}",
|
||
"ocr_error_heading": "OCR failed",
|
||
"ocr_error_retry": "Try again",
|
||
"ocr_batch_running": "OCR running · {processed} of {total} documents complete",
|
||
"ocr_batch_done": "OCR complete · {processed} successful · {errors} failed",
|
||
"ocr_status_preparing": "Preparing document…",
|
||
"ocr_status_loading": "Loading model and document…",
|
||
"ocr_status_analyzing": "OCR analysis running — this may take a few minutes…",
|
||
"ocr_status_creating_blocks": "{count} text blocks detected — creating transcription…",
|
||
"ocr_status_done_blocks": "{count} blocks created",
|
||
"ocr_status_analyzing_page": "Analyzing page {current} of {total}…",
|
||
"ocr_status_preprocessing_page": "Preparing page {current} of {total}…",
|
||
"ocr_status_done_skipped": "{count} blocks created, {skipped} page(s) skipped",
|
||
"ocr_status_error": "OCR failed",
|
||
"ocr_trigger_no_annotations": "Draw regions on the document first.",
|
||
"ocr_section_heading": "Run OCR",
|
||
"transcription_block_review": "Mark as reviewed",
|
||
"transcription_block_unreview": "Unmark as reviewed",
|
||
"transcription_reviewed_count": "{reviewed} of {total} reviewed",
|
||
"training_ocr_heading": "Train Kurrent recognition",
|
||
"training_ocr_description": "Start a new training run using the reviewed OCR blocks to improve recognition accuracy for Kurrent script.",
|
||
"training_ocr_blocks_ready": "{blocks} reviewed blocks ready / {docs} documents",
|
||
"training_ocr_blocks_total": "(of {total} OCR blocks total)",
|
||
"training_start_btn": "Start training",
|
||
"training_in_progress": "…",
|
||
"training_success": "Training started and completed.",
|
||
"training_start_failed": "Failed to start training. Please try again.",
|
||
"training_too_few_blocks": "At least 5 reviewed blocks required (currently: {available}).",
|
||
"training_service_down": "OCR service is unavailable.",
|
||
"training_history_heading": "History",
|
||
"training_history_empty": "No training runs yet.",
|
||
"training_history_col_date": "Date",
|
||
"training_history_col_status": "Status",
|
||
"training_history_col_blocks": "Blocks",
|
||
"training_history_col_docs": "Documents",
|
||
"training_history_col_cer": "Error Rate",
|
||
"training_status_done": "Done",
|
||
"training_status_failed": "Failed",
|
||
"training_error_detail_label": "Error details",
|
||
"training_status_running": "Running…",
|
||
"training_seg_heading": "Train segmentation",
|
||
"training_seg_description": "Start a new training run using annotated segmentation regions to improve text detection.",
|
||
"training_seg_blocks_ready": "{blocks} segmentation blocks ready",
|
||
"training_seg_too_few_blocks": "At least 5 segmentation blocks required (currently: {available}).",
|
||
"transcription_block_segmentation_only": "Segmentation only",
|
||
"training_chip_kurrent": "Kurrent recognition",
|
||
"training_chip_segmentation": "Segmentation",
|
||
"training_col_type": "Type",
|
||
"training_type_base": "Base",
|
||
"training_type_personalized": "Personalized",
|
||
"training_col_person": "Sender",
|
||
"training_status_queued": "Queued",
|
||
"mission_control_heading": "What needs attention?",
|
||
"mission_control_segmentation_heading": "Mark text",
|
||
"mission_control_segmentation_description": "Mark text areas — no prior knowledge needed",
|
||
"mission_control_seg_skill_pill": "✓ No prior knowledge",
|
||
"mission_control_segmentation_empty": "All documents already have segmentation blocks.",
|
||
"mission_control_transcription_heading": "Transcribe text",
|
||
"mission_control_transcription_description": "Type out text — Kurrent knowledge helpful",
|
||
"mission_control_trans_skill_pill": "Kurrent helpful",
|
||
"mission_control_transcription_empty": "No documents waiting for transcription.",
|
||
"mission_control_ready_heading": "Ready to read ✓",
|
||
"mission_control_ready_description": "Fully transcribed and reviewed",
|
||
"mission_control_ready_subtitle": "{count} documents ready",
|
||
"mission_control_ready_empty": "No documents fully transcribed yet.",
|
||
"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",
|
||
"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_merge_target_placeholder": "Search target tag …",
|
||
"admin_tag_merge_success": "Merged successfully.",
|
||
"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_subtree_confirm_btn": "Delete subtree",
|
||
"admin_tag_delete_confirm_heading": "Type «{name}» to confirm:",
|
||
"filter_operator_and": "AND",
|
||
"filter_operator_or": "OR",
|
||
"filter_operator_and_label": "All selected tags must match (AND)",
|
||
"filter_operator_or_label": "At least one tag must match (OR)",
|
||
"error_invite_not_found": "Invite link not found or invalid.",
|
||
"error_invite_exhausted": "This invite link has already been fully used.",
|
||
"error_invite_revoked": "This invite link has been deactivated.",
|
||
"error_invite_expired": "This invite link has expired.",
|
||
"register_heading": "Create account",
|
||
"register_subtext": "You've been invited to join Familienarchiv.",
|
||
"register_label_first_name": "First name",
|
||
"register_label_last_name": "Last name",
|
||
"register_label_email": "Email address",
|
||
"register_label_password": "Password",
|
||
"register_prefill_hint": "Pre-filled from your invite – you can change it",
|
||
"register_password_show": "Show password",
|
||
"register_password_hide": "Hide password",
|
||
"register_btn_submit": "Create account",
|
||
"register_invalid_code": "Invalid invite link",
|
||
"register_invalid_code_desc": "This invite link is not valid, has already been used, or has expired. Please contact the administrator.",
|
||
"register_invite_only": "The archive is invite-only.",
|
||
"register_invite_only_desc": "You need a personal invite link to create an account. Please get in touch with a family member.",
|
||
"register_success": "Your account has been created. You can now sign in.",
|
||
"register_eyebrow": "A family project",
|
||
"register_hero_headline": "Glad you're here.",
|
||
"register_hero_subtext": "Together we preserve letters and documents – for the family, now and in the future.",
|
||
"register_section_about": "About you",
|
||
"register_section_account": "Account",
|
||
"register_section_notifications": "Notifications",
|
||
"register_label_password_confirm": "Confirm password",
|
||
"register_pw_hint": "At least 8 characters.",
|
||
"register_pw_ok": "At least 8 characters. ✓",
|
||
"register_pw_match_ok": "Passwords match.",
|
||
"register_pw_match_no": "The two passwords don't match yet.",
|
||
"register_notify_title": "Notify me",
|
||
"register_notify_desc": "when someone mentions me in a comment or replies to one of my comments.",
|
||
"register_btn_loading": "Creating …",
|
||
"register_already_have_account": "Already have an account?",
|
||
"register_sign_in": "Sign in",
|
||
"login_registered_success": "Your account was created successfully. Sign in now.",
|
||
"admin_tab_invites": "Invites",
|
||
"admin_invites_list_title": "Invites",
|
||
"admin_invites_empty": "No active invites.",
|
||
"admin_btn_new_invite": "New invite",
|
||
"admin_btn_show_all": "Show all",
|
||
"admin_btn_show_active": "Active only",
|
||
"admin_btn_revoke": "Revoke",
|
||
"admin_btn_copy_link": "Copy link",
|
||
"admin_btn_copied": "Copied!",
|
||
"admin_invite_status_active": "Active",
|
||
"admin_invite_status_exhausted": "Exhausted",
|
||
"admin_invite_status_revoked": "Revoked",
|
||
"admin_invite_status_expired": "Expired",
|
||
"admin_invite_col_code": "Code",
|
||
"admin_invite_col_label": "Label",
|
||
"admin_invite_col_uses": "Uses",
|
||
"admin_invite_col_expiry": "Expiry",
|
||
"admin_invite_col_status": "Status",
|
||
"admin_invite_col_link": "Link",
|
||
"admin_invite_unlimited": "∞",
|
||
"admin_invite_no_expiry": "No expiry",
|
||
"admin_new_invite_label": "Label (e.g. who it is for)",
|
||
"admin_new_invite_max_uses": "Max uses (empty = unlimited)",
|
||
"admin_new_invite_prefill_first": "Pre-fill first name (optional)",
|
||
"admin_new_invite_prefill_last": "Pre-fill last name (optional)",
|
||
"admin_new_invite_prefill_email": "Pre-fill email (optional)",
|
||
"admin_new_invite_expires": "Expiry date (optional)",
|
||
"admin_invite_created_title": "Invite created",
|
||
"admin_invite_created_desc": "Share this link with the person you are inviting:",
|
||
"admin_invite_revoke_confirm": "Really revoke this invite?",
|
||
|
||
"greeting_morning": "Good morning, {name}.",
|
||
"greeting_day": "Hello, {name}.",
|
||
"greeting_evening": "Good evening, {name}.",
|
||
|
||
"dashboard_resume_label": "Continue where you left off",
|
||
"dashboard_blocks": "{count} sections",
|
||
"dashboard_resume_cta": "Continue transcribing",
|
||
"dashboard_resume_other": "or choose another document",
|
||
"dashboard_empty_title": "No document started yet",
|
||
"dashboard_empty_body": "Choose a document from the archive to start transcribing.",
|
||
"dashboard_empty_cta": "To the archive",
|
||
|
||
"dashboard_mission_caption": "Open tasks",
|
||
"queue_segment": "Segment",
|
||
"queue_segment_blurb": "Split pages",
|
||
"queue_transcribe": "Transcribe",
|
||
"queue_transcribe_blurb": "Capture text",
|
||
"queue_review": "Review",
|
||
"queue_review_blurb": "Check texts",
|
||
"queue_n_open": "{n} open",
|
||
"queue_show_all": "Show all →",
|
||
|
||
"pulse_eyebrow": "This week",
|
||
"pulse_headline": "You have worked on {pages} pages.",
|
||
"pulse_you": "You personally worked on {pages} of them.",
|
||
"pulse_contributors": "Contributors",
|
||
"pulse_transcribed": "Passages annotated",
|
||
"pulse_reviewed": "Passages transcribed",
|
||
"pulse_uploaded": "Documents uploaded",
|
||
|
||
"feed_caption": "Comments & activity",
|
||
"feed_show_all": "Show all",
|
||
"feed_for_you": "for you",
|
||
|
||
"audit_action_text_saved": "saved text in",
|
||
"audit_action_file_uploaded": "uploaded a file:",
|
||
"audit_action_annotation_created": "created an annotation in",
|
||
"audit_action_comment_added": "commented:",
|
||
"audit_action_mention_created": "mentioned you in",
|
||
|
||
"dropzone_release": "Release to upload",
|
||
|
||
"chronik_page_title": "Activity",
|
||
"chronik_for_you_caption": "For you",
|
||
"chronik_for_you_count": "{count} new",
|
||
"chronik_mark_read_aria": "Mark as read",
|
||
"chronik_mark_all_read": "Mark all read",
|
||
"chronik_inbox_zero_title": "No new mentions",
|
||
"chronik_inbox_zero_link": "See older mentions →",
|
||
"chronik_filter_label": "Filter activity",
|
||
"chronik_filter_all": "All",
|
||
"chronik_filter_for_you": "For you",
|
||
"chronik_filter_uploaded": "Uploaded",
|
||
"chronik_filter_transcription": "Transcription",
|
||
"chronik_filter_comments": "Comments",
|
||
"chronik_day_today": "Today",
|
||
"chronik_day_yesterday": "Yesterday",
|
||
"chronik_day_this_week": "This week",
|
||
"chronik_day_older": "Older",
|
||
"chronik_singleton_text_saved": "{actor} transcribed a block in {doc}",
|
||
"chronik_rollup_text_saved": "{actor} transcribed {doc}",
|
||
"chronik_singleton_uploaded": "{actor} uploaded {doc}",
|
||
"chronik_rollup_uploaded": "{actor} uploaded documents",
|
||
"chronik_singleton_reviewed": "{actor} reviewed a block in {doc}",
|
||
"chronik_rollup_reviewed": "{actor} reviewed {doc}",
|
||
"chronik_singleton_annotated": "{actor} annotated {doc}",
|
||
"chronik_rollup_annotated": "{actor} annotated {doc}",
|
||
"chronik_comment_added": "{actor} commented on {doc}",
|
||
"chronik_mention_created": "{actor} mentioned you in {doc}",
|
||
"chronik_reply_received": "{actor} replied to you in {doc}",
|
||
"chronik_empty_first_run_title": "Nothing has happened yet",
|
||
"chronik_empty_first_run_body": "As soon as someone in the family uploads or transcribes a document, the activity will show up here.",
|
||
"chronik_empty_filter_title": "Nothing in this view",
|
||
"chronik_empty_filter_body": "There are no entries for this filter.",
|
||
"chronik_error_title": "Activity could not be loaded.",
|
||
"chronik_error_retry": "Try again",
|
||
"chronik_load_more": "Load more",
|
||
"chronik_loading": "Loading …",
|
||
"chronik_load_more_announcement": "{count} more entries loaded",
|
||
"chronik_view_all": "All activity →",
|
||
"pagination_prev": "Previous",
|
||
"pagination_next": "Next",
|
||
"pagination_page_of": "Page {page} of {total}",
|
||
"pagination_nav_label": "Pagination",
|
||
"pagination_page_button": "Page {page}",
|
||
|
||
"common_opens_new_tab": "(opens in new tab)",
|
||
|
||
"transcribe_coach_title": "First transcription?",
|
||
"transcribe_coach_preamble": "Our Kurrent recogniser is still learning. Every transcription you release for training teaches it the handwriting — here's how it works:",
|
||
"transcribe_coach_step_1_title": "Draw a frame.",
|
||
"transcribe_coach_step_1_body": "Click and drag a frame around the text you want to transcribe.",
|
||
"transcribe_coach_step_2_title": "Enter the text.",
|
||
"transcribe_coach_step_2_body": "Type the text you see inside the frame into the new text field.",
|
||
"transcribe_coach_step_3_title": "Saves automatically.",
|
||
"transcribe_coach_footer_kurrent": "Kurrent help ↗",
|
||
"transcribe_coach_footer_richtlinien": "Transcription guidelines ↗",
|
||
|
||
"transcription_mode_help_label": "Read and edit mode",
|
||
"transcription_mode_help_body": "Read shows the transcription as flowing text. Edit opens the text fields for each passage.",
|
||
|
||
"richtlinien_title": "Transcription Guidelines",
|
||
"richtlinien_intro": "So every letter is transcribed consistently — no matter who types — here are our rules. The page grows with us: as soon as we agree a new convention, it lands here.",
|
||
"richtlinien_wiki_text": "The Kurrent and Sütterlin alphabets are well explained on Wikipedia. Here you'll only find our own conventions for this archive.",
|
||
"richtlinien_wiki_link": "Wikipedia",
|
||
"richtlinien_rules_label": "Transcription rules",
|
||
"richtlinien_rule_unleserlich_title": "Illegible words",
|
||
"richtlinien_rule_unleserlich_body": "If you can't decipher a word even after trying, write [unleserlich]. Someone else will take another look later.",
|
||
"richtlinien_rule_durchgestrichen_title": "Struck-through words",
|
||
"richtlinien_rule_durchgestrichen_body": "Struck-through text still belongs to the letter. Write it in square brackets with prefix durchgestrichen:",
|
||
"richtlinien_rule_langes_s_title": "The long s (ſ)",
|
||
"richtlinien_rule_langes_s_body": "The ſ is just an old written form of the letter s — not a separate sound. Always write a normal s.",
|
||
"richtlinien_rule_name_title": "Uncertain names",
|
||
"richtlinien_rule_name_body": "If you think you can read a name but aren't sure, add a question mark in square brackets.",
|
||
"richtlinien_rule_dialekt_title": "Dialect, foreign words, foreign quotes",
|
||
"richtlinien_rule_dialekt_body": "Low German, French, Latin phrases — copy them verbatim, exactly as written.",
|
||
"richtlinien_beispiel_label": "Example",
|
||
"richtlinien_klaerung_label": "Still to be decided",
|
||
"richtlinien_klaerung_intro": "These questions are still open — if you hit one while transcribing, make a plausible choice and note it in the comments:",
|
||
"richtlinien_klaer_abkuerzungen": "Abbreviations",
|
||
"richtlinien_klaer_datumsformate": "Date formats",
|
||
"richtlinien_klaer_umbrueche": "Original line breaks",
|
||
"richtlinien_klaer_caps": "Old capitalisation",
|
||
"richtlinien_closing_title": "Missing a rule?",
|
||
"richtlinien_closing_body": "If you hit a situation while transcribing that isn't listed here — leave a comment on the relevant block. We collect them and discuss them at the next family gathering.",
|
||
"error_batch_too_large": "Too many files at once — please upload in smaller batches.",
|
||
"bulk_drop_hint": "Drop one or more files here",
|
||
"bulk_drop_sub": "PDF · up to 50 MB per file",
|
||
"bulk_count_pill": "{count} will be created",
|
||
"bulk_save_cta_one": "Save →",
|
||
"bulk_save_cta": "Save {count} →",
|
||
"bulk_discard_all": "Discard all",
|
||
"bulk_discard_confirm": "Discard all files and entered data? This action cannot be undone.",
|
||
"bulk_add_more": "Add more",
|
||
"bulk_scope_per_file_label": "This file only",
|
||
"bulk_scope_shared_label": "Applies to all {count}",
|
||
"bulk_title_suggested_hint": "Suggested from filename — click to edit",
|
||
"bulk_switcher_prev": "Previous file",
|
||
"bulk_switcher_next": "Next file",
|
||
"bulk_file_error_chip_label": "Upload failed",
|
||
"bulk_upload_progress": "{done} of {total} uploaded",
|
||
"bulk_partial_success": "{created} created, {failed} failed",
|
||
"bulk_all_failed": "All uploads failed",
|
||
"bulk_drop_desc": "A separate document is created for each file. The title is pre-filled from the filename — all other fields apply to all documents.",
|
||
"bulk_select_files": "Select files",
|
||
"bulk_drop_zone_label": "Drop files here",
|
||
"bulk_remove_file": "Remove",
|
||
"bulk_title_single": "New Document",
|
||
"bulk_title_multi": "New Documents",
|
||
"bulk_edit_button": "Bulk edit",
|
||
"bulk_edit_n_selected_one": "1 document selected",
|
||
"bulk_edit_n_selected_other": "{count} documents selected",
|
||
"bulk_edit_clear_all": "Clear all",
|
||
"bulk_edit_all_x": "Edit all {count}",
|
||
"bulk_edit_select_document": "Select document {title}",
|
||
"bulk_edit_hint": "Only filled fields are applied. Tags and receivers are added, not replaced.",
|
||
"bulk_edit_badge_additive": "+ will be added",
|
||
"bulk_edit_badge_replace": "will replace",
|
||
"bulk_edit_save_progress": "Batch {done} of {total} processed",
|
||
"bulk_edit_save_partial": "{done} of {total} saved",
|
||
"bulk_edit_retry": "Retry",
|
||
"bulk_edit_title": "Bulk edit",
|
||
"bulk_edit_save_button": "Apply",
|
||
"error_bulk_edit_too_many_ids": "Maximum 500 documents per request.",
|
||
"form_label_archive_box": "Box",
|
||
"form_helper_archive_box": "Which box in the archive?",
|
||
"form_label_archive_folder": "Folder",
|
||
"form_helper_archive_folder": "Which folder inside the box?",
|
||
"bulk_edit_clear_selection": "Clear selection",
|
||
"bulk_edit_clear_hint_keyboard": "Esc: clear selection",
|
||
"bulk_edit_loading": "Loading documents…",
|
||
"bulk_edit_all_x_failed": "Could not load filter results — please retry.",
|
||
"bulk_edit_topbar_title": "Bulk edit",
|
||
"bulk_edit_count_pill": "{count} will be edited",
|
||
|
||
"nav_stammbaum": "Family tree",
|
||
|
||
"error_relationship_not_found": "Relationship not found.",
|
||
"error_circular_relationship": "This relationship would form a cycle.",
|
||
"error_duplicate_relationship": "This relationship already exists.",
|
||
|
||
"relation_parent_of": "Parent of",
|
||
"relation_child_of": "Child of",
|
||
"relation_spouse_of": "Spouse",
|
||
"relation_sibling_of": "Sibling",
|
||
"relation_friend": "Friend",
|
||
"relation_colleague": "Colleague",
|
||
"relation_employer": "Employer",
|
||
"relation_doctor": "Doctor",
|
||
"relation_neighbor": "Neighbour",
|
||
"relation_other": "Other",
|
||
|
||
"relation_inferred_parent": "Parent",
|
||
"relation_inferred_child": "Child",
|
||
"relation_inferred_spouse": "Spouse",
|
||
"relation_inferred_sibling": "Sibling",
|
||
"relation_inferred_grandparent": "Grandparent",
|
||
"relation_inferred_grandchild": "Grandchild",
|
||
"relation_inferred_great_grandparent": "Great-grandparent",
|
||
"relation_inferred_great_grandchild": "Great-grandchild",
|
||
"relation_inferred_uncle_aunt": "Uncle/Aunt",
|
||
"relation_inferred_niece_nephew": "Niece/Nephew",
|
||
"relation_inferred_great_uncle_aunt": "Great-uncle/Aunt",
|
||
"relation_inferred_great_niece_nephew": "Great-niece/Nephew",
|
||
"relation_inferred_inlaw_parent": "Parent-in-law",
|
||
"relation_inferred_inlaw_child": "Child-in-law",
|
||
"relation_inferred_sibling_inlaw": "Sibling-in-law",
|
||
"relation_inferred_cousin_1": "Cousin",
|
||
"relation_inferred_distant": "Distant relative",
|
||
|
||
"doc_details_field_relationship": "Relationship",
|
||
|
||
"stammbaum_empty_heading": "No family members yet",
|
||
"stammbaum_empty_body": "Mark a person as a family member on their edit page so they appear here.",
|
||
"stammbaum_empty_link": "→ Go to person list",
|
||
"stammbaum_panel_direct_rels": "Direct relationships",
|
||
"stammbaum_panel_derived_rels": "Derived relationships",
|
||
"stammbaum_panel_to_person": "Go to person page →",
|
||
"stammbaum_panel_add_rel": "+ Add relationship",
|
||
"stammbaum_relationships_heading": "Family tree & relationships",
|
||
"stammbaum_zoom_in": "Zoom in",
|
||
"stammbaum_zoom_out": "Zoom out",
|
||
"stammbaum_generations": "Generations",
|
||
|
||
"relation_error_duplicate": "This relationship already exists.",
|
||
"relation_error_circular": "This relationship would form a cycle.",
|
||
"relation_error_self": "A person cannot be related to themselves.",
|
||
"relation_year_from": "from {year}",
|
||
"relation_year_to": "until {year}",
|
||
"relation_year_error_bis_before_von": "End year must not precede start year.",
|
||
"relation_label_family_member": "Family member",
|
||
"relation_toggle_add_to_tree": "Add to family tree",
|
||
"relation_toggle_remove_from_tree": "Remove from family tree",
|
||
"relation_label_in_tree": "Appears in the family tree",
|
||
"relation_label_view_in_tree": "View →",
|
||
"relation_label_direct": "Direct relationships",
|
||
"relation_label_derived": "Derived relationships",
|
||
"relation_btn_add": "Add",
|
||
"relation_btn_save": "Save",
|
||
"relation_btn_cancel": "Cancel",
|
||
"relation_form_group_family": "Family",
|
||
"relation_form_group_social": "Social",
|
||
"relation_form_field_type": "Type",
|
||
"relation_form_field_from_year": "From year",
|
||
"relation_form_field_to_year": "To year",
|
||
"relation_form_year_placeholder": "e.g. 1920",
|
||
|
||
"person_relationships_heading": "Relationships",
|
||
"person_relationships_empty": "No relationships known yet."
|
||
}
|