mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 15:54:03 +00:00
218 lines
12 KiB
TypeScript
218 lines
12 KiB
TypeScript
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>>
|