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.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", }, clients: { "title": "Clients", "description": "Manage client relationships, projects and follow-ups.", "actions.add": "Add client", "fields.name": "Client name", "fields.email": "Email", }, 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 time and deadlines.", "actions.add": "Add event", "event.title": "Event", }, 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", }, 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;