Newer
Older
gnexus-tasks / frontend / src / locales / en.ts
// 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',
    taskDeleted: 'Task deleted',
    projectDeleted: 'Project deleted',
    taskApproved: 'Task approved',
    taskTaken: 'Task started',
    taskFinished: 'Task finished',
  },
  nav: {
    sections: 'Sections',
    subtitle: 'gntodo — personal tasks',
    signIn: 'Sign in',
    account: 'Account',
    signOut: 'Sign out',
    task: 'Task',
    stack: 'Inbox stack',
    tree: 'Task tree',
    list: 'Task list',
    projects: 'Projects',
    options: '3 options',
    settings: 'Settings',
  },
  stack: {
    title: 'Inbox stack',
    count: 'Tasks in stack: {n}',
    quickPlaceholder: 'Throw in a task — just the text, details later…',
    quickAdd: 'Throw in',
    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',
      tags: 'Tags',
      priority: 'Priority (0–10)',
      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: {
    title: 'Task tree',
    count: 'Tasks: {n}',
    emptyTitle: 'No tasks yet',
    emptyText: 'Approve tasks in the stack — a tree will grow here.',
    addSubtask: 'Add subtask',
    promptSubtask: 'Subtask:',
    collapse: 'Collapse',
    expand: 'Expand',
  },
  task: {
    notFoundTitle: 'Task not found',
    notFoundText: 'The task may have been deleted or the link is stale.',
    proposalTitle: 'AI proposal',
    description: 'Description',
    descriptionEmpty: 'No description yet — detail the task.',
    fields: 'Details',
    field: {
      project: 'Project',
      priority: 'Priority',
      estimate: 'Time estimate',
      money: 'Money',
      deadline: 'Deadline',
      recurrence: 'Recurrence',
    },
    subtasks: 'Subtasks',
    noSubtasks: 'No subtasks',
  },
  projectPage: {
    notFoundTitle: 'Project not found',
    notFoundText: 'The project may have been deleted or the link is stale.',
    note: 'Note',
    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',
  },
  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 (0–10)',
      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: 'Українська',
  },
  taskui: {
    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