Files
household-bot/apps/miniapp/src/i18n.ts

218 lines
12 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export type Locale = 'en' | 'ru'
export const dictionary = {
en: {
appTitle: 'Kojori House',
appSubtitle: 'Shared home dashboard',
loadingTitle: 'Checking your household access',
loadingBody: 'Validating Telegram session and membership…',
loadingBadge: 'Secure session',
demoBadge: 'Demo mode',
liveBadge: 'Live household',
joinTitle: 'Welcome to your household',
joinBody:
'You are not a member of {household} yet. Send a join request and wait for admin approval.',
pendingTitle: 'Join request sent',
pendingBody: 'Your request for {household} is pending admin approval.',
openFromGroupTitle: 'Open this from your household group',
openFromGroupBody:
'Use the join button from the household group setup message so the app knows which household you want to join.',
unexpectedErrorTitle: 'Unable to load the household app',
unexpectedErrorBody:
'Retry in Telegram. If this keeps failing, ask the household admin to resend the join button.',
householdFallback: 'this household',
joinAction: 'Join household',
joining: 'Sending request…',
botLinkAction: 'Open bot chat',
telegramOnlyTitle: 'Open this app from Telegram',
telegramOnlyBody:
'The real session gate needs Telegram mini app data. Local development falls back to a preview shell.',
reload: 'Retry',
language: 'Language',
householdLanguage: 'Household language',
savingLanguage: 'Saving…',
home: 'Home',
balances: 'Balances',
ledger: 'Ledger',
house: 'House',
welcome: 'Welcome back',
adminTag: 'Admin',
residentTag: 'Resident',
overviewTitle: 'Current cycle',
overviewBody:
'Use the sections below to review balances, ledger entries, and household access.',
totalDue: 'Total due',
membersCount: 'Members',
ledgerEntries: 'Ledger entries',
pendingRequests: 'Pending requests',
shareRent: 'Rent',
shareUtilities: 'Utilities',
shareOffset: 'Shared buys',
ledgerTitle: 'Included ledger',
emptyDashboard: 'No billing cycle is ready yet.',
latestActivityTitle: 'Latest activity',
latestActivityEmpty: 'Recent utility and purchase entries will appear here.',
householdSettingsTitle: 'Household settings',
householdSettingsBody: 'Control household defaults and approve roommates who requested access.',
billingSettingsTitle: 'Billing settings',
billingCycleTitle: 'Current billing cycle',
billingCycleEmpty: 'No open cycle',
billingCycleStatus: 'Current cycle currency: {currency}',
billingCycleOpenHint: 'Open a cycle before entering rent and utility bills.',
billingCyclePeriod: 'Cycle period',
openCycleAction: 'Open cycle',
openingCycle: 'Opening cycle…',
closeCycleAction: 'Close cycle',
closingCycle: 'Closing cycle…',
saveCycleRentAction: 'Save current cycle rent',
savingCycleRent: 'Saving rent…',
utilityCategoryLabel: 'Utility category',
utilityAmount: 'Utility amount',
addUtilityBillAction: 'Add utility bill',
savingUtilityBill: 'Saving utility bill…',
utilityBillsEmpty: 'No utility bills recorded for this cycle yet.',
rentAmount: 'Rent amount',
rentDueDay: 'Rent due day',
rentWarningDay: 'Rent warning day',
utilitiesDueDay: 'Utilities due day',
utilitiesReminderDay: 'Utilities reminder day',
timezone: 'Timezone',
saveSettingsAction: 'Save settings',
savingSettings: 'Saving settings…',
utilityCategoriesTitle: 'Utility categories',
utilityCategoriesBody: 'Manage the categories admins use for monthly utility entry.',
utilityCategoryName: 'Category name',
utilityCategoryActive: 'Active',
addCategoryAction: 'Add category',
saveCategoryAction: 'Save category',
savingCategory: 'Saving…',
adminsTitle: 'Admins',
adminsBody: 'Promote trusted household members so they can manage billing and approvals.',
rentWeightLabel: 'Rent weight',
saveRentWeightAction: 'Save rent weight',
savingRentWeight: 'Saving weight…',
promoteAdminAction: 'Promote to admin',
promotingAdmin: 'Promoting…',
residentHouseTitle: 'Household access',
residentHouseBody:
'Your admins manage household settings and approvals here. You can still switch your own language above.',
pendingMembersTitle: 'Pending members',
pendingMembersBody:
'Approve roommates here after they request access from the group join flow.',
pendingMembersEmpty: 'No pending member requests right now.',
approveMemberAction: 'Approve',
approvingMember: 'Approving…',
pendingMemberHandle: '@{username}',
balancesEmpty: 'Balances will appear here once the dashboard API lands.',
ledgerEmpty: 'Ledger entries will appear here after the finance view is connected.',
houseEmpty: 'Household details will appear here.'
},
ru: {
appTitle: 'Kojori House',
appSubtitle: 'Панель общего дома',
loadingTitle: 'Проверяем доступ к дому',
loadingBody: 'Проверяем Telegram-сессию и членство…',
loadingBadge: 'Защищённая сессия',
demoBadge: 'Демо режим',
liveBadge: 'Живой household',
joinTitle: 'Добро пожаловать домой',
joinBody:
'Ты пока не участник {household}. Отправь заявку на вступление и дождись подтверждения админа.',
pendingTitle: 'Заявка отправлена',
pendingBody: 'Твоя заявка в {household} ждёт подтверждения админа.',
openFromGroupTitle: 'Открой приложение из группового чата',
openFromGroupBody:
'Используй кнопку подключения из сообщения настройки household, чтобы приложение поняло, к какому дому ты хочешь присоединиться.',
unexpectedErrorTitle: 'Не удалось открыть household app',
unexpectedErrorBody:
'Попробуй снова из Telegram. Если ошибка повторяется, попроси админа ещё раз прислать кнопку подключения.',
householdFallback: 'этот household',
joinAction: 'Вступить в household',
joining: 'Отправляем заявку…',
botLinkAction: 'Открыть чат с ботом',
telegramOnlyTitle: 'Открой приложение из Telegram',
telegramOnlyBody:
'Настоящая проверка требует данные Telegram Mini App. Локально показывается демо-оболочка.',
reload: 'Повторить',
language: 'Язык',
householdLanguage: 'Язык дома',
savingLanguage: 'Сохраняем…',
home: 'Главная',
balances: 'Баланс',
ledger: 'Леджер',
house: 'Дом',
welcome: 'С возвращением',
adminTag: 'Админ',
residentTag: 'Житель',
overviewTitle: 'Текущий цикл',
overviewBody: 'Ниже можно посмотреть балансы, записи леджера и доступ к household.',
totalDue: 'Итого к оплате',
membersCount: 'Участники',
ledgerEntries: 'Записи леджера',
pendingRequests: 'Ожидают подтверждения',
shareRent: 'Аренда',
shareUtilities: 'Коммуналка',
shareOffset: 'Общие покупки',
ledgerTitle: 'Вошедшие операции',
emptyDashboard: 'Пока нет готового billing cycle.',
latestActivityTitle: 'Последняя активность',
latestActivityEmpty: 'Здесь появятся последние коммунальные платежи и покупки.',
householdSettingsTitle: 'Настройки household',
householdSettingsBody: 'Здесь можно менять язык household и подтверждать новых соседей.',
billingSettingsTitle: 'Настройки биллинга',
billingCycleTitle: 'Текущий billing cycle',
billingCycleEmpty: 'Нет открытого цикла',
billingCycleStatus: 'Валюта текущего цикла: {currency}',
billingCycleOpenHint: 'Открой цикл перед тем, как вносить аренду и коммунальные счета.',
billingCyclePeriod: 'Период цикла',
openCycleAction: 'Открыть цикл',
openingCycle: 'Открываем цикл…',
closeCycleAction: 'Закрыть цикл',
closingCycle: 'Закрываем цикл…',
saveCycleRentAction: 'Сохранить аренду для цикла',
savingCycleRent: 'Сохраняем аренду…',
utilityCategoryLabel: 'Категория коммуналки',
utilityAmount: 'Сумма коммуналки',
addUtilityBillAction: 'Добавить коммунальный счёт',
savingUtilityBill: 'Сохраняем счёт…',
utilityBillsEmpty: 'Для этого цикла пока нет коммунальных счетов.',
rentAmount: 'Сумма аренды',
rentDueDay: 'День оплаты аренды',
rentWarningDay: 'День напоминания по аренде',
utilitiesDueDay: 'День оплаты коммуналки',
utilitiesReminderDay: 'День напоминания по коммуналке',
timezone: 'Часовой пояс',
saveSettingsAction: 'Сохранить настройки',
savingSettings: 'Сохраняем настройки…',
utilityCategoriesTitle: 'Категории коммуналки',
utilityCategoriesBody:
'Управляй категориями, которые админы используют для ежемесячного ввода коммунальных счетов.',
utilityCategoryName: 'Название категории',
utilityCategoryActive: 'Активна',
addCategoryAction: 'Добавить категорию',
saveCategoryAction: 'Сохранить категорию',
savingCategory: 'Сохраняем…',
adminsTitle: 'Админы',
adminsBody:
'Повышай доверенных участников, чтобы они могли управлять биллингом и подтверждениями.',
rentWeightLabel: 'Вес аренды',
saveRentWeightAction: 'Сохранить вес аренды',
savingRentWeight: 'Сохраняем вес…',
promoteAdminAction: 'Сделать админом',
promotingAdmin: 'Повышаем…',
residentHouseTitle: 'Доступ к household',
residentHouseBody:
'Настройки household и подтверждение заявок управляются админами. Свой язык можно менять переключателем выше.',
pendingMembersTitle: 'Ожидающие участники',
pendingMembersBody:
'Подтверждай соседей здесь после того, как они отправят заявку через кнопку подключения.',
pendingMembersEmpty: 'Сейчас нет ожидающих заявок.',
approveMemberAction: 'Подтвердить',
approvingMember: 'Подтверждаем…',
pendingMemberHandle: '@{username}',
balancesEmpty: 'Баланс появится здесь, когда подключим dashboard API.',
ledgerEmpty: 'Записи леджера появятся здесь после подключения finance view.',
houseEmpty: 'Детали household появятся здесь.'
}
} satisfies Record<Locale, Record<string, string>>