init
This commit is contained in:
143
frontend/src/i18n/locales/en.json
Normal file
143
frontend/src/i18n/locales/en.json
Normal 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."
|
||||
}
|
||||
}
|
||||
143
frontend/src/i18n/locales/ru.json
Normal file
143
frontend/src/i18n/locales/ru.json
Normal 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": "Все покупки будут удалены из списка безвозвратно."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user