625 lines
33 KiB
TypeScript
625 lines
33 KiB
TypeScript
import type { TranslationCatalog } from "@/lib/i18n/types";
|
|
import { common } from "./common";
|
|
|
|
export const enCatalog = {
|
|
common: {
|
|
...common,
|
|
"notFound.title": "Page not found",
|
|
"notFound.description": "The page you are looking for may have moved, been deleted or never existed.",
|
|
"notFound.backHome": "Go home",
|
|
"error.title": "Something went wrong",
|
|
"error.description": "An unexpected error occurred. Please try again.",
|
|
"error.retry": "Try again",
|
|
"maintenance.title": "Maintenance mode",
|
|
"maintenance.description": "This workspace is briefly under maintenance. Please try again soon.",
|
|
"itemsCount": "{count, plural, one {# item} other {# items}}",
|
|
},
|
|
auth: {
|
|
"login.title": "Sign in",
|
|
"login.description": "Sign in to access your Neta workspace.",
|
|
"login.email": "Email",
|
|
"login.emailPlaceholder": "example@mail.com",
|
|
"login.password": "Password",
|
|
"login.forgotPassword": "Forgot password",
|
|
"login.submit": "Sign in",
|
|
"login.pending": "Signing in...",
|
|
"login.setupPrompt": "Haven't completed first setup?",
|
|
"login.createAdmin": "Create admin account",
|
|
"register.title": "Create admin account",
|
|
"register.firstAdminTitle": "Create the first admin account",
|
|
"register.description": "Create the first admin account for this Neta workspace.",
|
|
"register.submit": "Create admin account",
|
|
"register.pending": "Creating...",
|
|
"register.hasAccount": "Already have an account?",
|
|
"register.closed": "Registration is closed. The first admin account has already been created for this Neta instance.",
|
|
"register.failed": "Could not create user.",
|
|
"forgot.title": "Password reset",
|
|
"forgot.description": "This flow becomes active when an email provider is connected in self-hosted deployments.",
|
|
"forgot.helper": "For now, set a new password from the admin side or manage the user directly in the database.",
|
|
"forgot.back": "Back to sign in",
|
|
"reset.title": "Set a new password",
|
|
"reset.description": "Password reset link integration has not been configured yet.",
|
|
"invite.title": "Accept portal invitation",
|
|
"invite.description": "Set your name and password for the invited account.",
|
|
"invite.email": "Email",
|
|
"invite.displayName": "Full name",
|
|
"invite.password": "Password",
|
|
"invite.passwordHelp": "Use at least 8 characters.",
|
|
"invite.submit": "Create portal account",
|
|
"invite.pending": "Creating account...",
|
|
"invite.backToLogin": "Back to sign in",
|
|
"invite.expired": "This invitation has expired. Ask the freelancer for a new link.",
|
|
"invite.accepted": "This invitation was already used. You can sign in with your account.",
|
|
"invite.revoked": "This invitation was revoked. Ask the freelancer for a new link.",
|
|
"invite.success": "Your portal account has been created. You can sign in now.",
|
|
"language": "Language",
|
|
"marketing.headline": "Manage freelance work, clients and finance in one place.",
|
|
"marketing.description": "{app} is designed to help you track daily operations, projects, side projects and core finance with simple reports.",
|
|
"marketing.openSource": "Open source and self-hostable.",
|
|
"marketing.github": "GitHub",
|
|
"marketing.via": "is where you can find it.",
|
|
"marketing.builtBy": "built by",
|
|
"highlights.clients": "Clients",
|
|
"highlights.calendar": "Calendar",
|
|
"highlights.finance": "Finance",
|
|
"highlights.reports": "Reports",
|
|
"messages.invalidCredentials": "Email or password is incorrect.",
|
|
"messages.setupUnavailable": "Registration is closed. The first freelancer account has already been created for this Neta instance.",
|
|
"messages.setupStateError": "Could not read setup state.",
|
|
"messages.signupFailed": "Could not create user.",
|
|
"messages.portalInviteFailed": "Could not create portal account.",
|
|
},
|
|
navigation: {
|
|
"groups.overview": "OVERVIEW",
|
|
"groups.operations": "OPERATIONS",
|
|
"groups.personal": "PERSONAL",
|
|
"groups.ai": "AI ASSISTANT",
|
|
"groups.processes": "PROCESSES",
|
|
"items.dashboard": "Dashboard",
|
|
"items.calendar": "Calendar",
|
|
"items.analytics": "Analytics",
|
|
"items.clients": "Clients",
|
|
"items.projects": "Projects",
|
|
"items.tasks": "Tasks",
|
|
"items.finance": "Finance",
|
|
"items.journal": "Journal",
|
|
"items.chat": "Chat",
|
|
"items.settings": "Settings",
|
|
"items.portalProjects": "Your projects",
|
|
"items.portalTasks": "Completed tasks",
|
|
"items.portalRevisions": "Revision requests",
|
|
"shell.skipToContent": "Skip to main content",
|
|
"shell.homeAriaLabel": "{app} home",
|
|
"shell.mobileMenuAriaLabel": "Open or close main menu",
|
|
"shell.mobileMenuTooltip": "Menu",
|
|
"shell.logoAlt": "{app} logo",
|
|
"shell.progressTitle": "Project progress",
|
|
"shell.progressValue": "{progress}% complete",
|
|
"shell.progressAriaLabel": "Project progress",
|
|
"shell.accountMenuAriaLabel": "Open account menu for {name}",
|
|
"account.defaultUser": "Neta User",
|
|
"account.signOut": "Sign out",
|
|
"account.signingOut": "Signing out",
|
|
"account.signOutError": "Could not sign out. Please try again.",
|
|
},
|
|
dashboard: {
|
|
"title": "Dashboard",
|
|
"description": "Track your work performance, revenue and daily status.",
|
|
"stats.netEarnings": "Net earnings",
|
|
"stats.activeProjects": "Active projects",
|
|
"stats.completedTasks": "Completed tasks",
|
|
"stats.averageMood": "Average mood",
|
|
"sections.financeSummary": "Income / expense summary",
|
|
"sections.moodTrend": "Mood & energy trend",
|
|
"sections.recentProjects": "Recent projects",
|
|
"sections.recentClients": "Recent clients",
|
|
"empty.finance": "No financial data in this date range.",
|
|
"empty.journal": "No journal data in this date range.",
|
|
"empty.projects": "No projects yet.",
|
|
"empty.clients": "No clients yet.",
|
|
"filters.range": "Date range",
|
|
"filters.today": "Today",
|
|
"filters.thisWeek": "This week",
|
|
"filters.thisMonth": "This month",
|
|
"charts.income": "Income",
|
|
"charts.expense": "Expense",
|
|
"status.completed": "Completed",
|
|
"status.active": "Active",
|
|
"status.pending": "Pending",
|
|
"clients.individual": "Individual",
|
|
},
|
|
clients: {
|
|
"title": "Clients",
|
|
"description": "Manage client relationships, projects, and follow-ups.",
|
|
"actions.add": "Add Client",
|
|
"actions.edit": "Edit",
|
|
"stats.lead": "Lead",
|
|
"stats.active": "Active Clients",
|
|
"stats.followUp": "Pending Follow-up",
|
|
"stats.revenue": "Total Revenue",
|
|
"stats.revenueDesc": "Paid revenue transactions",
|
|
"tabs.pipeline": "Pipeline (Kanban)",
|
|
"tabs.list": "Client List",
|
|
"search": "Search client, company, email or notes",
|
|
"pipeline.lead": "Lead",
|
|
"pipeline.contacted": "Contacted",
|
|
"pipeline.proposal_sent": "Proposal Sent",
|
|
"pipeline.won": "Won",
|
|
"pipeline.lost": "Lost",
|
|
"empty.pipeline": "Empty",
|
|
"list.client": "Client",
|
|
"list.contact": "Contact",
|
|
"list.stage": "Stage",
|
|
"list.followUp": "Follow-up",
|
|
"list.projects": "Project",
|
|
"list.noCompany": "No company info",
|
|
"list.noContact": "No contact info",
|
|
"list.empty": "No clients found.",
|
|
"messages.stageUpdated": "Client stage updated.",
|
|
"errors.stageUpdateFailed": "Failed to update client stage.",
|
|
"messages.created": "Client created.",
|
|
"messages.updated": "Client updated.",
|
|
"errors.saveFailed": "An unexpected error occurred while saving the client.",
|
|
"form.createTitle": "New Client",
|
|
"form.editTitle": "Edit Client",
|
|
"form.name": "Full Name",
|
|
"form.company": "Company Name",
|
|
"form.email": "Email",
|
|
"form.phone": "Phone",
|
|
"form.website": "Website",
|
|
"form.status": "Status",
|
|
"form.active": "Active",
|
|
"form.paused": "Paused",
|
|
"form.archived": "Archived",
|
|
"form.pipelineStage": "Pipeline Stage",
|
|
"form.followUp": "Next Follow-up",
|
|
"form.notes": "Notes",
|
|
"form.cancel": "Cancel",
|
|
"form.save": "Save",
|
|
"detail.addActivity": "New Activity / Note",
|
|
"detail.activityTitle": "Title",
|
|
"detail.activityContent": "Details",
|
|
"detail.activityDate": "Date",
|
|
"detail.activityType": "Type",
|
|
"detail.contactInfo": "Contact Information",
|
|
"detail.createPortalAccount": "Create Portal Account",
|
|
"detail.invitePortal": "Invite to Client Portal",
|
|
"detail.portalActive": "Portal Active",
|
|
"detail.saveActivity": "Save Activity",
|
|
"detail.activityTypes.note": "Note",
|
|
"detail.activityTypes.call": "Call",
|
|
"detail.activityTypes.meeting": "Meeting",
|
|
"detail.activityTypes.email": "Email",
|
|
"detail.emptyActivities": "No activities or notes added yet.",
|
|
},
|
|
projects: {
|
|
"title": "Projects",
|
|
"description": "Track project status, deadlines and client relationships.",
|
|
"actions.add": "Add project",
|
|
"actions.risk": "AI risk analysis",
|
|
"stats.active": "Active projects",
|
|
"stats.progress": "Average progress",
|
|
"stats.budget": "Total budget",
|
|
"fields.name": "Project name",
|
|
"fields.description": "Description",
|
|
},
|
|
tasks: {
|
|
"title": "Tasks",
|
|
"description": "Manage work items, priorities and project relationships.",
|
|
"actions.add": "Add task",
|
|
"view.kanban": "Kanban",
|
|
"view.list": "List",
|
|
"fields.title": "Task title",
|
|
"fields.description": "Description",
|
|
},
|
|
calendar: {
|
|
"title": "Calendar",
|
|
"description": "Plan meetings, focus times, and deadlines.",
|
|
"actions.add": "Add Event",
|
|
"event.title": "Event",
|
|
"types.meeting": "Meeting",
|
|
"types.focus": "Focus",
|
|
"types.deadline": "Deadline",
|
|
"types.personal": "Personal",
|
|
"types.finance": "Finance",
|
|
"form.createTitle": "Add Event",
|
|
"form.editTitle": "Edit Event",
|
|
"form.title": "Title",
|
|
"form.description": "Description",
|
|
"form.dateTime": "Date and Time",
|
|
"form.start": "Start",
|
|
"form.end": "End",
|
|
"form.relations": "Relations (Optional)",
|
|
"form.client": "Client",
|
|
"form.project": "Project",
|
|
"form.task": "Task",
|
|
"form.selectClient": "Select Client",
|
|
"form.selectProject": "Select Project",
|
|
"form.selectTask": "Select Task",
|
|
"form.cancel": "Cancel",
|
|
"form.save": "Save",
|
|
"messages.created": "Calendar event created.",
|
|
"messages.updated": "Calendar event updated.",
|
|
"messages.deleted": "Calendar event deleted.",
|
|
"errors.saveFailed": "Failed to save calendar event.",
|
|
"errors.deleteFailed": "Failed to delete calendar event.",
|
|
"delete.title": "Delete Event",
|
|
"delete.description": "Are you sure you want to delete this event? This action cannot be undone.",
|
|
"delete.confirm": "Delete",
|
|
"delete.cancel": "Cancel",
|
|
},
|
|
finance: {
|
|
"title": "Finance",
|
|
"description": "Track income, expenses, payment status and project/client links.",
|
|
"actions.add": "Add transaction",
|
|
"actions.ai": "AI analysis",
|
|
},
|
|
journal: {
|
|
"title": "Journal",
|
|
"description": "Track mood, energy and work notes.",
|
|
"actions.add": "Add journal entry",
|
|
"fields.note": "Note",
|
|
},
|
|
chat: {
|
|
"title": "Chat",
|
|
"description": "Have contextual AI assistant conversations with your work data.",
|
|
"actions.new": "New chat",
|
|
"errors.invalid": "Chat request is invalid.",
|
|
},
|
|
settings: {
|
|
"title": "Settings",
|
|
"navigation.general": "General",
|
|
"navigation.appearance": "Appearance",
|
|
"navigation.profile": "Profile",
|
|
"navigation.security": "Security",
|
|
"navigation.ai": "Artificial intelligence",
|
|
"navigation.language": "Language preference",
|
|
"navigation.languages": "Languages and translations",
|
|
"shell.errorTitle": "Settings could not be loaded",
|
|
"shell.errorDescription": "Something went wrong while loading this settings section.",
|
|
"shell.retry": "Try again",
|
|
"shell.notFoundTitle": "Settings section not found",
|
|
"shell.notFoundDescription": "The settings page you requested does not exist or may have moved.",
|
|
"shell.backToGeneral": "Back to general settings",
|
|
"localized.defaultBadge": "Default",
|
|
"localized.missingRequired": "A required field is missing for this language",
|
|
"general.title": "General settings",
|
|
"general.description": "Manage your workspace identity and the text used in the client portal.",
|
|
"general.sections.identity": "Workspace identity",
|
|
"general.sections.portalContent": "Portal content",
|
|
"general.fields.workspaceName": "Workspace name",
|
|
"general.fields.metaTitle": "Browser title",
|
|
"general.fields.shortName": "Short application name",
|
|
"general.fields.portalWelcome": "Portal welcome message",
|
|
"general.fields.portalFooter": "Portal footer message",
|
|
"general.help.workspaceName": "Your company, freelance brand or workspace name.",
|
|
"general.help.metaTitle": "Used in browser tabs and application metadata.",
|
|
"general.help.shortName": "The short name used by mobile applications and home-screen installation.",
|
|
"general.help.portalContent": "Enter the client portal text separately for each active language.",
|
|
"general.placeholders.portalWelcome": "Write a short message that welcomes your client.",
|
|
"general.placeholders.portalFooter": "Write the text displayed at the bottom of the portal.",
|
|
"general.actions.save": "Save general settings",
|
|
"general.messages.saved": "General settings were updated.",
|
|
"general.errors.workspaceName": "The workspace name must be between 1 and 120 characters.",
|
|
"general.errors.metaTitle": "The browser title must be between 1 and 80 characters.",
|
|
"general.errors.shortName": "The short application name must be between 1 and 24 characters.",
|
|
"general.errors.saveFailed": "General settings could not be saved.",
|
|
"appearance.theme.title": "Theme appearance",
|
|
"appearance.theme.description": "Choose light, dark or system theme for your account.",
|
|
"appearance.theme.ariaLabel": "Theme appearance",
|
|
"appearance.theme.light.label": "Light",
|
|
"appearance.theme.light.description": "Always display the interface with the light theme.",
|
|
"appearance.theme.dark.label": "Dark",
|
|
"appearance.theme.dark.description": "Always display the interface with the dark theme.",
|
|
"appearance.theme.system.label": "System",
|
|
"appearance.theme.system.description": "Follow your device appearance preference.",
|
|
"appearance.brand.title": "Brand appearance",
|
|
"appearance.brand.description": "Manage the primary color, theme logos and browser icon used across the instance.",
|
|
"appearance.color.title": "Primary color",
|
|
"appearance.color.picker": "Primary color picker",
|
|
"appearance.color.help": "Accent, focus and subtle surface tones are derived from this color automatically.",
|
|
"appearance.assets.lightLogo": "Light theme logo",
|
|
"appearance.assets.darkLogo": "Dark theme logo",
|
|
"appearance.assets.favicon": "Browser icon",
|
|
"appearance.assets.faviconHelp": "Use a square PNG up to 5 MB.",
|
|
"appearance.assets.previewAlt": "{asset} preview",
|
|
"appearance.actions.remove": "Remove",
|
|
"appearance.actions.save": "Save brand appearance",
|
|
"appearance.messages.themeSaved": "Appearance preference was saved.",
|
|
"appearance.messages.brandSaved": "Brand appearance was updated.",
|
|
"appearance.messages.assetRemoved": "Brand asset was removed.",
|
|
"appearance.errors.primaryColor": "The primary color must use the #RRGGBB format.",
|
|
"appearance.errors.colorMode": "The theme preference could not be saved.",
|
|
"appearance.errors.invalidAsset": "The brand asset is invalid.",
|
|
"appearance.errors.removeFailed": "The brand asset could not be removed.",
|
|
"appearance.errors.saveFailed": "Brand appearance could not be saved. Check the file type and size.",
|
|
"profile.title": "Profile",
|
|
"profile.description": "Manage the personal information displayed in your account and throughout the application.",
|
|
"profile.avatarAlt": "Profile photo",
|
|
"profile.fields.avatar": "Profile photo",
|
|
"profile.fields.firstName": "First name",
|
|
"profile.fields.lastName": "Last name",
|
|
"profile.fields.email": "Email",
|
|
"profile.help.avatar": "PNG, JPEG, WebP or GIF up to 5 MB.",
|
|
"profile.help.email": "The sign-in email cannot be changed from this page.",
|
|
"profile.actions.save": "Save profile",
|
|
"profile.messages.saved": "Profile was updated.",
|
|
"profile.errors.firstName": "First name is required and can contain at most 80 characters.",
|
|
"profile.errors.lastName": "Last name is required and can contain at most 120 characters.",
|
|
"profile.errors.updateFailed": "Profile could not be updated. Check the details and image file.",
|
|
"security.title": "Security",
|
|
"security.description": "Manage your account password and active session security.",
|
|
"security.sessions.title": "Other sessions will be signed out",
|
|
"security.sessions.description": "When your password changes, active sessions other than this device are revoked for your security.",
|
|
"security.fields.currentPassword": "Current password",
|
|
"security.fields.newPassword": "New password",
|
|
"security.fields.confirmPassword": "Confirm new password",
|
|
"security.help.password": "Your new password must contain between 8 and 128 characters.",
|
|
"security.actions.save": "Change password",
|
|
"security.messages.saved": "Your password was updated and other sessions were signed out.",
|
|
"security.errors.currentRequired": "Enter your current password.",
|
|
"security.errors.newLength": "The new password must contain between 8 and 128 characters.",
|
|
"security.errors.confirmMismatch": "The new passwords do not match.",
|
|
"security.errors.samePassword": "The new password must be different from the current password.",
|
|
"security.errors.changeFailed": "The current password could not be verified or the password could not be updated.",
|
|
"ai.title": "Artificial intelligence",
|
|
"ai.description": "Manage the provider, model and connection key used by artificial intelligence features.",
|
|
"ai.provider.title": "Provider",
|
|
"ai.provider.description": "Choose the provider that matches your self-hosted environment and service.",
|
|
"ai.provider.ariaLabel": "Artificial intelligence provider",
|
|
"ai.providers.gemini.name": "Google Gemini",
|
|
"ai.providers.gemini.description": "Uses Google AI models with an API key.",
|
|
"ai.providers.gemini.defaultModel": "Default: gemini-1.5-pro-latest",
|
|
"ai.providers.openai.name": "OpenAI",
|
|
"ai.providers.openai.description": "Uses OpenAI-compatible models with an API key.",
|
|
"ai.providers.openai.defaultModel": "Default: gpt-4o",
|
|
"ai.providers.groq.name": "Groq",
|
|
"ai.providers.groq.description": "Uses fast open models hosted by Groq.",
|
|
"ai.providers.groq.defaultModel": "Default: llama-3.1-8b-instant",
|
|
"ai.providers.ollama.name": "Ollama",
|
|
"ai.providers.ollama.description": "Uses Ollama locally or on your own server.",
|
|
"ai.providers.ollama.defaultModel": "Default: llama3.2",
|
|
"ai.fields.model": "Model name",
|
|
"ai.fields.apiKey": "API key",
|
|
"ai.help.model": "Leave this empty to use the default model for the selected provider.",
|
|
"ai.help.apiKeyExisting": "The saved key remains unchanged unless you enter a new value.",
|
|
"ai.help.apiKeyNew": "The key is stored encrypted and is never displayed again in the interface.",
|
|
"ai.apiKey.configured": "Key configured",
|
|
"ai.apiKey.masked": "••••••••••••••••",
|
|
"ai.apiKey.placeholder": "Enter the API key",
|
|
"ai.ollama.title": "No API key required",
|
|
"ai.ollama.description": "The connection address comes from the Ollama configuration in your self-hosted environment variables.",
|
|
"ai.actions.save": "Save artificial intelligence settings",
|
|
"ai.messages.saved": "Artificial intelligence settings were updated.",
|
|
"ai.errors.provider": "Choose a valid artificial intelligence provider.",
|
|
"ai.errors.model": "The model name can contain at most 200 characters.",
|
|
"ai.errors.apiKey": "The API key can contain at most 4096 characters.",
|
|
"ai.errors.apiKeyRequired": "Enter an API key for the selected provider.",
|
|
"ai.errors.saveFailed": "Artificial intelligence settings could not be saved. Check the provider and connection details.",
|
|
"languagePreference.title": "Language preference",
|
|
"languagePreference.description": "Choose the interface language used only for your account.",
|
|
"languagePreference.default.title": "Instance default language",
|
|
"languagePreference.default.value": "{language} ({code}) is used for new accounts and fallback behavior.",
|
|
"languagePreference.default.badge": "Instance default",
|
|
"languagePreference.fallback.title": "Choose your language preference again",
|
|
"languagePreference.fallback.description": "Your previous preference is no longer active. The interface is using a fallback language; choose an active language below.",
|
|
"languagePreference.listAriaLabel": "Active interface languages",
|
|
"languagePreference.actions.save": "Save language preference",
|
|
"languagePreference.messages.saved": "Your language preference was updated.",
|
|
"languagePreference.errors.saveFailed": "The language preference could not be saved. Only active languages can be selected.",
|
|
"languages.title": "Languages",
|
|
"languages.description": "Manage instance languages, the default language, completion and usage impact.",
|
|
"languages.actions.add": "Add language",
|
|
"languages.actions.manage": "Manage",
|
|
"languages.actions.makeDefault": "Make default",
|
|
"languages.columns.language": "Language",
|
|
"languages.columns.status": "Status",
|
|
"languages.columns.fallback": "Fallback",
|
|
"languages.columns.completion": "Completion",
|
|
"languages.columns.usage": "Usage",
|
|
"languages.columns.actions": "Actions",
|
|
"languages.filters.ariaLabel": "Language status filter",
|
|
"languages.filters.all": "All",
|
|
"languages.filters.draft": "Draft",
|
|
"languages.filters.active": "Active",
|
|
"languages.filters.archived": "Archived",
|
|
"languages.status.draft": "Draft",
|
|
"languages.status.active": "Active",
|
|
"languages.status.archived": "Archived",
|
|
"languages.status.test": "Test",
|
|
"languages.badges.builtIn": "Built-in",
|
|
"languages.badges.default": "Default",
|
|
"languages.values.none": "None",
|
|
"languages.values.usage": "{count} uses",
|
|
"languages.empty.title": "No language matches this filter",
|
|
"languages.empty.description": "Choose another status filter or add a new language.",
|
|
"languages.defaultDialog.title": "Change the instance default",
|
|
"languages.defaultDialog.description": "{language} will become the default for new accounts and fallback behavior. Existing personal preferences will not change.",
|
|
"languages.defaultDialog.cancel": "Cancel",
|
|
"languages.defaultDialog.confirm": "Make default",
|
|
"languages.messages.defaultSaved": "The instance default language was updated.",
|
|
"languages.errors.defaultFailed": "The default language could not be updated. Only an active language can be the default.",
|
|
"languageNew.title": "Add a new language",
|
|
"languageNew.description": "Create a new interface language and begin its translation process as a draft.",
|
|
"languageNew.draftNotice": "New languages are always created as drafts. They cannot be exposed to end users until critical translations are complete.",
|
|
"languageNew.fields.code": "Locale code",
|
|
"languageNew.fields.name": "Management name",
|
|
"languageNew.fields.nativeName": "Native language name",
|
|
"languageNew.fields.fallback": "Fallback language",
|
|
"languageNew.fields.direction": "Text direction",
|
|
"languageNew.placeholders.code": "fr or pt-BR",
|
|
"languageNew.placeholders.name": "French",
|
|
"languageNew.placeholders.nativeName": "Français",
|
|
"languageNew.placeholders.fallback": "Choose a fallback language",
|
|
"languageNew.help.code": "Use a short language or language-region code in BCP 47 format.",
|
|
"languageNew.help.nativeName": "The native name users will see in language selectors.",
|
|
"languageNew.help.fallback": "Missing translations are filled from this language's catalog chain.",
|
|
"languageNew.direction.ltr": "Left to right",
|
|
"languageNew.direction.rtl": "Right to left",
|
|
"languageNew.actions.back": "Back to languages",
|
|
"languageNew.actions.create": "Create draft language",
|
|
"languageNew.messages.created": "The draft language was created.",
|
|
"languageNew.errors.code": "Enter a valid BCP 47 locale code. For example: fr or pt-BR.",
|
|
"languageNew.errors.name": "The management name is required and can contain at most 80 characters.",
|
|
"languageNew.errors.nativeName": "The native language name is required and can contain at most 80 characters.",
|
|
"languageNew.errors.direction": "Choose a valid text direction.",
|
|
"languageNew.errors.duplicate": "This locale code has already been added.",
|
|
"languageNew.errors.selfFallback": "A language cannot use itself as fallback.",
|
|
"languageNew.errors.fallback": "Choose an active or draft fallback language.",
|
|
"languageNew.errors.fallbackLoop": "The selected fallback chain creates a loop.",
|
|
"languageNew.errors.createFailed": "The language could not be created. Check the locale and fallback details.",
|
|
"languageDetail.actions.back": "Back to languages",
|
|
"languageDetail.actions.translations": "Review translation progress",
|
|
"languageDetail.actions.save": "Save metadata",
|
|
"languageDetail.actions.activate": "Activate",
|
|
"languageDetail.actions.makeDefault": "Make default",
|
|
"languageDetail.actions.archive": "Archive",
|
|
"languageDetail.fields.name": "Management name",
|
|
"languageDetail.fields.nativeName": "Native language name",
|
|
"languageDetail.fields.fallback": "Fallback language",
|
|
"languageDetail.fields.direction": "Text direction",
|
|
"languageDetail.builtIn.title": "Protected built-in language",
|
|
"languageDetail.builtIn.description": "Turkish and English cannot be deleted, archived or have their core metadata changed. You can customize their text with translation overrides.",
|
|
"languageDetail.readiness.title": "Publishing readiness",
|
|
"languageDetail.readiness.description": "Check the required conditions before lifecycle operations.",
|
|
"languageDetail.readiness.critical": "{count} missing critical interface strings",
|
|
"languageDetail.readiness.active": "Language is active for end users",
|
|
"languageDetail.readiness.references": "{count} usages blocking archival",
|
|
"languageDetail.readiness.blockedTitle": "Activation is not ready yet",
|
|
"languageDetail.readiness.blockedDescription": "Complete {count} critical translations before activating this language.",
|
|
"languageDetail.usage.title": "Usage impact",
|
|
"languageDetail.usage.description": "Records linked to this language can affect lifecycle operations.",
|
|
"languageDetail.usage.defaultSettings": "Instance default",
|
|
"languageDetail.usage.fallbacks": "Fallback dependencies",
|
|
"languageDetail.usage.userPreferences": "User preferences",
|
|
"languageDetail.usage.clients": "Client defaults",
|
|
"languageDetail.usage.portalInvitations": "Portal invitations",
|
|
"languageDetail.usage.contentTranslations": "Content translations",
|
|
"languageDetail.completion.title": "Namespace completion",
|
|
"languageDetail.completion.description": "Review interface catalog translation progress by module.",
|
|
"languageDetail.completion.value": "{translated}/{total} translated",
|
|
"languageDetail.namespaces.common": "Common",
|
|
"languageDetail.namespaces.auth": "Authentication",
|
|
"languageDetail.namespaces.navigation": "Navigation",
|
|
"languageDetail.namespaces.dashboard": "Dashboard",
|
|
"languageDetail.namespaces.clients": "Clients",
|
|
"languageDetail.namespaces.projects": "Projects",
|
|
"languageDetail.namespaces.tasks": "Tasks",
|
|
"languageDetail.namespaces.calendar": "Calendar",
|
|
"languageDetail.namespaces.finance": "Finance",
|
|
"languageDetail.namespaces.journal": "Journal",
|
|
"languageDetail.namespaces.chat": "Chat",
|
|
"languageDetail.namespaces.settings": "Settings",
|
|
"languageDetail.namespaces.portal": "Client portal",
|
|
"languageDetail.namespaces.status": "Statuses",
|
|
"languageDetail.namespaces.validation": "Validation",
|
|
"languageDetail.namespaces.api": "API",
|
|
"languageDetail.dialog.cancel": "Cancel",
|
|
"languageDetail.dialog.activate.title": "Activate language",
|
|
"languageDetail.dialog.activate.description": "{language} will be shown in active language selectors and content forms.",
|
|
"languageDetail.dialog.activate.confirm": "Activate",
|
|
"languageDetail.dialog.default.title": "Change default language",
|
|
"languageDetail.dialog.default.description": "{language} will become the new instance default. Existing personal preferences will be preserved.",
|
|
"languageDetail.dialog.default.confirm": "Make default",
|
|
"languageDetail.dialog.archive.title": "Archive language",
|
|
"languageDetail.dialog.archive.description": "{language} will be removed from user selectors and new content forms. Existing translations will be preserved.",
|
|
"languageDetail.dialog.archive.confirm": "Archive",
|
|
"languageDetail.messages.metadataSaved": "Language metadata was updated.",
|
|
"languageDetail.messages.activate": "The language was activated.",
|
|
"languageDetail.messages.default": "The instance default language was updated.",
|
|
"languageDetail.messages.archive": "The language was archived.",
|
|
"languageDetail.errors.name": "The management name is required and can contain at most 80 characters.",
|
|
"languageDetail.errors.nativeName": "The native language name is required and can contain at most 80 characters.",
|
|
"languageDetail.errors.direction": "Choose a valid text direction.",
|
|
"languageDetail.errors.selfFallback": "A language cannot use itself as fallback.",
|
|
"languageDetail.errors.fallbackLoop": "The selected fallback chain creates a loop.",
|
|
"languageDetail.errors.notFound": "Language not found.",
|
|
"languageDetail.errors.builtInMetadata": "Built-in language metadata cannot be changed.",
|
|
"languageDetail.errors.metadataFailed": "Language metadata could not be updated. Check the fallback chain.",
|
|
"languageDetail.errors.notReady": "The language cannot be activated; {count} critical translations are missing.",
|
|
"languageDetail.errors.activateFailed": "The language could not be activated.",
|
|
"languageDetail.errors.defaultFailed": "Only an active language can be made default.",
|
|
"languageDetail.errors.archiveBlocked": "The language cannot be archived because it is in use, is the default or is built-in.",
|
|
"languageDetail.errors.archiveFailed": "The language could not be archived.",
|
|
"language.title": "Languages and translations",
|
|
"language.default": "Default language",
|
|
},
|
|
analytics: {
|
|
"title": "Performance and Financial Analysis",
|
|
"range.placeholder": "Date Range",
|
|
"range.thisWeek": "This Week",
|
|
"range.thisMonth": "This Month",
|
|
"range.thisYear": "This Year",
|
|
"sections.incomeDistribution": "Project-Based Income Distribution",
|
|
"sections.taskStatus": "Task Status Analysis",
|
|
"empty": "No data found.",
|
|
"tasks.completed": "Completed",
|
|
"tasks.ongoing": "Ongoing",
|
|
"tasks.count": "Task Count",
|
|
},
|
|
portal: {
|
|
"dashboard.title": "Client dashboard",
|
|
"dashboard.activeProjects": "Active projects",
|
|
"dashboard.completed": "Completed",
|
|
"dashboard.averageProgress": "Average progress",
|
|
"dashboard.allProjects": "All your projects",
|
|
"projects.title": "Your projects",
|
|
"projects.empty": "No projects have been assigned to you yet.",
|
|
"tasks.title": "Completed tasks",
|
|
"tasks.empty": "No shared tasks yet.",
|
|
"revisions.title": "Revision requests",
|
|
"revisions.mine": "My revision requests",
|
|
"revisions.empty": "You have not created a revision request yet.",
|
|
"actions.requestRevision": "Request revision",
|
|
"actions.noRevisionQuota": "No revision quota left",
|
|
"actions.sendRequest": "Send request",
|
|
"actions.cancel": "Cancel",
|
|
"actions.newRequest": "Create new request",
|
|
"labels.delivery": "Delivery",
|
|
"labels.deadline": "Due",
|
|
"labels.progress": "Progress",
|
|
"labels.project": "Project",
|
|
"labels.remainingQuota": "Remaining quota",
|
|
"labels.unlimited": "Unlimited",
|
|
"tabs.overview": "Overview",
|
|
"tabs.plan": "Plan & stages",
|
|
"tabs.revisions": "Revisions",
|
|
"sections.progress": "Progress",
|
|
"sections.doneTasks": "Completed work",
|
|
"empty.tasks": "No tasks to list.",
|
|
"empty.plan": "No plan has been uploaded yet.",
|
|
"empty.revisions": "You have not created a revision request yet.",
|
|
"revision.title": "New revision request",
|
|
"revision.pendingWarning": "You currently have {count} unresolved revision requests. Are you sure you want to add another?",
|
|
"revision.descriptionLabel": "Describe the changes you would like in detail",
|
|
"revision.descriptionPlaceholder": "Could this section be blue? Also, let's update the copy...",
|
|
"revision.success": "Your revision request has been sent.",
|
|
"revision.error": "Could not create revision request.",
|
|
"status.project.active": "Active",
|
|
"status.project.completed": "Completed",
|
|
"status.project.waiting": "Waiting",
|
|
"status.task.todo": "Waiting",
|
|
"status.task.inProgress": "In progress",
|
|
"status.task.done": "Completed",
|
|
"status.revision.pending": "Waiting",
|
|
"status.revision.inProgress": "In progress",
|
|
"status.revision.completed": "Completed",
|
|
"status.revision.rejected": "Rejected",
|
|
},
|
|
status: {
|
|
"project.active": "Active",
|
|
"project.completed": "Completed",
|
|
"task.todo": "To do",
|
|
"task.done": "Done",
|
|
},
|
|
validation: {
|
|
"required": "This field is required.",
|
|
"invalidLocale": "Locale code is invalid.",
|
|
"unsupportedLocale": "This language is not supported.",
|
|
},
|
|
api: {
|
|
"errors.unauthenticated": "A valid session is required.",
|
|
"errors.forbidden": "You are not allowed to perform this action.",
|
|
},
|
|
} as const satisfies TranslationCatalog;
|