// English locale — typed as typeof ru so missing/extra keys fail vue-tsc.
import type ru from './ru'
export default {
common: {
any: '— any —',
anyStatus: '— any status —',
noProject: '— no project —',
none: '— none —',
choose: '— choose —',
error: 'Request failed',
save: 'Save',
cancel: 'Cancel',
edit: 'Edit',
preview: 'Preview',
confirmTitle: 'Confirmation',
delete: 'Delete',
open: 'Open',
deleteConfirmTask: 'Delete task "{title}"? This cannot be undone.',
deleteConfirmProject: 'Delete project "{name}"? Tasks will remain, but without a project.',
saved: 'Saved',
created: 'Created',
create: 'Create',
taskDeleted: 'Task deleted',
projectDeleted: 'Project deleted',
taskApproved: 'Task approved',
taskTaken: 'Task started',
taskFinished: 'Task finished',
},
nav: {
sections: 'Sections',
subtitle: 'GNexus Tasks — personal tasks',
signIn: 'Sign in',
account: 'Account',
signOut: 'Sign out',
task: 'Task',
home: 'Home',
stack: 'Inbox stack',
list: 'Task list',
garden: 'Garden',
stats: 'Statistics',
projects: 'Projects',
options: '3 options',
settings: 'Settings',
},
garden: {
title: 'Garden',
level: 'Level {n}',
xpTotal: '{n} XP',
plants: 'plants: {n}',
levelProgress: 'To next level: {xp} / {span} XP',
aboutOpen: 'How it works',
aboutTitle: 'How the garden works',
about: [
'Every completed task leaves a plant on the bed — the garden only grows and never shrinks.',
'Completing a task earns XP: base 10 + a priority bonus (up to 15) + a size bonus from the time estimate (up to 15) + 10 for a “mentally hard” task — an honest reward for willpower. Bigger and more urgent work is worth more.',
'Earned XP raises your level — from Sprout to Garden Legend. Levels never drop: XP does not expire and is not taken away, even if a task is deleted.',
'Sometimes a task yields a rare plant — the chance grows with the task weight. Epic plants only come from the biggest completions.',
'Achievements mark milestones: tasks completed, levels, different projects, hours of work, strict deadlines, “mentally hard” tasks. Each has steps I, II, III with always-visible progress.',
'A task completed from the “3 options” mode earns the “chose and did” mark. Closing a “don’t want to do it” task is always celebrated in gold — the willpower was worth it. Nothing expires, no streaks or penalties — only pleasant rewards.',
],
lastPlant: 'Latest sprout: {title} — {date}',
history: 'History: tasks completed by month',
emptyTitle: 'The garden is empty',
emptyText: 'Complete your first task — a plant will grow on the bed.',
levels: [
'Sprout',
'Seedling',
'Gardener',
'Grower',
'Arborist',
'Forester',
'Garden master',
'Garden keeper',
'Royal gardener',
'Garden legend',
],
achievements: 'Achievements',
ach: {
firstDone: 'First sprout',
done10: 'Dozen',
level5: 'Heights',
sprinter: 'Sprinter',
explorer: 'All-rounder',
marathon: 'Marathoner',
deadlineBoss: 'Deadline boss',
chooser: 'Chose and did',
willpower: 'Willpower',
recurring: 'Rhythm of life',
projectDone: 'Project delivered',
},
},
gamify: {
praise: [
'Well done!',
'Done — halfway there!',
'Another step forward.',
'Beautiful!',
'Keep it up!',
'One task down, mood up.',
],
rarePlant: 'A rare plant has grown on your bed!',
epicPlant: 'A legendary plant in your garden!',
chosen: 'chose and did',
willpower: 'willpower',
willpowerText: 'Willpower! It was worth it.',
},
stats: {
title: 'Statistics',
modeDay: 'Day',
modeWeek: 'Week',
modeMonth: 'Month',
today: 'Today, {date}',
prevPeriod: 'Previous period',
nextPeriod: 'Next period',
ofDays: 'of {n} days',
totalVs: 'Completed this period: {n} · previous period: {m}',
chartTitle: 'Completed tasks',
legendNow: 'Now',
legendPrev: 'Previous period',
heatmapHalf: 'Activity over 6 months',
heatmapYear: 'Activity over the year',
heatTasks: 'Tasks',
heatXp: 'XP',
heatLess: 'less',
heatMore: 'more',
heatHalf: 'Half a year',
heatYear: 'Year',
emptyTitle: 'No data yet',
emptyText: 'Complete a couple of tasks — dynamics with comparisons will appear here.',
metric: {
closed: 'Tasks completed',
xp: 'XP earned',
created: 'Tasks created',
hours: 'Hours worked',
activeDays: 'Productive days',
},
},
home: {
title: 'Home',
stackCount: 'in stack: {n}',
activeCount: 'active: {n}',
inProgress: 'In progress',
overdue: 'Overdue',
deadlines: 'Deadlines this week',
next: 'Up next',
overview: 'Overview',
projects: 'Active projects',
totalTasks: 'Total tasks',
doneMonth: 'Done this month',
doneAll: 'Done all time',
clearTitle: 'All clear',
clearText: 'No active tasks — a good moment to work through the stack.',
},
stack: {
title: 'Inbox stack',
count: 'Tasks in stack: {n}',
quickPlaceholder: 'Throw in a task — just the text, details later…',
quickAdd: 'Throw in',
newTask: 'New task',
added: 'Task added to the stack',
detailTitle: 'Task details',
emptyTitle: 'Stack is empty',
emptyText: 'Throw in your first task — detailing is picked automatically.',
inStack: 'in stack',
uploading: 'uploading…',
proposal: 'AI proposal:',
proposalPending: 'Detailing in progress…',
proposalNewProject: '+ project "{name}"',
proposalPriority: 'priority {n}',
approveProposal: 'Yes, looks right',
detail: 'Detail it',
redetail: 'Ask AI again',
deleteTask: 'Delete task',
deleteAttachment: 'Delete attachment',
promptProject: 'Name of the new project:',
promptTag: 'Name of the new tag:',
newProject: 'New project',
newTag: 'New tag',
approve: 'Approve',
form: {
title: 'Title',
description: 'Description (Markdown, Ctrl+V for image)',
preview: 'Markdown preview',
project: 'Project',
tagsPlaceholder: 'Add a tag…',
tags: 'Tags',
priority: 'Priority',
estimate: 'Time estimate, minutes',
budget: 'Budget (in settings currency)',
cost: 'Cost estimate (in settings currency)',
},
deadline: {
legend: 'Deadline',
date: 'Strict — date',
period: 'Soft — period',
},
recur: {
legend: 'Task type',
oneTime: 'One-time',
recurring: 'Recurring (repeats)',
kind: 'Repeat rule',
interval: 'Interval, days',
weekdays: 'Days of week',
monthlyDay: 'Day of month (1–31, empty — last)',
},
},
tree: {
addSubtask: 'Add subtask',
promptSubtask: 'Subtask:',
},
task: {
notFoundTitle: 'Task not found',
notFoundText: 'The task may have been deleted or the link is stale.',
proposalTitle: 'AI proposal',
proposalHint: 'Review the details and approve — the task joins the list.',
description: 'Description',
descriptionEmpty: 'No description yet — detail the task.',
attachments: 'Attachments',
fields: 'Details',
dates: 'Dates',
field: {
project: 'Project',
taskType: 'Task type',
priority: 'Priority',
estimate: 'Time estimate',
actual: 'Actual',
money: 'Money',
deadline: 'Deadline',
recurrence: 'Recurrence',
created: 'Created',
approved: 'Approved',
done: 'Done',
},
subtasks: 'Subtasks',
noSubtasks: 'No subtasks',
statusTitle: 'Status',
changeStatus: 'Change status',
mentallyHard: {
set: "Don't want to do it",
unset: 'Remove “mentally hard”',
badge: 'mentally hard',
},
subtaskCreated: 'Subtask created — it went to the stack for detailing',
createdRaw: 'Task went to the stack — detail it there',
actions: 'Actions',
addTag: 'Add a tag…',
},
projectPage: {
notFoundTitle: 'Project not found',
notFoundText: 'The project may have been deleted or the link is stale.',
note: 'Note',
noteEmpty: 'No note yet — add one via "Edit".',
progress: 'Project tasks: {done}/{total}',
newTask: 'New task',
taskCreated: 'Task created — it went to the stack for detailing',
promptTask: 'New project task:',
emptyTitle: 'No tasks',
emptyText: 'Create the first project task or relax the filters.',
tree: 'Project tree',
stats: 'Statistics',
total: 'Total tasks',
doneN: 'Done',
inProgress: 'In progress',
toDo: 'To do',
overdue: 'Overdue',
taskCount: '{n} tasks',
},
list: {
title: 'Task list',
count: 'Found: {n}',
emptyTitle: 'Nothing found',
emptyText: 'Try relaxing the filters or throw a new task into the stack.',
filterStatus: 'Status',
filterProject: 'Project',
filterTag: 'Tag',
},
options: {
title: '3 options',
done: 'Done',
notNow: 'Not now — other options',
available: 'Available time, minutes',
suggest: 'Suggest',
choose: 'Do it now',
emptyTitle: 'No options',
emptyText: 'No free tasks fit this time — throw something into the stack or lower the time.',
},
projects: {
title: 'Projects',
count: 'Projects: {n}',
new: 'New project',
emptyTitle: 'No projects',
emptyText:
'Create a project — tasks can be grouped and get notes with resources.',
prompt: 'Name of the new project:',
edit: 'Edit',
delete: 'Delete project',
form: {
name: 'Name',
relevance: 'Relevance',
priority: 'Priority',
note: 'Note (Markdown: links, context)',
preview: 'Preview',
},
},
settings: {
title: 'Settings',
currencyTitle: 'Budget currency',
currencyHint:
'The unit is chosen once and applies to all amounts: task budget, cost estimate.',
currencyUnit: 'Unit',
saved: 'Saved — applied in all views.',
languageTitle: 'Interface language',
languageHint:
'The chosen language applies immediately. "Same as account" takes it from gnexus auth.',
languageUnit: 'Language',
languageAuto: 'Same as account (SSO)',
langRu: 'Русский',
langEn: 'English',
langUk: 'Українська',
},
md: {
bold: 'Bold',
boldText: 'bold text',
italic: 'Italic',
italicText: 'italic text',
heading: 'Heading',
list: 'List',
checklist: 'Checklist',
link: 'Link',
linkText: 'link text',
code: 'Code',
},
taskui: {
priority: {
very_low: 'Very low',
low: 'Low',
medium: 'Medium',
high: 'High',
urgent: 'Urgent',
},
status: {
to_do: 'To do',
in_progress: 'In progress',
done: 'Done',
cancelled: 'Cancelled',
deferred: 'Deferred',
},
relevance: {
active: 'Active',
paused: 'Paused',
archived: 'Archived',
},
time: {
hm: '{h} h {m} m',
h: '{h} h',
m: '{m} m',
},
money: {
budget: 'budget {amount}',
estimate: 'estimate {amount}',
},
currency: {
UAH: '₴ Hryvnia (UAH)',
USD: '$ Dollar (USD)',
EUR: '€ Euro (EUR)',
GBP: '£ Pound (GBP)',
PLN: 'zł Zloty (PLN)',
},
deadline: {
day: 'within a day',
week: 'within a week',
month: 'within a month',
year: 'within a year',
until: 'by {date}',
},
recur: {
kind: {
interval: 'Every N days',
weekdays: 'Days of week',
monthly: 'Day of month',
},
daily: 'daily',
weekly: 'weekly',
everyN: 'every {n} d',
byWeekdays: 'by days of week',
monthlyDay: 'monthly on day {day}',
recurring: 'recurring',
},
},
} satisfies typeof ru