From 7f0f660f2240f31c5a0cdc4fa7cebad26803b478 Mon Sep 17 00:00:00 2001 From: libtribal <167267565+libtribal@users.noreply.github.com> Date: Mon, 28 Sep 2026 02:25:55 +0300 Subject: [PATCH 1/5] Add files via upload --- frontend/src/lib/i18n/locales/bg.json | 298 ++++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 frontend/src/lib/i18n/locales/bg.json diff --git a/frontend/src/lib/i18n/locales/bg.json b/frontend/src/lib/i18n/locales/bg.json new file mode 100644 index 0000000..2389e3a --- /dev/null +++ b/frontend/src/lib/i18n/locales/bg.json @@ -0,0 +1,298 @@ +{ + "Active": "Активен", + "Paid with": "Платено с", + "Active (Available in dropdowns)": "Активен (наличен в падащите менюта)", + "Add Category": "Добави категория", + "Add Unit": "Добави мерна единица", + "Add item": "Добави артикул", + "Add tax": "Добави данък", + "Address": "Адрес", + "2FA code": "2FA код", + "2FA QR code": "2FA QR код", + "Adjust the look and feel of the application.": "Настройте изгледа на приложението.", + "Allow editing and deleting sent/paid invoices": "Разреши редактиране и изтриване на изпратени/платени фактури", + "Allowing edits/deletes for sent or paid invoices can violate invoice retention laws. Only enable this if you understand the legal impact.": "Разрешаването на редакции/изтриване на изпратени или платени фактури може да нарушава законите за съхранение на фактури. Активирайте само ако разбирате правните последици.", + "Admin": "Администратор", + "Administrator": "Администратор", + "Administrators have full access to all features.": "Администраторите имат пълен достъп до всички функции.", + "All": "Всички", + "Appearance": "Изглед", + "Are you sure you want to delete this customer? This cannot be undone.": "Сигурни ли сте, че искате да изтриете този клиент? Това не може да бъде отменено.", + "Confirm disable two-factor authentication": "Потвърдете деактивирането на двуфакторното удостоверяване", + "Enter your current 2FA code to confirm.": "Въведете текущия си 2FA код за потвърждение.", + "Are you sure you want to delete this product?": "Сигурни ли сте, че искате да изтриете този продукт?", + "Are you sure you want to delete this template?": "Сигурни ли сте, че искате да изтриете този шаблон?", + "Are you sure you want to delete this user? This action cannot be undone.": "Сигурни ли сте, че искате да изтриете този потребител? Това действие не може да бъде отменено.", + "Bank Account": "Банкова сметка", + "Branding": "Брандиране", + "Cancel": "Отказ", + "Category": "Категория", + "Category Code": "Код на категория", + "Category Name": "Име на категория", + "City": "Град", + "Clear All": "Изчисти всички", + "Company Address": "Адрес на фирмата", + "Company Information": "Информация за фирмата", + "Company Name": "Име на фирмата", + "Contact Name": "Име за контакт", + "Copy link": "Копирай линк", + "Country Code": "Код на държава", + "Country Code (ISO alpha-2)": "Код на държава (ISO alpha-2)", + "Country code": "Код на държава", + "Country code placeholder": "напр. US, NL, DE", + "Create": "Създай", + "Create Customer": "Създай клиент", + "Create Invoice": "Създай фактура", + "Create Product": "Създай продукт", + "Create User": "Създай потребител", + "Create your first customer": "Създайте своя първи клиент", + "Create your first invoice": "Създайте своята първа фактура", + "Create your first product": "Създайте своя първи продукт", + "Ctrl/Cmd+Enter to add": "Ctrl/Cmd+Enter за добавяне", + "Currency": "Валута", + "Customer": "Клиент", + "Customer data hidden": "Данните за клиента са скрити", + "Customers": "Клиенти", + "Dark": "Тъмна", + "Dashboard": "Табло", + "Date Format": "Формат на дата", + "Default": "По подразбиране", + "Default Notes": "Бележки по подразбиране", + "Default Prices Include Tax": "Цените по подразбиране включват данък", + "Default Tax Rate": "Данъчна ставка по подразбиране", + "Delete": "Изтрий", + "Delete User": "Изтрий потребител", + "Delete this invoice? This cannot be undone.": "Изтриване на тази фактура? Това не може да бъде отменено.", + "Demo mode warning": "Демо режим: приложението е напълно функционално, но базата данни на този хостван екземпляр се нулира на всеки 30 минути, промените ви не са постоянни.", + "Description": "Описание", + "Deutsch": "Deutsch", + "Disabled users cannot log in.": "Деактивираните потребители не могат да влизат в системата.", + "Discount": "Отстъпка", + "Display Name": "Показвано име", + "Display name": "Показвано име", + "Display name placeholder": "напр., Данък добавена стойност", + "Download PDF": "Изтегли PDF", + "Download XML": "Изтегли XML", + "Draft": "Чернова", + "Due Date": "Срок за плащане", + "Duplicate": "Дублирай", + "Edit": "Редактирай", + "Edit Customer": "Редактирай клиент", + "Edit Invoice": "Редактирай фактура", + "Edit Product": "Редактирай продукт", + "Edit User": "Редактирай потребител", + "Email": "Имейл", + "Embed XML in HTML": "Вграждане на XML в HTML", + "Embed XML in PDF": "Вграждане на XML в PDF", + "Enable Automatic Invoice Numbering": "Активирай автоматично номериране на фактури", + "English": "English", + "Enter 6-digit code": "Въведете 6-цифрен код", + "Enter a manifest URL": "Въведете URL на манифест", + "Enter your password": "Въведете вашата парола", + "Enter your username": "Въведете вашето потребителско име", + "FacturX / ZUGFeRD 2.2": "FacturX / ZUGFeRD 2.2", + "Disable 2FA": "Деактивирай 2FA", + "Failed to delete": "Изтриването не бе успешно", + "Failed to disable two-factor authentication": "Деактивирането на двуфакторното удостоверяване не бе успешно", + "Failed to enable two-factor authentication": "Активирането на двуфакторното удостоверяване не бе успешно", + "Failed to generate 2FA setup": "Генерирането на настройка за 2FA не бе успешно", + "Failed to save settings": "Запазването на настройките не бе успешно", + "Failed to update": "Актуализирането не бе успешно", + "File must be a .zip archive": "Файлът трябва да е .zip архив", + "File too large (max 5MB)": "Файлът е твърде голям (макс. 5MB)", + "Format": "Формат", + "Highlight Color": "Цвят на акцент", + "Inactive": "Неактивен", + "Install": "Инсталирай", + "Install failed": "Инсталацията не бе успешна", + "Install from URL": "Инсталирай от URL", + "Installed Templates": "Инсталирани шаблони", + "Installing...": "Инсталиране...", + "Invalid URL or data format": "Невалиден URL или формат на данни", + "Invio": "Invio", + "Invoice": "Фактура", + "Invoice #": "Фактура №", + "Invoice No": "Фактура №", + "Invoice Number": "Номер на фактура", + "Invoice Number Pattern": "Шаблон за номер на фактура", + "Invoice data hidden": "Данните за фактурата са скрити", + "Invoice published": "Фактурата е публикувана", + "Invoice total": "Обща сума на фактурата", + "Invoices": "Фактури", + "Issue Date": "Дата на издаване", + "Item": "Артикул", + "Items": "Артикули", + "Language": "Език", + "Leave blank to keep current password": "Оставете празно за запазване на текущата парола", + "Light": "Светла", + "Link copied!": "Линкът е копиран!", + "Localization": "Локализация", + "Login": "Вход", + "Logo URL or Path": "URL или път до лого", + "Logout": "Изход", + "Make public and mark as sent": "Направи публична и маркирай като изпратена", + "Manage invoice HTML templates.": "Управление на HTML шаблони за фактури.", + "Manifest URL": "URL на манифест", + "Complete": "Завършено", + "Mark as Complete": "Маркирай като завършено", + "Mark as Paid": "Маркирай като платено", + "Mark as Sent": "Маркирай като изпратено", + "Minimum 8 characters": "Минимум 8 символа", + "More": "Още", + "Name": "Име", + "Nederlands": "Nederlands", + "Türkçe": "Türkçe", + "New Customer": "Нов клиент", + "New Password": "Нова парола", + "New Product": "Нов продукт", + "New Template": "Нов шаблон", + "New User": "Нов потребител", + "No": "Не", + "No categories defined": "Няма определени категории", + "No custom templates installed.": "Няма инсталирани персонализирани шаблони.", + "No customers yet.": "Все още няма клиенти.", + "No default tax": "Няма данък по подразбиране", + "No description": "Няма описание", + "No invoices found": "Няма намерени фактури", + "No invoices match this filter": "Няма фактури, отговарящи на този филтър", + "No products yet.": "Все още няма продукти.", + "No tax definitions yet.": "Все още няма дефинирани данъци.", + "No templates found.": "Няма намерени шаблони.", + "No units defined": "Няма определени мерни единици", + "No users found.": "Няма намерени потребители.", + "Notes": "Бележки", + "Number Format": "Формат на числа", + "Numbering": "Номериране", + "Open": "Отворена", + "Open Invoices": "Отворени фактури", + "Open in new tab": "Отвори в нов раздел", + "Optional": "Незадължително", + "Optionally record how this invoice was paid.": "По желание, запишете как е платена тази фактура.", + "Outstanding": "Неплатена", + "Overdue": "Просрочена", + "Paid": "Платена", + "Password": "Парола", + "Payment Method": "Начин на плащане", + "Payment Methods": "Начини на плащане", + "Payment Terms": "Условия за плащане", + "Payments & Texts": "Плащания и текстове", + "Per line": "На ред", + "Permissions": "Права", + "Phone": "Телефон", + "Please select a .zip file": "Моля, изберете .zip файл", + "Please select a valid image file.": "Моля, изберете валиден файл с изображение.", + "Postal Code": "Пощенски код", + "Preview": "Преглед", + "Price": "Цена", + "Prices include tax": "Цените включват данък", + "Prices include tax?": "Цените включват данък?", + "Product": "Продукт", + "Product Categories": "Категории продукти", + "Product Units": "Мерни единици на продукти", + "Products": "Продукти", + "Public link": "Публичен линк", + "Publish": "Публикувай", + "Qty": "Кол.", + "Quantity": "Количество", + "Reactivate": "Активирай отново", + "Recent Invoices": "Последни фактури", + "Recovery code": "Код за възстановяване", + "Recovery codes (save these now)": "Кодове за възстановяване (запазете ги сега)", + "Reconfigure 2FA": "Преконфигурирай 2FA", + "Remove item": "Премахни артикул", + "Resource": "Ресурс", + "Role": "Роля", + "Round on total": "Закръгляне на общата сума", + "Round per line": "Закръгляне на ред", + "Rounding": "Закръгляне", + "Rounding Mode": "Режим на закръгляне", + "Rounding mode": "Режим на закръгляне", + "SKU": "SKU", + "Save": "Запази", + "Save Changes": "Запази промените", + "Save Settings": "Запази настройките", + "Scan this QR code with your authenticator app": "Сканирайте този QR код с приложението за удостоверяване", + "Select .zip archive": "Изберете .zip архив", + "Select All": "Избери всички", + "Select category": "Избери категория", + "Select customer": "Избери клиент", + "Select unit": "Избери мерна единица", + "Select which resources and actions this user can access. Admins bypass these checks.": "Изберете до кои ресурси и действия има достъп този потребител. Администраторите заобикалят тези проверки.", + "Sent": "Изпратена", + "Settings": "Настройки", + "Settings updated successfully": "Настройките са актуализирани успешно", + "Set up 2FA": "Настрой 2FA", + "Standard UBL XML": "Стандартен UBL XML", + "Status": "Статус", + "Status History": "История на статуса", + "Subtotal": "Междинна сума", + "Suggested colors from logo:": "Предложени цветове от логото:", + "Tax": "Данък", + "Tax %": "Данък %", + "Tax Definition": "Дефиниция на данък", + "Tax Definitions": "Дефиниции на данъци", + "Tax ID": "Данъчен номер", + "Tax Label": "Етикет на данък", + "Tax Mode": "Режим на данък", + "Tax Rate (%)": "Данъчна ставка (%)", + "Tax Settings": "Настройки на данъци", + "Tax code": "Данъчен код", + "Tax code placeholder": "напр., ДДС", + "Tax mode": "Режим на данък", + "Tax rate": "Данъчна ставка", + "Template": "Шаблон", + "Templates": "Шаблони", + "These codes are shown once and can be used if you lose access to your authenticator app.": "Тези кодове се показват само веднъж и могат да се използват, ако загубите достъп до приложението за удостоверяване.", + "Toggle light/dark theme": "Превключи светла/тъмна тема", + "Total": "Общо", + "Total Billed": "Общо фактурирано", + "Two-factor authentication disabled": "Двуфакторното удостоверяване е деактивирано", + "Two-factor authentication enabled": "Двуфакторното удостоверяване е активирано", + "Two-factor authentication is enabled": "Двуфакторното удостоверяване е активно", + "Two-factor authentication is not enabled": "Двуфакторното удостоверяване не е активно", + "UBL 2.1 (PEPPOL)": "UBL 2.1 (PEPPOL)", + "Unit": "Мерна единица", + "Unit Code": "Код на мерна единица", + "Unit Name": "Име на мерна единица", + "Unit Price": "Единична цена", + "Unknown Customer": "Непознат клиент", + "Unnamed": "Без име", + "Unpublish": "Отпубликувай", + "Update": "Актуализирай", + "Updated": "Актуализирано", + "Upload": "Качи", + "Upload Template": "Качи шаблон", + "Upload failed": "Качването не бе успешно", + "Uploading...": "Качване...", + "User": "Потребител", + "User not found": "Потребителят не е намерен", + "User saved successfully.": "Потребителят е запазен успешно.", + "Username": "Потребителско име", + "Users": "Потребители", + "Version": "Версия", + "Verify and Enable 2FA": "Потвърди и активирай 2FA", + "View HTML": "Преглед на HTML", + "View public link": "Преглед на публичен линк", + "Void Invoice": "Анулирай фактура", + "Warning: you are editing a sent/paid invoice. Ensure this is legally allowed in your jurisdiction.": "Предупреждение: редактирате изпратена/платена фактура. Уверете се, че това е законно разрешено във вашата юрисдикция.", + "Void this invoice?": "Анулиране на тази фактура?", + "Voided": "Анулирана", + "Welcome to Invio": "Добре дошли в Invio", + "XML": "XML", + "XML Data": "XML данни", + "XML Export": "XML експорт", + "XML Profile ID": "ID на XML профил", + "Yes": "Да", + "Yes, disable": "Да, деактивирай", + "You are about to delete a sent/paid invoice. This may violate invoice retention laws and cannot be undone. Continue?": "На път сте да изтриете изпратена/платена фактура. Това може да нарушава законите за съхранение на фактури и не може да бъде отменено. Продължавате ли?", + "You are about to edit a sent/paid invoice. Ensure this is legally allowed in your jurisdiction. Continue?": "На път сте да редактирате изпратена/платена фактура. Уверете се, че това е законно разрешено във вашата юрисдикция. Продължавате ли?", + "You do not have permission to modify settings.": "Нямате право да променяте настройките.", + "You do not have permission to view customers. Contact an administrator to request access.": "Нямате право да преглеждате клиенти. Свържете се с администратор за достъп.", + "You do not have permission to view invoices. Contact an administrator to request access.": "Нямате право да преглеждате фактури. Свържете се с администратор за достъп.", + "Protect your account with two-factor authentication.": "Защитете акаунта си с двуфакторно удостоверяване.", + "e.g. Bank Transfer, PayPal": "напр. Банков превод, PayPal", + "e.g. INV-2025-001": "напр. INV-2025-001", + "e.g. US, NL, DE": "напр. US, NL, DE", + "item(s)": "артикул(и)", + "Español (Argentina)": "Español (Argentina)" +} \ No newline at end of file From 1b467a20846011a61419cf066519e7892f9abc76 Mon Sep 17 00:00:00 2001 From: libtribal <167267565+libtribal@users.noreply.github.com> Date: Mon, 28 Sep 2026 02:26:47 +0300 Subject: [PATCH 2/5] Add files via upload --- frontend/src/lib/i18n/mod.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/frontend/src/lib/i18n/mod.ts b/frontend/src/lib/i18n/mod.ts index d2ead64..b9828f2 100644 --- a/frontend/src/lib/i18n/mod.ts +++ b/frontend/src/lib/i18n/mod.ts @@ -5,6 +5,7 @@ import ptMessages from "./locales/pt-br.json" with { type: "json" }; import trMessages from "./locales/tr.json" with { type: "json" }; import esMessages from "./locales/es-co.json" with { type: "json" }; import esArMessages from "./locales/es-ar.json" with { type: "json" }; +import bgMessages from "./locales/bg.json" with { type: "json" }; export type UiMessages = Record; export type TranslateParams = Record; @@ -17,6 +18,7 @@ const catalogs: Record = { tr: trMessages as UiMessages, es: esMessages as UiMessages, "es-ar": esArMessages as UiMessages, + bg: bgMessages as UiMessages, }; const DEFAULT_LOCALE = "en"; @@ -85,13 +87,13 @@ export function resolveLocalization( const { locale: normalized, messages, t } = createTranslator(locale); const nf = numberFormat === "period" ? "period" : "comma"; const df = - typeof dateFormat === "string" && dateFormat.trim() - ? dateFormat - : "YYYY-MM-DD"; + typeof dateFormat === "string" && dateFormat.trim() + ? dateFormat + : "YYYY-MM-DD"; const pcf = - postalCityFormat === "city-postal" || postalCityFormat === "postal-city" - ? postalCityFormat - : "auto"; + postalCityFormat === "city-postal" || postalCityFormat === "postal-city" + ? postalCityFormat + : "auto"; return { locale: normalized, messages, From c2bc42c06e11ccab322edbacbff2afdaa4272dbc Mon Sep 17 00:00:00 2001 From: libtribal <167267565+libtribal@users.noreply.github.com> Date: Mon, 28 Sep 2026 02:27:55 +0300 Subject: [PATCH 3/5] Add files via upload --- backend/src/i18n/locales/bg.json | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 backend/src/i18n/locales/bg.json diff --git a/backend/src/i18n/locales/bg.json b/backend/src/i18n/locales/bg.json new file mode 100644 index 0000000..ae686ba --- /dev/null +++ b/backend/src/i18n/locales/bg.json @@ -0,0 +1,39 @@ +{ + "invoiceTitle": "Фактура", + "invoiceNumberLabel": "Номер на фактура", + "invoiceNumberShortLabel": "Фактура №", + "invoiceDateLabel": "Дата на фактура", + "dateLabel": "Дата", + "dueDateLabel": "Срок за плащане", + "dueShortLabel": "Срок", + "referenceLabel": "Референция", + "billToHeading": "Получател", + "itemsHeading": "Детайли на фактурата", + "itemHeaderDescription": "Описание", + "itemHeaderQuantity": "Количество", + "itemHeaderQuantityShort": "Кол.", + "itemHeaderUnit": "Мярка", + "itemHeaderUnitPrice": "Единична цена", + "itemHeaderUnitPriceShort": "Ставка", + "itemHeaderAmount": "Сума", + "itemHeaderTax": "Данък", + "summaryHeading": "Обобщение на фактурата", + "subtotalLabel": "Междинна сума", + "discountLabel": "Отстъпка", + "taxLabel": "Данък", + "totalLabel": "Общо", + "statusLabel": "Статус", + "taxSummaryHeading": "Обобщение на данъци", + "taxableLabel": "Подлежащо на облагане", + "taxAmountLabel": "Сума на данъка", + "taxIdLabel": "Данъчен номер", + "outstandingBalanceLabel": "Неплатен остатък", + "paymentInformationHeading": "Информация за плащане", + "paymentMethodsLabel": "Начини на плащане", + "paymentMethodsPrefix": "Начини:", + "bankAccountLabel": "Банкова сметка", + "bankAccountPrefix": "Банка:", + "paymentTermsLabel": "Условия за плащане", + "notesHeading": "Бележки", + "thankYouNote": "Благодарим ви за доверието!" +} \ No newline at end of file From debaeadb82e6c83b0c50a1441cab1d94ee65d1f8 Mon Sep 17 00:00:00 2001 From: libtribal <167267565+libtribal@users.noreply.github.com> Date: Mon, 28 Sep 2026 02:28:20 +0300 Subject: [PATCH 4/5] Add files via upload --- backend/src/i18n/translations.ts | 91 +++++++++++++++++--------------- 1 file changed, 47 insertions(+), 44 deletions(-) diff --git a/backend/src/i18n/translations.ts b/backend/src/i18n/translations.ts index c39f9b1..cdf7f56 100644 --- a/backend/src/i18n/translations.ts +++ b/backend/src/i18n/translations.ts @@ -5,6 +5,7 @@ import ptBrRaw from "./locales/pt-br.json" with { type: "json" }; import trRaw from "./locales/tr.json" with { type: "json" }; import esCoRaw from "./locales/es-co.json" with { type: "json" }; import esArRaw from "./locales/es-ar.json" with { type: "json" }; +import bgRaw from "./locales/bg.json" with { type: "json" }; export type InvoiceLabels = { invoiceTitle: string; @@ -48,48 +49,49 @@ export type InvoiceLabels = { const REQUIRED_KEYS = [ "invoiceTitle", - "invoiceNumberLabel", - "invoiceNumberShortLabel", - "invoiceDateLabel", - "dateLabel", - "dueDateLabel", - "dueShortLabel", - "referenceLabel", - "billToHeading", - "itemsHeading", - "itemHeaderDescription", - "itemHeaderQuantity", - "itemHeaderQuantityShort", - "itemHeaderUnit", - "itemHeaderUnitPrice", - "itemHeaderUnitPriceShort", - "itemHeaderAmount", - "itemHeaderTax", - "summaryHeading", - "subtotalLabel", - "discountLabel", - "taxLabel", - "totalLabel", - "statusLabel", - "taxSummaryHeading", - "taxableLabel", - "taxAmountLabel", - "taxIdLabel", - "outstandingBalanceLabel", - "paymentInformationHeading", - "paymentMethodsLabel", - "paymentMethodsPrefix", - "bankAccountLabel", - "bankAccountPrefix", - "paymentTermsLabel", - "notesHeading", - "thankYouNote", +"invoiceNumberLabel", +"invoiceNumberShortLabel", +"invoiceDateLabel", +"dateLabel", +"dueDateLabel", +"dueShortLabel", +"referenceLabel", +"billToHeading", +"itemsHeading", +"itemHeaderDescription", +"itemHeaderQuantity", +"itemHeaderQuantityShort", +"itemHeaderUnit", +"itemHeaderUnitPrice", +"itemHeaderUnitPriceShort", +"itemHeaderAmount", +"itemHeaderTax", +"summaryHeading", +"subtotalLabel", +"discountLabel", +"taxLabel", +"totalLabel", +"statusLabel", +"taxSummaryHeading", +"taxableLabel", +"taxAmountLabel", +"taxIdLabel", +"outstandingBalanceLabel", +"paymentInformationHeading", +"paymentMethodsLabel", +"paymentMethodsPrefix", +"bankAccountLabel", +"bankAccountPrefix", +"paymentTermsLabel", +"notesHeading", +"thankYouNote", ] as const; function coerceLabels(locale: string, raw: unknown): InvoiceLabels { if (!raw || typeof raw !== "object") { throw new Error(`Invalid translation data for locale '${locale}'`); } + const record = raw as Record; for (const key of REQUIRED_KEYS) { if (typeof record[key] !== "string") { @@ -103,14 +105,15 @@ function coerceLabels(locale: string, raw: unknown): InvoiceLabels { const catalogs: Record = Object.freeze({ en: coerceLabels("en", enRaw), - nl: coerceLabels("nl", nlRaw), - de: coerceLabels("de", deRaw), - "pt-br": coerceLabels("pt-br", ptBrRaw), - pt: coerceLabels("pt", ptBrRaw), // alias for pt-br - tr: coerceLabels("tr", trRaw), - "es-co": coerceLabels("es-co", esCoRaw), - es: coerceLabels("es", esCoRaw), // alias for es-co - "es-ar": coerceLabels("es-ar", esArRaw), + nl: coerceLabels("nl", nlRaw), + de: coerceLabels("de", deRaw), + "pt-br": coerceLabels("pt-br", ptBrRaw), + pt: coerceLabels("pt", ptBrRaw), // alias for pt-br + tr: coerceLabels("tr", trRaw), + "es-co": coerceLabels("es-co", esCoRaw), + es: coerceLabels("es", esCoRaw), // alias for es-co + "es-ar": coerceLabels("es-ar", esArRaw), + bg: coerceLabels("bg", bgRaw), }); function normalizeLocale(locale?: string): string { From 6a563080ed8a8d3ceb4d398d32fddf82b4e51c38 Mon Sep 17 00:00:00 2001 From: libtribal <167267565+libtribal@users.noreply.github.com> Date: Mon, 28 Sep 2026 03:04:36 +0300 Subject: [PATCH 5/5] Add files via upload --- frontend/src/routes/settings/+page.svelte | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/routes/settings/+page.svelte b/frontend/src/routes/settings/+page.svelte index 827a0b3..ffe3fe5 100644 --- a/frontend/src/routes/settings/+page.svelte +++ b/frontend/src/routes/settings/+page.svelte @@ -522,6 +522,7 @@