From 84bcea834a8154627cb18bc8f8baa8e46902dd5c Mon Sep 17 00:00:00 2001 From: IT Creativity + Art Team Date: Wed, 22 Oct 2025 23:13:40 +0300 Subject: [PATCH 1/2] Bulgarian UI Support added --- .../frontend/src/lib/translations/bg.json | 292 ++++++++++++++++++ 1 file changed, 292 insertions(+) create mode 100644 packages/frontend/src/lib/translations/bg.json diff --git a/packages/frontend/src/lib/translations/bg.json b/packages/frontend/src/lib/translations/bg.json new file mode 100644 index 0000000..9eab6e7 --- /dev/null +++ b/packages/frontend/src/lib/translations/bg.json @@ -0,0 +1,292 @@ +{ + "app": { + "auth": { + "login": "Вход", + "login_tip": "Въведете имейл адреса си по-долу, за да влезете в профила си.", + "email": "Имейл", + "password": "Парола" + }, + "common": { + "working": "Работата е в ход" + }, + "archive": { + "title": "Архив", + "no_subject": "Без тема", + "from": "От", + "sent": "Изпратени", + "recipients": "Получатели", + "to": "До", + "meta_data": "Метаданни", + "folder": "Папка", + "tags": "Етикети", + "size": "Размер", + "email_preview": "Преглед на имейла", + "attachments": "Прикачени файлове", + "download": "Изтегляне", + "actions": "Действия", + "download_eml": "Изтегляне на съобщения (.eml)", + "delete_email": "Изтриване на съобщения", + "email_thread": "Нишка от съобщения", + "delete_confirmation_title": "Сигурни ли сте, че искате да изтриете това съобщение?", + "delete_confirmation_description": "Това действие не може да бъде отменено и ще премахне имейла и прикачените към него файлове за постоянно.", + "deleting": "Изтриване", + "confirm": "Потвърдете", + "cancel": "Отказ", + "not_found": "Съобщението не е открито." + }, + "ingestions": { + "title": "Източници за приемане", + "ingestion_sources": "Източници за приемане", + "bulk_actions": "Групови действия", + "force_sync": "Принудително синхронизиране", + "delete": "Изтрийте", + "create_new": "Създайте нов", + "name": "Име", + "provider": "Доставчик", + "status": "Статус", + "active": "Активно", + "created_at": "Създадено в", + "actions": "Действия", + "last_sync_message": "Последно синхронизирано съобщение", + "empty": "Празно", + "open_menu": "Отворете менюто", + "edit": "Редактиране", + "create": "Създайте", + "ingestion_source": "Източници за приемане", + "edit_description": "Направете промени в източника си за приемане тук.", + "create_description": "Добавете нов източник за приемане, за да започнете да архивирате съобщения.", + "read": "Прочетете", + "docs_here": "тук се намира документацията", + "delete_confirmation_title": "Наистина ли искате да изтриете това приемане?", + "delete_confirmation_description": "Това ще изтрие всички архивирани съобщения, прикачени файлове, индексирания и файлове, свързани с това приемане. Ако искате да спрете само синхронизирането на нови съобщения, можете вместо това да поставите приемането на пауза.", + "deleting": "Изтриване", + "confirm": "Потвърдете", + "cancel": "Отказ", + "bulk_delete_confirmation_title": "Сигурни ли сте, че искате да изтриете {{count}} избраните приемания?", + "bulk_delete_confirmation_description": "Това ще изтрие всички архивирани съобщения, прикачени файлове, индексирания и файлове, свързани с тези приемания. Ако искате да спрете само синхронизирането на нови съобщения, можете вместо това да поставите приеманията на пауза." + }, + "search": { + "title": "Търсене", + "description": "Търсене на архивирани съобщения.", + "email_search": "Претърсване на имейл", + "placeholder": "Търсене по ключова дума, подател, получател...", + "search_button": "Търсене", + "search_options": "Опции за търсене", + "strategy_fuzzy": "Размито", + "strategy_verbatim": "Дословно", + "strategy_frequency": "Честота", + "select_strategy": "Изберете стратегия", + "error": "Грешка", + "found_results_in": "Намерени {{total}} резултати за {{seconds}}и", + "found_results": "Намерени {{total}} резултати", + "from": "От", + "to": "До", + "in_email_body": "В съдържанието на имейла", + "in_attachment": "В прикачения файл: {{filename}}", + "prev": "Предишен", + "next": "Следващ" + }, + "roles": { + "title": "Управление на ролите", + "role_management": "Управление на ролите", + "create_new": "Създаване на нова", + "name": "Име", + "created_at": "Създадено в", + "actions": "Действия", + "open_menu": "Отваряне на менюто", + "view_policy": "Преглед на политиката", + "edit": "Редактиране", + "delete": "Изтриване", + "no_roles_found": "Няма намерени роли.", + "role_policy": "Политика за ролите", + "viewing_policy_for_role": "Преглед на политиката за роля: {{name}}", + "create": "Създаване", + "role": "Роля", + "edit_description": "Направете промени в ролята тук.", + "create_description": "Добавете нова роля към системата.", + "delete_confirmation_title": "Сигурни ли сте, че искате да изтриете тази роля?", + "delete_confirmation_description": "Това действие не може да бъде отменено. Това ще изтрие ролята за постоянно.", + "deleting": "Изтриване", + "confirm": "Потвърдете", + "cancel": "Отказ" + }, + "system_settings": { + "title": "Системни настройки", + "system_settings": "Системни настройки", + "description": "Управление на глобалните настройки на приложението.", + "language": "Език", + "default_theme": "Тема по подразбиране", + "light": "Светла", + "dark": "Тъмна", + "system": "Система", + "support_email": "Имейл за поддръжка", + "saving": "Съхранява се", + "save_changes": "Съхранете промените" + }, + "users": { + "title": "Управление на потребителите", + "user_management": "Управление на потребителите", + "create_new": "Създаване на нов", + "name": "Име", + "email": "Имейл", + "role": "Роля", + "created_at": "Създадено в", + "actions": "Действия", + "open_menu": "Отваряне на меню", + "edit": "Редактиране", + "delete": "Изтриване", + "no_users_found": "Няма открити потребители.", + "create": "Създаване", + "user": "Потребител", + "edit_description": "Направете промени на потребителя тук.", + "create_description": "Добавете нов потребител към системата.", + "delete_confirmation_title": "Сигурни ли сте, че искате да изтриете този потребител?", + "delete_confirmation_description": "Това действие не може да бъде отменено. Това ще изтрие потребителя за постоянно и ще премахне данните му от нашите сървъри.", + "deleting": "Изтриване", + "confirm": "Потвърдете", + "cancel": "Отказ" + }, + "components": { + "charts": { + "emails_ingested": "Приети съобщения", + "storage_used": "Използвано пространство", + "emails": "Съобщения" + }, + "common": { + "submitting": "Изпращане...", + "submit": "Изпратете", + "save": "Съхранете" + }, + "email_preview": { + "loading": "Зареждане на визуализацията на имейла...", + "render_error": "Не можа да се изобрази визуализация на имейла.", + "not_available": "Необработеният .eml файл не е наличен за този имейл." + }, + "footer": { + "all_rights_reserved": "Всички права запазени.", + "new_version_available": "Налична е нова версия" + }, + "ingestion_source_form": { + "provider_generic_imap": "Общ IMAP", + "provider_google_workspace": "Google Workspace", + "provider_microsoft_365": "Microsoft 365", + "provider_pst_import": "PST Импортиране", + "provider_eml_import": "EML Импортиране", + "provider_mbox_import": "Mbox Импортиране", + "select_provider": "Изберете доставчик", + "service_account_key": "Ключ за сервизен акаунт (JSON)", + "service_account_key_placeholder": "Поставете JSON съдържанието на ключа на вашия сервизен акаунт", + "impersonated_admin_email": "Имейл адрес на администратор, използван като идентификатор", + "client_id": "Приложение (Клиент) ID", + "client_secret": "Клиентски таен ключ", + "client_secret_placeholder": "Въведете клиентския таен ключ като стойност, а не ID тайната", + "tenant_id": "Директория (Наемател) ID", + "host": "Хост", + "port": "Порт", + "username": "Потребителско им", + "use_tls": "Използвайте TLS", + "allow_insecure_cert": "Разрешаване на несигурен сертификат", + "pst_file": "PST Файл", + "eml_file": "EML Файл", + "mbox_file": "Mbox файл", + "heads_up": "Внимание!", + "org_wide_warning": "Моля, обърнете внимание, че това е операция за цялата организация. Този вид приемане ще импортира и индексира всички имейл входящи кутии във вашата организация. Ако искате да импортирате само конкретни имейл входящи кутии, използвайте IMAP инструмента за свързване.", + "upload_failed": "Качването не бе успешно, моля, опитайте отново" + }, + "role_form": { + "policies_json": "Политики (JSON)", + "invalid_json": "Невалиден JSON формат за политики." + }, + "theme_switcher": { + "toggle_theme": "Превключване на тема" + }, + "user_form": { + "select_role": "Изберете роля" + } + }, + "setup": { + "title": "Настройка", + "description": "Настройте първоначалния администраторски акаунт за Open Archiver.", + "welcome": "Добре дошли", + "create_admin_account": "Създайте първия администраторски акаунт, за да започнете.", + "first_name": "Име", + "last_name": "Фамилия", + "email": "Имейл", + "password": "Парола", + "creating_account": "Създаване на акаунт", + "create_account": "Създаване на акаунт" + }, + "layout": { + "dashboard": "Табло за управление", + "ingestions": "Приети", + "archived_emails": "Архивирани съобщения", + "search": "Търсене", + "settings": "Настройки", + "system": "Система", + "users": "Потребители", + "roles": "Роли", + "api_keys": "API ключове", + "logout": "Изход" + }, + "api_keys_page": { + "title": "API ключове", + "header": "API ключове", + "generate_new_key": "Генериране на нов ключ", + "name": "Име", + "key": "Ключ", + "expires_at": "Изтича на", + "created_at": "Създаден на", + "actions": "Действия", + "delete": "Изтриване", + "no_keys_found": "Няма намерени API ключове.", + "generate_modal_title": "Генериране на нов API ключ", + "generate_modal_description": "Моля, посочете име и срок на валидност за новия си API ключ.", + "expires_in": "Изтича след", + "select_expiration": "Изберете срок на валидност", + "30_days": "30 дни", + "60_days": "60 дни", + "6_months": "6 месеца", + "12_months": "12 месеца", + "24_months": "24 месеца", + "generate": "Генериране", + "new_api_key": "Нов API ключ", + "failed_to_delete": "Изтриването на API ключ е неуспешно", + "api_key_deleted": "API ключът е изтрит", + "generated_title": "API ключът е генериран", + "generated_message": "Вашият API ключ е генериран, моля, копирайте го и го запазете на сигурно място. Този ключ ще бъде показан само веднъж." + }, + "archived_emails_page": { + "title": "Архивирани съобщения", + "header": "Архивирани съобщения", + "select_ingestion_source": "Изберете източник за приемане", + "date": "Дата", + "subject": "Тема", + "sender": "Подател", + "inbox": "Входяща поща", + "path": "Път", + "actions": "Действия", + "view": "Преглед", + "no_emails_found": "Няма намерени архивирани съобщения.", + "prev": "Предишен", + "next": "Следващ" + }, + "dashboard_page": { + "title": "Табло за управление", + "meta_description": "Общ преглед на вашия имейл архив.", + "header": "Табло за управление", + "create_ingestion": "Създаване на приемане", + "no_ingestion_header": "Нямате настроен източник за приемане.", + "no_ingestion_text": "Добавете източник за приемане, за да започнете да архивирате входящите си кутии.", + "total_emails_archived": "Общо архивирани съобщения", + "total_storage_used": "Общо използвано място за съхранение", + "failed_ingestions": "Неуспешни приемания (последните 7 дни)", + "ingestion_history": "История на приеманията", + "no_ingestion_history": "Няма налична история на приеманията.", + "storage_by_source": "Съхранение по източник на приемане", + "no_ingestion_sources": "Няма налични източници за приемане.", + "indexed_insights": "Индексирани данни", + "top_10_senders": "Топ 10 податели", + "no_indexed_insights": "Няма налични индексирани данни." + } + } +} From f50bf79cd2d04203887b6187e0ceedc1845b09c7 Mon Sep 17 00:00:00 2001 From: IT Creativity + Art Team Date: Wed, 22 Oct 2025 23:16:15 +0300 Subject: [PATCH 2/2] BG language UI support - Create translation.json --- .../backend/src/locales/bg/translation.json | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 packages/backend/src/locales/bg/translation.json diff --git a/packages/backend/src/locales/bg/translation.json b/packages/backend/src/locales/bg/translation.json new file mode 100644 index 0000000..bf33ebe --- /dev/null +++ b/packages/backend/src/locales/bg/translation.json @@ -0,0 +1,69 @@ +{ + "auth": { + "setup": { + "allFieldsRequired": "Изискват се поща, парола и име", + "alreadyCompleted": "Настройката вече е завършена." + }, + "login": { + "emailAndPasswordRequired": "Изискват се поща и парола", + "invalidCredentials": "Невалидни идентификационни данни" + } + }, + "errors": { + "internalServerError": "Възникна вътрешна грешка в сървъра", + "demoMode": "Тази операция не е разрешена в демо режим", + "unauthorized": "Неоторизирано", + "unknown": "Възникна неизвестна грешка", + "noPermissionToAction": "Нямате разрешение да извършите текущото действие." + }, + "user": { + "notFound": "Потребителят не е открит", + "cannotDeleteOnlyUser": "Опитвате се да изтриете единствения потребител в базата данни, това не е позволено.", + "requiresSuperAdminRole": "За управление на потребители е необходима роля на супер администратор." + }, + "iam": { + "failedToGetRoles": "Неуспешно получаване на роли.", + "roleNotFound": "Ролята не е намерена.", + "failedToGetRole": "Неуспешно получаване на роля.", + "missingRoleFields": "Липсват задължителни полета: име и политика.", + "invalidPolicy": "Невалидно твърдение за политика:", + "failedToCreateRole": "Създаването на роля неуспешно.", + "failedToDeleteRole": "Изтриването на роля неуспешно.", + "missingUpdateFields": "Липсват полета за актуализиране: име или политики.", + "failedToUpdateRole": "Актуализирането на ролята неуспешно.", + "requiresSuperAdminRole": "За управление на роли е необходима роля на супер администратор." + }, + "settings": { + "failedToRetrieve": "Неуспешно извличане на настройките", + "failedToUpdate": "Неуспешно актуализиране на настройките", + "noPermissionToUpdate": "Нямате разрешение да актуализирате системните настройки." + }, + "dashboard": { + "permissionRequired": "Необходимо ви е разрешение за четене на таблото, за да видите данните от него." + }, + "ingestion": { + "failedToCreate": "Създаването на източник за приемане не бе успешно поради грешка при свързване.", + "notFound": "Източникът за приемане не е намерен", + "initialImportTriggered": "Първоначалният импорт е задействан успешно.", + "forceSyncTriggered": "Принудителното синхронизиране е задействано успешно." + }, + "archivedEmail": { + "notFound": "Архивираната поща не е намерена" + }, + "search": { + "keywordsRequired": "Ключовите думи са задължителни" + }, + "storage": { + "filePathRequired": "Пътят към файла е задължителен", + "invalidFilePath": "Невалиден път към файла", + "fileNotFound": "Файлът не е намерен", + "downloadError": "Грешка при изтегляне на файла" + }, + "apiKeys": { + "generateSuccess": "API ключът е генериран успешно.", + "deleteSuccess": "API ключът е успешно изтрит." + }, + "api": { + "requestBodyInvalid": "Невалидно съдържание на заявката." + } +}