// Русская локаль — источник правды ключей; en.ts/uk.ts типизируются как typeof ru.
// Namespaces по областям UI (см. план i18n): common, nav, stack, tree, list,
// options, projects, settings, taskui.
export default {
common: {
any: '— любой —',
anyStatus: '— любой статус —',
noProject: '— без проекта —',
none: '— нет —',
choose: '— выберите —',
error: 'Ошибка запроса',
save: 'Сохранить',
cancel: 'Отмена',
edit: 'Редактировать',
preview: 'Предпросмотр',
confirmTitle: 'Подтверждение',
delete: 'Удалить',
open: 'Открыть',
deleteConfirmTask: 'Удалить задачу «{title}»? Действие необратимо.',
deleteConfirmProject: 'Удалить проект «{name}»? Задачи останутся, но без проекта.',
saved: 'Сохранено',
created: 'Создано',
create: 'Создать',
taskDeleted: 'Задача удалена',
projectDeleted: 'Проект удалён',
taskApproved: 'Задача утверждена',
taskTaken: 'Задача взята в работу',
taskFinished: 'Задача завершена',
},
nav: {
sections: 'Разделы',
subtitle: 'GNexus Tasks — личные задачи',
signIn: 'Войти',
account: 'Аккаунт',
signOut: 'Выйти',
task: 'Задача',
home: 'Главная',
stack: 'Стек входящих',
list: 'Список задач',
garden: 'Сад',
projects: 'Проекты',
options: '3 варианта',
settings: 'Настройки',
},
garden: {
title: 'Сад',
level: 'Уровень {n}',
xpTotal: '{n} XP',
plants: 'растений: {n}',
levelProgress: 'До уровня: {xp} / {span} XP',
emptyTitle: 'Сад пока пуст',
emptyText: 'Закройте первую задачу — на грядке появится растение.',
achievements: 'Достижения',
ach: {
firstDone: 'Первый росток',
done10: 'Десяток',
done50: 'Полсотни',
level5: 'Уровень 5',
level10: 'Уровень 10',
recurring: 'Ритм жизни',
projectDone: 'Проект под ключ',
},
},
gamify: {
praise: [
'Отлично сделано!',
'Готово — полдела!',
'Ещё один шаг впереди.',
'Красота!',
'Так держать!',
'Минус одна задача, плюс настроение.',
],
},
home: {
title: 'Главное',
stackCount: 'в стеке: {n}',
activeCount: 'активных: {n}',
inProgress: 'В работе',
overdue: 'Просрочено',
deadlines: 'Дедлайны на неделю',
next: 'Следующие',
overview: 'Обзор',
projects: 'Активные проекты',
totalTasks: 'Всего задач',
doneMonth: 'Выполнено за месяц',
doneAll: 'Выполнено всего',
clearTitle: 'Всё спокойно',
clearText: 'Нет активных задач — самое время закрыть что-то из стека.',
},
stack: {
title: 'Стек входящих',
count: 'Задач в стеке: {n}',
quickPlaceholder: 'Закинуть задачу — только текст, остальное потом…',
quickAdd: 'Закинуть',
newTask: 'Новая задача',
added: 'Задача закинута в стек',
detailTitle: 'Детализация задачи',
emptyTitle: 'Стек пуст',
emptyText: 'Закиньте первую задачу — детализация подберётся автоматически.',
inStack: 'в стеке',
uploading: 'загрузка…',
proposal: 'Предложение ИИ:',
proposalPending: 'Детализация подбирается…',
proposalNewProject: '+ проект «{name}»',
proposalPriority: 'приоритет {n}',
approveProposal: 'Да, всё верно',
detail: 'Детализировать',
redetail: 'Переспросить ИИ',
deleteTask: 'Удалить задачу',
deleteAttachment: 'Удалить вложение',
promptProject: 'Название нового проекта:',
promptTag: 'Название нового тега:',
newProject: 'Новый проект',
newTag: 'Новый тег',
approve: 'Утвердить',
form: {
title: 'Заголовок',
description: 'Описание (Markdown, Ctrl+V — картинка)',
preview: 'Предпросмотр Markdown',
project: 'Проект',
tagsPlaceholder: 'Добавить тег…',
tags: 'Теги',
priority: 'Приоритет',
estimate: 'Оценка времени, минут',
budget: 'Бюджет (в валюте настроек)',
cost: 'Оценка затрат (в валюте настроек)',
},
deadline: {
legend: 'Дедлайн',
date: 'Строгий — дата',
period: 'Нестрогий — период',
},
recur: {
legend: 'Тип задачи',
oneTime: 'Разовая',
recurring: 'Регулярная (повторяется)',
kind: 'Правило повторения',
interval: 'Интервал, дней',
weekdays: 'Дни недели',
monthlyDay: 'День месяца (1–31, без дня — последний)',
},
},
tree: {
addSubtask: 'Добавить подзадачу',
promptSubtask: 'Подзадача:',
},
task: {
notFoundTitle: 'Задача не найдена',
notFoundText: 'Возможно, задача удалена или ссылка устарела.',
proposalTitle: 'Предложение ИИ',
proposalHint: 'Проверьте детали и утвердите — задача попадёт в список.',
description: 'Описание',
descriptionEmpty: 'Описание пусто — детализируйте задачу.',
attachments: 'Вложения',
fields: 'Параметры',
dates: 'Даты',
field: {
project: 'Проект',
taskType: 'Тип задачи',
priority: 'Приоритет',
estimate: 'Оценка времени',
actual: 'Фактически',
money: 'Деньги',
deadline: 'Дедлайн',
recurrence: 'Повторение',
created: 'Создана',
approved: 'Утверждена',
done: 'Завершена',
},
subtasks: 'Подзадачи',
noSubtasks: 'Подзадач нет',
statusTitle: 'Статус',
changeStatus: 'Изменить статус',
subtaskCreated: 'Подзадача создана — попала в стек на детализацию',
createdRaw: 'Задача попала в стек — детализируйте её там',
actions: 'Действия',
addTag: 'Добавить тег…',
},
projectPage: {
notFoundTitle: 'Проект не найден',
notFoundText: 'Возможно, проект удалён или ссылка устарела.',
note: 'Заметка',
noteEmpty: 'Заметки пока нет — добавьте её через «Редактировать».',
progress: 'Задачи проекта: {done}/{total}',
newTask: 'Новая задача',
taskCreated: 'Задача создана — попала в стек на детализацию',
promptTask: 'Новая задача проекта:',
emptyTitle: 'Задач нет',
emptyText: 'Создайте первую задачу проекта или ослабьте фильтры.',
tree: 'Дерево проекта',
stats: 'Статистика',
total: 'Всего задач',
doneN: 'Завершено',
inProgress: 'В работе',
toDo: 'К выполнению',
overdue: 'Просрочено',
taskCount: '{n} задач',
},
list: {
title: 'Список задач',
count: 'Найдено: {n}',
emptyTitle: 'Ничего не найдено',
emptyText: 'Попробуйте ослабить фильтры или закиньте новую задачу в стек.',
filterStatus: 'Статус',
filterProject: 'Проект',
filterTag: 'Тег',
},
options: {
title: '3 варианта',
done: 'Готово',
notNow: 'Не сейчас — другие варианты',
available: 'Доступное время, минут',
suggest: 'Предложить',
choose: 'Делаем сейчас',
emptyTitle: 'Вариантов нет',
emptyText:
'Свободных задач под это время не нашлось — закиньте что-нибудь в стек или уменьшите время.',
},
projects: {
title: 'Проекты',
count: 'Проектов: {n}',
new: 'Новый проект',
emptyTitle: 'Проектов нет',
emptyText:
'Создайте проект — задачи можно будет группировать и добавлять заметки с ресурсами.',
prompt: 'Название нового проекта:',
edit: 'Редактировать',
delete: 'Удалить проект',
form: {
name: 'Название',
relevance: 'Актуальность',
priority: 'Приоритет',
note: 'Заметка (Markdown: ссылки, контекст)',
preview: 'Предпросмотр',
},
},
settings: {
title: 'Настройки',
currencyTitle: 'Валюта бюджетов',
currencyHint:
'Единица выбирается один раз и применяется во всех суммах: бюджет задачи, оценка затрат.',
currencyUnit: 'Единица измерения',
saved: 'Сохранено — применяется во всех видах.',
languageTitle: 'Язык интерфейса',
languageHint:
'Выбранный язык применяется сразу. «Как в аккаунте» — язык берётся из gnexus auth.',
languageUnit: 'Язык',
languageAuto: 'Как в аккаунте (SSO)',
langRu: 'Русский',
langEn: 'English',
langUk: 'Українська',
},
md: {
bold: 'Жирный',
boldText: 'жирный текст',
italic: 'Курсив',
italicText: 'курсивный текст',
heading: 'Заголовок',
list: 'Список',
checklist: 'Чек-лист',
link: 'Ссылка',
linkText: 'текст ссылки',
code: 'Код',
},
taskui: {
priority: {
very_low: 'Очень низкий',
low: 'Низкий',
medium: 'Средний',
high: 'Высокий',
urgent: 'Срочно',
},
status: {
to_do: 'К выполнению',
in_progress: 'В работе',
done: 'Завершено',
cancelled: 'Отменено',
deferred: 'Отложено',
},
relevance: {
active: 'Активен',
paused: 'Приостановлен',
archived: 'Закрыт',
},
time: {
hm: '{h} ч {m} м',
h: '{h} ч',
m: '{m} м',
},
money: {
budget: 'бюджет {amount}',
estimate: 'оценка {amount}',
},
currency: {
UAH: '₴ Гривна (UAH)',
USD: '$ Доллар (USD)',
EUR: '€ Евро (EUR)',
GBP: '£ Фунт (GBP)',
PLN: 'zł Злотый (PLN)',
},
deadline: {
day: 'в течение дня',
week: 'в течение недели',
month: 'в течение месяца',
year: 'в течение года',
until: 'до {date}',
},
recur: {
kind: {
interval: 'Каждые N дней',
weekdays: 'Дни недели',
monthly: 'День месяца',
},
daily: 'ежедневно',
weekly: 'еженедельно',
everyN: 'каждые {n} дн.',
byWeekdays: 'по дням недели',
monthlyDay: 'ежемесячно {day}-го',
recurring: 'регулярная',
},
},
}