Files
Keep/keep-notes/locales/en.json
Sepehr Ramezani 402e88b788 feat(ux): epic UX design improvements across agents, chat, notes, and i18n
Comprehensive UI/UX updates including agent card redesign, chat container
improvements, note editor enhancements, memory echo notifications, and
updated translations for all 15 locales.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-04-19 23:01:04 +02:00

1416 lines
65 KiB
JSON

{
"auth": {
"signIn": "Sign In",
"signUp": "Sign Up",
"email": "Email",
"password": "Password",
"name": "Name",
"emailPlaceholder": "Enter your email address",
"passwordPlaceholder": "Enter your password",
"namePlaceholder": "Enter your name",
"passwordMinChars": "Enter password (min 6 chars)",
"resetPassword": "Reset Password",
"resetPasswordInstructions": "Enter your email to reset password",
"forgotPassword": "Forgot password?",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"signInToAccount": "Sign in to your account",
"createAccount": "Create your account",
"rememberMe": "Remember me",
"orContinueWith": "Or continue with",
"checkYourEmail": "Check your email",
"resetEmailSent": "We have sent a password reset link to your email address if it exists in our system.",
"returnToLogin": "Return to Login",
"forgotPasswordTitle": "Forgot Password",
"forgotPasswordDescription": "Enter your email address and we'll send you a link to reset your password.",
"sending": "Sending...",
"sendResetLink": "Send Reset Link",
"backToLogin": "Back to login",
"signOut": "Sign out"
},
"sidebar": {
"notes": "Notes",
"reminders": "Reminders",
"labels": "Labels",
"editLabels": "Edit labels",
"newNoteTabs": "New Note",
"newNoteTabsHint": "Create note in this notebook",
"noLabelsInNotebook": "No labels in this notebook yet",
"archive": "Archive",
"trash": "Trash"
},
"notes": {
"title": "Notes",
"newNote": "New note",
"untitled": "Untitled",
"placeholder": "Take a note...",
"markdownPlaceholder": "Take a note... (Markdown supported)",
"titlePlaceholder": "Title",
"listItem": "List item",
"addListItem": "+ List item",
"newChecklist": "New checklist",
"add": "Add",
"adding": "Adding...",
"close": "Close",
"confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "Are you sure you want to leave this shared note?",
"sharedBy": "Shared by",
"leaveShare": "Leave",
"delete": "Delete",
"archive": "Archive",
"unarchive": "Unarchive",
"pin": "Pin",
"unpin": "Unpin",
"color": "Color",
"changeColor": "Change color",
"setReminder": "Set reminder",
"setReminderButton": "Set Reminder",
"date": "Date",
"time": "Time",
"reminderDateTimeRequired": "Please enter date and time",
"invalidDateTime": "Invalid date or time",
"reminderMustBeFuture": "Reminder must be in the future",
"reminderSet": "Reminder set for {datetime}",
"reminderPastError": "Reminder must be in the future",
"reminderRemoved": "Reminder removed",
"addImage": "Add image",
"addLink": "Add link",
"linkAdded": "Link added",
"linkMetadataFailed": "Could not fetch link metadata",
"linkAddFailed": "Failed to add link",
"invalidFileType": "Invalid file type: {fileName}. Only JPEG, PNG, GIF, and WebP allowed.",
"fileTooLarge": "File too large: {fileName}. Maximum size is {maxSize}.",
"uploadFailed": "Failed to upload {filename}",
"contentOrMediaRequired": "Please enter some content or add a link/image",
"itemOrMediaRequired": "Please add at least one item or media",
"noteCreated": "Note created successfully",
"noteCreateFailed": "Failed to create note",
"deleted": "Note deleted",
"deleteFailed": "Failed to delete note",
"aiAssistant": "AI Assistant",
"changeSize": "Change size",
"backgroundOptions": "Background options",
"moreOptions": "More options",
"remindMe": "Remind me",
"markdownMode": "Markdown",
"addCollaborators": "Add collaborators",
"duplicate": "Duplicate",
"share": "Share",
"showCollaborators": "Show collaborators",
"pinned": "Pinned",
"others": "Others",
"noNotes": "No notes",
"noNotesFound": "No notes found",
"createFirstNote": "Create your first note",
"size": "Size",
"small": "Small",
"medium": "Medium",
"large": "Large",
"shareWithCollaborators": "Share with collaborators",
"view": "View Note",
"edit": "Edit",
"readOnly": "Read Only",
"preview": "Preview",
"noContent": "No content",
"takeNote": "Take a note...",
"takeNoteMarkdown": "Take a note... (Markdown supported)",
"addItem": "Add item",
"sharedReadOnly": "This note is shared with you in read-only mode",
"makeCopy": "Make a copy",
"saving": "Saving...",
"copySuccess": "Note copied successfully!",
"copyFailed": "Failed to copy note",
"copy": "Copy",
"markdownOn": "Markdown ON",
"markdownOff": "Markdown OFF",
"undo": "Undo (Ctrl+Z)",
"redo": "Redo (Ctrl+Y)",
"pinnedNotes": "Pinned Notes",
"recent": "Recent",
"addNote": "Add Note",
"remove": "Remove",
"dragToReorder": "Drag to reorder",
"more": "More options",
"emptyState": "No notes yet. Create your first note!",
"emptyStateTabs": "No notes here yet. Use \"New note\" in the sidebar to add one (AI title suggestions appear in the composer).",
"inNotebook": "In notebook",
"moveFailed": "Failed to move note. Please try again.",
"clarifyFailed": "Failed to clarify text",
"shortenFailed": "Failed to shorten text",
"improveFailed": "Failed to improve text",
"transformFailed": "Failed to transform text",
"markdown": "Markdown",
"unpinned": "Unpinned",
"redoShortcut": "Redo (Ctrl+Y)",
"undoShortcut": "Undo (Ctrl+Z)",
"viewCards": "Cards View",
"viewCardsTooltip": "Card grid with drag-and-drop reorder",
"viewTabs": "List View",
"viewTabsTooltip": "Tabs on top, note below — drag tabs to reorder",
"viewModeGroup": "Notes display mode",
"reorderTabs": "Reorder tab",
"modified": "Modified",
"created": "Created"
},
"pagination": {
"previous": "←",
"pageInfo": "Page {currentPage} / {totalPages}",
"next": "→"
},
"labels": {
"title": "Labels",
"filter": "Filter by Label",
"manage": "Manage Labels",
"manageTooltip": "Manage Labels",
"changeColor": "Change Color",
"changeColorTooltip": "Change color",
"delete": "Delete",
"deleteTooltip": "Delete label",
"confirmDelete": "Are you sure you want to delete this label?",
"newLabelPlaceholder": "Create new label",
"namePlaceholder": "Enter label name",
"addLabel": "Add label",
"createLabel": "Create label",
"labelName": "Label name",
"labelColor": "Label color",
"manageLabels": "Manage labels",
"manageLabelsDescription": "Add or remove labels for this note. Click on a label to change its color.",
"selectedLabels": "Selected Labels",
"allLabels": "All Labels",
"clearAll": "Clear all",
"filterByLabel": "Filter by label",
"tagAdded": "Tag \"{tag}\" added",
"showLess": "Show less",
"showMore": "Show more",
"editLabels": "Edit Labels",
"editLabelsDescription": "Create, edit colors, or delete labels.",
"noLabelsFound": "No labels found.",
"loading": "Loading...",
"notebookRequired": "⚠️ Labels are only available in notebooks. Move this note to a notebook first.",
"count": "{count} labels",
"noLabels": "No labels",
"confirmDeleteShort": "Confirm?",
"labelRemoved": "Label \"{label}\" removed"
},
"search": {
"placeholder": "Search",
"searchPlaceholder": "Search your notes...",
"semanticInProgress": "AI search in progress...",
"semanticTooltip": "AI semantic search",
"searching": "Searching...",
"noResults": "No results found",
"resultsFound": "{count} notes found",
"exactMatch": "Exact match",
"related": "Related"
},
"collaboration": {
"emailPlaceholder": "Enter email address",
"addCollaborator": "Add collaborator",
"removeCollaborator": "Remove collaborator",
"owner": "Owner",
"canEdit": "Can edit",
"canView": "Can view",
"shareNote": "Share note",
"shareWithCollaborators": "Share with collaborators",
"addCollaboratorDescription": "Add people to collaborate on this note by their email address.",
"viewerDescription": "You have access to this note. Only the owner can manage collaborators.",
"emailAddress": "Email address",
"enterEmailAddress": "Enter email address",
"invite": "Invite",
"peopleWithAccess": "People with access",
"noCollaborators": "No collaborators yet. Add someone above!",
"noCollaboratorsViewer": "No collaborators yet.",
"pendingInvite": "Pending Invite",
"pending": "Pending",
"remove": "Remove",
"unnamedUser": "Unnamed User",
"done": "Done",
"willBeAdded": "{email} will be added as collaborator when note is created",
"alreadyInList": "This email is already in the list",
"nowHasAccess": "{name} now has access to this note",
"accessRevoked": "Access has been revoked",
"errorLoading": "Error loading collaborators",
"failedToAdd": "Failed to add collaborator",
"failedToRemove": "Failed to remove collaborator"
},
"ai": {
"analyzing": "AI analyzing...",
"clickToAddTag": "Click to add this tag",
"ignoreSuggestion": "Ignore this suggestion",
"generatingTitles": "Generating titles...",
"generateTitlesTooltip": "Generate titles with AI",
"poweredByAI": "Powered by AI",
"languageDetected": "Language detected",
"processing": "Processing...",
"tagAdded": "Tag \"{tag}\" added",
"titleGenerating": "Generating...",
"titleGenerateWithAI": "Generate titles with AI",
"titleGenerationMinWords": "Content must have at least 10 words to generate titles (current: {count} words)",
"titleGenerationError": "Error generating titles",
"titlesGenerated": "💡 {count} titles generated!",
"titleGenerationFailed": "Failed to generate titles",
"titleApplied": "Title applied!",
"reformulationNoText": "Please select text or add content",
"reformulationSelectionTooShort": "Selection too short, using full content",
"reformulationMinWords": "Text must have at least 10 words (current: {count} words)",
"reformulationMaxWords": "Text must have maximum 500 words",
"reformulationError": "Error during reformulation",
"reformulationFailed": "Failed to reformulate text",
"reformulationApplied": "Reformulated text applied!",
"transformMarkdown": "Transform to Markdown",
"transforming": "Transforming...",
"transformSuccess": "Text transformed to Markdown successfully!",
"transformError": "Error during transformation",
"assistant": "AI Assistant",
"generating": "Generating...",
"generateTitles": "Generate titles",
"reformulateText": "Reformulate text",
"reformulating": "Reformulating...",
"clarify": "Clarify",
"shorten": "Shorten",
"improveStyle": "Improve style",
"reformulationComparison": "Reformulation Comparison",
"original": "Original",
"reformulated": "Reformulated",
"autoLabels": {
"error": "Failed to fetch label suggestions",
"noLabelsSelected": "No labels selected",
"created": "{count} labels created successfully",
"analyzing": "Analyzing your notes...",
"title": "New Label Suggestions",
"description": "I've detected recurring themes in \"{notebookName}\" ({totalNotes} notes). Create labels for them?",
"note": "note",
"notes": "notes",
"typeContent": "Type content to get label suggestions...",
"createNewLabel": "Create this new label and add it",
"new": "(new)",
"create": "Create",
"creating": "Creating labels...",
"notesCount": "{count} notes",
"typeForSuggestions": "Type content to get label suggestions..."
},
"batchOrganization": {
"title": "Organize with AI",
"description": "AI will analyze your notes and suggest organizing them into notebooks.",
"analyzing": "Analyzing your notes...",
"noNotebooks": "No notebooks available. Create notebooks first to organize your notes.",
"noSuggestions": "AI could not find a good way to organize these notes.",
"apply": "Apply",
"applying": "Applying...",
"success": "{count} notes moved successfully",
"error": "Failed to create organization plan",
"noNotesSelected": "No notes selected",
"applyFailed": "Failed to apply organization plan",
"selectAllIn": "Select all notes in {notebook}",
"selectNote": "Select note: {title}"
},
"notebookSummary": {
"regenerate": "Regenerate Summary",
"regenerating": "Regenerating summary...",
"exportPDF": "Export as PDF"
},
"clarifyDesc": "Make the text clearer and easier to understand",
"shortenDesc": "Summarize the text and get to the point",
"improve": "Improve writing",
"improveDesc": "Fix grammar and enhance style",
"toMarkdown": "Format as Markdown",
"toMarkdownDesc": "Add headings, bullet points and structure the text",
"translate": "Translate",
"translateDesc": "Change the text language",
"translateBack": "Back",
"translationApplied": "Translation applied",
"translationFailed": "Translation failed",
"undo": "Undo AI",
"undoAI": "Undo AI transformation",
"undoApplied": "Original text restored"
},
"titleSuggestions": {
"available": "Title suggestions",
"title": "AI suggestions",
"generating": "Generating...",
"selectTitle": "Select a title",
"dismiss": "Dismiss"
},
"semanticSearch": {
"exactMatch": "Exact match",
"related": "Related",
"searching": "Searching..."
},
"paragraphRefactor": {
"title": "Text improvement",
"shorten": "Shorten",
"expand": "Expand",
"improve": "Improve",
"formal": "Formal",
"casual": "Casual"
},
"memoryEcho": {
"title": "I noticed something...",
"description": "Proactive connections between your notes",
"dailyInsight": "Daily insight from your notes",
"insightReady": "Your insight is ready!",
"viewConnection": "View Connection",
"helpful": "Helpful",
"notHelpful": "Not Helpful",
"dismiss": "Dismiss for now",
"thanksFeedback": "Thanks for your feedback!",
"thanksFeedbackImproving": "Thanks! We'll use this to improve.",
"connections": "Connections",
"connection": "connection",
"connectionsBadge": "{count} connection{plural}",
"match": "{percentage}% match",
"fused": "Fused",
"clickToView": "Click to view note →",
"overlay": {
"title": "Connected Notes",
"searchPlaceholder": "Search connections...",
"sortBy": "Sort by:",
"sortSimilarity": "Similarity",
"sortRecent": "Recent",
"sortOldest": "Oldest",
"viewAll": "View all side by side",
"loading": "Loading...",
"noConnections": "No connections found",
"error": "Failed to load connections"
},
"comparison": {
"title": "💡 Note Comparison",
"similarityInfo": "These notes are connected by {similarity}% similarity",
"highSimilarityInsight": "These notes deal with the same topic with a high degree of similarity. They could be merged or consolidated.",
"untitled": "Untitled",
"clickToView": "Click to view note",
"helpfulQuestion": "Is this comparison helpful?",
"helpful": "Helpful",
"notHelpful": "Not Helpful"
},
"editorSection": {
"title": "⚡ Connected Notes ({count})",
"loading": "Loading...",
"view": "View",
"compare": "Compare",
"merge": "Merge",
"compareAll": "Compare all",
"mergeAll": "Merge all",
"close": "Close"
},
"fusion": {
"title": "🔗 Intelligent Fusion",
"mergeNotes": "Merge {count} note(s)",
"notesToMerge": "📝 Notes to merge",
"optionalPrompt": "💬 Fusion prompt (optional)",
"promptPlaceholder": "Optional instructions for AI (e.g., 'Keep the formal style of note 1')...",
"generateFusion": "Generate the fusion",
"generating": "Generating...",
"previewTitle": "📝 Preview of merged note",
"edit": "Edit",
"modify": "Modify",
"finishEditing": "Finish editing",
"optionsTitle": "Fusion options",
"archiveOriginals": "Archive original notes",
"keepAllTags": "Keep all tags",
"useLatestTitle": "Use latest note as title",
"createBacklinks": "Create backlink to original notes",
"cancel": "Cancel",
"confirmFusion": "Confirm fusion",
"success": "Notes merged successfully!",
"error": "Failed to merge notes",
"generateError": "Failed to generate fusion",
"noContentReturned": "No fusion content returned from API",
"unknownDate": "Unknown date"
}
},
"notification": {
"accept": "Accept",
"accepted": "Share accepted",
"decline": "Decline",
"noNotifications": "No new notifications",
"shared": "shared \"{title}\"",
"untitled": "Untitled",
"notifications": "Notifications",
"declined": "Share declined",
"removed": "Note removed from list"
},
"nav": {
"home": "Home",
"notes": "Notes",
"notebooks": "NOTEBOOKS",
"generalNotes": "General Notes",
"archive": "Archive",
"settings": "Settings",
"profile": "Profile",
"aiSettings": "AI Settings",
"logout": "Logout",
"login": "Login",
"adminDashboard": "Admin Dashboard",
"diagnostics": "Diagnostics",
"trash": "Trash",
"support": "Support Memento ☕",
"reminders": "Reminders",
"userManagement": "User Management",
"accountSettings": "Account Settings",
"manageAISettings": "Manage AI Settings",
"configureAI": "Configure your AI-powered features, provider, and preferences",
"supportDevelopment": "Support Memento Development ☕",
"supportDescription": "Memento is 100% free and open-source. Your support helps keep it that way.",
"buyMeACoffee": "Buy me a coffee",
"donationDescription": "Make a one-time donation or become a monthly supporter.",
"donateOnKofi": "Donate on Ko-fi",
"donationNote": "No platform fees • Instant payouts • Secure",
"sponsorOnGithub": "Sponsor on GitHub",
"sponsorDescription": "Become a monthly sponsor and get recognition.",
"workspace": "Workspace",
"quickAccess": "Quick Access",
"myLibrary": "My Library",
"favorites": "Favorites",
"recent": "Recent",
"proPlan": "Pro Plan",
"chat": "AI Chat",
"lab": "The Lab",
"agents": "Agents"
},
"settings": {
"title": "Settings",
"description": "Manage your settings and preferences",
"account": "Account",
"appearance": "Appearance",
"theme": "Theme",
"themeLight": "Light",
"themeDark": "Dark",
"themeSystem": "System",
"notifications": "Notifications",
"language": "Language",
"selectLanguage": "Select language",
"security": "Security",
"about": "About",
"version": "Version",
"settingsSaved": "Settings saved",
"cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode",
"cardSizeVariable": "Variable sizes (small/medium/large)",
"cardSizeUniform": "Uniform size",
"settingsError": "Error saving settings",
"maintenance": "Maintenance",
"maintenanceDescription": "Tools to maintain your database health",
"cleanTags": "Clean Orphan Tags",
"cleanTagsDescription": "Remove tags that are no longer used by any notes",
"cleanupDone": "Synced {created} label record(s), removed {deleted} orphan(s)",
"cleanupNothing": "Nothing to do — labels already match your notes",
"cleanupWithErrors": "some operations failed",
"cleanupError": "Could not clean up labels",
"indexingComplete": "Indexing complete: {count} note(s) processed",
"indexingError": "Error during indexing",
"semanticIndexing": "Semantic Indexing",
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
"profile": "Profile",
"searchNoResults": "No settings found",
"languageAuto": "Language set to Auto",
"emailNotifications": "Email notifications",
"emailNotificationsDesc": "Receive important notifications by email",
"desktopNotifications": "Desktop notifications",
"desktopNotificationsDesc": "Receive notifications in your browser",
"notificationsDesc": "Manage your notification preferences"
},
"profile": {
"title": "Profile",
"description": "Update your personal information",
"displayName": "Display Name",
"email": "Email",
"changePassword": "Change Password",
"changePasswordDescription": "Update your password. You will need your current password.",
"currentPassword": "Current Password",
"newPassword": "New Password",
"confirmPassword": "Confirm Password",
"updatePassword": "Update Password",
"passwordChangeSuccess": "Password changed successfully",
"passwordChangeFailed": "Failed to change password",
"passwordUpdated": "Password updated",
"passwordError": "Error updating password",
"languagePreferences": "Language Preferences",
"languagePreferencesDescription": "Choose your preferred language for AI features and interface.",
"preferredLanguage": "Preferred Language",
"selectLanguage": "Select a language",
"languageDescription": "This language will be used for AI-powered features, content analysis, and interface text.",
"autoDetect": "Auto-detect",
"updateSuccess": "Profile updated",
"updateFailed": "Failed to update profile",
"languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Failed to update language",
"profileUpdated": "Profile updated",
"profileError": "Error updating profile",
"accountSettings": "Account Settings",
"manageAISettings": "Manage AI Settings",
"displaySettings": "Display Settings",
"displaySettingsDescription": "Customize the appearance and font size.",
"fontSize": "Font Size",
"selectFontSize": "Select font size",
"fontSizeSmall": "Small",
"fontSizeMedium": "Medium",
"fontSizeLarge": "Large",
"fontSizeExtraLarge": "Extra Large",
"fontSizeDescription": "Adjust the font size for better readability. This applies to all text in the interface.",
"fontSizeUpdateSuccess": "Font size updated successfully",
"fontSizeUpdateFailed": "Failed to update font size",
"showRecentNotes": "Show Recent Notes Section",
"showRecentNotesDescription": "Display recent notes (last 7 days) on the main page",
"recentNotesUpdateSuccess": "Recent notes setting updated successfully",
"recentNotesUpdateFailed": "Failed to update recent notes setting"
},
"aiSettings": {
"title": "AI Settings",
"description": "Configure your AI-powered features and preferences",
"features": "AI Features",
"provider": "AI Provider",
"providerAuto": "Auto (Recommended)",
"providerOllama": "Ollama (Local)",
"providerOpenAI": "OpenAI (Cloud)",
"frequency": "Frequency",
"frequencyDaily": "Daily",
"frequencyWeekly": "Weekly",
"saving": "Saving...",
"saved": "Setting updated",
"error": "Failed to update setting",
"titleSuggestionsDesc": "Suggest titles for untitled notes after 50+ words",
"paragraphRefactorDesc": "AI-powered text improvement options",
"frequencyDesc": "How often to analyze note connections",
"providerDesc": "Choose your preferred AI provider",
"providerAutoDesc": "Ollama when available, OpenAI fallback",
"providerOllamaDesc": "100% private, runs locally on your machine",
"providerOpenAIDesc": "Most accurate, requires API key"
},
"general": {
"loading": "Loading...",
"save": "Save",
"cancel": "Cancel",
"add": "Add",
"edit": "Edit",
"confirm": "Confirm",
"close": "Close",
"back": "Back",
"next": "Next",
"previous": "Previous",
"submit": "Submit",
"reset": "Reset",
"apply": "Apply",
"clear": "Clear",
"select": "Select",
"tryAgain": "Please try again",
"error": "An error occurred",
"operationSuccess": "Operation successful",
"operationFailed": "Operation failed",
"testConnection": "Test Connection",
"clean": "Clean",
"indexAll": "Index All",
"preview": "Preview"
},
"colors": {
"default": "Default",
"red": "Red",
"blue": "Blue",
"green": "Green",
"yellow": "Yellow",
"purple": "Purple",
"pink": "Pink",
"orange": "Orange",
"gray": "Gray"
},
"reminder": {
"title": "Reminder",
"setReminder": "Set reminder",
"removeReminder": "Remove reminder",
"reminderDate": "Reminder date",
"reminderTime": "Reminder time",
"save": "Set reminder",
"cancel": "Cancel"
},
"reminders": {
"title": "Reminders",
"empty": "No reminders",
"emptyDescription": "Add a reminder to a note to find it here.",
"upcoming": "Upcoming",
"overdue": "Overdue",
"done": "Done",
"markDone": "Mark as done",
"markUndone": "Mark as undone",
"todayAt": "Today at {time}",
"tomorrowAt": "Tomorrow at {time}"
},
"notebook": {
"create": "Create Notebook",
"createNew": "Create New Notebook",
"createDescription": "Start a new collection to organize your notes, ideas, and projects efficiently.",
"name": "Notebook Name",
"namePlaceholder": "e.g. Q4 Marketing Strategy",
"myNotebook": "My Notebook",
"saving": "Saving...",
"selectIcon": "Icon",
"selectColor": "Color",
"cancel": "Cancel",
"creating": "Creating...",
"edit": "Edit Notebook",
"editDescription": "Change the name, icon, and color of your notebook.",
"delete": "Delete Notebook",
"deleteWarning": "Are you sure you want to delete this notebook? Notes will be moved to General Notes.",
"deleteConfirm": "Delete",
"summary": "Notebook Summary",
"summaryDescription": "Generate an AI-powered summary of all notes in this notebook.",
"generating": "Generating summary...",
"summaryError": "Error generating summary",
"labels": "Labels:",
"noLabels": "No labels",
"pdfTitle": "Summary — {name}",
"pdfNotesLabel": "Notes:",
"pdfGeneratedOn": "Generated on:",
"confidence": "confidence",
"savingReminder": "Failed to save reminder",
"removingReminder": "Failed to remove reminder"
},
"notebookSuggestion": {
"title": "Move to {name}?",
"description": "This note seems to belong to this notebook",
"move": "Move",
"dismiss": "Dismiss",
"dismissIn": "Dismiss (closes in {timeLeft}s)",
"moveToNotebook": "Move to notebook",
"generalNotes": "General Notes"
},
"admin": {
"title": "Admin Dashboard",
"userManagement": "User Management",
"chat": "AI Chat",
"lab": "The Lab",
"agents": "Agents",
"workspace": "Workspace",
"settings": "Admin Settings",
"security": {
"title": "Security Settings",
"description": "Manage access control and registration policies.",
"allowPublicRegistration": "Allow Public Registration",
"allowPublicRegistrationDescription": "If disabled, new users can only be added by an Administrator via the User Management page.",
"updateSuccess": "Security Settings updated",
"updateFailed": "Failed to update security settings"
},
"ai": {
"title": "AI Configuration",
"description": "Configure AI providers for auto-tagging and semantic search. Use different providers for optimal performance.",
"tagsGenerationProvider": "Tags Generation Provider",
"tagsGenerationDescription": "AI provider for automatic tag suggestions. Recommended: Ollama (free, local).",
"embeddingsProvider": "Embeddings Provider",
"embeddingsDescription": "AI provider for semantic search embeddings. Recommended: OpenAI (best quality).",
"chatProvider": "Chat Provider",
"chatDescription": "AI provider for the chat assistant. Falls back to Tags provider if not configured.",
"provider": "Provider",
"baseUrl": "Base URL",
"model": "Model",
"apiKey": "API Key",
"selectOllamaModel": "Select an Ollama model installed on your system",
"openAIKeyDescription": "Your OpenAI API key from platform.openai.com",
"modelRecommendations": "gpt-4o-mini = Best value • gpt-4o = Best quality",
"commonModelsDescription": "Common models for OpenAI-compatible APIs",
"selectEmbeddingModel": "Select an embedding model installed on your system",
"commonEmbeddingModels": "Common embedding models for OpenAI-compatible APIs",
"saving": "Saving...",
"saveSettings": "Save AI Settings",
"openTestPanel": "Open AI Test Panel",
"updateSuccess": "AI Settings updated successfully",
"updateFailed": "Failed to update AI settings",
"providerTagsRequired": "AI_PROVIDER_TAGS is required",
"providerEmbeddingRequired": "AI_PROVIDER_EMBEDDING is required",
"providerOllamaOption": "🦙 Ollama (Local & Free)",
"providerOpenAIOption": "🤖 OpenAI (GPT-5, GPT-4)",
"providerCustomOption": "🔧 Custom OpenAI-Compatible",
"bestValue": "Best value",
"bestQuality": "Best quality",
"saved": "(Saved)"
},
"resend": {
"title": "Resend (Recommended)",
"description": "Send emails via Resend API. Takes priority over SMTP if configured.",
"apiKey": "Resend API Key",
"apiKeyHint": "Get your API key from resend.com. Used for agent notifications and password resets.",
"saveSettings": "Save Resend Settings",
"updateSuccess": "Resend settings updated",
"updateFailed": "Failed to update Resend settings",
"configured": "Resend is configured and active"
},
"email": {
"title": "Email Configuration",
"description": "Configure email delivery for agent notifications and password resets.",
"provider": "Email Provider",
"saveSettings": "Save Email Settings",
"status": "Service Status",
"keySet": "key configured",
"activeAuto": "Auto mode: Resend will be used first, SMTP as fallback.",
"activeSmtp": "Auto mode: SMTP will be used (Resend not configured).",
"noneConfigured": "No email service configured. Set up Resend or SMTP.",
"activeProvider": "Active provider",
"testOk": "test passed",
"testFail": "test failed"
},
"smtp": {
"title": "SMTP Configuration",
"description": "Configure email server for password resets. Fallback if Resend is not configured.",
"host": "Host",
"port": "Port",
"username": "Username",
"password": "Password",
"fromEmail": "From Email",
"forceSSL": "Force SSL/TLS (usually for port 465)",
"ignoreCertErrors": "Ignore Certificate Errors (Self-hosted/Dev only)",
"saveSettings": "Save SMTP Settings",
"sending": "Sending...",
"testEmail": "Test Email",
"updateSuccess": "SMTP Settings updated",
"updateFailed": "Failed to update SMTP settings",
"testSuccess": "Test email sent successfully!",
"testFailed": "Failed: {error}"
},
"users": {
"createUser": "Create User",
"addUser": "Add User",
"createUserDescription": "Add a new user to the system.",
"name": "Name",
"email": "Email",
"password": "Password",
"role": "Role",
"createSuccess": "User created successfully",
"createFailed": "Failed to create user",
"deleteSuccess": "User deleted",
"deleteFailed": "Failed to delete",
"roleUpdateSuccess": "User role updated to {role}",
"roleUpdateFailed": "Failed to update role",
"demote": "Demote to User",
"promote": "Promote to Admin",
"confirmDelete": "Are you sure? This action cannot be undone.",
"table": {
"name": "Name",
"email": "Email",
"role": "Role",
"createdAt": "Created At",
"actions": "Actions"
},
"roles": {
"user": "User",
"admin": "Admin"
}
},
"aiTest": {
"title": "AI Provider Testing",
"description": "Test your AI providers for tag generation and semantic search embeddings",
"tagsTestTitle": "Tags Generation Test",
"tagsTestDescription": "Test the AI provider responsible for automatic tag suggestions",
"embeddingsTestTitle": "Embeddings Test",
"embeddingsTestDescription": "Test the AI provider responsible for semantic search embeddings",
"howItWorksTitle": "How Testing Works",
"tagsGenerationTest": "🏷️ Tags Generation Test:",
"tagsStep1": "Sends a sample note to the AI provider",
"tagsStep2": "Requests 3-5 relevant tags based on the content",
"tagsStep3": "Displays the generated tags with confidence scores",
"tagsStep4": "Measures response time",
"embeddingsTestLabel": "🔍 Embeddings Test:",
"embeddingsStep1": "Sends a sample text to the embedding provider",
"embeddingsStep2": "Generates a vector representation (list of numbers)",
"embeddingsStep3": "Displays embedding dimensions and sample values",
"embeddingsStep4": "Verifies the vector is valid and properly formatted",
"tipContent": "You can use different providers for tags and embeddings! For example, use Ollama (free) for tags and OpenAI (best quality) for embeddings to optimize costs and performance.",
"provider": "Provider:",
"model": "Model:",
"testing": "Testing...",
"runTest": "Run Test",
"testPassed": "Test Passed",
"testFailed": "Test Failed",
"testSuccessToast": "{type} Test Successful!",
"testFailedToast": "{type} Test Failed",
"testingType": "Testing {type}...",
"technicalDetails": "Technical details",
"responseTime": "Response time: {time}ms",
"generatedTags": "Generated Tags:",
"embeddingDimensions": "Embedding Dimensions:",
"vectorDimensions": "vector dimensions",
"first5Values": "First 5 values:",
"error": "Error:",
"testError": "Test Error: {error}",
"tipTitle": "Tip:",
"tipDescription": "Use the AI Test Panel to diagnose configuration issues before testing."
},
"sidebar": {
"dashboard": "Dashboard",
"users": "Users",
"aiManagement": "AI Management",
"chat": "AI Chat",
"lab": "The Lab (Ideas)",
"agents": "Agents",
"settings": "Settings"
},
"metrics": {
"vsLastPeriod": "vs last period"
},
"tools": {
"title": "Agent Tools",
"description": "Configure external tools for agent tool-use: web search, web scraping, and API access.",
"searchProvider": "Web Search Provider",
"searxng": "SearXNG (Self-hosted)",
"brave": "Brave Search API",
"both": "Both (SearXNG primary, Brave fallback)",
"searxngUrl": "SearXNG URL",
"braveKey": "Brave Search API Key",
"jinaKey": "Jina Reader API Key",
"jinaKeyOptional": "Optional — works without but with rate limits",
"jinaKeyDescription": "Used for web scraping. Works without a key but with rate limits.",
"saveSettings": "Save Tools Settings",
"updateSuccess": "Tools settings updated successfully",
"updateFailed": "Failed to update tools settings"
}
},
"about": {
"title": "About",
"description": "Information about the application",
"appName": "Memento",
"appDescription": "A powerful note-taking application with AI-powered features",
"version": "Version",
"buildDate": "Build Date",
"platform": "Platform",
"platformWeb": "Web",
"features": {
"title": "Features",
"description": "AI-powered capabilities",
"titleSuggestions": "AI-powered title suggestions",
"semanticSearch": "Semantic search with embeddings",
"paragraphReformulation": "Paragraph reformulation",
"memoryEcho": "Memory Echo daily insights",
"notebookOrganization": "Notebook organization",
"dragDrop": "Drag & drop note management",
"labelSystem": "Label system",
"multipleProviders": "Multiple AI providers (OpenAI, Ollama)"
},
"technology": {
"title": "Technology Stack",
"description": "Built with modern technologies",
"frontend": "Frontend",
"backend": "Backend",
"database": "Database",
"authentication": "Authentication",
"ai": "AI",
"ui": "UI",
"testing": "Testing"
},
"support": {
"title": "Support",
"description": "Get help and feedback",
"documentation": "Documentation",
"reportIssues": "Report Issues",
"feedback": "Feedback"
}
},
"support": {
"title": "Support Memento Development",
"description": "Memento is 100% free and open-source. Your support helps keep it that way.",
"buyMeACoffee": "Buy me a coffee",
"donationDescription": "Make a one-time donation or become a monthly supporter.",
"donateOnKofi": "Donate on Ko-fi",
"kofiDescription": "No platform fees • Instant payouts • Secure",
"sponsorOnGithub": "Sponsor on GitHub",
"sponsorDescription": "Become a monthly sponsor and get recognition.",
"githubDescription": "Recurring support • Public recognition • Developer-focused",
"howSupportHelps": "How Your Support Helps",
"directImpact": "Direct Impact",
"sponsorPerks": "Sponsor Perks",
"transparency": "Transparency",
"transparencyDescription": "I believe in complete transparency. Here's how donations are used:",
"hostingServers": "Hosting & servers:",
"domainSSL": "Domain & SSL:",
"aiApiCosts": "AI API costs:",
"totalExpenses": "Total expenses:",
"otherWaysTitle": "Other Ways to Support",
"starGithub": "Star on GitHub",
"reportBug": "Report a bug",
"contributeCode": "Contribute code",
"shareTwitter": "Share on Twitter"
},
"demoMode": {
"title": "Demo Mode",
"activated": "Demo Mode activated! Memory Echo will now work instantly.",
"deactivated": "Demo Mode disabled. Normal parameters restored.",
"toggleFailed": "Failed to toggle demo mode",
"description": "Speeds up Memory Echo for testing. Connections appear instantly.",
"parametersActive": "Demo parameters active:",
"similarityThreshold": "50% similarity threshold (normally 75%)",
"delayBetweenNotes": "0-day delay between notes (normally 7 days)",
"unlimitedInsights": "Unlimited insights (no frequency limits)",
"createNotesTip": "Create 2+ similar notes and see Memory Echo in action!"
},
"resetPassword": {
"title": "Reset Password",
"description": "Enter your new password below.",
"invalidLinkTitle": "Invalid Link",
"invalidLinkDescription": "This password reset link is invalid or has expired.",
"requestNewLink": "Request new link",
"newPassword": "New Password",
"confirmNewPassword": "Confirm New Password",
"resetting": "Resetting...",
"resetPassword": "Reset Password",
"passwordMismatch": "Passwords don't match",
"success": "Password reset successfully. You can now login.",
"loading": "Loading..."
},
"dataManagement": {
"title": "Data Management",
"toolsDescription": "Tools to maintain your database health",
"exporting": "Exporting...",
"importing": "Importing...",
"deleting": "Deleting...",
"dangerZone": "Danger Zone",
"dangerZoneDescription": "Permanently delete your data",
"indexingComplete": "Indexing complete: {count} notes processed",
"indexingError": "Error during indexing",
"cleanupComplete": "Cleanup complete: {created} created, {deleted} removed",
"cleanupError": "Error during cleanup",
"export": {
"title": "Export All Notes",
"description": "Download all your notes as a JSON file. This includes all content, labels, and metadata.",
"button": "Export Notes",
"success": "Notes exported successfully",
"failed": "Failed to export notes"
},
"import": {
"title": "Import Notes",
"description": "Upload a JSON file to import notes. This will add to your existing notes, not replace them.",
"button": "Import Notes",
"success": "Imported {count} notes",
"failed": "Failed to import notes"
},
"delete": {
"title": "Delete All Notes",
"description": "Permanently delete all your notes. This action cannot be undone.",
"button": "Delete All Notes",
"confirm": "Are you sure? This will permanently delete all your notes.",
"success": "All notes deleted",
"failed": "Failed to delete notes"
},
"indexing": {
"title": "Rebuild Search Index",
"description": "Regenerate embeddings for all notes to improve semantic search.",
"button": "Rebuild Index",
"success": "Indexing complete: {count} notes processed",
"failed": "Error during indexing"
},
"cleanup": {
"title": "Cleanup Orphaned Data",
"description": "Remove labels and connections that reference deleted notes.",
"button": "Cleanup",
"failed": "Error during cleanup"
}
},
"appearance": {
"title": "Appearance",
"description": "Customize how the app looks",
"notesViewDescription": "Choose how notes are shown on home and in notebooks.",
"notesViewLabel": "Notes layout",
"notesViewTabs": "Tabs (OneNote-style)",
"notesViewMasonry": "Cards (grid)"
},
"generalSettings": {
"title": "General Settings",
"description": "General application settings"
},
"toast": {
"saved": "Setting saved",
"saveFailed": "Failed to save setting",
"operationSuccess": "Operation successful",
"operationFailed": "Operation failed",
"openingConnection": "Opening connection...",
"openConnectionFailed": "Failed to open connection",
"thanksFeedback": "Thanks for your feedback!",
"thanksFeedbackImproving": "Thanks! We'll use this to improve.",
"feedbackFailed": "Failed to submit feedback",
"notesFusionSuccess": "Notes merged successfully!"
},
"testPages": {
"titleSuggestions": {
"title": "Test Title Suggestions",
"contentLabel": "Content (need 50+ words):",
"placeholder": "Type at least 50 words here...",
"wordCount": "Word count:",
"status": "Status:",
"analyzing": "Analyzing...",
"idle": "Idle",
"error": "Error:",
"suggestions": "Suggestions ({count}):",
"noSuggestions": "No suggestions yet. Type 50+ words and wait 2 seconds."
}
},
"trash": {
"title": "Trash",
"empty": "The trash is empty",
"emptyDescription": "Deleted notes will appear here",
"restore": "Restore",
"deletePermanently": "Delete Permanently",
"noteTrashed": "Note moved to trash",
"noteRestored": "Note restored",
"notePermanentlyDeleted": "Note permanently deleted",
"emptyTrash": "Empty Trash",
"emptyTrashConfirm": "Permanently delete all notes in the trash?",
"emptyTrashSuccess": "Trash emptied",
"permanentDelete": "Delete Permanently",
"permanentDeleteConfirm": "This note will be permanently deleted. This action cannot be undone."
},
"footer": {
"privacy": "Privacy",
"terms": "Terms",
"openSource": "Open Source Clone"
},
"connection": {
"similarityInfo": "These notes are connected by {similarity}% similarity",
"clickToView": "Click to view note",
"isHelpful": "Is this connection helpful?",
"helpful": "Helpful",
"notHelpful": "Not Helpful",
"memoryEchoDiscovery": "Memory Echo Discovery"
},
"diagnostics": {
"title": "Diagnostics",
"description": "Check your AI provider connection status",
"configuredProvider": "Configured Provider",
"apiStatus": "API Status",
"operational": "Operational",
"errorStatus": "Error",
"checking": "Checking...",
"testDetails": "Test Details:",
"troubleshootingTitle": "Troubleshooting Tips:",
"tip1": "Make sure Ollama is running (ollama serve)",
"tip2": "Check that the model is installed (ollama pull llama3)",
"tip3": "Verify your API key for OpenAI",
"tip4": "Check network connectivity"
},
"batch": {
"organizeWithAI": "Organize with AI",
"organize": "Organize"
},
"common": {
"unknown": "Unknown",
"notAvailable": "N/A",
"loading": "Loading...",
"error": "Error",
"success": "Success",
"confirm": "Confirm",
"cancel": "Cancel",
"close": "Close",
"save": "Save",
"delete": "Delete",
"edit": "Edit",
"add": "Add",
"remove": "Remove",
"search": "Search",
"noResults": "No results",
"required": "Required",
"optional": "Optional"
},
"time": {
"justNow": "just now",
"minutesAgo": "{count}m ago",
"hoursAgo": "{count}h ago",
"daysAgo": "{count}d ago",
"yesterday": "Yesterday",
"today": "Today",
"tomorrow": "Tomorrow"
},
"favorites": {
"title": "Favorites",
"toggleSection": "Toggle pinned notes section",
"noFavorites": "No pinned notes yet",
"pinToFavorite": "Pin a note to add it to favorites"
},
"notebooks": {
"create": "Create notebook",
"allNotebooks": "All Notebooks",
"noNotebooks": "No notebooks yet",
"createFirst": "Create your first notebook"
},
"ui": {
"close": "Close",
"open": "Open",
"expand": "Expand",
"collapse": "Collapse"
},
"mcpSettings": {
"title": "MCP Settings",
"description": "Manage API keys and configure external tools",
"whatIsMcp": {
"title": "What is MCP?",
"description": "The Model Context Protocol (MCP) is an open protocol that enables AI models to securely interact with external tools and data sources. With MCP, you can connect tools like Claude Code, Cursor, or N8N to your Memento instance to read, create, and organize your notes programmatically.",
"learnMore": "Learn more about MCP"
},
"serverStatus": {
"title": "Server Status",
"running": "Running",
"stopped": "Stopped",
"mode": "Mode",
"url": "URL"
},
"apiKeys": {
"title": "API Keys",
"description": "API keys allow external tools to access your notes via MCP. Keep your keys secret.",
"generate": "Generate a new key",
"empty": "No API keys yet. Generate one to get started.",
"active": "Active",
"revoked": "Revoked",
"revoke": "Revoke",
"delete": "Delete",
"createdAt": "Created",
"lastUsed": "Last used",
"never": "Never",
"confirmRevoke": "Are you sure you want to revoke this key? Tools using it will lose access.",
"confirmDelete": "Are you sure you want to permanently delete this key?"
},
"createDialog": {
"title": "Generate API Key",
"description": "Create a new API key to connect external tools to your notes.",
"nameLabel": "Key name",
"namePlaceholder": "e.g. Claude Code, Cursor, N8N",
"generating": "Generating...",
"generate": "Generate",
"successTitle": "API Key Generated",
"successDescription": "Copy your API key now. You won't be able to see it again.",
"copy": "Copy",
"copied": "Copied!",
"done": "Done"
},
"configInstructions": {
"title": "Configuration Instructions",
"description": "Use your API key to configure these tools.",
"claudeCode": {
"title": "Claude Code",
"description": "Add this to your Claude Code MCP configuration file:"
},
"cursor": {
"title": "Cursor",
"description": "Add this to your Cursor MCP settings:"
},
"n8n": {
"title": "N8N",
"description": "Use these credentials in your N8N MCP node:"
}
}
},
"agents": {
"title": "Agents",
"subtitle": "Automate your monitoring and research tasks",
"newAgent": "New Agent",
"myAgents": "My Agents",
"searchPlaceholder": "Search agents...",
"filterAll": "All",
"newBadge": "New",
"noResults": "No agents match your search.",
"noAgents": "No agents",
"noAgentsDescription": "Create your first agent or install a template below to automate your monitoring tasks.",
"types": {
"scraper": "Monitor",
"researcher": "Researcher",
"monitor": "Observer",
"custom": "Custom"
},
"typeDescriptions": {
"scraper": "Scrapes multiple sites and creates a summary",
"researcher": "Searches for information on a topic",
"monitor": "Watches a notebook and analyzes notes",
"custom": "Free agent with your own prompt"
},
"form": {
"agentType": "Agent type",
"name": "Name",
"namePlaceholder": "e.g. Tuesday AI Watch",
"description": "Description (optional)",
"descriptionPlaceholder": "Weekly AI news summary",
"urlsLabel": "URLs to scrape",
"urlsOptional": "(optional)",
"sourceNotebook": "Notebook to watch",
"selectNotebook": "Select a notebook...",
"targetNotebook": "Target notebook",
"inbox": "Inbox",
"instructions": "AI Instructions",
"instructionsPlaceholder": "Describe the agent's behavior...",
"frequency": "Frequency",
"cancel": "Cancel",
"saving": "Saving...",
"save": "Save",
"create": "Create agent",
"editTitle": "Edit agent",
"createTitle": "New agent",
"nameRequired": "Name is required",
"addUrl": "Add URL",
"advancedMode": "Advanced mode",
"instructionsHint": "replaces automatic prompt",
"researchTopic": "Research topic",
"researchTopicPlaceholder": "e.g. Latest advances in quantum computing",
"notifyEmail": "Email notification",
"notifyEmailHint": "Receive an email with the agent's results after each run",
"includeImages": "Include images",
"includeImagesHint": "Extract images from scraped pages and attach them to the generated note"
},
"frequencies": {
"manual": "Manual",
"hourly": "Hourly",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"status": {
"success": "Succeeded",
"failure": "Failed",
"running": "Running",
"pending": "Pending"
},
"actions": {
"edit": "Edit",
"run": "Run",
"delete": "Delete",
"deleteConfirm": "Delete agent \"{name}\"?",
"toggleOn": "Agent enabled",
"toggleOff": "Agent disabled"
},
"toasts": {
"created": "Agent created",
"updated": "Agent updated",
"deleted": "\"{name}\" deleted",
"deleteError": "Error deleting",
"runSuccess": "\"{name}\" executed successfully",
"runError": "Error: {error}",
"runFailed": "Execution failed",
"runGenericError": "Error during execution",
"toggleError": "Error toggling agent",
"installSuccess": "\"{name}\" installed",
"installError": "Error during installation",
"saveError": "Error saving"
},
"templates": {
"title": "Templates",
"install": "Install",
"installing": "Installing...",
"veilleAI": {
"name": "AI Watch",
"description": "Scrapes RSS feeds from 6 AI sites (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) and generates a weekly summary."
},
"veilleTech": {
"name": "Tech Watch",
"description": "Scrapes tech RSS feeds (Hacker News, DEV, Product Hunt) and creates a daily news summary."
},
"veilleDev": {
"name": "Dev Watch",
"description": "Scrapes dev RSS feeds (JavaScript, TypeScript, React) and summarizes new tech and frameworks."
},
"surveillant": {
"name": "Note Observer",
"description": "Analyzes recent notes from a notebook and suggests complements, references and links."
},
"chercheur": {
"name": "Topic Researcher",
"description": "Searches for in-depth information on a topic and creates a structured note with references."
}
},
"runLog": {
"title": "History",
"noHistory": "No executions yet",
"toolTrace": "{count} tool calls",
"step": "Step {num}"
},
"tools": {
"title": "Agent Tools",
"webSearch": "Web Search",
"webScrape": "Web Scrape",
"noteSearch": "Note Search",
"noteRead": "Read Note",
"noteCreate": "Create Note",
"urlFetch": "Fetch URL",
"memorySearch": "Memory",
"configNeeded": "config",
"selected": "{count} selected",
"maxSteps": "Max iterations"
},
"metadata": {
"executions": "{count} exec."
},
"defaultRoles": {
"scraper": "You are a monitoring assistant. Your role is to synthesize articles from different websites into a clear, structured and useful summary. Use section headings, bullet points and concise sentences.",
"researcher": "You are a rigorous researcher. For the requested topic, produce a research note with: context, key points, debates, references.",
"monitor": "You are an analytical assistant. Your role is to analyze provided notes and for each detected theme, suggest: leads to explore, references or articles to read, connections between notes.",
"custom": "You are a helpful assistant."
},
"help": {
"title": "Agents Guide",
"btnLabel": "Help",
"close": "Close",
"whatIsAgent": "What is an agent?",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, web scraping, note reading...) and produces a **note** with its results.\n\nThink of it as a small autonomous worker: you give it a mission, it researches or scrapes information, then writes a structured note you can read later.\n\nAgents respond in your language (French or English) based on your settings.",
"howToUse": "How to use an agent?",
"howToUseContent": "1. Click **\"New Agent\"** (or start from a **Template** at the bottom of the page)\n2. Choose an **agent type** (Researcher, Monitor, Observer, Custom)\n3. Give it a **name** and fill in the type-specific fields\n4. Optionally pick a **target notebook** where results will be saved\n5. Choose a **frequency** (Manual = you trigger it yourself)\n6. Click **Create**, then hit the **Run** button on the agent card\n7. Once finished, a new note appears in your target notebook",
"types": "Agent types",
"typesContent": "### Researcher\nSearches the web on a **topic you define** and creates a structured note with sources and references.\n\n- **Fields:** name, research topic (e.g. \"Latest advances in quantum computing\")\n- **Default tools:** web search, web scraping, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor (Scraper)\nScrapes a **list of URLs** you specify and produces a summary of their content.\n\n- **Fields:** name, list of URLs (websites or RSS feeds)\n- **Default tools:** web scraping, note creation\n- **RSS tip:** Use RSS feed URLs (e.g. `site.com/feed`) to automatically scrape individual articles instead of listing pages\n- **Use case:** weekly tech watch, competitor monitoring, blog roundups\n\n### Observer (Notebook Monitor)\nReads notes from a **notebook you select** and produces analysis, connections, and suggestions.\n\n- **Fields:** name, source notebook (the one to analyze)\n- **Default tools:** note search, note read, note creation\n- **Use case:** find connections between your notes, get reading suggestions, detect recurring themes\n\n### Custom\nA blank canvas: you write your own **prompt** and pick your own **tools**.\n\n- **Fields:** name, description, custom instructions (in Advanced mode)\n- **No default tools** — you choose exactly what the agent needs\n- **Use case:** anything creative or specific that doesn't fit the other types",
"advanced": "Advanced mode (AI Instructions, Max iterations)",
"advancedContent": "Click **\"Advanced mode\"** at the bottom of the form to access additional settings.\n\n### AI Instructions\n\nThis field lets you **replace the default system prompt** for the agent. If left empty, the agent uses an automatic prompt adapted to its type.\n\n**Why use it?** You want to control exactly how the agent behaves. For example:\n- \"Write the summary in English, even if sources are in French\"\n- \"Structure the note with sections: Context, Key Points, Personal Opinion\"\n- \"Ignore articles older than 30 days and focus on recent news\"\n- \"For each detected theme, suggest 3 follow-up leads with links\"\n\n> **Note:** Your instructions replace the defaults, they don't add to them.\n\n### Max iterations\n\nThis is the **maximum number of cycles** the agent can perform. One cycle = the agent thinks, calls a tool, reads the result, then decides the next action.\n\n- **3-5 iterations:** for simple tasks (scraping a single page)\n- **10 iterations (default):** good balance for most cases\n- **15-25 iterations:** for deep research where the agent needs to explore multiple leads\n\n> **Warning:** More iterations = more time and potentially higher API costs.",
"tools": "Available tools (full details)",
"toolsContent": "When advanced mode is enabled, you can choose exactly which tools the agent can use.\n\n### Web Search\nAllows the agent to **search the internet** via SearXNG or Brave Search.\n\n- **What it does:** The agent formulates a query, gets search results, and can then scrape the most relevant pages.\n- **When to enable:** When the agent needs to find information on a topic (Researcher or Custom type).\n- **Configuration required:** SearXNG (with JSON format enabled) or a Brave Search API key. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent searches \"React Server Components best practices 2025\", gets 10 results, then scrapes the top 3.\n\n### Web Scrape\nAllows the agent to **extract text content from a web page** given its URL.\n\n- **What it does:** The agent visits a URL and retrieves the structured text (headings, paragraphs, lists). Ads, menus and footers are typically filtered out.\n- **RSS/Atom support:** If the URL is an RSS feed, the tool automatically detects it, parses the feed and scrapes the 5 latest articles individually. Use RSS feed URLs for much richer content than listing pages.\n- **When to enable:** For the Monitor type (mandatory), or any agent that needs to read web pages.\n- **Configuration:** Works out of the box, but a **Jina Reader API key** improves quality and removes rate limits. Configurable in **Admin > Agent Tools**.\n- **Example:** The agent scrapes the RSS feed at `techcrunch.com/feed/` and gets the 5 latest full articles.\n\n### Note Search\nAllows the agent to **search your existing notes**.\n\n- **What it does:** The agent performs a text search across all your notes (or a specific notebook).\n- **When to enable:** For Observer-type agents, or any agent that needs to cross-reference information with your notes.\n- **Configuration:** None — works immediately.\n- **Example:** The agent searches all notes containing \"machine learning\" to see what you've already written on the topic.\n\n### Read Note\nAllows the agent to **read the full content of a specific note**.\n\n- **What it does:** After finding a note (via Note Search), the agent can read its entire content to analyze or use it.\n- **When to enable:** As a companion to Note Search. Enable both together so the agent can search AND read.\n- **Configuration:** None.\n- **Example:** The agent finds 5 notes about \"productivity\", reads them all, and writes a synthesis.\n\n### Create Note\nAllows the agent to **write a new note** in your target notebook.\n\n- **What it does:** The agent creates a note with a title and content. This is how results end up in your notebooks.\n- **When to enable:** Almost always — without this tool, the agent cannot save its results. **Leave it enabled by default.**\n- **Configuration:** None.\n- **Example:** The agent creates a note \"Tech Watch - Week 16\" with a summary of 5 articles.\n\n### Fetch URL\nAllows the agent to **download the raw content of a URL** (HTML, JSON, text...).\n\n- **What it does:** Unlike scraping which extracts clean text, Fetch URL retrieves raw content. Useful for APIs, JSON files, or non-standard pages.\n- **When to enable:** When the agent needs to query REST APIs, read RSS feeds, or access raw data.\n- **Configuration:** None.\n- **Example:** The agent queries the GitHub API to list the latest commits of a project.\n\n### Memory\nAllows the agent to **access its previous execution history**.\n\n- **What it does:** The agent can search through results from past runs. This lets it compare, track changes, or avoid repeating the same information.\n- **When to enable:** For agents that run regularly and need to maintain continuity between executions.\n- **Configuration:** None.\n- **Example:** The agent compares this week's news with last week's and highlights what's new.",
"frequency": "Frequency & scheduling",
"frequencyContent": "| Frequency | Behavior\n|-----------|----------\n| **Manual** | You click \"Run\" yourself — no automatic scheduling\n| **Hourly** | Runs every hour\n| **Daily** | Runs once per day\n| **Weekly** | Runs once per week\n| **Monthly** | Runs once per month\n\n> **Tip:** Start with \"Manual\" to test your agent, then switch to an automatic frequency once you're satisfied with the results.",
"targetNotebook": "Target notebook",
"targetNotebookContent": "When an agent finishes its task, it **creates a note**. The **target notebook** determines where that note goes:\n\n- **Inbox** (default) — the note goes to your general notes\n- **Specific notebook** — choose a notebook to keep agent results organized\n\n> **Tip:** Create a dedicated notebook like \"Agent Reports\" to keep all automated content in one place.",
"templates": "Templates",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates:\n\n- **AI Watch** — weekly roundup via RSS feeds from 6 AI sites (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben)\n- **Tech Watch** — daily summary via RSS feeds from Hacker News, DEV Community, Product Hunt\n- **Dev Watch** — developer news via RSS feeds from DEV (JavaScript, TypeScript, React)\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nTemplates come with the right tools pre-configured. You can customize them after installation.",
"tips": "Tips & troubleshooting",
"tipsContent": "- **Start with a template** and customize it — it's the fastest way to get a working agent\n- **Test with \"Manual\"** frequency before enabling automatic scheduling\n- **Use RSS feed URLs** instead of listing pages for much richer content (e.g. `techcrunch.com/feed/` instead of `techcrunch.com/category/ai/`)\n- **A \"Researcher\" agent requires a web search provider** — configure SearXNG (JSON format) or Brave Search in **Admin > Agent Tools**\n- **If an agent fails**, click on its card then **History** to see the execution log and tool traces\n- **The \"Enabled/Disabled\" toggle** lets you pause an agent without deleting it\n- **Web scraping quality** improves with a Jina Reader API key (optional, in Admin > Agent Tools)\n- **Combine \"Note Search\" + \"Read Note\"** so the agent can find AND analyze your notes' content\n- **Enable \"Memory\"** if your agent runs regularly — it will avoid repeating the same information across runs\n- **Agents respond in your language** — switch between French and English in settings",
"tooltips": {
"agentType": "Choose the type of task the agent will perform. Each type has different capabilities and fields.",
"researchTopic": "The subject the agent will research on the web. Be specific for better results.",
"description": "A short description of what this agent does. Helps you remember its purpose.",
"urls": "List of URLs to scrape. Supports RSS feeds — use feed URLs for richer content (e.g. site.com/feed).",
"sourceNotebook": "The notebook the agent will analyze. It reads notes from this notebook to find connections and themes.",
"targetNotebook": "Where the agent's result note will be saved. Choose Inbox or a specific notebook.",
"frequency": "How often the agent runs automatically. Start with Manual to test.",
"instructions": "Custom instructions that replace the default AI prompt. Leave empty to use the automatic prompt.",
"tools": "Select which tools the agent can use. Each tool gives the agent a specific capability.",
"maxSteps": "Maximum number of reasoning cycles. More steps = deeper analysis but takes longer."
}
}
},
"chat": {
"title": "AI Chat",
"subtitle": "Chat with your notes and AI agents",
"newConversation": "New conversation",
"noHistory": "No history",
"untitled": "Untitled conversation",
"deleteConfirm": "Delete this conversation?",
"yes": "Yes",
"placeholder": "Send a message to the assistant...",
"allNotebooks": "All notebooks",
"inAllNotebooks": "In all notebooks",
"active": "ACTIVE",
"disclaimer": "AI can make mistakes. Verify important information.",
"assistantError": "Assistant error",
"loadError": "Error loading conversation",
"createError": "Error creating conversation",
"deleteError": "Error deleting",
"renamed": "Conversation renamed",
"renameError": "Error renaming",
"welcome": "I'm here to help you synthesize your notes, generate new ideas, or discuss your notebooks.",
"searching": "Searching...",
"noNotesFoundForContext": "No relevant notes found for this question. Answer with your general knowledge.",
"webSearch": "Web Search"
},
"labHeader": {
"title": "The Lab",
"live": "Live",
"currentProject": "Current Project",
"choose": "Choose...",
"yourSpaces": "Your Spaces",
"updated": "Updated",
"newSpace": "New Thought Space",
"new": "New",
"renamed": "Space renamed",
"renameError": "Error renaming",
"created": "New space created",
"createFailed": "Creation failed",
"deleteSpace": "Delete space",
"deleted": "Space deleted",
"deleteError": "Error deleting"
}
}