export default { // Loading states 'loading': 'Loading…', 'authorizing': 'Authorizing…', 'loading.session': 'Loading session…', 'loading.git': 'Loading Git status…', 'loading.files': 'Loading files…', 'loading.messages': 'Loading messages…', 'loading.machines': 'Loading machines…', // Login / Auth 'login.title': 'HAPI', 'login.subtitle': 'Vibe Coding Anytime, Anywhere', 'login.bind.title': 'Bind Telegram', 'login.submit': 'Sign In', 'login.bind.submit': 'Bind', 'login.submitting': 'Signing in…', 'login.bind.submitting': 'Binding…', 'login.placeholder': 'Access token', 'login.error.enterToken': 'Please enter an access token', 'login.error.bindingUnavailable': 'Binding is unavailable.', 'login.error.loginUnavailable': 'Login is unavailable.', 'login.error.bindFailed': 'Binding failed', 'login.error.authFailed': 'Authentication failed', 'login.help': 'Needs help?', 'login.server.default': '(Default)', 'login.server.custom': '(Custom)', 'login.server.title': 'Server URL', 'login.server.description': 'Set hapi server origin for API and live updates.', 'login.server.current': 'Current:', 'login.server.origin': 'Server origin', 'login.server.placeholder': 'https://hapi.example.com', 'login.server.hint': 'Use http(s) only. Any path is ignored.', 'login.server.useSameOrigin': 'Use same origin', 'login.server.save': 'Save server', 'login.footer': 'Designed with', 'login.footer.for': 'for Vibe Coding', 'login.footer.copyright': '©', // Sessions page 'sessions.count': '{n} sessions in {m} projects', 'sessions.new': 'New Session', // Session list 'session.item.path': 'path', 'session.item.agent': 'agent', 'session.item.model': 'model', 'session.item.modelMode': 'mode', 'session.item.worktree': 'worktree', 'session.item.pending': 'pending', 'session.item.thinking': 'thinking', 'session.time.justNow': 'just now', 'session.time.minutesAgo': '{n}m ago', 'session.time.hoursAgo': '{n}h ago', 'session.time.daysAgo': '{n}d ago', // Session header 'session.title': 'Files', 'session.more': 'More actions', // Session actions 'session.action.rename': 'Rename', 'session.action.archive': 'Archive', 'session.action.delete': 'Delete', 'session.action.copy': 'Copy', // Dialogs 'dialog.rename.title': 'Rename Session', 'dialog.rename.placeholder': 'Session name', 'dialog.rename.save': 'Save', 'dialog.rename.saving': 'Saving…', 'dialog.rename.error': 'Failed to rename. Please try again.', 'dialog.archive.title': 'Archive Session', 'dialog.archive.description': 'Are you sure you want to archive "{name}"? This will disconnect active session.', 'dialog.archive.confirm': 'Archive', 'dialog.archive.confirming': 'Archiving…', 'dialog.delete.title': 'Delete Session', 'dialog.delete.description': 'Are you sure you want to delete "{name}"? This action cannot be undone.', 'dialog.delete.confirm': 'Delete', 'dialog.delete.confirming': 'Deleting…', 'dialog.error.default': 'Operation failed. Please try again.', // Common buttons 'button.cancel': 'Cancel', 'button.save': 'Save', 'button.confirm': 'Confirm', 'button.close': 'Close', 'button.dismiss': 'Dismiss', 'button.copy': 'Copy', // New session form 'newSession.machine': 'Machine', 'newSession.directory': 'Directory', 'newSession.placeholder': '/path/to/project', 'newSession.recent': 'Recent paths', 'newSession.type': 'Session type', 'newSession.type.simple': 'Simple', 'newSession.type.simple.desc': 'Use selected directory as-is', 'newSession.type.worktree': 'Worktree', 'newSession.type.worktree.desc': 'Create a new worktree next to repo', 'newSession.type.worktree.placeholder': 'feature-x (default 1228-xxxx)', 'newSession.agent': 'Agent', 'newSession.yolo': 'YOLO mode', 'newSession.yolo.title': 'Bypass approvals and sandbox', 'newSession.yolo.desc': 'Uses dangerous agent flags when spawning.', 'newSession.create': 'Create', 'newSession.creating': 'Creating…', // Spawn session (old component) 'spawn.title': 'Create Session', 'spawn.sessionType': 'Session type', 'spawn.useAsIs': 'Use selected directory as-is', 'spawn.createWorktree': 'Create a new worktree next to repo', 'spawn.worktreePlaceholder': 'feature-x (default 1228-xxxx)', 'spawn.cancel': 'Cancel', 'spawn.create': 'Create Session', 'spawn.creating': 'Creating…', // Machine 'machine.unknown': 'Unknown platform', // Chat 'chat.placeholder': 'Type a message…', 'chat.send': 'Send', 'chat.abort': 'Abort', 'chat.settings': 'Settings', 'chat.terminal': 'Terminal', 'chat.switchRemote': 'Switch to remote mode', // Terminal 'terminal.commandName': 'Command', 'terminal.commandMessage': 'Command message', 'terminal.commandArgs': 'Command args', 'terminal.stdout': 'Stdout', 'terminal.stderr': 'Stderr', // Code block 'code.copy': 'Copy', // Diff view 'diff.title': 'Diff', 'diff.view': 'View', // Tool card 'tool.askQuestion': 'Other', 'tool.edit': 'Edit', 'tool.multiedit': 'Multi-edit', 'tool.write': 'Write', 'tool.todo': 'Todo', 'tool.confirm': 'Confirm', 'tool.deny': 'Deny', 'tool.abort': 'Abort', 'tool.allow': 'Allow', 'tool.allowAll': 'Allow all edits', 'tool.denyAll': 'Deny all edits', 'tool.approved': 'Approved', 'tool.rejected': 'Rejected', 'tool.cancel': 'Cancel', 'tool.exitPlan': 'Exit Plan Mode', 'tool.patch': 'Patch', 'tool.input': 'Input', 'tool.result': 'Result', 'tool.questionsAnswers': 'Questions & Answers', 'tool.submit': 'Submit', 'tool.submitting': 'Submitting…', 'tool.prev': '← Prev', 'tool.next': 'Next →', 'tool.yes': 'Yes', 'tool.yesForSession': 'Yes for session', 'tool.allowForSession': 'Allow for session', 'tool.abortLabel': 'Abort', 'tool.other': 'Other', 'tool.otherDescription': 'Type your own answer', 'tool.question': 'Question', 'tool.selectOption': 'Please select at least one option or type an answer.', 'tool.waitingForApproval': 'Waiting for approval…', 'tool.canceled': 'Canceled', 'tool.approvedForSession': 'Approved for session', 'tool.aborted': 'Aborted', 'tool.approvedAllowAllEdits': 'Approved: Allow all edits', 'tool.requestFailed': 'Request failed', 'tool.askUserQuestion.fallback': 'AskUserQuestion payload is not in the expected format. Type your answer:', 'tool.askUserQuestion.placeholder': 'Type your answer…', 'tool.askUserQuestion.otherPlaceholder': 'Or type your own answer…', // Composer buttons 'composer.settings': 'Settings', 'composer.terminal': 'Terminal', 'composer.abort': 'Abort', 'composer.switchRemote': 'Switch to remote mode', 'composer.send': 'Send', // Banners 'offline.title': 'Offline', 'offline.message': 'You are currently offline. Some features may be limited.', 'syncing.title': 'Syncing…', 'syncing.message': 'Your data is being synchronized.', // Install prompt 'install.title': 'Install HAPI', 'install.description': 'Add HAPI to your home screen for quick access.', 'install.button': 'Install', // Language switcher 'language.title': 'Language', 'language.english': 'English', 'language.chinese': '简体中文', // Misc 'misc.noMachines': 'No machines available', 'misc.machine': 'Machine', 'misc.permissionMode': 'Permission Mode', 'misc.model': 'Model', 'misc.loading': 'Loading…', 'misc.loadOlder': 'Load older', 'misc.newMessage': '{n} new message{s}', 'misc.loadingMessages': 'Loading messages…', 'misc.typeMessage': "Type 'continue' to resume...", 'misc.typeAMessage': 'Type a message...', 'misc.offline': 'offline', 'misc.permissionRequired': 'permission required', 'misc.percentLeft': '{percent}% left', 'misc.online': 'online', } as const