export default {
  common: {
    appName: 'Arboretum',
    loading: 'Loading…',
    cancel: 'Cancel',
    logout: 'Log out',
    language: 'Language',
    refresh: 'Refresh',
    back: 'Back',
    search: 'Search',
    settings: 'Settings',
    close: 'Close',
    retry: 'Retry',
  },
  login: {
    title: 'Sign in with your access token',
    tokenLabel: 'Access token',
    tokenPlaceholder: 'arb_…',
    submit: 'Sign in',
    submitting: 'Signing in…',
    invalidToken: 'Invalid token',
    rateLimited: 'Too many attempts — please wait before retrying',
    genericError: 'Sign-in failed ({status})',
  },
  sessions: {
    title: 'Sessions',
    refresh: 'Refresh',
    empty: 'No sessions yet — start one below.',
    newSession: 'New session',
    cwdLabel: 'Working directory',
    cwdPlaceholder: '/absolute/path/to/project',
    commandLabel: 'Command',
    creating: 'Creating…',
    open: 'Open',
    observe: 'Observe',
    view: 'View',
    resume: 'Resume',
    fork: 'Fork',
    kill: 'Kill',
    confirmKill: 'Confirm kill',
    live: 'live',
    resumable: 'resumable',
    sourceDiscovered: 'discovered',
    clients: 'no client | 1 client | {n} clients',
    exitCode: 'exit code {code}',
    statusLabel: {
      starting: 'starting',
      running: 'running',
      exited: 'exited',
    },
    registryStatus: {
      busy: 'busy',
      idle: 'idle',
      waiting: 'waiting',
    },
    dialog: {
      waiting: 'Waiting for your input',
      deny: 'Deny (Esc)',
      kind: {
        trust: 'Trust',
        permission: 'Permission',
        question: 'Question',
        plan: 'Plan',
      },
    },
  },
  dashboard: {
    title: 'Worktrees',
    allSessions: 'All sessions',
    groups: 'Groups',
  },
  groups: {
    title: 'Groups',
    new: 'New group',
    create: 'Create',
    creating: 'Creating…',
    nameLabel: 'Group name',
    namePlaceholder: 'e.g. Payments stack',
    colorLabel: 'Color',
    reposLabel: 'Repositories',
    empty: 'No group yet — create one above.',
    noRepos: 'No repository selected.',
    noReposInGroup: 'No repository in this group yet — add some below.',
    noReposRegistered: 'No repository registered yet — add some from the dashboard first.',
    open: 'Open',
    edit: 'Edit repositories',
    editDone: 'Done',
    remove: 'Delete',
    confirmDelete: 'Confirm delete',
    repoCount: 'no repo | 1 repo | {n} repos',
    dashboard: 'Dashboard',
    missingRepo: 'Repository unavailable',
    removeFromGroup: 'Remove from group',
    sessionsActive: 'no active session | 1 active session | {n} active sessions',
    viewList: 'Repos',
    viewGrid: 'Terminals',
    gridEmpty: 'No active session in this group.',
    gridCapped: 'Showing {shown} of {total} sessions — close some terminals to see the rest.',
    newFeature: 'New cross-repo feature',
  },
  crossRepo: {
    title: 'New cross-repo feature',
    intro: 'Create the same worktree across the selected repos, in one action.',
    branchLabel: 'Branch name',
    branchPlaceholder: 'feature/…',
    newBranch: 'create branch',
    baseRefLabel: 'Base ref (optional)',
    startLabel: 'Start session',
    startNone: 'no session',
    reposLabel: 'Apply to',
    create: 'Create across {n} repos',
    creating: 'Creating…',
    retryFailed: 'Retry failed',
    close: 'Close',
    pending: 'pending…',
    ok: 'created',
    error: 'failed',
  },
  repos: {
    add: 'Add repo',
    adding: 'Adding…',
    remove: 'Remove',
    pathLabel: 'Repository path',
    pathPlaceholder: '/absolute/path/to/repo',
    empty: 'No repository registered yet — add one above, or scan for repos.',
    invalid: 'unavailable',
    scan: 'Scan',
    scanResult: 'No new repository found | 1 new repository added | {n} new repositories added',
    hide: 'Hide',
    show: 'Show',
    showHidden: 'Show hidden ({n})',
  },
  worktrees: {
    new: 'New worktree',
    create: 'Create',
    creating: 'Creating…',
    branch: 'Branch',
    newBranch: 'create branch',
    start: 'Start',
    startNone: 'no session',
    delete: 'Delete',
    confirmDelete: 'Confirm delete',
    forceDelete: 'Force delete',
    prune: 'Prune',
    main: 'main',
    detached: 'detached',
    locked: 'locked',
    prunable: 'prunable',
    clean: 'clean',
    dirty: '{n} changed',
    noSession: 'no session',
  },
  terminal: {
    observer: 'observer (read-only)',
    sessionEnded: 'Session ended',
    back: 'Sessions',
    notAttachable: 'This session runs outside Arboretum — fork it to interact, or resume it once it has stopped.',
  },
  push: {
    enable: 'Enable notifications',
    disable: 'Notifications on',
    denied: 'Notification permission denied — enable it in your browser settings.',
    unsupported: 'Push needs HTTPS (e.g. Tailscale Serve); on iOS, install the app to your home screen first.',
  },
  fs: {
    browse: 'Browse…',
    up: 'Up',
    useFolder: 'Use this folder',
    showHidden: 'Show hidden',
    loading: 'Loading…',
    empty: 'No subfolders',
    repoBadge: 'repo',
  },
  ws: {
    reconnecting: 'Connection lost — reconnecting…',
  },
  nav: {
    worktrees: 'Worktrees',
    sessions: 'Sessions',
    groups: 'Groups',
    settings: 'Settings',
    help: 'Help',
    more: 'More',
    gitea: 'Source code',
    buymeacoffee: 'Buy me a coffee',
    waiting: 'waiting',
  },
  controls: {
    searchPlaceholder: 'Search…',
    results: 'no result | 1 result | {n} results',
    sortBy: 'Sort by',
    filters: 'Filters',
    clearAll: 'Clear',
  },
  sort: {
    asc: 'Ascending',
    desc: 'Descending',
    session: {
      state: 'State',
      recent: 'Most recent',
      clients: 'Clients',
      cwd: 'Directory',
      command: 'Command',
    },
    worktree: {
      main: 'Main first',
      branch: 'Branch',
      dirty: 'Changes',
      ahead: 'Ahead',
      behind: 'Behind',
      activity: 'Activity',
    },
    repo: {
      label: 'Name',
      created: 'Created',
      worktrees: 'Worktrees',
      activity: 'Activity',
    },
    group: {
      label: 'Name',
      created: 'Created',
      repos: 'Repositories',
      activeSessions: 'Active sessions',
    },
  },
  filter: {
    state: {
      label: 'State',
      live: 'Live',
      waiting: 'Waiting',
      busy: 'Busy',
      idle: 'Idle',
      exited: 'Exited',
      resumable: 'Resumable',
    },
    command: {
      label: 'Command',
    },
    source: {
      label: 'Source',
      managed: 'Managed',
      discovered: 'Discovered',
    },
    repo: {
      label: 'Repository',
    },
    worktree: {
      dirtiness: 'Changes',
      dirty: 'Dirty',
      clean: 'Clean',
      session: 'Session',
      with: 'With session',
      without: 'Without session',
      flags: 'Flags',
      locked: 'Locked',
      prunable: 'Prunable',
    },
  },
  pagination: {
    prev: 'Previous',
    next: 'Next',
    pageOf: 'Page {page} / {pageCount}',
    perPage: 'Per page',
    all: 'All',
  },
  palette: {
    placeholder: 'Jump to repo, worktree, session, group…',
    empty: 'No match',
    hint: '↑↓ navigate · ↵ open · esc close',
    types: {
      repo: 'Repo',
      worktree: 'Worktree',
      session: 'Session',
      group: 'Group',
      action: 'Action',
    },
    actions: {
      newSession: 'New session',
      addRepo: 'Add repo',
      newGroup: 'New group',
    },
  },
  toast: {
    sessionCreated: 'Session started',
    sessionKilled: 'Session killed',
    sessionResumed: 'Session resumed',
    sessionForked: 'Session forked',
    repoAdded: 'Repository added',
    repoRemoved: 'Repository removed',
    worktreeCreated: 'Worktree created',
    worktreeDeleted: 'Worktree deleted',
    pruned: 'Worktrees pruned',
    groupCreated: 'Group created',
    groupUpdated: 'Group updated',
    groupDeleted: 'Group deleted',
    genericError: 'Something went wrong',
    dismiss: 'Dismiss',
  },
  attention: {
    title: 'Needs attention',
    count: 'no session waiting | 1 session waiting | {n} sessions waiting',
    empty: 'Nothing waiting',
  },
  settings: {
    title: 'Settings',
    // Préférences
    preferences: 'Preferences',
    preferencesHint: 'These apply to this browser only.',
    language: 'Language',
    notifications: 'Notifications',
    notificationsEnabled: 'Enabled — you will be notified when a session needs input.',
    notificationsDisabled: 'Disabled.',
    enableNotifications: 'Enable notifications',
    disableNotifications: 'Disable notifications',
    testNotification: 'Send a test',
    testSent: 'Test notification sent',
    pushUnsupported: 'Push needs HTTPS (e.g. Tailscale Serve); on iOS, install the app to your home screen first.',
    // Accès & sécurité
    security: 'Access & security',
    securityHint: 'Tokens grant full access to this server. Create one per device and revoke any you no longer use.',
    tokens: 'Access tokens',
    newTokenLabel: 'Label',
    newTokenPlaceholder: 'e.g. phone, laptop',
    createToken: 'Create token',
    tokenCreated: 'Token created',
    copyTokenHint: 'Copy this token now — for security it will never be shown again.',
    copy: 'Copy',
    copied: 'Copied',
    current: 'current',
    created: 'Created {date}',
    lastUsed: 'last used {date}',
    neverUsed: 'never used',
    revoke: 'Revoke',
    confirmRevoke: 'Confirm revoke',
    tokenRevoked: 'Token revoked',
    lastTokenError: 'You cannot revoke the last active token — create another one first.',
    save: 'Save',
    saved: 'Saved',
    // Sécurité & conformité
    compliance: 'Security & compliance',
    complianceHint: 'Export or erase the data tied to your token (GDPR), and review the audit log of sensitive operations.',
    exportData: 'Export my data',
    refreshAudit: 'Audit log',
    deleteData: 'Erase my data',
    deleteConfirm: 'Erase the data tied to your token (push subscriptions) and revoke this token? This cannot be undone.',
    deleteDone: 'Your data has been erased.',
    // Découverte des dépôts
    discovery: 'Repository discovery',
    discoveryHint: 'Arboretum scans these folders for git repositories and registers them automatically. Hidden repos are kept and never re-added.',
    scanRoots: 'Scan folders',
    scanRootsEmpty: 'No folder configured — your home directory is used by default.',
    addRoot: 'Add folder',
    removeRoot: 'Remove',
    scanInterval: 'Re-scan interval (minutes)',
    scanIntervalHint: '0 disables periodic scanning. Changes apply on the next daemon restart.',
    // Serveur (lecture seule)
    server: 'Server',
    serverHint: 'Set at startup via CLI flags — changing them requires restarting the daemon.',
    version: 'Version',
    port: 'Port',
    bind: 'Bind address',
    allowedOrigins: 'Allowed origins',
    dataDir: 'Data directory',
    vapidPublicKey: 'VAPID public key',
    vapidContact: 'VAPID contact',
    none: 'none',
    flagHint: 'CLI flag: {flag}',
    // Support
    support: 'Support',
    supportHint: 'Arboretum is a free, self-funded side project. If it saves you time, you can support its development.',
    supportCta: 'Buy me a coffee',
  },
  help: {
    title: 'Help',
    intro: 'Everything Arboretum can do, and how to use it.',
    searchPlaceholder: 'Search help…',
    noMatch: 'No matching topic',
  },
};
