357 lines
18 KiB
TypeScript
357 lines
18 KiB
TypeScript
export const en = {
|
||
'board.title': '{name} board',
|
||
'board.description':
|
||
'Work in your configured workflow. Tickets without a board column stay in the backlog.',
|
||
'board.columns': 'Workflow columns',
|
||
'board.selectColumn': 'Choose a column',
|
||
'board.columnOption': '{name} ({count})',
|
||
'board.scrollHint': 'Scroll horizontally to explore all columns.',
|
||
'board.openBacklog': 'Open backlog',
|
||
'board.backToProject': 'Project overview',
|
||
'board.empty.title': 'No workflow columns yet',
|
||
'board.empty.description':
|
||
'Set up columns to start tracking work on this board.',
|
||
'board.emptyColumn': 'No tickets in this column.',
|
||
'board.emptyStatus': 'No tickets in this status.',
|
||
'board.noStatuses': 'No statuses configured for this column.',
|
||
'board.moveTicket': 'Move {key}',
|
||
'board.updateStatus': 'Update status',
|
||
'board.updatingStatus': 'Updating…',
|
||
'board.noMoves': 'No allowed moves',
|
||
'board.noMovesDescription':
|
||
'This status does not allow moving anywhere else.',
|
||
'projectCreation.title': 'Create a project',
|
||
'projectCreation.description':
|
||
'Give your work a home. Start fresh or reuse a setup that already works for your team.',
|
||
'projectCreation.start': 'How would you like to start?',
|
||
'projectCreation.scratch': 'Start from scratch',
|
||
'projectCreation.scratchDescription':
|
||
'Create an empty project with the default setup.',
|
||
'projectCreation.duplicate': 'Duplicate a project',
|
||
'projectCreation.duplicateDescription':
|
||
'Choose an existing project and copy selected settings.',
|
||
'projectCreation.template': 'Use a template',
|
||
'projectCreation.templateDescription':
|
||
'Start with a saved, reusable project configuration.',
|
||
'projectCreation.noProjects':
|
||
'No accessible projects are available to copy yet.',
|
||
'projectCreation.noTemplates': 'No published templates are available yet.',
|
||
'projectCreation.details': 'Project details',
|
||
'projectCreation.name': 'Project name',
|
||
'projectCreation.namePlaceholder': 'Platform engineering',
|
||
'projectCreation.key': 'Project key',
|
||
'projectCreation.keyPlaceholder': 'CORE',
|
||
'projectCreation.keyHelp':
|
||
'Use up to 5 letters or numbers. Keys are unique and converted to uppercase.',
|
||
'projectCreation.copyTitle': 'Choose what to copy',
|
||
'projectCreation.copyHelp':
|
||
'Copy configuration into an independent project. Select only what you need.',
|
||
'projectCreation.sourceProject': 'Source project',
|
||
'projectCreation.selectProject': 'Select a source project',
|
||
'projectCreation.copyOptions': 'Configuration areas',
|
||
'projectCreation.copyDefaults':
|
||
'Unselected areas keep the default setup. You can also continue without copying any settings.',
|
||
'projectCreation.chooseTemplate': 'Choose a template',
|
||
'projectCreation.templateLabel': 'Template',
|
||
'projectCreation.selectTemplate': 'Select a template',
|
||
'projectCreation.templateHelp':
|
||
'The project stays linked to this template. Inherited areas follow its configuration; you can override them in project settings.',
|
||
'projectCreation.includedAreas': 'Included configuration',
|
||
'projectCreation.templateDefaults':
|
||
'This template uses the default project setup.',
|
||
'projectCreation.summary': 'Your new project',
|
||
'projectCreation.untitled': 'Add a project name',
|
||
'projectCreation.ticketPreview': 'First ticket key',
|
||
'projectCreation.setup': 'Starting point',
|
||
'projectCreation.cleanStart':
|
||
'Every project starts with an empty backlog and its own ticket numbering. Tickets and their history are never copied.',
|
||
'projectCreation.submit': 'Create project',
|
||
'projectCreation.creating': 'Creating project…',
|
||
'projectCreation.areas.projectSettings.label': 'Project settings',
|
||
'projectCreation.areas.projectSettings.description':
|
||
'Story points and author visibility.',
|
||
'projectCreation.areas.boardColumns.label': 'Board columns',
|
||
'projectCreation.areas.boardColumns.description':
|
||
'Columns and their order on the board.',
|
||
'projectCreation.areas.ticketStatuses.label': 'Ticket statuses',
|
||
'projectCreation.areas.ticketStatuses.description':
|
||
'Statuses and their board columns.',
|
||
'projectCreation.areas.statusTransitions.label': 'Status transitions',
|
||
'projectCreation.areas.statusTransitions.description':
|
||
'Allowed moves between statuses.',
|
||
'projectCreation.areas.ticketTypes.label': 'Ticket types',
|
||
'projectCreation.areas.ticketTypes.description':
|
||
'Available types, including parent types.',
|
||
'projectCreation.areas.ticketPriorities.label': 'Ticket priorities',
|
||
'projectCreation.areas.ticketPriorities.description':
|
||
'Available priority levels.',
|
||
'projectCreation.areas.ticketFields.label': 'Custom ticket fields',
|
||
'projectCreation.areas.ticketFields.description':
|
||
'Field definitions without ticket values.',
|
||
'projectCreation.areas.ticketLinkTypes.label': 'Ticket link types',
|
||
'projectCreation.areas.ticketLinkTypes.description':
|
||
'Relationship labels between tickets.',
|
||
'projectCreation.areas.repositories.label': 'Repository connections',
|
||
'projectCreation.areas.repositories.description':
|
||
'Repositories linked to the project.',
|
||
'projectCreation.areas.notifications.label': 'Notification actions',
|
||
'projectCreation.areas.notifications.description':
|
||
'Notification rules and delivery settings.',
|
||
'projectCreation.selectedCount': {
|
||
one: '{count} area selected',
|
||
other: '{count} areas selected',
|
||
},
|
||
|
||
'projects.workspace': 'Workspace',
|
||
'projects.description':
|
||
'Your project spaces, ready to work in. Open a project or jump straight to its board and backlog.',
|
||
'projects.create': 'New project',
|
||
'projects.updated': 'Project update',
|
||
'projects.available': {
|
||
one: '{count} project available',
|
||
other: '{count} projects available',
|
||
},
|
||
'projects.open': 'Open {name} overview',
|
||
'projects.openBoard': 'Open {name} board',
|
||
'projects.openBacklog': 'Open {name} backlog',
|
||
'projects.overview': 'Project overview',
|
||
'projects.empty.title': 'No projects to show',
|
||
'projects.empty.createDescription':
|
||
'Create a project to give your team a place to plan and track work.',
|
||
'projects.empty.accessDescription':
|
||
'Projects appear here when you have access. Ask a workspace or project administrator to add you.',
|
||
'projects.empty.create': 'Create your first project',
|
||
'projects.back': 'All projects',
|
||
'projects.hubDescription':
|
||
'Follow work on the board or explore tickets in the backlog.',
|
||
'projects.workAreas': 'Project work areas',
|
||
'projects.boardDescription':
|
||
'See work across the project’s workflow and open tickets in their current status.',
|
||
'projects.backlogDescription':
|
||
'Explore incoming work, review ticket details, and plan what comes next.',
|
||
'projects.boardAction': 'Open board',
|
||
'projects.backlogAction': 'Open backlog',
|
||
'projects.settingsDescription':
|
||
'Manage this project’s configuration, integrations, and access.',
|
||
'projects.saveTemplate': 'Save as new template',
|
||
'projects.templateTitle': 'Based on {name}',
|
||
'projects.templateDescription':
|
||
'Inherited areas follow the linked template. Overridden areas use this project’s own configuration.',
|
||
'projects.inheritedArea': '{name} · inherited',
|
||
'projects.overriddenArea': '{name} · overridden',
|
||
'dashboard.eyebrow': 'Personal workspace',
|
||
'dashboard.greeting': 'Welcome back, {name}',
|
||
'dashboard.description':
|
||
'A current view of tickets assigned to you in projects you can access.',
|
||
'dashboard.summary': 'Work summary',
|
||
'dashboard.summary.assignedTickets': 'Assigned tickets',
|
||
'dashboard.summary.projects': 'Projects with assigned work',
|
||
'dashboard.summary.blockedTickets': 'Blocked tickets',
|
||
'dashboard.assignedWork': 'My assigned tickets',
|
||
'dashboard.assignedWorkDescription':
|
||
'Your work is grouped by project and ordered with the newest tickets first.',
|
||
'dashboard.projectTickets': 'Tickets assigned to you in {name}',
|
||
'dashboard.openProject': 'Open {name}',
|
||
'dashboard.openProjectAction': 'Open project',
|
||
'dashboard.empty.title': 'No tickets assigned to you',
|
||
'dashboard.empty.description':
|
||
'Tickets assigned to you in projects you can access will appear here.',
|
||
'dashboard.empty.action': 'Browse projects',
|
||
'auth.home': 'KanbanGit home',
|
||
'auth.accountAccess': 'Account access',
|
||
'auth.backToLogin': 'Return to sign in',
|
||
'auth.signOut': 'Sign out',
|
||
'auth.signingOut': 'Signing out…',
|
||
'auth.password.show': 'Show password',
|
||
'auth.password.hide': 'Hide password',
|
||
'auth.login.title': 'Welcome back',
|
||
'auth.login.description': 'Sign in to continue to your workspace.',
|
||
'auth.login.email': 'Email address',
|
||
'auth.login.emailPlaceholder': 'you@example.com',
|
||
'auth.login.password': 'Password',
|
||
'auth.login.remember': 'Remember me',
|
||
'auth.login.forgot': 'Forgot password?',
|
||
'auth.login.submit': 'Sign in',
|
||
'auth.login.pending': 'Signing in…',
|
||
'auth.login.help': 'Need an account? Contact your workspace administrator.',
|
||
'auth.login.statusTitle': 'Account update',
|
||
'auth.forgot.title': 'Reset your password',
|
||
'auth.forgot.description':
|
||
'Enter your account email and we will send you a secure reset link.',
|
||
'auth.forgot.email': 'Email address',
|
||
'auth.forgot.emailPlaceholder': 'you@example.com',
|
||
'auth.forgot.emailHint':
|
||
'Use the email address associated with your KanbanGit account.',
|
||
'auth.forgot.submit': 'Send reset link',
|
||
'auth.forgot.pending': 'Sending reset link…',
|
||
'auth.forgot.sentTitle': 'Reset link sent',
|
||
'auth.reset.title': 'Choose a new password',
|
||
'auth.reset.description':
|
||
'Create a new password for the account linked below.',
|
||
'auth.reset.email': 'Account email',
|
||
'auth.reset.password': 'New password',
|
||
'auth.reset.passwordHint':
|
||
'Use a password you do not use for another account.',
|
||
'auth.reset.passwordConfirmation': 'Confirm new password',
|
||
'auth.reset.submit': 'Save new password',
|
||
'auth.reset.pending': 'Updating your password…',
|
||
'auth.reset.invalidTitle': 'This reset link is no longer valid',
|
||
'auth.reset.requestNew': 'Request a new reset link',
|
||
'auth.reset.footer':
|
||
'For your security, reset links expire and can only be used once.',
|
||
'auth.confirm.title': 'Confirm it is you',
|
||
'auth.confirm.description':
|
||
'This action affects sensitive account information. Enter your password to continue.',
|
||
'auth.confirm.password': 'Current password',
|
||
'auth.confirm.passwordHint':
|
||
'Your password is checked securely and is never saved in a draft.',
|
||
'auth.confirm.submit': 'Confirm and continue',
|
||
'auth.confirm.pending': 'Confirming your password…',
|
||
'auth.confirm.footer':
|
||
'Password confirmation expires automatically after a short time.',
|
||
'auth.forceChange.title': 'Secure your account',
|
||
'auth.forceChange.description':
|
||
'You need to replace your temporary password before continuing to KanbanGit.',
|
||
'auth.forceChange.currentPassword': 'Temporary password',
|
||
'auth.forceChange.password': 'New password',
|
||
'auth.forceChange.passwordHint':
|
||
'Choose a password that differs from your temporary password.',
|
||
'auth.forceChange.passwordConfirmation': 'Confirm new password',
|
||
'auth.forceChange.submit': 'Save password and continue',
|
||
'auth.forceChange.pending': 'Securing your account…',
|
||
'auth.forceChange.statusTitle': 'Password update',
|
||
'auth.forceChange.wrongAccount': 'Not the account you expected?',
|
||
'auth.forceChange.footer':
|
||
'Your password entries are kept in memory only and are cleared when you leave.',
|
||
'auth.verify.title': 'Check your inbox',
|
||
'auth.verify.description':
|
||
'Open the verification link in your email to finish confirming your account.',
|
||
'auth.verify.emailLabel': 'Verification email address',
|
||
'auth.verify.resend': 'Resend verification email',
|
||
'auth.verify.pending': 'Sending verification email…',
|
||
'auth.verify.sentTitle': 'Verification link sent',
|
||
'auth.verify.sentDescription':
|
||
'Check your inbox for a new link. If it does not arrive, check your spam folder.',
|
||
'auth.verify.help': 'Already verified in another tab?',
|
||
'auth.verify.continue': 'Continue to workspace',
|
||
'auth.verify.wrongAccount':
|
||
'Wrong account? Sign out and use a different email address.',
|
||
'auth.twoFactor.title': 'Two-step verification',
|
||
'auth.twoFactor.description':
|
||
'Enter the six-digit code from your authenticator app to finish signing in.',
|
||
'auth.twoFactor.code': 'Authentication code',
|
||
'auth.twoFactor.codeHint':
|
||
'Enter all six digits, including any leading zero.',
|
||
'auth.twoFactor.recoveryTitle': 'Use a recovery code',
|
||
'auth.twoFactor.recoveryDescription':
|
||
'Enter one of the recovery codes you saved when you set up two-factor authentication.',
|
||
'auth.twoFactor.recoveryCode': 'Recovery code',
|
||
'auth.twoFactor.recoveryHint': 'Each recovery code can only be used once.',
|
||
'auth.twoFactor.useRecovery': 'Use a recovery code instead',
|
||
'auth.twoFactor.useCode': 'Use an authenticator code instead',
|
||
'auth.twoFactor.submit': 'Verify and sign in',
|
||
'auth.twoFactor.pending': 'Verifying your code…',
|
||
'auth.feedback.pending': 'Please wait…',
|
||
'auth.feedback.completed': 'Request completed',
|
||
'auth.feedback.validationTitle': 'Check your details',
|
||
'auth.feedback.validationDescription':
|
||
'Review the message below and try again. Your entries have been kept.',
|
||
'auth.feedback.expiredTitle': 'Your session has expired',
|
||
'auth.feedback.expiredDescription':
|
||
'Return to sign in to start a new session. You will need to enter your details again.',
|
||
'auth.feedback.limitedTitle': 'Too many attempts',
|
||
'auth.feedback.limitedDescription':
|
||
'Please wait a moment before trying again.',
|
||
'auth.feedback.networkDescription':
|
||
'We could not confirm the result. Your entries are still here. Check your connection before trying again.',
|
||
'auth.feedback.serverDescription':
|
||
'The server returned an unexpected response. Your entries are still here. Please try again in a moment.',
|
||
'auth.feedback.cancelledDescription':
|
||
'The request was interrupted. Your entries are still here if you want to try again.',
|
||
'navigation.main': 'Main navigation',
|
||
'navigation.workspace': 'Workspace',
|
||
'navigation.project': 'Project navigation',
|
||
'navigation.projectSettings': 'Project settings',
|
||
'navigation.account': 'Account',
|
||
'navigation.dashboard': 'Dashboard',
|
||
'navigation.projects': 'Projects',
|
||
'navigation.templates': 'Project templates',
|
||
'navigation.users': 'Users',
|
||
'navigation.teams': 'Teams',
|
||
'navigation.overview': 'Overview',
|
||
'navigation.board': 'Board',
|
||
'navigation.backlog': 'Backlog',
|
||
'navigation.general': 'General',
|
||
'navigation.boardSettings': 'Board settings',
|
||
'navigation.ticketSettings': 'Ticket settings',
|
||
'navigation.repositories': 'Repositories',
|
||
'navigation.notifications': 'Notifications',
|
||
'navigation.access': 'Access',
|
||
'navigation.settings': 'Settings',
|
||
'navigation.profile': 'Profile',
|
||
'navigation.security': 'Security',
|
||
'navigation.gitConnections': 'Git connections',
|
||
'navigation.applications': 'Applications',
|
||
'navigation.appearance': 'Appearance',
|
||
'navigation.settingsDescription':
|
||
'Manage your profile, security, and Git integration settings.',
|
||
'navigation.createTicket': 'New ticket',
|
||
'navigation.createProject': 'New project',
|
||
'navigation.open': 'Open navigation',
|
||
'navigation.close': 'Close navigation',
|
||
'navigation.expand': 'Expand sidebar',
|
||
'navigation.collapse': 'Collapse sidebar',
|
||
'navigation.mobileDescription':
|
||
'Navigate your workspace and current project.',
|
||
'navigation.skipToContent': 'Skip to content',
|
||
'navigation.userMenu': 'Account menu for {name}',
|
||
'navigation.logout': 'Log out',
|
||
'navigation.breadcrumbs': 'Breadcrumbs',
|
||
'appearance.label': 'Color theme',
|
||
'appearance.light': 'Light',
|
||
'appearance.dark': 'Dark',
|
||
'appearance.system': 'System',
|
||
'common.cancel': 'Cancel',
|
||
'common.close': 'Close',
|
||
'common.retry': 'Try again',
|
||
'feedback.empty': 'Nothing here yet',
|
||
'feedback.saved': 'Changes saved',
|
||
'forms.saving': 'Saving changes…',
|
||
'forms.leaveConfirm': 'You have unsaved changes. Leave without saving?',
|
||
'forms.validationTitle': 'Check your entries',
|
||
'forms.validationDescription':
|
||
'The server rejected some fields. Your entries are still here. Correct the highlighted errors and save again.',
|
||
'forms.networkTitle': 'Connection interrupted',
|
||
'forms.networkDescription':
|
||
'Your entries are still here, but we could not confirm whether the server saved them. Check your connection and verify the result before trying again.',
|
||
'forms.serverTitle': 'The request could not be completed',
|
||
'forms.serverDescription':
|
||
'Your entries are still here. The server returned an unexpected response; your session may have expired. Verify the result before trying again.',
|
||
'forms.cancelledTitle': 'Saving was interrupted',
|
||
'forms.cancelledDescription':
|
||
'Your entries are still here. Check whether the changes were saved before trying again.',
|
||
'tickets.noBranches': 'No matching branches',
|
||
'tickets.noBranchesDescription':
|
||
'No matching branches were found across the linked repositories.',
|
||
'tickets.noPullRequests': 'No matching pull requests',
|
||
'tickets.noPullRequestsDescription':
|
||
'No matching pull requests were found across the linked repositories.',
|
||
'tickets.open': 'Open {key}: {title}',
|
||
'tickets.blocked': 'Blocked',
|
||
'tickets.blockerComment': 'Blocker: {comment}',
|
||
'tickets.typeLabel': 'Type: {name}',
|
||
'tickets.priorityLabel': 'Priority: {name}',
|
||
'tickets.statusLabel': 'Status: {name}',
|
||
'tickets.noStatus': 'No status',
|
||
'tickets.assignedTo': 'Assigned to {name}',
|
||
'tickets.unassigned': 'Unassigned',
|
||
'common.save': 'Save',
|
||
'common.loading': 'Loading…',
|
||
'common.error': 'Something went wrong.',
|
||
'pagination.page': 'Page {page} of {total}',
|
||
'tickets.count': {
|
||
one: '{count} ticket',
|
||
other: '{count} tickets',
|
||
},
|
||
} as const;
|