This commit is contained in:
arrelin
2026-01-23 12:23:25 +03:00
parent a3e941b19f
commit 71f772f2b9
14 changed files with 569 additions and 131 deletions

View File

@@ -0,0 +1,143 @@
{
"common": {
"loading": "Loading...",
"error": "Error",
"cancel": "Cancel",
"confirm": "Confirm",
"delete": "Delete",
"add": "Add",
"create": "Create",
"save": "Save",
"back": "Back",
"toHome": "Home",
"logout": "Log out",
"exit": "Exit",
"currency": "$"
},
"login": {
"title": "Family Budget",
"subtitle": "Sign in to continue",
"googleButton": "Sign in with Google",
"authError": "Error getting authorization link"
},
"noFamily": {
"welcome": "Welcome!",
"createFamily": "Create your family",
"familyName": "Family name",
"familyNameRequired": "Family name *",
"familyNamePlaceholder": "For example: Smith Family",
"password": "Password",
"passwordOptional": "(optional)",
"passwordPlaceholder": "For access protection",
"passwordHint": "Password will be needed to access the family budget",
"createButton": "Create family",
"adminPanel": "Admin panel",
"enterFamilyName": "Enter family name",
"alreadyInFamily": "You are already in a family",
"createError": "Error creating family",
"joiningFamily": "Joining family...",
"invalidInvite": "Invite link is invalid or expired",
"joinError": "Error joining family"
},
"family": {
"defaultName": "Family",
"totalLimit": "Total limit",
"totalRemaining": "Total remaining",
"shoppingList": "Shopping list",
"inviteMember": "Invite member",
"loadError": "Error loading categories"
},
"category": {
"remaining": "Remaining:",
"limit": "Limit:",
"percentRemaining": "% remaining",
"addExpense": "Add expense",
"expense": "Expense",
"reset": "Reset",
"history": "History",
"management": "Category management",
"newCategory": "New category",
"categoryName": "Category name",
"categoryLimit": "Limit ($)",
"addCategory": "Add category",
"deleteConfirm": "Delete category?",
"resetConfirm": "Delete all expenses for this category?",
"createError": "Error creating category",
"deleteError": "Error deleting category",
"resetError": "Error resetting expenses"
},
"expense": {
"addTitle": "Add expense",
"amount": "Amount ($)",
"amountPlaceholder": "0.00",
"description": "Description",
"descriptionPlaceholder": "Optional",
"historyTitle": "Expense history",
"noExpenses": "No expenses",
"addError": "Error adding expense",
"historyError": "Error loading expense history"
},
"invite": {
"title": "Invite member",
"description": "Create an invite link to add a new member to the family. The link will be valid for 7 days.",
"createLink": "Create link",
"creating": "Creating...",
"sendLink": "Send this link to the person you want to invite:",
"copyLink": "Copy link",
"copied": "Copied!",
"createError": "Error creating invite link",
"pageTitle": "Family invitation",
"pageDescription": "You have been invited to join a family budget. Sign in with Google to accept the invitation.",
"loginAndJoin": "Sign in and join",
"validating": "Validating invitation...",
"joining": "Joining family...",
"invalid": "Link is invalid or has expired",
"notFound": "Link not found",
"alreadyInFamily": "You are already in a family",
"joinError": "Error joining family"
},
"admin": {
"title": "Admin panel",
"subtitle": "Family management",
"accessDenied": "Access denied",
"requiresAdmin": "Administrator rights required",
"createFamily": "Create new family",
"familyName": "Family name",
"familyNamePlaceholder": "For example: Smith Family",
"familyPassword": "Family password",
"familyPasswordPlaceholder": "Protect your family with a password",
"createButton": "Create family",
"familyList": "Family list",
"noFamilies": "No families found",
"createFirst": "Create the first family",
"fillNameAndPassword": "Fill in the family name and password",
"createError": "Error creating family",
"deleteConfirm": "Delete family?",
"deleteError": "Error deleting family"
},
"shopping": {
"title": "Shopping list",
"addPlaceholder": "Add item...",
"toBuy": "To buy",
"purchased": "Purchased",
"empty": "Shopping list is empty",
"allPurchased": "All purchased",
"clear": "Clear",
"loadError": "Error loading shopping list",
"addError": "Error adding item",
"toggleError": "Error changing status",
"deleteError": "Error deleting item",
"updateError": "Error updating item",
"markAllError": "Error updating list",
"clearError": "Error clearing list"
},
"confirm": {
"deleteItem": "Delete item?",
"deleteItemMessage": "The item will be permanently removed from the list.",
"markAll": "Mark all as purchased?",
"markAllMessage": "All items in the list will be marked as purchased.",
"markButton": "Mark",
"clearAll": "Clear list?",
"clearAllMessage": "All items will be permanently removed from the list."
}
}

View File

@@ -0,0 +1,143 @@
{
"common": {
"loading": "Загрузка...",
"error": "Ошибка",
"cancel": "Отмена",
"confirm": "Подтвердить",
"delete": "Удалить",
"add": "Добавить",
"create": "Создать",
"save": "Сохранить",
"back": "Назад",
"toHome": "На главную",
"logout": "Выйти",
"exit": "Выход",
"currency": "₽"
},
"login": {
"title": "Семейный бюджет",
"subtitle": "Войдите, чтобы продолжить",
"googleButton": "Войти через Google",
"authError": "Ошибка при получении ссылки для авторизации"
},
"noFamily": {
"welcome": "Добро пожаловать!",
"createFamily": "Создайте свою семью",
"familyName": "Название семьи",
"familyNameRequired": "Название семьи *",
"familyNamePlaceholder": "Например: Семья Ивановых",
"password": "Пароль",
"passwordOptional": "(необязательно)",
"passwordPlaceholder": "Для защиты доступа",
"passwordHint": "Пароль понадобится для доступа к бюджету семьи",
"createButton": "Создать семью",
"adminPanel": "Админ панель",
"enterFamilyName": "Введите название семьи",
"alreadyInFamily": "Вы уже состоите в семье",
"createError": "Ошибка при создании семьи",
"joiningFamily": "Присоединение к семье...",
"invalidInvite": "Ссылка-приглашение недействительна или истекла",
"joinError": "Ошибка при присоединении к семье"
},
"family": {
"defaultName": "Семья",
"totalLimit": "Общий лимит",
"totalRemaining": "Общий остаток",
"shoppingList": "Список покупок",
"inviteMember": "Пригласить участника",
"loadError": "Ошибка загрузки категорий"
},
"category": {
"remaining": "Остаток:",
"limit": "Лимит:",
"percentRemaining": "% осталось",
"addExpense": "Добавить расход",
"expense": "Расход",
"reset": "Обнулить",
"history": "История",
"management": "Управление категориями",
"newCategory": "Новая категория",
"categoryName": "Название категории",
"categoryLimit": "Лимит (₽)",
"addCategory": "Добавить категорию",
"deleteConfirm": "Удалить категорию?",
"resetConfirm": "Удалить все траты по этой категории?",
"createError": "Ошибка создания категории",
"deleteError": "Ошибка удаления категории",
"resetError": "Ошибка сброса трат"
},
"expense": {
"addTitle": "Добавить расход",
"amount": "Сумма (₽)",
"amountPlaceholder": "0.00",
"description": "Описание",
"descriptionPlaceholder": "Опционально",
"historyTitle": "История трат",
"noExpenses": "Нет трат",
"addError": "Ошибка добавления расхода",
"historyError": "Ошибка загрузки истории трат"
},
"invite": {
"title": "Пригласить участника",
"description": "Создайте ссылку-приглашение, чтобы добавить нового участника в семью. Ссылка будет действительна 7 дней.",
"createLink": "Создать ссылку",
"creating": "Создание...",
"sendLink": "Отправьте эту ссылку участнику, которого хотите пригласить:",
"copyLink": "Скопировать ссылку",
"copied": "Скопировано!",
"createError": "Ошибка создания ссылки-приглашения",
"pageTitle": "Приглашение в семью",
"pageDescription": "Вас пригласили присоединиться к семейному бюджету. Войдите через Google, чтобы принять приглашение.",
"loginAndJoin": "Войти и присоединиться",
"validating": "Проверка приглашения...",
"joining": "Присоединение к семье...",
"invalid": "Ссылка недействительна или срок её действия истёк",
"notFound": "Ссылка не найдена",
"alreadyInFamily": "Вы уже состоите в семье",
"joinError": "Ошибка при присоединении к семье"
},
"admin": {
"title": "Админ панель",
"subtitle": "Управление семьями",
"accessDenied": "Доступ запрещен",
"requiresAdmin": "Требуются права администратора",
"createFamily": "Создать новую семью",
"familyName": "Название семьи",
"familyNamePlaceholder": "Например: Семья Ивановых",
"familyPassword": "Пароль семьи",
"familyPasswordPlaceholder": "Защитите семью паролем",
"createButton": "Создать семью",
"familyList": "Список семей",
"noFamilies": "Семьи не найдены",
"createFirst": "Создайте первую семью",
"fillNameAndPassword": "Заполните название и пароль семьи",
"createError": "Ошибка создания семьи",
"deleteConfirm": "Удалить семью?",
"deleteError": "Ошибка удаления семьи"
},
"shopping": {
"title": "Список покупок",
"addPlaceholder": "Добавить покупку...",
"toBuy": "К покупке",
"purchased": "Куплено",
"empty": "Список покупок пуст",
"allPurchased": "Все куплено",
"clear": "Очистить",
"loadError": "Ошибка загрузки списка покупок",
"addError": "Ошибка добавления покупки",
"toggleError": "Ошибка изменения статуса",
"deleteError": "Ошибка удаления покупки",
"updateError": "Ошибка обновления покупки",
"markAllError": "Ошибка обновления списка",
"clearError": "Ошибка очистки списка"
},
"confirm": {
"deleteItem": "Удалить покупку?",
"deleteItemMessage": "Покупка будет удалена из списка безвозвратно.",
"markAll": "Пометить все как купленные?",
"markAllMessage": "Все покупки в списке будут отмечены как купленные.",
"markButton": "Пометить",
"clearAll": "Очистить список?",
"clearAllMessage": "Все покупки будут удалены из списка безвозвратно."
}
}