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

319 lines
17 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',
houseSectionBilling: 'Billing',
houseSectionUtilities: 'Utilities',
houseSectionMembers: 'Members',
houseSectionTopics: 'Topics',
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',
paidLabel: 'Paid',
remainingLabel: 'Remaining',
membersCount: 'Members',
ledgerEntries: 'Ledger entries',
pendingRequests: 'Pending requests',
yourBalanceTitle: 'Your balance',
yourBalanceBody: 'See your current cycle balance before and after shared household purchases.',
baseDue: 'Base due',
finalDue: 'Final due',
householdBalancesTitle: 'Household balances',
householdBalancesBody: 'Everyones current split for this cycle.',
purchasesTitle: 'Shared purchases',
purchasesEmpty: 'No shared purchases recorded for this cycle yet.',
utilityLedgerTitle: 'Utility bills',
utilityLedgerEmpty: 'No utility bills recorded for this cycle yet.',
paymentsTitle: 'Payments',
paymentsEmpty: 'No payment confirmations recorded for this cycle yet.',
paymentLedgerRent: 'Rent payment',
paymentLedgerUtilities: 'Utilities payment',
ledgerActorFallback: 'Household',
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.',
purchaseReviewTitle: 'Purchases',
purchaseReviewBody: 'Edit or remove purchases if the bot recorded the wrong item.',
paymentsAdminTitle: 'Payments',
paymentsAdminBody: 'Add, fix, or remove payment records for the current cycle.',
paymentsAddAction: 'Add payment',
addingPayment: 'Adding payment…',
paymentKind: 'Payment kind',
paymentAmount: 'Payment amount',
paymentMember: 'Member',
paymentSaveAction: 'Save payment',
paymentDeleteAction: 'Delete payment',
deletingPayment: 'Deleting payment…',
purchaseSaveAction: 'Save purchase',
purchaseDeleteAction: 'Delete purchase',
deletingPurchase: 'Deleting purchase…',
savingPurchase: 'Saving purchase…',
householdSettingsTitle: 'Household settings',
householdSettingsBody: 'Control household defaults and approve roommates who requested access.',
topicBindingsTitle: 'Topic bindings',
topicBindingsBody:
'Review which Telegram topics are currently connected for purchases, feedback, reminders, and payments.',
topicPurchase: 'Purchases',
topicFeedback: 'Feedback',
topicReminders: 'Reminders',
topicPayments: 'Payments',
topicBound: 'Bound',
topicUnbound: 'Unbound',
billingSettingsTitle: 'Billing settings',
settlementCurrency: 'Settlement currency',
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…',
saveUtilityBillAction: 'Save utility bill',
deleteUtilityBillAction: 'Delete utility bill',
deletingUtilityBill: 'Deleting 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: 'Дом',
houseSectionBilling: 'Биллинг',
houseSectionUtilities: 'Коммуналка',
houseSectionMembers: 'Участники',
houseSectionTopics: 'Топики',
welcome: 'С возвращением',
adminTag: 'Админ',
residentTag: 'Житель',
overviewTitle: 'Текущий цикл',
overviewBody: 'Ниже можно посмотреть балансы, записи леджера и доступ к household.',
totalDue: 'Итого к оплате',
paidLabel: 'Оплачено',
remainingLabel: 'Осталось',
membersCount: 'Участники',
ledgerEntries: 'Записи леджера',
pendingRequests: 'Ожидают подтверждения',
yourBalanceTitle: 'Твой баланс',
yourBalanceBody: 'Посмотри свой баланс за текущий цикл до и после поправки на общие покупки.',
baseDue: 'База к оплате',
finalDue: 'Итог к оплате',
householdBalancesTitle: 'Баланс household',
householdBalancesBody: 'Текущий расклад по всем участникам за этот цикл.',
purchasesTitle: 'Общие покупки',
purchasesEmpty: 'Пока нет общих покупок в этом цикле.',
utilityLedgerTitle: 'Коммунальные платежи',
utilityLedgerEmpty: 'Пока нет коммунальных платежей в этом цикле.',
paymentsTitle: 'Оплаты',
paymentsEmpty: 'В этом цикле пока нет подтверждённых оплат.',
paymentLedgerRent: 'Оплата аренды',
paymentLedgerUtilities: 'Оплата коммуналки',
ledgerActorFallback: 'Household',
shareRent: 'Аренда',
shareUtilities: 'Коммуналка',
shareOffset: 'Общие покупки',
ledgerTitle: 'Вошедшие операции',
emptyDashboard: 'Пока нет готового billing cycle.',
latestActivityTitle: 'Последняя активность',
latestActivityEmpty: 'Здесь появятся последние коммунальные платежи и покупки.',
purchaseReviewTitle: 'Покупки',
purchaseReviewBody:
'Здесь можно исправить или удалить покупку, если бот распознал её неправильно.',
paymentsAdminTitle: 'Оплаты',
paymentsAdminBody: 'Добавляй, исправляй или удаляй оплаты за текущий цикл.',
paymentsAddAction: 'Добавить оплату',
addingPayment: 'Добавляем оплату…',
paymentKind: 'Тип оплаты',
paymentAmount: 'Сумма оплаты',
paymentMember: 'Участник',
paymentSaveAction: 'Сохранить оплату',
paymentDeleteAction: 'Удалить оплату',
deletingPayment: 'Удаляем оплату…',
purchaseSaveAction: 'Сохранить покупку',
purchaseDeleteAction: 'Удалить покупку',
deletingPurchase: 'Удаляем покупку…',
savingPurchase: 'Сохраняем покупку…',
householdSettingsTitle: 'Настройки household',
householdSettingsBody: 'Здесь можно менять язык household и подтверждать новых соседей.',
topicBindingsTitle: 'Привязанные топики',
topicBindingsBody:
'Проверь, какие Telegram-топики сейчас подключены для покупок, обратной связи, напоминаний и оплат.',
topicPurchase: 'Покупки',
topicFeedback: 'Обратная связь',
topicReminders: 'Напоминания',
topicPayments: 'Оплаты',
topicBound: 'Привязан',
topicUnbound: 'Не привязан',
billingSettingsTitle: 'Настройки биллинга',
settlementCurrency: 'Валюта расчёта',
billingCycleTitle: 'Текущий billing cycle',
billingCycleEmpty: 'Нет открытого цикла',
billingCycleStatus: 'Валюта текущего цикла: {currency}',
billingCycleOpenHint: 'Открой цикл перед тем, как вносить аренду и коммунальные счета.',
billingCyclePeriod: 'Период цикла',
openCycleAction: 'Открыть цикл',
openingCycle: 'Открываем цикл…',
closeCycleAction: 'Закрыть цикл',
closingCycle: 'Закрываем цикл…',
saveCycleRentAction: 'Сохранить аренду для цикла',
savingCycleRent: 'Сохраняем аренду…',
utilityCategoryLabel: 'Категория коммуналки',
utilityAmount: 'Сумма коммуналки',
addUtilityBillAction: 'Добавить коммунальный счёт',
savingUtilityBill: 'Сохраняем счёт…',
saveUtilityBillAction: 'Сохранить счёт',
deleteUtilityBillAction: 'Удалить счёт',
deletingUtilityBill: 'Удаляем счёт…',
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>>