mirror of
https://github.com/wu736139669/hapi.git
synced 2026-08-07 06:52:28 +00:00
224 lines
7.7 KiB
TypeScript
224 lines
7.7 KiB
TypeScript
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 |