4 Commits

Author SHA1 Message Date
Antigravity
a7b16870a4 fix(ui): sélection groupée dans la boîte de réception
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 7m17s
CI / Deploy production (on server) (push) Successful in 24s
Permet de cocher plusieurs notes, les déplacer vers un carnet ou les envoyer à la corbeille, et rend la carte mentale plus lisible.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 19:40:10 +00:00
Antigravity
4fc5e3ce04 fix(ui): tarifs publics unifiés et prix annuel lisible
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 7m5s
CI / Deploy production (on server) (push) Successful in 24s
La page tarifs reprend la barre du site public. En annuel, Pro affiche
8,25 € par mois (99 € l’année), plus le 99 € comme gros chiffre.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 17:43:05 +00:00
Antigravity
dcd7f38c11 fix(ui): derniers textes trop techniques de la revue
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 7m0s
CI / Deploy production (on server) (push) Successful in 24s
Les thèmes, notes proches, index et suppression de compte parlent comme un utilisateur, plus comme un outil interne.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-30 21:57:45 +00:00
Antigravity
5f9b8a9a09 fix(ui): thème des réglages et derniers textes de la revue
All checks were successful
CI / Lint, Unit Tests & Build (push) Successful in 7m7s
CI / Deploy production (on server) (push) Successful in 24s
Les boutons des pages Agents, MCP, Données, Intégrations et Généraux suivent la couleur choisie. Les libellés encore techniques (recherche par le sens, notes proches, connexion unique) sont en langage courant.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-30 21:42:28 +00:00
41 changed files with 2162 additions and 1571 deletions

File diff suppressed because one or more lines are too long

View File

@@ -246,7 +246,7 @@ export function AgentsPageClient({
</button>
<button
onClick={handleCreate}
className="px-6 py-2.5 bg-foreground text-background text-sm font-medium rounded-xl hover:opacity-90 transition-all flex items-center gap-3 shadow-lg shadow-foreground/10"
className="px-6 py-2.5 bg-brand-accent text-white text-sm font-medium rounded-xl hover:opacity-90 transition-all flex items-center gap-3 shadow-lg shadow-brand-accent/10"
>
<Plus className="w-4 h-4" />
{t('agents.newAgent')}
@@ -268,7 +268,7 @@ export function AgentsPageClient({
{typeFilter === opt.value && (
<motion.div
layoutId="activeAgentTag"
className="absolute bottom-0 left-0 right-0 h-0.5 bg-foreground"
className="absolute bottom-0 left-0 right-0 h-0.5 bg-brand-accent"
/>
)}
</button>

View File

@@ -167,7 +167,7 @@ export default function DataSettingsPage() {
loadingText: t('dataManagement.exporting'),
buttonText: t('dataManagement.export.button'),
onAction: handleExport,
btnClass: 'bg-ink text-paper shadow-xl shadow-ink/20 hover:scale-[1.02] active:scale-95',
btnClass: 'bg-brand-accent text-white shadow-xl shadow-brand-accent/20 hover:scale-[1.02] active:scale-95',
},
{
icon: FolderArchive,
@@ -179,7 +179,7 @@ export default function DataSettingsPage() {
loadingText: t('dataManagement.zipExporting'),
buttonText: t('dataManagement.zipExport.button'),
onAction: handleZipExport,
btnClass: 'bg-ink text-paper shadow-xl shadow-ink/20 hover:scale-[1.02] active:scale-95',
btnClass: 'bg-brand-accent text-white shadow-xl shadow-brand-accent/20 hover:scale-[1.02] active:scale-95',
},
{
icon: Upload,

View File

@@ -163,7 +163,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
checked={emailNotifications}
onChange={(e) => handleEmailNotificationsChange(e.target.checked)}
/>
<div className="w-11 h-6 bg-gray-200 dark:bg-white/10 rounded-full peer peer-checked:after:translate-x-[20px] peer-checked:after:border-white after:content-[''] after:absolute after:top-[4px] after:left-[4px] after:bg-white after:rounded-full after:h-4 after:w-4 after:transition-all duration-300 ease-in-out peer-checked:bg-ink" />
<div className="w-11 h-6 bg-gray-200 dark:bg-white/10 rounded-full peer peer-checked:after:translate-x-[20px] peer-checked:after:border-white after:content-[''] after:absolute after:top-[4px] after:left-[4px] after:bg-white after:rounded-full after:h-4 after:w-4 after:transition-all duration-300 ease-in-out peer-checked:bg-brand-accent" />
</label>
</div>
@@ -179,7 +179,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
checked={desktopNotifications}
onChange={(e) => handleDesktopNotificationsChange(e.target.checked)}
/>
<div className="w-11 h-6 bg-gray-200 dark:bg-white/10 rounded-full peer peer-checked:after:translate-x-[20px] peer-checked:after:border-white after:content-[''] after:absolute after:top-[4px] after:left-[4px] after:bg-white after:rounded-full after:h-4 after:w-4 after:transition-all duration-300 ease-in-out peer-checked:bg-ink" />
<div className="w-11 h-6 bg-gray-200 dark:bg-white/10 rounded-full peer peer-checked:after:translate-x-[20px] peer-checked:after:border-white after:content-[''] after:absolute after:top-[4px] after:left-[4px] after:bg-white after:rounded-full after:h-4 after:w-4 after:transition-all duration-300 ease-in-out peer-checked:bg-brand-accent" />
</label>
</div>
@@ -195,7 +195,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
checked={autoSave}
onChange={(e) => handleAutoSaveChange(e.target.checked)}
/>
<div className="w-11 h-6 bg-gray-200 dark:bg-white/10 rounded-full peer peer-checked:after:translate-x-[20px] peer-checked:after:border-white after:content-[''] after:absolute after:top-[4px] after:left-[4px] after:bg-white after:rounded-full after:h-4 after:w-4 after:transition-all duration-300 ease-in-out peer-checked:bg-ink" />
<div className="w-11 h-6 bg-gray-200 dark:bg-white/10 rounded-full peer peer-checked:after:translate-x-[20px] peer-checked:after:border-white after:content-[''] after:absolute after:top-[4px] after:left-[4px] after:bg-white after:rounded-full after:h-4 after:w-4 after:transition-all duration-300 ease-in-out peer-checked:bg-brand-accent" />
</label>
</div>
</div>
@@ -298,7 +298,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
) : (
<button
onClick={() => requestAiConsent()}
className="flex-1 px-5 py-3.5 bg-ink text-paper border border-border rounded-xl text-xs font-bold uppercase tracking-[0.25em] hover:scale-[1.01] active:scale-95 transition-all duration-300 shadow-sm"
className="flex-1 px-5 py-3.5 bg-brand-accent text-white border border-border rounded-xl text-xs font-bold uppercase tracking-[0.25em] hover:scale-[1.01] active:scale-95 transition-all duration-300 shadow-sm"
>
{t('consent.ai.grantButton')}
</button>

View File

@@ -215,7 +215,7 @@ export default function IntegrationsPage() {
/>
<button
onClick={handleGmailConnect}
className="px-4 py-2 text-sm font-semibold bg-ink text-paper rounded-xl hover:bg-ink/80 transition-all flex items-center gap-2"
className="px-4 py-2 text-sm font-semibold bg-brand-accent text-white rounded-xl hover:opacity-90 transition-all flex items-center gap-2"
>
<Mail size={14} />
{t('integrations.gmail.connect')}
@@ -277,7 +277,7 @@ export default function IntegrationsPage() {
/>
<button
onClick={handleCalConnect}
className="px-4 py-2 text-sm font-semibold bg-ink text-paper rounded-xl hover:bg-ink/80 transition-all flex items-center gap-2"
className="px-4 py-2 text-sm font-semibold bg-brand-accent text-white rounded-xl hover:opacity-90 transition-all flex items-center gap-2"
>
<CalendarDays size={14} />
{t('integrations.connectCalendar')}
@@ -367,7 +367,7 @@ export default function IntegrationsPage() {
<button
onClick={handleRwConnect}
disabled={!rwToken.trim() || rwConnecting}
className="px-4 py-2 text-sm font-semibold bg-ink text-paper rounded-xl hover:bg-ink/80 transition-all disabled:opacity-50 flex items-center gap-2"
className="px-4 py-2 text-sm font-semibold bg-brand-accent text-white rounded-xl hover:opacity-90 transition-all disabled:opacity-50 flex items-center gap-2"
>
{rwConnecting ? <Loader2 size={14} className="animate-spin" /> : null}
{t('integrations.connect')}

View File

@@ -6,11 +6,20 @@ import { useState } from 'react'
import { useQuery } from '@tanstack/react-query'
import { useLanguage } from '@/lib/i18n'
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants'
import { PublicSiteChrome } from '@/components/public-site-chrome'
import {
DEFAULT_PRICES,
annualDiscountPercent,
} from '@/lib/billing/price-catalog'
export default function PricingPage() {
const { t } = useLanguage()
const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly')
const trialDays = SUBSCRIPTION_TRIAL_DAYS
const annualSavePercent = annualDiscountPercent(
DEFAULT_PRICES.PRO.month.amount,
DEFAULT_PRICES.PRO.year.amount,
)
const { data: byokCatalog } = useQuery({
queryKey: ['public', 'byok-catalog'],
queryFn: async () => {
@@ -48,51 +57,28 @@ export default function PricingPage() {
]
return (
<main className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white">
<nav className="sticky top-0 z-[100] px-5 sm:px-8 py-4 flex items-center justify-between bg-[#0B0A09]/70 backdrop-blur-xl border-b border-white/[0.06]">
<Link href="/" className="flex items-center gap-2.5 group">
<div className="w-9 h-9 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-lg">
<span className="font-serif text-xl font-bold leading-none">M</span>
</div>
<span className="font-serif text-xl font-medium tracking-tight">Memento</span>
</Link>
<div className="flex items-center gap-2 sm:gap-3">
<Link href="/login" className="text-[13px] text-white/75 hover:text-white transition-colors px-2">
{t('landing.nav.login')}
</Link>
<Link
href="/register"
className="inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-[#F4F1EA] text-[#0B0A09] text-[13px] font-semibold hover:bg-white transition-colors"
>
{t('landing.nav.cta')}
</Link>
</div>
</nav>
<section className="px-5 sm:px-8 py-28">
<PublicSiteChrome currentPage="pricing">
<section className="px-5 sm:px-8 py-20 sm:py-28">
<div className="max-w-6xl mx-auto">
<div className="text-center mb-12">
<span className="text-[11px] font-bold uppercase tracking-[0.3em] text-[#D4A373] mb-4 block">
{t('landing.pricing.label')}
</span>
<h1 className="font-serif text-3xl sm:text-5xl tracking-tight mb-4">{t('landing.pricing.title')}</h1>
<p className="text-white/70 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/10 bg-white/[0.03]">
<p className="text-white/80 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/15 bg-white/[0.04]">
<button
type="button"
onClick={() => setBillingInterval('monthly')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`}
className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
>
{t('landing.pricing.monthly')}
</button>
<button
type="button"
onClick={() => setBillingInterval('annual')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`}
className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
>
{t('landing.pricing.annual')}
<span className="absolute -top-3 -right-1 text-[10px] text-[#D4A373] whitespace-nowrap">
{t('landing.pricing.savePercent')}
<span className="absolute -top-3 -right-1 text-[11px] text-[#E8C39A] whitespace-nowrap">
{t('landing.pricing.savePercent', { percent: annualSavePercent })}
</span>
</button>
</div>
@@ -103,32 +89,32 @@ export default function PricingPage() {
key={plan.key}
className={`rounded-2xl border p-6 flex flex-col ${
plan.popular
? 'border-[#D4A373]/50 bg-[#D4A373]/10'
: 'border-white/[0.08] bg-white/[0.02]'
? 'border-[#D4A373]/60 bg-[#D4A373]/12'
: 'border-white/[0.12] bg-white/[0.04]'
}`}
>
{plan.popular && (
<span className="text-[10px] font-bold uppercase tracking-widest text-[#D4A373] mb-3">
<span className="text-[11px] font-bold uppercase tracking-widest text-[#E8C39A] mb-3">
{t('landing.pricing.popular')}
</span>
)}
<h2 className="text-[13px] font-medium tracking-wide text-white/80 mb-2">
<h2 className="text-[14px] font-medium tracking-wide text-[#F4F1EA] mb-2">
{t(`landing.pricing.${plan.key}.name`)}
</h2>
<div className="flex items-baseline gap-1 mb-2">
<span className="text-3xl font-serif">{plan.price}</span>
{plan.period && <span className="text-sm text-white/70">{plan.period}</span>}
{plan.period && <span className="text-sm text-white/80">{plan.period}</span>}
</div>
{plan.hasTrial && (
<p className="text-[11px] font-semibold text-[#D4A373] mb-3">
<p className="text-[12px] font-semibold text-[#E8C39A] mb-3">
{t('landing.pricing.trialBadge', { days: trialDays })}
</p>
)}
<p className="text-sm text-white/70 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p>
<p className="text-sm text-white/80 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p>
<ul className="space-y-2.5 mb-8 flex-1">
{plan.hasTrial && (
<li className="flex gap-2 text-xs text-[#D4A373]/90">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" />
<li className="flex gap-2 text-xs text-[#E8C39A]">
<Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{t('landing.pricing.trialFeature', { days: trialDays })}
</li>
)}
@@ -136,8 +122,8 @@ export default function PricingPage() {
const feat = t(`landing.pricing.${plan.key}.feature${j}`, { count: providerCount })
if (!feat || feat.startsWith('landing.')) return null
return (
<li key={j} className="flex gap-2 text-sm text-white/80">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" />
<li key={j} className="flex gap-2 text-sm text-[#F4F1EA]/90">
<Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{feat}
</li>
)
@@ -148,7 +134,7 @@ export default function PricingPage() {
className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${
plan.popular
? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white'
: 'bg-white/10 text-white hover:bg-white/15'
: 'bg-white/15 text-white hover:bg-white/20'
}`}
>
{plan.hasTrial
@@ -160,6 +146,6 @@ export default function PricingPage() {
</div>
</div>
</section>
</main>
</PublicSiteChrome>
)
}

View File

@@ -64,6 +64,57 @@ export async function restoreNote(id: string) {
}
}
const MAX_BULK_NOTES = 200
function uniqueNoteIds(ids: string[]) {
return [...new Set(ids.filter((id) => typeof id === 'string' && id.length > 0))].slice(0, MAX_BULK_NOTES)
}
export async function bulkTrashNotes(ids: string[], options?: { skipRevalidation?: boolean }) {
const session = await auth()
if (!session?.user?.id) throw new Error('Unauthorized')
const unique = uniqueNoteIds(ids)
if (unique.length === 0) return { success: true, count: 0 }
try {
const result = await prisma.note.updateMany({
where: { id: { in: unique }, userId: session.user.id, trashedAt: null },
data: { trashedAt: new Date() },
})
if (!options?.skipRevalidation) {
revalidatePath('/home')
}
return { success: true, count: result.count }
} catch (error) {
console.error('Error bulk-trashing notes:', error)
throw new Error('Failed to trash notes')
}
}
export async function restoreNotes(ids: string[], options?: { skipRevalidation?: boolean }) {
const session = await auth()
if (!session?.user?.id) throw new Error('Unauthorized')
const unique = uniqueNoteIds(ids)
if (unique.length === 0) return { success: true, count: 0 }
try {
const result = await prisma.note.updateMany({
where: { id: { in: unique }, userId: session.user.id, trashedAt: { not: null } },
data: { trashedAt: null },
})
if (!options?.skipRevalidation) {
revalidatePath('/home')
revalidatePath('/trash')
}
return { success: true, count: result.count }
} catch (error) {
console.error('Error restoring notes:', error)
throw new Error('Failed to restore notes')
}
}
export async function getTrashedNotes() {
const session = await auth()
if (!session?.user?.id) return []

View File

@@ -721,6 +721,41 @@ export async function updateNote(id: string, data: {
}
}
const MAX_BULK_MOVE = 200
export async function bulkMoveNotes(
ids: string[],
notebookId: string,
options?: { skipRevalidation?: boolean },
) {
const session = await auth()
if (!session?.user?.id) throw new Error('Unauthorized')
const unique = [...new Set(ids.filter((id) => typeof id === 'string' && id.length > 0))].slice(0, MAX_BULK_MOVE)
if (unique.length === 0) return { success: true, count: 0 }
const notebook = await prisma.notebook.findFirst({
where: { id: notebookId, userId: session.user.id, trashedAt: null },
select: { id: true },
})
if (!notebook) throw new Error('Notebook not found')
try {
const result = await prisma.note.updateMany({
where: { id: { in: unique }, userId: session.user.id, trashedAt: null },
data: { notebookId },
})
if (!options?.skipRevalidation) {
revalidatePath('/home')
revalidatePath(`/notebook/${notebookId}`)
}
return { success: true, count: result.count }
} catch (error) {
console.error('Error bulk-moving notes:', error)
throw new Error('Failed to move notes')
}
}
// Toggle functions
export async function togglePin(
id: string,
@@ -1169,6 +1204,8 @@ import {
deleteNote as _deleteNote,
trashNote as _trashNote,
restoreNote as _restoreNote,
bulkTrashNotes as _bulkTrashNotes,
restoreNotes as _restoreNotes,
getTrashedNotes as _getTrashedNotes,
permanentDeleteNote as _permanentDeleteNote,
emptyTrash as _emptyTrash,
@@ -1202,6 +1239,8 @@ export async function enableNoteHistory(...args: Parameters<typeof _enableNoteHi
export async function deleteNote(...args: Parameters<typeof _deleteNote>) { return _deleteNote(...args) }
export async function trashNote(...args: Parameters<typeof _trashNote>) { return _trashNote(...args) }
export async function restoreNote(...args: Parameters<typeof _restoreNote>) { return _restoreNote(...args) }
export async function bulkTrashNotes(...args: Parameters<typeof _bulkTrashNotes>) { return _bulkTrashNotes(...args) }
export async function restoreNotes(...args: Parameters<typeof _restoreNotes>) { return _restoreNotes(...args) }
export async function getTrashedNotes(...args: Parameters<typeof _getTrashedNotes>) { return _getTrashedNotes(...args) }
export async function permanentDeleteNote(...args: Parameters<typeof _permanentDeleteNote>) { return _permanentDeleteNote(...args) }
export async function emptyTrash(...args: Parameters<typeof _emptyTrash>) { return _emptyTrash(...args) }

View File

@@ -176,7 +176,7 @@ export function AgentTemplates({ onInstalled, existingAgentNames }: AgentTemplat
}}
className={`px-3 py-1.5 rounded-full text-xs font-semibold transition-all border ${
activeCategory === cat.id
? 'bg-ink text-paper border-ink'
? 'bg-brand-accent text-white border-brand-accent'
: 'bg-paper text-muted-ink border-border/40 hover:border-ink/30'
}`}
>

View File

@@ -16,10 +16,14 @@ export function ConfirmDeleteNoteDialog({
open,
onOpenChange,
onConfirm,
title,
description,
}: {
open: boolean
onOpenChange: (open: boolean) => void
onConfirm: () => void | Promise<void>
title?: string
description?: string
}) {
const { t } = useLanguage()
@@ -27,8 +31,8 @@ export function ConfirmDeleteNoteDialog({
<AlertDialog open={open} onOpenChange={onOpenChange}>
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>{t('notes.confirmDeleteTitle')}</AlertDialogTitle>
<AlertDialogDescription>{t('notes.confirmDelete')}</AlertDialogDescription>
<AlertDialogTitle>{title ?? t('notes.confirmDeleteTitle')}</AlertDialogTitle>
<AlertDialogDescription>{description ?? t('notes.confirmDelete')}</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter>
<AlertDialogCancel>{t('common.cancel')}</AlertDialogCancel>

View File

@@ -18,9 +18,18 @@ interface BridgeNote {
note?: { id: string; title: string | null }
}
const CLUSTER_COLORS = ['#F87171', '#60A5FA', '#34D399', '#FBBF24', '#A78BFA', '#F472B6', '#2DD4BF']
const CLUSTER_COLORS = ['#B91C1C', '#1D4ED8', '#047857', '#B45309', '#6D28D9', '#BE185D', '#0F766E']
const EASE = [0.16, 1, 0.3, 1] as const
function clusterInk(hex: string): string {
const n = hex.replace('#', '')
const r = parseInt(n.slice(0, 2), 16)
const g = parseInt(n.slice(2, 4), 16)
const b = parseInt(n.slice(4, 6), 16)
const y = (0.2126 * r + 0.7152 * g + 0.0722 * b) / 255
return y > 0.45 ? '#1C1917' : '#FAFAF9'
}
function clusterPoint(index: number, count: number): { x: number; y: number } {
if (count === 1) return { x: 50, y: 42 }
const angle = -Math.PI / 2 + (index * 2 * Math.PI) / count
@@ -69,8 +78,8 @@ export function DashboardMindOrbit({
className="w-full h-[180px] rounded-2xl border border-dashed border-border/35 bg-white/50 dark:bg-zinc-900/50 flex flex-col items-center justify-center gap-2 p-6 text-center hover:border-brand-accent/30 transition-all"
>
<Layers size={22} className="text-concrete/35" />
<p className="text-xs text-concrete italic max-w-[220px]">{t('homeDashboard.mindMapEmpty')}</p>
<span className="text-[9px] font-mono uppercase font-bold text-brand-accent">{t('homeDashboard.mindMapOpen')}</span>
<p className="text-[13px] text-ink/80 dark:text-dark-ink/80 italic max-w-[220px]">{t('homeDashboard.mindMapEmpty')}</p>
<span className="text-[13px] font-semibold uppercase tracking-wider text-brand-accent">{t('homeDashboard.mindMapOpen')}</span>
</button>
)
}
@@ -85,7 +94,7 @@ export function DashboardMindOrbit({
<button
type="button"
onClick={onOpenInsights}
className="inline-flex items-center gap-0.5 text-[8px] font-mono uppercase font-bold text-brand-accent hover:underline"
className="inline-flex items-center gap-0.5 text-[13px] font-semibold uppercase tracking-wider text-brand-accent hover:underline"
>
{t('homeDashboard.fullMap')}
<ArrowUpRight size={10} />
@@ -108,11 +117,11 @@ export function DashboardMindOrbit({
d={`M 50 44 L ${point.x} ${point.y}`}
fill="none"
stroke={color}
strokeWidth={0.7}
strokeWidth={1.2}
strokeLinecap="round"
vectorEffect="non-scaling-stroke"
initial={reduced ? false : { pathLength: 0, opacity: 0 }}
animate={{ pathLength: 1, opacity: 0.4 }}
animate={{ pathLength: 1, opacity: 0.85 }}
transition={{ duration: reduced ? 0 : 0.45, delay: reduced ? 0 : 0.12 + idx * 0.05, ease: EASE }}
/>
)
@@ -149,21 +158,22 @@ export function DashboardMindOrbit({
transition={{ duration: reduced ? 0 : 0.38, delay: reduced ? 0 : 0.18 + idx * 0.05, ease: EASE }}
>
<div
className="rounded-full border-2 flex items-center justify-center font-mono font-bold text-white shadow-sm group-hover:shadow-md transition-shadow"
className="rounded-full border-2 flex items-center justify-center font-semibold shadow-sm group-hover:shadow-md transition-shadow"
style={{
width: size,
height: size,
backgroundColor: `${color}cc`,
borderColor: `${color}40`,
fontSize: Math.max(9, size * 0.22),
backgroundColor: color,
borderColor: color,
color: clusterInk(color),
fontSize: Math.max(13, size * 0.28),
}}
>
{cluster.noteIds.length}
</div>
<span className="text-[9px] font-medium text-ink/80 dark:text-dark-ink/80 text-center line-clamp-2 leading-snug max-w-[128px] group-hover:text-brand-accent transition-colors">
<span className="text-[13px] font-medium text-ink dark:text-dark-ink text-center line-clamp-2 leading-snug max-w-[128px] group-hover:text-brand-accent transition-colors">
{label}
</span>
<span className="pointer-events-none absolute top-full mt-1 max-w-[200px] px-2 py-1 rounded-md bg-ink text-white text-[10px] leading-snug text-center opacity-0 group-hover:opacity-100 transition-opacity shadow-lg z-20">
<span className="pointer-events-none absolute top-full mt-1 max-w-[200px] px-2 py-1 rounded-md bg-ink text-white text-[13px] leading-snug text-center opacity-0 group-hover:opacity-100 transition-opacity shadow-lg z-20">
{label}
</span>
</motion.button>
@@ -182,12 +192,12 @@ export function DashboardMindOrbit({
>
<Zap size={11} className="text-brand-accent shrink-0" />
<div className="min-w-0 flex-1">
<p className="text-[10px] font-semibold text-ink dark:text-dark-ink truncate group-hover:text-brand-accent transition-colors">
<p className="text-[13px] font-semibold text-ink dark:text-dark-ink truncate group-hover:text-brand-accent transition-colors">
{topBridge.note.title || t('homeDashboard.untitled')}
</p>
<p className="text-[8px] font-mono uppercase text-concrete">{t('homeDashboard.bridgeNote')}</p>
<p className="text-[12px] text-ink/70 dark:text-dark-ink/70">{t('homeDashboard.bridgeNote')}</p>
</div>
<span className="text-[8px] font-mono font-bold text-brand-accent bg-brand-accent/10 px-1.5 py-0.5 rounded-full shrink-0">
<span className="text-[12px] font-semibold text-brand-accent bg-brand-accent/10 px-1.5 py-0.5 rounded-full shrink-0">
{Math.round(topBridge.bridgeScore * 100)}%
</span>
</motion.button>

View File

@@ -4,7 +4,7 @@ import React, { useState, useEffect, useCallback, useRef, useTransition, useMemo
import { useSearchParams, useRouter } from 'next/navigation'
import dynamic from 'next/dynamic'
import { Note } from '@/lib/types'
import { getAllNotes, searchNotes, enableNoteHistory, getNoteById, createNote, deleteNote, togglePin, toggleArchive, updateNote, updateFullOrderWithoutRevalidation } from '@/app/actions/notes'
import { getAllNotes, searchNotes, enableNoteHistory, getNoteById, createNote, deleteNote, togglePin, toggleArchive, updateNote, updateFullOrderWithoutRevalidation, bulkTrashNotes, bulkMoveNotes } from '@/app/actions/notes'
import { NotesListViews, type NotesLayoutMode, type NotesClassicLayoutMode, isClassicLayoutMode } from '@/components/notes-list-views'
import {
NOTES_LAYOUT_STORAGE_KEY,
@@ -36,7 +36,8 @@ import { toast } from 'sonner'
import { AnimatePresence, motion } from 'motion/react'
import { isDashboardHomeRoute } from '@/lib/dashboard/home-route'
import { ConfirmDeleteNoteDialog } from '@/components/confirm-delete-note-dialog'
import { showNoteTrashedToast } from '@/lib/notes/trash-toast'
import { showNoteTrashedToast, showNotesTrashedToast } from '@/lib/notes/trash-toast'
import { InboxBulkBar } from '@/components/inbox-bulk-bar'
type SortOrder = 'newest' | 'oldest' | 'alpha' | 'manual'
@@ -163,6 +164,9 @@ export function HomeClient({
const [showStudyPlanner, setShowStudyPlanner] = useState(false)
const [showOrganizer, setShowOrganizer] = useState(false)
const [notePendingDelete, setNotePendingDelete] = useState<Note | null>(null)
const [selectedInboxIds, setSelectedInboxIds] = useState<Set<string>>(() => new Set())
const [bulkBusy, setBulkBusy] = useState(false)
const [bulkTrashOpen, setBulkTrashOpen] = useState(false)
const handleExportCSV = useCallback(() => {
if (!searchParams.get('notebook')) return
@@ -194,6 +198,10 @@ export function HomeClient({
}, [searchParams])
const notebookFilter = searchParams.get('notebook')
const isInboxView =
!notebookFilter &&
searchParams.get('shared') !== '1' &&
searchParams.get('reminders') !== '1'
const schemaHook = useNotebookSchema(notebookFilter)
const structuredModeActive = Boolean(notebookFilter && schemaHook.schema)
const wantsStructuredView = Boolean(
@@ -602,6 +610,68 @@ export function HomeClient({
[noteVisibleInCurrentView, patchNoteInList, removeNoteFromList, t]
)
const handleToggleInboxSelect = useCallback((id: string) => {
setSelectedInboxIds((prev) => {
const next = new Set(prev)
if (next.has(id)) next.delete(id)
else next.add(id)
return next
})
}, [])
const handleBulkMoveInbox = useCallback(
async (notebookId: string) => {
const moved = notes.filter((n) => selectedInboxIds.has(n.id))
const ids = moved.map((n) => n.id)
if (ids.length === 0) return
setBulkBusy(true)
for (const note of moved) {
removeNoteFromList(note.id)
emitNoteChange({ type: 'updated', note: { ...note, notebookId } })
}
setSelectedInboxIds(new Set())
try {
await bulkMoveNotes(ids, notebookId, { skipRevalidation: true })
toast.success(t('notes.bulkMovedToast', { count: ids.length }))
refreshNotebooks()
} catch {
setNotes((prev) => [...moved, ...prev])
toast.error(t('general.error'))
} finally {
setBulkBusy(false)
}
},
[notes, selectedInboxIds, removeNoteFromList, refreshNotebooks, t],
)
const confirmBulkTrashInbox = useCallback(async () => {
const moved = notes.filter((n) => selectedInboxIds.has(n.id))
const ids = moved.map((n) => n.id)
setBulkTrashOpen(false)
if (ids.length === 0) return
setBulkBusy(true)
for (const note of moved) {
removeNoteFromList(note.id)
emitNoteChange({ type: 'deleted', noteId: note.id, notebookId: note.notebookId })
}
setSelectedInboxIds(new Set())
try {
await bulkTrashNotes(ids, { skipRevalidation: true })
showNotesTrashedToast(moved, t, () => {
setNotes((prev) => [...moved, ...prev])
})
refreshNotebooks()
} catch {
setNotes((prev) => [...moved, ...prev])
for (const note of moved) {
emitNoteChange({ type: 'created', note })
}
toast.error(t('general.error'))
} finally {
setBulkBusy(false)
}
}, [notes, selectedInboxIds, removeNoteFromList, refreshNotebooks, t])
const handleNoteContentPatch = useCallback((noteId: string, patch: Partial<Note>) => {
setNotes((prev) => {
const next = prev.map((n) => (n.id === noteId ? { ...n, ...patch } : n))
@@ -827,6 +897,27 @@ export function HomeClient({
return sortedNotes.filter(n => n.isPinned)
}, [sortedNotes])
const handleSelectAllInbox = useCallback(() => {
setSelectedInboxIds(new Set(sortedNotes.map((n) => n.id)))
}, [sortedNotes])
const handleDeselectAllInbox = useCallback(() => {
setSelectedInboxIds(new Set())
}, [])
useEffect(() => {
if (!isInboxView) {
setSelectedInboxIds(new Set())
return
}
setSelectedInboxIds((prev) => {
if (prev.size === 0) return prev
const valid = new Set(sortedNotes.map((n) => n.id))
const next = new Set([...prev].filter((id) => valid.has(id)))
return next.size === prev.size ? prev : next
})
}, [isInboxView, sortedNotes])
const sortLabels: Record<SortOrder, string> = {
newest: t('sidebar.sortNewest'),
oldest: t('sidebar.sortOldest'),
@@ -928,6 +1019,8 @@ export function HomeClient({
? t('sidebar.sharedWithMe')
: searchParams.get('reminders') === '1'
? t('sidebar.reminders')
: isInboxView
? t('sidebar.inbox')
: t('notes.title')}
</h1>
</div>
@@ -1224,6 +1317,18 @@ export function HomeClient({
</div>
</div>
{isInboxView && notes.length > 0 && (
<InboxBulkBar
totalCount={sortedNotes.length}
selectedCount={selectedInboxIds.size}
busy={bulkBusy}
onSelectAll={handleSelectAllInbox}
onDeselectAll={handleDeselectAllInbox}
onMove={(notebookId) => { void handleBulkMoveInbox(notebookId) }}
onTrash={() => setBulkTrashOpen(true)}
/>
)}
{availableTags.length > 0 && (
<div className="flex flex-col gap-3">
<div className="flex items-center justify-between">
@@ -1381,6 +1486,14 @@ export function HomeClient({
onNoteIllustrationGenerated={handleNoteIllustrationGenerated}
onNoteIllustrationDeleted={handleNoteIllustrationDeleted}
onGridReorder={handleGridReorder}
selection={isInboxView ? {
selectedIds: selectedInboxIds,
onToggle: handleToggleInboxSelect,
onToggleAll: selectedInboxIds.size === sortedNotes.length
? handleDeselectAllInbox
: handleSelectAllInbox,
allSelected: sortedNotes.length > 0 && selectedInboxIds.size === sortedNotes.length,
} : undefined}
/>
)}
</div>
@@ -1499,11 +1612,16 @@ export function HomeClient({
)}
<ConfirmDeleteNoteDialog
open={notePendingDelete != null}
open={notePendingDelete != null || bulkTrashOpen}
onOpenChange={(open) => {
if (!open) setNotePendingDelete(null)
if (!open) {
setNotePendingDelete(null)
setBulkTrashOpen(false)
}
}}
onConfirm={confirmDeleteNoteFromList}
title={bulkTrashOpen ? t('notes.confirmBulkDeleteTitle') : undefined}
description={bulkTrashOpen ? t('notes.confirmBulkDelete') : undefined}
onConfirm={bulkTrashOpen ? confirmBulkTrashInbox : confirmDeleteNoteFromList}
/>
{showNotebookSlides && currentNotebook && (

View File

@@ -0,0 +1,92 @@
'use client'
import { FolderOpen, Trash2 } from 'lucide-react'
import { MoveToNotebookPicker } from '@/components/move-to-notebook-picker'
import { useLanguage } from '@/lib/i18n'
import { useNotebooks } from '@/context/notebooks-context'
import { cn } from '@/lib/utils'
export function InboxBulkBar({
totalCount,
selectedCount,
busy,
onSelectAll,
onDeselectAll,
onMove,
onTrash,
}: {
totalCount: number
selectedCount: number
busy?: boolean
onSelectAll: () => void
onDeselectAll: () => void
onMove: (notebookId: string) => void
onTrash: () => void
}) {
const { t } = useLanguage()
const { notebooks } = useNotebooks()
const allSelected = totalCount > 0 && selectedCount === totalCount
const hasSelection = selectedCount > 0
return (
<div className="flex flex-wrap items-center gap-3 pt-1">
<button
type="button"
onClick={allSelected ? onDeselectAll : onSelectAll}
disabled={totalCount === 0 || busy}
className="text-[13px] font-medium text-foreground hover:opacity-70 transition-opacity disabled:opacity-40"
>
{allSelected ? t('notes.deselectAll') : t('notes.selectAll')}
</button>
<span className="text-[12px] text-muted-foreground">
{selectedCount === 1
? t('notes.selectedCountOne')
: t('notes.selectedCount', { count: selectedCount })}
</span>
<div className="flex items-center gap-2 ms-auto">
{hasSelection ? (
<MoveToNotebookPicker
notebooks={notebooks}
currentNotebookId={null}
showGeneralNotes={false}
onSelect={(notebookId) => {
if (notebookId) onMove(notebookId)
}}
>
<button
type="button"
disabled={busy}
className="flex items-center gap-1.5 px-3 py-1.5 rounded-full text-[12px] font-medium border border-foreground/15 text-foreground hover:bg-foreground/5 transition-colors"
>
<FolderOpen size={14} />
{t('notes.bulkMove')}
</button>
</MoveToNotebookPicker>
) : (
<button
type="button"
disabled
className="flex items-center gap-1.5 px-3 py-1.5 rounded-full text-[12px] font-medium border border-transparent text-muted-foreground/50 cursor-not-allowed"
>
<FolderOpen size={14} />
{t('notes.bulkMove')}
</button>
)}
<button
type="button"
disabled={!hasSelection || busy}
onClick={onTrash}
className={cn(
'flex items-center gap-1.5 px-3 py-1.5 rounded-full text-[12px] font-medium border transition-colors',
hasSelection
? 'border-rose-500/30 text-rose-600 dark:text-rose-400 hover:bg-rose-50 dark:hover:bg-rose-500/10'
: 'border-transparent text-muted-foreground/50 cursor-not-allowed',
)}
>
<Trash2 size={14} />
{t('notes.bulkTrash')}
</button>
</div>
</div>
)
}

View File

@@ -2,44 +2,27 @@
import { motion, AnimatePresence } from 'motion/react'
import {
ArrowRight, Menu, X, Check, BrainCircuit,
Network, GraduationCap, Bot, KeyRound, Globe, ChevronDown
ArrowRight, Check, BrainCircuit,
Network, GraduationCap, Bot, KeyRound
} from 'lucide-react'
import Link from 'next/link'
import Image from 'next/image'
import { useLanguage } from '@/lib/i18n'
import type { SupportedLanguage } from '@/lib/i18n/load-translations'
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants'
import { useEffect, useRef, useState, type ReactNode } from 'react'
import { useEffect, useState, type ReactNode } from 'react'
import { useQuery } from '@tanstack/react-query'
import { PublicSiteChrome } from '@/components/public-site-chrome'
import {
DEFAULT_PRICES,
annualDiscountPercent,
} from '@/lib/billing/price-catalog'
const ECHO_LINES = ['echo0', 'echo1', 'echo2'] as const
const LANDING_LANGS: { code: SupportedLanguage; labelKey: string }[] = [
{ code: 'fr', labelKey: 'languages.fr' },
{ code: 'en', labelKey: 'languages.en' },
{ code: 'es', labelKey: 'languages.es' },
{ code: 'de', labelKey: 'languages.de' },
{ code: 'it', labelKey: 'languages.it' },
{ code: 'pt', labelKey: 'languages.pt' },
{ code: 'nl', labelKey: 'languages.nl' },
{ code: 'pl', labelKey: 'languages.pl' },
{ code: 'ru', labelKey: 'languages.ru' },
{ code: 'zh', labelKey: 'languages.zh' },
{ code: 'ja', labelKey: 'languages.ja' },
{ code: 'ko', labelKey: 'languages.ko' },
{ code: 'ar', labelKey: 'languages.ar' },
{ code: 'fa', labelKey: 'languages.fa' },
{ code: 'hi', labelKey: 'languages.hi' },
]
export function LandingPage() {
const { t, language, setLanguage } = useLanguage()
const { t } = useLanguage()
const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly')
const [menuOpen, setMenuOpen] = useState(false)
const [langOpen, setLangOpen] = useState(false)
const [echoIndex, setEchoIndex] = useState(0)
const langRef = useRef<HTMLDivElement>(null)
const { data: byokCatalog } = useQuery({
queryKey: ['public', 'byok-catalog'],
queryFn: async () => {
@@ -51,36 +34,16 @@ export function LandingPage() {
})
const byokProviders = byokCatalog?.providers ?? []
useEffect(() => {
if (!langOpen) return
const onPointer = (e: MouseEvent) => {
if (langRef.current && !langRef.current.contains(e.target as Node)) setLangOpen(false)
}
const onKey = (e: KeyboardEvent) => {
if (e.key === 'Escape') setLangOpen(false)
}
document.addEventListener('mousedown', onPointer)
document.addEventListener('keydown', onKey)
return () => {
document.removeEventListener('mousedown', onPointer)
document.removeEventListener('keydown', onKey)
}
}, [langOpen])
useEffect(() => {
const id = setInterval(() => setEchoIndex((i) => (i + 1) % ECHO_LINES.length), 3200)
return () => clearInterval(id)
}, [])
useEffect(() => {
const root = document.querySelector<HTMLElement>('[data-public-scroll-root]')
if (!root) return
const prev = root.style.overflow
if (menuOpen) root.style.overflow = 'hidden'
else root.style.overflow = prev || ''
return () => { root.style.overflow = prev }
}, [menuOpen])
const trialDays = SUBSCRIPTION_TRIAL_DAYS
const annualSavePercent = annualDiscountPercent(
DEFAULT_PRICES.PRO.month.amount,
DEFAULT_PRICES.PRO.year.amount,
)
const PLANS = [
{ key: 'basic', popular: false, hasTrial: false, price: t('landing.pricing.basicPrice'), period: '' },
{
@@ -106,13 +69,6 @@ export function LandingPage() {
},
]
const NAV = [
{ href: '#product', label: t('landing.nav.secondBrain') },
{ href: '#echo', label: t('landing.nav.echo') },
{ href: '#agents', label: t('landing.nav.agents') },
{ href: '#pricing', label: t('landing.nav.pricing') },
]
const scrollPublicHash = (hash: string) => {
const id = hash.replace(/^#/, '')
const target = document.getElementById(id)
@@ -130,138 +86,7 @@ export function LandingPage() {
}, [])
return (
<div className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white">
{/* Nav */}
<nav className="fixed top-0 left-0 right-0 z-[100] px-5 sm:px-8 py-4 flex items-center justify-between bg-[#0B0A09]/70 backdrop-blur-xl border-b border-white/[0.06]">
<Link href="/" className="flex items-center gap-2.5 group">
<div className="w-9 h-9 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-lg transition-transform group-hover:scale-105">
<span className="font-serif text-xl font-bold leading-none">M</span>
</div>
<span className="font-serif text-xl font-medium tracking-tight text-[#F4F1EA]">Memento</span>
</Link>
<div className="hidden lg:flex items-center gap-8">
{NAV.map((l) => (
<a
key={l.href}
href={l.href}
onClick={(event) => {
event.preventDefault()
scrollPublicHash(l.href)
window.history.replaceState(null, '', l.href)
}}
className="text-[13px] text-white/75 hover:text-white transition-colors"
>
{l.label}
</a>
))}
</div>
<div className="flex items-center gap-2 sm:gap-3">
{/* Language switcher */}
<div ref={langRef} className="relative">
<button
type="button"
onClick={() => setLangOpen((o) => !o)}
aria-expanded={langOpen}
aria-haspopup="listbox"
aria-label={t('landing.nav.language')}
className="inline-flex items-center gap-1.5 px-3 py-2 rounded-full border border-white/15 text-[12px] text-white/70 hover:text-white hover:border-white/30 transition-colors"
>
<Globe size={14} />
<span className="uppercase font-semibold tracking-wide">{language}</span>
<ChevronDown size={12} className={`opacity-60 transition-transform ${langOpen ? 'rotate-180' : ''}`} />
</button>
<AnimatePresence>
{langOpen && (
<motion.ul
role="listbox"
initial={{ opacity: 0, y: 6 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: 6 }}
transition={{ duration: 0.15 }}
className="absolute end-0 mt-2 w-48 max-h-72 overflow-y-auto rounded-2xl border border-white/10 bg-[#141210] shadow-2xl py-1.5 z-[110]"
>
{LANDING_LANGS.map((lang) => (
<li key={lang.code} role="option" aria-selected={language === lang.code}>
<button
type="button"
onClick={() => {
setLanguage(lang.code)
setLangOpen(false)
}}
className={`w-full text-start px-4 py-2.5 text-[13px] transition-colors ${
language === lang.code
? 'bg-[#D4A373]/15 text-[#D4A373]'
: 'text-white/70 hover:bg-white/5 hover:text-white'
}`}
>
{t(lang.labelKey)}
</button>
</li>
))}
</motion.ul>
)}
</AnimatePresence>
</div>
<Link href="/login" className="hidden sm:inline text-[13px] text-white/75 hover:text-white transition-colors px-2">
{t('landing.nav.login')}
</Link>
<Link
href="/register"
className="hidden sm:inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-[#F4F1EA] text-[#0B0A09] text-[13px] font-semibold hover:bg-white transition-colors"
>
{t('landing.nav.cta')}
</Link>
<button
type="button"
aria-label={menuOpen ? t('landing.nav.closeMenu') : t('landing.nav.openMenu')}
onClick={() => setMenuOpen((o) => !o)}
className="lg:hidden w-10 h-10 rounded-full border border-white/15 flex items-center justify-center text-white/80"
>
{menuOpen ? <X size={18} /> : <Menu size={18} />}
</button>
</div>
</nav>
<AnimatePresence>
{menuOpen && (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
className="fixed inset-0 z-[99] bg-[#0B0A09] pt-24 px-8 lg:hidden"
>
<div className="flex flex-col gap-1">
{NAV.map((l) => (
<a
key={l.href}
href={l.href}
onClick={(event) => {
event.preventDefault()
setMenuOpen(false)
scrollPublicHash(l.href)
window.history.replaceState(null, '', l.href)
}}
className="py-4 text-3xl font-serif border-b border-white/10"
>
{l.label}
</a>
))}
<Link
href="/login"
onClick={() => setMenuOpen(false)}
className="mt-10 py-4 text-2xl font-serif text-white/80 text-center border-b border-white/10"
>
{t('landing.nav.login')}
</Link>
<Link href="/register" onClick={() => setMenuOpen(false)} className="mt-4 py-4 rounded-2xl bg-[#F4F1EA] text-[#0B0A09] text-center font-semibold">
{t('landing.nav.cta')}
</Link>
</div>
</motion.div>
)}
</AnimatePresence>
<PublicSiteChrome currentPage="home" onHashNavigate={scrollPublicHash}>
{/* ── HERO ── */}
<section className="relative min-h-[100dvh] flex flex-col justify-center pt-28 pb-16 px-5 sm:px-8 overflow-hidden">
{/* Atmosphere — warm, not purple neon */}
@@ -524,23 +349,23 @@ export function LandingPage() {
<div className="max-w-6xl mx-auto">
<div className="text-center mb-12">
<h2 className="font-serif text-3xl sm:text-5xl tracking-tight mb-4">{t('landing.pricing.title')}</h2>
<p className="text-white/70 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/10 bg-white/[0.03]">
<p className="text-white/80 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/15 bg-white/[0.04]">
<button
type="button"
onClick={() => setBillingInterval('monthly')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`}
className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all ${billingInterval === 'monthly' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
>
{t('landing.pricing.monthly')}
</button>
<button
type="button"
onClick={() => setBillingInterval('annual')}
className={`px-5 py-2 rounded-full text-[12px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/70'}`}
className={`px-5 py-2 rounded-full text-[13px] font-semibold transition-all relative ${billingInterval === 'annual' ? 'bg-[#F4F1EA] text-[#0B0A09]' : 'text-white/80'}`}
>
{t('landing.pricing.annual')}
<span className="absolute -top-3 -right-1 text-[10px] text-[#D4A373] whitespace-nowrap">
{t('landing.pricing.savePercent')}
<span className="absolute -top-3 -right-1 text-[11px] text-[#E8C39A] whitespace-nowrap">
{t('landing.pricing.savePercent', { percent: annualSavePercent })}
</span>
</button>
</div>
@@ -551,32 +376,32 @@ export function LandingPage() {
key={plan.key}
className={`rounded-2xl border p-6 flex flex-col ${
plan.popular
? 'border-[#D4A373]/50 bg-[#D4A373]/10'
: 'border-white/[0.08] bg-white/[0.02]'
? 'border-[#D4A373]/60 bg-[#D4A373]/12'
: 'border-white/[0.12] bg-white/[0.04]'
}`}
>
{plan.popular && (
<span className="text-[10px] font-bold uppercase tracking-widest text-[#D4A373] mb-3">
<span className="text-[11px] font-bold uppercase tracking-widest text-[#E8C39A] mb-3">
{t('landing.pricing.popular')}
</span>
)}
<h4 className="text-[13px] font-medium tracking-wide text-white/80 mb-2">
<h4 className="text-[14px] font-medium tracking-wide text-[#F4F1EA] mb-2">
{t(`landing.pricing.${plan.key}.name`)}
</h4>
<div className="flex items-baseline gap-1 mb-2">
<span className="text-3xl font-serif">{plan.price}</span>
{plan.period && <span className="text-sm text-white/70">{plan.period}</span>}
{plan.period && <span className="text-sm text-white/80">{plan.period}</span>}
</div>
{plan.hasTrial && (
<p className="text-[11px] font-semibold text-[#D4A373] mb-3">
<p className="text-[12px] font-semibold text-[#E8C39A] mb-3">
{t('landing.pricing.trialBadge', { days: trialDays })}
</p>
)}
<p className="text-sm text-white/70 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p>
<p className="text-sm text-white/80 mb-6">{t(`landing.pricing.${plan.key}.desc`)}</p>
<ul className="space-y-2.5 mb-8 flex-1">
{plan.hasTrial && (
<li className="flex gap-2 text-xs text-[#D4A373]/90">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" />
<li className="flex gap-2 text-xs text-[#E8C39A]">
<Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{t('landing.pricing.trialFeature', { days: trialDays })}
</li>
)}
@@ -586,8 +411,8 @@ export function LandingPage() {
})
if (!feat || feat.startsWith('landing.')) return null
return (
<li key={j} className="flex gap-2 text-sm text-white/80">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" />
<li key={j} className="flex gap-2 text-sm text-[#F4F1EA]/90">
<Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{feat}
</li>
)
@@ -598,7 +423,7 @@ export function LandingPage() {
className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${
plan.popular
? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white'
: 'bg-white/10 text-white hover:bg-white/15'
: 'bg-white/15 text-white hover:bg-white/20'
}`}
>
{plan.hasTrial
@@ -633,48 +458,7 @@ export function LandingPage() {
</div>
</section>
<footer className="px-5 sm:px-8 py-14 border-t border-white/[0.06]">
<div className="max-w-6xl mx-auto flex flex-col md:flex-row justify-between gap-10">
<div className="max-w-xs">
<div className="flex items-center gap-2 mb-3">
<div className="w-7 h-7 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-md">
<span className="font-serif font-bold text-sm">M</span>
</div>
<span className="font-serif text-lg">Memento</span>
</div>
<p className="text-sm text-white/60">{t('landing.footer.desc')}</p>
</div>
<div className="grid grid-cols-3 gap-10 text-sm">
{(['product', 'community', 'legal'] as const).map((section) => (
<div key={section}>
<p className="text-[13px] font-medium tracking-wide text-white/70 mb-3">
{t(`landing.footer.${section}.title`)}
</p>
<ul className="space-y-2 text-white/70">
{[0, 1, 2].map((j) => {
const label = t(`landing.footer.${section}.link${j}`)
const href = t(`landing.footer.${section}.link${j}Href`)
if (!label || label.startsWith('landing.')) return null
return (
<li key={j}>
{href.startsWith('/') ? (
<Link href={href} className="hover:text-white transition-colors">{label}</Link>
) : (
<a href={href} className="hover:text-white transition-colors">{label}</a>
)}
</li>
)
})}
</ul>
</div>
))}
</div>
</div>
<p className="max-w-6xl mx-auto mt-12 pt-8 border-t border-white/[0.06] text-[13px] text-white/70 tracking-wide">
© 2026 Memento. {t('landing.footer.rights')}
</p>
</footer>
</div>
</PublicSiteChrome>
)
}

View File

@@ -197,7 +197,7 @@ export function McpSettingsPanel({
) : (
<Dialog open={createOpen} onOpenChange={setCreateOpen}>
<DialogTrigger asChild>
<button className="flex items-center gap-1.5 px-4 py-2 rounded-xl bg-ink text-paper text-sm font-medium hover:opacity-90 active:scale-[0.98] transition-all">
<button className="flex items-center gap-1.5 px-4 py-2 rounded-xl bg-brand-accent text-white text-sm font-medium hover:opacity-90 active:scale-[0.98] transition-all">
<Plus className="h-3.5 w-3.5" />
{t('mcpSettings.apiKeys.generate')}
</button>
@@ -260,7 +260,7 @@ export function McpSettingsPanel({
<DialogFooter>
<button
onClick={() => setShowRawKey(null)}
className="px-6 py-2.5 rounded-xl bg-ink text-paper text-sm font-medium"
className="px-6 py-2.5 rounded-xl bg-brand-accent text-white text-sm font-medium"
>
{t('mcpSettings.createDialog.done')}
</button>
@@ -297,7 +297,7 @@ function CreateKeyDialog({ onGenerate, isPending }: { onGenerate: (name: string)
<button
onClick={() => onGenerate(name)}
disabled={isPending}
className="px-6 py-2.5 rounded-xl bg-ink text-paper text-sm font-medium disabled:opacity-60"
className="px-6 py-2.5 rounded-xl bg-brand-accent text-white text-sm font-medium disabled:opacity-60"
>
<div className="flex items-center gap-2">
{isPending ? <Loader2 className="h-4 w-4 animate-spin" /> : <Key className="h-4 w-4" />}

View File

@@ -17,6 +17,7 @@ type MoveToNotebookPickerProps = {
children: React.ReactElement
align?: 'start' | 'end'
preferDropUp?: boolean
showGeneralNotes?: boolean
}
export function MoveToNotebookPicker({
@@ -26,6 +27,7 @@ export function MoveToNotebookPicker({
children,
align = 'end',
preferDropUp = false,
showGeneralNotes = true,
}: MoveToNotebookPickerProps) {
const { t } = useLanguage()
const [open, setOpen] = useState(false)
@@ -91,7 +93,7 @@ export function MoveToNotebookPicker({
selectedId={currentNotebookId}
onSelect={(id) => handleSelect(id)}
onClose={close}
showGeneralNotes
showGeneralNotes={showGeneralNotes}
generalNotesLabel={t('notebookSuggestion.generalNotes') || 'Notes générales'}
onSelectGeneralNotes={() => handleSelect(null)}
searchPlaceholder={t('notebookSuggestion.filterNotebooks') || 'Filtrer les carnets…'}

View File

@@ -0,0 +1,39 @@
'use client'
import { Check } from 'lucide-react'
import { cn } from '@/lib/utils'
export function NoteSelectCheckbox({
checked,
onToggle,
label,
className,
}: {
checked: boolean
onToggle: () => void
label: string
className?: string
}) {
return (
<button
type="button"
role="checkbox"
aria-checked={checked}
aria-label={label}
onPointerDown={(e) => e.stopPropagation()}
onClick={(e) => {
e.stopPropagation()
onToggle()
}}
className={cn(
'shrink-0 w-5 h-5 rounded border flex items-center justify-center transition-colors',
checked
? 'bg-brand-accent border-brand-accent text-white'
: 'border-foreground/25 bg-background/90 hover:border-brand-accent/60',
className,
)}
>
{checked ? <Check size={12} strokeWidth={3} /> : null}
</button>
)
}

View File

@@ -25,6 +25,7 @@ import { useNotebooks } from '@/context/notebooks-context'
import { toast } from 'sonner'
import { ConfirmDeleteNoteDialog } from '@/components/confirm-delete-note-dialog'
import { showNoteTrashedToast } from '@/lib/notes/trash-toast'
import { NoteSelectCheckbox } from '@/components/note-select-checkbox'
import { fr } from 'date-fns/locale/fr'
import { enUS } from 'date-fns/locale/en-US'
import { formatAbsoluteDateLocalized } from '@/lib/utils/format-localized-date'
@@ -37,6 +38,10 @@ type NotesEditorialViewProps = {
onOpen: (note: Note, readOnly?: boolean) => void
notebookName?: string
onOpenHistory?: (note: Note) => void
selection?: {
selectedIds: ReadonlySet<string>
onToggle: (id: string) => void
}
} & NoteCollectionActions
function formatNoteDate(date: Date | string, language: string): string {
@@ -376,6 +381,7 @@ export function NotesEditorialView({
onMoveToNotebook,
onNotePatch,
onNoteIllustrationGenerated,
selection,
}: NotesEditorialViewProps) {
const { t, language } = useLanguage()
const { data: session } = useSession()
@@ -454,7 +460,14 @@ export function NotesEditorialView({
</div>
<h2 className="font-memento-serif text-2xl font-medium text-foreground flex items-center gap-2 justify-between">
<span className="inline-flex items-center gap-2 truncate">
<span className="inline-flex items-center gap-2 truncate min-w-0">
{selection && (
<NoteSelectCheckbox
checked={selection.selectedIds.has(note.id)}
onToggle={() => selection.onToggle(note.id)}
label={t('notes.selectNote')}
/>
)}
{note.isPinned && <Pin size={14} className="text-amber-500 fill-amber-500 shrink-0" />}
{note.historyEnabled && <History size={14} className="text-emerald-500 shrink-0" />}
{title}

View File

@@ -53,6 +53,7 @@ import { useHydrated } from '@/lib/use-hydrated'
import { formatDistanceToNow } from 'date-fns'
import { fr } from 'date-fns/locale/fr'
import { enUS } from 'date-fns/locale/en-US'
import { NoteSelectCheckbox } from '@/components/note-select-checkbox'
export type NotesLayoutMode = 'grid' | 'list' | 'table' | 'kanban' | 'gallery'
export type NotesClassicLayoutMode = 'grid' | 'list' | 'table'
@@ -253,6 +254,12 @@ type NotesListViewsProps = {
onOpenHistory?: (note: Note) => void
notebookName?: string
onGridReorder?: (orderedIds: string[]) => void | Promise<void>
selection?: {
selectedIds: ReadonlySet<string>
onToggle: (id: string) => void
onToggleAll?: () => void
allSelected?: boolean
}
} & Partial<NoteCollectionActions>
export function NotesListViews({
@@ -269,6 +276,7 @@ export function NotesListViews({
onNotePatch,
onNoteIllustrationGenerated,
onGridReorder,
selection,
}: NotesListViewsProps) {
const { t, language } = useLanguage()
const { data: session } = useSession()
@@ -352,6 +360,7 @@ export function NotesListViews({
onOpenHistory={onOpenHistory}
onGridReorder={onGridReorder}
pinnedLabel={t('notes.pinned')}
selection={selection}
/>
)
}
@@ -363,6 +372,15 @@ export function NotesListViews({
<table className="w-full text-left border-collapse min-w-[720px]">
<thead>
<tr className="border-b border-border/30">
{selection && (
<th className="w-10 px-3 py-3">
<NoteSelectCheckbox
checked={!!selection.allSelected}
onToggle={() => selection.onToggleAll?.()}
label={selection.allSelected ? t('notes.deselectAll') : t('notes.selectAll')}
/>
</th>
)}
<th
className="w-[32%] px-4 py-3 text-[10px] uppercase tracking-widest font-black text-muted-foreground cursor-pointer hover:text-foreground"
onClick={() => handleSort('title')}
@@ -407,6 +425,15 @@ export function NotesListViews({
role="button"
className="h-11 hover:bg-foreground/[0.02] cursor-pointer transition-colors group focus-visible:bg-foreground/[0.04]"
>
{selection && (
<td className="px-3 py-2 w-10">
<NoteSelectCheckbox
checked={selection.selectedIds.has(note.id)}
onToggle={() => selection.onToggle(note.id)}
label={t('notes.selectNote')}
/>
</td>
)}
<td className="px-4 py-2 font-memento-serif text-[13px] font-medium truncate max-w-[280px]">
<span className="inline-flex items-center gap-2 truncate group-hover:text-brand-accent transition-colors">
{note.isPinned && <Pin size={11} className="text-amber-500 fill-amber-500 shrink-0" />}
@@ -464,6 +491,7 @@ export function NotesListViews({
onMoveToNotebook={onMoveToNotebook}
onNotePatch={onNotePatch}
onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/>
</div>
)}
@@ -479,6 +507,7 @@ export function NotesListViews({
onMoveToNotebook={onMoveToNotebook}
onNotePatch={onNotePatch}
onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/>
)}
</div>
@@ -497,6 +526,13 @@ function formatGridCardDate(date: Date | string, language: string): string {
return `${month.toUpperCase()} ${day}, ${year}`
}
type NotesSelection = {
selectedIds: ReadonlySet<string>
onToggle: (id: string) => void
onToggleAll?: () => void
allSelected?: boolean
}
type GridCardSharedProps = {
note: Note
index: number
@@ -512,6 +548,7 @@ type GridCardSharedProps = {
onNoteIllustrationDeleted?: (noteId: string) => void | Promise<void>
onOpenHistory?: (note: Note) => void
isOverlay?: boolean
selection?: NotesSelection
}
function NotesMasonryGrid({
@@ -624,6 +661,7 @@ function NotesGridSection({
onDeleteNote,
onMoveToNotebook,
onNoteIllustrationGenerated,
selection,
className,
}: Omit<GridCardSharedProps, 'note' | 'index' | 'isOverlay'> & {
notes: Note[]
@@ -650,6 +688,7 @@ function NotesGridSection({
onDeleteNote={onDeleteNote}
onMoveToNotebook={onMoveToNotebook}
onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/>
) : (
<GridCard
@@ -665,6 +704,7 @@ function NotesGridSection({
onDeleteNote={onDeleteNote}
onMoveToNotebook={onMoveToNotebook}
onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/>
),
)}
@@ -721,6 +761,7 @@ const GridCard = memo(function GridCard({
onNoteIllustrationDeleted,
onOpenHistory,
isOverlay = false,
selection,
}: GridCardSharedProps) {
const router = useRouter()
const { t, language } = useLanguage()
@@ -760,8 +801,21 @@ const GridCard = memo(function GridCard({
onNoteIllustrationGenerated={onNoteIllustrationGenerated}
onNoteIllustrationDeleted={onNoteIllustrationDeleted}
/>
{selection && !isOverlay && (
<div className="absolute top-2 start-2 z-20">
<NoteSelectCheckbox
checked={selection.selectedIds.has(note.id)}
onToggle={() => selection.onToggle(note.id)}
label={t('notes.selectNote')}
className="shadow-sm"
/>
</div>
)}
{note.isPinned && (
<div className="absolute top-3 start-3 bg-background/90 backdrop-blur-sm p-1.5 rounded-full shadow-sm border border-border/40 text-amber-500">
<div className={cn(
'absolute top-3 bg-background/90 backdrop-blur-sm p-1.5 rounded-full shadow-sm border border-border/40 text-amber-500',
selection ? 'start-10' : 'start-3',
)}>
<Pin size={11} className="fill-amber-500" />
</div>
)}

View File

@@ -0,0 +1,267 @@
'use client'
import { motion, AnimatePresence } from 'motion/react'
import { Menu, X, Globe, ChevronDown } from 'lucide-react'
import Link from 'next/link'
import { useLanguage } from '@/lib/i18n'
import type { SupportedLanguage } from '@/lib/i18n/load-translations'
import { useEffect, useRef, useState, type ReactNode } from 'react'
const LANDING_LANGS: { code: SupportedLanguage; labelKey: string }[] = [
{ code: 'fr', labelKey: 'languages.fr' },
{ code: 'en', labelKey: 'languages.en' },
{ code: 'es', labelKey: 'languages.es' },
{ code: 'de', labelKey: 'languages.de' },
{ code: 'it', labelKey: 'languages.it' },
{ code: 'pt', labelKey: 'languages.pt' },
{ code: 'nl', labelKey: 'languages.nl' },
{ code: 'pl', labelKey: 'languages.pl' },
{ code: 'ru', labelKey: 'languages.ru' },
{ code: 'zh', labelKey: 'languages.zh' },
{ code: 'ja', labelKey: 'languages.ja' },
{ code: 'ko', labelKey: 'languages.ko' },
{ code: 'ar', labelKey: 'languages.ar' },
{ code: 'fa', labelKey: 'languages.fa' },
{ code: 'hi', labelKey: 'languages.hi' },
]
export type PublicSitePage = 'home' | 'pricing'
function resolvePublicHref(href: string, currentPage: PublicSitePage): string {
if (!href.startsWith('#')) return href
if (href === '#pricing' && currentPage === 'pricing') return '/pricing'
if (currentPage === 'home') return href
const id = href.replace(/^#/, '')
return id === 'pricing' ? '/pricing' : `/#${id}`
}
export function PublicSiteChrome({
children,
currentPage,
onHashNavigate,
}: {
children: ReactNode
currentPage: PublicSitePage
onHashNavigate?: (hash: string) => void
}) {
const { t, language, setLanguage } = useLanguage()
const [menuOpen, setMenuOpen] = useState(false)
const [langOpen, setLangOpen] = useState(false)
const langRef = useRef<HTMLDivElement>(null)
const NAV = [
{ href: '#product', label: t('landing.nav.secondBrain') },
{ href: '#echo', label: t('landing.nav.echo') },
{ href: '#agents', label: t('landing.nav.agents') },
{ href: '#pricing', label: t('landing.nav.pricing') },
]
useEffect(() => {
if (!langOpen) return
const onPointer = (e: MouseEvent) => {
if (langRef.current && !langRef.current.contains(e.target as Node)) setLangOpen(false)
}
const onKey = (e: KeyboardEvent) => {
if (e.key === 'Escape') setLangOpen(false)
}
document.addEventListener('mousedown', onPointer)
document.addEventListener('keydown', onKey)
return () => {
document.removeEventListener('mousedown', onPointer)
document.removeEventListener('keydown', onKey)
}
}, [langOpen])
useEffect(() => {
const root = document.querySelector<HTMLElement>('[data-public-scroll-root]')
if (!root) return
const prev = root.style.overflow
if (menuOpen) root.style.overflow = 'hidden'
else root.style.overflow = prev || ''
return () => { root.style.overflow = prev }
}, [menuOpen])
const goSection = (event: React.MouseEvent<HTMLAnchorElement>, hash: string) => {
setMenuOpen(false)
if (currentPage === 'home' && onHashNavigate) {
event.preventDefault()
onHashNavigate(hash)
window.history.replaceState(null, '', hash)
}
}
return (
<div className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white">
<nav className="fixed top-0 left-0 right-0 z-[100] px-5 sm:px-8 py-4 flex items-center justify-between bg-[#0B0A09]/70 backdrop-blur-xl border-b border-white/[0.06]">
<Link href="/" className="flex items-center gap-2.5 group">
<div className="w-9 h-9 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-lg transition-transform group-hover:scale-105">
<span className="font-serif text-xl font-bold leading-none">M</span>
</div>
<span className="font-serif text-xl font-medium tracking-tight text-[#F4F1EA]">Memento</span>
</Link>
<div className="hidden lg:flex items-center gap-8">
{NAV.map((l) => (
<Link
key={l.href}
href={resolvePublicHref(l.href, currentPage)}
onClick={(event) => goSection(event, l.href)}
className={`text-[13px] transition-colors ${
(currentPage === 'pricing' && l.href === '#pricing')
? 'text-white'
: 'text-white/75 hover:text-white'
}`}
>
{l.label}
</Link>
))}
</div>
<div className="flex items-center gap-2 sm:gap-3">
<div ref={langRef} className="relative">
<button
type="button"
onClick={() => setLangOpen((o) => !o)}
aria-expanded={langOpen}
aria-haspopup="listbox"
aria-label={t('landing.nav.language')}
className="inline-flex items-center gap-1.5 px-3 py-2 rounded-full border border-white/15 text-[12px] text-white/70 hover:text-white hover:border-white/30 transition-colors"
>
<Globe size={14} />
<span className="uppercase font-semibold tracking-wide">{language}</span>
<ChevronDown size={12} className={`opacity-60 transition-transform ${langOpen ? 'rotate-180' : ''}`} />
</button>
<AnimatePresence>
{langOpen && (
<motion.ul
role="listbox"
initial={{ opacity: 0, y: 6 }}
animate={{ opacity: 1, y: 0 }}
exit={{ opacity: 0, y: 6 }}
transition={{ duration: 0.15 }}
className="absolute end-0 mt-2 w-48 max-h-72 overflow-y-auto rounded-2xl border border-white/10 bg-[#141210] shadow-2xl py-1.5 z-[110]"
>
{LANDING_LANGS.map((lang) => (
<li key={lang.code} role="option" aria-selected={language === lang.code}>
<button
type="button"
onClick={() => {
setLanguage(lang.code)
setLangOpen(false)
}}
className={`w-full text-start px-4 py-2.5 text-[13px] transition-colors ${
language === lang.code
? 'bg-[#D4A373]/15 text-[#D4A373]'
: 'text-white/70 hover:bg-white/5 hover:text-white'
}`}
>
{t(lang.labelKey)}
</button>
</li>
))}
</motion.ul>
)}
</AnimatePresence>
</div>
<Link href="/login" className="hidden sm:inline text-[13px] text-white/75 hover:text-white transition-colors px-2">
{t('landing.nav.login')}
</Link>
<Link
href="/register"
className="hidden sm:inline-flex items-center gap-2 px-5 py-2.5 rounded-full bg-[#F4F1EA] text-[#0B0A09] text-[13px] font-semibold hover:bg-white transition-colors"
>
{t('landing.nav.cta')}
</Link>
<button
type="button"
aria-label={menuOpen ? t('landing.nav.closeMenu') : t('landing.nav.openMenu')}
onClick={() => setMenuOpen((o) => !o)}
className="lg:hidden w-10 h-10 rounded-full border border-white/15 flex items-center justify-center text-white/80"
>
{menuOpen ? <X size={18} /> : <Menu size={18} />}
</button>
</div>
</nav>
<AnimatePresence>
{menuOpen && (
<motion.div
initial={{ opacity: 0 }}
animate={{ opacity: 1 }}
exit={{ opacity: 0 }}
className="fixed inset-0 z-[99] bg-[#0B0A09] pt-24 px-8 lg:hidden"
>
<div className="flex flex-col gap-1">
{NAV.map((l) => (
<Link
key={l.href}
href={resolvePublicHref(l.href, currentPage)}
onClick={(event) => goSection(event, l.href)}
className="py-4 text-3xl font-serif border-b border-white/10"
>
{l.label}
</Link>
))}
<Link
href="/login"
onClick={() => setMenuOpen(false)}
className="mt-10 py-4 text-2xl font-serif text-white/80 text-center border-b border-white/10"
>
{t('landing.nav.login')}
</Link>
<Link href="/register" onClick={() => setMenuOpen(false)} className="mt-4 py-4 rounded-2xl bg-[#F4F1EA] text-[#0B0A09] text-center font-semibold">
{t('landing.nav.cta')}
</Link>
</div>
</motion.div>
)}
</AnimatePresence>
<div className={currentPage === 'home' ? '' : 'pt-20'}>
{children}
</div>
<footer className="px-5 sm:px-8 py-14 border-t border-white/[0.06]">
<div className="max-w-6xl mx-auto flex flex-col md:flex-row justify-between gap-10">
<div className="max-w-xs">
<div className="flex items-center gap-2 mb-3">
<div className="w-7 h-7 bg-[#F4F1EA] text-[#0B0A09] flex items-center justify-center rounded-md">
<span className="font-serif font-bold text-sm">M</span>
</div>
<span className="font-serif text-lg">Memento</span>
</div>
<p className="text-sm text-white/80">{t('landing.footer.desc')}</p>
</div>
<div className="grid grid-cols-3 gap-10 text-sm">
{(['product', 'community', 'legal'] as const).map((section) => (
<div key={section}>
<p className="text-[13px] font-medium tracking-wide text-white/80 mb-3">
{t(`landing.footer.${section}.title`)}
</p>
<ul className="space-y-2 text-white/80">
{[0, 1, 2].map((j) => {
const label = t(`landing.footer.${section}.link${j}`)
const href = t(`landing.footer.${section}.link${j}Href`)
if (!label || label.startsWith('landing.')) return null
const resolved = resolvePublicHref(href, currentPage)
return (
<li key={j}>
{resolved.startsWith('/') ? (
<Link href={resolved} className="hover:text-white transition-colors">{label}</Link>
) : (
<a href={resolved} className="hover:text-white transition-colors">{label}</a>
)}
</li>
)
})}
</ul>
</div>
))}
</div>
</div>
<p className="max-w-6xl mx-auto mt-12 pt-8 border-t border-white/[0.06] text-[13px] text-white/80 tracking-wide">
© 2026 Memento. {t('landing.footer.rights')}
</p>
</footer>
</div>
)
}

View File

@@ -43,7 +43,7 @@ export function SettingsNav({ className }: SettingsNavProps) {
{isActive(tab.href) && (
<motion.div
layoutId="activeSettingsTabLine"
className="absolute bottom-0 left-0 right-0 h-0.5 bg-ink"
className="absolute bottom-0 left-0 right-0 h-0.5 bg-brand-accent"
transition={{ type: 'spring', bounce: 0.1, duration: 0.8 }}
/>
)}

View File

@@ -11,6 +11,12 @@ import { format } from 'date-fns';
import { motion } from 'motion/react';
import { BillingHistory } from './billing-history';
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants';
import {
DEFAULT_PRICES,
annualDiscountPercent,
formatBillingAmount,
yearToMonthlyEquivalent,
} from '@/lib/billing/price-catalog';
type Tier = 'PRO' | 'BUSINESS';
type Interval = 'month' | 'year';
@@ -285,12 +291,36 @@ export function BillingPlans() {
const trialCta = (fallback: string) =>
trialEligible ? t('billing.startTrialCta', { days: trialDays }) : fallback;
const proMonth = status?.prices?.PRO?.month ?? DEFAULT_PRICES.PRO.month;
const proYear = status?.prices?.PRO?.year ?? DEFAULT_PRICES.PRO.year;
const businessMonth = status?.prices?.BUSINESS?.month ?? DEFAULT_PRICES.BUSINESS.month;
const businessYear = status?.prices?.BUSINESS?.year ?? DEFAULT_PRICES.BUSINESS.year;
const savePercent = annualDiscountPercent(proMonth.amount, proYear.amount);
const billed = (month: typeof proMonth, year: typeof proYear) => {
if (interval === 'month') {
return {
price: month.display,
period: t('billing.perMonth'),
yearHint: null as string | null,
};
}
return {
price: formatBillingAmount(yearToMonthlyEquivalent(year.amount), year.currency),
period: t('landing.pricing.perMonthAnnual'),
yearHint: t('billing.billedYearTotal', { price: year.display }),
};
};
const proBilled = billed(proMonth, proYear);
const businessBilled = billed(businessMonth, businessYear);
const plans = [
{
id: 'free',
name: t('billing.freePlan'),
price: t('billing.freePrice') || 'Gratuit',
period: '',
yearHint: null as string | null,
description: t('billing.freeDescription') || 'Pour découvrir Memento.',
features: [
t('billing.freeF1'),
@@ -313,9 +343,9 @@ export function BillingPlans() {
{
id: 'pro',
name: t('billing.proPlan'),
price: status?.prices?.PRO?.[interval]?.display ??
(interval === 'month' ? (t('billing.proPrice') || '9,90€') : (t('billing.proAnnualPrice') || '99€')),
period: interval === 'month' ? t('billing.perMonth') : t('billing.perYear'),
price: proBilled.price,
period: proBilled.period,
yearHint: proBilled.yearHint,
description: t('billing.proDescription') || 'Pour les consultants et créateurs exigeants.',
features: [
...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []),
@@ -337,9 +367,9 @@ export function BillingPlans() {
{
id: 'business',
name: t('billing.businessPlan'),
price: status?.prices?.BUSINESS?.[interval]?.display ??
(interval === 'month' ? (t('billing.businessPrice') || '29,90€') : (t('billing.businessAnnualPrice') || '299€')),
period: interval === 'month' ? t('billing.perMonth') : t('billing.perYear'),
price: businessBilled.price,
period: businessBilled.period,
yearHint: businessBilled.yearHint,
features: [
...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []),
t('billing.businessFeature1'),
@@ -361,7 +391,8 @@ export function BillingPlans() {
name: t('billing.enterpriseTitle') || 'Enterprise',
price: t('billing.contactSales') || 'Sur devis',
period: '',
description: t('billing.enterpriseDescription') || 'Crédits illimités ou pool dédié, SSO, support prioritaire.',
yearHint: null as string | null,
description: t('billing.enterpriseDescription') || 'Crédits illimités ou pool dédié, connexion unique pour léquipe, support prioritaire.',
features: [
t('billing.enterpriseFeature1'),
t('billing.enterpriseFeature2'),
@@ -765,7 +796,11 @@ export function BillingPlans() {
)}
>
{t('billing.annual')}
<span className="ms-1 text-primary/80 dark:text-primary">{t('billing.savePercent')}</span>
{savePercent > 0 && (
<span className="ms-1 text-primary/80 dark:text-primary">
{t('billing.savePercent', { percent: savePercent })}
</span>
)}
</button>
</div>
) : (
@@ -800,6 +835,9 @@ export function BillingPlans() {
<span className="text-4xl font-serif font-bold text-ink">{plan.price}</span>
<span className="text-concrete text-xs font-light italic">{plan.period}</span>
</div>
{plan.yearHint && (
<p className="text-xs text-concrete font-light">{plan.yearHint}</p>
)}
<p className="text-xs text-concrete font-light leading-relaxed pe-4">{plan.description}</p>
</div>

View File

@@ -402,7 +402,7 @@ export function NotesStructuredTable({
<div className="flex items-center justify-between text-[11px] font-bold text-foreground/80">
<span className="flex items-center gap-1.5 text-purple-400">
<Brain className="w-3.5 h-3.5 animate-pulse" />
{t('structuredViewBlock.echoPopoverTitle') || 'Résonance Sémantique 🔮'}
{t('structuredViewBlock.echoPopoverTitle') || 'Notes proches'}
</span>
<button
onClick={() => { setActiveEchoNoteId(null); setEchoConnections([]); }}

View File

@@ -0,0 +1,47 @@
export type BillingTier = 'PRO' | 'BUSINESS'
export type BillingInterval = 'month' | 'year'
export interface DynamicPrice {
display: string
amount: number
currency: string
}
export const DEFAULT_PRICES: Record<BillingTier, Record<BillingInterval, DynamicPrice>> = {
PRO: {
month: { display: '9,90 €', amount: 9.9, currency: 'EUR' },
year: { display: '99,00 €', amount: 99, currency: 'EUR' },
},
BUSINESS: {
month: { display: '29,90 €', amount: 29.9, currency: 'EUR' },
year: { display: '299,00 €', amount: 299, currency: 'EUR' },
},
}
export function formatBillingAmount(amount: number, currency = 'EUR'): string {
const c = currency.toUpperCase()
if (c === 'EUR') {
return `${amount.toLocaleString('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} €`
}
if (c === 'USD') {
return `$${amount.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
}
if (c === 'GBP') {
return `£${amount.toLocaleString('en-GB', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`
}
return `${amount.toLocaleString('fr-FR', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} ${c}`
}
/** Prix annuel ramené au mois (99 € / an → 8,25 € / mois). */
export function yearToMonthlyEquivalent(yearAmount: number): number {
return Math.round((yearAmount / 12) * 100) / 100
}
/** Remise réelle : 9,90 € × 12 vs 99 € / an → 17 %. */
export function annualDiscountPercent(monthlyAmount: number, yearlyAmount: number): number {
const paidMonthlyForYear = monthlyAmount * 12
if (paidMonthlyForYear <= 0) return 0
const raw = (1 - yearlyAmount / paidMonthlyForYear) * 100
if (!Number.isFinite(raw) || raw <= 0) return 0
return Math.round(raw)
}

View File

@@ -1,26 +1,16 @@
import type { SubscriptionTier } from '@/lib/plan-entitlements';
import { stripe } from '@/lib/stripe';
import { getConfigValue } from '@/lib/config';
import {
DEFAULT_PRICES,
formatBillingAmount,
type BillingInterval,
type BillingTier,
type DynamicPrice,
} from '@/lib/billing/price-catalog';
export type BillingTier = 'PRO' | 'BUSINESS';
export type BillingInterval = 'month' | 'year';
export interface DynamicPrice {
display: string;
amount: number;
currency: string;
}
export const DEFAULT_PRICES: Record<BillingTier, Record<BillingInterval, DynamicPrice>> = {
PRO: {
month: { display: '9,90 €', amount: 9.90, currency: 'EUR' },
year: { display: '99,00 €', amount: 99.00, currency: 'EUR' },
},
BUSINESS: {
month: { display: '29,90 €', amount: 29.90, currency: 'EUR' },
year: { display: '299,00 €', amount: 299.00, currency: 'EUR' },
},
};
export type { BillingInterval, BillingTier, DynamicPrice };
export { DEFAULT_PRICES, formatBillingAmount };
export async function isBillingEnabled(): Promise<boolean> {
const flag = await getConfigValue('BILLING_ENABLED', '');
@@ -54,19 +44,11 @@ export async function getDynamicPrices(): Promise<Record<BillingTier, Record<Bil
if (price.unit_amount !== null && price.unit_amount !== undefined) {
const amount = price.unit_amount / 100;
const currency = price.currency.toUpperCase();
let display = '';
if (currency === 'EUR') {
display = `${amount.toLocaleString('fr-FR', { minimumFractionDigits: 0, maximumFractionDigits: 2 })} €`;
} else if (currency === 'USD') {
display = `$${amount.toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 2 })}`;
} else if (currency === 'GBP') {
display = `£${amount.toLocaleString('en-GB', { minimumFractionDigits: 0, maximumFractionDigits: 2 })}`;
} else {
display = `${amount} ${currency}`;
}
result[tier][interval] = { display, amount, currency };
result[tier][interval] = {
display: formatBillingAmount(amount, currency),
amount,
currency,
};
}
} catch (err) {
console.error(`[stripe-prices] Failed to retrieve price for ${tier}/${interval}:`, err);

View File

@@ -1,7 +1,7 @@
'use client'
import { toast } from 'sonner'
import { restoreNote } from '@/app/actions/notes'
import { restoreNote, restoreNotes } from '@/app/actions/notes'
import { emitNoteChange } from '@/lib/note-change-sync'
import type { Note } from '@/lib/types'
@@ -27,3 +27,31 @@ export function showNoteTrashedToast(
},
})
}
export function showNotesTrashedToast(
notes: Note[],
t: (key: string, params?: Record<string, string | number>) => string,
onRestored?: () => void,
) {
if (notes.length === 1) {
showNoteTrashedToast(notes[0], t, onRestored)
return
}
toast.success(t('notes.bulkTrashedToast', { count: notes.length }), {
action: {
label: t('notes.undoDelete'),
onClick: async () => {
try {
await restoreNotes(notes.map((note) => note.id), { skipRevalidation: true })
for (const note of notes) {
emitNoteChange({ type: 'created', note: { ...note, trashedAt: null } })
}
onRestored?.()
toast.success(t('trash.noteRestored'))
} catch {
toast.error(t('general.error'))
}
},
},
})
}

View File

@@ -407,7 +407,7 @@
"placeholder": "بحث",
"searchPlaceholder": "ابحث في ملاحظاتك...",
"semanticInProgress": "بحث الذكاء الاصطناعي جارٍ...",
"semanticTooltip": "بحث دلالي بالذكاء الاصطناعي",
"semanticTooltip": "البحث بالمعنى",
"searching": "جاري البحث...",
"noResults": "لم يتم العثور على نتائج",
"resultsFound": "تم العثور على {count} ملاحظات",
@@ -861,7 +861,7 @@
"compareAll": "مقارنة الكل",
"mergeAll": "دمج الكل",
"close": "إغلاق",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} ٪ من القرب",
"backToNote": "Revenir à ma note",
"badgeLabel": "صدى الذاكرة",
"bottomCueConsent": "اتصالات الذكاء الاصطناعي متاحة بالأسفل",
@@ -918,7 +918,7 @@
"noContentReturned": "لم يتم إرجاع محتوى دمج من API",
"unknownDate": "تاريخ غير معروف"
},
"defaultInsight": "تبدو هذه الملاحظات مرتبطة دلاليًا.",
"defaultInsight": "هذه الملاحظات تلتقي.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "تعذر تنظيف التسميات",
"indexingComplete": "اكتملت الفهرسة: تمت معالجة {count} ملاحظة",
"indexingError": "خطأ أثناء الفهرسة",
"semanticIndexing": "الفهرسة الدلالية",
"semanticIndexingDescription": "إنشاء متجهات لجميع الملاحظات لتفعيل البحث القائم على النية",
"semanticIndexing": "فهرس البحث حسب المعنى",
"semanticIndexingDescription": "تجهيز كل الملاحظات للبحث حسب المعنى",
"profile": "الملف الشخصي",
"searchNoResults": "لم يتم العثور على إعدادات مطابقة",
"languageAuto": "تم ضبط اللغة على تلقائي",
@@ -1664,7 +1664,7 @@
"title": "الميزات",
"description": "قدرات مدعومة بالذكاء الاصطناعي",
"titleSuggestions": "اقتراحات عناوين مدعومة بالذكاء الاصطناعي",
"semanticSearch": "بحث دلالي مع التضمينات",
"semanticSearch": "البحث حسب المعنى",
"paragraphReformulation": "إعادة صياغة الفقرات",
"memoryEcho": "رؤى Memory Echo اليومية",
"notebookOrganization": "تنظيم الدفاتر",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "إعادة بناء فهرس البحث",
"description": "إعادة توليد التضمينات لجميع الملاحظات لتحسين البحث الدلالي.",
"description": "أعد بناء فهرس كل الملاحظات لتحسين البحث حسب المعنى.",
"button": "إعادة بناء الفهرس",
"success": "اكتملت الفهرسة: تمت معالجة {count} ملاحظة",
"failed": "حدث خطأ أثناء الفهرسة"
@@ -1984,7 +1984,7 @@
"legendWiki": "ربط بملاحظة",
"mentionShort": "إشارة",
"moreNodes": "+{count} على الخريطة",
"noInbound": "لا توجد روابط ويكي وارد تشير إلى هذه الملاحظة.",
"noInbound": "لا تشير أي ملاحظة أخرى إلى هذه.",
"noOutbound": "هذه الملاحظة لا ترتبط بملاحظات أخرى بعد.",
"noWikiYet": "لا روابط لملاحظات أخرى بعد.",
"outboundHelp": "ملاحظات تشير إليها هذه باستخدام [[…]] في نصها.",
@@ -2190,7 +2190,7 @@
"custom": "مخصص"
},
"typeDescriptions": {
"scraper": جمع البيانات من عدة مواقع وينشئ ملخصًا",
"scraper": قرأ عدة مواقع ويكتب ملخصًا",
"researcher": "يبحث عن معلومات حول موضوع معين",
"monitor": "يراقب دفتر ملاحظات ويحلل الملاحظات",
"slideGenerator": "إنشاء عرض تقديمي لـ PowerPoint من الملاحظات",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "مثال: مراقبة الذكاء الاصطناعي الثلاثاء",
"description": "الوصف (اختياري)",
"descriptionPlaceholder": "ملخص أخبار الذكاء الاصطناعي الأسبوعي",
"urlsLabel": "روابط URLs للجمع",
"urlsLabel": "عناوين الصفحات للقراءة",
"urlsOptional": "(اختياري)",
"sourceNotebook": "دفتر الملاحظات للمراقبة",
"selectNotebook": "اختر دفتر ملاحظات...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "إشعار بالبريد الإلكتروني",
"notifyEmailHint": "استلام بريد إلكتروني بنتائج الوكيل بعد كل تشغيل",
"includeImages": "تضمين الصور",
"includeImagesHint": "استخراج الصور من الصفحات المجمعة وإرفاقها بالملاحظة المولدة",
"includeImagesHint": "أخذ الصور من الصفحات المقروءة وإرفاقها بالملاحظة",
"back": "رجوع",
"configuration": "التكوين",
"options": "الخيارات",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "مراقبة الذكاء الاصطناعي",
"description": جمع البيانات من 5 مواقع متخصصة في الذكاء الاصطناعي وينشئ ملخصًا أسبوعيًا."
"description": قرأ 5 مواقع للذكاء الاصطناعي ويكتب ملخصًا أسبوعيًا."
},
"veilleTech": {
"name": "مراقبة التقنية",
"description": جمع البيانات من مواقع تقنية رئيسية وينشئ ملخص أخبار."
"description": قرأ مواقع تقنية رئيسية ويكتب ملخص أخبار."
},
"veilleDev": {
"name": "مراقبة التطوير",
"description": جمع البيانات من مواقع التطوير ويلخص التقنيات والأطر الجديدة."
"description": قرأ مواقع التطوير ويلخص ما هو جديد."
},
"surveillant": {
"name": "مراقب الملاحظات",
@@ -2431,15 +2431,15 @@
"btnLabel": "مساعدة",
"close": "إغلاق",
"whatIsAgent": "ما هو الوكيل؟",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "كيف تستخدم وكيلًا؟",
"howToUseContent": "1. انقر على **\"وكيل جديد\"** (أو ابدأ من **قالب** أسفل الصفحة).",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "الوضع المتقدم (تعليمات الذكاء الاصطناعي، الحد الأقصى للتكرارات)",
"advancedContent": "انقر على **\"الوضع المتقدم\"** أسفل النموذج للوصول إلى إعدادات إضافية.",
"tools": "الأدوات المتاحة (التفاصيل)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "التكرار والجدولة",
"frequencyContent": "| التكرار | السلوك\n|-----------|----------\n| **يدوي** | تنقر بنفسك على \"تشغيل\".",
"targetNotebook": "دفتر الملاحظات المستهدف",
@@ -2447,7 +2447,7 @@
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "نصائح وحل المشكلات",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "اختر نوع المهمة التي سيقوم بها الوكيل. كل نوع لديه قدرات وحقول مختلفة.",
"researchTopic": "الموضوع الذي سيبحث عنه الوكيل على الويب. كن محددًا للحصول على نتائج أفضل.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "ترقية إلى Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro يشمل:",
"proSearch": "100 semantic searches / month",
"proSearch": "1٬000 رصيد ذكاء اصطناعي / شهر",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "إنشاء المخطط",
"featureFlashcards": "بطاقات الذكاء الاصطناعي",
"featureFlashcards": "بطاقات المراجعة",
"featurePublishEnhance": "النشر بالذكاء الاصطناعي",
"featureSlides": "إنشاء الشرائح",
"featureVoice": "تفريغ صوتي",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 إعادة صياغة / شهر",
"businessFeature4": "1,000 رسالة دردشة / شهر",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "حصص مخصصة، SSO، دعم أولوي.",
"enterpriseDescription": "حصص مخصصة، تسجيل دخول واحد للفريق، دعم أولوي.",
"contactSales": "تواصل مع المبيعات",
"startCheckout": "ابدأ",
"checkoutLoading": "جارٍ تحميل الدفع…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "يتم تجديد اشتراكك تلقائيًا.",
"businessDescription": "للفرق وقادة المنتجات.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "تسجيل دخول واحد للفريق كله",
"enterpriseFeature3": "دعم مخصص",
"enterpriseFeature4": "فوترة مخصصة",
"enterpriseFeature5": "اتفاقية مستوى الخدمة المضمونة",
"enterpriseFeature5": "وقت استجابة مضمون",
"subtitle": "اختر الخطة المناسبة لك",
"freeDescription": "لاكتشاف ميمينتو",
"freeF1": "30 بحث دلالي",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "تعذر جلب حالة الفوترة",
"fetchQuotasFailed": "تعذر جلب الحصص",
"fetchInvoicesFailed": "تعذر تحميل سجل الفوترة.",
"savePercent": "وفّر ~17%",
"savePercent": "وفّر ~{percent}%",
"billedYearTotal": "أي {price} في السنة",
"cancelSubscription": "إلغاء الاشتراك",
"changeOffer": "تغيير العرض",
"downgradeToFree": "العودة إلى العرض المجاني",
@@ -3379,13 +3380,13 @@
"cta": "تواصل معنا",
"feature0": "كل ما في Business",
"feature1": "وكلاء بلا حد",
"feature2": "SSO / SAML",
"feature3": "سجلات تدقيق وSLA",
"feature2": "تسجيل دخول واحد للفريق كله",
"feature3": "سجل النشاط ووقت استجابة مضمون",
"feature4": "دعم مخصص",
"feature5": "إعداد مباشر"
"feature5": "مرافقة عند التثبيت"
},
"basicPrice": "مجاني",
"savePercent": "وفّر حوالي 17%",
"savePercent": "وفّر حوالي {percent}%",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "احذف حسابك وجميع البيانات المرتبطة به نهائيًا وبدون رجعة.",
"whatWillBeDeleted": "سيتم حذف ما يلي نهائيًا:",
"item1": "جميع الملاحظات والدفاتر والمرفقات",
"item2": "جميع تضمينات pgvector الدلالية",
"item2": "الفهرس الذي يربط ملاحظاتك",
"item3": "جميع مفاتيح API الخاصة بـ BYOK",
"item4": "جميع محادثات الذكاء الاصطناعي وجلسات العصف الذهني",
"item5": "سجل الحصص والاستخدام",
@@ -3559,7 +3560,7 @@
"step_features_title": "قدراتك الخارقة بالذكاء الاصطناعي",
"step_features_subtitle": "اختر من أين تبدأ.",
"step_features_cta": "لنبدأ!",
"feature_search_title": "البحث الدلالي",
"feature_search_title": "البحث بالمعنى",
"feature_search_desc": "ابحث عن أي ملاحظة بالمعنى، ليس فقط بالكلمات المفتاحية.",
"feature_flashcards_title": "بطاقات الذكاء الاصطناعي",
"feature_flashcards_desc": "أنشئ بطاقات مراجعة من ملاحظاتك بنقرة واحدة.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "انقر على بطاقة فكرة لتوسيعها بأفكار فرعية واستكشافها.",
"hint_brainstorm_export_title": "تصدير الجلسة",
"hint_brainstorm_export_desc": "صدّر جلسة العصف الذهني كملاحظة منظمة في الكارنيه المختار.",
"hint_insights_clusters_title": "عناقيد الملاحظات",
"hint_insights_clusters_desc": "تُجمع ملاحظاتك تلقائياً في عناقيد موضوعية. انقر على عنقود للتفاصيل.",
"hint_insights_clusters_title": "مواضيع الملاحظات",
"hint_insights_clusters_desc": "ملاحظاتك مجمّعة حسب المواضيع. انقر موضوعاً لرؤية الملاحظات.",
"hint_insights_bridge_title": "ملاحظات الجسر",
"hint_insights_bridge_desc": "تربط ملاحظات الجسر عناقيد متعددة وتُبرز لأنها تحتوي على روابط مهمة.",
"hint_insights_refresh_title": "تحديث العناقيد",
"hint_insights_refresh_desc": "إذا أضفت ملاحظات جديدة، انقر على «تحديث» لإعادة حساب العناقيد."
"hint_insights_bridge_desc": "ملاحظات الجسر تربط عدة مواضيع وتظهر أين تتقاطع أفكارك.",
"hint_insights_refresh_title": "تحديث المواضيع",
"hint_insights_refresh_desc": "إذا أضفت ملاحظات، انقر «تحديث» لإعادة حساب المواضيع."
},
"blockAction": {
"moveUp": "تحريك الكتلة لأعلى",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "الروابط",
"toggleMenu": "إظهار القائمة أو إخفاؤها",
"subtitle": "اكتشف البنية المخفية لمعرفتك",
"subtitle": "شاهد كيف ترتبط ملاحظاتك",
"resync": "تحديث",
"mapping": "جاري الربط…",
"loading": "جاري تحميل الملاحظات…",
"mappingTitle": "جاري رسم خريطة معرفتك…",
"mappingHint": "قد يستغرق هذا من دقيقة إلى ثلاث دقائق. يمكنك متابعة التصفح؛ ستتحدث الصفحة تلقائياً.",
"analyzeNow": "بدء التحليل الدلالي",
"emptyNeedMoreNotes": "أضف {count} ملاحظات أخرى لفتح العنقدة الدلالية (الحد الأدنى 10).",
"embeddingsHint": "فقط {indexed} من أصل {total} ملاحظة مفهرسة للذكاء الاصطناعي.",
"analyzeNow": "تحديث المواضيع",
"emptyNeedMoreNotes": "أضف {count} ملاحظات أخرى لتجميع مواضيعك (الحد الأدنى 10).",
"embeddingsHint": "فقط {indexed} من أصل {total} ملاحظة جاهزة للتجميع حسب الموضوع.",
"vsGraphHint": "ليس هذا «خريطة الروابط»: هنا الذكاء الاصطناعي يجمع حسب المعنى وليس الروابط.",
"openGraphMap": "فتح خريطة الروابط",
"analysisFailed": "فشل التحليل. تحقق من إعدادات الذكاء الاصطناعي.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "ملاحظات",
"clusterFallback": "موضوع {index}",
"unclusteredNotes": "{count} ملاحظات غير معينة لأي موضوع (مخفية من الرسم البياني).",
"emptyTitle": "اكتشف مجموعات معرفتك",
"emptyDescription": "انقر على «إعادة مزامنة الشبكة» لتحليل ملاحظاتك والعثور على الروابط المخفية",
"emptyTitle": "اكتشف مواضيعك",
"emptyDescription": "انقر على «تحديث» لتجميع ملاحظاتك حسب الموضوع.",
"stats": {
"clusters": "المجموعات",
"bridgeNotes": "ملاحظات جسر",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "العناقيد الدلالية",
"title": "المواضيع",
"notesCount": "{count} ملاحظات",
"centralNotes": "ملاحظات مركزية",
"emptyCluster": "لا توجد ملاحظات في هذا العنقود"
"emptyCluster": "لا توجد ملاحظات في هذا الموضوع"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "التقارب {score}%",
"moreThemes": "+{count}",
"needsResync": "أعد مزامنة الشبكة لتحديث أزواج الجسر.",
"scoreHint": "التقارب الدلالي المتوسط للموضوعين اللذين تربطهما هذه الملاحظة (تشابه جيب التمام)."
"scoreHint": "مدى قرب هذه الملاحظة من الموضوعين اللذين تربطهما."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "الرسم البياني",
"viewDashboard": "لوحة التحكم",
"isolatedClusters": {
"title": "عناقيد معزولة ({count})",
"title": "مواضيع معزولة ({count})",
"badge": "غير متصل",
"empty": "جميع المجموعات مترابطة!"
"empty": "جميع مواضيعك مرتبطة بالفعل بملاحظة جسر واحدة على الأقل."
},
"focusCluster": {
"title": "تركيز على المجموعة",
"description": "يجمع هذا العنقود الموضوعي {count} ملاحظات مكمّلة. انقر على ملاحظة لفتحها.",
"title": "موضوع مفتوح",
"description": "يجمع هذا الموضوع {count} ملاحظات. انقر على ملاحظة لفتحها.",
"close": "إغلاق"
},
"badgeDominant": "مهيمن",
"bridgeCount": "جسر/جسور",
"echoTitle": "تستمر في العودة إلى هذه الفكرة",
"tipClusters": "قام الذكاء الاصطناعي بتجميع ملاحظاتك حسب التقارب الدلالي، بغض النظر عن الكارنيه.",
"tipClusters": "جمّع الذكاء الاصطناعي ملاحظاتك حسب الموضوع، حتى لو كانت في دفاتر مختلفة.",
"tipClustersAction": "انقر على موضوع لرؤية ملاحظاته. انقر على ملاحظة لفتحها.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "انقر على ملاحظة لفتحها وفهم الرابط.",
"tipEcho": "يكتشف صدى الذاكرة ملاحظتين كُتبتا في وقتين مختلفين جداً وتغطيان نفس الموضوع.",
"tipEchoAction": "ملاحظتان، نفس الفكرة، لحظتان مختلفتان. انقر للاستكشاف.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "انقر على «إنشاء ملاحظة جسر» لكتابة الملاحظة وفتحها فوراً.",
"tipIsolated": "هذه الموضوعات معزولة: لا توجد ملاحظة تربطها بالبقية. ربما ينقصك منظور.",
"tipIsolatedAction": "لا توجد ملاحظة تربط هذه الموضوعات بباقي تفكيرك.",
"recalcSystem": {
"title": "نظام إعادة الحساب",
"statusSynced": تزامن",
"scheduledCron": "مجدول",
"lastSync": "آخر مزامنة"
"title": "تحديث المواضيع",
"statusSynced": حدَّث",
"scheduledCron": "تحديث تلقائي",
"lastSync": "آخر تحديث"
},
"resetFocus": "إعادة ضبط التركيز",
"resetFocus": "عرض الكل",
"listView": "قائمة",
"graphAriaLabel": "الشبكة الدلالية: {clusters} عناقيد، {notes} ملاحظات، {bridges} ملاحظات جسر. مفاتيح الأسهم للتنقل.",
"listAriaLabel": "قائمة عناقيد يمكن الوصول إليها مع الملاحظات وروابط الجسر",
"graphAriaLabel": "خريطة المواضيع: {clusters} مواضيع، {notes} ملاحظات، {bridges} ملاحظات جسر. انتقل إلى القائمة للتنقل بسهولة.",
"listAriaLabel": "قائمة المواضيع والملاحظات وملاحظات الجسر",
"dashboardFilterPlaceholder": "تصفية الملاحظات الجسرية، المواضيع…",
"legendFilterPlaceholder": "تصفية المواضيع…",
"legendShowLess": "عرض أقل",
@@ -3896,7 +3897,7 @@
"genericError": "حدث خطأ أثناء الإرسال إلى مثيلك.",
"ignore": "تم إتقانه",
"processing": "جاري المعالجة…",
"processingDetail": "جاري إنشاء الوسوم والملخص الدلالي والتضمينات.",
"processingDetail": "جارٍ تجهيز الملاحظة: تسميات، ملخص، بحث حسب المعنى.",
"publishedOn": "نُشر على {domain}",
"quitSimulator": "إغلاق المحاكي",
"realtimeCapture": "التاريخ: التقاط مباشر",
@@ -4156,7 +4157,7 @@
"match": "تسجيل الدخول",
"memoryEchoDisabled": "صدى الذاكرة معطل في إعدادات الذكاء الاصطناعي لديك.",
"mindMap": "خريطة ذهنية",
"mindMapEmpty": م يتم اكتشاف مواضيع بعد. التحليل الدلالي يجمع ملاحظاتك حسب الموضوع.",
"mindMapEmpty": ا مواضيع بعد. الذكاء الاصطناعي يجمع ملاحظاتك حسب الموضوع.",
"mindMapOpen": "فتح خريطة الرؤى →",
"mindMapUnavailable": "الخريطة الذهنية غير متاحة.",
"new": "ملاحظات أنشئت",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "إضافة إلى الملاحظة",
"bridge": "فكرة جسر",
"connect": ابط دلالي",
"connect": "ربط ملاحظة",
"continue": "متابعة",
"daily": "يوميات",
"explore": "استكشف الموضوع",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "دماغك الثاني في لمحة: اقتراحات الذكاء الاصطناعي، الالتقاط السريع، والخطوات التالية. استخدم الاختصارات أدناه للبدء.",
"resumeOpen": "متابعة",
"review": "مراجعة",
"semanticConnection": "التقارب الدلالي",
"semanticConnection": "القرب",
"sentiment": "مشاعر",
"sentimentDominant": "النبرة السائدة هذا الأسبوع",
"suggestedBridge": "ربط {clusterA} و {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "الاحتفاظ، السلسلة، وإجمالي البطاقات.",
"gmail": "عمليات التقاط البريد الإلكتروني المتزامنة من Gmail.",
"inbox": "ملاحظات في انتظار الأرشفة في الدفاتر.",
"intelligence": "الروابط الدلالية، أفكار جسرية، واكتشافات الوكلاء.",
"intelligence": "ملاحظات تلتقي، أفكار تصل بينها، ونتائج الوكلاء.",
"link-suggestions": "مقتطفات للربط في ملاحظتك الحالية.",
"mind-map": "عناقيد المواضيع مضبوطة الحجم حسب حجم الملاحظات.",
"next-paths": "الخطوات التالية التي يقترحها الذكاء الاصطناعي بناءً على أحدث أعمالك.",
@@ -4258,7 +4259,7 @@
"resume": "تابع أحدث ملاحظاتك من حيث توقفت.",
"revision": "بطاقات تعليمية مستحقة للمراجعة بالتكرار المتباعد.",
"sentiment": "النبرة العاطفية لملاحظاتك هذا الأسبوع.",
"stats": "المجموعات، ملاحظات الجسر، وإجمالي الملاحظات المفهرسة.",
"stats": "المواضيع والملاحظات التي تصل بينها والملاحظات المفهرسة.",
"usage": "ائتمانات الذكاء الاصطناعي المتبقية والحدود الشهرية."
},
"widgetDone": "تم",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "معدل الاحتفاظ بالتعلم، سلسلة المراجعة، وإجمالي البطاقات.",
"gmail": "عمليات التقاط البريد الإلكتروني المتزامنة من تكامل Gmail.",
"inbox": "ملاحظات بدون دفتر. أرشفها للحفاظ على دماغك الثاني مرتباً.",
"intelligence": "اكتشافات الذكاء الاصطناعي: روابط دلالية بين الملاحظات وأفكار جسر ونتائج الوكلاء.",
"intelligence": "ما وجده الذكاء الاصطناعي: ملاحظات تلتقي، أفكار تصل بينها، ونتائج الوكلاء.",
"link-suggestions": "مقتطفات من ملاحظات أخرى تستحق الربط بعملك الحالي.",
"mind-map": "عناقيد المواضيع مضبوطة الحجم حسب حجم الملاحظات. انقر للاستكشاف في الرؤى.",
"next-paths": "الخطوات التالية المقترحة بناءً على آخر ملاحظة حررتها: استئناف، ربط، تأريخ أو بحث.",
@@ -4284,7 +4285,7 @@
"resume": "أحدث ملاحظاتك المحدثة. تابع من حيث توقفت.",
"revision": "بطاقات تعليمية مستحقة للمراجعة اليوم بالتكرار المتباعد.",
"sentiment": "النبرة العاطفية للملاحظات التي تم تحريرها في آخر 7 أيام. يتطلب 3 ملاحظات حديثة على الأقل وتفعيل الذكاء الاصطناعي.",
"stats": "إحصائيات الفهرس الدلالي: المواضيع النشطة، الملاحظات الجسرية، إجمالي الملاحظات المفهرسة.",
"stats": "عدد المواضيع والملاحظات التي تصل بينها والملاحظات المفهرسة.",
"usage": "الاستخدام الشهري لائتمانات الذكاء الاصطناعي حسب الميزة."
},
"widgetHelpClose": "إغلاق",
@@ -4319,7 +4320,7 @@
"resume": "متابعة من هنا",
"revision": "بطاقات تعليمية",
"sentiment": "مشاعر",
"stats": "الإحصائيات الدلالية",
"stats": "المواضيع والملاحظات",
"usage": "حصة الذكاء الاصطناعي"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "الصقه في الحقل أدناه وانقر على \"اتصال\". ستقوم المزامنة الأولى باستيراد جميع كتبك ومقالاتك.",
"readwiseHelpStep3": "يصبح كل كتاب ملاحظة في دفتر «Readwise 📚» — مع جميع تظليلاتك منظمة.",
"readwiseHelpStep4": "لتحديث الإبرازات الجديدة، عد إلى هنا وانقر على \"مزامنة الآن\".",
"readwiseHelpStep5": "💡 نصيحة: أنشئ بطاقات ذكاء اصطناعي من ملاحظة Readwise (زر 🎓 في المحرر) لمراجعة قراءاتك.",
"readwiseHelpStep5": "نصيحة: أنشئ بطاقات مراجعة من ملاحظة Readwise (زر البطاقات أعلى الملاحظة) لمراجعة قراءاتك.",
"readwiseInfo": "كيف يعمل Readwise؟",
"readwiseSynced": "مزامنة Readwise — {{created}} منشأة، {{updated}} محدثة",
"readwiseTokenPlaceholder": "رمز Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "اكتمل التحويل! تم إنشاء دفتر مرتبط.",
"convertToNotebook": "تحويل إلى دفتر",
"converting": "جاري التحويل…",
"createLocalDb": "أنشئ قاعدة بيانات محلية مستقلة",
"createLocalDb": "إنشاء جدول في هذه الملاحظة",
"createNotebook": "إنشاء دفتر",
"defaultOption1": "خيار 1",
"defaultOption2": "خيار 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "تمت إزالة الكتلة القديمة.",
"displayModeGallery": "معرض",
"displayModeTable": "طاولة",
"echoLoading": "جاري البحث عن الروابط الدلالية...",
"echoNameRequired": "أدخل أولاً اسماً لهذا الصف للبحث عن الروابط الدلالية.",
"echoLoading": "البحث عن ملاحظات قريبة…",
"echoNameRequired": "أدخل أولاً اسماً لهذا الصف للبحث عن ملاحظات قريبة.",
"echoNoMatch": "لم يتم العثور على ملاحظات تحتوي على \"{{query}}\" في مساحة عملك.",
"echoPopoverTitle": "الرنين الدلالي 🔮",
"echoPopoverTitle": "ملاحظات قريبة",
"echoSearchError": "حدث خطأ أثناء البحث.",
"echoUpgradeText": "حوّل هذا الجدول إلى دفتر لتفعيل التحليل العصبي لـ Memento.",
"echoUpgradeText": "حوّل هذا الجدول إلى دفتر حتى يجد ميمنتو الملاحظات القريبة.",
"emptyTable": "لا توجد صفوف في الجدول.",
"insertCitation": "إدراج رابط في المحرر",
"insertDesc": "ضمن البيانات المنظمة لدفترك",
@@ -4514,9 +4515,9 @@
"keywordMatch": "كلمة مفتاحية",
"linkToNotebook": "ربط بدفتر",
"loadError": "خطأ في تحميل البيانات المنظمة.",
"localDbTitle": "قاعدة بيانات مستقلة",
"localDbTitle": "جدول في هذه الملاحظة",
"namePlaceholder": "أدخل اسماً…",
"noEchoFound": "لم يتم اكتشاف روابط دلالية.",
"noEchoFound": "لم يُعثر على ملاحظات قريبة.",
"noNotebook": "تتطلب هذه الكتلة دفتر ملاحظات. انقل هذه الملاحظة إلى دفتر أولاً.",
"noNotebookDesc": "يعرض هذه الكتلة العرض المنظم لدفتر ملاحظات. اختر الدفتر المرتبط:",
"noSchema": "لا يوجد عرض منظم لهذا الدفتر بعد. قم بإعداده من رأس الدفتر.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "ربط بدفتر",
"selectOptionsPlaceholder": "خيارات مفصولة بفواصل",
"semanticEcho": "الرنين الدلالي",
"switchToLocalDb": "التبديل إلى قاعدة البيانات المحلية",
"turnIntoLabel": "قاعدة بيانات مدمجة",
"switchToLocalDb": "العودة إلى جدول هذه الملاحظة",
"turnIntoLabel": "جدول في الملاحظة",
"untitled": "بدون عنوان"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "ابحث عن ملاحظة…",
"selectOptions": "خيارات (واحد لكل سطر)",
"selectOptionsPlaceholder": "للقيام\\\nقيد التقدم\\\nمنجز",
"semanticResonances": "الرنين الدلالي",
"semanticResonances": "ملاحظات تلتقي",
"tagApplied": "جسور",
"viewCalendarHint": "التقويم — ملاحظاتك مرتبة حسب التاريخ",
"viewGallery": "معرض",

View File

@@ -407,7 +407,7 @@
"placeholder": "Suchen",
"searchPlaceholder": "Durchsuchen Sie Ihre Notizen...",
"semanticInProgress": "KI-Suche läuft...",
"semanticTooltip": "Semantische KI-Suche",
"semanticTooltip": "Suche nach Sinn",
"searching": "Wird gesucht...",
"noResults": "Keine Ergebnisse gefunden",
"resultsFound": "{count} Notizen gefunden",
@@ -861,7 +861,7 @@
"compareAll": "Alle vergleichen",
"mergeAll": "Alle zusammenführen",
"close": "Schließen",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % Nähe",
"backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo",
"bottomCueConsent": "KI-Verbindungen unten verfügbar",
@@ -918,7 +918,7 @@
"noContentReturned": "Kein Fusion-Inhalt von der API zurückgegeben",
"unknownDate": "Unbekanntes Datum"
},
"defaultInsight": "Diese Notizen scheinen semantisch verwandt zu sein.",
"defaultInsight": "Diese Notizen gehören zusammen.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "Labels konnten nicht bereinigt werden",
"indexingComplete": "Indexierung abgeschlossen: {count} Notiz(en) verarbeitet",
"indexingError": "Fehler bei der Indexierung",
"semanticIndexing": "Semantische Indizierung",
"semanticIndexingDescription": "Vektoren für alle Notizen generieren, um absichtsbasierte Suche zu ermöglichen",
"semanticIndexing": "Index für die Suche nach Bedeutung",
"semanticIndexingDescription": "Alle Notizen für die Suche nach Bedeutung vorbereiten",
"profile": "Profil",
"searchNoResults": "Keine Ergebnisse gefunden",
"languageAuto": "Sprache auf Auto eingestellt",
@@ -1664,7 +1664,7 @@
"title": "Funktionen",
"description": "KI-gestützte Fähigkeiten",
"titleSuggestions": "KI-gestützte Titelvorschläge",
"semanticSearch": "Semantische Suche mit Embeddings",
"semanticSearch": "Suche nach Bedeutung",
"paragraphReformulation": "Absatz-Reformulierung",
"memoryEcho": "Memory Echo tägliche Einblicke",
"notebookOrganization": "Notizbuch-Organisation",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "Suchindex neu erstellen",
"description": "Embeddings für alle Notizen neu generieren, um die semantische Suche zu verbessern.",
"description": "Den Index aller Notizen neu aufbauen, um die Suche nach Bedeutung zu verbessern.",
"button": "Index neu erstellen",
"success": "Indizierung abgeschlossen: {count} Notizen verarbeitet",
"failed": "Fehler während der Indizierung"
@@ -1984,7 +1984,7 @@
"legendWiki": "Eine Notiz verlinken",
"mentionShort": "Erwähnung",
"moreNodes": "+{count} auf der Karte",
"noInbound": "Keine eingehenden Wiki-Links verweisen auf diese Notiz.",
"noInbound": "Keine andere Notiz verweist auf diese.",
"noOutbound": "Diese Notiz ist noch nicht mit anderen Notizen verknüpft.",
"noWikiYet": "Noch keine Links zu anderen Notizen.",
"outboundHelp": "Notizen, auf die diese mit [[…]] im Text verweist.",
@@ -2190,7 +2190,7 @@
"custom": "Benutzerdefiniert"
},
"typeDescriptions": {
"scraper": "Extrahiert Inhalte von mehreren Websites und erstellt eine Zusammenfassung",
"scraper": "Liest mehrere Websites und schreibt eine Zusammenfassung",
"researcher": "Sucht nach Informationen zu einem Thema",
"monitor": "Überwacht ein Notizbuch und analysiert Notizen",
"slideGenerator": "Erstellt eine PowerPoint-Präsentation aus Notizen",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "z.B. Dienstag KI-Watch",
"description": "Beschreibung (optional)",
"descriptionPlaceholder": "Wöchentliche KI-Nachrichtenzusammenfassung",
"urlsLabel": "URLs zum Extrahieren",
"urlsLabel": "Adressen der zu lesenden Seiten",
"urlsOptional": "(optional)",
"sourceNotebook": "Zu überwachendes Notizbuch",
"selectNotebook": "Notizbuch auswählen...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "E-Mail-Benachrichtigung",
"notifyEmailHint": "Erhalten Sie eine E-Mail mit den Ergebnissen des Agenten nach jedem Durchlauf",
"includeImages": "Bilder einschließen",
"includeImagesHint": "Bilder von gescrapten Seiten extrahieren und an die generierte Notiz anhängen",
"includeImagesHint": "Bilder von den gelesenen Seiten nehmen und an die Notiz anhängen",
"back": "Zurück",
"configuration": "Konfiguration",
"options": "Optionen",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "KI-Watch",
"description": "Extrahiert Inhalte von 5 KI-spezialisierten Websites und erstellt eine wöchentliche Zusammenfassung."
"description": "Liest 5 KI-Websites und schreibt eine wöchentliche Zusammenfassung."
},
"veilleTech": {
"name": "Tech-Watch",
"description": "Extrahiert Inhalte von großen Tech-Websites und erstellt eine Nachrichtenübersicht."
"description": "Liest große Tech-Websites und schreibt eine Nachrichtenübersicht."
},
"veilleDev": {
"name": "Dev-Watch",
"description": "Extrahiert Inhalte von Entwickler-Websites und fasst neue Technologien und Frameworks zusammen."
"description": "Liest Entwickler-Websites und fasst neue Technologien zusammen."
},
"surveillant": {
"name": "Notiz-Beobachter",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "Agenten-Werkzeuge",
"webSearch": "Websuche",
"webScrape": "Web-Scraping",
"webScrape": "Webseiten lesen",
"noteSearch": "Notizsuche",
"noteRead": "Notiz lesen",
"noteCreate": "Notiz erstellen",
@@ -2431,15 +2431,15 @@
"btnLabel": "Hilfe",
"close": "Schließen",
"whatIsAgent": "Was ist ein 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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "Wie verwendet man einen Agenten?",
"howToUseContent": "1. Klicken Sie auf **„Neuer Agent\"** (oder beginnen Sie mit einer **Vorlage** unten auf der Seite).",
"types": "Agententypen",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "Erweiterter Modus (KI-Anweisungen, Max. Iterationen)",
"advancedContent": "Klicken Sie unten im Formular auf **„Erweiterter Modus\"**, um auf zusätzliche Einstellungen zuzugreifen.",
"tools": "Verfügbare Werkzeuge (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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "Häufigkeit & Planung",
"frequencyContent": "| Häufigkeit | Verhalten\n|-----------|----------\n| **Manuell** | Sie klicken selbst auf „Ausführen\".",
"targetNotebook": "Zielnotizbuch",
@@ -2447,7 +2447,7 @@
"templates": "Vorlagen",
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Tipps & Fehlerbehebung",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "Wählen Sie die Art der Aufgabe, die der Agent ausführen soll. Jeder Typ hat unterschiedliche Funktionen und Felder.",
"researchTopic": "Das Thema, das der Agent im Web recherchieren soll. Seien Sie spezifisch für bessere Ergebnisse.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Auf Pro upgraden",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro beinhaltet:",
"proSearch": "100 semantic searches / month",
"proSearch": "1.000 KI-Credits / Monat",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Diagramm-Generierung",
"featureFlashcards": "KI-Karteikarten",
"featureFlashcards": "Lernkarten",
"featurePublishEnhance": "KI-Veröffentlichung",
"featureSlides": "Foliengenerierung",
"featureVoice": "Sprachtranskription",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 Umformulierungen / Monat",
"businessFeature4": "1.000 Chat-Nachrichten / Monat",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Benutzerdefinierte Kontingente, SSO, Prioritätssupport.",
"enterpriseDescription": "Benutzerdefinierte Kontingente, Einmalanmeldung für das Team, Prioritätssupport.",
"contactSales": "Vertrieb kontaktieren",
"startCheckout": "Loslegen",
"checkoutLoading": "Checkout wird geladen…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Ihr Abonnement verlängert sich automatisch.",
"businessDescription": "Für Teams und Produktverantwortliche.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Einmalanmeldung für das ganze Team",
"enterpriseFeature3": "Engagierter Support",
"enterpriseFeature4": "Individuelle Abrechnung",
"enterpriseFeature5": "Garantierte SLA",
"enterpriseFeature5": "Garantierte Antwortzeit",
"subtitle": "Wählen Sie den passenden Plan",
"freeDescription": "Um Memento kennenzulernen",
"freeF1": "30 semantische Suchen",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Abrechnungsstatus konnte nicht abgerufen werden",
"fetchQuotasFailed": "Kontingente konnten nicht abgerufen werden",
"fetchInvoicesFailed": "Rechnungsverlauf konnte nicht geladen werden.",
"savePercent": "~17% sparen",
"savePercent": "~{percent} % sparen",
"billedYearTotal": "also {price} im Jahr",
"cancelSubscription": "Abonnement kündigen",
"changeOffer": "Angebot wechseln",
"downgradeToFree": "Zum kostenlosen Angebot zurück",
@@ -3379,13 +3380,13 @@
"cta": "Kontakt",
"feature0": "Alles aus Business",
"feature1": "Unbegrenzte Agenten",
"feature2": "SSO / SAML",
"feature3": "Audit-Logs & SLA",
"feature2": "Einmalanmeldung für das ganze Team",
"feature3": "Aktivitätsprotokoll und garantierte Antwortzeit",
"feature4": "Dedizierter Support",
"feature5": "Live-Onboarding"
"feature5": "Begleitete Einrichtung"
},
"basicPrice": "Kostenlos",
"savePercent": "~17% sparen",
"savePercent": "~{percent} % sparen",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Lösche dein Konto und alle zugehörigen Daten dauerhaft und unwiderruflich.",
"whatWillBeDeleted": "Folgendes wird dauerhaft gelöscht:",
"item1": "Alle Notizen, Notizbücher und Anhänge",
"item2": "Alle pgvector semantischen Embeddings",
"item2": "Der Index, der Ihre Notizen verbindet",
"item3": "Alle BYOK API-Schlüssel",
"item4": "Alle KI-Gespräche und Brainstorm-Sitzungen",
"item5": "Kontingent- und Nutzungsverlauf",
@@ -3559,7 +3560,7 @@
"step_features_title": "Ihre KI-Superkräfte",
"step_features_subtitle": "Wählen Sie Ihren Einstieg.",
"step_features_cta": "Los geht's!",
"feature_search_title": "Semantische Suche",
"feature_search_title": "Suche nach Sinn",
"feature_search_desc": "Finden Sie jede Notiz nach Bedeutung, nicht nur nach Schlüsselwörtern.",
"feature_flashcards_title": "KI-Karteikarten",
"feature_flashcards_desc": "Lernkarten aus Ihren Notizen in einem Klick erstellen.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Klicken Sie auf eine Ideenkarte, um sie mit Teil-Ideen zu erweitern und weiter zu erkunden.",
"hint_brainstorm_export_title": "Sitzung exportieren",
"hint_brainstorm_export_desc": "Exportieren Sie die gesamte Brainstorming-Sitzung als strukturierte Notiz ins gewählte Carnet.",
"hint_insights_clusters_title": "Notiz-Cluster",
"hint_insights_clusters_desc": "Ihre Notizen werden automatisch in thematische Cluster gruppiert. Klicken Sie auf einen Cluster für Details.",
"hint_insights_clusters_title": "Notizthemen",
"hint_insights_clusters_desc": "Ihre Notizen sind nach Themen gruppiert. Klicken Sie auf ein Thema, um die Notizen zu sehen.",
"hint_insights_bridge_title": "Brückennotizen",
"hint_insights_bridge_desc": "Brückennotizen verbinden mehrere Cluster und sind hervorgehoben, weil sie wichtige Verbindungen enthalten.",
"hint_insights_refresh_title": "Cluster aktualisieren",
"hint_insights_refresh_desc": "Wenn Sie neue Notizen hinzugefügt haben, klicken Sie auf „Aktualisieren\", um die Cluster neu zu berechnen."
"hint_insights_bridge_desc": "Brückennotizen verbinden mehrere Themen. Sie zeigen, wo Ihre Ideen sich kreuzen.",
"hint_insights_refresh_title": "Themen aktualisieren",
"hint_insights_refresh_desc": "Wenn Sie Notizen hinzugefügt haben, klicken Sie auf „Aktualisieren, um die Themen neu zu berechnen."
},
"blockAction": {
"moveUp": "Block nach oben verschieben",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "Verbindungen",
"toggleMenu": "Menü ein- oder ausblenden",
"subtitle": "Entdecke die verborgene Architektur deines Wissens",
"subtitle": "Sehen Sie, wie Ihre Notizen zusammenhängen",
"resync": "Aktualisieren",
"mapping": "Kartierung…",
"loading": "Deine Notizen werden geladen…",
"mappingTitle": "Dein Wissen wird kartiert…",
"mappingHint": "Dies kann ein bis drei Minuten dauern. Sie können weiter browsen; die Seite wird automatisch aktualisiert.",
"analyzeNow": "Semantische Analyse starten",
"emptyNeedMoreNotes": "Fügen Sie {count} weitere Notizen hinzu, um semantisches Clustering freizuschalten (Minimum 10).",
"embeddingsHint": "Nur {indexed} von {total} Notizen sind für KI indiziert.",
"analyzeNow": "Themen aktualisieren",
"emptyNeedMoreNotes": "Fügen Sie {count} weitere Notizen hinzu, um Ihre Themen zu gruppieren (Minimum 10).",
"embeddingsHint": "Nur {indexed} von {total} Notizen sind bereit, nach Themen gruppiert zu werden.",
"vsGraphHint": "Nicht dasselbe wie die „Link-Map\" (Netzwerk-Symbol): Hier gruppiert die KI nach Bedeutung, nicht nach Links.",
"openGraphMap": "Link-Map öffnen",
"analysisFailed": "Analyse fehlgeschlagen. Überprüfe deine KI-Einstellungen.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "Notizen",
"clusterFallback": "Thema {index}",
"unclusteredNotes": "{count} Notizen keinem Thema zugeordnet (im Graphen ausgeblendet).",
"emptyTitle": "Entdecke deine Wissenscluster",
"emptyDescription": "Klicken Sie auf „Netzwerk neu synchronisieren\", um Ihre Notizen zu analysieren und verborgene Verbindungen zu finden",
"emptyTitle": "Entdecke deine Themen",
"emptyDescription": "Klicken Sie auf „Aktualisieren, um Ihre Notizen nach Themen zu gruppieren.",
"stats": {
"clusters": "Cluster",
"bridgeNotes": "Brücken-Notizen",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "Semantische Cluster",
"title": "Themen",
"notesCount": "{count} Notizen",
"centralNotes": "Zentrale Notizen",
"emptyCluster": "Keine Notizen in diesem Cluster"
"emptyCluster": "Keine Notizen in diesem Thema"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Affinität {score}%",
"moreThemes": "+{count}",
"needsResync": "Netzwerk neu synchronisieren, um Brückenpaare zu aktualisieren.",
"scoreHint": "Mittlere semantische Affinität zu den beiden Themen, die diese Notiz überbrückt (Kosinusähnlichkeit)."
"scoreHint": "Wie nah diese Notiz an den beiden Themen liegt, die sie verbindet."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Graph",
"viewDashboard": "Dashboard",
"isolatedClusters": {
"title": "Isolierte Cluster ({count})",
"title": "Isolierte Themen ({count})",
"badge": "Nicht verbunden",
"empty": "Alle Cluster sind verbunden!"
"empty": "Alle Themen sind bereits durch mindestens eine Brückennotiz verbunden."
},
"focusCluster": {
"title": "Cluster-Fokus aktiv",
"description": "Dieses thematische Cluster sammelt {count} ergänzende Notizen. Klicken Sie auf eine Notiz, um sie zu öffnen.",
"title": "Thema geöffnet",
"description": "Dieses Thema umfasst {count} Notizen. Klicken Sie auf eine Notiz, um sie zu öffnen.",
"close": "Schließen"
},
"badgeDominant": "Dominant",
"bridgeCount": "Brücke(n)",
"echoTitle": "Sie kehren immer wieder zu dieser Idee zurück",
"tipClusters": "Die KI gruppierte Ihre Notizen nach semantischer Affinität — unabhängig vom Carnet.",
"tipClusters": "Die KI hat Ihre Notizen nach Themen gruppiert, auch über Notizbücher hinweg.",
"tipClustersAction": "Klicken Sie auf ein Thema, um dessen Notizen zu sehen. Klicken Sie auf eine Notiz, um sie zu öffnen.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Klicken Sie auf eine Notiz, um sie zu öffnen und die Verbindung zu verstehen.",
"tipEcho": "Memory Echo erkennt zwei Notizen, die zu sehr verschiedenen Zeiten verfasst wurden und dasselbe Thema behandeln.",
"tipEchoAction": "Zwei Notizen, dieselbe Idee, verschiedene Momente. Klicken Sie zum Erkunden.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Klicken Sie auf „Brückennotiz erstellen\", um die Notiz zu schreiben und sofort zu öffnen.",
"tipIsolated": "Diese Themen sind isoliert: Keine Notiz verbindet sie mit den anderen. Vielleicht fehlt eine Perspektive.",
"tipIsolatedAction": "Diese Themen haben keine verbindende Notiz zum restlichen Denken.",
"recalcSystem": {
"title": "Neuberechnungssystem",
"statusSynced": "Synchronisiert",
"scheduledCron": "Geplant",
"lastSync": "Letzte Sync"
"title": "Themenaktualisierung",
"statusSynced": "Aktuell",
"scheduledCron": "Automatische Aktualisierung",
"lastSync": "Letzte Aktualisierung"
},
"resetFocus": "Fokus zurücksetzen",
"resetFocus": "Alles anzeigen",
"listView": "Liste",
"graphAriaLabel": "Semantisches Netzwerk: {clusters} Cluster, {notes} Notizen, {bridges} Brückennotizen. Pfeiltasten zur Navigation.",
"listAriaLabel": "Barrierefreie Cluster-Liste mit Notizen und Brückenverbindungen",
"graphAriaLabel": "Themenkarte: {clusters} Themen, {notes} Notizen, {bridges} Brückennotizen. Listenansicht für einfachere Navigation.",
"listAriaLabel": "Liste der Themen, Notizen und Brückennotizen",
"dashboardFilterPlaceholder": "Brücken-Notizen, Themen filtern…",
"legendFilterPlaceholder": "Themen filtern…",
"legendShowLess": "Weniger anzeigen",
@@ -3896,7 +3897,7 @@
"genericError": "Beim Senden an Ihre Instanz ist ein Fehler aufgetreten.",
"ignore": "beherrscht",
"processing": "Verarbeiten…",
"processingDetail": "Tags, semantische Zusammenfassung und Embeddings werden generiert.",
"processingDetail": "Notiz wird vorbereitet: Labels, Zusammenfassung, Suche nach Bedeutung.",
"publishedOn": "Veröffentlicht auf {domain}",
"quitSimulator": "Simulator schließen",
"realtimeCapture": "Datum: Live-Erfassung",
@@ -4156,7 +4157,7 @@
"match": "Anmelden",
"memoryEchoDisabled": "Memory Echo ist in Ihren KI-Einstellungen deaktiviert.",
"mindMap": "Mindmap",
"mindMapEmpty": "Noch keine Themen erkannt. Semantische Analyse gruppiert Ihre Notizen nach Thema.",
"mindMapEmpty": "Noch keine Themen. Die KI gruppiert Ihre Notizen nach Thema.",
"mindMapOpen": "Insights-Karte öffnen →",
"mindMapUnavailable": "Mindmap nicht verfügbar.",
"new": "Notizen erstellt",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "Zur Notiz hinzufügen",
"bridge": "Brücken-Idee",
"connect": "Semantischer Link",
"connect": "Notiz verknüpfen",
"continue": "Fortfahren",
"daily": "Tagebuch",
"explore": "Thema erkunden",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Ihr Second Brain auf einen Blick: KI-Vorschläge, schnelle Erfassung und nächste Schritte. Nutzen Sie die Verknüpfungen unten, um sofort loszulegen.",
"resumeOpen": "Fortsetzen",
"review": "Wiederholen",
"semanticConnection": "Semantische Affinität",
"semanticConnection": "Nähe",
"sentiment": "Stimmung",
"sentimentDominant": "Dominanter Ton diese Woche",
"suggestedBridge": "Verbindet {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Behalten, Strähne und Gesamtkarten.",
"gmail": "E-Mail-Erfassungen, die über Gmail synchronisiert wurden.",
"inbox": "Notizen, die auf Einordnung in Notizbücher warten.",
"intelligence": "Semantische Links, Brücken-Ideen und Agenten-Entdeckungen.",
"intelligence": "Notizen, die sich treffen, verbindende Ideen und Agentenergebnisse.",
"link-suggestions": "Passagen zum Verlinken in Ihrer aktuellen Notiz.",
"mind-map": "Themencluster, größen skaliert nach Notizvolumen.",
"next-paths": "KI-vorgeschlagene nächste Schritte aus deiner letzten Arbeit.",
@@ -4258,7 +4259,7 @@
"resume": "Setzen Sie Ihre aktuellsten Notizen dort fort, wo Sie aufgehört haben.",
"revision": "Karteikarten fällig für Wiederholung mit Spaced Repetition.",
"sentiment": "Emotionaler Ton Ihrer Notizen diese Woche.",
"stats": "Cluster, Brücken-Notizen und insgesamt indizierte Notizen.",
"stats": "Themen, verbindende Notizen und indizierte Notizen.",
"usage": "Verbleibende KI-Credits und Monatslimits."
},
"widgetDone": "Fertig",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Lern-Behaltensrate, Wiederholungssträhne und Gesamtkarten.",
"gmail": "E-Mail-Erfassungen, die über die Gmail-Integration synchronisiert wurden.",
"inbox": "Notizen ohne Notizbuch. Ordnen Sie sie ein, um Ihr Second Brain aufgeräumt zu halten.",
"intelligence": "KI-Entdeckungen: semantische Verbindungen zwischen Notizen, Brücken-Ideen und Agenten-Ergebnisse.",
"intelligence": "Was die KI gefunden hat: Notizen, die sich treffen, verbindende Ideen und Agentenergebnisse.",
"link-suggestions": "Passagen aus anderen Notizen, die es wert sind, in Ihre aktuelle Arbeit eingefügt zu werden.",
"mind-map": "Themencluster, größen skaliert nach Notizvolumen. Klicken Sie, um in Verbindungen zu erkunden.",
"next-paths": "Vorgeschlagene nächste Schritte basierend auf Ihrer zuletzt bearbeiteten Notiz: fortsetzen, verknüpfen, verbinden oder recherchieren.",
@@ -4284,7 +4285,7 @@
"resume": "Ihre zuletzt aktualisierten Notizen. Machen Sie dort weiter, wo Sie aufgehört haben.",
"revision": "Heute fällige Karteikarten für Wiederholung mit Spaced Repetition.",
"sentiment": "Emotionaler Ton der in den letzten 7 Tagen bearbeiteten Notizen. Erfordert mindestens 3 aktuelle Notizen und aktivierte KI.",
"stats": "Semantische Index-Statistiken: aktive Themen, Brücken-Notizen, insgesamt indizierte Notizen.",
"stats": "Anzahl der Themen, verbindenden Notizen und indizierten Notizen.",
"usage": "Monatliche KI-Credit-Nutzung nach Funktion."
},
"widgetHelpClose": "Schließen",
@@ -4319,7 +4320,7 @@
"resume": "Hier fortsetzen",
"revision": "Karteikarten",
"sentiment": "Stimmung",
"stats": "Semantische Statistiken",
"stats": "Themen und Notizen",
"usage": "KI-Kontingent"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Fügen Sie ihn ins Feld unten ein und klicken Sie auf „Verbinden\". Die erste Synchronisierung importiert alle Bücher und Artikel.",
"readwiseHelpStep3": "Jedes Buch wird zu einer Notiz in einem „Readwise 📚\"-Notizbuch — mit all Ihren Highlights organisiert.",
"readwiseHelpStep4": "Um neue Hervorhebungen zu aktualisieren, kommen Sie hierher zurück und klicken Sie auf \"Jetzt synchronisieren\".",
"readwiseHelpStep5": "💡 Tipp: Erstellen Sie KI-Flashcards aus einer Readwise-Notiz (🎓-Button im Editor), um Ihre Lektüre zu wiederholen.",
"readwiseHelpStep5": "Tipp: Erstellen Sie Lernkarten aus einer Readwise-Notiz (Karten-Schaltfläche oben in der Notiz), um Ihre Lektüre zu wiederholen.",
"readwiseInfo": "Wie funktioniert Readwise?",
"readwiseSynced": "Readwise-Sync — {{created}} erstellt, {{updated}} aktualisiert",
"readwiseTokenPlaceholder": "Readwise-Token…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Konvertierung abgeschlossen! Verknüpftes Notizbuch erstellt.",
"convertToNotebook": "In Notizbuch umwandeln",
"converting": "Konvertieren…",
"createLocalDb": "Eine eigenständige lokale Datenbank erstellen",
"createLocalDb": "Tabelle in dieser Notiz erstellen",
"createNotebook": "Notizbuch erstellen",
"defaultOption1": "Option 1",
"defaultOption2": "Option 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Veralteter Block entfernt.",
"displayModeGallery": "Galerie",
"displayModeTable": "Tisch",
"echoLoading": "Suche nach semantischen Verbindungen...",
"echoNameRequired": "Geben Sie zuerst einen Namen für diese Zeile ein, um nach semantischen Verbindungen zu suchen.",
"echoLoading": "Suche nach nahen Notizen…",
"echoNameRequired": "Geben Sie zuerst einen Namen für diese Zeile ein, um nahe Notizen zu suchen.",
"echoNoMatch": "Keine Notizen mit „{{query}}\" in Ihrem Bereich gefunden.",
"echoPopoverTitle": "Semantische Resonanzen 🔮",
"echoPopoverTitle": "Nahe Notizen",
"echoSearchError": "Bei der Suche ist ein Fehler aufgetreten.",
"echoUpgradeText": "Wandle diese Tabelle in ein Notizbuch um, um Mementos neuronale Analyse zu aktivieren.",
"echoUpgradeText": "Wandle diese Tabelle in ein Notizbuch um, damit Memento nahe Notizen findet.",
"emptyTable": "Keine Zeilen in der Tabelle.",
"insertCitation": "Link im Editor einfügen",
"insertDesc": "Betten Sie die strukturierten Daten Ihres Notizbuchs ein",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Schlüsselwort",
"linkToNotebook": "Ein Notizbuch verlinken",
"loadError": "Fehler beim Laden der strukturierten Daten.",
"localDbTitle": "Eigenständige Datenbank",
"localDbTitle": "Tabelle in dieser Notiz",
"namePlaceholder": "Namen eingeben…",
"noEchoFound": "Keine semantischen Verbindungen erkannt.",
"noEchoFound": "Keine nahen Notizen gefunden.",
"noNotebook": "Dieser Block erfordert ein Notizbuch. Verschieben Sie diese Notiz zuerst in ein Notizbuch.",
"noNotebookDesc": "Dieser Block zeigt die strukturierte Ansicht eines Notizbuchs. Wählen Sie das zu verknüpfende Notizbuch:",
"noSchema": "Dieses Notizbuch hat noch keine strukturierte Ansicht. Richten Sie sie im Notizbuch-Header ein.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Ein Notizbuch verlinken",
"selectOptionsPlaceholder": "Optionen durch Kommas getrennt",
"semanticEcho": "Semantische Resonanzen",
"switchToLocalDb": "Zur lokalen Datenbank wechseln",
"turnIntoLabel": "Inline-Datenbank",
"switchToLocalDb": "Zurück zur Tabelle dieser Notiz",
"turnIntoLabel": "Tabelle in der Notiz",
"untitled": "Unbenannt"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Notiz suchen…",
"selectOptions": "Optionen (eine pro Zeile)",
"selectOptionsPlaceholder": "Zu erledigen\\\nIn Bearbeitung\\\nErledigt",
"semanticResonances": "Semantische Resonanzen",
"semanticResonances": "Notizen, die zusammengehören",
"tagApplied": "Brücken",
"viewCalendarHint": "Kalender — deine Notizen nach Datum sortiert",
"viewGallery": "Galerie",

View File

@@ -114,6 +114,17 @@
"title": "Notes",
"newNote": "New note",
"reorganize": "Reorganize notes",
"selectAll": "Select all",
"deselectAll": "Deselect all",
"selectedCount": "{count} notes selected",
"selectedCountOne": "1 note selected",
"bulkMove": "Move",
"bulkTrash": "Trash",
"selectNote": "Select this note",
"confirmBulkDeleteTitle": "Send to trash",
"confirmBulkDelete": "These notes will go to the trash. You can restore them later.",
"bulkTrashedToast": "{count} notes sent to trash.",
"bulkMovedToast": "{count} notes moved.",
"untitled": "Untitled",
"placeholder": "Take a note...",
"markdownPlaceholder": "Take a note... (Markdown supported)",
@@ -408,7 +419,7 @@
"placeholder": "Search",
"searchPlaceholder": "Search your notes...",
"semanticInProgress": "AI search in progress...",
"semanticTooltip": "AI semantic search",
"semanticTooltip": "Search by meaning",
"searching": "Searching...",
"noResults": "No results found",
"resultsFound": "{count} notes found",
@@ -841,7 +852,7 @@
"match": "{percentage}% match",
"fused": "Fused",
"clickToView": "Click to view note →",
"defaultInsight": "These notes appear to be semantically related.",
"defaultInsight": "These notes belong together.",
"overlay": {
"title": "Connected Notes",
"searchPlaceholder": "Search connections...",
@@ -883,7 +894,7 @@
"backToNote": "Back to my note",
"openInEditor": "Open in editor",
"badgeLabel": "Memory Echo",
"affinityBadge": "{percentage}% semantic affinity",
"affinityBadge": "{percentage}% closeness",
"intro": "Memento found another note on the same topic. Preview it, insert a citation, or merge — without leaving this one.",
"detectedIn": "Passage found in: {title}",
"helpToggle": "How does this work?",
@@ -902,7 +913,7 @@
"hideAll": "Hide extra connections ({count})",
"retroTitle": "Notes that cite this content",
"retroDescription": "This passage is quoted in {count} other note(s):",
"consentRequired": "Enable AI processing in Settings → AI to see semantic connections for this note.",
"consentRequired": "Enable AI processing in Settings → AI to see this notes links.",
"bottomCueLoading": "Memory Echo is scanning below…",
"bottomCueFound": "{count} related notes below",
"bottomCueFoundOne": "1 related note below",
@@ -976,7 +987,7 @@
"clipPage": "Clip this page",
"analyzingSource": "Analyzing source",
"processing": "Processing…",
"processingDetail": "Generating tags, semantic summary and embeddings.",
"processingDetail": "Preparing the note: labels, summary, search by meaning.",
"successBadge": "Success",
"sentToNotebook": "Note saved to notebook",
"viewInMomento": "View in Memento",
@@ -1087,8 +1098,8 @@
"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",
"semanticIndexing": "Index for search by meaning",
"semanticIndexingDescription": "Prepare all notes for search by meaning",
"profile": "Profile",
"searchNoResults": "No settings found",
"languageAuto": "Language set to Auto",
@@ -1712,7 +1723,7 @@
"title": "Features",
"description": "AI-powered capabilities",
"titleSuggestions": "AI-powered title suggestions",
"semanticSearch": "Semantic search with embeddings",
"semanticSearch": "Search by meaning",
"paragraphReformulation": "Paragraph reformulation",
"memoryEcho": "Memory Echo daily insights",
"notebookOrganization": "Notebook organization",
@@ -1827,7 +1838,7 @@
},
"indexing": {
"title": "Rebuild Search Index",
"description": "Regenerate embeddings for all notes to improve semantic search.",
"description": "Rebuild the index of all notes to improve search by meaning.",
"button": "Rebuild Index",
"success": "Indexing complete: {count} notes processed",
"failed": "Error during indexing"
@@ -1900,7 +1911,7 @@
"featurePublishEnhance": "AI Publishing",
"featureBrainstormExpand": "Brainstorm expansions",
"featureBrainstormEnrich": "Brainstorm enrichments",
"featureFlashcards": "AI flashcards",
"featureFlashcards": "Review cards",
"featureVoice": "Voice transcription",
"featureSlides": "Presentations",
"featureDiagrams": "Diagrams",
@@ -2094,7 +2105,7 @@
"inboundList": "To this note ({count})",
"outboundList": "From this note ({count})",
"unlinkedList": "Unlinked mentions ({count})",
"noInbound": "No inbound wiki links point to this note.",
"noInbound": "No other note points to this one.",
"noOutbound": "This note does not link to other notes yet.",
"refBadge": "In",
"toBadge": "Out"
@@ -2282,7 +2293,7 @@
"custom": "Custom"
},
"typeDescriptions": {
"scraper": "Scrapes multiple sites and creates a summary",
"scraper": "Reads several sites and writes a summary",
"researcher": "Searches for information on a topic",
"monitor": "Watches a notebook and analyzes notes",
"slideGenerator": "Creates a PowerPoint presentation from notes",
@@ -2296,7 +2307,7 @@
"namePlaceholder": "e.g. Tuesday AI Watch",
"description": "Description (optional)",
"descriptionPlaceholder": "Weekly AI news summary",
"urlsLabel": "URLs to scrape",
"urlsLabel": "Pages to read",
"urlsOptional": "(optional)",
"sourceNotebook": "Notebook to watch",
"selectNotebook": "Select a notebook...",
@@ -2361,7 +2372,7 @@
"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",
"includeImagesHint": "Take images from the pages read and attach them to the note",
"back": "Back",
"configuration": "Configuration",
"options": "Options"
@@ -2440,15 +2451,15 @@
},
"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."
"description": "Reads feeds from 6 AI sites (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) and writes a weekly summary."
},
"veilleTech": {
"name": "Tech Watch",
"description": "Scrapes tech RSS feeds (Hacker News, DEV, Product Hunt) and creates a daily news summary."
"description": "Reads tech feeds (Hacker News, DEV, Product Hunt) and writes a daily summary."
},
"veilleDev": {
"name": "Dev Watch",
"description": "Scrapes dev RSS feeds (JavaScript, TypeScript, React) and summarizes new tech and frameworks."
"description": "Reads development feeds (JavaScript, TypeScript, React) and summarizes what is new."
},
"surveillant": {
"name": "Note Observer",
@@ -2495,7 +2506,7 @@
"tools": {
"title": "Agent Tools",
"webSearch": "Web Search",
"webScrape": "Web Scrape",
"webScrape": "Read web pages",
"noteSearch": "Note Search",
"noteRead": "Read Note",
"noteCreate": "Create Note",
@@ -2524,15 +2535,15 @@
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, 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",
"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\nReads a **list of pages** you give it and writes a summary.\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 read 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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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",
@@ -2545,7 +2556,7 @@
"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).",
"urls": "List of pages to read. RSS feeds work too — a feed address (e.g. site.com/feed) often gives more articles.",
"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.",
@@ -2629,7 +2640,7 @@
"slashCatText": "Text",
"slashCatMedia": "Media",
"slashCatData": "Data",
"slashCatEmbed": "Embed",
"slashCatEmbed": "Inserted",
"slashCatFormatting": "Formatting",
"slashCatAi": "AI Note",
"placeholderH1": "Main heading...",
@@ -3190,7 +3201,7 @@
"relationEmpty": "Link a note…",
"relationNoResults": "No note found",
"relationSearch": "Search a note…",
"semanticResonances": "Semantic resonances",
"semanticResonances": "Notes that meet",
"insertLink": "Insert link in editor"
},
"brainstorm": {
@@ -3413,7 +3424,7 @@
"businessFeature3": "Your own keys · {count} providers",
"businessFeature4": "Agents & brainstorm (credits)",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Unlimited credits or dedicated pool, SSO, priority support.",
"enterpriseDescription": "Unlimited credits or dedicated pool, single sign-on for the team, priority support.",
"contactSales": "Contact us",
"startCheckout": "Get Started",
"checkoutLoading": "Loading checkout…",
@@ -3468,10 +3479,10 @@
"paidPlanDesc": "Your subscription renews automatically.",
"businessDescription": "For teams and product leaders.",
"enterpriseFeature1": "Unlimited AI credits or dedicated pool",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Single sign-on for the whole team",
"enterpriseFeature3": "Dedicated support",
"enterpriseFeature4": "Custom invoicing",
"enterpriseFeature5": "Guaranteed SLA",
"enterpriseFeature5": "Guaranteed response time",
"subtitle": "Choose the plan that suits you",
"freeDescription": "To discover Memento",
"freeF1": "Up to 100 notes",
@@ -3508,7 +3519,8 @@
"fetchStatusFailed": "Failed to fetch billing status",
"fetchQuotasFailed": "Failed to load credit usage",
"fetchInvoicesFailed": "Failed to load billing history.",
"savePercent": "Save ~17%",
"savePercent": "Save ~{percent}%",
"billedYearTotal": "thats {price} a year",
"startTrialCta": "Start {days}-day free trial",
"trialFeature": "{days}-day free trial (card required)",
"trialEndsOn": "Your free trial ends on {date}. You will then be billed automatically.",
@@ -3663,7 +3675,7 @@
"perMonthAnnual": "/mo, billed yearly",
"perUser": "+ €3.90/user",
"perUserAnnual": "+ €2.90/user, yearly",
"savePercent": "Save ~17%",
"savePercent": "Save ~{percent}%",
"proMonthly": "€9.90",
"proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90",
@@ -3708,10 +3720,10 @@
"cta": "Talk to us",
"feature0": "Unlimited AI credits or dedicated pool",
"feature1": "Everything in Business",
"feature2": "SSO / SAML",
"feature3": "Audit logs & SLA",
"feature2": "Single sign-on for the whole team",
"feature3": "Activity log and guaranteed response time",
"feature4": "Dedicated support",
"feature5": "Live onboarding"
"feature5": "Guided setup"
},
"basicPrice": "Free",
"trialBadge": "{days}-day free trial",
@@ -3799,15 +3811,15 @@
"insightsView": {
"title": "Connections",
"toggleMenu": "Show or hide the menu",
"subtitle": "Discover the hidden architecture of your knowledge",
"subtitle": "See how your notes connect",
"resync": "Update",
"mapping": "Mapping…",
"loading": "Loading your notes…",
"mappingTitle": "Mapping your knowledge…",
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
"analyzeNow": "Start semantic analysis",
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).",
"embeddingsHint": "Only {indexed} of {total} notes are indexed for AI. Analysis will prepare them first (this may take several minutes).",
"analyzeNow": "Update themes",
"emptyNeedMoreNotes": "Add {count} more notes to group your themes (minimum 10).",
"embeddingsHint": "Only {indexed} of {total} notes are ready to group by theme. Update will prepare them first (this may take several minutes).",
"vsGraphHint": "This is not the same as “Link map” (network icon in the sidebar): here, AI groups your notes by theme.",
"openGraphMap": "Open link map",
"analysisFailed": "Analysis failed. Check your AI settings or try again.",
@@ -3825,8 +3837,8 @@
"graphNotesLabel": "notes",
"clusterFallback": "Theme {index}",
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
"emptyTitle": "Discover your knowledge clusters",
"emptyDescription": "Click Update to analyze your notes and find hidden connections",
"emptyTitle": "Discover your themes",
"emptyDescription": "Click Update to group your notes by theme.",
"stats": {
"clusters": "Themes",
"bridgeNotes": "Bridge notes",
@@ -3834,16 +3846,16 @@
"bridgesSubtitle": "cross-theme notes"
},
"clusters": {
"title": "Semantic clusters",
"title": "Themes",
"notesCount": "{count} notes",
"centralNotes": "Central notes",
"emptyCluster": "No notes in this cluster"
"emptyCluster": "No notes in this theme"
},
"bridgeNotes": {
"title": "Bridge notes",
"score": "Score: {score}%",
"affinity": "Affinity {score}%",
"scoreHint": "Mean semantic affinity to the two themes this note bridges (cosine similarity).",
"scoreHint": "How close this note is to the two themes it links.",
"moreThemes": "+{count}",
"needsResync": "Click Update to refresh theme pairs.",
"empty": "No significant bridge notes yet. Deepen your research to find new connections."
@@ -3864,35 +3876,35 @@
"viewGraph": "Graph",
"viewDashboard": "Dashboard",
"isolatedClusters": {
"title": "Isolated clusters ({count})",
"title": "Isolated themes ({count})",
"badge": "Not connected",
"empty": "All your semantic clusters are interconnected!"
"empty": "All your themes are already linked by at least one bridge note."
},
"focusCluster": {
"title": "Cluster Focus Active",
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:",
"title": "Theme open",
"description": "This theme gathers {count} notes. Click a note to open it.",
"close": "Close"
},
"badgeDominant": "Dominant",
"bridgeCount": "bridge(s)",
"echoTitle": "You keep returning to this idea",
"tipClusters": "AI grouped your notes by semantic affinity — regardless of which notebook they're in. Each theme represents a subject your mind keeps returning to.",
"tipClusters": "AI grouped your notes by theme, even across notebooks. Each theme is a subject you keep returning to.",
"tipClustersAction": "Click a theme to see its notes. Click a note to open it.",
"tipBridgeNotes": "A bridge note sits at the crossing of two themes (semantic brokerage). We keep the strongest pair — not every weak theme touch.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Click a note to open it and understand the connection.",
"tipEcho": "Memory Echo detects two notes written at very different times that cover the same idea. Your mind revisited a thought without realising it.",
"tipEchoAction": "Two notes, same idea, different moments. Click to explore.",
"tipSuggestions": "Suggested only for near-miss theme pairs (link prediction): related enough to deserve a bridge, not forced metaphors. Create the note if the shared object or method is real.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Click 'Create bridge note' to write the note and open it immediately.",
"tipIsolated": "These themes are isolated: no note connects them to the others. Maybe you're exploring a fragile idea? One synthesis note would be enough to create the link.",
"tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
"recalcSystem": {
"title": "Recalculation system",
"statusSynced": "Synced",
"scheduledCron": "Scheduled",
"lastSync": "Last sync"
"title": "Theme updates",
"statusSynced": "Up to date",
"scheduledCron": "Automatic update",
"lastSync": "Last update"
},
"resetFocus": "Reset focus",
"resetFocus": "Show all",
"listView": "List",
"listFilterPlaceholder": "Filter themes or notes…",
"listFilterEmpty": "No theme or note matches this filter.",
@@ -3901,8 +3913,8 @@
"listSortSize": "By size",
"listSortBridges": "By bridges",
"listSortAlpha": "AZ",
"graphAriaLabel": "Semantic network: {clusters} clusters, {notes} notes, {bridges} bridge notes. Switch to List view for accessible navigation.",
"listAriaLabel": "Accessible cluster list with notes and bridge connections"
"graphAriaLabel": "Theme map: {clusters} themes, {notes} notes, {bridges} bridge notes. Switch to List view to navigate more easily.",
"listAriaLabel": "List of themes, notes, and bridge notes"
},
"consent": {
"banner": {
@@ -3962,7 +3974,7 @@
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings",
"item2": "The index used to connect your notes",
"item3": "All your provider keys",
"item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history",
@@ -4076,18 +4088,18 @@
"chooseNotebook": "Choose a notebook",
"changeNotebook": "Change notebook",
"change": "Change",
"localDbTitle": "Standalone Database",
"echoPopoverTitle": "Semantic Resonances 🔮",
"noEchoFound": "No semantic connections detected.",
"echoUpgradeText": "Convert this table to a notebook to activate Memento's neural analysis.",
"echoLoading": "Searching for semantic connections...",
"localDbTitle": "Table in this note",
"echoPopoverTitle": "Nearby notes",
"noEchoFound": "No nearby notes found.",
"echoUpgradeText": "Turn this table into a notebook so Memento can find nearby notes.",
"echoLoading": "Looking for nearby notes…",
"analyticsTitle": "Analytics & Insights",
"analyticsNoData": "No analysis data available.",
"analyticsCompletion": "Completion Rate",
"analyticsDistribution": "Distribution",
"analyticsTotalRows": "Total Rows",
"analyticsShort": "Analytics",
"turnIntoLabel": "Inline database",
"turnIntoLabel": "Table in the note",
"columnAdded": "Column added!",
"columnRemoved": "Column removed",
"propertyName": "Property {{index}}",
@@ -4098,7 +4110,7 @@
"convertNoteError": "Could not create note.",
"convertSuccess": "Conversion complete! Linked notebook created.",
"convertGenericError": "Something went wrong.",
"echoNameRequired": "Enter a name for this row first to search for semantic connections.",
"echoNameRequired": "Enter a name for this row first to look for nearby notes.",
"echoSearchError": "An error occurred while searching.",
"echoNoMatch": "No matching notes containing \"{{query}}\" were found in your workspace.",
"convertToNotebook": "Convert to notebook",
@@ -4113,7 +4125,7 @@
"deleteColumn": "Delete column",
"addColumn": "Add column",
"deleteRow": "Delete row",
"semanticEcho": "Semantic resonances",
"semanticEcho": "Notes that meet",
"close": "Close",
"insertCitation": "Insert link in editor",
"keywordMatch": "Keyword",
@@ -4125,8 +4137,8 @@
"selectOptionsPlaceholder": "Options separated by commas",
"namePlaceholder": "Enter a name…",
"or": "or",
"createLocalDb": "Create a standalone local database",
"switchToLocalDb": "Switch to local database",
"createLocalDb": "Create a table in this note",
"switchToLocalDb": "Back to this notes table",
"untitled": "Untitled",
"citationInserted": "Link inserted in the editor!",
"notesLoadError": "Error loading notes",
@@ -4162,7 +4174,7 @@
"step_features_title": "Your AI superpowers",
"step_features_subtitle": "Choose where to start.",
"step_features_cta": "Let's go!",
"feature_search_title": "Semantic search",
"feature_search_title": "Search by meaning",
"feature_search_desc": "Find any note by meaning, not just keywords.",
"feature_flashcards_title": "Review cards",
"feature_flashcards_desc": "Create review cards from your notes, in one click.",
@@ -4217,12 +4229,12 @@
"hint_brainstorm_deepen_desc": "Click on any idea card to expand it with sub-ideas and explore it further.",
"hint_brainstorm_export_title": "Export your session",
"hint_brainstorm_export_desc": "When done, export the entire brainstorm session as a structured note saved to your notebook.",
"hint_insights_clusters_title": "Note clusters",
"hint_insights_clusters_desc": "Your notes are automatically grouped into thematic clusters. Click a cluster to explore the notes it contains.",
"hint_insights_clusters_title": "Note themes",
"hint_insights_clusters_desc": "Your notes are grouped by theme. Click a theme to see its notes.",
"hint_insights_bridge_title": "Bridge notes",
"hint_insights_bridge_desc": "Bridge notes connect multiple clusters. They are highlighted because they hold your knowledge graph together.",
"hint_insights_refresh_title": "Refresh clusters",
"hint_insights_refresh_desc": "If you've added new notes, click the refresh button to recalculate the clusters with the latest content."
"hint_insights_bridge_desc": "Bridge notes link several themes. They show where your ideas cross.",
"hint_insights_refresh_title": "Update themes",
"hint_insights_refresh_desc": "If you added notes, click Update to recalculate the themes."
},
"integrations": {
"title": "Integrations",
@@ -4283,7 +4295,7 @@
"readwiseHelpStep2": "Paste it in the field below and click \"Connect\". The first sync imports all your books and articles.",
"readwiseHelpStep3": "Each book becomes a note in a \"Readwise 📚\" notebook — with all your highlights organized.",
"readwiseHelpStep4": "To update with new highlights, come back here and click \"Sync now\".",
"readwiseHelpStep5": "💡 Tip: create AI flashcards from a Readwise note (🎓 button in the editor) to review your readings."
"readwiseHelpStep5": "Tip: create review cards from a Readwise note (review-cards button at the top of the note) to review your readings."
},
"homeDashboard": {
"title": "Dashboard",
@@ -4295,7 +4307,7 @@
"captureError": "Failed",
"mindMap": "Mind map",
"fullMap": "Full map →",
"mindMapEmpty": "No themes detected yet. Semantic analysis groups your notes by topic.",
"mindMapEmpty": "No themes yet. AI groups your notes by topic.",
"mindMapOpen": "Open insights map →",
"mindMapUnavailable": "Mind map unavailable.",
"themes": "Themes",
@@ -4338,7 +4350,7 @@
"new": "new",
"noConnections": "No connections yet. AI analyzes your notes.",
"match": "Match",
"semanticConnection": "Semantic affinity",
"semanticConnection": "Closeness",
"suggestedBridge": "Link {clusterA} & {clusterB}",
"createBridgeNote": "Create bridge note",
"bridgeNoteCreated": "Bridge note created",
@@ -4411,7 +4423,7 @@
"sentiment": "Sentiment",
"inbox": "Inbox",
"revision": "Review cards",
"stats": "Semantic stats",
"stats": "Themes and notes",
"agent-activity": "Agent activity",
"gmail": "Gmail captures",
"activity": "Writing activity",
@@ -4428,14 +4440,14 @@
"widgetDescriptions": {
"capture": "Capture a thought instantly into your inbox.",
"resume": "Pick up your most recent notes where you left off.",
"intelligence": "Semantic links, bridge ideas, and agent discoveries.",
"intelligence": "Notes that meet, bridging ideas, and agent results.",
"reminders": "Upcoming note reminders at a glance.",
"mind-map": "Theme clusters sized by note volume.",
"agents": "AI-suggested research agents for your topics.",
"sentiment": "Emotional tone of your notes this week.",
"inbox": "Notes waiting to be filed into notebooks.",
"revision": "Cards due today. They come back at the right time.",
"stats": "Clusters, bridge notes, and total indexed notes.",
"stats": "Themes, bridging notes, and indexed notes.",
"agent-activity": "Latest completed agent runs.",
"gmail": "Email captures synced from Gmail.",
"activity": "GitHub-style heatmap of your writing rhythm.",
@@ -4477,7 +4489,7 @@
"activityEmptyHint": "Edit notes to see your writing rhythm over the last 90 days.",
"pathTypes": {
"continue": "Continue",
"connect": "Semantic link",
"connect": "Link a note",
"add-link": "Add to note",
"bridge": "Bridge idea",
"research": "Research agent",
@@ -4495,14 +4507,14 @@
"capture": "Jot down a thought in one line. It lands in your Inbox — classify it during your daily review.",
"next-paths": "Suggested next steps based on your latest edited note: resume, link, bridge, or research.",
"resume": "Your most recently updated notes. Pick up where you left off.",
"intelligence": "AI discoveries: semantic links between notes, bridge ideas, and agent findings.",
"intelligence": "What AI found: notes that meet, bridging ideas, and agent results.",
"reminders": "Upcoming note reminders. Empty when everything is on schedule.",
"mind-map": "Theme clusters sized by note volume. Click to explore in Connections.",
"agents": "AI-suggested research agents for topics you write about often.",
"sentiment": "Emotional tone of notes edited in the last 7 days. Requires at least 3 recent notes and AI enabled.",
"inbox": "Notes without a notebook yet. File them to keep your second brain tidy.",
"revision": "Cards due today. They come back at the right time.",
"stats": "Semantic index stats: active themes, bridge notes, total indexed notes.",
"stats": "How many themes, bridging notes, and indexed notes you have.",
"agent-activity": "Agents that completed a run in the last 48 hours.",
"gmail": "Email captures synced from Gmail integration.",
"activity": "Heatmap of notes you edited over the last 90 days.",

View File

@@ -407,7 +407,7 @@
"placeholder": "Buscar",
"searchPlaceholder": "Busca en tus notas...",
"semanticInProgress": "Búsqueda semántica en curso...",
"semanticTooltip": "Búsqueda semántica con IA",
"semanticTooltip": "Búsqueda por el sentido",
"searching": "Buscando...",
"noResults": "No se encontraron resultados",
"resultsFound": "{count} notas encontradas",
@@ -861,7 +861,7 @@
"compareAll": "Comparar todas",
"mergeAll": "Fusionar todas",
"close": "Cerrar",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % de cercanía",
"backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo",
"bottomCueConsent": "Conexiones IA disponibles abajo",
@@ -918,7 +918,7 @@
"noContentReturned": "No se devolvió contenido de fusión de la API",
"unknownDate": "Fecha desconocida"
},
"defaultInsight": "Estas notas parecen estar relacionadas semánticamente.",
"defaultInsight": "Estas notas van juntas.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "No se pudieron limpiar las etiquetas",
"indexingComplete": "Indexación completa: {count} nota(s) procesada(s)",
"indexingError": "Error durante la indexación",
"semanticIndexing": "Indexación semántica",
"semanticIndexingDescription": "Generar vectores para todas las notas para habilitar la búsqueda basada en intenciones",
"semanticIndexing": "Índice para la búsqueda por el sentido",
"semanticIndexingDescription": "Preparar todas las notas para la búsqueda por el sentido",
"profile": "Perfil",
"searchNoResults": "Sin resultados de búsqueda",
"languageAuto": "Idioma establecido en Automático",
@@ -1664,7 +1664,7 @@
"title": "Funciones",
"description": "Capacidades impulsadas por IA",
"titleSuggestions": "Sugerencias de título con IA",
"semanticSearch": "Búsqueda semántica con embeddings",
"semanticSearch": "Búsqueda por el sentido",
"paragraphReformulation": "Reformulación de párrafos",
"memoryEcho": "Insights diarios de Memory Echo",
"notebookOrganization": "Organización por cuadernos",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "Reconstruir índice de búsqueda",
"description": "Regenera los embeddings de todas las notas para mejorar la búsqueda sentica.",
"description": "Recalcular el índice de todas las notas para mejorar la búsqueda por el sentido.",
"button": "Reconstruir índice",
"success": "Indexación completada: {count} notas procesadas",
"failed": "Error durante la indexación"
@@ -1984,7 +1984,7 @@
"legendWiki": "Enlazar una nota",
"mentionShort": "Mención",
"moreNodes": "+{count} en el mapa",
"noInbound": "Ningún enlace wiki entrante apunta a esta nota.",
"noInbound": "Ninguna otra nota apunta a esta.",
"noOutbound": "Esta nota no enlaza con otras notas todavía.",
"noWikiYet": "Aún sin enlaces a otras notas.",
"outboundHelp": "Notas a las que esta enlaza usando [[…]] en su texto.",
@@ -2190,7 +2190,7 @@
"custom": "Personalizado"
},
"typeDescriptions": {
"scraper": "Extrae contenido de múltiples sitios y crea un resumen",
"scraper": "Lee varios sitios y hace un resumen",
"researcher": "Busca información sobre un tema",
"monitor": "Observa un cuaderno y analiza notas",
"slideGenerator": "Crea una presentación de PowerPoint a partir de notas.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "ej. Vigilancia IA del martes",
"description": "Descripción (opcional)",
"descriptionPlaceholder": "Resumen semanal de noticias de IA",
"urlsLabel": "URLs a extraer",
"urlsLabel": "Direcciones de las páginas a leer",
"urlsOptional": "(opcional)",
"sourceNotebook": "Cuaderno a observar",
"selectNotebook": "Seleccionar un cuaderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notificación por correo",
"notifyEmailHint": "Recibe un correo con los resultados del agente después de cada ejecución",
"includeImages": "Incluir imágenes",
"includeImagesHint": "Extraer imágenes de las páginas analizadas y adjuntarlas a la nota generada",
"includeImagesHint": "Tomar las imágenes de las páginas leídas y adjuntarlas a la nota",
"back": "Atrás",
"configuration": "Configuración",
"options": "Opciones",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "Vigilancia IA",
"description": "Extrae contenido de 5 sitios especializados en IA y genera un resumen semanal."
"description": "Lee 5 sitios de IA y escribe un resumen semanal."
},
"veilleTech": {
"name": "Vigilancia Tech",
"description": "Extrae contenido de los principales sitios tecnológicos y crea un resumen de noticias."
"description": "Lee los principales sitios tecnológicos y escribe un resumen de noticias."
},
"veilleDev": {
"name": "Vigilancia Dev",
"description": "Extrae contenido de sitios de desarrollo y resume nuevas tecnologías y frameworks."
"description": "Lee sitios de desarrollo y resume las novedades."
},
"surveillant": {
"name": "Observador de notas",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "Herramientas del Agente",
"webSearch": "Búsqueda Web",
"webScrape": "Scraping Web",
"webScrape": "Lectura de páginas",
"noteSearch": "Búsqueda de Notas",
"noteRead": "Leer Nota",
"noteCreate": "Crear Nota",
@@ -2431,15 +2431,15 @@
"btnLabel": "Ayuda",
"close": "Cerrar",
"whatIsAgent": "¿Qué es un agente?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "¿Cómo usar un agente?",
"howToUseContent": "1. Haz clic en **\"Nuevo agente\"** (o empieza desde una **Plantilla** al final de la página)\n2. Elige un **tipo de agente** (Investigador, Monitor, Observador, Personalizado)\n3. Dale un **nombre** y rellena los campos específicos del tipo\n4. Opcionalmente elige un **cuaderno de destino** donde se guardarán los resultados\n5. Elige una **frecuencia** (Manual = tú lo activas)\n6. Haz clic en **Crear**, luego pulsa el botón **Ejecutar** en la tarjeta del agente\n7. Cuando termine, aparecerá una nueva nota en tu cuaderno de destino",
"types": "Tipos de agentes",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "Modo avanzado (Instrucciones IA, Iteraciones máx.)",
"advancedContent": "Haz clic en **\"Modo avanzado\"** en la parte inferior del formulario para acceder a ajustes adicionales.\n\n### Instrucciones de IA\n\nEste campo te permite **reemplazar el prompt del sistema por defecto** del agente. Si se deja vacío, el agente usa un prompt automático adaptado a su tipo.\n\n**¿Por qué usarlo?** Quieres controlar exactamente cómo se comporta el agente. Por ejemplo:\n- \"Escribe el resumen en inglés, aunque las fuentes estén en francés\"\n- \"Estructura la nota con secciones: Contexto, Puntos clave, Opinión personal\"\n- \"Ignora los artículos de hace más de 30 días y céntrate en noticias recientes\"\n- \"Para cada tema detectado, sugiere 3 pistas de seguimiento con enlaces\"\n\n> **Nota:** Tus instrucciones reemplazan los valores por defecto, no se añaden a ellos.\n\n### Iteraciones máximas\n\nEste es el **número máximo de ciclos** que puede realizar el agente. Un ciclo = el agente piensa, llama a una herramienta, lee el resultado y luego decide la siguiente acción.\n\n- **3-5 iteraciones:** para tareas simples (analizar una sola página)\n- **10 iteraciones (por defecto):** buen equilibrio para la mayoría de casos\n- **15-25 iteraciones:** para investigación profunda donde el agente necesita explorar múltiples pistas\n\n> **Advertencia:** Más iteraciones = más tiempo y potencialmente mayores costes de API.",
"tools": "Herramientas disponibles (detalle)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "Frecuencia y programación",
"frequencyContent": "| Frecuencia | Comportamiento\n|------------|-------------\n| **Manual** | Haces clic en \"Ejecutar\" tú mismo — sin programación automática\n| **Cada hora** | Se ejecuta cada hora\n| **Diario** | Se ejecuta una vez al día\n| **Semanal** | Se ejecuta una vez por semana\n| **Mensual** | Se ejecuta una vez al mes\n\n> **Consejo:** Empieza con \"Manual\" para probar tu agente, luego cambia a una frecuencia automática cuando estés satisfecho con los resultados.",
"targetNotebook": "Libreta destino",
@@ -2447,7 +2447,7 @@
"templates": "Plantillas",
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Consejos y solución de problemas",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "Elija el tipo de tarea que realizará el agente. Cada tipo tiene diferentes capacidades y campos.",
"researchTopic": "El tema que el agente investigará en la web. Sea específico para mejores resultados.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Actualizar a Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro incluye:",
"proSearch": "100 semantic searches / month",
"proSearch": "1.000 créditos IA / mes",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Generación de diagrama",
"featureFlashcards": "Tarjetas IA",
"featureFlashcards": "Tarjetas de repaso",
"featurePublishEnhance": "Publicación con IA",
"featureSlides": "Generación de diapositivas",
"featureVoice": "Transcripción de voz",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 reformulaciones / mes",
"businessFeature4": "1.000 mensajes de chat / mes",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Cuotas personalizadas, SSO, soporte prioritario.",
"enterpriseDescription": "Cuotas personalizadas, inicio de sesión único para el equipo, soporte prioritario.",
"contactSales": "Contactar ventas",
"startCheckout": "Comenzar",
"checkoutLoading": "Cargando pago…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Su suscripción se renueva automáticamente.",
"businessDescription": "Para equipos y líderes de producto.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Inicio de sesión único para todo el equipo",
"enterpriseFeature3": "Soporte dedicado",
"enterpriseFeature4": "Facturación personalizada",
"enterpriseFeature5": "SLA garantizado",
"enterpriseFeature5": "Plazo de respuesta garantizado",
"subtitle": "Elige el plan que mejor se adapte a ti",
"freeDescription": "Para descubrir Memento",
"freeF1": "30 búsquedas semánticas",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "No se pudo obtener el estado de facturación",
"fetchQuotasFailed": "No se pudieron obtener las cuotas",
"fetchInvoicesFailed": "No se pudo cargar el historial de facturación.",
"savePercent": "Ahorra ~17%",
"savePercent": "Ahorra ~{percent} %",
"billedYearTotal": "o sea {price} al año",
"cancelSubscription": "Cancelar suscripción",
"changeOffer": "Cambiar de oferta",
"downgradeToFree": "Volver a la oferta gratuita",
@@ -3379,13 +3380,13 @@
"cta": "Hablar con nosotros",
"feature0": "Todo Business",
"feature1": "Agentes ilimitados",
"feature2": "SSO / SAML",
"feature3": "Audit logs y SLA",
"feature2": "Inicio de sesión único para todo el equipo",
"feature3": "Registro de actividad y plazo de respuesta garantizado",
"feature4": "Soporte dedicado",
"feature5": "Onboarding en vivo"
"feature5": "Acompañamiento en la instalación"
},
"basicPrice": "Gratis",
"savePercent": "Ahorra ~17%",
"savePercent": "Ahorra ~{percent} %",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Elimina permanente e irreversiblemente tu cuenta y todos los datos asociados.",
"whatWillBeDeleted": "Lo siguiente se eliminará permanentemente:",
"item1": "Todas las notas, cuadernos y adjuntos",
"item2": "Todos los embeddings semánticos de pgvector",
"item2": "El índice que sirve para relacionar tus notas",
"item3": "Todas las claves API BYOK",
"item4": "Todas las conversaciones de IA y sesiones de brainstorming",
"item5": "Historial de cuotas y uso",
@@ -3559,7 +3560,7 @@
"step_features_title": "Tus superpoderes de IA",
"step_features_subtitle": "Elige por dónde empezar.",
"step_features_cta": "¡Vamos!",
"feature_search_title": "Búsqueda sentica",
"feature_search_title": "Búsqueda por el sentido",
"feature_search_desc": "Encuentra cualquier nota por significado, no solo por palabras clave.",
"feature_flashcards_title": "Tarjetas IA",
"feature_flashcards_desc": "Genera tarjetas de repaso desde tus notas con un clic.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Haz clic en cualquier tarjeta de idea para expandirla con subideas y explorarla más a fondo.",
"hint_brainstorm_export_title": "Exportar tu sesión",
"hint_brainstorm_export_desc": "Cuando termines, exporta toda la sesión de brainstorming como una nota estructurada guardada en tu cuaderno.",
"hint_insights_clusters_title": "Clusters de notas",
"hint_insights_clusters_desc": "Tus notas se agrupan automáticamente en clusters temáticos. Haz clic en un cluster para explorar las notas que contiene.",
"hint_insights_clusters_title": "Temas de notas",
"hint_insights_clusters_desc": "Tus notas se agrupan por temas. Haz clic en un tema para ver las notas.",
"hint_insights_bridge_title": "Notas puente",
"hint_insights_bridge_desc": "Las notas puente conectan múltiples clusters. Se destacan porque mantienen unido tu grafo de conocimiento.",
"hint_insights_refresh_title": "Actualizar clusters",
"hint_insights_refresh_desc": "Si has añadido nuevas notas, haz clic en el botón de actualizar para recalcular los clusters con el contenido más reciente."
"hint_insights_bridge_desc": "Las notas puente unen varios temas. Muestran dónde se cruzan tus ideas.",
"hint_insights_refresh_title": "Actualizar temas",
"hint_insights_refresh_desc": "Si has añadido notas, haz clic en «Actualizar» para recalcular los temas."
},
"blockAction": {
"moveUp": "Mover bloque hacia arriba",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "Conexiones",
"toggleMenu": "Mostrar u ocultar el menú",
"subtitle": "Descubre la arquitectura oculta de tu conocimiento",
"subtitle": "Vea cómo se relacionan sus notas",
"resync": "Actualizar",
"mapping": "Mapeando…",
"loading": "Cargando tus notas…",
"mappingTitle": "Mapeando tu conocimiento…",
"mappingHint": "Esto puede tardar de uno a tres minutos. Puedes seguir navegando; la página se actualizará cuando termine.",
"analyzeNow": "Iniciar análisis semántico",
"emptyNeedMoreNotes": "Añade {count} notas más para desbloquear el clustering semántico (mínimo 10).",
"embeddingsHint": "Solo {indexed} de {total} notas están indexadas para IA.",
"analyzeNow": "Actualizar los temas",
"emptyNeedMoreNotes": "Añade {count} notas más para agrupar tus temas (mínimo 10).",
"embeddingsHint": "Solo {indexed} de {total} notas están listas para agrupar por temas.",
"vsGraphHint": "Esto no es lo mismo que el \"Mapa de enlaces\" (icono de red en la barra lateral): aquí, la IA agrupa tus notas por tema.",
"openGraphMap": "Abrir mapa de enlaces",
"analysisFailed": "Análisis fallido. Revisa tu configuración de IA.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notas",
"clusterFallback": "Tema {index}",
"unclusteredNotes": "{count} notas sin asignar a un tema (ocultas del grafo).",
"emptyTitle": "Descubre tus clústeres de conocimiento",
"emptyDescription": "Haz clic en \"Resincronizar red\" para analizar tus notas y encontrar conexiones ocultas",
"emptyTitle": "Descubre tus temas",
"emptyDescription": "Haz clic en «Actualizar» para agrupar tus notas por temas.",
"stats": {
"clusters": "Clústeres",
"bridgeNotes": "Notas puente",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "Clusters semánticos",
"title": "Temas",
"notesCount": "{count} notas",
"centralNotes": "Notas centrales",
"emptyCluster": "No hay notas en este cluster"
"emptyCluster": "No hay notas en este tema"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Afinidad {score}%",
"moreThemes": "+{count}",
"needsResync": "Vuelve a sincronizar la red para actualizar los puentes.",
"scoreHint": "Afinidad semántica media a los dos temas que esta nota une (similitud coseno)."
"scoreHint": "Qué tan cerca está esta nota de los dos temas que une."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Grafo",
"viewDashboard": "Panel",
"isolatedClusters": {
"title": "Clusters aislados ({count})",
"title": "Temas aislados ({count})",
"badge": "No conectado",
"empty": "¡Todos tus clústeres están interconectados!"
"empty": "Todos tus temas ya están unidos por al menos una nota puente."
},
"focusCluster": {
"title": "Foco de clúster activo",
"description": "Este cluster temático agrupa {count} notas complementarias. Haz clic en una nota para acceder a ella directamente:",
"title": "Tema abierto",
"description": "Este tema reúne {count} notas. Haz clic en una nota para abrirla.",
"close": "Cerrar"
},
"badgeDominant": "Dominante",
"bridgeCount": "puente(s)",
"echoTitle": "Vuelves constantemente a esta idea",
"tipClusters": "La IA agrupó tus notas por afinidad semántica — independientemente del cuaderno al que pertenezcan. Cada tema representa un asunto al que tu mente sigue volviendo.",
"tipClusters": "La IA agrupó tus notas por temas, aunque estén en distintos cuadernos. Cada tema es un asunto al que vuelves.",
"tipClustersAction": "Haz clic en un tema para ver sus notas. Haz clic en una nota para abrirla.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Haz clic en una nota para abrirla y entender la conexión.",
"tipEcho": "Memory Echo detecta dos notas escritas en momentos muy diferentes que tratan la misma idea. Tu mente revisitó un pensamiento sin darse cuenta.",
"tipEchoAction": "Dos notas, misma idea, momentos diferentes. Haz clic para explorar.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Haz clic en 'Crear nota puente' para escribir la nota y abrirla inmediatamente.",
"tipIsolated": "Estos temas están aislados: ninguna nota los conecta con los demás. ¿Quizás estás explorando una idea frágil? Una nota de síntesis sería suficiente para crear el enlace.",
"tipIsolatedAction": "Estos temas no tienen ninguna nota que los conecte con el resto de tu pensamiento.",
"recalcSystem": {
"title": "Sistema de recálculo",
"statusSynced": "Sincronizado",
"scheduledCron": "Programado",
"lastSync": "Última sync"
"title": "Actualización de temas",
"statusSynced": "Al día",
"scheduledCron": "Actualización automática",
"lastSync": "Última actualización"
},
"resetFocus": "Restablecer enfoque",
"resetFocus": "Mostrar todo",
"listView": "Lista",
"graphAriaLabel": "Red semántica: {clusters} clusters, {notes} notas, {bridges} notas puente. Cambia a la vista de lista para una navegación accesible.",
"listAriaLabel": "Lista de clusters accesible con notas y conexiones puente",
"graphAriaLabel": "Mapa de temas: {clusters} temas, {notes} notas, {bridges} notas puente. Pasa a la vista Lista para navegar más fácilmente.",
"listAriaLabel": "Lista de temas, notas y notas puente",
"dashboardFilterPlaceholder": "Filtrar notas puente, temas…",
"legendFilterPlaceholder": "Filtrar temas…",
"legendShowLess": "Mostrar menos",
@@ -3896,7 +3897,7 @@
"genericError": "Algo salió mal al enviar a tu instancia.",
"ignore": "dominado",
"processing": "Procesando…",
"processingDetail": "Generando etiquetas, resumen semántico y embeddings.",
"processingDetail": "Preparando la nota: etiquetas, resumen, búsqueda por el sentido.",
"publishedOn": "Publicado en {domain}",
"quitSimulator": "Cerrar simulador",
"realtimeCapture": "Fecha: captura en vivo",
@@ -4156,7 +4157,7 @@
"match": "Iniciar sesión",
"memoryEchoDisabled": "Memory Echo está desactivado en tu configuración de IA.",
"mindMap": "Mapa mental",
"mindMapEmpty": "Aún no se han detectado temas. El análisis semántico agrupa tus notas por tema.",
"mindMapEmpty": "Aún no hay temas. La IA agrupa tus notas por tema.",
"mindMapOpen": "Abrir mapa de insights →",
"mindMapUnavailable": "Mapa mental no disponible.",
"new": "notas creadas",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "Añadir a la nota",
"bridge": "Idea puente",
"connect": "Enlace semántico",
"connect": "Enlazar una nota",
"continue": "Continuar",
"daily": "Diario",
"explore": "Explorar tema",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Tu segundo cerebro de un vistazo: sugerencias de IA, captura rápida y próximos pasos. Usa los atajos para entrar en acción.",
"resumeOpen": "Reanudar",
"review": "Revisar",
"semanticConnection": "Afinidad semántica",
"semanticConnection": "Cercanía",
"sentiment": "Sentimiento",
"sentimentDominant": "Tono dominante esta semana",
"suggestedBridge": "Conectando {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retención, racha y total de tarjetas.",
"gmail": "Capturas de correo sincronizadas desde Gmail.",
"inbox": "Notas esperando ser archivadas en cuadernos.",
"intelligence": "Enlaces semánticos, ideas puente y descubrimientos de agentes.",
"intelligence": "Notas que se encuentran, ideas que hacen de puente y resultados de agentes.",
"link-suggestions": "Pasajes para enlazar en tu nota actual.",
"mind-map": "Clústeres de temas dimensionados por volumen de notas.",
"next-paths": "Próximos pasos sugeridos por IA a partir de tu último trabajo.",
@@ -4258,7 +4259,7 @@
"resume": "Continúa tus notas más recientes donde lo dejaste.",
"revision": "Flashcards pendientes de repaso con repetición espaciada.",
"sentiment": "Tono emocional de tus notas esta semana.",
"stats": "Clústeres, notas puente y total de notas indexadas.",
"stats": "Temas, notas que hacen de puente y notas indexadas.",
"usage": "Créditos de IA restantes y límites mensuales."
},
"widgetDone": "Hecho",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Tasa de retención de aprendizaje, racha de revisión y total de tarjetas.",
"gmail": "Capturas de correo sincronizadas desde la integración de Gmail.",
"inbox": "Notas sin cuaderno aún. Archívalas para mantener tu segundo cerebro ordenado.",
"intelligence": "Descubrimientos IA: enlaces semánticos entre notas, ideas puente y hallazgos de agentes.",
"intelligence": "Lo que encontró la IA: notas que se encuentran, ideas que hacen de puente y resultados de agentes.",
"link-suggestions": "Pasajes de otras notas que vale la pena enlazar a tu trabajo actual.",
"mind-map": "Clústeres de temas dimensionados por volumen de notas. Haz clic para explorar en Conexiones.",
"next-paths": "Próximos pasos sugeridos basados en tu última nota editada: reanudar, enlazar, conectar o investigar.",
@@ -4284,7 +4285,7 @@
"resume": "Tus notas actualizadas más recientemente. Continúa donde lo dejaste.",
"revision": "Flashcards pendientes de repaso con repetición espaciada hoy.",
"sentiment": "Tono emocional de las notas editadas en los últimos 7 días. Requiere al menos 3 notas recientes e IA activada.",
"stats": "Estadísticas del índice semántico: temas activos, notas puente, notas indexadas totales.",
"stats": "Cuántos temas, notas que hacen de puente y notas indexadas tiene.",
"usage": "Uso mensual de créditos de IA por función."
},
"widgetHelpClose": "Cerrar",
@@ -4319,7 +4320,7 @@
"resume": "Reanudar aquí",
"revision": "Flashcards",
"sentiment": "Sentimiento",
"stats": "Estadísticas semánticas",
"stats": "Temas y notas",
"usage": "Cuota IA"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Pégalo en el campo de abajo y haz clic en «Conectar». La primera sincronización importa todos tus libros y artículos.",
"readwiseHelpStep3": "Cada libro se convierte en una nota en un cuaderno «Readwise 📚» — con todos tus resúmenes organizados.",
"readwiseHelpStep4": "Para actualizar con nuevos destacados, vuelve aquí y haz clic en \"Sincronizar ahora\".",
"readwiseHelpStep5": "💡 Consejo: crea flashcards de IA desde una nota de Readwise (botón 🎓 en el editor) para revisar tus lecturas.",
"readwiseHelpStep5": "Consejo: crea tarjetas de repaso desde una nota de Readwise (botón de tarjetas arriba de la nota) para revisar tus lecturas.",
"readwiseInfo": "¿Cómo funciona Readwise?",
"readwiseSynced": "Sincronización de Readwise — {{created}} creadas, {{updated}} actualizadas",
"readwiseTokenPlaceholder": "Token de Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "¡Conversión completa! Cuaderno vinculado creado.",
"convertToNotebook": "Convertir a cuaderno",
"converting": "Convirtiendo…",
"createLocalDb": "Crear una base de datos local independiente",
"createLocalDb": "Crear una tabla en esta nota",
"createNotebook": "Crear",
"defaultOption1": "Opción 1",
"defaultOption2": "Opción 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Bloque obsoleto eliminado.",
"displayModeGallery": "Galería",
"displayModeTable": "Mesa",
"echoLoading": "Buscando conexiones semánticas...",
"echoNameRequired": "Primero introduce un nombre para esta fila para buscar conexiones semánticas.",
"echoLoading": "Buscando notas cercanas…",
"echoNameRequired": "Introduce primero un nombre para esta fila, para buscar notas cercanas.",
"echoNoMatch": "No se encontraron notas que coincidan con «{{query}}» en tu espacio.",
"echoPopoverTitle": "Resonancias semánticas 🔮",
"echoPopoverTitle": "Notas cercanas",
"echoSearchError": "Se produjo un error durante la búsqueda.",
"echoUpgradeText": "Convierte esta tabla en un cuaderno para activar el análisis neuronal de Memento.",
"echoUpgradeText": "Convierte esta tabla en un cuaderno para que Memento encuentre notas cercanas.",
"emptyTable": "Sin filas en la tabla.",
"insertCitation": "Insertar enlace en el editor",
"insertDesc": "Incrusta los datos estructurados de tu cuaderno",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Palabra clave",
"linkToNotebook": "Enlazar un cuaderno",
"loadError": "Error al cargar datos estructurados.",
"localDbTitle": "Base de datos independiente",
"localDbTitle": "Tabla en esta nota",
"namePlaceholder": "Introduce un nombre…",
"noEchoFound": "Sin conexiones semánticas detectadas.",
"noEchoFound": "No se encontraron notas cercanas.",
"noNotebook": "Este bloque requiere un cuaderno. Mueve esta nota a un cuaderno primero.",
"noNotebookDesc": "Este bloque muestra la vista estructurada de un cuaderno. Elige el cuaderno a enlazar:",
"noSchema": "Este cuaderno no tiene vista estructurada todavía. Configúrala desde el encabezado del cuaderno.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Enlazar un cuaderno",
"selectOptionsPlaceholder": "Opciones separadas por comas",
"semanticEcho": "Resonancias semánticas",
"switchToLocalDb": "Cambiar a base de datos local",
"turnIntoLabel": "Base de datos en línea",
"switchToLocalDb": "Volver a la tabla de esta nota",
"turnIntoLabel": "Tabla en la nota",
"untitled": "Sin título"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Buscar una nota…",
"selectOptions": "Opciones (una por línea)",
"selectOptionsPlaceholder": "Por hacer\\\nEn progreso\\\nHecho",
"semanticResonances": "Resonancias semánticas",
"semanticResonances": "Notas que se encuentran",
"tagApplied": "puentes",
"viewCalendarHint": "Calendario — tus notas organizadas por fecha",
"viewGallery": "Galería",

View File

@@ -407,7 +407,7 @@
"placeholder": "جستجو",
"searchPlaceholder": "در یادداشت‌های خود جستجو کنید...",
"semanticInProgress": "جستجوی هوش مصنوعی در حال انجام...",
"semanticTooltip": "جستجوی معنایی هوش مصنوعی",
"semanticTooltip": "جستجو بر اساس معنا",
"searching": "در حال جستجو...",
"noResults": "نتیجه‌ای یافت نشد",
"resultsFound": "{count} یادداشت یافت شد",
@@ -869,7 +869,7 @@
"backToNote": "بازگشت به یادداشت من",
"openInEditor": "باز کردن در ویرایشگر",
"badgeLabel": "Memory Echo",
"affinityBadge": "{percentage}٪ شباهت معنایی",
"affinityBadge": "{percentage}٪ نزدیکی",
"intro": "مومنتو یادداشت دیگری دربارهٔ همین موضوع پیدا کرده است. آن را ببینید، نقل‌قولی درج کنید یا ادغام کنید — بدون ترک این یادداشت.",
"detectedIn": "بخش یافت‌شده در: {title}",
"helpToggle": "چطور کار می‌کند؟",
@@ -922,7 +922,7 @@
"noContentReturned": "هیچ محتوای ادغامی از API بازگردانده نشد",
"unknownDate": "تاریخ ناشناخته"
},
"defaultInsight": "به نظر می‌رسد این یادداشت‌ها از نظر معنایی مرتبط هستند."
"defaultInsight": "این یادداشت‌ها به هم مربوط‌اند."
},
"notification": {
"accept": "پذیرش",
@@ -1037,8 +1037,8 @@
"cleanupError": "پاکسازی برچسب‌ها ناموفق بود",
"indexingComplete": "نمایه‌سازی کامل: {count} یادداشت پردازش شد",
"indexingError": "خطا در حین نمایه‌سازی",
"semanticIndexing": "نمایه‌سازی معنایی",
"semanticIndexingDescription": "تولید بردارها برای همه یادداشت‌ها جهت فعال‌سازی جستجوی مبتنی بر قصد",
"semanticIndexing": "نمایه جستجو بر اساس معنا",
"semanticIndexingDescription": "آماده‌سازی همه یادداشت‌ها برای جستجو بر اساس معنا",
"profile": "پروفایل",
"searchNoResults": "تنظیمات مطابق یافت نشد",
"languageAuto": "زبان روی خودکار تنظیم شد",
@@ -1664,7 +1664,7 @@
"title": "ویژگی‌ها",
"description": "قابلیت‌های مبتنی بر هوش مصنوعی",
"titleSuggestions": "پیشنهادات عنوان مبتنی بر هوش مصنوعی",
"semanticSearch": "جستجوی معنایی با تعبیه‌ها",
"semanticSearch": "جستجو بر اساس معنا",
"paragraphReformulation": "بازنویسی پاراگراف",
"memoryEcho": "بینش‌های روزانه Memory Echo",
"notebookOrganization": "سازماندهی دفترچه",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "بازسازی نمایه جستجو",
"description": "تولید مجدد تعبیه‌ها برای همه یادداشت‌ها برای بهبود جستجوی معنایی.",
"description": "نمایه همه یادداشت‌ها را دوباره بسازید تا جستجو بر اساس معنا بهتر شود.",
"button": "بازسازی نمایه",
"success": "نمایه‌سازی کامل: {count} یادداشت پردازش شد",
"failed": "خطا در حین نمایه‌سازی"
@@ -1984,7 +1984,7 @@
"legendWiki": "پیوند به یک یادداشت",
"mentionShort": "اشاره",
"moreNodes": "+{count} روی نقشه",
"noInbound": "هیچ پیوند ویکی ورودی به این یادداشت اشاره نمی‌کند.",
"noInbound": "یادداشت دیگری به این یکی اشاره نمی‌کند.",
"noOutbound": "این یادداشت هنوز به یادداشت‌های دیگر پیوند ندارد.",
"noWikiYet": "هنوز پیوندی به یادداشت‌های دیگر نیست.",
"outboundHelp": "یادداشت‌هایی که این یادداشت با [[…]] در متن خود به آن‌ها پیوند می‌دهد.",
@@ -2190,7 +2190,7 @@
"custom": "سفارشی"
},
"typeDescriptions": {
"scraper": "چندین سایت را استخراج و خلاصه‌ای ایجاد می‌کند",
"scraper": "چند سایت را می‌خواند و خلاصه می‌نویسد",
"researcher": "اطلاعاتی درباره یک موضوع جستجو می‌کند",
"monitor": "یک دفترچه را نظارت و یادداشت‌ها را تحلیل می‌کند",
"slideGenerator": "یک ارائه پاورپوینت از یادداشت ها ایجاد می کند",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "مثال: پایش هوش مصنوعی سه‌شنبه",
"description": "توضیحات (اختیاری)",
"descriptionPlaceholder": "خلاصه هفتگی اخبار هوش مصنوعی",
"urlsLabel": "آدرس‌های URL برای استخراج",
"urlsLabel": "نشانی صفحه‌هایی که باید خوانده شوند",
"urlsOptional": "(اختیاری)",
"sourceNotebook": "دفترچه برای نظارت",
"selectNotebook": "یک دفترچه انتخاب کنید...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "اعلان ایمیل",
"notifyEmailHint": "پس از هر اجرا، ایمیل حاوی نتایج عامل دریافت کنید",
"includeImages": "شامل تصاویر",
"includeImagesHint": "استخراج تصاویر از صفحات استخراج شده و پیوست به یادداشت تولید شده",
"includeImagesHint": "تصویرها را از صفحه‌های خوانده‌شده به یادداشت بچسبانید",
"back": "بازگشت",
"configuration": "پیکربندی",
"options": "گزینه‌ها",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "پایش هوش مصنوعی",
"description": "از ۵ سایت تخصصی هوش مصنوعی استخراج و خلاصه هفتگی تولید می‌کند."
"description": "۵ سایت هوش مصنوعی را می‌خواند و خلاصه هفتگی می‌نویسد."
},
"veilleTech": {
"name": "پایش فناوری",
"description": "از سایت‌های فناوری اصلی استخراج و خلاصه اخبار ایجاد می‌کند."
"description": "سایت‌های فناوری اصلی را می‌خواند و خلاصه اخبار می‌نویسد."
},
"veilleDev": {
"name": "پایش توسعه",
"description": "از سایت‌های توسعه استخراج و فناوری‌ها و فریمورک‌های جدید را خلاصه می‌کند."
"description": "سایت‌های توسعه را می‌خواند و تازه‌ها را خلاصه می‌کند."
},
"surveillant": {
"name": "ناظر یادداشت",
@@ -3007,7 +3007,7 @@
"upgradeTitle": "ارتقا به Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro شامل:",
"proSearch": "100 semantic searches / month",
"proSearch": "۱۰۰۰ اعتبار هوش مصنوعی / ماه",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormExpand": "گسترش طوفان فکری",
"featureBrainstormEnrich": "غنی‌سازی طوفان فکری",
"featureDiagrams": "تولید نمودار",
"featureFlashcards": "فلش‌کارت‌های هوش مصنوعی",
"featureFlashcards": "کارت‌های مرور",
"featurePublishEnhance": "انتشار با هوش مصنوعی",
"featureSlides": "تولید اسلاید",
"featureVoice": "رونویسی صوتی",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 بازنویسی / ماه",
"businessFeature4": "1,000 پیام چت / ماه",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "سهمیه سفارشی، SSO، پشتیبانی اولویت‌دار.",
"enterpriseDescription": "سهمیه سفارشی، ورود یک‌باره برای تیم، پشتیبانی اولویت‌دار.",
"contactSales": "تماس با فروش",
"startCheckout": "شروع",
"checkoutLoading": "در حال بارگذاری پرداخت…",
@@ -3137,10 +3137,10 @@
"paidPlanDesc": "اشتراک شما به‌طور خودکار تمدید می‌شود.",
"businessDescription": "برای تیم‌ها و مدیران محصول.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "ورود یک‌باره برای همهٔ تیم",
"enterpriseFeature3": "پشتیبانی اختصاصی",
"enterpriseFeature4": "صورتحساب سفارشی",
"enterpriseFeature5": "SLA تضمین شده",
"enterpriseFeature5": "زمان پاسخ تضمینشده",
"subtitle": "طرح مناسب را انتخاب کنید",
"freeDescription": "برای کشف ممنتو",
"freeF1": "30 جستجوی معنایی",
@@ -3177,7 +3177,8 @@
"fetchStatusFailed": "دریافت وضعیت صورتحساب ناموفق بود",
"fetchQuotasFailed": "دریافت سهمیه‌ها ناموفق بود",
"fetchInvoicesFailed": "بارگذاری تاریخچه صورتحساب ناموفق بود.",
"savePercent": "~۱۷٪ صرفه‌جویی",
"savePercent": "~{percent}٪ صرفه‌جویی",
"billedYearTotal": "یعنی {price} در سال",
"cancelSubscription": "لغو اشتراک",
"changeOffer": "تغییر طرح",
"downgradeToFree": "بازگشت به طرح رایگان",
@@ -3379,13 +3380,13 @@
"cta": "با ما صحبت کنید",
"feature0": "همه چیز Business",
"feature1": "عامل نامحدود",
"feature2": "SSO / SAML",
"feature3": "لاگ ممیزی و SLA",
"feature2": "ورود یک‌باره برای همهٔ تیم",
"feature3": "گزارش فعالیت و زمان پاسخ تضمین‌شده",
"feature4": "پشتیبانی اختصاصی",
"feature5": "آنبوردینگ زنده"
"feature5": "همراهی هنگام راه‌اندازی"
},
"basicPrice": "رایگان",
"savePercent": "حدود ۱۷٪ صرفه‌جویی",
"savePercent": "حدود {percent}٪ صرفه‌جویی",
"proMonthly": "۹٫۹۰€",
"proAnnualMonthly": "۸٫۲۵€",
"businessMonthly": "۲۹٫۹۰€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "حساب کاربری و تمام داده‌های مرتبط را به طور دائمی و غیرقابل بازگشت حذف کنید.",
"whatWillBeDeleted": "موارد زیر برای همیشه حذف خواهند شد:",
"item1": "همه یادداشت‌ها، دفترچه‌ها و پیوست‌ها",
"item2": "همه امبدینگ‌های معنایی pgvector",
"item2": "نمایه‌ای که یادداشت‌های شما را به هم وصل می‌کند",
"item3": "همه کلیدهای API BYOK",
"item4": "همه مکالمات هوش مصنوعی و جلسات طوفان فکری",
"item5": "تاریخچه سهمیه و استفاده",
@@ -3559,7 +3560,7 @@
"step_features_title": "قدرت‌های فوق‌العاده هوش مصنوعی شما",
"step_features_subtitle": "انتخاب کنید از کجا شروع کنید.",
"step_features_cta": "بزن بریم!",
"feature_search_title": "جستجوی معنایی",
"feature_search_title": "جستجو بر اساس معنا",
"feature_search_desc": "هر یادداشتی را بر اساس معنا پیدا کنید، نه فقط کلمات کلیدی.",
"feature_flashcards_title": "فلش‌کارت‌های هوش مصنوعی",
"feature_flashcards_desc": "کارت‌های مرور را با یک کلیک از یادداشت‌هایتان بسازید.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "روی کارت ایده کلیک کنید تا با زیر-ایده‌ها گسترش یابد.",
"hint_brainstorm_export_title": "صادر کردن جلسه",
"hint_brainstorm_export_desc": "کل جلسه طوفان فکری را به عنوان یادداشت ساختاریافته در کارنت ذخیره کنید.",
"hint_insights_clusters_title": "خوشه‌های یادداشت",
"hint_insights_clusters_desc": "یادداشت‌های شما به‌طور خودکار در خوشه‌های موضوعی گروه‌بندی می‌شوند. برای جزئیات روی خوشه کلیک کنید.",
"hint_insights_clusters_title": "موضوع‌های یادداشت",
"hint_insights_clusters_desc": "یادداشت‌ها بر اساس موضوع گروه‌بندی شده‌اند. روی موضوع بزنید تا یادداشت‌ها را ببینید.",
"hint_insights_bridge_title": "یادداشت‌های پل",
"hint_insights_bridge_desc": "یادداشت‌های پل چند خوشه را متصل می‌کنند و برجسته شده‌اند زیرا شامل ارتباط‌های مهمی هستند.",
"hint_insights_refresh_title": "به‌روزرسانی خوشهها",
"hint_insights_refresh_desc": "اگر یادداشت جدیدی اضافه کرده‌اید، روی «به‌روزرسانی» کلیک کنید تا خوشه‌ها مجدداً محاسبه شوند."
"hint_insights_bridge_desc": "یادداشت‌های پل چند موضوع را به هم وصل می‌کنند و نشان می‌دهند ایده‌ها کجا تلاقی می‌کنند.",
"hint_insights_refresh_title": "به‌روزرسانی موضوعها",
"hint_insights_refresh_desc": "اگر یادداشت اضافه کرده‌اید، روی «به‌روزرسانی» بزنید تا موضوع‌ها دوباره محاسبه شوند."
},
"blockAction": {
"moveUp": "بلوک را به بالا منتقل کنید",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "پیوندها",
"toggleMenu": "نمایش یا پنهان‌کردن منو",
"subtitle": "معماری پنهان دانش خود را کشف کنید",
"subtitle": "ببینید یادداشت‌هایتان چگونه به هم وصل می‌شوند",
"resync": "به‌روزرسانی",
"mapping": "در حال نقشه‌برداری…",
"loading": "در حال بارگذاری یادداشت‌ها…",
"mappingTitle": "در حال نقشه‌برداری دانش شما…",
"mappingHint": "این کار ممکن است یک تا سه دقیقه طول بکشد. می‌توانید به مرور ادامه دهید؛ صفحه به‌طور خودکار به‌روزرسانی می‌شود.",
"analyzeNow": "شروع تحلیل معنایی",
"emptyNeedMoreNotes": "{count} یادداشت دیگر اضافه کنید تا خوشه‌بندی معنایی فعال شود (حداقل ۱۰).",
"embeddingsHint": "فقط {indexed} از {total} یادداشت برای هوش مصنوعی نمایه‌سازی شده‌اند.",
"analyzeNow": "به‌روزرسانی موضوع‌ها",
"emptyNeedMoreNotes": "{count} یادداشت دیگر اضافه کنید تا موضوع‌ها گروه‌بندی شوند (حداقل ۱۰).",
"embeddingsHint": "فقط {indexed} از {total} یادداشت آماده گروه‌بندی بر اساس موضوع هستند.",
"vsGraphHint": "با «نقشه پیوندها» (آیکون شبکه) یکسان نیست: اینجا هوش مصنوعی بر اساس معنا گروه‌بندی می‌کند.",
"openGraphMap": "باز کردن نقشه پیوندها",
"analysisFailed": "تحلیل ناموفق. تنظیمات هوش مصنوعی را بررسی کنید.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "یادداشت",
"clusterFallback": "موضوع {index}",
"unclusteredNotes": "{count} یادداشت به هیچ موضوعی اختصاص داده نشده (از نمودار پنهان).",
"emptyTitle": "کلاسترهای دانش خود را کشف کنید",
"emptyDescription": "روی «همگام‌سازی مجدد شبکه» کلیک کنید تا یادداشت‌های شما تحلیل شوند و ارتباط‌های پنهان یافت شوند",
"emptyTitle": "موضوع‌های خود را ببینید",
"emptyDescription": "روی «به‌روزرسانی» بزنید تا یادداشت‌ها بر اساس موضوع گروه‌بندی شوند.",
"stats": {
"clusters": "کلاسترها",
"bridgeNotes": "یادداشت‌های پل",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "خوشه‌های معنایی",
"title": "موضوع‌ها",
"notesCount": "{count} یادداشت",
"centralNotes": "یادداشت‌های مرکزی",
"emptyCluster": "یادداشتی در این خوشه نیست"
"emptyCluster": "یادداشتی در این موضوع نیست"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "هم‌خوانی {score}%",
"moreThemes": "+{count}",
"needsResync": "شبکه را دوباره همگام‌سازی کنید تا جفت‌های پل به‌روزرسانی شوند.",
"scoreHint": "میانگین تمایل معنایی به دو موضوعی که این یادداشت به هم متصل می‌کند (شباهت کسینوسی)."
"scoreHint": "این یادداشت چقدر به دو موضوعی که به هم وصل می‌کند نزدیک است."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "گراف",
"viewDashboard": "داشبورد",
"isolatedClusters": {
"title": "خوشه‌های ایزوله ({count})",
"title": "موضوع‌های جدا ({count})",
"badge": "متصل نیست",
"empty": "همه کلاسترها به هم متصل‌اند!"
"empty": "همه موضوع‌ها دست‌کم با یک یادداشت پل به هم وصل شده‌اند."
},
"focusCluster": {
"title": "تمرکز روی کلاستر فعال",
"description": "این خوشه موضوعی شامل {count} یادداشت مکمل است. روی یک یادداشت کلیک کنید تا باز شود.",
"title": "موضوع باز است",
"description": "این موضوع شامل {count} یادداشت است. روی یک یادداشت کلیک کنید تا باز شود.",
"close": "بستن"
},
"badgeDominant": "غالب",
"bridgeCount": "پل",
"echoTitle": "شما دائماً به این ایده برمی‌گردید",
"tipClusters": "هوش مصنوعی یادداشت‌های شما را بر اساس شباهت معنایی گروه‌بندی کرد — فارغ از کارنت.",
"tipClusters": "هوش مصنوعی یادداشت‌ها را بر اساس موضوع گروه‌بندی کرد، حتی اگر در دفترهای مختلف باشند.",
"tipClustersAction": "روی موضوع کلیک کنید تا یادداشت‌هایش را ببینید. روی یادداشت کلیک کنید تا باز شود.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "روی یک یادداشت کلیک کنید تا باز شود و ارتباط را درک کنید.",
"tipEcho": "پژواک حافظه دو یادداشت را تشخیص می‌دهد که در زمان‌های متفاوت نوشته شده و موضوع یکسانی دارند.",
"tipEchoAction": "دو یادداشت، یک ایده، لحظات متفاوت. برای کاوش کلیک کنید.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "روی «ایجاد یادداشت پل» کلیک کنید تا یادداشت نوشته و بلافاصله باز شود.",
"tipIsolated": "این موضوعات ایزوله هستند: هیچ یادداشتی آن‌ها را به بقیه متصل نمی‌کند. شاید دیدگاهی کم است.",
"tipIsolatedAction": "این موضوعات یادداشتی ندارند که آن‌ها را به بقیه افکار متصل کند.",
"recalcSystem": {
"title": "سیستم محاسبه مجدد",
"statusSynced": "همگام‌شده",
"scheduledCron": رنامه‌ریزی‌شده",
"lastSync": "آخرین همگام‌سازی"
"title": "به‌روزرسانی موضوع‌ها",
"statusSynced": "به‌روز",
"scheduledCron": ه‌روزرسانی خودکار",
"lastSync": "آخرین به‌روزرسانی"
},
"resetFocus": "بازنشانی تمرکز",
"resetFocus": "نمایش همه",
"listView": "لیست",
"graphAriaLabel": "شبکه معنایی: {clusters} خوشه، {notes} یادداشت، {bridges} یادداشت پل. کلیدهای جهت‌دار برای ناوبری.",
"listAriaLabel": "فهرست خوشه‌های قابل دسترسی با یادداشت‌ها و اتصالات پل",
"graphAriaLabel": "نقشه موضوع‌ها: {clusters} موضوع، {notes} یادداشت، {bridges} یادداشت پل. برای جابه‌جایی راحت‌تر به فهرست بروید.",
"listAriaLabel": "فهرست موضوع‌ها، یادداشت‌ها و یادداشت‌های پل",
"dashboardFilterPlaceholder": "فیلتر یادداشت‌های پل، موضوع‌ها…",
"legendFilterPlaceholder": "فیلتر موضوع‌ها…",
"legendShowLess": "نمایش کمتر",
@@ -3896,7 +3897,7 @@
"genericError": "هنگام ارسال به نمونه شما خطایی رخ داد.",
"ignore": "تسلط یافته",
"processing": "در حال پردازش…",
"processingDetail": "در حال تولید برچسبها، خلاصه معنایی و جاسازی‌ها.",
"processingDetail": "آماده‌سازی یادداشت: برچسب، خلاصه، جستجو بر اساس معنا.",
"publishedOn": "منتشر شده در {domain}",
"quitSimulator": "بستن شبیه‌ساز",
"realtimeCapture": "تاریخ: ثبت زنده",
@@ -4156,7 +4157,7 @@
"match": "ورود",
"memoryEchoDisabled": "پژواک حافظه در تنظیمات هوش مصنوعی شما غیرفعال است.",
"mindMap": "نقشه ذهنی",
"mindMapEmpty": "هنوز موضوعی شناسایی نشده. تحلیل معنایی یادداشت‌های شما را بر اساس موضوع گروه‌بندی می‌کند.",
"mindMapEmpty": "هنوز موضوعی نیست. هوش مصنوعی یادداشت‌ها را بر اساس موضوع گروه می‌کند.",
"mindMapOpen": "باز کردن نقشه بینش ←",
"mindMapUnavailable": "نقشه ذهنی در دسترس نیست.",
"new": "یادداشت‌های ایجاد‌شده",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "افزودن به یادداشت",
"bridge": "ایده پل",
"connect": "پیوند معنایی",
"connect": "پیوند یک یادداشت",
"continue": "ادامه",
"daily": "روزنامه",
"explore": "کاوش موضوع",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "مغز دوم شما در یک نگاه: پیشنهادهای هوش مصنوعی، ثبت سریع و مراحل بعدی. از میانبرها برای شروع استفاده کنید.",
"resumeOpen": "از سرگیری",
"review": "مرور",
"semanticConnection": "تمایل معنایی",
"semanticConnection": "نزدیکی",
"sentiment": "احساس",
"sentimentDominant": "لحن غالب این هفته",
"suggestedBridge": "اتصال {clusterA} و {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "حفظ، استمرار و مجموع کارت‌ها.",
"gmail": "رفتارهای ایمیل همگام‌سازی شده از Gmail.",
"inbox": "یادداشت‌هایی که منتظر بایگانی در دفترچه‌ها هستند.",
"intelligence": "پیوندهای معنایی، ایده‌های پل و کشفیات عامل‌ها.",
"intelligence": "یادداشت‌هایی که به هم می‌رسند، ایده‌هایی که پل می‌زنند و نتیجهٔ عامل‌ها.",
"link-suggestions": "بخش‌هایی برای پیوند در یادداشت فعلی شما.",
"mind-map": "خوشه‌های موضوعی بر اساس حجم یادداشت‌ها سایزگذاری شده‌اند.",
"next-paths": "مراحل بعدی پیشنهادشده توسط هوش مصنوعی از آخرین کار شما.",
@@ -4258,7 +4259,7 @@
"resume": "یادداشت‌های اخیر خود را از جایی که رها کردید ادامه دهید.",
"revision": "فلش‌کارت‌های با مرور با فاصله‌گذاری زمانی.",
"sentiment": "لحن احساسی یادداشت‌های شما در این هفته.",
"stats": "خوشه‌ها، یادداشت‌های پل و مجموع یادداشت‌های نمایه‌شده.",
"stats": "موضوع‌ها، یادداشت‌هایی که پل می‌زنند و یادداشت‌های نمایه‌شده.",
"usage": "اعتبار هوش مصنوعی باقی‌مانده و محدودیت‌های ماهانه."
},
"widgetDone": "انجام شد",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "نرخ حفظ یادگیری، استمرار مرور و مجموع کارت‌ها.",
"gmail": "رفتارهای ایمیل همگام‌سازی شده از یکپارچه‌سازی Gmail.",
"inbox": "یادداشت‌های بدون دفترچه. آن‌ها را بایگانی کنید تا مغز دوم شما منظم بماند.",
"intelligence": "کشفیات هوش مصنوعی: پیوندهای معنایی بین یادداشت‌ها، ایده‌های پل و یافته‌های عامل.",
"intelligence": "آنچه هوش مصنوعی پیدا کرد: یادداشت‌هایی که به هم می‌رسند، ایده‌هایی که پل می‌زنند و نتیجهٔ عاملها.",
"link-suggestions": "بخش‌هایی از یادداشت‌های دیگر که ارزش پیوند به کار فعلی شما را دارند.",
"mind-map": "خوشه‌های موضوعی بر اساس حجم یادداشت‌ها. برای کاوش در Insights کلیک کنید.",
"next-paths": "مراحل بعدی پیشنهادی بر اساس آخرین یادداشت ویرایش‌شده: از سرگیری، پیوند، پل یا تحقیق.",
@@ -4284,7 +4285,7 @@
"resume": "اخرین یادداشت‌های به‌روزرسانی‌شده شما. از جایی که رها کردید ادامه دهید.",
"revision": "فلش‌کارت‌های با مرور با فاصله‌گذاری زمانی امروز.",
"sentiment": "لحن احساسی یادداشت‌های ویرایش شده در ۷ روز گذشته. حداقل به ۳ یادداشت اخیر و فعال بودن هوش مصنوعی نیاز دارد.",
"stats": "آمار شاخص معنایی: موضوعات فعال، یادداشت‌های پل، مجموع یادداشت‌های فهرست‌بندی شده.",
"stats": "شمار موضوع‌ها، یادداشت‌هایی که پل می‌زنند و یادداشت‌های نمایه‌شده.",
"usage": "مصرف ماهانه اعتبار هوش مصنوعی بر اساس ویژگی."
},
"widgetHelpClose": "بستن",
@@ -4319,7 +4320,7 @@
"resume": "از اینجا ادامه دهید",
"revision": "فلش‌کارت",
"sentiment": "احساس",
"stats": "آمار معنایی",
"stats": "موضوع‌ها و یادداشت‌ها",
"usage": "سهمیه هوش مصنوعی"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "آن را در فیلد زیر بچسبانید و روی «اتصال» کلیک کنید. اولین همگام‌سازی تمام کتاب‌ها و مقالات شما را وارد می‌کند.",
"readwiseHelpStep3": "هر کتاب به یک یادداشت در دفترچه «Readwise 📚» تبدیل می‌شود — با تمام نکات‌برجسته شده شما مرتب شده.",
"readwiseHelpStep4": "برای به‌روزرسانی با برجسته‌سازی‌های جدید، دوباره به اینجا بیایید و روی \"اکنون همگام‌سازی کن\" کلیک کنید.",
"readwiseHelpStep5": "💡 نکته: از یک یادداشت Readwise فلش‌کارت هوش مصنوعی بسازید (دکمه 🎓 در ویرایشگر) تا مطالعه‌های خود را مرور کنید.",
"readwiseHelpStep5": "نکته: از یک یادداشت Readwise کارت مرور بسازید (دکمهٔ کارت‌ها بالای یادداشت) تا مطالعه‌های خود را مرور کنید.",
"readwiseInfo": "Readwise چگونه کار می‌کند؟",
"readwiseSynced": "همگام‌سازی Readwise — {{created}} ایجاد، {{updated}} به‌روزرسانی",
"readwiseTokenPlaceholder": "توکن Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "تبدیل کامل شد! دفترچه پیوندی ایجاد شد.",
"convertToNotebook": "تبدیل به دفترچه",
"converting": "در حال تبدیل…",
"createLocalDb": "ایجاد یک پایگاه داده محلی مستقل",
"createLocalDb": "ایجاد جدول در این یادداشت",
"createNotebook": "ایجاد دفترچه",
"defaultOption1": "گزینه ۱",
"defaultOption2": "گزینه ۲",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "بلوک قدیمی حذف شد.",
"displayModeGallery": "گالری",
"displayModeTable": "جدول",
"echoLoading": "در حال جستجوی ارتباطات معنایی...",
"echoNameRequired": "ابتدا یک نام برای این سطر وارد کنید تا ارتباطات معنایی جستجو شوند.",
"echoLoading": "در حال جستجوی یادداشت‌های نزدیک…",
"echoNameRequired": "ابتدا برای این سطر نامی بگذارید تا یادداشت‌های نزدیک پیدا شوند.",
"echoNoMatch": "یادداشتی حاوی «{{query}}» در فضای کاری شما یافت نشد.",
"echoPopoverTitle": "طنین‌های معنایی 🔮",
"echoPopoverTitle": "یادداشت‌های نزدیک",
"echoSearchError": "هنگام جستجو خطایی رخ داد.",
"echoUpgradeText": "این جدول را به دفترچه تبدیل کنید تا تحلیل عصبی Memento فعال شود.",
"echoUpgradeText": "این جدول را به دفترچه تبدیل کنید تا Memento یادداشت‌های نزدیک را پیدا کند.",
"emptyTable": "سطری در جدول نیست.",
"insertCitation": "درج پیوند در ویرایشگر",
"insertDesc": "داده‌های ساختاریافته دفترچه خود را جاسازی کنید",
@@ -4514,9 +4515,9 @@
"keywordMatch": "کلمه کلیدی",
"linkToNotebook": "پیوند به یک دفترچه",
"loadError": "خطا در بارگذاری داده‌های ساختاریافته.",
"localDbTitle": "پایگاه داده مستقل",
"localDbTitle": "جدول در این یادداشت",
"namePlaceholder": "یک نام وارد کنید…",
"noEchoFound": "هیچ ارتباط معنایی شناسایی نشد.",
"noEchoFound": "یادداشت نزدیکی پیدا نشد.",
"noNotebook": "این بلوک به یک دفترچه نیاز دارد. ابتدا این یادداشت را به یک دفترچه منتقل کنید.",
"noNotebookDesc": "این بلوک نمای ساختاریافته یک دفترچه را نمایش می‌دهد. دفترچه‌ای برای پیوند را انتخاب کنید:",
"noSchema": "این دفترچه هنوز نمای ساختاریافته ندارد. آن را از سرصفحه دفترچه تنظیم کنید.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "پیوند به یک دفترچه",
"selectOptionsPlaceholder": "گزینه‌های جدا شده با ویرگول",
"semanticEcho": "طنین‌های معنایی",
"switchToLocalDb": "تغییر به پایگاه داده محلی",
"turnIntoLabel": "پایگاه داده درون‌خطی",
"switchToLocalDb": "بازگشت به جدول این یادداشت",
"turnIntoLabel": "جدول داخل یادداشت",
"untitled": "بدون عنوان"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "جستجوی یک یادداشت…",
"selectOptions": "گزینه‌ها (یکی در هر سطر)",
"selectOptionsPlaceholder": "انجام نشده\\\nدر حال انجام\\\nانجام شده",
"semanticResonances": "طنین‌های معنایی",
"semanticResonances": "یادداشت‌هایی که به هم می‌رسند",
"tagApplied": "پل‌ها",
"viewCalendarHint": "تقویم — یادداشت‌های شما بر اساس تاریخ سازمان‌یافته",
"viewGallery": "گالری",

View File

@@ -114,6 +114,17 @@
"title": "Notes",
"newNote": "Nouvelle note",
"reorganize": "Réorganiser les notes",
"selectAll": "Tout sélectionner",
"deselectAll": "Tout désélectionner",
"selectedCount": "{count} notes sélectionnées",
"selectedCountOne": "1 note sélectionnée",
"bulkMove": "Déplacer",
"bulkTrash": "Corbeille",
"selectNote": "Sélectionner cette note",
"confirmBulkDeleteTitle": "Envoyer à la corbeille",
"confirmBulkDelete": "Ces notes iront dans la corbeille. Vous pourrez les récupérer ensuite.",
"bulkTrashedToast": "{count} notes envoyées à la corbeille.",
"bulkMovedToast": "{count} notes déplacées.",
"untitled": "Sans titre",
"placeholder": "Prenez une note...",
"markdownPlaceholder": "Prenez une note... (Markdown supporté)",
@@ -414,7 +425,7 @@
"placeholder": "Rechercher",
"searchPlaceholder": "Rechercher dans vos notes...",
"semanticInProgress": "Recherche IA en cours...",
"semanticTooltip": "Recherche sémantique IA",
"semanticTooltip": "Recherche par le sens",
"searching": "Recherche en cours...",
"noResults": "Aucun résultat trouvé",
"resultsFound": "{count} notes trouvées",
@@ -847,7 +858,7 @@
"match": "{percentage}% correspondance",
"fused": "Fusionné",
"clickToView": "Cliquer pour voir la note →",
"defaultInsight": "Ces notes semblent sémantiquement liées.",
"defaultInsight": "Ces notes se rejoignent.",
"overlay": {
"title": "Notes connectées",
"searchPlaceholder": "Rechercher des connexions...",
@@ -889,7 +900,7 @@
"backToNote": "Revenir à ma note",
"openInEditor": "Ouvrir dans l'éditeur",
"badgeLabel": "Memory Echo",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % de proximité",
"intro": "Memento a repéré une autre note sur le même sujet. Consultez-la, insérez une citation ou fusionnez — sans quitter celle-ci.",
"detectedIn": "Passage repéré dans : {title}",
"helpToggle": "Comment ça marche ?",
@@ -908,7 +919,7 @@
"hideAll": "Masquer les connexions ({count})",
"retroTitle": "Notes qui citent ce contenu",
"retroDescription": "Ce passage est repris dans {count} autre(s) note(s) :",
"consentRequired": "Activez le traitement IA dans Paramètres → IA pour voir les connexions sémantiques de cette note.",
"consentRequired": "Activez le traitement IA dans Paramètres → IA pour voir les liens de cette note.",
"bottomCueLoading": "Memory Echo analyse en bas…",
"bottomCueFound": "{count} notes liées plus bas",
"bottomCueFoundOne": "1 note liée plus bas",
@@ -982,7 +993,7 @@
"clipPage": "Clipper cette page",
"analyzingSource": "Analyse de la source",
"processing": "Traitement en cours…",
"processingDetail": "Génération automatique des tags, résumé sémantique et calcul des embeddings en cours.",
"processingDetail": "Préparation de la note : étiquettes, résumé, recherche par le sens.",
"successBadge": "Traitement réussi",
"sentToNotebook": "Note envoyée dans le carnet",
"viewInMomento": "Voir dans Memento",
@@ -1093,8 +1104,8 @@
"cleanupError": "Impossible de nettoyer les étiquettes",
"indexingComplete": "Indexation terminée : {count} note(s) traitée(s)",
"indexingError": "Erreur pendant lindexation",
"semanticIndexing": "Indexation sémantique",
"semanticIndexingDescription": "Générer des vecteurs pour toutes les notes afin de permettre la recherche par intention",
"semanticIndexing": "Index pour la recherche par le sens",
"semanticIndexingDescription": "Préparer toutes les notes pour la recherche par le sens",
"profile": "Profil",
"searchNoResults": "Aucun paramètre trouvé",
"languageAuto": "Langue définie sur Auto",
@@ -1718,7 +1729,7 @@
"title": "Fonctionnalités",
"description": "Capacités alimentées par l'IA",
"titleSuggestions": "Suggestions de titre alimentées par l'IA",
"semanticSearch": "Recherche sémantique avec embeddings",
"semanticSearch": "Recherche par le sens",
"paragraphReformulation": "Reformulation de paragraphes",
"memoryEcho": "Perspectives quotidiennes Memory Echo",
"notebookOrganization": "Organisation en carnets",
@@ -1833,7 +1844,7 @@
},
"indexing": {
"title": "Reconstruire l'index de recherche",
"description": "Régénérer les embeddings pour toutes les notes afin d'améliorer la recherche sémantique.",
"description": "Recalculer lindex de toutes les notes pour améliorer la recherche par le sens.",
"button": "Reconstruire l'index",
"success": "Indexation terminée : {count} notes traitées",
"failed": "Erreur lors de l'indexation"
@@ -1906,7 +1917,7 @@
"featurePublishEnhance": "Publication IA",
"featureBrainstormExpand": "Extensions brainstorm",
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureFlashcards": "Flashcards IA",
"featureFlashcards": "Cartes de révision",
"featureVoice": "Transcription vocale",
"featureSlides": "Présentations",
"featureDiagrams": "Diagrammes",
@@ -2102,7 +2113,7 @@
"unlinkedList": "Mentions non reliées ({count})",
"refBadge": "Entrant",
"toBadge": "Sortant",
"noInbound": "Aucun lien wiki ne pointe vers cette note.",
"noInbound": "Aucune autre note ne pointe vers celle-ci.",
"noOutbound": "Cette note ne contient pas encore de liens vers d'autres notes."
}
},
@@ -2288,7 +2299,7 @@
"custom": "Personnalisé"
},
"typeDescriptions": {
"scraper": "Scrape plusieurs sites et crée un résumé",
"scraper": "Lit plusieurs sites et en fait un résumé",
"researcher": "Recherche des informations sur un sujet",
"monitor": "Surveille un carnet et analyse les notes",
"slideGenerator": "Crée une présentation PowerPoint à partir de notes",
@@ -2302,7 +2313,7 @@
"namePlaceholder": "Ex : Veille IA du mardi",
"description": "Description (optionnel)",
"descriptionPlaceholder": "Résumé hebdo des actus IA",
"urlsLabel": "URLs à scraper",
"urlsLabel": "Adresses des pages à lire",
"urlsOptional": "(optionnel)",
"sourceNotebook": "Carnet à surveiller",
"selectNotebook": "Sélectionner un carnet...",
@@ -2367,7 +2378,7 @@
"notifyEmail": "Notification par email",
"notifyEmailHint": "Recevez un email avec les résultats de l'agent après chaque exécution",
"includeImages": "Inclure les images",
"includeImagesHint": "Extraire les images des pages scrapées et les joindre à la note générée",
"includeImagesHint": "Prendre les images des pages lues et les joindre à la note",
"back": "Retour",
"configuration": "Configuration",
"options": "Options"
@@ -2446,15 +2457,15 @@
},
"veilleAI": {
"name": "Veille IA",
"description": "Scrape les flux RSS de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) et génère un résumé hebdomadaire."
"description": "Lit les flux de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben) et en fait un résumé de la semaine."
},
"veilleTech": {
"name": "Veille Tech",
"description": "Scrape les flux RSS tech (Hacker News, DEV, Product Hunt) et crée un résumé quotidien."
"description": "Lit les flux tech (Hacker News, DEV, Product Hunt) et en fait un résumé du jour."
},
"veilleDev": {
"name": "Veille Dev",
"description": "Scrape les flux RSS dev (JavaScript, TypeScript, React) et résume les nouvelles techs."
"description": "Lit les flux développement (JavaScript, TypeScript, React) et résume les nouveautés."
},
"surveillant": {
"name": "Surveillant de Notes",
@@ -2501,7 +2512,7 @@
"tools": {
"title": "Outils de l'agent",
"webSearch": "Recherche web",
"webScrape": "Scraping web",
"webScrape": "Lecture de pages web",
"noteSearch": "Recherche notes",
"noteRead": "Lire une note",
"noteCreate": "Créer une note",
@@ -2534,11 +2545,11 @@
"howToUse": "Comment utiliser un agent ?",
"howToUseContent": "1. Cliquez sur **\"Nouvel Agent\"** (ou commencez par un **Template** en bas de page)\n2. Choisissez un **type d'agent** (Chercheur, Veilleur, Surveillant, Personnalise)\n3. Donnez-lui un **nom** et remplissez les champs specifiques au type\n4. Choisissez optionnellement un **carnet cible** ou sauvegarder les resultats\n5. Selectionnez une **frequence** (Manuel = vous le lancez vous-meme)\n6. Cliquez sur **Creer**, puis appuyez sur le bouton **Executer** sur la carte de l'agent\n7. Une fois termine, une nouvelle note apparait dans votre carnet cible",
"types": "Types d'agents",
"typesContent": "### Chercheur\nRecherche le web sur un **sujet que vous definissez** et cree une note structuree avec des sources et references.\n\n- **Champs :** nom, sujet de recherche (ex : \"Dernieres avancees en intelligence artificielle\")\n- **Outils par defaut :** recherche web, scraping web, recherche de notes, creation de note\n- **Prerequis :** un fournisseur de recherche web doit etre configure (SearXNG ou Brave Search)\n\n### Veilleur (Scraper)\nScrape une **liste d'URLs** que vous spécifiez et produit un résumé de leur contenu.\n\n- **Champs :** nom, liste d'URLs (sites web ou flux RSS)\n- **Outils par défaut :** scraping web, création de note\n- **Astuce RSS :** Utilisez des URLs de flux RSS (ex: `site.com/feed`) pour scraper automatiquement les articles individuels au lieu des pages de liste\n- **Cas d'usage :** veille hebdomadaire tech, surveillance de concurrents, revue de blogs\n\n### Surveillant (Observateur de carnet)\nLit les notes d'un **carnet que vous selectionnez** et produit une analyse, des connexions et des suggestions.\n\n- **Champs :** nom, carnet source (celui a analyser)\n- **Outils par defaut :** recherche de notes, lecture de note, creation de note\n- **Cas d'usage :** trouver des connexions entre vos notes, obtenir des suggestions de lecture, detecter des themes recurrents\n\n### Personnalise\nUne toile vierge : vous ecrivez votre propre **prompt** et choisissez vos **outils**.\n\n- **Champs :** nom, description, instructions personnalisees (en mode avance)\n- **Aucun outil par defaut** — vous choisissez exactement ce dont l'agent a besoin\n- **Cas d'usage :** tout projet creatif ou specifique qui ne rentre pas dans les autres types",
"typesContent": "### Chercheur\nRecherche le web sur un **sujet que vous definissez** et cree une note structuree avec des sources et references.\n\n- **Champs :** nom, sujet de recherche (ex : \"Dernieres avancees en intelligence artificielle\")\n- **Outils par defaut :** recherche web, scraping web, recherche de notes, creation de note\n- **Prerequis :** un fournisseur de recherche web doit etre configure (SearXNG ou Brave Search)\n\n### Veilleur\nLit une **liste de pages** que vous indiquez et en produit un résumé.\n\n- **Champs :** nom, liste d'URLs (sites web ou flux RSS)\n- **Outils par défaut :** lecture de pages web, création de note\n- **Astuce RSS :** Utilisez des URLs de flux RSS (ex: `site.com/feed`) pour lire automatiquement les articles un par un au lieu des pages de liste\n- **Cas d'usage :** veille hebdomadaire tech, surveillance de concurrents, revue de blogs\n\n### Surveillant (Observateur de carnet)\nLit les notes d'un **carnet que vous selectionnez** et produit une analyse, des connexions et des suggestions.\n\n- **Champs :** nom, carnet source (celui a analyser)\n- **Outils par defaut :** recherche de notes, lecture de note, creation de note\n- **Cas d'usage :** trouver des connexions entre vos notes, obtenir des suggestions de lecture, detecter des themes recurrents\n\n### Personnalise\nUne toile vierge : vous ecrivez votre propre **prompt** et choisissez vos **outils**.\n\n- **Champs :** nom, description, instructions personnalisees (en mode avance)\n- **Aucun outil par defaut** — vous choisissez exactement ce dont l'agent a besoin\n- **Cas d'usage :** tout projet creatif ou specifique qui ne rentre pas dans les autres types",
"advanced": "Mode avance (Instructions IA, Iterations max)",
"advancedContent": "Cliquez sur **\"Mode avance\"** en bas du formulaire pour acceder aux reglages supplementaires.\n\n### Instructions IA\n\nCe champ vous permet de **remplacer le prompt systeme par defaut** de l'agent. Si vous le laissez vide, l'agent utilise un prompt automatique adapte a son type.\n\n**Pourquoi l'utiliser ?** Vous voulez controler exactement le comportement de l'agent. Par exemple :\n- \"Redige le resume en anglais, meme si les sources sont en francais\"\n- \"Structure la note avec les sections : Contexte, Points cles, Opinion personnelle\"\n- \"Ignore les articles de plus de 30 jours et concentre-toi sur l'actualite recente\"\n- \"Pour chaque theme detecte, propose 3 pistes d'approfondissement avec des liens\"\n\n> **Note :** Vos instructions remplacent celles par defaut, pas qu'elles s'y ajoutent.\n\n### Iterations max\n\nC'est le **nombre maximum de cycles** que l'agent peut effectuer. Un cycle = l'agent reflechit, appelle un outil, lit le resultat, puis decide de la prochaine action.\n\n- **3-5 iterations :** pour des taches simples (scraping d'une seule page)\n- **10 iterations (defaut) :** bon equilibre pour la plupart des cas\n- **15-25 iterations :** pour des recherches profondes ou l'agent doit explorer plusieurs pistes\n\n> **Attention :** Plus d'iterations = plus de temps et potentiellement plus de couts API.",
"tools": "Outils disponibles (detail complet)",
"toolsContent": "Quand le mode avance est active, vous pouvez choisir precisement quels outils l'agent peut utiliser.\n\n### Recherche web\nPermet a l'agent de **lancer des recherches sur internet** via SearXNG ou Brave Search.\n\n- **Ce que ca fait :** L'agent formule une requete, obtient des resultats de recherche, et peut ensuite scraper les pages les plus pertinentes.\n- **Quand l'activer :** Quand l'agent doit trouver des informations sur un sujet (type Chercheur ou Personnalise).\n- **Configuration requise :** SearXNG (avec format JSON active) ou une cle API Brave Search. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent cherche \"React Server Components best practices 2025\" et obtient 10 resultats, puis scrape les 3 plus pertinents.\n\n### Scraping web\nPermet à l'agent d'**extraire le contenu texte d'une page web** à partir de son URL.\n\n- **Ce que ça fait :** L'agent visite une URL et récupère le texte structuré de la page (titres, paragraphes, listes). Les publicités, menus et pieds de page sont généralement filtrés.\n- **Support RSS/Atom :** Si l'URL est un flux RSS, l'outil détecte automatiquement le flux, parse les articles et scrape les 5 derniers individuellement. Utilisez des URLs de flux RSS pour un contenu beaucoup plus riche que les pages de listing.\n- **Quand l'activer :** Pour le type Veilleur (obligatoire), ou tout agent qui doit lire des pages web.\n- **Configuration :** Fonctionne sans configuration, mais une **clé API Jina Reader** améliore la qualité et supprime les limites de débit. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent scrape le flux RSS de `techcrunch.com/feed/` et récupère les 5 derniers articles complets.\n\n### Recherche de notes\nPermet a l'agent de **chercher dans vos notes existantes**.\n\n- **Ce que ca fait :** L'agent effectue une recherche textuelle dans toutes vos notes (ou celles d'un carnet specifique).\n- **Quand l'activer :** Pour les agents de type Surveillant, ou tout agent qui doit croiser des informations avec vos notes.\n- **Configuration :** Aucune — fonctionne immediatement.\n- **Exemple :** L'agent cherche toutes les notes contenant \"machine learning\" pour voir ce que vous avez deja ecrit sur le sujet.\n\n### Lire une note\nPermet a l'agent de **lire le contenu complet d'une note** specifique.\n\n- **Ce que ca fait :** Apres avoir trouve une note (via Recherche de notes), l'agent peut lire son contenu integral pour l'analyser ou l'utiliser.\n- **Quand l'activer :** En complement de Recherche de notes. Activer les deux ensemble permet a l'agent de chercher PUIS lire.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent trouve 5 notes sur \"productivite\", les lit toutes, et redige une synthese.\n\n### Creer une note\nPermet a l'agent d'**ecrire une nouvelle note** dans votre carnet cible.\n\n- **Ce que ca fait :** L'agent cree une note avec un titre et du contenu. C'est ainsi que les resultats arrivent dans vos carnets.\n- **Quand l'activer :** Presque toujours — sans cet outil, l'agent ne peut pas sauvegarder ses resultats. **Laissez-le active par defaut.**\n- **Configuration :** Aucune.\n- **Exemple :** L'agent cree une note \"Veille Tech - Semaine 16\" avec un resume de 5 articles.\n\n### Fetch URL\nPermet a l'agent de **telecharger le contenu brut d'une URL** (HTML, JSON, texte...).\n\n- **Ce que ca fait :** Contrairement au scraping qui extrait le texte proprement, Fetch URL recupere le contenu brut. Utile pour les API, les fichiers JSON, ou les pages non standard.\n- **Quand l'activer :** Quand l'agent doit interroger des API REST, lire des flux RSS, ou acceder a des donnees brutes.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent interroge l'API GitHub pour lister les derniers commits d'un projet.\n\n### Memoire\nPermet a l'agent d'**acceder a l'historique de ses executions precedentes**.\n\n- **Ce que ca fait :** L'agent peut rechercher dans les resultats de ses runs passes. Cela lui permet de comparer, de suivre des evolutions, ou de ne pas repeter les memes informations.\n- **Quand l'activer :** Pour les agents qui s'executent regulierement et doivent maintenir une continuite entre les executions.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent compare les actus de cette semaine avec celles de la semaine derniere et met en evidence les nouveautes.",
"toolsContent": "Quand le mode avance est active, vous pouvez choisir precisement quels outils l'agent peut utiliser.\n\n### Recherche web\nPermet a l'agent de **lancer des recherches sur internet** via SearXNG ou Brave Search.\n\n- **Ce que ca fait :** L'agent formule une requete, obtient des resultats de recherche, puis peut lire les pages les plus utiles.\n- **Quand l'activer :** Quand l'agent doit trouver des informations sur un sujet (type Chercheur ou Personnalise).\n- **Configuration requise :** SearXNG (avec format JSON active) ou une cle API Brave Search. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent cherche \"React Server Components best practices 2025\" et obtient 10 resultats, puis lit les 3 plus utiles.\n\n### Lecture de pages web\nPermet à l'agent de **lire le texte d'une page** à partir de son adresse.\n\n- **Ce que ça fait :** L'agent visite une URL et récupère le texte structuré de la page (titres, paragraphes, listes). Les publicités, menus et pieds de page sont généralement filtrés.\n- **Support RSS/Atom :** Si l'URL est un flux RSS, l'outil détecte automatiquement le flux, parse les articles et scrape les 5 derniers individuellement. Utilisez des URLs de flux RSS pour un contenu beaucoup plus riche que les pages de listing.\n- **Quand l'activer :** Pour le type Veilleur (obligatoire), ou tout agent qui doit lire des pages web.\n- **Configuration :** Fonctionne sans configuration, mais une **clé API Jina Reader** améliore la qualité et supprime les limites de débit. Configurable dans **Admin > Outils Agents**.\n- **Exemple :** L'agent scrape le flux RSS de `techcrunch.com/feed/` et récupère les 5 derniers articles complets.\n\n### Recherche de notes\nPermet a l'agent de **chercher dans vos notes existantes**.\n\n- **Ce que ca fait :** L'agent effectue une recherche textuelle dans toutes vos notes (ou celles d'un carnet specifique).\n- **Quand l'activer :** Pour les agents de type Surveillant, ou tout agent qui doit croiser des informations avec vos notes.\n- **Configuration :** Aucune — fonctionne immediatement.\n- **Exemple :** L'agent cherche toutes les notes contenant \"machine learning\" pour voir ce que vous avez deja ecrit sur le sujet.\n\n### Lire une note\nPermet a l'agent de **lire le contenu complet d'une note** specifique.\n\n- **Ce que ca fait :** Apres avoir trouve une note (via Recherche de notes), l'agent peut lire son contenu integral pour l'analyser ou l'utiliser.\n- **Quand l'activer :** En complement de Recherche de notes. Activer les deux ensemble permet a l'agent de chercher PUIS lire.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent trouve 5 notes sur \"productivite\", les lit toutes, et redige une synthese.\n\n### Creer une note\nPermet a l'agent d'**ecrire une nouvelle note** dans votre carnet cible.\n\n- **Ce que ca fait :** L'agent cree une note avec un titre et du contenu. C'est ainsi que les resultats arrivent dans vos carnets.\n- **Quand l'activer :** Presque toujours — sans cet outil, l'agent ne peut pas sauvegarder ses resultats. **Laissez-le active par defaut.**\n- **Configuration :** Aucune.\n- **Exemple :** L'agent cree une note \"Veille Tech - Semaine 16\" avec un resume de 5 articles.\n\n### Fetch URL\nPermet a l'agent de **telecharger le contenu brut d'une URL** (HTML, JSON, texte...).\n\n- **Ce que ca fait :** Contrairement au scraping qui extrait le texte proprement, Fetch URL recupere le contenu brut. Utile pour les API, les fichiers JSON, ou les pages non standard.\n- **Quand l'activer :** Quand l'agent doit interroger des API REST, lire des flux RSS, ou acceder a des donnees brutes.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent interroge l'API GitHub pour lister les derniers commits d'un projet.\n\n### Memoire\nPermet a l'agent d'**acceder a l'historique de ses executions precedentes**.\n\n- **Ce que ca fait :** L'agent peut rechercher dans les resultats de ses runs passes. Cela lui permet de comparer, de suivre des evolutions, ou de ne pas repeter les memes informations.\n- **Quand l'activer :** Pour les agents qui s'executent regulierement et doivent maintenir une continuite entre les executions.\n- **Configuration :** Aucune.\n- **Exemple :** L'agent compare les actus de cette semaine avec celles de la semaine derniere et met en evidence les nouveautes.",
"frequency": "Frequence & planification",
"frequencyContent": "| Frequence | Comportement\n|-----------|------------\n| **Manuel** | Vous cliquez sur \"Executer\" — aucune planification automatique\n| **Toutes les heures** | S'execute toutes les heures\n| **Quotidien** | S'execute une fois par jour\n| **Hebdomadaire** | S'execute une fois par semaine\n| **Mensuel** | S'execute une fois par mois\n\n> **Astuce :** Commencez par \"Manuel\" pour tester votre agent, puis passez a une frequence automatique une fois satisfait.",
"targetNotebook": "Carnet cible",
@@ -2546,12 +2557,12 @@
"templates": "Modèles",
"templatesContent": "Les templates sont des agents pré-configurés installables en un clic. Vous les trouvez en **bas de la page Agents**.\n\nTemplates disponibles :\n\n- **Veille IA** — revue hebdomadaire via les flux RSS de 6 sites IA (The Verge, TechCrunch, Ars Technica, MIT Tech Review, WIRED, Korben)\n- **Veille Tech** — résumé quotidien via les flux RSS de Hacker News, DEV Community, Product Hunt\n- **Veille Dev** — nouvelles technos via les flux RSS de DEV (JavaScript, TypeScript, React)\n- **Surveillant de Notes** — analyse un carnet et suggère des connexions\n- **Chercheur de Sujet** — recherche approfondie sur un sujet spécifique\n\nLes templates sont installés avec les outils adaptés à leur type. Vous pouvez les modifier après installation.",
"tips": "Conseils & depannage",
"tipsContent": "- **Commencez par un template** et personnalisez-le — c'est le moyen le plus rapide d'obtenir un agent fonctionnel\n- **Testez en \"Manuel\"** avant d'activer la planification automatique\n- **Utilisez des URLs de flux RSS** au lieu des pages de liste pour un contenu beaucoup plus riche (ex: `techcrunch.com/feed/` au lieu de `techcrunch.com/category/ai/`)\n- **Un agent \"Chercheur\" nécessite un fournisseur de recherche web** — configurez SearXNG (format JSON) ou Brave Search dans **Admin > Outils Agents**\n- **Si un agent échoue**, cliquez sur sa carte puis **Historique** pour voir le journal d'exécution et les traces d'outils\n- **Le bouton Activer/Désactiver** permet de mettre en pause un agent sans le supprimer\n- **La qualité du scraping web** s'améliore avec une clé API Jina Reader (optionnel, dans Admin > Outils Agents)\n- **Combinez \"Recherche de notes\" + \"Lire une note\"** pour que l'agent puisse chercher ET analyser le contenu de vos notes\n- **Activez \"Mémoire\"** si votre agent tourne régulièrement — il évitera de répéter les mêmes informations d'une exécution à l'autre\n- **Les agents répondent dans votre langue** — basculez entre français et anglais dans les paramètres",
"tipsContent": "- **Commencez par un template** et personnalisez-le — c'est le moyen le plus rapide d'obtenir un agent fonctionnel\n- **Testez en \"Manuel\"** avant d'activer la planification automatique\n- **Utilisez des URLs de flux RSS** au lieu des pages de liste pour un contenu beaucoup plus riche (ex: `techcrunch.com/feed/` au lieu de `techcrunch.com/category/ai/`)\n- **Un agent \"Chercheur\" nécessite un fournisseur de recherche web** — configurez SearXNG (format JSON) ou Brave Search dans **Admin > Outils Agents**\n- **Si un agent échoue**, cliquez sur sa carte puis **Historique** pour voir le journal d'exécution et les traces d'outils\n- **Le bouton Activer/Désactiver** permet de mettre en pause un agent sans le supprimer\n- **La qualité de la lecture de pages** s'améliore avec une clé Jina Reader (optionnel, dans Admin > Outils Agents)\n- **Combinez \"Recherche de notes\" + \"Lire une note\"** pour que l'agent puisse chercher ET analyser le contenu de vos notes\n- **Activez \"Mémoire\"** si votre agent tourne régulièrement — il évitera de répéter les mêmes informations d'une exécution à l'autre\n- **Les agents répondent dans votre langue** — basculez entre français et anglais dans les paramètres",
"tooltips": {
"agentType": "Choisissez le type de tâche que l'agent effectuera. Chaque type a des capacités et des champs différents.",
"researchTopic": "Le sujet que l'agent recherchera sur le web. Soyez précis pour de meilleurs résultats.",
"description": "Une courte description de ce que fait cet agent. Vous aide à vous souvenir de son objectif.",
"urls": "Liste des URLs à scraper. Supporte les flux RSS — utilisez les URLs de flux pour un contenu plus riche (ex: site.com/feed).",
"urls": "Liste des pages à lire. Les flux RSS marchent aussi — une adresse de flux (ex. site.com/feed) donne souvent plus darticles.",
"sourceNotebook": "Le carnet que l'agent analysera. Il lit les notes de ce carnet pour trouver des connexions et des thèmes.",
"targetNotebook": "Où la note résultat de l'agent sera sauvegardée. Choisissez Boîte de réception ou un carnet spécifique.",
"frequency": "À quelle fréquence l'agent s'exécute automatiquement. Commencez par Manuel pour tester.",
@@ -3196,7 +3207,7 @@
"relationEmpty": "Lier une note…",
"relationNoResults": "Aucune note trouvée",
"relationSearch": "Rechercher une note…",
"semanticResonances": "Résonances sémantiques",
"semanticResonances": "Notes qui se rejoignent",
"insertLink": "Insérer le lien dans l'éditeur"
},
"brainstorm": {
@@ -3419,7 +3430,7 @@
"businessFeature3": "Vos clés · {count} fournisseurs",
"businessFeature4": "Agents & brainstorm (crédits)",
"enterpriseTitle": "Entreprise",
"enterpriseDescription": "Crédits illimités ou pool dédié, SSO, support prioritaire.",
"enterpriseDescription": "Crédits illimités ou pool dédié, connexion unique pour léquipe, support prioritaire.",
"contactSales": "Contactez-nous",
"startCheckout": "Commencer",
"checkoutLoading": "Chargement du paiement…",
@@ -3474,10 +3485,10 @@
"paidPlanDesc": "Votre abonnement se renouvelle automatiquement.",
"businessDescription": "Pour les équipes et chefs de produit.",
"enterpriseFeature1": "Crédits IA illimités ou pool dédié",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Connexion unique pour toute léquipe",
"enterpriseFeature3": "Support dédié",
"enterpriseFeature4": "Facturation personnalisée",
"enterpriseFeature5": "SLA garanti",
"enterpriseFeature5": "Délai de réponse garanti",
"subtitle": "Choisissez le plan qui vous convient",
"freeDescription": "Pour découvrir Memento",
"freeF1": "Jusqu'à 100 notes",
@@ -3514,7 +3525,8 @@
"fetchStatusFailed": "Échec du chargement des informations de facturation",
"fetchQuotasFailed": "Échec du chargement des crédits",
"fetchInvoicesFailed": "Impossible de charger l'historique de facturation.",
"savePercent": "Économisez ~17%",
"savePercent": "Économisez ~{percent} %",
"billedYearTotal": "soit {price} par an",
"startTrialCta": "Essai gratuit {days} jours",
"trialFeature": "Essai gratuit {days} jours (carte requise)",
"trialEndsOn": "Votre essai gratuit se termine le {date}. Vous serez ensuite facturé automatiquement.",
@@ -3669,7 +3681,7 @@
"perMonthAnnual": "/mois, facturé à l'année",
"perUser": "+ 3,90€/user",
"perUserAnnual": "+ 2,90€/user, à l'année",
"savePercent": "~17 %",
"savePercent": "~{percent} %",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3714,10 +3726,10 @@
"cta": "Nous parler",
"feature0": "Crédits IA illimités ou pool dédié",
"feature1": "Tout Business",
"feature2": "SSO / SAML",
"feature3": "Audit logs & SLA",
"feature2": "Connexion unique pour toute léquipe",
"feature3": "Journal dactivité et délai de réponse garanti",
"feature4": "Support dédié",
"feature5": "Onboarding live"
"feature5": "Accompagnement à linstallation"
},
"basicPrice": "Gratuit",
"trialBadge": "Essai gratuit {days} jours",
@@ -3805,15 +3817,15 @@
"insightsView": {
"title": "Connexions",
"toggleMenu": "Afficher ou masquer le menu",
"subtitle": "Découvrez l'architecture cachée de votre savoir",
"subtitle": "Voyez comment vos notes se relient",
"resync": "Mettre à jour",
"mapping": "Cartographie…",
"loading": "Chargement de vos notes…",
"mappingTitle": "Cartographie de votre savoir…",
"mappingHint": "Cela peut prendre une à trois minutes. Vous pouvez continuer à naviguer ; la page se mettra à jour à la fin.",
"analyzeNow": "Lancer l'analyse sémantique",
"emptyNeedMoreNotes": "Ajoutez encore {count} notes pour débloquer le regroupement sémantique (minimum 10).",
"embeddingsHint": "Seulement {indexed} notes sur {total} sont indexées pour lIA. Lanalyse va dabord les préparer (cela peut prendre plusieurs minutes).",
"analyzeNow": "Mettre à jour les thèmes",
"emptyNeedMoreNotes": "Ajoutez encore {count} notes pour regrouper vos thèmes (minimum 10).",
"embeddingsHint": "Seulement {indexed} notes sur {total} sont prêtes pour relier les thèmes. La mise à jour va dabord les préparer (cela peut prendre plusieurs minutes).",
"vsGraphHint": "Ce nest pas la même chose que la « Carte des liens » (icône réseau dans la barre latérale) : ici, lIA regroupe vos notes par thèmes.",
"openGraphMap": "Ouvrir la carte des liens",
"analysisFailed": "Lanalyse a échoué. Vérifiez vos paramètres IA ou réessayez.",
@@ -3831,8 +3843,8 @@
"graphNotesLabel": "notes",
"clusterFallback": "Thème {index}",
"unclusteredNotes": "{count} notes non rattachées à un thème (hors graphe).",
"emptyTitle": "Découvrez vos clusters de connaissance",
"emptyDescription": "Cliquez sur « Mettre à jour » pour analyser vos notes et révéler des connexions cachées",
"emptyTitle": "Découvrez vos thèmes",
"emptyDescription": "Cliquez sur « Mettre à jour » pour regrouper vos notes par thèmes.",
"stats": {
"clusters": "Thèmes",
"bridgeNotes": "Notes pont",
@@ -3840,16 +3852,16 @@
"bridgesSubtitle": "notes transversales"
},
"clusters": {
"title": "Clusters sémantiques",
"title": "Thèmes",
"notesCount": "{count} notes",
"centralNotes": "Notes centrales",
"emptyCluster": "Aucune note dans ce cluster"
"emptyCluster": "Aucune note dans ce thème"
},
"bridgeNotes": {
"title": "Notes pont",
"score": "Score : {score} %",
"affinity": "Affinité {score} %",
"scoreHint": "Affinité sémantique moyenne avec les deux thèmes que cette note relie (similarité cosinus).",
"scoreHint": "À quel point cette note est proche des deux thèmes quelle relie.",
"moreThemes": "+{count}",
"needsResync": "Cliquez « Mettre à jour » pour rafraîchir les paires de thèmes.",
"empty": "Aucune note pont significative pour l'instant. Approfondissez vos recherches pour découvrir de nouvelles connexions."
@@ -3870,35 +3882,35 @@
"viewGraph": "Graphe",
"viewDashboard": "Tableau",
"isolatedClusters": {
"title": "Clusters isolés ({count})",
"title": "Thèmes isolés ({count})",
"badge": "Non connecté",
"empty": "Tous les thèmes sémantiques sont liés par au moins un point de passage sémantique !"
"empty": "Tous vos thèmes sont déjà reliés par au moins une note pont."
},
"focusCluster": {
"title": "Focus Cluster Activé",
"description": "Cet ensemble thématique réunit {count} notes complémentaires. Cliquez sur une note pour y accéder directement :",
"title": "Thème ouvert",
"description": "Ce thème réunit {count} notes. Cliquez sur une note pour louvrir.",
"close": "Fermer"
},
"badgeDominant": "Dominant",
"bridgeCount": "pont(s)",
"echoTitle": "Tu reviens sur cette idée",
"tipClusters": "L'IA a regroupé tes notes par affinité sémantique — indépendamment de tes carnets. Chaque thème représente un sujet sur lequel ton esprit revient régulièrement.",
"tipClustersAction": "Clique sur un thème pour voir ses notes. Clique sur une note pour l'ouvrir.",
"tipBridgeNotes": "Une note pont se situe au croisement de deux thèmes (brokerage sémantique). On garde la paire la plus forte — pas tous les thèmes faibles touchés au passage.",
"tipBridgeNotesAction": "Clique sur une note pour l'ouvrir et comprendre le lien.",
"tipEcho": "Le Memory Echo détecte deux notes écrites à des moments très différents mais qui parlent de la même chose. Ton esprit a revisité une idée sans que tu t'en rendes compte.",
"tipEchoAction": "Deux notes, même idée, moments différents. Clique pour explorer.",
"tipSuggestions": "Suggestions uniquement pour des paires de thèmes proches (link prediction) : assez liées pour mériter un pont, pas des métaphores forcées. Créez la note si l'objet ou la méthode partagée est réelle.",
"tipSuggestionsAction": "Clique sur « Créer la note pont » pour créer la note et l'ouvrir immédiatement.",
"tipIsolated": "Ces thèmes sont isolés : aucune note ne les relie aux autres. Peut-être explores-tu une idée encore fragile ? Une note de synthèse suffirait à créer le lien.",
"tipIsolatedAction": "Ces thèmes n'ont aucune note qui les relie au reste de ta réflexion.",
"echoTitle": "Vous revenez sur cette idée",
"tipClusters": "LIA a regroupé vos notes par thèmes, même si elles sont dans des carnets différents. Chaque thème est un sujet sur lequel vous revenez.",
"tipClustersAction": "Cliquez sur un thème pour voir ses notes. Cliquez sur une note pour louvrir.",
"tipBridgeNotes": "Une note pont relie deux thèmes. On ne garde que le lien le plus fort.",
"tipBridgeNotesAction": "Cliquez sur une note pour louvrir et comprendre le lien.",
"tipEcho": "Memory Echo détecte deux notes écrites à des moments très différents mais qui parlent de la même chose. Votre esprit a revisité une idée sans que vous vous en rendiez compte.",
"tipEchoAction": "Deux notes, même idée, moments différents. Cliquez pour explorer.",
"tipSuggestions": "LIA propose un pont seulement quand deux thèmes se touchent vraiment — pas des rapprochements forcés.",
"tipSuggestionsAction": "Cliquez sur « Créer la note pont » pour créer la note et louvrir immédiatement.",
"tipIsolated": "Ces thèmes sont isolés : aucune note ne les relie aux autres. Peut-être explorez-vous une idée encore fragile ? Une note de synthèse suffirait à créer le lien.",
"tipIsolatedAction": "Ces thèmes nont aucune note qui les relie au reste de votre réflexion.",
"recalcSystem": {
"title": "Système de recalcul",
"statusSynced": "Synchronisé",
"scheduledCron": "CRON planifié",
"lastSync": "Dernière synchro"
"title": "Mise à jour des thèmes",
"statusSynced": "À jour",
"scheduledCron": "Mise à jour automatique",
"lastSync": "Dernière mise à jour"
},
"resetFocus": "Réinitialiser focus",
"resetFocus": "Tout afficher",
"listView": "Liste",
"listFilterPlaceholder": "Filtrer thèmes ou notes…",
"listFilterEmpty": "Aucun thème ni note ne correspond à ce filtre.",
@@ -3907,8 +3919,8 @@
"listSortSize": "Par taille",
"listSortBridges": "Par ponts",
"listSortAlpha": "AZ",
"graphAriaLabel": "Réseau sémantique : {clusters} thèmes, {notes} notes, {bridges} notes-ponts. Basculez en vue Liste pour une navigation accessible.",
"listAriaLabel": "Liste accessible des clusters avec notes et connexions ponts"
"graphAriaLabel": "Carte des thèmes : {clusters} thèmes, {notes} notes, {bridges} notes-ponts. Passez en vue Liste pour naviguer plus facilement.",
"listAriaLabel": "Liste des thèmes, notes et notes pont"
},
"consent": {
"banner": {
@@ -3968,7 +3980,7 @@
"sectionDescription": "Supprimez définitivement et irréversiblement votre compte et toutes vos données.",
"whatWillBeDeleted": "Les éléments suivants seront définitivement supprimés :",
"item1": "Toutes vos notes, carnets et pièces jointes",
"item2": "Tous vos embeddings sémantiques pgvector",
"item2": "Lindex qui sert à relier vos notes",
"item3": "Toutes vos clés fournisseur",
"item4": "Toutes vos conversations IA et sessions de brainstorm",
"item5": "Votre historique de quotas et d'utilisation",
@@ -4082,18 +4094,18 @@
"chooseNotebook": "Choisir un carnet",
"changeNotebook": "Changer de carnet",
"change": "Changer",
"localDbTitle": "Base de Données Autonome",
"echoPopoverTitle": "Résonance Sémantique 🔮",
"noEchoFound": "Aucune résonance sémantique détectée.",
"echoUpgradeText": "Convertissez ce tableau en carnet pour activer l'analyse neuronale de Memento.",
"echoLoading": "Recherche de connexions sémantiques...",
"localDbTitle": "Tableau dans cette note",
"echoPopoverTitle": "Notes proches",
"noEchoFound": "Aucune note proche trouvée.",
"echoUpgradeText": "Convertissez ce tableau en carnet pour que Memento trouve les notes proches.",
"echoLoading": "Recherche de notes proches…",
"analyticsTitle": "Analyses & Insights",
"analyticsNoData": "Aucune donnée d'analyse disponible.",
"analyticsCompletion": "Taux de complétion",
"analyticsDistribution": "Répartition",
"analyticsTotalRows": "Total des lignes",
"analyticsShort": "Analyses",
"turnIntoLabel": "Base de données inline",
"turnIntoLabel": "Tableau dans la note",
"columnAdded": "Colonne ajoutée !",
"columnRemoved": "Colonne supprimée",
"propertyName": "Propriété {{index}}",
@@ -4104,7 +4116,7 @@
"convertNoteError": "Erreur de création de note.",
"convertSuccess": "Conversion réussie ! Base liée créée.",
"convertGenericError": "Une erreur est survenue.",
"echoNameRequired": "Veuillez d'abord saisir un nom pour cette ligne afin de rechercher des résonances sémantiques.",
"echoNameRequired": "Saisissez dabord un nom pour cette ligne, afin de chercher des notes proches.",
"echoSearchError": "Une erreur est survenue lors de la recherche.",
"echoNoMatch": "Aucune note correspondante contenant « {{query}} » n'a été trouvée dans votre espace de travail.",
"convertToNotebook": "Convertir en carnet",
@@ -4119,7 +4131,7 @@
"deleteColumn": "Supprimer la colonne",
"addColumn": "Ajouter une colonne",
"deleteRow": "Supprimer la ligne",
"semanticEcho": "Résonances sémantiques",
"semanticEcho": "Notes qui se rejoignent",
"close": "Fermer",
"insertCitation": "Insérer le lien dans l'éditeur",
"keywordMatch": "Mot-clé",
@@ -4131,8 +4143,8 @@
"selectOptionsPlaceholder": "Options séparées par des virgules",
"namePlaceholder": "Saisir un nom…",
"or": "ou",
"createLocalDb": "Créer une base locale autonome",
"switchToLocalDb": "Passer en base locale",
"createLocalDb": "Créer un tableau dans cette note",
"switchToLocalDb": "Revenir au tableau de cette note",
"untitled": "Sans titre",
"citationInserted": "Citation insérée dans l'éditeur !",
"notesLoadError": "Erreur de chargement des notes",
@@ -4168,7 +4180,7 @@
"step_features_title": "Vos super-pouvoirs IA",
"step_features_subtitle": "Choisissez par où commencer.",
"step_features_cta": "C'est parti !",
"feature_search_title": "Recherche sémantique",
"feature_search_title": "Recherche par le sens",
"feature_search_desc": "Retrouvez n'importe quelle note par sens, pas seulement par mot-clé.",
"feature_flashcards_title": "Cartes de révision",
"feature_flashcards_desc": "Créez des cartes de révision depuis vos notes, en un clic.",
@@ -4223,12 +4235,12 @@
"hint_brainstorm_deepen_desc": "Cliquez sur n'importe quelle carte d'idée pour l'approfondir avec des sous-idées et l'explorer davantage.",
"hint_brainstorm_export_title": "Exporter la session",
"hint_brainstorm_export_desc": "Une fois terminé, exportez toute la session de brainstorm sous forme de note structurée sauvegardée dans votre carnet.",
"hint_insights_clusters_title": "Clusters de notes",
"hint_insights_clusters_desc": "Vos notes sont automatiquement regroupées en clusters thématiques. Cliquez sur un cluster pour explorer les notes qu'il contient.",
"hint_insights_clusters_title": "Thèmes de notes",
"hint_insights_clusters_desc": "Vos notes sont regroupées par thèmes. Cliquez sur un thème pour voir les notes.",
"hint_insights_bridge_title": "Notes ponts",
"hint_insights_bridge_desc": "Les notes ponts relient plusieurs clusters. Elles sont mises en avant car elles constituent les connexions clés de votre graphe de connaissances.",
"hint_insights_refresh_title": "Rafraîchir les clusters",
"hint_insights_refresh_desc": "Si vous avez ajouté de nouvelles notes, cliquez sur le bouton de rafraîchissement pour recalculer les clusters avec le contenu le plus récent."
"hint_insights_bridge_desc": "Les notes pont relient plusieurs thèmes. Elles montrent où vos idées se croisent.",
"hint_insights_refresh_title": "Mettre à jour les thèmes",
"hint_insights_refresh_desc": "Si vous avez ajouté des notes, cliquez sur « Mettre à jour » pour recalculer les thèmes."
},
"integrations": {
"title": "Intégrations",
@@ -4289,7 +4301,7 @@
"readwiseHelpStep2": "Collez-le dans le champ ci-dessous et cliquez « Connecter ». La première synchronisation importe tous vos livres et articles.",
"readwiseHelpStep3": "Chaque livre devient une note dans un carnet « Readwise 📚 » — avec tous vos surlignages organisés.",
"readwiseHelpStep4": "Pour mettre à jour avec de nouveaux surlignages, revenez ici et cliquez « Synchroniser maintenant ».",
"readwiseHelpStep5": "💡 Astuce : créez des flashcards IA depuis une note Readwise (bouton 🎓 dans l'éditeur) pour réviser vos lectures."
"readwiseHelpStep5": "Astuce : créez des cartes de révision depuis une note Readwise (bouton des cartes en haut de la note) pour réviser vos lectures."
},
"homeDashboard": {
"title": "Tableau de bord",
@@ -4301,7 +4313,7 @@
"captureError": "Erreur",
"mindMap": "Carte mentale",
"fullMap": "Vue complète →",
"mindMapEmpty": "Pas encore de thèmes détectés. L'analyse sémantique regroupe vos notes par sujets.",
"mindMapEmpty": "Pas encore de thèmes. LIA regroupe vos notes par sujets.",
"mindMapOpen": "Ouvrir la cartographie →",
"mindMapUnavailable": "Cartographie indisponible.",
"themes": "Thèmes",
@@ -4344,7 +4356,7 @@
"new": "nouveaux",
"noConnections": "Aucune connexion trouvée. L'IA analyse vos notes.",
"match": "Connexion",
"semanticConnection": "Affinité sémantique",
"semanticConnection": "Proximité",
"suggestedBridge": "Relier {clusterA} et {clusterB}",
"createBridgeNote": "Créer la note-pont",
"bridgeNoteCreated": "Note-pont créée",
@@ -4417,7 +4429,7 @@
"sentiment": "Analyse émotionnelle",
"inbox": "Boîte de réception",
"revision": "Cartes de révision",
"stats": "Statistiques sémantiques",
"stats": "Thèmes et notes",
"agent-activity": "Activité agents",
"gmail": "Captures Gmail",
"activity": "Activité d'écriture",
@@ -4434,14 +4446,14 @@
"widgetDescriptions": {
"capture": "Noter une pensée tout de suite. Elle va dans la file.",
"resume": "Reprendre vos notes les plus récentes.",
"intelligence": "Liens sémantiques, idées-ponts et découvertes d'agents.",
"intelligence": "Notes qui se rejoignent, idées qui font le pont, et résultats des agents.",
"reminders": "Rappels de notes à venir en un coup d'œil.",
"mind-map": "Thèmes regroupés, taille proportionnelle au volume.",
"agents": "Agents de recherche suggérés par l'IA.",
"sentiment": "Tonalité émotionnelle de vos notes cette semaine.",
"inbox": "Notes en attente de classement dans un carnet.",
"revision": "Cartes à réviser (répétition espacée).",
"stats": "Clusters, notes-ponts et total de notes indexées.",
"stats": "Thèmes, notes qui font le pont, et notes indexées.",
"agent-activity": "Dernières exécutions d'agents terminées.",
"gmail": "Captures e-mail synchronisées depuis Gmail.",
"activity": "Heatmap de votre rythme d'écriture.",
@@ -4483,7 +4495,7 @@
"activityEmptyHint": "Éditez des notes pour voir votre rythme décriture sur 90 jours.",
"pathTypes": {
"continue": "Continuer",
"connect": "Lien sémantique",
"connect": "Lier une note",
"add-link": "Ajouter à la note",
"bridge": "Idée-pont",
"research": "Agent de recherche",
@@ -4501,14 +4513,14 @@
"capture": "Écrivez une pensée. Elle arrive dans la file, à classer plus tard.",
"next-paths": "Prochaines étapes suggérées à partir de votre dernière note : reprendre, lier, créer un pont ou lancer une recherche.",
"resume": "Vos notes les plus récemment modifiées. Reprenez là où vous vous êtes arrêté.",
"intelligence": "Découvertes IA : liens sémantiques, idées-ponts et résultats d'agents.",
"intelligence": "Ce que lIA a repéré : notes qui se rejoignent, idées qui font le pont, et résultats des agents.",
"reminders": "Rappels de notes à venir. Vide quand tout est à jour.",
"mind-map": "Thèmes regroupés, taille proportionnelle au volume de notes. Cliquez pour explorer dans Connexions.",
"agents": "Agents de recherche suggérés par l'IA pour vos sujets récurrents.",
"sentiment": "Tonalité émotionnelle des notes modifiées sur les 7 derniers jours. Nécessite au moins 3 notes récentes et l'IA activée.",
"inbox": "Notes sans carnet. Classez-les pour garder un second brain ordonné.",
"revision": "Cartes à réviser aujourd'hui. Elles reviennent au bon moment.",
"stats": "Statistiques de l'index sémantique : thèmes, notes-ponts, total indexé.",
"stats": "Nombre de thèmes, de notes qui font le pont, et de notes indexées.",
"agent-activity": "Agents ayant terminé une exécution dans les 48 dernières heures.",
"gmail": "Captures e-mail synchronisées depuis l'intégration Gmail.",
"activity": "Heatmap des notes modifiées sur les 90 derniers jours.",

View File

@@ -407,7 +407,7 @@
"placeholder": "खोज",
"searchPlaceholder": "नोट्स खोजें…",
"semanticInProgress": "AI खोज जारी…",
"semanticTooltip": "AI सिमेंटिक खोज",
"semanticTooltip": "अर्थ से खोज",
"searching": "खोज रहा है…",
"noResults": "कोई परिणाम नहीं मिला",
"resultsFound": "{count} नोट्स मिले",
@@ -861,7 +861,7 @@
"compareAll": "सभी की तुलना करें",
"mergeAll": "सभी को मर्ज करें",
"close": "बंद करें",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % निकटता",
"backToNote": "Revenir à ma note",
"badgeLabel": "मेमोरी इको",
"bottomCueConsent": "नीचे AI कनेक्शन उपलब्ध हैं",
@@ -918,7 +918,7 @@
"noContentReturned": "API से कोई फ्यूजन सामग्री नहीं मिली",
"unknownDate": "अज्ञात तिथि"
},
"defaultInsight": "ये नोट्स अर्थपूर्ण रूप से संबंधित प्रतीत होते हैं।",
"defaultInsight": "ये नोट्स एक साथ हैं।",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "लेबल साफ़ नहीं कर सके",
"indexingComplete": "इंडेक्सिंग पूर्ण: {count} नोट प्रोसेस किए",
"indexingError": "इंडेक्सिंग में त्रुटि",
"semanticIndexing": "सिमेंटिक इंडेक्सिंग",
"semanticIndexingDescription": "सभी नोट्स के लिए वेक्टर बनाएं ताकि इरादा-आधारित खोज सक्षम हो",
"semanticIndexing": "अर्थ से खोज का अनुक्रमणिका",
"semanticIndexingDescription": "सभी नोट को अर्थ से खोज के लिए तैयार करें",
"profile": "प्रोफ़ाइल",
"searchNoResults": "कोई मिलान सेटिंग्स नहीं मिली",
"languageAuto": "भाषा स्वचालित पर सेट है",
@@ -1664,7 +1664,7 @@
"title": "सुविधाएं",
"description": "AI-संचालित क्षमताएं",
"titleSuggestions": "AI-संचालित शीर्षक सुझाव",
"semanticSearch": "एम्बेडिंग्स के साथ सिमेंटिक खोज",
"semanticSearch": "अर्थ से खोज",
"paragraphReformulation": "अनुच्छेद पुनर्सुधार",
"memoryEcho": "Memory Echo दैनिक अंतर्दृष्टि",
"notebookOrganization": "नोटबुक संगठन",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "खोज इंडेक्स पुनर्निर्माण करें",
"description": "सिमेंटिक खोज में सुधार के लिए सभी नोट्स के लिए एम्बेडिंग्स पुनः उत्पन्न करें।",
"description": "अर्थ से खोज बेहतर करने के लिए सभी नोट की अनुक्रमणिका फिर बनाएँ।",
"button": "इंडेक्स पुनर्निर्माण करें",
"success": "इंडेक्सिंग पूर्ण: {count} नोट्स संसाधित",
"failed": "इंडेक्सिंग के दौरान त्रुटि"
@@ -1984,7 +1984,7 @@
"legendWiki": "नोट से लिंक",
"mentionShort": "उल्लेख",
"moreNodes": "मानचित्र पर +{count}",
"noInbound": "इस नोट की ओर इशारा करती कोई इनबाउंड विकि लिंक नहीं है।",
"noInbound": "कोई अन्य नोट इस ओर इशारा नहीं करता।",
"noOutbound": "यह नोट अभी तक अन्य नोट्स से नहीं जुड़ा है।",
"noWikiYet": "अभी तक अन्य नोट्स के लिंक नहीं हैं।",
"outboundHelp": "जिन नोट्स को यह टेक्स्ट में [[…]] का उपयोग करके लिंक करती है।",
@@ -2190,7 +2190,7 @@
"custom": "कस्टम"
},
"typeDescriptions": {
"scraper": "कई साइटों से डेटा एकत्र करता है और सारांश बनाता है",
"scraper": "कई साइटें पढ़कर सार लिखता है",
"researcher": "किसी विषय पर जानकारी खोजता है",
"monitor": "नोटबुक की निगरानी करता है और नोट्स का विश्लेषण करता है",
"slideGenerator": "नोट्स से एक पावरपॉइंट प्रेजेंटेशन बनाता है",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "उदा: मंगलवार AI वॉच",
"description": "विवरण (वैकल्पिक)",
"descriptionPlaceholder": "साप्ताहिक AI समाचार सारांश",
"urlsLabel": "स्क्रैप करने के लिए URL",
"urlsLabel": "पढ़ने वाले पेज के पते",
"urlsOptional": "(वैकल्पिक)",
"sourceNotebook": "निगरानी करने के लिए नोटबुक",
"selectNotebook": "नोटबुक चुनें...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "ईमेल सूचना",
"notifyEmailHint": "प्रत्येक रन के बाद एजेंट के परिणामों के साथ ईमेल प्राप्त करें",
"includeImages": "चित्र शामिल करें",
"includeImagesHint": "स्क्रैप किए गए पेजों से चित्र निकालें और उत्पन्न नोट में संलग्न करें",
"includeImagesHint": "पढ़े गए पेजों की तस्वीरें नोट में जोड़ें",
"back": "वापस",
"configuration": "कॉन्फ़िगरेशन",
"options": "विकल्प",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "AI वॉच",
"description": "5 AI विशेष साइटों से डेटा एकत्र करता है और साप्ताहिक सारांश बनाता है।"
"description": "5 AI साइटें पढ़कर साप्ताहिक सार लिखता है।"
},
"veilleTech": {
"name": "टेक वॉच",
"description": "प्रमुख तकनीकी साइटसे डेटा एकत्र करता है और समाचार सारांश बनाता है।"
"description": "मुख्य तकनीकी साइटपढ़कर समाचार सार लिखता है।"
},
"veilleDev": {
"name": "डेव वॉच",
"description": "विकास साइटसे डेटा एकत्र करता है और नई तकनीकों का सारांश देता है।"
"description": "डेव साइटपढ़कर नई तकनीकों का सार लिखता है।"
},
"surveillant": {
"name": "नोट पर्यवेक्षक",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "एजेंट टूल",
"webSearch": "वेब खोज",
"webScrape": "वेब स्क्रैप",
"webScrape": "पेज पढ़ना",
"noteSearch": "नोट खोज",
"noteRead": "नोट पढ़ें",
"noteCreate": "नोट बनाएं",
@@ -2431,15 +2431,15 @@
"btnLabel": "सहायता",
"close": "बंद करें",
"whatIsAgent": "एजेंट क्या है?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "एजेंट का उपयोग कैसे करें?",
"howToUseContent": "1. **\"नया एजेंट\"** पर क्लिक करें (या पेज के नीचे **टेम्पलेट** से शुरू करें)।",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "उन्नत मोड (AI निर्देश, अधिकतम पुनरावृत्ति)",
"advancedContent": "अतिरिक्त सेटिंग्स तक पहुँचने के लिए फ़ॉर्म के नीचे **\"उन्नत मोड\"** पर क्लिक करें।",
"tools": "उपलब्ध उपकरण (विस्तार)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "आवृत्ति और शेड्यूलिंग",
"frequencyContent": "| आवृत्ति | व्यवहार\n|-----------|----------\n| **मैनुअल** | आप स्वयं \"चलाएँ\" पर क्लिक करते हैं।",
"targetNotebook": "लक्ष्य नोटबुक",
@@ -2447,7 +2447,7 @@
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "सुझाव और समस्या हल",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "एजेंट किस प्रकार का कार्य करेगा उसे चुनें। प्रत्येक प्रकार की अलग क्षमताएं और फ़ील्ड हैं।",
"researchTopic": "वह विषय जिस पर एजेंट वेब पर शोध करेगा। बेहतर परिणामों के लिए विशिष्ट रहें।",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Pro में अपग्रेड करें",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro में शामिल:",
"proSearch": "100 semantic searches / month",
"proSearch": "प्रति माह 1,000 AI क्रेडिट",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "आरेख निर्माण",
"featureFlashcards": "AI फ्लैशकार्ड",
"featureFlashcards": "समीक्षा कार्ड",
"featurePublishEnhance": "AI प्रकाशन",
"featureSlides": "स्लाइड निर्माण",
"featureVoice": "वॉइस ट्रांसक्रिप्शन",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 पुनर्लेखन / माह",
"businessFeature4": "1,000 चैट संदेश / माह",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "कस्टम कोटा, SSO, प्राथमिकता समर्थन।",
"enterpriseDescription": "कस्टम कोटा, पूरी टीम के लिए एक बार लॉगिन, प्राथमिकता समर्थन।",
"contactSales": "बिक्री से संपर्क करें",
"startCheckout": "शुरू करें",
"checkoutLoading": "भुगतान लोड हो रहा है…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "आपकी सदस्यता स्वचालित रूप से नवीनीकरण होती है।",
"businessDescription": "टीमों और उत्पाद नेताओं के लिए।",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "पूरी टीम के लिए एक बार लॉगिन",
"enterpriseFeature3": "समर्पित सहायता",
"enterpriseFeature4": "कस्टम बिलिंग",
"enterpriseFeature5": "गारंटीड SLA",
"enterpriseFeature5": "गारंटीड जवाब समय",
"subtitle": "अपने लिए उपयुक्त योजना चुनें",
"freeDescription": "मेमेंटो की खोज के लिए",
"freeF1": "30 शब्दार्थ खोज",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "बिलिंग स्थिति प्राप्त करने में विफल",
"fetchQuotasFailed": "कोटा प्राप्त करने में विफल",
"fetchInvoicesFailed": "बिलिंग इतिहास लोड करने में विफल।",
"savePercent": "~17% बचाएँ",
"savePercent": "~{percent}% बचाएँ",
"billedYearTotal": "अर्थात {price} प्रति वर्ष",
"cancelSubscription": "सदस्यता रद्द करें",
"changeOffer": "योजना बदलें",
"downgradeToFree": "मुफ़्त योजना पर वापस जाएँ",
@@ -3379,13 +3380,13 @@
"cta": "हमसे बात करें",
"feature0": "Business की सब सुविधाएँ",
"feature1": "असीमित एजेंट",
"feature2": "SSO / SAML",
"feature3": "ऑडिट लॉग और SLA",
"feature2": "पूरी टीम के लिए एक बार लॉगिन",
"feature3": "गतिविधि रिकॉर्ड और गारंटीड जवाब समय",
"feature4": "समर्पित सपोर्ट",
"feature5": "लाइव ऑनबोर्डिंग"
"feature5": "शुरुआत में साथ"
},
"basicPrice": "मुफ़्त",
"savePercent": "~17% बचाएँ",
"savePercent": "~{percent}% बचाएँ",
"proMonthly": "€9.90",
"proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90",
@@ -3494,7 +3495,7 @@
"sectionDescription": "अपना खाता और सभी संबंधित डेटा स्थायी और अनुत्करणीय रूप से हटाएं।",
"whatWillBeDeleted": "निम्नलिखित स्थायी रूप से हटाए जाएंगे:",
"item1": "सभी नोट्स, नोटबुक और अनुलग्नक",
"item2": "सभी pgvector अर्थपूर्ण एम्बेडिंग",
"item2": "वह अनुक्रमणिका जो आपके नोट जोड़ती है",
"item3": "सभी BYOK API कुंजी",
"item4": "सभी AI वार्ताएं और ब्रेनस्टॉर्म सत्र",
"item5": "कोटा और उपयोग इतिहास",
@@ -3559,7 +3560,7 @@
"step_features_title": "आपकी AI महाशक्तियाँ",
"step_features_subtitle": "चुनें कहाँ से शुरू करना है।",
"step_features_cta": "चलिए शुरू करते हैं!",
"feature_search_title": "सिमेंटिक खोज",
"feature_search_title": "अर्थ से खोज",
"feature_search_desc": "केवल कीवर्ड से नहीं, अर्थ से कोई भी नोट खोजें।",
"feature_flashcards_title": "AI फ्लैशकार्ड",
"feature_flashcards_desc": "एक क्लिक में अपने नोट्स से समीक्षा कार्ड बनाएं।",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "किसी आइडिया कार्ड पर क्लिक करके उसे उप-आइडिया के साथ विस्तारित करें।",
"hint_brainstorm_export_title": "सत्र निर्यात करें",
"hint_brainstorm_export_desc": "पूरे ब्रेनस्टॉर्मिंग सत्र को चयनित नोटबुक में संरचित नोट के रूप में निर्यात करें।",
"hint_insights_clusters_title": "नोट क्लस्टर",
"hint_insights_clusters_desc": "आपके नोट्स स्वचालित रूप से थीमैटिक क्लस्टर में समूहबद्ध होते हैं। विवरण के लिए क्लिक करें।",
"hint_insights_clusters_title": "नोट के विषय",
"hint_insights_clusters_desc": "नोट विषय के अनुसार जुड़े हैं। विषय पर क्लिक करके नोट देखें।",
"hint_insights_bridge_title": "ब्रिज नोट्स",
"hint_insights_bridge_desc": "ब्रिज नोट कई क्लस्टर को जोड़ते हैं और महत्वपूर्ण संबंध होने के कारण उजागर किए गए हैं।",
"hint_insights_refresh_title": "क्लस्टर रिफ्रे",
"hint_insights_refresh_desc": "अगर आपने नए नोट्स जोड़े हैं, तो क्लस्टर पुनर्गणना के लिए \"रिफ्रेश\" पर क्लिक करें।"
"hint_insights_bridge_desc": "पुल नोट कई विषयों को जोड़ते हैं। वे दिखाते हैं कि विचार कहाँ मिलते हैं।",
"hint_insights_refresh_title": "विषय अपडेट करे",
"hint_insights_refresh_desc": "अगर आपने नोट जोड़े हैं, «अपडेट» पर क्लिक करके विषय फिर से जोड़ें।"
},
"blockAction": {
"moveUp": "ब्लॉक ऊपर ले जाएं",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "कड़ियाँ",
"toggleMenu": "मेनू दिखाएँ या छिपाएँ",
"subtitle": "अपने ज्ञान की छिपी संरचना खोजें",
"subtitle": "देखें आपकी नोट्स कैसे जुड़ती हैं",
"resync": "अपडेट करें",
"mapping": "मैपिंग…",
"loading": "नोट लोड हो रहे हैं…",
"mappingTitle": "आपका ज्ञान मैप किया जा रहा है…",
"mappingHint": "इसमें एक से तीन मिनट लग सकते हैं। आप ब्राउज़िंग जारी रख सकते हैं; पेज स्वचालित अपडेट होगा।",
"analyzeNow": "सिमेंटिक विश्लेषण शुरू करें",
"emptyNeedMoreNotes": "सिमेंटिक क्लस्टरिंग को अनलॉक करने के लिए {count} और नोट्स जोड़ें (न्यूनतम 10).",
"embeddingsHint": "केवल {indexed}/{total} नोट्स AI के लिए अनुक्रमित हैं।",
"analyzeNow": "विषय अपडेट करें",
"emptyNeedMoreNotes": "विषय समूह करने के लिए {count} और नोट्स जोड़ें (न्यूनतम 10).",
"embeddingsHint": "केवल {indexed} / {total} नोट विषय के अनुसार जुड़ने के लिए तैयार हैं।",
"vsGraphHint": "यह \"लिंक मैप\" से अलग है: यहाँ AI लिंक के बजाय अर्थ के अनुसार समूहबद्ध करता है।",
"openGraphMap": "लिंक मानचित्र खोलें",
"analysisFailed": "विश्लेषण विफल। AI सेटिंग्स जांचें।",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "नोट्स",
"clusterFallback": "विषय {index}",
"unclusteredNotes": "{count} नोट्स किसी थीम को नहीं दिए गए (ग्राफ से छिपे हुए)।",
"emptyTitle": "अपने ज्ञान क्लस्टर खोजें",
"emptyDescription": "\"नेटवर्क पुनः सिंक करें\" पर क्लिक करके अपने नोट्स क विश्लेषण करें और छिपे हुए संबंध खोजें",
"emptyTitle": "अपने विषय देखें",
"emptyDescription": "«अपडेट» पर क्लिक करके नोट्स क विषय के अनुसार जोड़ें",
"stats": {
"clusters": "क्लस्टर",
"bridgeNotes": "ब्रिज नोट्स",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "सिमेंटिक क्लस्टर",
"title": "विषय",
"notesCount": "{count} नोट्स",
"centralNotes": "केंद्रीय नोट्स",
"emptyCluster": "इस क्लस्टर में कोई नोट नहीं"
"emptyCluster": "इस विषय में कोई नोट नहीं"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "आत्मीयता {score}%",
"moreThemes": "+{count}",
"needsResync": "ब्रिज जोड़े ताज़ा करने के लिए नेटवर्क को पुनः सिंक करें।",
"scoreHint": "इस नोट द्वारा जोड़े गए दो विषयों के लिए औसत सिमेंटिक आत्मीयता (कोसाइन समानता)।"
"scoreHint": "यह नोट जिन दो विषयों को जोड़ता है, उनसे कितना पास है।"
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "ग्राफ",
"viewDashboard": "डैशबोर्ड",
"isolatedClusters": {
"title": "पृथक क्लस्टर ({count})",
"title": "अलग विषय ({count})",
"badge": "कनेक्टेड नहीं",
"empty": "सभी क्लस्टर जुड़े हुए हैं!"
"empty": "सभी विषय पहले से कम से कम एक पुल नोट से जुड़े हैं"
},
"focusCluster": {
"title": "क्लस्टर फोकस सक्रिय",
"description": "यह थीमैटिक क्लस्टर {count} पूरक नोट्स इकट्ठा करता है। नोट खोलने के लिए क्लिक करें।",
"title": "विषय खुला है",
"description": "इस विषय में {count} नोट हैं। खोलने के लिए नोट पर क्लिक करें।",
"close": "बंद करें"
},
"badgeDominant": "प्रमुख",
"bridgeCount": "ब्रिज",
"echoTitle": "आप इस विचार पर बार-बार लौटते हैं",
"tipClusters": "AI ने आपके नोट्स को सिमेंटिक आत्मीयता के अनुसार समूहबद्ध किया — नोटबुक से स्वतंत्र।",
"tipClusters": "AI ने नोट्स को विषय के अनुसार जोड़ा, भले ही वे अलग नोटबुक में हों।",
"tipClustersAction": "थीम देखने के लिए क्लिक करें। नोट खोलने के लिए क्लिक करें।",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "नोट खोलने और कनेक्शन समझने के लिए क्लिक करें।",
"tipEcho": "मेमोरी इको बहुत अलग समय पर लिखे गए दो नोट्स का पता लगाता है जो एक ही विषय को कवर करते हैं।",
"tipEchoAction": "दो नोट्स, एक ही विचार, अलग क्षण। एक्सप्लोर करने के लिए क्लिक करें।",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "नोट लिखने और तुरंत खोलने के लिए \"ब्रिज नोट बनाएं\" पर क्लिक करें।",
"tipIsolated": "ये थीम अलग-थलग हैं: कोई नोट इन्हें बाकी से नहीं जोड़ता। शायद दृष्टिकोण की कमी है।",
"tipIsolatedAction": "इन थीम्स में आपके बाकी विचारों से जोड़ने वाला कोई नोट नहीं है।",
"recalcSystem": {
"title": "पुनर्गणना प्रणाली",
"statusSynced": "सिंक्रनाइज़्ड",
"scheduledCron": "अनुसूचित",
"lastSync": "अंतिम सिंक"
"title": "विषय अपडेट",
"statusSynced": "अप टू डेट",
"scheduledCron": "स्वचालित अपडेट",
"lastSync": "आखिरी अपडेट"
},
"resetFocus": "फोकस रीसेट करें",
"resetFocus": "सब दिखाएँ",
"listView": "सूची",
"graphAriaLabel": "सिमेंटिक नेटवर्क: {clusters} क्लस्टर, {notes} नोट्स, {bridges} ब्रिज नोट्स। तीर कुंजी से नेविगेट करें।",
"listAriaLabel": "नोट्स और ब्रिज कनेक्शन के साथ सुलभ क्लस्टर सूची",
"graphAriaLabel": "विषय मानचित्र: {clusters} विषय, {notes} नोट, {bridges} पुल नोट। सूची में जाकर आसानी से घूमें।",
"listAriaLabel": "विषय, नोट और पुल नोट की सूची",
"dashboardFilterPlaceholder": "ब्रिज नोट्स, विषय फ़िल्टर करें…",
"legendFilterPlaceholder": "विषय फ़िल्टर करें…",
"legendShowLess": "कम दिखाएं",
@@ -3896,7 +3897,7 @@
"genericError": "आपके इंस्टेंस पर भेजते समय कुछ गलत हुआ।",
"ignore": "प्रवीण",
"processing": "प्रसंस्कित कर रहा है…",
"processingDetail": "टैग, सिमेंटिक सारांश और एम्बेडिंग उत्पन्न कर रहा है।",
"processingDetail": "नोट तैयार हो रहा है: लेबल, सार, अर्थ से खोज।",
"publishedOn": "{domain} पर प्रकाशित",
"quitSimulator": "सिम्युलेटर बंद करें",
"realtimeCapture": "तारीख: लाइव कैप्चर",
@@ -4156,7 +4157,7 @@
"match": "साइन इन करें",
"memoryEchoDisabled": "मेमोरी इको आपकी AI सेटिंग्स में अक्षम है।",
"mindMap": "माइंड मैप",
"mindMapEmpty": "अभी तक कोई विषय पहचाना नहीं गया। सिमेंटिक विश्लेषण आपके नोट्स को विषय अनुसार समूहबद्ध करता है।",
"mindMapEmpty": "अभी विषय नहीं हैं। AI नोट्स को विषय अनुसार जोड़ता है।",
"mindMapOpen": "इनसाइट मानचित्र खोलें →",
"mindMapUnavailable": "माइंड मैप अनुपलब्ध।",
"new": "नोट्स बनाए गए",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "नोट में जोड़ें",
"bridge": "ब्रिज विचार",
"connect": "सिमेंटिक लिंक",
"connect": "नोट जोड़ें",
"continue": "जारी रखें",
"daily": "जर्नल",
"explore": "विषय खोज",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "आपका द्वितीय मस्तिष्क एक नज़र में: AI सुझाव, त्वरित कैप्चर और अगले कदम। कार्रवाई के लिए नीचे दिए गए शॉर्टकट का उपयोग करें।",
"resumeOpen": "पुनर्ब्यहार",
"review": "समीक्षा",
"semanticConnection": "सिमेंटिक आत्मीयता",
"semanticConnection": "निकटता",
"sentiment": "भावना",
"sentimentDominant": "इस सप्ताह प्रमुख स्वर",
"suggestedBridge": "{clusterA} और {clusterB} जोड़ें",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "प्रतिधारण, श्रृंखला, और कुल कार्ड।",
"gmail": "Gmail से सिंक किए गए ईमेल कैप्चर।",
"inbox": "नोटबुक में दाखिल होने की प्रतीक्षा कर रही नोट्स।",
"intelligence": "सिमेंटिक लिंक, ब्रिज विचार और एजेंट खोजें।",
"intelligence": "जुड़ने वाले नोट्स, सेतु वाले विचार और एजेंट के परिणाम।",
"link-suggestions": "आपके वर्तमान नोट में लिंक करने के लिए अंश।",
"mind-map": "थीम क्लस्टर नोट मात्रा के अनुसार बड़े हैं।",
"next-paths": "AI द्वारा आपके नवीनतम कार्य से सुझाए गए अगले कदम।",
@@ -4258,7 +4259,7 @@
"resume": "अपने सबसे हाल के नोट्स को जहां छोड़ा था वहीं से जारी रखें।",
"revision": "अंतराल पुनरावृत्ति के लिए देय फ्लैशकार्ड।",
"sentiment": "इस सप्ताह आपके नोट्स का भावनात्मक स्वर।",
"stats": "क्लस्टर, ब्रिज नोट और कुल अनुक्रमित नोट्स।",
"stats": "विषय, सेतु वाले नोट्स और अनुक्रमित नोट्स।",
"usage": "शेष AI क्रेडिट और मासिक सीमाएँ।"
},
"widgetDone": "पूर्ण",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "अधिगम प्रतिधारण दर, समीक्षा श्रृंखला, और कुल कार्ड।",
"gmail": "Gmail एकीकरण से सिंक किए गए ईमेल कैप्चर।",
"inbox": "नोटबुक के बिना नोट्स। अपने द्वितीय मस्तिष्क को व्यवस्थित रखने के लिए उन्हें वर्गीकृत करें।",
"intelligence": "AI खोज: नोट्स के बीच अर्थपूर्ण लिंक, ब्रिज विचार और एजेंट निष्कर्ष।",
"intelligence": "AI को क्या मिला: जुड़ने वाले नोट्स, सेतु वाले विचार और एजेंट के परिणाम।",
"link-suggestions": "अन्य नोट्स के ऐसे अंश जिन्हें आपके वर्तमान काम से जोड़ना लायक है।",
"mind-map": "थीम क्लस्टर नोट मात्रा के अनुसार बड़े हैं। इनसाइट्स में खोजने के लिए क्लिक करें।",
"next-paths": "आपके अंतिम संपादित नोट पर आधारित सुझाए गए अगले कदम: फिर से शुरू करें, लिंक करें, जोड़ें या शोध करें।",
@@ -4284,7 +4285,7 @@
"resume": "आपकी हाल ही में अपडेट की गई नोट्स। जहां छोड़ा था वहां से जारी रखें।",
"revision": "आज अंतराल पुनरावृत्ति के लिए देय फ्लैशकार्ड।",
"sentiment": "पिछले 7 दिनों में संपादित नोट्स का भावनात्मक स्वर। कम से कम 3 हाल की नोट्स और AI सक्षम होना आवश्यक है।",
"stats": "सिमेंटिक इंडेक्स आँकड़े: सक्रिय विषय, ब्रिज नोट्स, कुल अनुक्रमित नोट्स।",
"stats": "कितने विषय, सेतु वाले नोट्स और अनुक्रमित नोट्स हैं।",
"usage": "सुविधा के अनुसार मासिक AI क्रेडिट उपयोग।"
},
"widgetHelpClose": "बंद करें",
@@ -4319,7 +4320,7 @@
"resume": "यहाँ पुनर्ब्यहार",
"revision": "फ्लैशकार्ड",
"sentiment": "भावना",
"stats": "सिमेंटिक आँकड़े",
"stats": "विषय और नोट्स",
"usage": "AI कोटा"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "इसे नीचे के फ़ील्ड में पेस्ट करें और \"कनेक्ट\" पर क्लिक करें। पहला सिंक आपकी सभी पुस्तकें और लेख आयात करेगा।",
"readwiseHelpStep3": "प्रत्येक पुस्तक «Readwise 📚» नोटबुक में एक नोट बन जाती है — आपके सभी हाइलाइट्स व्यवस्थित हैं।",
"readwiseHelpStep4": "नई हाइलाइट अपडेट करने के लिए, यहां वापस आएं और \"अभी सिंक करें\" पर क्लिक करें।",
"readwiseHelpStep5": "💡 सुझाव: Readwise नोट से AI फ्लैशकार्ड बनाएं (एडिटर में 🎓 बटन) अपनी रीडिंग की समीक्षा करें।",
"readwiseHelpStep5": "सुझाव: Readwise नोट से समीक्षा कार्ड बनाएं (नोट के ऊपर कार्ड बटन) अपनी रीडिंग की समीक्षा करें।",
"readwiseInfo": "Readwise कैसे काम करता है?",
"readwiseSynced": "Readwise सिंक — {{created}} बनाई गईं, {{updated}} अद्यतन",
"readwiseTokenPlaceholder": "Readwise टोकन…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "रूपांतरण पूर्ण! लिंक किया गया नोटबुक बनाया गया।",
"convertToNotebook": "नोटबुक में बदलें",
"converting": "रूपांतरित कर रहा है…",
"createLocalDb": "स्टैंडअलोन लोकल डेटाबेस बनाए",
"createLocalDb": "इस नोट में तालिका बनाए",
"createNotebook": "नोटबुक बनाएं",
"defaultOption1": "विकल्प 1",
"defaultOption2": "विकल्प 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "पुराना ब्लॉक हटाया गया।",
"displayModeGallery": "गैलरी",
"displayModeTable": "मेज़",
"echoLoading": "सिमेंटिक कनेक्शन खोज रह है...",
"echoNameRequired": "सिमेंटिक कनेक्शन खोजने के लिए पहले इस पंक्ति का नाम दर्ज करें।",
"echoLoading": "पास के नोट्स खोज रह हैं…",
"echoNameRequired": "पास के नोट्स खोजने के लिए पहले इस पंक्ति का नाम लिखें।",
"echoNoMatch": "आपके कार्यक्षेत्र में \"{{query}}\" वाली कोई नोट्स नहीं मिलीं।",
"echoPopoverTitle": "सिमेंटिक अनुनाद 🔮",
"echoPopoverTitle": "पास के नोट",
"echoSearchError": "खोजते समय त्रुटि हुई।",
"echoUpgradeText": "Memento के तंत्रिका विश्लेषण को सक्रिय करने के लिए इस तालिका क नोटबुक में बदलें।",
"echoUpgradeText": "इस तालिका को नोटबुक बनाएँ ताकि Memento पास नोट खोज सके।",
"emptyTable": "तालिका में कोई पंक्ति नहीं।",
"insertCitation": "संपादक में लिंक सम्मिलित करें",
"insertDesc": "अपने नोटबुक के संरचित डेटा को एम्बेड करें",
@@ -4514,9 +4515,9 @@
"keywordMatch": "कीवर्ड",
"linkToNotebook": "नोटबुक से लिंक",
"loadError": "संरचित डेटा लोड करने में त्रुटि।",
"localDbTitle": "स्टैंडअलोन डेटाबेस",
"localDbTitle": "इस नोट की तालिका",
"namePlaceholder": "नाम दर्ज करें…",
"noEchoFound": "कोई सिमेंटिक कनेक्शन नहीं पाया गया।",
"noEchoFound": "कोई पास का नोट नहीं मिला।",
"noNotebook": "इस ब्लॉक को नोटबुक चाहिए। पहले इस नोट को नोटबुक में ले जाएं।",
"noNotebookDesc": "यह ब्लॉक नोटबुक का संरचित दृश्य दिखाता है। लिंक करने के लिए नोटबुक चुनें:",
"noSchema": "इस नोटबुक में अभी तक संरचित दृश्य नहीं है। इसे नोटबुक हेडर से सेट करें।",
@@ -4528,8 +4529,8 @@
"selectNotebook": "नोटबुक से लिंक",
"selectOptionsPlaceholder": "कॉमा से अलग किए गए विकल्प",
"semanticEcho": "सिमेंटिक अनुनाद",
"switchToLocalDb": "स्थानीय डेटाबेस पर स्विच करें",
"turnIntoLabel": "इनलाइन डेटाबेस",
"switchToLocalDb": "इस नोट की तालिका पर वापस जाएँ",
"turnIntoLabel": "नोट में तालिका",
"untitled": "बिना शीर्षक"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "एक नोट खोजें…",
"selectOptions": "विकल्प (प्रति पंक्ति एक)",
"selectOptionsPlaceholder": "करने के लिए\\\nप्रगति में\\\nपूर्ण",
"semanticResonances": "सिमेंटिक अनुनाद",
"semanticResonances": "जुड़ने वाले नोट्स",
"tagApplied": "सेतु",
"viewCalendarHint": "कैलेंडर — तारीख अनुसार व्यवस्थित नोट्स",
"viewGallery": "गैलरी",

View File

@@ -407,7 +407,7 @@
"placeholder": "Cerca",
"searchPlaceholder": "Cerca nelle tue note...",
"semanticInProgress": "Ricerca AI in corso...",
"semanticTooltip": "Ricerca semantica AI",
"semanticTooltip": "Ricerca per il senso",
"searching": "Ricerca in corso...",
"noResults": "Nessun risultato trovato",
"resultsFound": "{count} note trovate",
@@ -861,7 +861,7 @@
"compareAll": "Confronta tutto",
"mergeAll": "Unisci tutto",
"close": "Chiudi",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % di vicinanza",
"backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo",
"bottomCueConsent": "Connessioni IA disponibili sotto",
@@ -918,7 +918,7 @@
"noContentReturned": "Nessun contenuto di fusione restituito dall'API",
"unknownDate": "Data sconosciuta"
},
"defaultInsight": "Queste note sembrano essere correlate semanticamente.",
"defaultInsight": "Queste note stanno insieme.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "Impossibile pulire le etichette",
"indexingComplete": "Indicizzazione completata: {count} nota/e elaborata/e",
"indexingError": "Errore durante l'indicizzazione",
"semanticIndexing": "Indicizzazione semantica",
"semanticIndexingDescription": "Genera vettori per tutte le note per abilitare la ricerca basata su intento",
"semanticIndexing": "Indice per la ricerca per il senso",
"semanticIndexingDescription": "Preparare tutte le note per la ricerca per il senso",
"profile": "Profilo",
"searchNoResults": "Nessun risultato trovato",
"languageAuto": "Lingua impostata su Automatico",
@@ -1664,7 +1664,7 @@
"title": "Funzioni",
"description": "Funzioni basate sull'IA",
"titleSuggestions": "Suggerimenti di titoli basati sull'IA",
"semanticSearch": "Ricerca semantica con embedding",
"semanticSearch": "Ricerca per il senso",
"paragraphReformulation": "Riformulazione dei paragrafi",
"memoryEcho": "Approfondimenti giornalieri di Memory Echo",
"notebookOrganization": "Organizzazione dei quaderni",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "Ricostruisci indice di ricerca",
"description": "Rigenera gli embedding per tutte le note per migliorare la ricerca semantica.",
"description": "Ricalcola lindice di tutte le note per migliorare la ricerca per il senso.",
"button": "Ricostruisci indice",
"success": "Indicizzazione completata: {count} note elaborate",
"failed": "Errore durante l'indicizzazione"
@@ -1984,7 +1984,7 @@
"legendWiki": "Collega a una nota",
"mentionShort": "Menzione",
"moreNodes": "+{count} sulla mappa",
"noInbound": "Nessun link wiki in entrata punta a questa nota.",
"noInbound": "Nessunaltra nota punta a questa.",
"noOutbound": "Questa nota non collega ancora altre note.",
"noWikiYet": "Nessun link ad altre note ancora.",
"outboundHelp": "Note a cui questa linka usando [[…]] nel suo testo.",
@@ -2190,7 +2190,7 @@
"custom": "Personalizzato"
},
"typeDescriptions": {
"scraper": "Estrae contenuti da più siti e crea un riepilogo",
"scraper": "Legge più siti e ne fa un riepilogo",
"researcher": "Cerca informazioni su un argomento",
"monitor": "Osserva un quaderno e analizza le note",
"slideGenerator": "Crea una presentazione PowerPoint dalle note",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "es. Martedì Watch IA",
"description": "Descrizione (opzionale)",
"descriptionPlaceholder": "Riepilogo settimanale delle notizie sull'IA",
"urlsLabel": "URL da estrarre",
"urlsLabel": "Indirizzi delle pagine da leggere",
"urlsOptional": "(opzionale)",
"sourceNotebook": "Quaderno da osservare",
"selectNotebook": "Seleziona un quaderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notifica email",
"notifyEmailHint": "Ricevi un'email con i risultati dell'agent dopo ogni esecuzione",
"includeImages": "Includi immagini",
"includeImagesHint": "Estrai immagini dalle pagine analizzate e allegale alla nota generata",
"includeImagesHint": "Prendi le immagini dalle pagine lette e allegale alla nota",
"back": "Indietro",
"configuration": "Configurazione",
"options": "Opzioni",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "Watch IA",
"description": "Estrae contenuti da 5 siti specializzati in IA e genera un riepilogo settimanale."
"description": "Legge 5 siti di IA e scrive un riepilogo settimanale."
},
"veilleTech": {
"name": "Watch Tech",
"description": "Estrae contenuti dai principali siti tecnologici e crea un riepilogo delle notizie."
"description": "Legge i principali siti tecnologici e scrive un riepilogo delle notizie."
},
"veilleDev": {
"name": "Watch Dev",
"description": "Estrae contenuti da siti di sviluppo e riassume nuove tecnologie e framework."
"description": "Legge siti di sviluppo e riassume le novità."
},
"surveillant": {
"name": "Osservatore di note",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "Strumenti Agente",
"webSearch": "Ricerca Web",
"webScrape": "Scraping Web",
"webScrape": "Lettura di pagine",
"noteSearch": "Cerca Note",
"noteRead": "Leggi Nota",
"noteCreate": "Crea Nota",
@@ -2431,15 +2431,15 @@
"btnLabel": "Aiuto",
"close": "Chiudi",
"whatIsAgent": "Cos'è un agente?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "Come usare un agente?",
"howToUseContent": "1. Fai clic su **\"Nuovo agente\"** (oppure inizia da un **Modello** in fondo alla pagina).",
"types": "Tipi di agenti",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "Modalità avanzata (Istruzioni IA, Iterazioni max)",
"advancedContent": "Fai clic su **\"Modalità avanzata\"** in fondo al modulo per accedere a impostazioni aggiuntive.",
"tools": "Strumenti disponibili (dettaglio)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "Frequenza e pianificazione",
"frequencyContent": "| Frequenza | Comportamento\n|-----------|----------\n| **Manuale** | Fai clic su \"Esegui\".",
"targetNotebook": "Quaderno di destinazione",
@@ -2447,7 +2447,7 @@
"templates": "Modelli",
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Suggerimenti e risoluzione problemi",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "Scegli il tipo di attività che l'agente svolgerà. Ogni tipo ha capacità e campi diversi.",
"researchTopic": "L'argomento che l'agente cercherà sul web. Sii specifico per risultati migliori.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Passa a Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro include:",
"proSearch": "100 semantic searches / month",
"proSearch": "1.000 crediti IA / mese",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Generazione diagramma",
"featureFlashcards": "Flashcard IA",
"featureFlashcards": "Schede di ripasso",
"featurePublishEnhance": "Pubblicazione IA",
"featureSlides": "Generazione di diapositive",
"featureVoice": "Trascrizione vocale",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 riformulazioni / mese",
"businessFeature4": "1.000 messaggi chat / mese",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Quote personalizzate, SSO, supporto prioritario.",
"enterpriseDescription": "Quote personalizzate, accesso unico per il team, supporto prioritario.",
"contactSales": "Contatta le vendite",
"startCheckout": "Inizia",
"checkoutLoading": "Caricamento pagamento…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Il tuo abbonamento si rinnova automaticamente.",
"businessDescription": "Per team e responsabili di prodotto.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Accesso unico per tutto il team",
"enterpriseFeature3": "Supporto dedicato",
"enterpriseFeature4": "Fatturazione personalizzata",
"enterpriseFeature5": "SLA garantito",
"enterpriseFeature5": "Tempo di risposta garantito",
"subtitle": "Scegli il piano che fa per te",
"freeDescription": "Per scoprire Memento",
"freeF1": "30 ricerche semantiche",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Impossibile recuperare lo stato della fatturazione",
"fetchQuotasFailed": "Impossibile recuperare le quote",
"fetchInvoicesFailed": "Impossibile caricare lo storico delle fatture.",
"savePercent": "Risparmia ~17%",
"savePercent": "Risparmia ~{percent} %",
"billedYearTotal": "cioè {price} allanno",
"cancelSubscription": "Annulla abbonamento",
"changeOffer": "Cambia offerta",
"downgradeToFree": "Torna allofferta gratuita",
@@ -3379,13 +3380,13 @@
"cta": "Parliamone",
"feature0": "Tutto Business",
"feature1": "Agenti illimitati",
"feature2": "SSO / SAML",
"feature3": "Audit log e SLA",
"feature2": "Accesso unico per tutto il team",
"feature3": "Registro attività e tempo di risposta garantito",
"feature4": "Supporto dedicato",
"feature5": "Onboarding live"
"feature5": "Accompagnamento allinstallazione"
},
"basicPrice": "Gratis",
"savePercent": "Risparmia ~17%",
"savePercent": "Risparmia ~{percent} %",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Elimina definitivamente e irreversibilmente il tuo account e tutti i dati associati.",
"whatWillBeDeleted": "Quanto segue verrà eliminato definitivamente:",
"item1": "Tutte le note, i quaderni e gli allegati",
"item2": "Tutti gli embedding semantici pgvector",
"item2": "Lindice che collega le tue note",
"item3": "Tutte le chiavi API BYOK",
"item4": "Tutte le conversazioni IA e sessioni di brainstorm",
"item5": "Cronologia quote e utilizzo",
@@ -3559,7 +3560,7 @@
"step_features_title": "I tuoi superpoteri IA",
"step_features_subtitle": "Scegli da dove iniziare.",
"step_features_cta": "Andiamo!",
"feature_search_title": "Ricerca semantica",
"feature_search_title": "Ricerca per il senso",
"feature_search_desc": "Trova qualsiasi nota per significato, non solo per parole chiave.",
"feature_flashcards_title": "Flashcard IA",
"feature_flashcards_desc": "Genera schede di ripasso dalle tue note in un clic.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Fai clic su una scheda idea per espanderla con sotto-idee ed esplorarla.",
"hint_brainstorm_export_title": "Esporta sessione",
"hint_brainstorm_export_desc": "Esporta l'intera sessione di brainstorming come nota strutturata nel carnet scelto.",
"hint_insights_clusters_title": "Cluster di note",
"hint_insights_clusters_desc": "Le tue note sono automaticamente raggruppate in cluster tematici. Fai clic per i dettagli.",
"hint_insights_clusters_title": "Temi delle note",
"hint_insights_clusters_desc": "Le tue note sono raggruppate per temi. Fai clic su un tema per vedere le note.",
"hint_insights_bridge_title": "Note ponte",
"hint_insights_bridge_desc": "Le note ponte collegano più cluster e sono evidenziate perché contengono collegamenti importanti.",
"hint_insights_refresh_title": "Aggiorna cluster",
"hint_insights_refresh_desc": "Se hai aggiunto nuove note, fai clic su \"Aggiorna\" per ricalcolare i cluster."
"hint_insights_bridge_desc": "Le note ponte collegano più temi. Mostrano dove le idee si incrociano.",
"hint_insights_refresh_title": "Aggiorna i temi",
"hint_insights_refresh_desc": "Se hai aggiunto note, fai clic su «Aggiorna» per ricalcolare i temi."
},
"blockAction": {
"moveUp": "Sposta blocco su",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "Connessioni",
"toggleMenu": "Mostra o nascondi il menu",
"subtitle": "Scopri l'architettura nascosta della tua conoscenza",
"subtitle": "Vedi come le tue note si collegano",
"resync": "Aggiorna",
"mapping": "Mappatura…",
"loading": "Caricamento delle note…",
"mappingTitle": "Mappatura della tua conoscenza…",
"mappingHint": "Può richiedere da uno a tre minuti. Puoi continuare a navigare; la pagina si aggiornerà automaticamente.",
"analyzeNow": "Avvia analisi semantica",
"emptyNeedMoreNotes": "Aggiungi altre {count} note per sbloccare il clustering semantico (minimo 10).",
"embeddingsHint": "Solo {indexed} di {total} note indicizzate per IA.",
"analyzeNow": "Aggiorna i temi",
"emptyNeedMoreNotes": "Aggiungi altre {count} note per raggruppare i temi (minimo 10).",
"embeddingsHint": "Solo {indexed} di {total} note sono pronte per essere raggruppate per temi.",
"vsGraphHint": "Non è la \"Mappa dei link\": qui l'IA raggruppa per significato, non per link.",
"openGraphMap": "Apri mappa link",
"analysisFailed": "Analisi fallita. Controlla le impostazioni IA.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "note",
"clusterFallback": "Tema {index}",
"unclusteredNotes": "{count} note non assegnate ad alcun tema (nascoste dal grafico).",
"emptyTitle": "Scopri i tuoi cluster di conoscenza",
"emptyDescription": "Fai clic su \"Risincronizza rete\" per analizzare le tue note e trovare connessioni nascoste",
"emptyTitle": "Scopri i tuoi temi",
"emptyDescription": "Fai clic su «Aggiorna» per raggruppare le tue note per temi.",
"stats": {
"clusters": "Cluster",
"bridgeNotes": "Note ponte",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "Cluster semantici",
"title": "Temi",
"notesCount": "{count} note",
"centralNotes": "Note centrali",
"emptyCluster": "Nessuna nota in questo cluster"
"emptyCluster": "Nessuna nota in questo tema"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Affinità {score}%",
"moreThemes": "+{count}",
"needsResync": "Risincronizza la rete per aggiornare le coppie ponte.",
"scoreHint": "Affinità semantica media ai due temi che questa nota collega (similarità coseno)."
"scoreHint": "Quanto questa nota è vicina ai due temi che collega."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Grafo",
"viewDashboard": "Pannello",
"isolatedClusters": {
"title": "Cluster isolati ({count})",
"title": "Temi isolati ({count})",
"badge": "Non connesso",
"empty": "Tutti i cluster sono interconnessi!"
"empty": "Tutti i temi sono già collegati da almeno una nota ponte."
},
"focusCluster": {
"title": "Focus cluster attivo",
"description": "Questo cluster tematico raccoglie {count} note complementari. Fai clic su una nota peraprirla.",
"title": "Tema aperto",
"description": "Questo tema riunisce {count} note. Fai clic su una nota per aprirla.",
"close": "Chiudi"
},
"badgeDominant": "Dominante",
"bridgeCount": "ponte/i",
"echoTitle": "Continui a tornare a questa idea",
"tipClusters": "L'IA ha raggruppato le tue note per affinità semantica, indipendentemente dal carnet.",
"tipClusters": "L'IA ha raggruppato le tue note per temi, anche in quaderni diversi.",
"tipClustersAction": "Fai clic su un tema per vedere le note. Fai clic su una nota peraprirla.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Fai clic su una nota peraprirla e capire la connessione.",
"tipEcho": "Memory Echo rileva due note scritte in momenti diversi che trattano lo stesso argomento.",
"tipEchoAction": "Due note, la stessa idea, momenti diversi. Fai clic per esplorare.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Fai clic su \"Crea nota ponte\" per scrivere la nota eaprirla subito.",
"tipIsolated": "Questi temi sono isolati: nessuna nota li collega agli altri. Forse manca una prospettiva.",
"tipIsolatedAction": "Questi temi non hanno note che li collegano al resto del tuo pensiero.",
"recalcSystem": {
"title": "Sistema di ricalcolo",
"statusSynced": "Sincronizzato",
"scheduledCron": "Programmato",
"lastSync": "Ultima sync"
"title": "Aggiornamento dei temi",
"statusSynced": "Aggiornato",
"scheduledCron": "Aggiornamento automatico",
"lastSync": "Ultimo aggiornamento"
},
"resetFocus": "Reimposta focus",
"resetFocus": "Mostra tutto",
"listView": "Elenco",
"graphAriaLabel": "Rete semantica: {clusters} cluster, {notes} note, {bridges} note ponte. Usa le frecce.",
"listAriaLabel": "Elenco cluster accessibile con note e connessioni ponte",
"graphAriaLabel": "Mappa dei temi: {clusters} temi, {notes} note, {bridges} note ponte. Passa alla vista Elenco per navigare più facilmente.",
"listAriaLabel": "Elenco di temi, note e note ponte",
"dashboardFilterPlaceholder": "Filtra note ponte, temi…",
"legendFilterPlaceholder": "Filtra temi…",
"legendShowLess": "Mostra meno",
@@ -3896,7 +3897,7 @@
"genericError": "Si è verificato un errore durante l'invio alla tua istanza.",
"ignore": "padroneggiato",
"processing": "Elaborazione…",
"processingDetail": "Generazione tag, riepilogo semantico ed embedding.",
"processingDetail": "Preparazione della nota: etichette, riassunto, ricerca per il senso.",
"publishedOn": "Pubblicato su {domain}",
"quitSimulator": "Chiudi simulatore",
"realtimeCapture": "Data: acquisizione live",
@@ -4156,7 +4157,7 @@
"match": "Accedi",
"memoryEchoDisabled": "Memory Echo è disabilitato nelle tue impostazioni IA.",
"mindMap": "Mappa mentale",
"mindMapEmpty": "Nessun tema rilevato ancora. L'analisi semantica raggruppa le tue note per argomento.",
"mindMapEmpty": "Ancora nessun tema. LIA raggruppa le tue note per argomento.",
"mindMapOpen": "Apri mappa insight →",
"mindMapUnavailable": "Mappa mentale non disponibile.",
"new": "note create",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "Aggiungi alla nota",
"bridge": "Idea ponte",
"connect": "Link semantico",
"connect": "Collega una nota",
"continue": "Continua",
"daily": "Diario",
"explore": "Esplora tema",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Il tuo secondo cervello a colpo d'occhio: suggerimenti IA, acquisizione rapida e passi successivi. Usa le scorciatoie per passare all'azione.",
"resumeOpen": "Riprendi",
"review": "Rivedi",
"semanticConnection": "Affinità semantica",
"semanticConnection": "Vicinanza",
"sentiment": "Sentimento",
"sentimentDominant": "Tono dominante questa settimana",
"suggestedBridge": "Collega {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Ritenzione, serie e totale carte.",
"gmail": "Acquisizioni email sincronizzate da Gmail.",
"inbox": "Note in attesa di essere archiviate nei quaderni.",
"intelligence": "Link semantici, idee ponte e scoperte degli agenti.",
"intelligence": "Note che si incontrano, idee che fanno da ponte e risultati degli agenti.",
"link-suggestions": "Passaggi da collegare nella tua nota attuale.",
"mind-map": "Cluster di temi dimensionati in base al volume di note.",
"next-paths": "Prossimi passi suggeriti dall'IA dal tuo lavoro più recente.",
@@ -4258,7 +4259,7 @@
"resume": "Riprendi le tue note più recenti da dove le hai lasciate.",
"revision": "Flashcard in scadenza per la ripasso con ripetizione dilazionata.",
"sentiment": "Tono emotivo delle tue note di questa settimana.",
"stats": "Cluster, note ponte e note totali indicizzate.",
"stats": "Temi, note che fanno da ponte e note indicizzate.",
"usage": "Crediti IA rimanenti e limiti mensili."
},
"widgetDone": "Fatto",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Tasso di ritenzione dell'apprendimento, serie di revisione e totale delle carte.",
"gmail": "Acquisizioni email sincronizzate dall'integrazione Gmail.",
"inbox": "Note senza quaderno. Archiviale per mantenere il tuo secondo cervello in ordine.",
"intelligence": "Scoperte IA: collegamenti semantici tra note, idee ponte e risultati degli agenti.",
"intelligence": "Ciò che lIA ha trovato: note che si incontrano, idee che fanno da ponte e risultati degli agenti.",
"link-suggestions": "Passaggi da altre note vale la pena collegare al tuo lavoro attuale.",
"mind-map": "Cluster di temi dimensionati in base al volume di note. Clicca per esplorare in Connessioni.",
"next-paths": "Prossimi passi suggeriti in base all'ultima nota modificata: riprendi, collega, collega o ricerca.",
@@ -4284,7 +4285,7 @@
"resume": "Le tue note aggiornate più di recente. Riprendi da dove avevi lasciato.",
"revision": "Flashcard in scadenza oggi per ripasso con ripetizione dilazionata.",
"sentiment": "Tono emotivo delle note modificate negli ultimi 7 giorni. Richiede almeno 3 note recenti e IA attivata.",
"stats": "Statistiche indice semantico: temi attivi, note ponte, totali note indicizzate.",
"stats": "Quanti temi, note che fanno da ponte e note indicizzate hai.",
"usage": "Utilizzo mensile crediti IA per funzione."
},
"widgetHelpClose": "Chiudi",
@@ -4319,7 +4320,7 @@
"resume": "Riprendi qui",
"revision": "Flashcard",
"sentiment": "Sentimento",
"stats": "Statistiche semantiche",
"stats": "Temi e note",
"usage": "Quota IA"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Incollalo nel campo sotto e clicca «Connetti». La prima sincronizzazione importa tutti i tuoi libri e articoli.",
"readwiseHelpStep3": "Ogni libro diventa una nota in un quaderno «Readwise 📚» — con tutti i tuoi highlight organizzati.",
"readwiseHelpStep4": "Per aggiornare con nuovi evidenziazioni, torna qui e clicca su \"Sincronizza ora\".",
"readwiseHelpStep5": "💡 Consiglio: crea flashcard IA da una nota Readwise (pulsante 🎓 nell'editor) per ripassare le tue letture.",
"readwiseHelpStep5": "Consiglio: crea schede di ripasso da una nota Readwise (pulsante delle schede in alto nella nota) per ripassare le tue letture.",
"readwiseInfo": "Come funziona Readwise?",
"readwiseSynced": "Sincronizzazione Readwise — {{created}} create, {{updated}} aggiornate",
"readwiseTokenPlaceholder": "Token Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversione completata! Quaderno collegato creato.",
"convertToNotebook": "Converti in quaderno",
"converting": "Conversione…",
"createLocalDb": "Crea un database locale autonomo",
"createLocalDb": "Crea una tabella in questa nota",
"createNotebook": "Crea notebook",
"defaultOption1": "Opzione 1",
"defaultOption2": "Opzione 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Blocco obsoleto rimosso.",
"displayModeGallery": "Galleria",
"displayModeTable": "Tavolo",
"echoLoading": "Ricerca di connessioni semantiche...",
"echoNameRequired": "Inserisci prima un nome per questa riga per cercare connessioni semantiche.",
"echoLoading": "Ricerca di note vicine…",
"echoNameRequired": "Inserisci prima un nome per questa riga, per cercare note vicine.",
"echoNoMatch": "Nessuna nota contenente «{{query}}» trovata nel tuo spazio.",
"echoPopoverTitle": "Risonanze semantiche 🔮",
"echoPopoverTitle": "Note vicine",
"echoSearchError": "Si è verificato un errore durante la ricerca.",
"echoUpgradeText": "Converti questa tabella in un quaderno per attivare l'analisi neurale di Memento.",
"echoUpgradeText": "Converti questa tabella in un quaderno perché Memento trovi le note vicine.",
"emptyTable": "Nessuna riga nella tabella.",
"insertCitation": "Inserisci link nell'editor",
"insertDesc": "Incorpora i dati strutturati del tuo quaderno",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Parola chiave",
"linkToNotebook": "Collega a un quaderno",
"loadError": "Errore nel caricamento dei dati strutturati.",
"localDbTitle": "Database autonomo",
"localDbTitle": "Tabella in questa nota",
"namePlaceholder": "Inserisci un nome…",
"noEchoFound": "Nessuna connessione semantica rilevata.",
"noEchoFound": "Nessuna nota vicina trovata.",
"noNotebook": "Questo blocco richiede un quaderno. Sposta prima questa nota in un quaderno.",
"noNotebookDesc": "Questo blocco mostra la vista strutturata di un quaderno. Scegli il quaderno da collegare:",
"noSchema": "Questo quaderno non ha ancora una vista strutturata. Configurala dall'intestazione del quaderno.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Collega a un quaderno",
"selectOptionsPlaceholder": "Opzioni separate da virgole",
"semanticEcho": "Risonanze semantiche",
"switchToLocalDb": "Passa a database locale",
"turnIntoLabel": "Database inline",
"switchToLocalDb": "Torna alla tabella di questa nota",
"turnIntoLabel": "Tabella nella nota",
"untitled": "Senza titolo"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Cerca una nota…",
"selectOptions": "Opzioni (una per riga)",
"selectOptionsPlaceholder": "Da fare\\\nIn corso\\\nFatto",
"semanticResonances": "Risonanze semantiche",
"semanticResonances": "Note che si incontrano",
"tagApplied": "ponti",
"viewCalendarHint": "Calendario — le tue note organizzate per data",
"viewGallery": "Galleria",

View File

@@ -407,7 +407,7 @@
"placeholder": "検索",
"searchPlaceholder": "ノートを検索...",
"semanticInProgress": "AI検索中...",
"semanticTooltip": "AIセマンティック検索",
"semanticTooltip": "意味で探す",
"searching": "検索中...",
"noResults": "結果が見つかりませんでした",
"resultsFound": "{count}件のノートが見つかりました",
@@ -861,7 +861,7 @@
"compareAll": "すべて比較",
"mergeAll": "すべてマージ",
"close": "閉じる",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % の近さ",
"backToNote": "Revenir à ma note",
"badgeLabel": "メモリーエコー",
"bottomCueConsent": "下にAI接続があります",
@@ -918,7 +918,7 @@
"noContentReturned": "APIから融合コンテンツが返されませんでした",
"unknownDate": "日付不明"
},
"defaultInsight": "これらのノートは意味的に関連しているようです。",
"defaultInsight": "これらのノートはつながっています。",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "ラベルのクリーンアップに失敗しました",
"indexingComplete": "インデックス完了:{count}件のノートを処理しました",
"indexingError": "インデックス作成中にエラーが発生しました",
"semanticIndexing": "セマンティックインデックス",
"semanticIndexingDescription": "すべてのノートのベクトルを生成して、意図に基づく検索を有効にします",
"semanticIndexing": "意味検索用の索引",
"semanticIndexingDescription": "すべてのノートを意味検索用に準備する",
"profile": "プロフィール",
"searchNoResults": "一致する設定が見つかりません",
"languageAuto": "言語を自動に設定",
@@ -1664,7 +1664,7 @@
"title": "機能",
"description": "AI搭載機能",
"titleSuggestions": "AI搭載のタイトル提案",
"semanticSearch": "埋め込みによるセマンティック検索",
"semanticSearch": "意味で探す",
"paragraphReformulation": "段落の言い換え",
"memoryEcho": "Memory Echo デーリーインサイト",
"notebookOrganization": "ノートブックの整理",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "検索インデックスを再構築",
"description": "セマンティック検索を改善するためすべてのノートの埋め込みを再生成します。",
"description": "意味で探しやすくするためすべてのノートの索引を作り直します。",
"button": "インデックスを再構築",
"success": "インデックス作成完了:{count}個のノートを処理",
"failed": "インデックス作成中にエラーが発生しました"
@@ -1984,7 +1984,7 @@
"legendWiki": "ノートにリンク",
"mentionShort": "メンション",
"moreNodes": "マップ上に +{count}",
"noInbound": "このノートを指す受信wikiリンクはありません。",
"noInbound": "このノートを指す他のノートはありません。",
"noOutbound": "このノートはまだ他のノートにリンクしていません。",
"noWikiYet": "他のノートへのリンクはまだありません。",
"outboundHelp": "これがテキスト内の [[…]] でリンクしているノート。",
@@ -2190,7 +2190,7 @@
"custom": "カスタム"
},
"typeDescriptions": {
"scraper": "複数のサイトをスクレイピングして要約を作成",
"scraper": "複数のサイトを読んで要約する",
"researcher": "トピックに関する情報を検索",
"monitor": "ノートブックを監視しノートを分析",
"slideGenerator": "メモから PowerPoint プレゼンテーションを作成します",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "例火曜日のAIウォッチ",
"description": "説明(任意)",
"descriptionPlaceholder": "週次AIニュースまとめ",
"urlsLabel": "スクレイピングするURL",
"urlsLabel": "読むページのアドレス",
"urlsOptional": "(任意)",
"sourceNotebook": "監視するノートブック",
"selectNotebook": "ノートブックを選択...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "メール通知",
"notifyEmailHint": "実行後にエージェントの結果をメールで受け取る",
"includeImages": "画像を含む",
"includeImagesHint": "スクレイピングしたページから画像を抽出し、生成されたノートに添付する",
"includeImagesHint": "読んだページ画像をノートに付ける",
"back": "戻る",
"configuration": "設定",
"options": "オプション",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "AIウォッチ",
"description": "AI専門の5サイトをスクレイピングし、週まとめを生成します。"
"description": "AI専門サイト5件を読んで、週まとめを作ります。"
},
"veilleTech": {
"name": "Techウォッチ",
"description": "主テックサイトをスクレイピングし、ニュースまとめを作成します。"
"description": "主テックサイトを読んで、ニュースまとめを作ます。"
},
"veilleDev": {
"name": "Devウォッチ",
"description": "開発者向けサイトをスクレイピングし、新しい技術やフレームワークを要約します。"
"description": "開発者向けサイトを読んで、新しい技術を要約します。"
},
"surveillant": {
"name": "ノートオブザーバー",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "エージェントツール",
"webSearch": "ウェブ検索",
"webScrape": "ウェブスクレイプ",
"webScrape": "ページを読む",
"noteSearch": "ノート検索",
"noteRead": "ノート読み取り",
"noteCreate": "ノート作成",
@@ -2431,15 +2431,15 @@
"btnLabel": "ヘルプ",
"close": "閉じる",
"whatIsAgent": "エージェントとは?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "エージェントの使い方",
"howToUseContent": "1. **「新しいエージェント」**をクリックします(またはページ下部の**テンプレート**から開始します)。",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "詳細モードAI指示、最大反復回数",
"advancedContent": "フォームの下部にある**「詳細モード」**をクリックして追加設定にアクセスしてください。",
"tools": "利用可能なツール(詳細)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "頻度とスケジュール",
"frequencyContent": "| 頻度 | 動作\n|-----------|----------\n| **手動** | 自分で「実行」をクリックします。",
"targetNotebook": "保存先ノートブック",
@@ -2447,7 +2447,7 @@
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "ヒントとトラブルシューティング",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "エージェントが実行するタスクの種類を選択してください。各タイプには異なる機能とフィールドがあります。",
"researchTopic": "エージェントがウェブで調査するトピック。より良い結果のために具体的に指定してください。",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Proにアップグレード",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Proには以下が含まれます:",
"proSearch": "100 semantic searches / month",
"proSearch": "毎月 1,000 AIクレジット",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "ダイアグラム生成",
"featureFlashcards": "AIフラッシュカード",
"featureFlashcards": "復習カード",
"featurePublishEnhance": "AI公開",
"featureSlides": "スライド生成",
"featureVoice": "音声転写",
@@ -3100,7 +3100,7 @@
"businessFeature3": "言い換え 500回/月",
"businessFeature4": "チャット 1,000メッセージ/月",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "カスタム割り当て、SSO、優先サポート。",
"enterpriseDescription": "カスタム割り当て、チーム全体の一括ログイン、優先サポート。",
"contactSales": "営業に問い合わせ",
"startCheckout": "始める",
"checkoutLoading": "チェックアウト読み込み中…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "サブスクリプションは自動更新されます。",
"businessDescription": "チームとプロダクトリーダー向け。",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "チーム全体の一括ログイン",
"enterpriseFeature3": "専任サポート",
"enterpriseFeature4": "カスタム請求",
"enterpriseFeature5": "保証SLA",
"enterpriseFeature5": "回答時間の保証",
"subtitle": "自分に合ったプランを選択",
"freeDescription": "Mementoを体験する",
"freeF1": "30セマンティック検索",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "請求ステータスを取得できませんでした",
"fetchQuotasFailed": "クォータを取得できませんでした",
"fetchInvoicesFailed": "請求履歴を読み込めませんでした。",
"savePercent": "17%お得",
"savePercent": "{percent}%お得",
"billedYearTotal": "年額 {price}",
"cancelSubscription": "サブスクリプションをキャンセル",
"changeOffer": "プランを変更",
"downgradeToFree": "無料プランに戻る",
@@ -3379,13 +3380,13 @@
"cta": "相談する",
"feature0": "Business のすべて",
"feature1": "エージェント無制限",
"feature2": "SSO / SAML",
"feature3": "監査ログと SLA",
"feature2": "チーム全体の一括ログイン",
"feature3": "操作履歴と回答時間の保証",
"feature4": "専任サポート",
"feature5": "ライブオンボーディング"
"feature5": "導入の案内"
},
"basicPrice": "無料",
"savePercent": "約17%お得",
"savePercent": "約{percent}%お得",
"proMonthly": "€9.90",
"proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90",
@@ -3494,7 +3495,7 @@
"sectionDescription": "アカウントと関連するすべてのデータを完全かつ不可逆的に削除します。",
"whatWillBeDeleted": "以下が完全に削除されます:",
"item1": "すべてのノート、ノートブック、添付ファイル",
"item2": "すべてのpgvectorセマンティックエンベディング",
"item2": "ノートをつなぐ索引",
"item3": "すべてのBYOK APIキー",
"item4": "すべてのAI会話とブレインストームセッション",
"item5": "クォータと使用履歴",
@@ -3559,7 +3560,7 @@
"step_features_title": "あなたのAIスーパーパワー",
"step_features_subtitle": "どこから始めるか選んでください。",
"step_features_cta": "始めましょう!",
"feature_search_title": "セマンティック検索",
"feature_search_title": "意味で探す",
"feature_search_desc": "キーワードだけでなく意味でノートを検索。",
"feature_flashcards_title": "AIフラッシュカード",
"feature_flashcards_desc": "ノートから復習カードをワンクリックで生成。",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "アイデアカードをクリックしてサブアイデアで展開し探求。",
"hint_brainstorm_export_title": "セッションをエクスポート",
"hint_brainstorm_export_desc": "ブレーンストーミングセッション全体を選択したノートブックに構造化ノートとしてエクスポート。",
"hint_insights_clusters_title": "ノートクラスタ",
"hint_insights_clusters_desc": "ノートは自動的にテーマ別クラスタにグループ化されます。詳細を見るにはクリック。",
"hint_insights_clusters_title": "ノートのテーマ",
"hint_insights_clusters_desc": "ノートはテーマごとにまとまっています。テーマをクリックするとノートが見られます。",
"hint_insights_bridge_title": "ブリッジノート",
"hint_insights_bridge_desc": "ブリッジノートは複数のクラスタを結び、重要なつながりがあるため強調表示されます。",
"hint_insights_refresh_title": "クラスタを更新",
"hint_insights_refresh_desc": "新しいノートを追加した場合、「更新」をクリックしてクラスタを再計算します。"
"hint_insights_bridge_desc": "橋渡しノートは複数のテーマをつなぎ、考えが交わるところを示します。",
"hint_insights_refresh_title": "テーマを更新",
"hint_insights_refresh_desc": "ノートを追加した「更新」を押してテーマをやり直します。"
},
"blockAction": {
"moveUp": "ブロックを上に移動",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "つながり",
"toggleMenu": "メニューを表示または隠す",
"subtitle": "知識の隠された構造を発見",
"subtitle": "ノート同士のつながりを見ましょう",
"resync": "更新",
"mapping": "マッピング中…",
"loading": "ノート読み込み中…",
"mappingTitle": "知識をマッピング中…",
"mappingHint": "1〜3分かかる場合があります。ブラウジングを続けられます。ページは自動更新されます。",
"analyzeNow": "セマンティック分析を開始",
"emptyNeedMoreNotes": "セマンティッククラスタリングのロックを解除するには、あと{count}件のートを追加してください最小10。",
"embeddingsHint": "AI索引付き{indexed}/{total}ノートのみ。",
"analyzeNow": "テーマを更新",
"emptyNeedMoreNotes": "テーマをまとめるには、あと{count}件のートを追加してください最小10。",
"embeddingsHint": "{indexed} / {total} 件のノートがテーマ分けの準備ができています。",
"vsGraphHint": "「リンクマップ」とは異なりますここではAIが意味でグループ化します。",
"openGraphMap": "リンクマップを開く",
"analysisFailed": "分析失敗。AI設定を確認。",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "ノート",
"clusterFallback": "テーマ {index}",
"unclusteredNotes": "{count}件のノートがテーマに割り当てられていません(グラフから非表示)。",
"emptyTitle": "知識クラスターを発見",
"emptyDescription": "「ネットワークを再同期」をクリックしてノートを分析し、隠れたつながりを見つけます",
"emptyTitle": "テーマを見る",
"emptyDescription": "「更新」をクリックしてノートをテーマごとにまとめます",
"stats": {
"clusters": "クラスター",
"bridgeNotes": "ブリッジノート",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "セマンティッククラスタ",
"title": "テーマ",
"notesCount": "{count}件のノート",
"centralNotes": "中心ノート",
"emptyCluster": "このクラスタにノートはありません"
"emptyCluster": "このテーマにノートはありません"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "親和性 {score}%",
"moreThemes": "+{count}",
"needsResync": "ネットワークを再同期してブリッジペアを更新します。",
"scoreHint": "このノートが橋渡しする2つのテーマへの平均セマンティック親和度(コサイン類似度)。"
"scoreHint": "このノートがつなぐ2つのテーマに、どれだけ近いか。"
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "グラフ",
"viewDashboard": "ダッシュボード",
"isolatedClusters": {
"title": "孤立クラスタ ({count})",
"title": "孤立したテーマ ({count})",
"badge": "未接続",
"empty": "全クラスター接続済み!"
"empty": "すべてのテーマは、少なくとも1つの橋渡しートでつながっています。"
},
"focusCluster": {
"title": "クラスターフォーカス中",
"description": "このテーマクラスタは{count}件の補完的なノートを集めています。ノートをクリックして開いてください。",
"title": "テーマを開いています",
"description": "このテーマは{count}件のノートがあります。ノートをクリックして開きます。",
"close": "閉じる"
},
"badgeDominant": "ドミナント",
"bridgeCount": "ブリッジ",
"echoTitle": "このアイデアに何度も戻っています",
"tipClusters": "AIは意味的親和性でノートをグループ化しました。ノートブックに関わらず。",
"tipClusters": "AIはノートをテーマごとにまとめました。ノートブックが違っても同じです。",
"tipClustersAction": "テーマをクリックしてノートを表示。ノートをクリックして開く。",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "ノートをクリックして開き、つながりを理解してください。",
"tipEcho": "Memory Echoは、非常に異なる時期に書かれ、同じトピックを扱う2つのートを検出します。",
"tipEchoAction": "2つのート、同じアイデア、異なる瞬間。クリックして探索。",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "「ブリッジノートを作成」をクリックして、ノートを書いてすぐ開く。",
"tipIsolated": "これらのテーマは孤立しています:他とつなぐノートがありません。視点が欠けているかも。",
"tipIsolatedAction": "これらのテーマには他の思考とつなぐノートがありません。",
"recalcSystem": {
"title": "再計算システム",
"statusSynced": "同期済み",
"scheduledCron": "予定済み",
"lastSync": "前回同期"
"title": "テーマの更新",
"statusSynced": "最新",
"scheduledCron": "自動更新",
"lastSync": "前回の更新"
},
"resetFocus": "フォーカス解除",
"resetFocus": "すべて表示",
"listView": "リスト",
"graphAriaLabel": "セマンティックネットワーク: {clusters}クラスタ、{notes}ノート、{bridges}ブリッジノート。矢印キーでナビゲート。",
"listAriaLabel": "アクセシブルなクラスタリスト(ノートとブリッジ接続)",
"graphAriaLabel": "テーマの地図: {clusters}テーマ、{notes}ノート、{bridges}橋渡しノート。リスト表示に切り替えると移動しやすくなります。",
"listAriaLabel": "テーマ、ノート、橋渡しノートの一覧",
"dashboardFilterPlaceholder": "ブリッジノート、テーマを絞り込み…",
"legendFilterPlaceholder": "テーマを絞り込み…",
"legendShowLess": "折りたたむ",
@@ -3896,7 +3897,7 @@
"genericError": "インスタンスへの送信中にエラーが発生しました。",
"ignore": "習得済み",
"processing": "処理中…",
"processingDetail": "タグ、セマンティック要約、エンベディングを生成中。",
"processingDetail": "ノートを準備中:ラベル、要約、意味検索。",
"publishedOn": "{domain}で公開",
"quitSimulator": "シミュレータを閉じる",
"realtimeCapture": "日付: ライブキャプチャ",
@@ -4156,7 +4157,7 @@
"match": "ログイン",
"memoryEchoDisabled": "メモリーエコーはAI設定で無効になっています。",
"mindMap": "マインドマップ",
"mindMapEmpty": "テーマはまだ検出されていません。セマンティック分析がノートをトピック別にグループ化します。",
"mindMapEmpty": "まだテーマがありません。AIがートをテーマごとにまとめます。",
"mindMapOpen": "インサイトマップを開く →",
"mindMapUnavailable": "マインドマップは利用できません。",
"new": "作成されたノート",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "メモに追加",
"bridge": "ブリッジアイデア",
"connect": "セマンティックリンク",
"connect": "ノートをつなぐ",
"continue": "続ける",
"daily": "ジャーナル",
"explore": "テーマを探索",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "セカンドブレインの一目瞭然AIの提案、クイックキャプチャ、次のステップ。下のショートカットを使ってすぐ始めましょう。",
"resumeOpen": "再開",
"review": "復習",
"semanticConnection": "セマンティック親和度",
"semanticConnection": "近さ",
"sentiment": "感情",
"sentimentDominant": "今週の支配的なトーン",
"suggestedBridge": "{clusterA}と{clusterB}を接続",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "定着率、ストリーク、総カード数。",
"gmail": "Gmailから同期されたメールキャプチャ。",
"inbox": "ノートブックに分類されるのを待っているノート。",
"intelligence": "セマンティックリンク、ブリッジアイデア、エージェントの発見。",
"intelligence": "つながるノート、橋渡しになる考え、エージェントの結果。",
"link-suggestions": "現在のノートにリンクする文章。",
"mind-map": "テーマクラスターはノート数に応じてサイズ調整。",
"next-paths": "最新の作業からAIが提案する次のステップ。",
@@ -4258,7 +4259,7 @@
"resume": "最近のノートを途中から再開します。",
"revision": "間隔反復で復習すべきフラッシュカード。",
"sentiment": "今週のノートの感情的トーン。",
"stats": "クラスター、ブリッジメモ、インデックス済みメモの総数。",
"stats": "テーマ、橋渡しになるノート、インデックス済みノート。",
"usage": "残りAIクレジットと月間制限。"
},
"widgetDone": "完了",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "学習定着率、復習ストリーク、総カード数。",
"gmail": "Gmail統合から同期されたメールキャプチャ。",
"inbox": "ノートブックのないノート。整理してセカンドブレインをきれいに保ちましょう。",
"intelligence": "AIの発見:メモ間の意味的リンク、ブリッジアイデア、エージェントの発見。",
"intelligence": "AIが見つけたもの:つながるノート、橋渡しになる考え、エージェントの結果。",
"link-suggestions": "現在の作業にリンクする価値のある他のノートの文章。",
"mind-map": "テーマクラスターはノート数に応じてサイズ調整。クリックしてインサイトで探索。",
"next-paths": "最後に編集したノートに基づく推奨次のステップ:再開、リンク、橋渡し、または調査。",
@@ -4284,7 +4285,7 @@
"resume": "最近更新されたノート。途中から再開できます。",
"revision": "今日、間隔反復で復習すべきフラッシュカード。",
"sentiment": "過去7日間に編集されたートの感情的トーン。最近のートが3つ以上とAIの有効化が必要です。",
"stats": "セマンティックインデックスの統計:アクティブテーマ、ブリッジノート、インデックス済みノート数。",
"stats": "テーマ、橋渡しになるノート、インデックス済みノート数。",
"usage": "機能別の月間AIクレジット使用量。"
},
"widgetHelpClose": "閉じる",
@@ -4319,7 +4320,7 @@
"resume": "ここから再開",
"revision": "フラッシュカード",
"sentiment": "感情",
"stats": "セマンティック統計",
"stats": "テーマとノート",
"usage": "AIクォータ"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "下のフィールドに貼り付けて「接続」をクリックします。最初の同期で全書籍と記事がインポートされます。",
"readwiseHelpStep3": "各書籍は「Readwise 📚」ノートブックのノートになります — すべてのハイライトが整理済みです。",
"readwiseHelpStep4": "新しいハイライトを更新するには、ここに戻って「今すぐ同期」をクリックしてください。",
"readwiseHelpStep5": "💡 ヒントReadwiseートからAIフラッシュカードを作成エディターの🎓ボタン)して読書を復習しましょう。",
"readwiseHelpStep5": "ヒントReadwiseートから復習カードを作成(ノート上部のカードボタン)して読書を復習しましょう。",
"readwiseInfo": "Readwiseはどう機能しますか",
"readwiseSynced": "Readwise同期 — {{created}}件作成、{{updated}}件更新",
"readwiseTokenPlaceholder": "Readwiseトークン…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "変換完了!リンクされたノートブックが作成されました。",
"convertToNotebook": "ノートブックに変換",
"converting": "変換中…",
"createLocalDb": "独立したローカルデータベースを作",
"createLocalDb": "このノートに表を作",
"createNotebook": "ノートブックを作成",
"defaultOption1": "オプション 1",
"defaultOption2": "オプション 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "古いブロックが削除されました。",
"displayModeGallery": "ギャラリー",
"displayModeTable": "テーブル",
"echoLoading": "セマンティック接続を検索中...",
"echoNameRequired": "意味的接続を検索するには、まずこの行の名前を入力してください。",
"echoLoading": "近いノートを探しています…",
"echoNameRequired": "近いノートを探すには、まずこの行の名前を入力してください。",
"echoNoMatch": "ワークスペースに「{{query}}」を含むノートは見つかりませんでした。",
"echoPopoverTitle": "セマンティック共鳴 🔮",
"echoPopoverTitle": "近いノート",
"echoSearchError": "検索中にエラーが発生しました。",
"echoUpgradeText": "このテーブルをノートブックに変換して、Mementoのニューラル分析を有効にします。",
"echoUpgradeText": "このをノートブックにすると、Mementoが近いノートを見つけます。",
"emptyTable": "テーブルに行がありません。",
"insertCitation": "エディタにリンクを挿入",
"insertDesc": "ノートブックの構造化データを埋め込む",
@@ -4514,9 +4515,9 @@
"keywordMatch": "キーワード",
"linkToNotebook": "ノートブックにリンク",
"loadError": "構造化データの読み込みに失敗しました。",
"localDbTitle": "スタンドアロンデータベース",
"localDbTitle": "このノート内の表",
"namePlaceholder": "名前を入力…",
"noEchoFound": "セマンティック接続は検出されませんでした。",
"noEchoFound": "近いノートは見つかりませんでした。",
"noNotebook": "このブロックにはノートブックが必要です。まずこのノートをノートブックに移動してください。",
"noNotebookDesc": "このブロックはノートブックの構造化ビューを表示します。リンクするノートブックを選択:",
"noSchema": "このノートブックにはまだ構造化ビューがありません。ノートブックヘッダーから設定してください。",
@@ -4528,8 +4529,8 @@
"selectNotebook": "ノートブックにリンク",
"selectOptionsPlaceholder": "カンマ区切りのオプション",
"semanticEcho": "セマンティック共鳴",
"switchToLocalDb": "ローカルデータベースに切り替え",
"turnIntoLabel": "インラインデータベース",
"switchToLocalDb": "このノートの表に戻る",
"turnIntoLabel": "ノート内の表",
"untitled": "無題"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "ノートを検索…",
"selectOptions": "オプション1行に1つ",
"selectOptionsPlaceholder": "未実施\\\n進行中\\\n完了",
"semanticResonances": "セマンティック共鳴",
"semanticResonances": "つながるノート",
"tagApplied": "ブリッジ",
"viewCalendarHint": "カレンダー — 日付別のメモ",
"viewGallery": "ギャラリー",

View File

@@ -407,7 +407,7 @@
"placeholder": "검색",
"searchPlaceholder": "노트 검색...",
"semanticInProgress": "AI 검색 진행 중...",
"semanticTooltip": "AI 의미 검색",
"semanticTooltip": "의미 검색",
"searching": "검색 중...",
"noResults": "검색 결과 없음",
"resultsFound": "{count}개의 노트를 찾았습니다",
@@ -861,7 +861,7 @@
"compareAll": "모두 비교",
"mergeAll": "모두 병합",
"close": "닫기",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % 가까움",
"backToNote": "Revenir à ma note",
"badgeLabel": "메모리 에코",
"bottomCueConsent": "아래에 AI 연결이 있습니다",
@@ -918,7 +918,7 @@
"noContentReturned": "API에서 병합 콘텐츠가 반환되지 않았습니다",
"unknownDate": "알 수 없는 날짜"
},
"defaultInsight": "이 노트들은 의미론적으로 관련이 있는 것 같습니다.",
"defaultInsight": "이 노트들은 서로 맞닿아 있습니다.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "라벨을 정리할 수 없습니다",
"indexingComplete": "인덱싱 완료: {count}개의 노트 처리됨",
"indexingError": "인덱싱 중 오류 발생",
"semanticIndexing": "의미 인덱싱",
"semanticIndexingDescription": "의도 기반 검색을 활성화하기 위해 모든 노트의 벡터를 생성합니다",
"semanticIndexing": "의미 검색용 색인",
"semanticIndexingDescription": "모든 노트를 의미 검색용으로 준비",
"profile": "프로필",
"searchNoResults": "일치하는 설정을 찾을 수 없습니다",
"languageAuto": "언어가 자동으로 설정됨",
@@ -1664,7 +1664,7 @@
"title": "기능",
"description": "AI 기반 기능",
"titleSuggestions": "AI 기반 제목 제안",
"semanticSearch": "임베딩을 사용한 의미 검색",
"semanticSearch": "의미 검색",
"paragraphReformulation": "단락 재구성",
"memoryEcho": "Memory Echo 일일 인사이트",
"notebookOrganization": "노트북 정리",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "검색 인덱스 재구축",
"description": "의미 검색을 개선하기 위해 모든 메모의 임베딩을 재생성합니다.",
"description": "의미 검색을 개선하려면 모든 노트의 색인을 다시 만드세요.",
"button": "인덱스 재구축",
"success": "인덱싱 완료: {count}개의 메모 처리됨",
"failed": "인덱싱 중 오류 발생"
@@ -1984,7 +1984,7 @@
"legendWiki": "노트에 연결",
"mentionShort": "멘션",
"moreNodes": "지도에 +{count}",
"noInbound": "이 노트를 가리키는 수신 wiki 링크가 없습니다.",
"noInbound": "이 노트를 가리키는 다른 노트가 없습니다.",
"noOutbound": "이 노트는 아직 다른 노트에 연결되지 않았습니다.",
"noWikiYet": "다른 노트로의 링크가 아직 없습니다.",
"outboundHelp": "이 노트가 텍스트에서 [[…]]를 사용하여 연결하는 노트.",
@@ -2190,7 +2190,7 @@
"custom": "사용자 정의"
},
"typeDescriptions": {
"scraper": "여러 사이트를 스크랩하고 요약을 생성합니다",
"scraper": "여러 사이트를 고 요약을 만듭니다",
"researcher": "주제에 대한 정보를 검색합니다",
"monitor": "노트북을 감시하고 노트를 분석합니다",
"slideGenerator": "노트에서 PowerPoint 프레젠테이션을 만듭니다.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "예: 화요일 AI 와치",
"description": "설명 (선택 사항)",
"descriptionPlaceholder": "주간 AI 뉴스 요약",
"urlsLabel": "스크랩할 URL",
"urlsLabel": "읽을 페이지 주소",
"urlsOptional": "(선택 사항)",
"sourceNotebook": "감시할 노트북",
"selectNotebook": "노트북을 선택하세요...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "이메일 알림",
"notifyEmailHint": "각 실행 후 에이전트 결과가 포함된 이메일 받기",
"includeImages": "이미지 포함",
"includeImagesHint": "스크래핑된 페이지에서 이미지를 추출하여 생성된 노트에 첨부",
"includeImagesHint": "읽은 페이지 이미지를 노트에 붙입니다",
"back": "뒤로",
"configuration": "구성",
"options": "옵션",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "AI 와치",
"description": "AI 전문 사이트 5곳을 스크랩하여 주간 요약을 생성합니다."
"description": "AI 전문 사이트 5곳을 읽고 주간 요약을 만듭니다."
},
"veilleTech": {
"name": "테크 와치",
"description": "주요 기술 사이트를 스크랩하여 뉴스 요약을 만듭니다."
"description": "주요 기술 사이트를 읽고 뉴스 요약을 만듭니다."
},
"veilleDev": {
"name": "개발 와치",
"description": "개발 사이트를 스크랩하여 새로운 기술과 프레임워크를 요약합니다."
"description": "개발 사이트를 읽고 새로운 기술 요약합니다."
},
"surveillant": {
"name": "노트 관찰자",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "에이전트 도구",
"webSearch": "웹 검색",
"webScrape": "웹 스크랩",
"webScrape": "페이지 읽기",
"noteSearch": "노트 검색",
"noteRead": "노트 읽기",
"noteCreate": "노트 만들기",
@@ -2431,15 +2431,15 @@
"btnLabel": "도움말",
"close": "닫기",
"whatIsAgent": "에이전트란?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "에이전트 사용 방법",
"howToUseContent": "1. **\"새 에이전트\"**를 클릭하세요 (또는 페이지 하단의 **템플릿**에서 시작하세요).",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "고급 모드 (AI 지시어, 최대 반복)",
"advancedContent": "양식 하단의 **\"고급 모드\"**를 클릭하여 추가 설정에 액세스하세요.",
"tools": "사용 가능한 도구 (상세)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "빈도 및 예약",
"frequencyContent": "| 빈도 | 동작\n|-----------|----------\n| **수동** | 직접 \"실행\"을 클릭합니다.",
"targetNotebook": "대상 노트북",
@@ -2447,7 +2447,7 @@
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "팁과 문제 해결",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "에이전트가 수행할 작업 유형을 선택하세요. 각 유형은 다른 기능과 필드를 가집니다.",
"researchTopic": "에이전트가 웹에서 조사할 주제입니다. 더 나은 결과를 위해 구체적으로 작성하세요.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Pro로 업그레이드",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro 포함:",
"proSearch": "100 semantic searches / month",
"proSearch": "월 1,000 AI 크레딧",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "다이어그램 생성",
"featureFlashcards": "AI 플래시카드",
"featureFlashcards": "복습 카드",
"featurePublishEnhance": "AI 게시",
"featureSlides": "슬라이드 생성",
"featureVoice": "음성 전사",
@@ -3100,7 +3100,7 @@
"businessFeature3": "재구성 500회/월",
"businessFeature4": "채팅 메시지 1,000개/월",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "사용자 정의 할당량, SSO, 우선 지원.",
"enterpriseDescription": "사용자 정의 할당량, 팀 전체 한 번 로그인, 우선 지원.",
"contactSales": "영업 문의",
"startCheckout": "시작하기",
"checkoutLoading": "결제 로딩 중…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "구독이 자동으로 갱신됩니다.",
"businessDescription": "팀 및 프로덕트 리더를 위한 요금제.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "팀 전체 한 번 로그인",
"enterpriseFeature3": "전담 지원",
"enterpriseFeature4": "맞춤 결제",
"enterpriseFeature5": "보장된 SLA",
"enterpriseFeature5": "보장된 응답 시간",
"subtitle": "본인에게 맞는 플랜 선택",
"freeDescription": "Memento 체험을 위해",
"freeF1": "30개 시맨틱 검색",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "결제 상태를 가져올 수 없습니다",
"fetchQuotasFailed": "할당량을 가져올 수 없습니다",
"fetchInvoicesFailed": "결제 내역을 불러올 수 없습니다.",
"savePercent": "~17% 절약",
"savePercent": "~{percent}% 절약",
"billedYearTotal": "연 {price}",
"cancelSubscription": "구독 취소",
"changeOffer": "요금제 변경",
"downgradeToFree": "무료 요금제로 돌아가기",
@@ -3379,13 +3380,13 @@
"cta": "문의하기",
"feature0": "Business 전부",
"feature1": "무제한 에이전트",
"feature2": "SSO / SAML",
"feature3": "감사 로그 & SLA",
"feature2": "팀 전체 한 번 로그인",
"feature3": "활동 기록과 보장된 응답 시간",
"feature4": "전담 지원",
"feature5": "라이브 온보딩"
"feature5": "설치 안내"
},
"basicPrice": "무료",
"savePercent": "약 17% 절약",
"savePercent": "약 {percent}% 절약",
"proMonthly": "€9.90",
"proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90",
@@ -3494,7 +3495,7 @@
"sectionDescription": "계정과 관련된 모든 데이터를 영구적이고 되돌릴 수 없게 삭제합니다.",
"whatWillBeDeleted": "다음 항목이 영구적으로 삭제됩니다:",
"item1": "모든 노트, 노트북 및 첨부 파일",
"item2": "모든 pgvector 의미론적 임베딩",
"item2": "노트를 연결하는 색인",
"item3": "모든 BYOK API 키",
"item4": "모든 AI 대화 및 브레인스톰 세션",
"item5": "할당량 및 사용 기록",
@@ -3559,7 +3560,7 @@
"step_features_title": "당신의 AI 슈퍼파워",
"step_features_subtitle": "어디서 시작할지 선택하세요.",
"step_features_cta": "시작합시다!",
"feature_search_title": "시맨틱 검색",
"feature_search_title": "의미로 검색",
"feature_search_desc": "키워드뿐만 아니라 의미로 노트를 찾아보세요.",
"feature_flashcards_title": "AI 플래시카드",
"feature_flashcards_desc": "노트에서 복습 카드를 한 번의 클릭으로 생성하세요.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "아이디어 카드를 클릭하여 하위 아이디어로 확장하고 탐색하세요.",
"hint_brainstorm_export_title": "세션 내보내기",
"hint_brainstorm_export_desc": "전체 브레인스토밍 세션을 선택한 노트북에 구조화된 노트로 내보내세요.",
"hint_insights_clusters_title": "노트 클러스터",
"hint_insights_clusters_desc": "노트가 자동으로 테마 클러스터로 그룹화됩니다. 자세히 보려면 클릭하세요.",
"hint_insights_clusters_title": "노트 주제",
"hint_insights_clusters_desc": "노트가 주제별로 묶여 있습니다. 주제를 누르면 노트를 볼 수 있습니다.",
"hint_insights_bridge_title": "브릿지 노트",
"hint_insights_bridge_desc": "브릿지 노트는 여러 클러스터를 연결하며 중요한 연결이 있어 강조 표시됩니다.",
"hint_insights_refresh_title": "클러스터 새로고침",
"hint_insights_refresh_desc": "노트를 추가한 경우 \"새로고침\"을 클릭하여 클러스터를 다시 계산하세요."
"hint_insights_bridge_desc": "다리 노트는 여러 주제를 잇고, 생각이 어디서 만나는지 보여 줍니다.",
"hint_insights_refresh_title": "주제 업데이트",
"hint_insights_refresh_desc": "노트를 추가했다면 「업데이트」를 눌러 주제를 다시 계산하세요."
},
"blockAction": {
"moveUp": "블록을 위로 이동",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "연결",
"toggleMenu": "메뉴 표시 또는 숨기기",
"subtitle": "지식의 숨겨진 구조 발견",
"subtitle": "노트가 어떻게 이어지는지 보세요",
"resync": "업데이트",
"mapping": "매핑 중…",
"loading": "노트 로딩 중…",
"mappingTitle": "지식 매핑 중…",
"mappingHint": "1~3분 정도 걸릴 수 있습니다. 계속 브라우징할 수 있습니다. 페이지가 자동 업데이트됩니다.",
"analyzeNow": "시맨틱 분석 시작",
"emptyNeedMoreNotes": "의미론적 클러스터링을 잠금 해제하려면 {count}개 노트를 더 추가하세요 (최소 10).",
"embeddingsHint": "AI 인덱싱: {indexed}/{total}노트만.",
"analyzeNow": "주제 업데이트",
"emptyNeedMoreNotes": "주제를 묶으려면 노트를 {count}개 더 추가하세요 (최소 10).",
"embeddingsHint": "{indexed} / {total}개 노트가 주제별로 묶일 준비가 되었습니다.",
"vsGraphHint": "\"링크 맵\"과 다릅니다: 여기서는 AI가 링크가 아닌 의미로 그룹화합니다.",
"openGraphMap": "링크 맵 열기",
"analysisFailed": "분석 실패. AI 설정을 확인하세요.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "노트",
"clusterFallback": "테마 {index}",
"unclusteredNotes": "{count}개 노트가 테마에 할당되지 않았습니다 (그래프에서 숨겨짐).",
"emptyTitle": "지식 클러스터 발견",
"emptyDescription": "\"네트워크 재동기화\"를 클릭하여 노트를 분석하고 숨겨진 연결을 찾으세요",
"emptyTitle": "주제를 살펴보세요",
"emptyDescription": "「업데이트」를 눌러 노트를 주제별로 묶으세요.",
"stats": {
"clusters": "클러스터",
"bridgeNotes": "브리지 노트",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "의미론적 클러스터",
"title": "주제",
"notesCount": "{count}개 노트",
"centralNotes": "중심 노트",
"emptyCluster": "이 클러스터에 노트가 없습니다"
"emptyCluster": "이 주제에 노트가 없습니다"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "친화도 {score}%",
"moreThemes": "+{count}",
"needsResync": "네트워크를 다시 동기화하여 브리지 쌍을 새로고침하세요.",
"scoreHint": "이 노트가 연결하는 두 테마에 대한 평균 의미론적 친화도(코사인 유사도)."
"scoreHint": "이 노트가 는 두 주제에 얼마나 가까운지."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "그래프",
"viewDashboard": "대시보드",
"isolatedClusters": {
"title": "고립된 클러스터 ({count})",
"title": "고립된 주제 ({count})",
"badge": "연결 안 됨",
"empty": "모든 클러스터 연결됨!"
"empty": "모든 주제가 이미 하나 이상의 다리 노트로 연결되어 있습니다."
},
"focusCluster": {
"title": "클러스터 포커스 활성",
"description": "이 테마 클러스터는 {count}개의 보완 노트를 모읍니다. 노트를 클릭하여 여세요.",
"title": "주제 열림",
"description": "이 주제에는 {count}개의 노트가 있습니다. 노트를 클릭하면 열립니다.",
"close": "닫기"
},
"badgeDominant": "주도",
"bridgeCount": "브리지",
"echoTitle": "이 아이디로 계속 돌아옵니다",
"tipClusters": "AI 노트북과 관계없이 의미적 친화도로 노트를 그룹화했습니다.",
"tipClusters": "AI 노트를 주제별로 묶었습니다. 노트북이 달라도 마찬가지입니다.",
"tipClustersAction": "테마를 클릭하여 노트를 보세요. 노트를 클릭하여 여세요.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "노트를 클릭하여 열고 연결을 이해하세요.",
"tipEcho": "메모리 에코는 매우 다른 시기에 작성되었지만 같은 주제를 다루는 두 개의 노트를 감지합니다.",
"tipEchoAction": "두 개의 노트, 같은 아이디어, 다른 순간. 탐색하려면 클릭하세요.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "\"브릿지 노트 만들기\"를 클릭하여 노트를 작성하고 즉시 여세요.",
"tipIsolated": "이 테마들은 고립되어 있습니다: 다른 테마와 연결하는 노트가 없습니다. 관점이 부족할 수 있습니다.",
"tipIsolatedAction": "이 테마들은 나머지 사고와 연결하는 노트가 없습니다.",
"recalcSystem": {
"title": "재계산 시스템",
"statusSynced": "동기화됨",
"scheduledCron": "예약됨",
"lastSync": "마지막 동기화"
"title": "주제 업데이트",
"statusSynced": "최신",
"scheduledCron": "자동 업데이트",
"lastSync": "마지막 업데이트"
},
"resetFocus": "포커스 해제",
"resetFocus": "모두 보기",
"listView": "목록",
"graphAriaLabel": "의미론적 네트워크: {clusters} 클러스터, {notes} 노트, {bridges} 브릿지 노트. 화살표 키로 탐색.",
"listAriaLabel": "접근 가능한 클러스터 목록 (노트와 브릿지 연결 포함)",
"graphAriaLabel": "주제 지도: {clusters}개 주제, {notes} 노트, {bridges}개 다리 노트. 목록으로 전환하면 더 쉽게 이동합니다.",
"listAriaLabel": "주제, 노트, 다리 노트 목록",
"dashboardFilterPlaceholder": "브리지 노트, 테마 필터…",
"legendFilterPlaceholder": "테마 필터…",
"legendShowLess": "접기",
@@ -3896,7 +3897,7 @@
"genericError": "인스턴스로 전송하는 중 오류가 발생했습니다.",
"ignore": "마스터됨",
"processing": "처리 중…",
"processingDetail": "태그, 시맨틱 요약, 임베딩 생성 중.",
"processingDetail": "노트 준비 중: 라벨, 요약, 의미 검색.",
"publishedOn": "{domain}에 게시",
"quitSimulator": "시뮬레이터 닫기",
"realtimeCapture": "날짜: 실시간 캡처",
@@ -4156,7 +4157,7 @@
"match": "로그인",
"memoryEchoDisabled": "메모리 에코가 AI 설정에서 비활성화되어 있습니다.",
"mindMap": "마인드맵",
"mindMapEmpty": "아직 감지된 테마가 없습니다. 시맨틱 분석이 노트를 주제별로 그룹화합니다.",
"mindMapEmpty": "아직 주제가 없습니다. AI가 노트를 주제별로 묶습니다.",
"mindMapOpen": "인사이트 맵 열기 →",
"mindMapUnavailable": "마인드맵을 사용할 수 없습니다.",
"new": "생성된 노트",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "메모에 추가",
"bridge": "브리지 아이디어",
"connect": "시맨틱 링크",
"connect": "노트 연결",
"continue": "계속",
"daily": "저널",
"explore": "테마 탐색",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "두 번째 뇌 한눈에 보기: AI 제안, 빠른 캡처, 다음 단계. 아래 단축키를 사용하여 행동하세요.",
"resumeOpen": "재개",
"review": "복습",
"semanticConnection": "시맨틱 친화도",
"semanticConnection": "가까움",
"sentiment": "감정",
"sentimentDominant": "이번 주 지배적 톤",
"suggestedBridge": "{clusterA}와 {clusterB} 연결",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "유지율, 스트릭, 총 카드 수.",
"gmail": "Gmail에서 동기화된 이메일 캡처.",
"inbox": "노트북에 분류되기를 기다리는 노트.",
"intelligence": "시맨틱 링크, 브리지 아이디어, 에이전트 발견.",
"intelligence": "맞닿는 노트, 다리를 놓는 생각, 에이전트 결과.",
"link-suggestions": "현재 노트에 연결할 구절들.",
"mind-map": "테마 클러스터는 노트 볼륨 기준 크기 조정.",
"next-paths": "최근 작업을 바탕으로 AI가 제안한 다음 단계.",
@@ -4258,7 +4259,7 @@
"resume": "가장 최근 노트를 중단한 곳에서 이어가세요.",
"revision": "간격 반복으로 복습할 플래시카드.",
"sentiment": "이번 주 노트의 감정적 톤.",
"stats": "클러스터, 브리지 노트 인덱싱된 총 노트 수.",
"stats": "주제, 다리를 놓는 노트, 인덱싱된 노트.",
"usage": "남은 AI 크레딧 및 월간 한도."
},
"widgetDone": "완료",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "학습 유지율, 복습 스트릭, 총 카드 수.",
"gmail": "Gmail 통합에서 동기화된 이메일 캡처.",
"inbox": "노트북이 없는 노트. 세컨드 브레인을 정돈하려면 분류하세요.",
"intelligence": "AI 발견: 노트 간 의미론적 연결, 브리지 아이디어 및 에이전트 발견.",
"intelligence": "AI가 찾은 것: 맞닿는 노트, 다리를 놓는 생각, 에이전트 결과.",
"link-suggestions": "현재 작업에 연결할 가치가 있는 다른 노트의 구절들.",
"mind-map": "테마 클러스터는 노트 볼륨 기준 크기 조정. 인사이트에서 탐색하려면 클릭.",
"next-paths": "최근 편집한 노트를 기반으로 한 다음 단계 제안: 재개, 연결, 연동 또는 조사.",
@@ -4284,7 +4285,7 @@
"resume": "최근 업데이트된 노트. 멈췄던 곳에서 계속하세요.",
"revision": "오늘 간격 반복으로 복습할 플래시카드.",
"sentiment": "지난 7일간 편집된 노트의 감정적 톤. 최소 3개의 최근 노트와 AI 활성화가 필요합니다.",
"stats": "시맨틱 인덱스 통계: 활성 테마, 브리지 노트, 인덱싱된 노트.",
"stats": "주제, 다리를 놓는 노트, 인덱싱된 노트.",
"usage": "기능별 월간 AI 크레딧 사용량."
},
"widgetHelpClose": "닫기",
@@ -4319,7 +4320,7 @@
"resume": "여기서 재개",
"revision": "플래시카드",
"sentiment": "감정",
"stats": "시맨틱 통계",
"stats": "주제와 노트",
"usage": "AI 할당량"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "아래 입력란에 붙여넣고 \"연결\"을 클릭하세요. 첫 동기화에서 모든 책과 기사를 가져옵니다.",
"readwiseHelpStep3": "각 책은 「Readwise 📚」 노트북의 노트가 됩니다 — 모든 하이라이트가 정리되어 있습니다.",
"readwiseHelpStep4": "새 하이라이트를 업데이트하려면 여기로 돌아와 \"지금 동기화\"를 클릭하세요.",
"readwiseHelpStep5": "💡 팁: Readwise 노트에서 AI 플래시카드를 만들어(에디터의 🎓 버튼) 독서를 복습하세요.",
"readwiseHelpStep5": "팁: Readwise 노트에서 복습 카드를 만드세요(노트 위쪽의 카드 버튼) 독서를 복습하세요.",
"readwiseInfo": "Readwise는 어떻게 작동하나요?",
"readwiseSynced": "Readwise 동기화 — {{created}}개 생성, {{updated}}개 업데이트",
"readwiseTokenPlaceholder": "Readwise 토큰…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "변환 완료! 연결된 노트북이 생성되었습니다.",
"convertToNotebook": "노트북으로 변환",
"converting": "변환 중…",
"createLocalDb": "독립적인 로컬 데이터베이스 만들기",
"createLocalDb": "이 노트에 표 만들기",
"createNotebook": "노트북 만들기",
"defaultOption1": "옵션 1",
"defaultOption2": "옵션 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "오래된 블록이 제거되었습니다.",
"displayModeGallery": "갤러리",
"displayModeTable": "테이블",
"echoLoading": "의미론적 연결 검색 중...",
"echoNameRequired": "의미론적 연결을 검색하려면 먼저 이 행의 이름을 입력하세요.",
"echoLoading": "가까운 노트를 찾는 중…",
"echoNameRequired": "가까운 노트를 찾으려면 먼저 이 행의 이름을 입력하세요.",
"echoNoMatch": "작업공간에서 \"{{query}}\"가 포함된 노트를 찾을 수 없습니다.",
"echoPopoverTitle": "시맨틱 공명 🔮",
"echoPopoverTitle": "가까운 노트",
"echoSearchError": "검색 중 오류가 발생했습니다.",
"echoUpgradeText": "이 표를 노트북으로 변환하여 Memento의 신경망 분석을 활성화하세요.",
"echoUpgradeText": "이 표를 노트북으로 바꾸면 Memento가 가까운 노트를 찾습니다.",
"emptyTable": "테이블에 행이 없습니다.",
"insertCitation": "에디터에 링크 삽입",
"insertDesc": "노트북의 구조화된 데이터 임베드",
@@ -4514,9 +4515,9 @@
"keywordMatch": "키워드",
"linkToNotebook": "노트북에 연결",
"loadError": "구조화된 데이터 로드 실패.",
"localDbTitle": "독립 데이터베이스",
"localDbTitle": "이 노트의 표",
"namePlaceholder": "이름 입력…",
"noEchoFound": "의미론적 연결이 감지되지 않았습니다.",
"noEchoFound": "가까운 노트를 찾지 못했습니다.",
"noNotebook": "이 블록은 노트북이 필요합니다. 먼저 이 노트를 노트북으로 이동하세요.",
"noNotebookDesc": "이 블록은 노트북의 구조화된 보기를 표시합니다. 연결할 노트북을 선택하세요:",
"noSchema": "이 노트북에는 아직 구조화된 보기가 없습니다. 노트북 헤더에서 설정하세요.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "노트북에 연결",
"selectOptionsPlaceholder": "쉼표로 구분된 옵션",
"semanticEcho": "시맨틱 공명",
"switchToLocalDb": "로컬 데이터베이스로 전환",
"turnIntoLabel": "인라인 데이터베이스",
"switchToLocalDb": "이 노트의 표로 돌아가기",
"turnIntoLabel": "노트 안의 표",
"untitled": "제목 없음"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "노트 검색…",
"selectOptions": "옵션(한 줄에 하나씩)",
"selectOptionsPlaceholder": "할 일\\\n진행 중\\\n완료",
"semanticResonances": "시맨틱 공명",
"semanticResonances": "맞닿는 노트",
"tagApplied": "브리지",
"viewCalendarHint": "캘린더 — 날짜별로 정리된 노트",
"viewGallery": "갤러리",

View File

@@ -407,7 +407,7 @@
"placeholder": "Zoeken",
"searchPlaceholder": "Doorzoek uw notities...",
"semanticInProgress": "AI-zoeken bezig...",
"semanticTooltip": "AI semantisch zoeken",
"semanticTooltip": "Zoeken op betekenis",
"searching": "Zoeken...",
"noResults": "Geen resultaten gevonden",
"resultsFound": "{count} notities gevonden",
@@ -861,7 +861,7 @@
"compareAll": "Alles vergelijken",
"mergeAll": "Alles samenvoegen",
"close": "Sluiten",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % nabijheid",
"backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo",
"bottomCueConsent": "AI-verbindingen hieronder beschikbaar",
@@ -918,7 +918,7 @@
"noContentReturned": "Geen fusie-inhoud ontvangen van API",
"unknownDate": "Onbekende datum"
},
"defaultInsight": "Deze notities lijken semantisch verwant te zijn.",
"defaultInsight": "Deze notities horen bij elkaar.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "Kan labels niet opruimen",
"indexingComplete": "Indexering voltooid: {count} notitie(s) verwerkt",
"indexingError": "Fout bij indexeren",
"semanticIndexing": "Semantische indexering",
"semanticIndexingDescription": "Genereer vectoren voor alle notities om intentiegericht zoeken mogelijk te maken",
"semanticIndexing": "Index voor zoeken op betekenis",
"semanticIndexingDescription": "Alle notities voorbereiden voor zoeken op betekenis",
"profile": "Profiel",
"searchNoResults": "Geen resultaten gevonden",
"languageAuto": "Taal ingesteld op Auto",
@@ -1664,7 +1664,7 @@
"title": "Functies",
"description": "AI-ondersteunde mogelijkheden",
"titleSuggestions": "AI-ondersteunde titelsuggesties",
"semanticSearch": "Semantisch zoeken met embeddings",
"semanticSearch": "Zoeken op betekenis",
"paragraphReformulation": "Alinea herformulering",
"memoryEcho": "Memory Echo dagelijkse inzichten",
"notebookOrganization": "Notitieboek organisatie",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "Zoekindex herbouwen",
"description": "Genereer embeddings opnieuw voor alle notities om semantisch zoeken te verbeteren.",
"description": "De index van alle notities opnieuw opbouwen om zoeken op betekenis te verbeteren.",
"button": "Index herbouwen",
"success": "Indexering voltooid: {count} notities verwerkt",
"failed": "Fout bij indexeren"
@@ -1984,7 +1984,7 @@
"legendWiki": "Koppel aan een notitie",
"mentionShort": "Vermelding",
"moreNodes": "+{count} op kaart",
"noInbound": "Geen inkomende wiki-links wijzen naar deze notitie.",
"noInbound": "Geen andere notitie wijst naar deze.",
"noOutbound": "Deze notitie linkt nog niet naar andere notities.",
"noWikiYet": "Nog geen links naar andere notities.",
"outboundHelp": "Notities waarnaar deze verwijst met [[…]] in de tekst.",
@@ -2190,7 +2190,7 @@
"custom": "Aangepast"
},
"typeDescriptions": {
"scraper": "Schraapt meerdere sites en maakt een samenvatting",
"scraper": "Leest meerdere sites en maakt een samenvatting",
"researcher": "Zoekt naar informatie over een onderwerp",
"monitor": "Bewaakt een notitieboek en analyseert notities",
"slideGenerator": "Creëert een PowerPoint-presentatie van notities",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "bijv. Dinsdag AI Watch",
"description": "Beschrijving (optioneel)",
"descriptionPlaceholder": "Wekelijkse AI-nieuwssamenvatting",
"urlsLabel": "URL's om te schrapen",
"urlsLabel": "Adressen van te lezen paginas",
"urlsOptional": "(optioneel)",
"sourceNotebook": "Notitieboek om te bewaken",
"selectNotebook": "Selecteer een notitieboek...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "E-mailnotificatie",
"notifyEmailHint": "Ontvang een e-mail met de resultaten van de agent na elke uitvoering",
"includeImages": "Afbeeldingen opnemen",
"includeImagesHint": "Afbeeldingen extraheren van gescrapte pagina's en toevoegen aan de gegenereerde notitie",
"includeImagesHint": "Afbeeldingen van de gelezen paginas nemen en aan de notitie toevoegen",
"back": "Terug",
"configuration": "Configuratie",
"options": "Opties",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "AI Watch",
"description": "Schraapt 5 op AI gespecialiseerde sites en genereert een wekelijkse samenvatting."
"description": "Leest 5 AI-sites en schrijft een wekelijkse samenvatting."
},
"veilleTech": {
"name": "Tech Watch",
"description": "Schraapt grote techsites en maakt een nieuwssamenvatting."
"description": "Leest grote techsites en maakt een nieuwssamenvatting."
},
"veilleDev": {
"name": "Dev Watch",
"description": "Schraapt ontwikkelingssites en vat nieuwe tech en frameworks samen."
"description": "Leest ontwikkelingssites en vat samen wat er nieuw is."
},
"surveillant": {
"name": "Notitie-waarnemer",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "Agent-tools",
"webSearch": "Web Zoeken",
"webScrape": "Web Schrapen",
"webScrape": "Webpaginas lezen",
"noteSearch": "Notitie Zoeken",
"noteRead": "Notitie Lezen",
"noteCreate": "Notitie Maken",
@@ -2431,15 +2431,15 @@
"btnLabel": "Hulp",
"close": "Sluiten",
"whatIsAgent": "Wat is een 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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "Hoe gebruik je een agent?",
"howToUseContent": "1. Klik op **\"Nieuwe agent\"** (of begin met een **Sjabloon** onderaan de pagina).",
"types": "Typen agents",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "Geavanceerde modus (AI-instructies, Max iteraties)",
"advancedContent": "Klik onderaan het formulier op **\"Geavanceerde modus\"** voor toegang tot aanvullende instellingen.",
"tools": "Beschikbare tools (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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "Frequentie & planning",
"frequencyContent": "| Frequentie | Gedrag\n|-----------|----------\n| **Handmatig** | U klikt zelf op \"Uitvoeren\".",
"targetNotebook": "Doelnotitieboek",
@@ -2447,7 +2447,7 @@
"templates": "Sjablonen",
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Tips & probleemoplossing",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "Kies het type taak dat de agent zal uitvoeren. Elk type heeft verschillende mogelijkheden en velden.",
"researchTopic": "Het onderwerp dat de agent op het web zal onderzoeken. Wees specifiek voor betere resultaten.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Upgrade naar Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro omvat:",
"proSearch": "100 semantic searches / month",
"proSearch": "1.000 AI-credits / maand",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Diagramgeneratie",
"featureFlashcards": "AI-flashcards",
"featureFlashcards": "Revisiekaarten",
"featurePublishEnhance": "AI-publicatie",
"featureSlides": "Diavoorstelling genereren",
"featureVoice": "Spraaktranscriptie",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 herformuleringen / maand",
"businessFeature4": "1.000 chatberichten / maand",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Aangepaste quota's, SSO, prioriteitsondersteuning.",
"enterpriseDescription": "Aangepaste quota's, eenmalige aanmelding voor het team, prioriteitsondersteuning.",
"contactSales": "Contact verkoop",
"startCheckout": "Aan de slag",
"checkoutLoading": "Checkout laden…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Uw abonnement wordt automatisch verlengd.",
"businessDescription": "Voor teams en productmanagers.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Eenmalige aanmelding voor het hele team",
"enterpriseFeature3": "Toegewijde ondersteuning",
"enterpriseFeature4": "Aangepaste facturering",
"enterpriseFeature5": "Gegarandeerde SLA",
"enterpriseFeature5": "Gegarandeerde reactietijd",
"subtitle": "Kies het plan dat bij je past",
"freeDescription": "Om Memento te ontdekken",
"freeF1": "30 semantische zoekopdrachten",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Facturatiestatus kon niet worden opgehaald",
"fetchQuotasFailed": "Quota konden niet worden opgehaald",
"fetchInvoicesFailed": "Factuurgeschiedenis kon niet worden geladen.",
"savePercent": "Bespaar ~17%",
"savePercent": "Bespaar ~{percent} %",
"billedYearTotal": "of {price} per jaar",
"cancelSubscription": "Abonnement opzeggen",
"changeOffer": "Ander aanbod kiezen",
"downgradeToFree": "Terug naar het gratis aanbod",
@@ -3379,13 +3380,13 @@
"cta": "Neem contact op",
"feature0": "Alles van Business",
"feature1": "Onbeperkte agents",
"feature2": "SSO / SAML",
"feature3": "Auditlogs & SLA",
"feature2": "Eenmalige aanmelding voor het hele team",
"feature3": "Activiteitenlog en gegarandeerde reactietijd",
"feature4": "Dedicated support",
"feature5": "Live onboarding"
"feature5": "Begeleide installatie"
},
"basicPrice": "Gratis",
"savePercent": "Bespaar ~17%",
"savePercent": "Bespaar ~{percent} %",
"proMonthly": "€9,90",
"proAnnualMonthly": "€8,25",
"businessMonthly": "€29,90",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Verwijder je account en alle bijbehorende gegevens definitief en onomkeerbaar.",
"whatWillBeDeleted": "Het volgende wordt definitief verwijderd:",
"item1": "Alle notities, notitieboeken en bijlagen",
"item2": "Alle pgvector semantische embeddings",
"item2": "De index die je notities verbindt",
"item3": "Alle BYOK API-sleutels",
"item4": "Alle AI-gesprekken en brainstormsessies",
"item5": "Quota- en gebruiksgeschiedenis",
@@ -3559,7 +3560,7 @@
"step_features_title": "Uw AI-superkrachten",
"step_features_subtitle": "Kies waar u wilt beginnen.",
"step_features_cta": "Aan de slag!",
"feature_search_title": "Semantisch zoeken",
"feature_search_title": "Zoeken op betekenis",
"feature_search_desc": "Vind elke notitie op betekenis, niet alleen op trefwoorden.",
"feature_flashcards_title": "AI-flashcards",
"feature_flashcards_desc": "Genereer revisiekaarten uit uw notities met één klik.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Klik op een idee-kaart om deze uit te breiden met sub-ideeën en verder te verkennen.",
"hint_brainstorm_export_title": "Sessie exporteren",
"hint_brainstorm_export_desc": "Exporteer de hele brainstormsessie als gestructureerde notitie naar het gekozen carnet.",
"hint_insights_clusters_title": "Notitie-clusters",
"hint_insights_clusters_desc": "Uw notities worden automatisch gegroepeerd in thematische clusters. Klik voor details.",
"hint_insights_clusters_title": "Notitiethemas",
"hint_insights_clusters_desc": "Je notities zijn gegroepeerd per thema. Klik op een thema om de notities te zien.",
"hint_insights_bridge_title": "Brugnotities",
"hint_insights_bridge_desc": "Brugnotities verbinden meerdere clusters en zijn gemarkeerd omdat ze belangrijke verbindingen bevatten.",
"hint_insights_refresh_title": "Clusters vernieuwen",
"hint_insights_refresh_desc": "Als u nieuwe notities heeft toegevoegd, klikt u op \"Vernieuwen\" om clusters te herberekenen."
"hint_insights_bridge_desc": "Brugnotities verbinden meerdere themas. Ze tonen waar je ideeën elkaar kruisen.",
"hint_insights_refresh_title": "Themas bijwerken",
"hint_insights_refresh_desc": "Als je notities hebt toegevoegd, klik op «Bijwerken» om de themas opnieuw te berekenen."
},
"blockAction": {
"moveUp": "Blok omhoog verplaatsen",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "Verbanden",
"toggleMenu": "Menu tonen of verbergen",
"subtitle": "Ontdek de verborgen architectuur van je kennis",
"subtitle": "Zie hoe je notities samenhangen",
"resync": "Bijwerken",
"mapping": "In kaart brengen…",
"loading": "Notizen laden…",
"mappingTitle": "Je kennis in kaart brengen…",
"mappingHint": "Dit kan één tot drie minuten duren. U kunt blijven browsen; de pagina wordt automatisch bijgewerkt.",
"analyzeNow": "Semantische analyse starten",
"emptyNeedMoreNotes": "Voeg {count} notities meer toe om semantische clustering te ontgrendelen (minimum 10).",
"embeddingsHint": "Slechts {indexed} van {total} notities geïndexeerd voor AI.",
"analyzeNow": "Thema's bijwerken",
"emptyNeedMoreNotes": "Voeg {count} notities meer toe om uw thema's te groeperen (minimum 10).",
"embeddingsHint": "Slechts {indexed} van {total} notities zijn klaar om per thema te groeperen.",
"vsGraphHint": "Dit is niet de \"Link-kaart\": hier groepeert de AI op betekenis, niet op links.",
"openGraphMap": "Linkkaart openen",
"analysisFailed": "Analyse mislukt. Controleer je AI-instellingen.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notities",
"clusterFallback": "Thema {index}",
"unclusteredNotes": "{count} notities niet toegewezen aan een thema (verborgen in de grafiek).",
"emptyTitle": "Ontdek je kennisclusters",
"emptyDescription": "Klik op \"Netwerk opnieuw synchroniseren\" om uw notities te analyseren en verborgen verbanden te vinden",
"emptyTitle": "Ontdek je themas",
"emptyDescription": "Klik op «Bijwerken» om je notities per thema te groeperen.",
"stats": {
"clusters": "Clusters",
"bridgeNotes": "Brugnotities",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "Semantische clusters",
"title": "Themas",
"notesCount": "{count} notities",
"centralNotes": "Centrale notities",
"emptyCluster": "Geen notities in dit cluster"
"emptyCluster": "Geen notities in dit thema"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Affiniteit {score}%",
"moreThemes": "+{count}",
"needsResync": "Hersynchroniseer het netwerk om brugparen te vernieuwen.",
"scoreHint": "Gemiddelde semantische affiniteit tot de twee thema's die deze notitie overbrugt (cosinusgelijkenis)."
"scoreHint": "Hoe dicht deze notitie bij de twee themas ligt die ze verbindt."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Graaf",
"viewDashboard": "Dashboard",
"isolatedClusters": {
"title": "Geïsoleerde clusters ({count})",
"title": "Geïsoleerde themas ({count})",
"badge": "Niet verbonden",
"empty": "Alle clusters zijn verbonden!"
"empty": "Al je themas zijn al verbonden door minstens één brugnotitie."
},
"focusCluster": {
"title": "Clusterfocus actief",
"description": "Dit thematische cluster verzamelt {count} aanvullende notities. Klik op een notitie om deze te openen.",
"title": "Thema geopend",
"description": "Dit thema bevat {count} notities. Klik op een notitie om die te openen.",
"close": "Sluiten"
},
"badgeDominant": "Dominant",
"bridgeCount": "brug(en)",
"echoTitle": "U keert steeds terug naar dit idee",
"tipClusters": "De AI groepeerde uw notities op semantische affiniteit, ongeacht het carnet.",
"tipClusters": "De AI groepeerde je notities per thema, ook over notitieboeken heen.",
"tipClustersAction": "Klik op een thema om de notities te zien. Klik op een notitie om deze te openen.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Klik op een notitie om deze te openen en de verbinding te begrijpen.",
"tipEcho": "Memory Echo detecteert twee notities die op zeer verschillende momenten zijn geschreven maar dezelfde thema behandelen.",
"tipEchoAction": "Twee notities, hetzelfde idee, verschillende momenten. Klik om te verkennen.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Klik op \"Brugnotitie maken\" om de notitie te schrijven en direct te openen.",
"tipIsolated": "Deze thema's zijn geïsoleerd: geen notitie verbindt ze met de andere. Misschien ontbreekt een perspectief.",
"tipIsolatedAction": "Deze thema's hebben geen verbindende notitie met de rest van uw denken.",
"recalcSystem": {
"title": "Herberekeningssysteem",
"statusSynced": "Gesynchroniseerd",
"scheduledCron": "Gepland",
"lastSync": "Laatste sync"
"title": "Thema-update",
"statusSynced": "Bijgewerkt",
"scheduledCron": "Automatische update",
"lastSync": "Laatste update"
},
"resetFocus": "Focus resetten",
"resetFocus": "Alles tonen",
"listView": "Lijst",
"graphAriaLabel": "Semantisch netwerk: {clusters} clusters, {notes} notities, {bridges} brugnotities. Pijltjestoetsen.",
"listAriaLabel": "Toegankelijke clusterlijst met notities en brugverbindingen",
"graphAriaLabel": "Themenkaart: {clusters} themas, {notes} notities, {bridges} brugnotities. Schakel naar Lijst om makkelijker te navigeren.",
"listAriaLabel": "Lijst van themas, notities en brugnotities",
"dashboardFilterPlaceholder": "Brugnotities, thema's filteren…",
"legendFilterPlaceholder": "Thema's filteren…",
"legendShowLess": "Minder weergeven",
@@ -3896,7 +3897,7 @@
"genericError": "Er is een fout opgetreden bij het verzenden naar uw instantie.",
"ignore": "onder de knie",
"processing": "Verwerken…",
"processingDetail": "Tags, semantische samenvatting en embeddings genereren.",
"processingDetail": "Notitie voorbereiden: labels, samenvatting, zoeken op betekenis.",
"publishedOn": "Gepubliceerd op {domain}",
"quitSimulator": "Simulator sluiten",
"realtimeCapture": "Datum: live vastleggen",
@@ -4156,7 +4157,7 @@
"match": "Inloggen",
"memoryEchoDisabled": "Memory Echo is uitgeschakeld in uw AI-instellingen.",
"mindMap": "Mindmap",
"mindMapEmpty": "Nog geen thema's gedetecteerd. Semantische analyse groepeert uw notities per onderwerp.",
"mindMapEmpty": "Nog geen thema's. De AI groepeert uw notities per onderwerp.",
"mindMapOpen": "Inzichtkaart openen →",
"mindMapUnavailable": "Mindmap niet beschikbaar.",
"new": "Notities aangemaakt",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "Toevoegen aan notitie",
"bridge": "Brugidee",
"connect": "Semantische link",
"connect": "Een notitie koppelen",
"continue": "Doorgaan",
"daily": "Journaal",
"explore": "Thema verkennen",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Uw second brain in één oogopslag: AI-suggesties, snelle invoer en vervolgstappen. Gebruik de snelkoppelingen hieronder om in actie te komen.",
"resumeOpen": "Hervatten",
"review": "Herhalen",
"semanticConnection": "Semantische affiniteit",
"semanticConnection": "Nabijheid",
"sentiment": "Stemming",
"sentimentDominant": "Dominante toon deze week",
"suggestedBridge": "Verbindt {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retentie, reeks en totaal aantal kaarten.",
"gmail": "E-mailopnames gesynchroniseerd via Gmail.",
"inbox": "Notities die wachten om in notitieboeken te worden ingedeeld.",
"intelligence": "Semantische links, brugideeën en agent-ontdekkingen.",
"intelligence": "Notities die elkaar raken, ideeën die een brug slaan en resultaten van agenten.",
"link-suggestions": "Passages om te koppelen in uw huidige notitie.",
"mind-map": "Thematische clusters, gegroepeerd op notitievolume.",
"next-paths": "AI-voorgestelde volgende stappen op basis van je laatste werk.",
@@ -4258,7 +4259,7 @@
"resume": "Vervolg uw meest recente notities waar u gebleven was.",
"revision": "Flashcards die klaarstaan voor gespreide herhaling.",
"sentiment": "Emotionele toon van uw notities deze week.",
"stats": "Clusters, brugnotities en totaal geïndexeerde notities.",
"stats": "Thema's, verbindende notities en geïndexeerde notities.",
"usage": "Resterende AI-kredieten en maandlimieten."
},
"widgetDone": "Klaar",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Leerretentie, herhalingsreeks en totaal aantal kaarten.",
"gmail": "E-mailopnames gesynchroniseerd via Gmail-integratie.",
"inbox": "Notities zonder notitieboek. Berg ze op om uw second brain netjes te houden.",
"intelligence": "AI-ontdekkingen: semantische links tussen notities, brugideeën en agentbevindingen.",
"intelligence": "Wat de AI vond: notities die elkaar raken, ideeën die een brug slaan en resultaten van agenten.",
"link-suggestions": "Passages uit andere notities die de moeite waard zijn om in uw huidige werk te koppelen.",
"mind-map": "Thematische clusters, gegroepeerd op notitievolume. Klik om te verkennen in Inzichten.",
"next-paths": "Voorgestelde vervolgstappen op basis van uw laatst bewerkte notitie: hervatten, koppelen, verbinden of onderzoeken.",
@@ -4284,7 +4285,7 @@
"resume": "Uw recentst bijgewerkte notities. Ga verder waar u gebleven was.",
"revision": "Vandaag vervallen flashcards voor gespreide herhaling.",
"sentiment": "Emotionele toon van notities die in de afgelopen 7 dagen zijn bewerkt. Vereist minimaal 3 recente notities en ingeschakelde AI.",
"stats": "Semantische indexstatistieken: actieve thema's, brugnotities, totaal geïndexeerde notities.",
"stats": "Aantal thema's, verbindende notities en geïndexeerde notities.",
"usage": "Maandelijks AI-kredietgebruik per functie."
},
"widgetHelpClose": "Sluiten",
@@ -4319,7 +4320,7 @@
"resume": "Hier hervatten",
"revision": "Flashcards",
"sentiment": "Stemming",
"stats": "Semantische statistieken",
"stats": "Thema's en notities",
"usage": "AI-quota"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Plak het in het veld hieronder en klik op \"Verbinden\". De eerste synchronisatie importeert al uw boeken en artikelen.",
"readwiseHelpStep3": "Elk boek wordt een notitie in een «Readwise 📚»-notitieboek — met al uw highlights georganiseerd.",
"readwiseHelpStep4": "Om nieuwe markeringen bij te werken, kom hier terug en klik op \"Nu synchroniseren\".",
"readwiseHelpStep5": "💡 Tip: maak AI-flashcards vanuit een Readwise-notitie (🎓-knop in de editor) om uw leeswerk te herhalen.",
"readwiseHelpStep5": "Tip: maak revisiekaarten vanuit een Readwise-notitie (knop voor kaarten bovenaan de notitie) om uw leeswerk te herhalen.",
"readwiseInfo": "Hoe werkt Readwise?",
"readwiseSynced": "Readwise synchronisatie — {{created}} aangemaakt, {{updated}} bijgewerkt",
"readwiseTokenPlaceholder": "Readwise-token…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversie voltooid! Gekoppeld notitieboek aangemaakt.",
"convertToNotebook": "Naar notitieboek converteren",
"converting": "Converteren…",
"createLocalDb": "Maak een zelfstandige lokale database",
"createLocalDb": "Maak een tabel in deze notitie",
"createNotebook": "Notitieboek maken",
"defaultOption1": "Optie 1",
"defaultOption2": "Optie 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Verouderd blok verwijderd.",
"displayModeGallery": "Galerij",
"displayModeTable": "Tafel",
"echoLoading": "Zoeken naar semantische verbindingen...",
"echoNameRequired": "Voer eerst een naam in voor deze rij om naar semantische verbindingen te zoeken.",
"echoLoading": "Zoeken naar nabije notities…",
"echoNameRequired": "Voer eerst een naam in voor deze rij om nabije notities te zoeken.",
"echoNoMatch": "Geen notities met \"{{query}}\" gevonden in uw werkruimte.",
"echoPopoverTitle": "Semantische resonanties 🔮",
"echoPopoverTitle": "Dichte notities",
"echoSearchError": "Er is een fout opgetreden tijdens het zoeken.",
"echoUpgradeText": "Converteer deze tabel naar een notitieboek om Memento's neurale analyse te activeren.",
"echoUpgradeText": "Zet deze tabel om in een notitieboek zodat Memento dichte notities vindt.",
"emptyTable": "Geen rijen in de tabel.",
"insertCitation": "Link in editor invoegen",
"insertDesc": "Sluit de gestructureerde gegevens van uw notitieboek in",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Trefwoord",
"linkToNotebook": "Koppel aan een notitieboek",
"loadError": "Fout bij laden van gestructureerde gegevens.",
"localDbTitle": "Zelfstandige database",
"localDbTitle": "Tabel in deze notitie",
"namePlaceholder": "Naam invoeren…",
"noEchoFound": "Geen semantische verbindingen gedetecteerd.",
"noEchoFound": "Geen nabije notities gevonden.",
"noNotebook": "Dit blok vereist een notitieboek. Verplaats deze notitie eerst naar een notitieboek.",
"noNotebookDesc": "Dit blok toont de gestructureerde weergave van een notitieboek. Kies het notitieboek om te koppelen:",
"noSchema": "Dit notitieboek heeft nog geen gestructureerde weergave. Stel deze in vanuit de koptekst van het notitieboek.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Koppel aan een notitieboek",
"selectOptionsPlaceholder": "Opties gescheiden door komma's",
"semanticEcho": "Semantische resonanties",
"switchToLocalDb": "Schakel naar lokale database",
"turnIntoLabel": "Inline database",
"switchToLocalDb": "Terug naar de tabel van deze notitie",
"turnIntoLabel": "Tabel in de notitie",
"untitled": "Naamloos"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Een notitie zoeken…",
"selectOptions": "Opties (één per regel)",
"selectOptionsPlaceholder": "Te doen\\\nIn behandeling\\\nKlaar",
"semanticResonances": "Semantische resonanties",
"semanticResonances": "Notities die bij elkaar horen",
"tagApplied": "bruggen",
"viewCalendarHint": "Kalender — je notities geordend op datum",
"viewGallery": "Galerij",

View File

@@ -407,7 +407,7 @@
"placeholder": "Szukaj",
"searchPlaceholder": "Przeszukaj swoje notatki...",
"semanticInProgress": "Wyszukiwanie semantyczne AI...",
"semanticTooltip": "Wyszukiwanie semantyczne AI",
"semanticTooltip": "Szukanie po sensie",
"searching": "Wyszukiwanie...",
"noResults": "Nie znaleziono wyników",
"resultsFound": "Znaleziono {count} notatek",
@@ -861,7 +861,7 @@
"compareAll": "Porównaj wszystko",
"mergeAll": "Połącz wszystko",
"close": "Zamknij",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % bliskości",
"backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo",
"bottomCueConsent": "Połączenia AI dostępne poniżej",
@@ -918,7 +918,7 @@
"noContentReturned": "Brak zawartości fuzji z API",
"unknownDate": "Nieznana data"
},
"defaultInsight": "Te notatki wydają się semantycznie powiązane.",
"defaultInsight": "Te notatki do siebie pasują.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "Nie udało się wyczyścić etykiet",
"indexingComplete": "Indeksowanie zakończone: przetworzono {count} notatek",
"indexingError": "Błąd podczas indeksowania",
"semanticIndexing": "Indeksowanie semantyczne",
"semanticIndexingDescription": "Generuj wektory dla wszystkich notatek, aby umożliwić wyszukiwanie oparte na intencji",
"semanticIndexing": "Indeks wyszukiwania według sensu",
"semanticIndexingDescription": "Przygotuj wszystkie notatki do wyszukiwania według sensu",
"profile": "Profil",
"searchNoResults": "Nie znaleziono wyników",
"languageAuto": "Język ustawiony na Auto",
@@ -1664,7 +1664,7 @@
"title": "Funkcje",
"description": "Możliwości wspomagane przez AI",
"titleSuggestions": "Sugestie tytułów wspomagane przez AI",
"semanticSearch": "Wyszukiwanie semantyczne z embeddingami",
"semanticSearch": "Wyszukiwanie według sensu",
"paragraphReformulation": "Reformulowanie akapitów",
"memoryEcho": "Codzienne spostrzeżenia Memory Echo",
"notebookOrganization": "Organizacja notatników",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "Przebuduj indeks wyszukiwania",
"description": "Regeneruj embeddingi dla wszystkich notatek, aby poprawić wyszukiwanie semantyczne.",
"description": "Przebuduj indeks wszystkich notatek, aby poprawić wyszukiwanie według sensu.",
"button": "Przebuduj indeks",
"success": "Indeksowanie zakończone: przetworzono {count} notatek",
"failed": "Błąd podczas indeksowania"
@@ -1984,7 +1984,7 @@
"legendWiki": "Połącz z notatką",
"mentionShort": "Wzmianka",
"moreNodes": "+{count} na mapie",
"noInbound": "Żadne przychodzące linki wiki nie wskazują na tę notatkę.",
"noInbound": "Żadna inna notatka nie wskazuje na tę.",
"noOutbound": "Ta notatka nie łączy się jeszcze z innymi notatkami.",
"noWikiYet": "Brak linków do innych notatek.",
"outboundHelp": "Notatki, do których ta odwołuje się, używając [[…]] w tekście.",
@@ -2190,7 +2190,7 @@
"custom": "Niestandardowy"
},
"typeDescriptions": {
"scraper": "Pobiera dane z wielu stron i tworzy podsumowanie",
"scraper": "Czyta kilka stron i robi podsumowanie",
"researcher": "Wyszukuje informacje na dany temat",
"monitor": "Obserwuje notatnik i analizuje notatki",
"slideGenerator": "Tworzy prezentację programu PowerPoint z notatek",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "np. Wtorkowy Przegląd AI",
"description": "Opis (opcjonalnie)",
"descriptionPlaceholder": "Tygodniowe podsumowanie wiadomości AI",
"urlsLabel": "Adresy URL do pobrania",
"urlsLabel": "Adresy stron do przeczytania",
"urlsOptional": "(opcjonalnie)",
"sourceNotebook": "Notatnik do obserwacji",
"selectNotebook": "Wybierz notatnik...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Powiadomienie e-mail",
"notifyEmailHint": "Otrzymuj e-mail z wynikami agenta po każdym uruchomieniu",
"includeImages": "Uwzględnij obrazy",
"includeImagesHint": "Wyodrębnij obrazy ze zeskrapowanych stron i dołącz do wygenerowanej notatki",
"includeImagesHint": "Weź obrazy z przeczytanych stron i dołącz do notatki",
"back": "Wstecz",
"configuration": "Konfiguracja",
"options": "Opcje",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "Przegląd AI",
"description": "Pobiera dane z 5 stron specjalizujących się w AI i generuje tygodniowe podsumowanie."
"description": "Czyta 5 stron o AI i pisze tygodniowe podsumowanie."
},
"veilleTech": {
"name": "Przegląd technologiczny",
"description": "Pobiera dane z dużych portali technologicznych i tworzy podsumowanie wiadomości."
"description": "Czyta duże portale technologiczne i pisze podsumowanie wiadomości."
},
"veilleDev": {
"name": "Przegląd deweloperski",
"description": "Pobiera dane z portali dla programistów i podsumowuje nowe technologie i frameworki."
"description": "Czyta portale dla programistów i podsumowuje nowości."
},
"surveillant": {
"name": "Obserwator notatek",
@@ -2431,15 +2431,15 @@
"btnLabel": "Pomoc",
"close": "Zamknij",
"whatIsAgent": "Czym jest 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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "Jak używać agenta?",
"howToUseContent": "1. Kliknij **„Nowy agent\"** (lub zacznij od **Szablonu** na dole strony).",
"types": "Typy agentów",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "Tryb zaawansowany (Instrukcje AI, Maks. iteracje)",
"advancedContent": "Kliknij na **„Tryb zaawansowany\"** na dole formularza, aby uzyskać dostęp do dodatkowych ustawień.",
"tools": "Dostępne narzędzia (szczegóły)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "Częstotliwość i harmonogram",
"frequencyContent": "| Częstotliwość | Zachowanie\n|-----------|----------\n| **Ręcznie** | Klikasz samodzielnie \"Uruchom\".",
"targetNotebook": "Docelowy notatnik",
@@ -2447,7 +2447,7 @@
"templates": "Szablony",
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Porady i rozwiązywanie problemów",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "Wybierz typ zadania, które będzie wykonywał agent. Każdy typ ma różne możliwości i pola.",
"researchTopic": "Temat, który agent zbada w internecie. Bądź konkretny, aby uzyskać lepsze wyniki.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Ulepsz do Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro obejmuje:",
"proSearch": "100 semantic searches / month",
"proSearch": "1000 kredytów AI / miesiąc",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Generowanie diagramu",
"featureFlashcards": "Fiszki AI",
"featureFlashcards": "Karty powtórek",
"featurePublishEnhance": "Publikacja AI",
"featureSlides": "Generowanie slajdów",
"featureVoice": "Transkrypcja głosowa",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 przeformułowań / miesiąc",
"businessFeature4": "1 000 wiadomości czatu / miesiąc",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Niestandardowe limity, SSO, wsparcie priorytetowe.",
"enterpriseDescription": "Niestandardowe limity, jedno logowanie dla zespołu, wsparcie priorytetowe.",
"contactSales": "Kontakt ze sprzedażą",
"startCheckout": "Rozpocznij",
"checkoutLoading": "Ładowanie płatności…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Twoja subskrypcja odnawia się automatycznie.",
"businessDescription": "Dla zespołów i kierowników produktu.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Jedno logowanie dla całego zespołu",
"enterpriseFeature3": "Dedykowane wsparcie",
"enterpriseFeature4": "Niestandardowe fakturowanie",
"enterpriseFeature5": "Gwarantowane SLA",
"enterpriseFeature5": "Gwarantowany czas odpowiedzi",
"subtitle": "Wybierz plan odpowiedni dla siebie",
"freeDescription": "Aby odkryć Memento",
"freeF1": "30 wyszukiwań semantycznych",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Nie udało się pobrać statusu rozliczeń",
"fetchQuotasFailed": "Nie udało się pobrać limitów",
"fetchInvoicesFailed": "Nie udało się załadować historii rozliczeń.",
"savePercent": "Oszczędź ~17%",
"savePercent": "Oszczędź ~{percent} %",
"billedYearTotal": "czyli {price} rocznie",
"cancelSubscription": "Anuluj subskrypcję",
"changeOffer": "Zmień ofertę",
"downgradeToFree": "Wróć do oferty darmowej",
@@ -3379,13 +3380,13 @@
"cta": "Porozmawiajmy",
"feature0": "Wszystko z Business",
"feature1": "Nielimitowani agenci",
"feature2": "SSO / SAML",
"feature3": "Audit logi i SLA",
"feature2": "Jedno logowanie dla całego zespołu",
"feature3": "Dziennik aktywności i gwarantowany czas odpowiedzi",
"feature4": "Dedykowane wsparcie",
"feature5": "Onboarding na żywo"
"feature5": "Pomoc przy starcie"
},
"basicPrice": "Za darmo",
"savePercent": "Oszczędź ~17%",
"savePercent": "Oszczędź ~{percent} %",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Trwale i bezpowrotnie usuń swoje konto i wszystkie powiązane dane.",
"whatWillBeDeleted": "Następujące elementy zostaną trwale usunięte:",
"item1": "Wszystkie notatki, notatniki i załączniki",
"item2": "Wszystkie osadzenia semantyczne pgvector",
"item2": "Indeks, który łączy Twoje notatki",
"item3": "Wszystkie klucze API BYOK",
"item4": "Wszystkie rozmowy AI i sesje burzy mózgów",
"item5": "Historia limitów i użycia",
@@ -3559,7 +3560,7 @@
"step_features_title": "Twoje supermoce AI",
"step_features_subtitle": "Wybierz, od czego zacząć.",
"step_features_cta": "Zaczynamy!",
"feature_search_title": "Wyszukiwanie semantyczne",
"feature_search_title": "Szukanie po sensie",
"feature_search_desc": "Znajdź każdą notatkę według znaczenia, nie tylko słów kluczowych.",
"feature_flashcards_title": "Fiszki AI",
"feature_flashcards_desc": "Generuj karty powtórek z notatek jednym kliknięciem.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Kliknij kartę pomysłu, aby ją rozwinąć podpomysłami i zbadać.",
"hint_brainstorm_export_title": "Eksportuj sesję",
"hint_brainstorm_export_desc": "Wyeksportuj całą sesję burzy mózgów jako ustrukturyzowaną notatkę do wybranego carnecu.",
"hint_insights_clusters_title": "Klastry notatek",
"hint_insights_clusters_desc": "Twoje notatki są automatycznie grupowane w klastry tematyczne. Kliknij, aby zobaczyć szczegóły.",
"hint_insights_clusters_title": "Motywy notatek",
"hint_insights_clusters_desc": "Twoje notatki są pogrupowane według motywów. Kliknij motyw, aby zobaczyć notatki.",
"hint_insights_bridge_title": "Notatki łączące",
"hint_insights_bridge_desc": "Notatki łączące łączą wiele klastrów i są wyróżnione, bo zawierają ważne powiązania.",
"hint_insights_refresh_title": "Odśwież klastry",
"hint_insights_refresh_desc": "Jeśli dodałeś nowe notatki, kliknij „Odśwież\", aby przeliczyć klastry ponownie."
"hint_insights_bridge_desc": "Notatki-mosty łączą kilka motywów. Pokazują, gdzie idee się krzyżują.",
"hint_insights_refresh_title": "Aktualizuj motywy",
"hint_insights_refresh_desc": "Jeśli dodałeś notatki, kliknij «Aktualizuj», aby przeliczyć motywy."
},
"blockAction": {
"moveUp": "Przesuń blok w górę",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "Powiązania",
"toggleMenu": "Pokaż lub ukryj menu",
"subtitle": "Odkryj ukrytą architekturę swojej wiedzy",
"subtitle": "Zobacz, jak łączą się Twoje notatki",
"resync": "Aktualizuj",
"mapping": "Mapowanie…",
"loading": "Ładowanie notatek…",
"mappingTitle": "Mapowanie Twojej wiedzy…",
"mappingHint": "To może zająć od jednej do trzech minut. Możesz dalej przeglądać; strona zaktualizuje się automatycznie.",
"analyzeNow": "Rozpocznij analizę semantyczną",
"emptyNeedMoreNotes": "Dodaj jeszcze {count} notatek, aby odblokować klasteryzację semantyczną (minimum 10).",
"embeddingsHint": "Tylko {indexed} z {total} notatek zaindeksowanych dla AI.",
"analyzeNow": "Zaktualizuj tematy",
"emptyNeedMoreNotes": "Dodaj jeszcze {count} notatek, aby pogrupować tematy (minimum 10).",
"embeddingsHint": "Tylko {indexed} z {total} notatek jest gotowych do grupowania według motywów.",
"vsGraphHint": "To nie „Mapa linków\": tutaj AI grupuje wg znaczenia, nie linków.",
"openGraphMap": "Otwórz mapę linków",
"analysisFailed": "Analiza nieudana. Sprawdź ustawienia AI.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notatki",
"clusterFallback": "Temat {index}",
"unclusteredNotes": "{count} notatek nie przypisano do żadnego motywu (ukryte na grafie).",
"emptyTitle": "Odkryj swoje klastry wiedzy",
"emptyDescription": "Kliknij „Ponownie synchronizuj sieć\", aby przeanalizować notatki i znaleźć ukryte powiązania",
"emptyTitle": "Odkryj swoje motywy",
"emptyDescription": "Kliknij «Aktualizuj», aby pogrupować notatki według motywów.",
"stats": {
"clusters": "Klastry",
"bridgeNotes": "Notatki-pomosty",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "Klastry semantyczne",
"title": "Motywy",
"notesCount": "{count} notatek",
"centralNotes": "Notatki centralne",
"emptyCluster": "Brak notatek w tym klastrze"
"emptyCluster": "Brak notatek w tym motywie"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Pokrewieństwo {score}%",
"moreThemes": "+{count}",
"needsResync": "Ponownie zsynchronizuj sieć, aby odświeżyć pary pomostowe.",
"scoreHint": "Średnie podobieństwo semantyczne do dwóch motywów, które łączy ta notatka (podobieństwo cosinusowe)."
"scoreHint": "Jak blisko ta notatka jest dwóch motywów, które łączy."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Graf",
"viewDashboard": "Panel",
"isolatedClusters": {
"title": "Odizolowane klastry ({count})",
"title": "Odizolowane motywy ({count})",
"badge": "Niepowiązany",
"empty": "Wszystkie klastry są połączone!"
"empty": "Wszystkie motywy są już połączone przynajmniej jedną notatką-mostem."
},
"focusCluster": {
"title": "Fokus klastra aktywny",
"description": "Ten klaster tematyczny gromadzi {count} uzupełniających notatek. Kliknij notatkę, aby ją otworzyć.",
"title": "Motyw otwarty",
"description": "Ten motyw zbiera {count} notatek. Kliknij notatkę, aby ją otworzyć.",
"close": "Zamknij"
},
"badgeDominant": "Dominujący",
"bridgeCount": "most(ów)",
"echoTitle": "Ciągle wracasz do tego pomysłu",
"tipClusters": "AI pogrupował twoje notatki według powinowactwa semantycznego, niezależnie od carnecu.",
"tipClusters": "AI pogrupowało twoje notatki według motywów, także w różnych notesach.",
"tipClustersAction": "Kliknij motyw, aby zobaczyć notatki. Kliknij notatkę, aby ją otworzyć.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Kliknij notatkę, aby ją otworzyć i zrozumieć powiązanie.",
"tipEcho": "Memory Echo wykrywa dwie notatki napisane w bardzo różnym czasie, które poruszają ten sam temat.",
"tipEchoAction": "Dwie notatki, ten sam pomysł, różne momenty. Kliknij, aby zbadać.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Kliknij „Utwórz notatkę łączącą\", aby napisać i natychmiast otworzyć.",
"tipIsolated": "Te motywy są odizolowane: żadna notatka nie łączy ich z resztą. Być może brakuje perspektywy.",
"tipIsolatedAction": "Te motywy nie mają notatki łączącej je z resztą Twojego myślenia.",
"recalcSystem": {
"title": "System przeliczania",
"statusSynced": "Zsynchronizowano",
"scheduledCron": "Zaplanowano",
"lastSync": "Ostatnia sync"
"title": "Aktualizacja motywów",
"statusSynced": "Aktualne",
"scheduledCron": "Automatyczna aktualizacja",
"lastSync": "Ostatnia aktualizacja"
},
"resetFocus": "Resetuj fokus",
"resetFocus": "Pokaż wszystko",
"listView": "Lista",
"graphAriaLabel": "Sieć semantyczna: {clusters} klastrów, {notes} notatek, {bridges} notatek łączących. Strzałki do nawigacji.",
"listAriaLabel": "Dostępna lista klastrów z notatkami i połączeniami łączącymi",
"graphAriaLabel": "Mapa motywów: {clusters} motywów, {notes} notatek, {bridges} notatek-mostów. Przełącz na Listę, by łatwiej nawigować.",
"listAriaLabel": "Lista motywów, notatek i notatek-mostów",
"dashboardFilterPlaceholder": "Filtruj notatki pomostowe, motywy…",
"legendFilterPlaceholder": "Filtruj motywy…",
"legendShowLess": "Pokaż mniej",
@@ -3896,7 +3897,7 @@
"genericError": "Coś poszło nie tak podczas wysyłania do Twojej instancji.",
"ignore": "opanowane",
"processing": "Przetwarzanie…",
"processingDetail": "Generowanie tagów, podsumowania semantycznego i osadzeń.",
"processingDetail": "Przygotowanie notatki: etykiety, streszczenie, wyszukiwanie według sensu.",
"publishedOn": "Opublikowano na {domain}",
"quitSimulator": "Zamknij symulator",
"realtimeCapture": "Data: przechwytywanie na żywo",
@@ -4156,7 +4157,7 @@
"match": "Zaloguj się",
"memoryEchoDisabled": "Memory Echo jest wyłączony w ustawieniach AI.",
"mindMap": "Mapa myśli",
"mindMapEmpty": "Nie wykryto jeszcze motywów. Analiza semantyczna grupuje Twoje notatki według tematów.",
"mindMapEmpty": "Nie ma jeszcze tematów. AI grupuje Twoje notatki według tematów.",
"mindMapOpen": "Otwórz mapę spostrzeżeń →",
"mindMapUnavailable": "Mapa myśli niedostępna.",
"new": "Utworzone notatki",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "Dodaj do notatki",
"bridge": "Pomysł pomostowy",
"connect": "Powiązanie semantyczne",
"connect": "Połącz notatkę",
"continue": "Kontynuuj",
"daily": "Dziennik",
"explore": "Eksploruj motyw",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Twój drugi mózg w skrócie: sugestie AI, szybkie notowanie i następne kroki. Użyj skrótów poniżej, aby działać.",
"resumeOpen": "Wznów",
"review": "Powtarzaj",
"semanticConnection": "Powinowactwo semantyczne",
"semanticConnection": "Bliskość",
"sentiment": "Sentyment",
"sentimentDominant": "Dominujący ton w tym tygodniu",
"suggestedBridge": "Łączy {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retencja, seria i łączna liczba kart.",
"gmail": "Przechwycone e-maile zsynchronizowane z Gmail.",
"inbox": "Notatki czekające na przypisanie do notatników.",
"intelligence": "Powiązania semantyczne, pomostowe pomysły i odkrycia agentów.",
"intelligence": "Notatki, które się spotykają, idee łączące i wyniki agentów.",
"link-suggestions": "Fragmenty do połączenia w Twojej bieżącej notatce.",
"mind-map": "Klastry tematyczne o rozmiarze zależnym od liczby notatek.",
"next-paths": "Następne kroki sugerowane przez AI na podstawie twojej ostatniej pracy.",
@@ -4258,7 +4259,7 @@
"resume": "Kontynuuj swoje najnowsze notatki od miejsca, w którym skończyłeś.",
"revision": "Fiszki do powtórki z rozstawionym powtarzaniem.",
"sentiment": "Ton emocjonalny Twoich notatek w tym tygodniu.",
"stats": "Klastry, notatki pomostowe i łącznie zindeksowane notatki.",
"stats": "Tematy, notatki łączące i zindeksowane notatki.",
"usage": "Pozostałe kredyty AI i miesięczne limity."
},
"widgetDone": "Gotowe",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Wskaźnik retencji nauki, seria powtórek i łączna liczba kart.",
"gmail": "Przechwycone e-maile zsynchronizowane z integracją Gmail.",
"inbox": "Notatki bez notatnika. Przypisz je, aby utrzymać porządek w swoim drugim mózgu.",
"intelligence": "Odkrycia AI: powiązania semantyczne mdzy notatkami, pomysły pomostowe i ustalenia agentów.",
"intelligence": "Co znalazła AI: notatki, które s spotykają, idee łączące i wyniki agentów.",
"link-suggestions": "Fragmenty z innych notatek, które warto połączyć z Twoją bieżącą pracą.",
"mind-map": "Klastry tematyczne o rozmiarze zależnym od liczby notatek. Kliknij, aby eksplorować w Powiązania.",
"next-paths": "Sugerowane następne kroki na podstawie ostatnio edytowanej notatki: wznów, połącz, zintegruj lub zbadaj.",
@@ -4284,7 +4285,7 @@
"resume": "Twoje ostatnio zaktualizowane notatki. Kontynuuj, gdzie skończyłeś.",
"revision": "Fiszki do powtórki dzisiaj z rozstawionym powtarzaniem.",
"sentiment": "Ton emocjonalny notatek edytowanych w ciągu ostatnich 7 dni. Wymaga co najmniej 3 ostatnich notatek i włączonego AI.",
"stats": "Statystyki indeksu semantycznego: aktywne motywy, notatki pomostowe, łącznie zaindeksowane notatki.",
"stats": "Ile tematów, notatek łączących i zindeksowanych notatek masz.",
"usage": "Miesięczne użycie kredytów AI według funkcji."
},
"widgetHelpClose": "Zamknij",
@@ -4319,7 +4320,7 @@
"resume": "Wznów tutaj",
"revision": "Fiszki",
"sentiment": "Sentyment",
"stats": "Statystyki semantyczne",
"stats": "Tematy i notatki",
"usage": "Limit AI"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Wklej go w poniższe pole i kliknij „Połącz”. Pierwsza synchronizacja importuje wszystkie Twoje książki i artykuły.",
"readwiseHelpStep3": "Każda książka staje się notatką w notatniku «Readwise 📚» — z wszystkimi Twoimi wyróżnieniami uporządkowanymi.",
"readwiseHelpStep4": "Aby zaktualizować nowe wyróżnienia, wróć tutaj i kliknij „Synchronizuj teraz\".",
"readwiseHelpStep5": "💡 Wskazówka: twórz fiszki AI z notatki Readwise (przycisk 🎓 w edytorze), aby powtarzać lektury.",
"readwiseHelpStep5": "Wskazówka: twórz karty powtórek z notatki Readwise (przycisk kart u góry notatki), aby powtarzać lektury.",
"readwiseInfo": "Jak działa Readwise?",
"readwiseSynced": "Synchronizacja Readwise — {{created}} utworzonych, {{updated}} zaktualizowanych",
"readwiseTokenPlaceholder": "Token Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Konwersja zakończona! Utworzono powiązany notatnik.",
"convertToNotebook": "Konwertuj na notatnik",
"converting": "Konwertowanie…",
"createLocalDb": "Utwórz autonomiczną lokalną bazę danych",
"createLocalDb": "Utwórz tabelę w tej notatce",
"createNotebook": "Utwórz notatnik",
"defaultOption1": "Opcja 1",
"defaultOption2": "Opcja 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Usunięto przestarzały blok.",
"displayModeGallery": "Galeria",
"displayModeTable": "Tabela",
"echoLoading": "Wyszukiwanie powiązań semantycznych...",
"echoNameRequired": "Najpierw wpisz nazwę dla tego wiersza, aby wyszukać powiązania semantyczne.",
"echoLoading": "Szukanie bliskich notatek…",
"echoNameRequired": "Najpierw wpisz nazwę tego wiersza, aby szukać bliskich notatek.",
"echoNoMatch": "Nie znaleziono notatek zawierających „{{query}}” w Twojej przestrzeni.",
"echoPopoverTitle": "Rezonanse semantyczne 🔮",
"echoPopoverTitle": "Bliskie notatki",
"echoSearchError": "Wystąpił błąd podczas wyszukiwania.",
"echoUpgradeText": "Konwertuj tę tabelę na notatnik, aby aktywować analizę neuronową Memento.",
"echoUpgradeText": "Zamień tę tabelę na notes, aby Memento znalazło bliskie notatki.",
"emptyTable": "Brak wierszy w tabeli.",
"insertCitation": "Wstaw link w edytorze",
"insertDesc": "Osadź ustrukturyzowane dane swojego notatnika",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Słowo kluczowe",
"linkToNotebook": "Połącz z notatnikiem",
"loadError": "Błąd ładowania danych ustrukturyzowanych.",
"localDbTitle": "Autonomiczna baza danych",
"localDbTitle": "Tabela w tej notatce",
"namePlaceholder": "Wprowadź nazwę…",
"noEchoFound": "Nie wykryto powiązań semantycznych.",
"noEchoFound": "Nie znaleziono bliskich notatek.",
"noNotebook": "Ten blok wymaga notatnika. Najpierw przenieś tę notatkę do notatnika.",
"noNotebookDesc": "Ten blok wyświetla ustrukturyzowany widok notatnika. Wybierz notatnik do połączenia:",
"noSchema": "Ten notatnik nie ma jeszcze ustrukturyzowanego widoku. Skonfiguruj go w nagłówku notatnika.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Połącz z notatnikiem",
"selectOptionsPlaceholder": "Opcje oddzielone przecinkami",
"semanticEcho": "Rezonanse semantyczne",
"switchToLocalDb": "Przełącz na lokalną bazę danych",
"turnIntoLabel": "Wbudowana baza danych",
"switchToLocalDb": "Wróć do tabeli tej notatki",
"turnIntoLabel": "Tabela w notatce",
"untitled": "Bez tytułu"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Szukaj notatki…",
"selectOptions": "Opcje (jedna na wiersz)",
"selectOptionsPlaceholder": "Do zrobienia\\\nW toku\\\nGotowe",
"semanticResonances": "Rezonanse semantyczne",
"semanticResonances": "Notatki, które się spotykają",
"tagApplied": "pomosty",
"viewCalendarHint": "Kalendarz — notatki uporządkowane według daty",
"viewGallery": "Galeria",

View File

@@ -407,7 +407,7 @@
"placeholder": "Pesquisar",
"searchPlaceholder": "Pesquise suas notas...",
"semanticInProgress": "Pesquisa semântica em andamento...",
"semanticTooltip": "Pesquisa semântica com IA",
"semanticTooltip": "Pesquisa pelo sentido",
"searching": "Pesquisando...",
"noResults": "Nenhum resultado encontrado",
"resultsFound": "{count} notas encontradas",
@@ -861,7 +861,7 @@
"compareAll": "Comparar tudo",
"mergeAll": "Mesclar tudo",
"close": "Fechar",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % de proximidade",
"backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo",
"bottomCueConsent": "Conexões IA disponíveis abaixo",
@@ -918,7 +918,7 @@
"noContentReturned": "Nenhum conteúdo de fusão retornado pela API",
"unknownDate": "Data desconhecida"
},
"defaultInsight": "Estas notas parecem estar relacionadas semanticamente.",
"defaultInsight": "Estas notas pertencem juntas.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "Não foi possível limpar as etiquetas",
"indexingComplete": "Indexação concluída: {count} nota(s) processada(s)",
"indexingError": "Erro durante a indexação",
"semanticIndexing": "Indexação Semântica",
"semanticIndexingDescription": "Gere vetores para todas as notas para ativar a pesquisa baseada em intenção",
"semanticIndexing": "Índice para pesquisa pelo sentido",
"semanticIndexingDescription": "Preparar todas as notas para a pesquisa pelo sentido",
"profile": "Perfil",
"searchNoResults": "Nenhum resultado encontrado",
"languageAuto": "Idioma definido como Automático",
@@ -1664,7 +1664,7 @@
"title": "Recursos",
"description": "Capacidades baseadas em IA",
"titleSuggestions": "Sugestões de título com IA",
"semanticSearch": "Pesquisa semântica com embeddings",
"semanticSearch": "Pesquisa pelo sentido",
"paragraphReformulation": "Reformulação de parágrafos",
"memoryEcho": "Insights diários do Memory Echo",
"notebookOrganization": "Organização por cadernos",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "Reconstruir Índice de Pesquisa",
"description": "Regenerar embeddings para todas as notas para melhorar a pesquisa sentica.",
"description": "Recalcular o índice de todas as notas para melhorar a pesquisa pelo sentido.",
"button": "Reconstruir Índice",
"success": "Indexação concluída: {count} notas processadas",
"failed": "Erro durante a indexação"
@@ -1984,7 +1984,7 @@
"legendWiki": "Vincular a uma nota",
"mentionShort": "Menção",
"moreNodes": "+{count} no mapa",
"noInbound": "Nenhum link wiki de entrada aponta para esta nota.",
"noInbound": "Nenhuma outra nota aponta para esta.",
"noOutbound": "Esta nota ainda não vincula outras notas.",
"noWikiYet": "Sem links para outras notas ainda.",
"outboundHelp": "Notas para as quais esta vincula usando [[…]] em seu texto.",
@@ -2190,7 +2190,7 @@
"custom": "Personalizado"
},
"typeDescriptions": {
"scraper": "Extrai conteúdo de vários sites e cria um resumo",
"scraper": " vários sites e faz um resumo",
"researcher": "Busca informações sobre um tema",
"monitor": "Observa um caderno e analisa as notas",
"slideGenerator": "Cria uma apresentação do PowerPoint a partir de notas",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "ex. Terça-feira IA Watch",
"description": "Descrição (opcional)",
"descriptionPlaceholder": "Resumo semanal de notícias de IA",
"urlsLabel": "URLs para extrair",
"urlsLabel": "Endereços das páginas a ler",
"urlsOptional": "(opcional)",
"sourceNotebook": "Caderno para observar",
"selectNotebook": "Selecione um caderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notificação por e-mail",
"notifyEmailHint": "Receba um e-mail com os resultados do agente após cada execução",
"includeImages": "Incluir imagens",
"includeImagesHint": "Extrair imagens das páginas rastreadas e anexá-las à nota gerada",
"includeImagesHint": "Tirar as imagens das páginas lidas e anexá-las à nota",
"back": "Voltar",
"configuration": "Configuração",
"options": "Opções",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "Watch IA",
"description": "Extrai conteúdo de 5 sites especializados em IA e gera um resumo semanal."
"description": "Lê 5 sites de IA e escreve um resumo semanal."
},
"veilleTech": {
"name": "Watch Tech",
"description": "Extrai conteúdo dos principais sites de tecnologia e cria um resumo de notícias."
"description": "os principais sites de tecnologia e escreve um resumo de notícias."
},
"veilleDev": {
"name": "Watch Dev",
"description": "Extrai conteúdo de sites de desenvolvimento e resume novas tecnologias e frameworks."
"description": " sites de desenvolvimento e resume as novidades."
},
"surveillant": {
"name": "Observador de notas",
@@ -2431,15 +2431,15 @@
"btnLabel": "Ajuda",
"close": "Fechar",
"whatIsAgent": "O que é um agente?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "Como usar um agente?",
"howToUseContent": "1. Clique em **\"Novo Agente\"** (ou comece a partir de um **Modelo** na parte inferior da página).",
"types": "Tipos de agentes",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "Modo avançado (Instruções IA, Iterações máx.)",
"advancedContent": "Clique em **\"Modo avançado\"** na parte inferior do formulário para acessar definições adicionais.",
"tools": "Ferramentas disponíveis (detalhes)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "Frequência e agendamento",
"frequencyContent": "| Frequência | Comportamento\n|-----------|----------\n| **Manual** | Clica em \"Executar\".",
"targetNotebook": "Caderno de destino",
@@ -2447,7 +2447,7 @@
"templates": "Modelos",
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Dicas e solução de problemas",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "Escolha o tipo de tarefa que o agente realizará. Cada tipo tem capacidades e campos diferentes.",
"researchTopic": "O tema que o agente pesquisará na web. Seja específico para melhores resultados.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Atualizar para Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro inclui:",
"proSearch": "100 semantic searches / month",
"proSearch": "1 000 créditos IA / mês",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Geração de diagrama",
"featureFlashcards": "Flashcards IA",
"featureFlashcards": "Cartões de revisão",
"featurePublishEnhance": "Publicação com IA",
"featureSlides": "Geração de slides",
"featureVoice": "Transcrição de voz",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 reformulações / mês",
"businessFeature4": "1.000 mensagens de chat / mês",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Quotas personalizadas, SSO, suporte prioritário.",
"enterpriseDescription": "Quotas personalizadas, início de sessão único para a equipa, suporte prioritário.",
"contactSales": "Contactar vendas",
"startCheckout": "Começar",
"checkoutLoading": "A carregar pagamento…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Sua assinatura renova automaticamente.",
"businessDescription": "Para equipes e líderes de produto.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Início de sessão único para toda a equipa",
"enterpriseFeature3": "Suporte dedicado",
"enterpriseFeature4": "Faturação personalizada",
"enterpriseFeature5": "SLA garantido",
"enterpriseFeature5": "Prazo de resposta garantido",
"subtitle": "Escolha o plano que mais te convém",
"freeDescription": "Para descobrir Memento",
"freeF1": "30 pesquisas semânticas",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Falha ao buscar o status de cobrança",
"fetchQuotasFailed": "Falha ao buscar as cotas",
"fetchInvoicesFailed": "Falha ao carregar o histórico de cobrança.",
"savePercent": "Economize ~17%",
"savePercent": "Economize ~{percent} %",
"billedYearTotal": "ou seja, {price} por ano",
"cancelSubscription": "Cancelar subscrição",
"changeOffer": "Mudar de oferta",
"downgradeToFree": "Voltar à oferta gratuita",
@@ -3379,13 +3380,13 @@
"cta": "Falar conosco",
"feature0": "Tudo do Business",
"feature1": "Agentes ilimitados",
"feature2": "SSO / SAML",
"feature3": "Audit logs e SLA",
"feature2": "Início de sessão único para toda a equipa",
"feature3": "Registo de atividade e prazo de resposta garantido",
"feature4": "Suporte dedicado",
"feature5": "Onboarding ao vivo"
"feature5": "Acompanhamento na instalação"
},
"basicPrice": "Grátis",
"savePercent": "Economize ~17%",
"savePercent": "Economize ~{percent} %",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Exclua permanente e irreversivelmente sua conta e todos os dados associados.",
"whatWillBeDeleted": "O seguinte será excluído permanentemente:",
"item1": "Todas as notas, cadernos e anexos",
"item2": "Todos os embeddings semânticos pgvector",
"item2": "O índice que liga as suas notas",
"item3": "Todas as chaves API BYOK",
"item4": "Todas as conversas de IA e sessões de brainstorm",
"item5": "Histórico de cota e uso",
@@ -3559,7 +3560,7 @@
"step_features_title": "Seus superpoderes de IA",
"step_features_subtitle": "Escolha por onde começar.",
"step_features_cta": "Vamos lá!",
"feature_search_title": "Busca semântica",
"feature_search_title": "Pesquisa pelo sentido",
"feature_search_desc": "Encontre qualquer nota por significado, não apenas por palavras-chave.",
"feature_flashcards_title": "Flashcards IA",
"feature_flashcards_desc": "Gere cartões de revisão das suas notas com um clique.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Clique num cartão de ideia para expandi-lo com subideias e explorá-lo.",
"hint_brainstorm_export_title": "Exportar sessão",
"hint_brainstorm_export_desc": "Exporte a sessão de brainstorming como nota estruturada no carnet escolhido.",
"hint_insights_clusters_title": "Clusters de notas",
"hint_insights_clusters_desc": "As suas notas são agrupadas automaticamente em clusters temáticos. Clique num cluster para detalhes.",
"hint_insights_clusters_title": "Temas de notas",
"hint_insights_clusters_desc": "As suas notas são agrupadas por temas. Clique num tema para ver as notas.",
"hint_insights_bridge_title": "Notas-ponte",
"hint_insights_bridge_desc": "As notas-ponte ligam vários clusters. São destacadas porque contêm ligações importantes.",
"hint_insights_refresh_title": "Atualizar clusters",
"hint_insights_refresh_desc": "Se adicionou novas notas, clique em \"Atualizar\" para recalcular os clusters."
"hint_insights_bridge_desc": "As notas-ponte ligam vários temas. Mostram onde as ideias se cruzam.",
"hint_insights_refresh_title": "Atualizar temas",
"hint_insights_refresh_desc": "Se adicionou notas, clique em «Atualizar» para recalcular os temas."
},
"blockAction": {
"moveUp": "Mover bloco para cima",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "Conexões",
"toggleMenu": "Mostrar ou ocultar o menu",
"subtitle": "Descobre a arquitetura oculta do teu conhecimento",
"subtitle": "Veja como as suas notas se ligam",
"resync": "Atualizar",
"mapping": "Mapeando…",
"loading": "A carregar notas…",
"mappingTitle": "Mapeando o teu conhecimento…",
"mappingHint": "Pode demorar de um a três minutos. Pode continuar a navegar; a página atualizar-se-á automaticamente.",
"analyzeNow": "Iniciar análise semântica",
"emptyNeedMoreNotes": "Adicione mais {count} notas para desbloquear o clustering semântico (mínimo 10).",
"embeddingsHint": "Apenas {indexed} de {total} notas indexadas para IA.",
"analyzeNow": "Atualizar os temas",
"emptyNeedMoreNotes": "Adicione mais {count} notas para agrupar os seus temas (mínimo 10).",
"embeddingsHint": "Apenas {indexed} de {total} notas estão prontas para agrupar por temas.",
"vsGraphHint": "Não é o \"Mapa de ligações\": aqui a IA agrupa por significado, não por ligações.",
"openGraphMap": "Abrir mapa de links",
"analysisFailed": "Análise falhou. Verifica as configurações de IA.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notas",
"clusterFallback": "Tema {index}",
"unclusteredNotes": "{count} notas não atribuídas a nenhum tema (ocultas do grafo).",
"emptyTitle": "Descobre os teus clusters de conhecimento",
"emptyDescription": "Clique em \"Ressincronizar rede\" para analisar as suas notas e encontrar ligações ocultas",
"emptyTitle": "Descobre os teus temas",
"emptyDescription": "Clique em «Atualizar» para agrupar as suas notas por temas.",
"stats": {
"clusters": "Clusters",
"bridgeNotes": "Notas ponte",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "Clusters semânticos",
"title": "Temas",
"notesCount": "{count} notas",
"centralNotes": "Notas centrais",
"emptyCluster": "Sem notas neste cluster"
"emptyCluster": "Sem notas neste tema"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Afinidade {score}%",
"moreThemes": "+{count}",
"needsResync": "Ressincronize a rede para atualizar os pares de ponte.",
"scoreHint": "Afinidade semântica média aos dois temas que esta nota conecta (similaridade de cosseno)."
"scoreHint": "Quão próxima esta nota está dos dois temas que liga."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Grafo",
"viewDashboard": "Painel",
"isolatedClusters": {
"title": "Clusters isolados ({count})",
"title": "Temas isolados ({count})",
"badge": "Não conectado",
"empty": "Todos os clusters estão interligados!"
"empty": "Todos os temas já estão ligados por pelo menos uma nota-ponte."
},
"focusCluster": {
"title": "Foco de cluster ativo",
"description": "Este cluster temático reúne {count} notas complementares. Clique numa nota para abri-la.",
"title": "Tema aberto",
"description": "Este tema reúne {count} notas. Clique numa nota para a abrir.",
"close": "Fechar"
},
"badgeDominant": "Dominante",
"bridgeCount": "ponte(s)",
"echoTitle": "Continua a regressar a esta ideia",
"tipClusters": "A IA agrupou as suas notas por afinidade semântica, independentemente do carnet.",
"tipClusters": "A IA agrupou as suas notas por temas, mesmo em cadernos diferentes.",
"tipClustersAction": "Clique num tema para ver as notas. Clique numa nota para abri-la.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Clique numa nota para abri-la e compreender a ligação.",
"tipEcho": "O Memory Echo deteta duas notas escritas em momentos diferentes que abordam o mesmo tema.",
"tipEchoAction": "Duas notas, a mesma ideia, momentos diferentes. Clique para explorar.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Clique em \"Criar nota-ponte\" para escrever a nota e abri-la imediatamente.",
"tipIsolated": "Estes temas estão isolados: nenhuma nota os liga aos outros. Talvez falte uma perspetiva.",
"tipIsolatedAction": "Estes temas não têm notas que os liguem ao restante pensamento.",
"recalcSystem": {
"title": "Sistema de recálculo",
"statusSynced": "Sincronizado",
"scheduledCron": "Programado",
"lastSync": "Última sync"
"title": "Atualização de temas",
"statusSynced": "Em dia",
"scheduledCron": "Atualização automática",
"lastSync": "Última atualização"
},
"resetFocus": "Repor foco",
"resetFocus": "Mostrar tudo",
"listView": "Lista",
"graphAriaLabel": "Rede semântica: {clusters} clusters, {notes} notas, {bridges} notas-ponte. Use as setas.",
"listAriaLabel": "Lista de clusters acessível com notas e ligações-ponte",
"graphAriaLabel": "Mapa de temas: {clusters} temas, {notes} notas, {bridges} notas-ponte. Passe à vista Lista para navegar mais facilmente.",
"listAriaLabel": "Lista de temas, notas e notas-ponte",
"dashboardFilterPlaceholder": "Filtrar notas-ponte, temas…",
"legendFilterPlaceholder": "Filtrar temas…",
"legendShowLess": "Mostrar menos",
@@ -3896,7 +3897,7 @@
"genericError": "Algo deu errado ao enviar para sua instância.",
"ignore": "dominado",
"processing": "Processando…",
"processingDetail": "Gerando tags, resumo semântico e embeddings.",
"processingDetail": "A preparar a nota: etiquetas, resumo, pesquisa pelo sentido.",
"publishedOn": "Publicado em {domain}",
"quitSimulator": "Fechar simulador",
"realtimeCapture": "Data: captura ao vivo",
@@ -4156,7 +4157,7 @@
"match": "Entrar",
"memoryEchoDisabled": "Memory Echo está desativado nas suas configurações de IA.",
"mindMap": "Mapa mental",
"mindMapEmpty": "Nenhum tema detectado ainda. A análise semântica agrupa suas notas por tópico.",
"mindMapEmpty": "Ainda sem temas. A IA agrupa as suas notas por assunto.",
"mindMapOpen": "Abrir mapa de insights →",
"mindMapUnavailable": "Mapa mental indisponível.",
"new": "notas criadas",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "Adicionar à nota",
"bridge": "Ideia ponte",
"connect": "Link semântico",
"connect": "Ligar uma nota",
"continue": "Continuar",
"daily": "Diário",
"explore": "Explorar tema",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Seu segundo cérebro num relance: sugestões de IA, captura rápida e próximos passos. Use os atalhos abaixo para agir.",
"resumeOpen": "Retomar",
"review": "Revisar",
"semanticConnection": "Afinidade semântica",
"semanticConnection": "Proximidade",
"sentiment": "Sentimento",
"sentimentDominant": "Tom dominante esta semana",
"suggestedBridge": "Ligar {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retenção, sequência e total de cartões.",
"gmail": "Capturas de e-mail sincronizadas do Gmail.",
"inbox": "Notas aguardando para serem arquivadas em cadernos.",
"intelligence": "Links semânticos, ideias-ponte e descobertas de agentes.",
"intelligence": "Notas que se encontram, ideias que fazem a ponte e resultados dos agentes.",
"link-suggestions": "Passagens para vincular em sua nota atual.",
"mind-map": "Clusters de temas dimensionados pelo volume de notas.",
"next-paths": "Próximos passos sugeridos pela IA a partir do seu trabalho mais recente.",
@@ -4258,7 +4259,7 @@
"resume": "Continue suas notas mais recentes de onde parou.",
"revision": "Flashcards pendentes para revisão com repetição espaçada.",
"sentiment": "Tom emocional das suas notas esta semana.",
"stats": "Clusters, notas ponte e total de notas indexadas.",
"stats": "Temas, notas que fazem a ponte e notas indexadas.",
"usage": "Créditos de IA restantes e limites mensais."
},
"widgetDone": "Concluído",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Taxa de retenção de aprendizado, sequência de revisão e total de cartões.",
"gmail": "Capturas de e-mail sincronizadas da integração do Gmail.",
"inbox": "Notas sem caderno ainda. Arquive-as para manter seu segundo cérebro organizado.",
"intelligence": "Descobertas IA: links semânticos entre notas, ideias ponte e descobertas de agentes.",
"intelligence": "O que a IA encontrou: notas que se encontram, ideias que fazem a ponte e resultados dos agentes.",
"link-suggestions": "Passagens de outras notas que valem a pena vincular ao seu trabalho atual.",
"mind-map": "Clusters de temas dimensionados pelo volume de notas. Clique para explorar em Conexões.",
"next-paths": "Próximos passos sugeridos com base na sua última nota editada: retomar, vincular, conectar ou pesquisar.",
@@ -4284,7 +4285,7 @@
"resume": "Suas notas atualizadas mais recentemente. Continue de onde parou.",
"revision": "Flashcards pendentes para revisão hoje com repetição espaçada.",
"sentiment": "Tom emocional das notas editadas nos últimos 7 dias. Requer pelo menos 3 notas recentes e IA ativada.",
"stats": "Estatísticas do índice semântico: temas ativos, notas-ponte, total de notas indexadas.",
"stats": "Quantos temas, notas que fazem a ponte e notas indexadas tem.",
"usage": "Uso mensal de créditos de IA por recurso."
},
"widgetHelpClose": "Fechar",
@@ -4319,7 +4320,7 @@
"resume": "Retomar aqui",
"revision": "Flashcards",
"sentiment": "Sentimento",
"stats": "Estatísticas semânticas",
"stats": "Temas e notas",
"usage": "Cota IA"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Cole-o no campo abaixo e clique em \"Conectar\". A primeira sincronização importa todos os seus livros e artigos.",
"readwiseHelpStep3": "Cada livro se torna uma nota em um caderno «Readwise 📚» — com todos os seus destaques organizados.",
"readwiseHelpStep4": "Para atualizar com novos destaques, volte aqui e clique em \"Sincronizar agora\".",
"readwiseHelpStep5": "💡 Dica: crie flashcards de IA a partir de uma nota do Readwise (botão 🎓 no editor) para revisar suas leituras.",
"readwiseHelpStep5": "Dica: crie cartões de revisão a partir de uma nota do Readwise (botão dos cartões no topo da nota) para revisar suas leituras.",
"readwiseInfo": "Como o Readwise funciona?",
"readwiseSynced": "Sincronização do Readwise — {{created}} criadas, {{updated}} atualizadas",
"readwiseTokenPlaceholder": "Token do Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversão concluída! Caderno vinculado criado.",
"convertToNotebook": "Converter em caderno",
"converting": "Convertendo…",
"createLocalDb": "Criar um banco de dados local autônomo",
"createLocalDb": "Criar uma tabela nesta nota",
"createNotebook": "Criar caderno",
"defaultOption1": "Opção 1",
"defaultOption2": "Opção 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Bloco desatualizado removido.",
"displayModeGallery": "Galeria",
"displayModeTable": "Mesa",
"echoLoading": "Buscando conexões semânticas...",
"echoNameRequired": "Digite primeiro um nome para esta linha para buscar conexões semânticas.",
"echoLoading": "A procurar notas próximas…",
"echoNameRequired": "Escreva primeiro um nome nesta linha para procurar notas próximas.",
"echoNoMatch": "Nenhuma nota contendo \"{{query}}\" encontrada no seu espaço.",
"echoPopoverTitle": "Ressonâncias semânticas 🔮",
"echoPopoverTitle": "Notas próximas",
"echoSearchError": "Ocorreu um erro durante a pesquisa.",
"echoUpgradeText": "Converta esta tabela em um caderno para ativar a análise neural do Memento.",
"echoUpgradeText": "Converta esta tabela num caderno para o Memento encontrar notas próximas.",
"emptyTable": "Sem linhas na tabela.",
"insertCitation": "Inserir link no editor",
"insertDesc": "Incorpore os dados estruturados do seu caderno",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Palavra-chave",
"linkToNotebook": "Vincular a um caderno",
"loadError": "Erro ao carregar dados estruturados.",
"localDbTitle": "Banco de dados autônomo",
"localDbTitle": "Tabela nesta nota",
"namePlaceholder": "Digite um nome…",
"noEchoFound": "Sem conexões semânticas detectadas.",
"noEchoFound": "Nenhuma nota próxima encontrada.",
"noNotebook": "Este bloco requer um caderno. Mova esta nota para um caderno primeiro.",
"noNotebookDesc": "Este bloco exibe a visualização estruturada de um caderno. Escolha o caderno para vincular:",
"noSchema": "Este caderno ainda não tem visualização estruturada. Configure-a pelo cabeçalho do caderno.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Vincular a um caderno",
"selectOptionsPlaceholder": "Opções separadas por vírgulas",
"semanticEcho": "Ressonâncias semânticas",
"switchToLocalDb": "Mudar para banco de dados local",
"turnIntoLabel": "Banco de dados embutido",
"switchToLocalDb": "Voltar à tabela desta nota",
"turnIntoLabel": "Tabela na nota",
"untitled": "Sem título"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Pesquisar uma nota…",
"selectOptions": "Opções (uma por linha)",
"selectOptionsPlaceholder": "A fazer\\\nEm progresso\\\nConcluído",
"semanticResonances": "Ressonâncias semânticas",
"semanticResonances": "Notas que se encontram",
"tagApplied": "pontes",
"viewCalendarHint": "Calendário — suas notas organizadas por data",
"viewGallery": "Galeria",

View File

@@ -407,7 +407,7 @@
"placeholder": "Поиск",
"searchPlaceholder": "Поиск в заметках...",
"semanticInProgress": "ИИ-поиск...",
"semanticTooltip": "Семантический поиск с ИИ",
"semanticTooltip": "Поиск по смыслу",
"searching": "Поиск...",
"noResults": "Результаты не найдены",
"resultsFound": "Найдено заметок: {count}",
@@ -861,7 +861,7 @@
"compareAll": "Сравнить всё",
"mergeAll": "Объединить всё",
"close": "Закрыть",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % близости",
"backToNote": "Revenir à ma note",
"badgeLabel": "Эхо памяти",
"bottomCueConsent": "AI-связи доступны ниже",
@@ -918,7 +918,7 @@
"noContentReturned": "API не вернул содержимого слияния",
"unknownDate": "Неизвестная дата"
},
"defaultInsight": "Эти записи кажутся семантически связанными.",
"defaultInsight": "Эти заметки связаны.",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "Не удалось очистить метки",
"indexingComplete": "Индексация завершена: обработано {count} заметок",
"indexingError": "Ошибка при индексации",
"semanticIndexing": "Семантическая индексация",
"semanticIndexingDescription": "Создать векторы для всех заметок для поиска по смыслу",
"semanticIndexing": "Индекс для поиска по смыслу",
"semanticIndexingDescription": "Подготовить все заметки для поиска по смыслу",
"profile": "Профиль",
"searchNoResults": "Результаты не найдены",
"languageAuto": "Язык установлен на Авто",
@@ -1664,7 +1664,7 @@
"title": "Функции",
"description": "Возможности на базе ИИ",
"titleSuggestions": "Предложения заголовков с ИИ",
"semanticSearch": "Семантический поиск с эмбеддингами",
"semanticSearch": "Поиск по смыслу",
"paragraphReformulation": "Реформулировка абзацев",
"memoryEcho": "Ежедневные идеи Memory Echo",
"notebookOrganization": "Организация по блокнотам",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "Перестроить поисковый индекс",
"description": "Перегенерировать эмбеддинги для всех заметок для улучшения семантического поиска.",
"description": "Пересчитать индекс всех заметок, чтобы улучшить поиск по смыслу.",
"button": "Перестроить индекс",
"success": "Индексация завершена: обработано {count} заметок",
"failed": "Ошибка при индексации"
@@ -1984,7 +1984,7 @@
"legendWiki": "Ссылка на заметку",
"mentionShort": "Упоминание",
"moreNodes": "+{count} на карте",
"noInbound": "Никакие входящие wiki-ссылки не указывают на эту заметку.",
"noInbound": "Никакая другая заметка не указывает на эту.",
"noOutbound": "Эта запись ещё не связана с другими записями.",
"noWikiYet": "Пока нет ссылок на другие заметки.",
"outboundHelp": "Заметки, на которые она ссылается, используя [[…]] в тексте.",
@@ -2190,7 +2190,7 @@
"custom": "Пользовательский"
},
"typeDescriptions": {
"scraper": "Собирает данные с нескольких сайтов и создаёт сводку",
"scraper": "Читает несколько сайтов и пишет сводку",
"researcher": "Ищет информацию по теме",
"monitor": "Следит за блокнотом и анализирует заметки",
"slideGenerator": "Создает презентацию PowerPoint из заметок.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "напр. Еженедельный обзор ИИ",
"description": "Описание (необязательно)",
"descriptionPlaceholder": "Еженедельная сводка новостей ИИ",
"urlsLabel": "URL-адреса для сбора",
"urlsLabel": "Адреса страниц для чтения",
"urlsOptional": "(необязательно)",
"sourceNotebook": "Блокнот для наблюдения",
"selectNotebook": "Выберите блокнот...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Email-уведомление",
"notifyEmailHint": "Получайте письмо с результатами агента после каждого запуска",
"includeImages": "Включить изображения",
"includeImagesHint": "Извлекать изображения со страниц и прикреплять к созданной заметке",
"includeImagesHint": "Брать изображения с прочитанных страниц и прикреплять к заметке",
"back": "Назад",
"configuration": "Конфигурация",
"options": "Параметры",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "Обзор ИИ",
"description": "Собирает данные с 5 сайтов, специализирующихся на ИИ, и генерирует еженедельную сводку."
"description": "Читает 5 сайтов об ИИ и пишет еженедельную сводку."
},
"veilleTech": {
"name": "Обзор технологий",
"description": "Собирает данные с крупных технических сайтов и создаёт сводку новостей."
"description": "Читает крупные технические сайты и пишет сводку новостей."
},
"veilleDev": {
"name": "Обзор разработок",
"description": "Собирает данные с сайтов для разработчиков и обобщает новые технологии и фреймворки."
"description": "Читает сайты для разработчиков и кратко описывает новинки."
},
"surveillant": {
"name": "Наблюдатель за заметками",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "Инструменты Агента",
"webSearch": "Веб-поиск",
"webScrape": "Веб-скрейпинг",
"webScrape": "Чтение страниц",
"noteSearch": "Поиск Заметок",
"noteRead": "Читать Заметку",
"noteCreate": "Создать Заметку",
@@ -2431,15 +2431,15 @@
"btnLabel": "Помощь",
"close": "Закрыть",
"whatIsAgent": "Что такое агент?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "Как использовать агента?",
"howToUseContent": "1. Нажмите **«Новый агент»** (или начните с **шаблона** в нижней части страницы).",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "Расширенный режим (Инструкции ИИ, Макс. итерации)",
"advancedContent": "Нажмите **«Расширенный режим»** в нижней части формы, чтобы получить доступ к дополнительным настройкам.",
"tools": "Доступные инструменты (подробно)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "Частота и расписание",
"frequencyContent": "| Частота | Поведение\n|-----------|----------\n| **Вручную** | Вы нажимаете «Запустить».",
"targetNotebook": "Целевой блокнот",
@@ -2447,7 +2447,7 @@
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "Советы и устранение неполадок",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "Выберите тип задачи, которую будет выполнять агент. Каждый тип имеет разные возможности и поля.",
"researchTopic": "Тема, которую агент будет исследовать в интернете. Будьте конкретны для лучших результатов.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Обновить до Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro включает:",
"proSearch": "100 semantic searches / month",
"proSearch": "1000 кредитов ИИ / месяц",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Генерация диаграммы",
"featureFlashcards": "Карточки ИИ",
"featureFlashcards": "Карточки для повторения",
"featurePublishEnhance": "AI-публикация",
"featureSlides": "Генерация слайдов",
"featureVoice": "Голосовая транскрипция",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 перефразирований / месяц",
"businessFeature4": "1 000 сообщений чата / месяц",
"enterpriseTitle": "Enterprise",
"enterpriseDescription": "Пользовательские квоты, SSO, приоритетная поддержка.",
"enterpriseDescription": "Пользовательские квоты, единый вход для команды, приоритетная поддержка.",
"contactSales": "Связаться с продажами",
"startCheckout": "Начать",
"checkoutLoading": "Загрузка оплаты…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Ваша подписка продлевается автоматически.",
"businessDescription": "Для команд и руководителей продуктов.",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "Единый вход для всей команды",
"enterpriseFeature3": "Выделенная поддержка",
"enterpriseFeature4": "Индивидуальный биллинг",
"enterpriseFeature5": "Гарантированное SLA",
"enterpriseFeature5": "Гарантированное время ответа",
"subtitle": "Выберите подходящий план",
"freeDescription": "Чтобы узнать Memento",
"freeF1": "30 семантических поисков",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Не удалось получить статус биллинга",
"fetchQuotasFailed": "Не удалось получить квоты",
"fetchInvoicesFailed": "Не удалось загрузить историю счетов.",
"savePercent": "Экономия ~17%",
"savePercent": "Экономия ~{percent} %",
"billedYearTotal": "то есть {price} в год",
"cancelSubscription": "Отменить подписку",
"changeOffer": "Сменить тариф",
"downgradeToFree": "Вернуться к бесплатному тарифу",
@@ -3379,13 +3380,13 @@
"cta": "Связаться",
"feature0": "Всё из Business",
"feature1": "Безлимитные агенты",
"feature2": "SSO / SAML",
"feature3": "Audit logs и SLA",
"feature2": "Единый вход для всей команды",
"feature3": "Журнал действий и гарантированное время ответа",
"feature4": "Выделенная поддержка",
"feature5": "Live-онбординг"
"feature5": "Помощь при запуске"
},
"basicPrice": "Бесплатно",
"savePercent": "Экономия ~17%",
"savePercent": "Экономия ~{percent} %",
"proMonthly": "9,90€",
"proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Безвозвратно удалить ваш аккаунт и все связанные данные.",
"whatWillBeDeleted": "Следующее будет удалено навсегда:",
"item1": "Все заметки, блокноты и вложения",
"item2": "Все семантические эмбеддинги pgvector",
"item2": "Индекс, который связывает ваши заметки",
"item3": "Все BYOK API-ключи",
"item4": "Все ИИ-диалоги и сессии брейншторма",
"item5": "История квот и использования",
@@ -3559,7 +3560,7 @@
"step_features_title": "Ваши суперспособности ИИ",
"step_features_subtitle": "Выберите, с чего начать.",
"step_features_cta": "Поехали!",
"feature_search_title": "Семантический поиск",
"feature_search_title": "Поиск по смыслу",
"feature_search_desc": "Находите любую заметку по смыслу, а не только по ключевым словам.",
"feature_flashcards_title": "Карточки ИИ",
"feature_flashcards_desc": "Создавайте карточки для повторения из заметок одним кликом.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Нажмите на карточку идеи, чтобы расширить её под-идеями и изучить.",
"hint_brainstorm_export_title": "Экспортировать сессию",
"hint_brainstorm_export_desc": "Экспортируйте сессию как структурированную заметку в выбранный карнет.",
"hint_insights_clusters_title": "Кластеры заметок",
"hint_insights_clusters_desc": "Ваши заметки автоматически группируются в тематические кластеры. Нажмите для деталей.",
"hint_insights_clusters_title": "Темы заметок",
"hint_insights_clusters_desc": "Ваши заметки сгруппированы по темам. Нажмите тему, чтобы увидеть заметки.",
"hint_insights_bridge_title": "Мостовые заметки",
"hint_insights_bridge_desc": "Мостовые заметки связывают несколько кластеров и выделены, так как содержат важные связи.",
"hint_insights_refresh_title": "Обновить кластеры",
"hint_insights_refresh_desc": "Если вы добавили новые заметки, нажмите «Обновить» для пересчёта кластеров."
"hint_insights_bridge_desc": "Связующие заметки соединяют несколько тем. Они показывают, где идеи пересекаются.",
"hint_insights_refresh_title": "Обновить темы",
"hint_insights_refresh_desc": "Если вы добавили заметки, нажмите «Обновить», чтобы пересчитать темы."
},
"blockAction": {
"moveUp": "Переместить блок вверх",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "Связи",
"toggleMenu": "Показать или скрыть меню",
"subtitle": "Откройте скрытую архитектуру вашего знания",
"subtitle": "Посмотрите, как связаны ваши заметки",
"resync": "Обновить",
"mapping": "Картирование…",
"loading": "Загрузка заметок…",
"mappingTitle": "Картирование вашего знания…",
"mappingHint": "Это может занять от одной до трёх минут. Вы можете продолжать просмотр; страница обновится автоматически.",
"analyzeNow": "Запустить семантический анализ",
"emptyNeedMoreNotes": "Добавьте ещё {count} заметок для семантической кластеризации (минимум 10).",
"embeddingsHint": "Только {indexed} из {total} заметок индексированы для ИИ.",
"analyzeNow": "Обновить темы",
"emptyNeedMoreNotes": "Добавьте ещё {count} заметок, чтобы сгруппировать темы (минимум 10).",
"embeddingsHint": "Только {indexed} из {total} заметок готовы к группировке по темам.",
"vsGraphHint": "Это не «Карта ссылок»: здесь ИИ группирует по смыслу, а не по ссылкам.",
"openGraphMap": "Открыть карту связей",
"analysisFailed": "Анализ не удался. Проверьте настройки ИИ.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "заметки",
"clusterFallback": "Тема {index}",
"unclusteredNotes": "{count} заметок не отнесены к теме (скрыты с графика).",
"emptyTitle": "Откройте свои кластеры знания",
"emptyDescription": "Нажмите «Пересинхронизировать сеть», чтобы проанализировать заметки и найти скрытые связи",
"emptyTitle": "Откройте свои темы",
"emptyDescription": "Нажмите «Обновить», чтобы сгруппировать заметки по темам.",
"stats": {
"clusters": "Кластеры",
"bridgeNotes": "Мосты-заметки",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "Семантические кластеры",
"title": "Темы",
"notesCount": "{count} заметок",
"centralNotes": "Центральные заметки",
"emptyCluster": "В этом кластере нет заметок"
"emptyCluster": "В этой теме нет заметок"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Сходство {score}%",
"moreThemes": "+{count}",
"needsResync": "Пересинхронизируйте сеть для обновления мостовых пар.",
"scoreHint": "Средняя семантическая близость к двум темам, которые связывает эта заметка (косинусное сходство)."
"scoreHint": "Насколько эта заметка близка к двум темам, которые она связывает."
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Граф",
"viewDashboard": "Панель",
"isolatedClusters": {
"title": "Изолированные кластеры ({count})",
"title": "Изолированные темы ({count})",
"badge": "Не связан",
"empty": "Все кластеры связаны!"
"empty": "Все темы уже связаны хотя бы одной связующей заметкой."
},
"focusCluster": {
"title": "Фокус на кластере",
"description": "Этот тематический кластер объединяет {count} взаимодополняющих заметок. Нажмите на заметку, чтобы открыть её.",
"title": "Тема открыта",
"description": "Эта тема объединяет {count} заметок. Нажмите на заметку, чтобы открыть её.",
"close": "Закрыть"
},
"badgeDominant": "Доминирующий",
"bridgeCount": "мост(ов)",
"echoTitle": "Вы постоянно возвращаетесь к этой идее",
"tipClusters": "ИИ сгруппировал ваши заметки по семантической близости — независимо от карнета.",
"tipClusters": "ИИ сгруппировал ваши заметки по темам, даже в разных блокнотах.",
"tipClustersAction": "Нажмите на тему, чтобы увидеть её заметки. Нажмите на заметку, чтобы открыть.",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "Нажмите на заметку, чтобы открыть её и понять связь.",
"tipEcho": "Memory Echo обнаруживает две заметки, написанные в разное время, но затрагивающие одну тему.",
"tipEchoAction": "Две заметки, одна идея, разные моменты. Нажмите, чтобы исследовать.",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "Нажмите «Создать мостовую заметку», чтобы написать и сразу открыть.",
"tipIsolated": "Эти темы изолированы: ни одна заметка не связывает их с остальными. Возможно, не хватает перспективы.",
"tipIsolatedAction": "У этих тем нет заметки, связывающей их с остальными размышлениями.",
"recalcSystem": {
"title": "Система пересчёта",
"statusSynced": "Синхронизировано",
"scheduledCron": "Запланировано",
"lastSync": "Последняя sync"
"title": "Обновление тем",
"statusSynced": "Актуально",
"scheduledCron": "Автообновление",
"lastSync": "Последнее обновление"
},
"resetFocus": "Сбросить фокус",
"resetFocus": "Показать всё",
"listView": "Список",
"graphAriaLabel": "Семантическая сеть: {clusters} кластеров, {notes} заметок, {bridges} мостовых заметок. Стрелки для навигации.",
"listAriaLabel": "Доступный список кластеров с заметками и мостовыми связями",
"graphAriaLabel": "Карта тем: {clusters} тем, {notes} заметок, {bridges} связующих заметок. Перейдите к списку, чтобы проще ориентироваться.",
"listAriaLabel": "Список тем, заметок и связующих заметок",
"dashboardFilterPlaceholder": "Фильтр мостовых заметок, тем…",
"legendFilterPlaceholder": "Фильтр тем…",
"legendShowLess": "Показать меньше",
@@ -3896,7 +3897,7 @@
"genericError": "Произошла ошибка при отправке на ваш экземпляр.",
"ignore": "освоено",
"processing": "Обработка…",
"processingDetail": "Создание тегов, семантического резюме и эмбеддингов.",
"processingDetail": "Подготовка заметки: метки, краткое содержание, поиск по смыслу.",
"publishedOn": "Опубликовано на {domain}",
"quitSimulator": "Закрыть симулятор",
"realtimeCapture": "Дата: захват в реальном времени",
@@ -4156,7 +4157,7 @@
"match": "Войти",
"memoryEchoDisabled": "Эхо памяти отключено в настройках ИИ.",
"mindMap": "Ментальная карта",
"mindMapEmpty": "Темы пока не обнаружены. Семантический анализ группирует ваши заметки по темам.",
"mindMapEmpty": "Тем пока нет. ИИ группирует ваши заметки по темам.",
"mindMapOpen": "Открыть карту инсайтов →",
"mindMapUnavailable": "Ментальная карта недоступна.",
"new": "записей создано",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "Добавить к заметке",
"bridge": "Мостовая идея",
"connect": "Семантическая ссылка",
"connect": "Связать заметку",
"continue": "Продолжить",
"daily": "Журнал",
"explore": "Исследовать тему",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Ваш «второй мозг» одним взглядом: подсказки ИИ, быстрый захват и следующие шаги. Используйте ярлыки ниже.",
"resumeOpen": "Продолжить",
"review": "Повторять",
"semanticConnection": "Семантическая близость",
"semanticConnection": "Близость",
"sentiment": "Настроение",
"sentimentDominant": "Преобладающий тон на этой неделе",
"suggestedBridge": "Связать {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Усвоение, серия и общее число карточек.",
"gmail": "Письма, синхронизированные через Gmail.",
"inbox": "Заметки, ожидающие распределения по блокнотам.",
"intelligence": "Семантические связи, мостовые идеи и находки агентов.",
"intelligence": "Заметки, которые сходятся, связующие идеи и результаты агентов.",
"link-suggestions": "Отрывки для связи в вашей текущей заметке.",
"mind-map": "Тематические кластеры, размер по объёму записей.",
"next-paths": "AI-предложенные следующие шаги на основе вашей последней работы.",
@@ -4258,7 +4259,7 @@
"resume": "Продолжайте свои самые свежие заметки с того места, где остановились.",
"revision": "Карточки, подлежащие проверке методом интервального повторения.",
"sentiment": "Эмоциональный тон ваших заметок на этой неделе.",
"stats": "Кластеры, мостовые заметки и всего проиндексированных заметок.",
"stats": "Темы, связующие заметки и проиндексированные заметки.",
"usage": "Оставшиеся кредиты ИИ и месячные лимиты."
},
"widgetDone": "Готово",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Коэффициент усвоения, серия повторений и общее число карточек.",
"gmail": "Письма, синхронизированные через интеграцию Gmail.",
"inbox": "Заметки без блокнота. Распределите их, чтобы поддерживать порядок во «втором мозге».",
"intelligence": "AI-открытия: семантические связи между заметками, мостовые идеи и находки агентов.",
"intelligence": "Что нашёл ИИ: заметки, которые сходятся, связующие идеи и результаты агентов.",
"link-suggestions": "Отрывки из других заметок, которые стоит связать с вашей текущей работой.",
"mind-map": "Тематические кластеры по объёму записей. Нажмите, чтобы изучить в Аналитике.",
"next-paths": "Предлагаемые следующие шаги на основе последней отредактированной записи: продолжить, связать, объединить или исследовать.",
@@ -4284,7 +4285,7 @@
"resume": "Ваши недавно обновлённые записи. Продолжите, где остановились.",
"revision": "Карточки для проверки сегодня методом интервального повторения.",
"sentiment": "Эмоциональный тон заметок, отредактированных за последние 7 дней. Требуется минимум 3 недавние заметки и включённый ИИ.",
"stats": "Статистика семантического индекса: активные темы, мостовые заметки, всего проиндексировано.",
"stats": "Сколько тем, связующих заметок и проиндексированных заметок у вас есть.",
"usage": "Ежемесячное использование кредитов ИИ по функциям."
},
"widgetHelpClose": "Закрыть",
@@ -4319,7 +4320,7 @@
"resume": "Продолжить здесь",
"revision": "Карточки",
"sentiment": "Настроение",
"stats": "Семантическая статистика",
"stats": "Темы и заметки",
"usage": "Квота ИИ"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Вставьте его в поле ниже и нажмите «Подключить». Первая синхронизация импортирует все ваши книги и статьи.",
"readwiseHelpStep3": "Каждая книга становится заметкой в блокноте «Readwise 📚» — со всеми вашими заметками-выделениями, упорядоченными.",
"readwiseHelpStep4": "Чтобы обновить новые выделения, вернитесь сюда и нажмите «Синхронизировать сейчас».",
"readwiseHelpStep5": "💡 Совет: создайте ИИ-флешкарты из записи Readwise (кнопка 🎓 в редакторе), чтобы повторять прочитанное.",
"readwiseHelpStep5": "Совет: создайте карточки для повторения из записи Readwise (кнопка карточек вверху заметки), чтобы повторять прочитанное.",
"readwiseInfo": "Как работает Readwise?",
"readwiseSynced": "Синхронизация Readwise — {{created}} создано, {{updated}} обновлено",
"readwiseTokenPlaceholder": "Токен Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Конвертация завершена! Связанный блокнот создан.",
"convertToNotebook": "В блокнот",
"converting": "Конвертация…",
"createLocalDb": "Создать автономную локальную базу данных",
"createLocalDb": "Создать таблицу в этой заметке",
"createNotebook": "Создать блокнот",
"defaultOption1": "Вариант 1",
"defaultOption2": "Вариант 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Устаревший блок удалён.",
"displayModeGallery": "Галерея",
"displayModeTable": "Стол",
"echoLoading": "Поиск семантических связей...",
"echoNameRequired": "Сначала введите имя для этой строки, чтобы найти семантические связи.",
"echoLoading": "Поиск близких заметок…",
"echoNameRequired": "Сначала введите имя этой строки, чтобы искать близкие заметки.",
"echoNoMatch": "Заметок, содержащих «{{query}}», в вашем пространстве не найдено.",
"echoPopoverTitle": "Семантические резонансы 🔮",
"echoPopoverTitle": "Близкие заметки",
"echoSearchError": "Произошла ошибка при поиске.",
"echoUpgradeText": "Конвертируйте эту таблицу в блокнот, чтобы активировать нейроанализ Memento.",
"echoUpgradeText": "Преобразуйте эту таблицу в блокнот, чтобы Memento нашёл близкие заметки.",
"emptyTable": "В таблице нет строк.",
"insertCitation": "Вставить ссылку в редакторе",
"insertDesc": "Встройте структурированные данные вашего блокнота",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Ключевое слово",
"linkToNotebook": "Ссылка на блокнот",
"loadError": "Ошибка загрузки структурированных данных.",
"localDbTitle": "Автономная база данных",
"localDbTitle": "Таблица в этой заметке",
"namePlaceholder": "Введите имя…",
"noEchoFound": "Семантические связи не обнаружены.",
"noEchoFound": "Близких заметок не найдено.",
"noNotebook": "Этот блок требует блокнот. Сначала переместите эту запись в блокнот.",
"noNotebookDesc": "Этот блок отображает структурированный вид блокнота. Выберите блокнот для связи:",
"noSchema": "В этом блокноте ещё нет структурированного вида. Настройте его в заголовке блокнота.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Ссылка на блокнот",
"selectOptionsPlaceholder": "Варианты, разделённые запятыми",
"semanticEcho": "Семантические резонансы",
"switchToLocalDb": "Перейти к локальной базе данных",
"turnIntoLabel": "Встроенная база данных",
"switchToLocalDb": "Вернуться к таблице этой заметки",
"turnIntoLabel": "Таблица в заметке",
"untitled": "Без названия"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Искать заметку…",
"selectOptions": "Варианты (по одному в строке)",
"selectOptionsPlaceholder": "Сделать\\\nВ работе\\\nГотово",
"semanticResonances": "Семантические резонансы",
"semanticResonances": "Заметки, которые сходятся",
"tagApplied": "мостики",
"viewCalendarHint": "Календарь — ваши заметки, упорядоченные по дате",
"viewGallery": "Галерея",

View File

@@ -407,7 +407,7 @@
"placeholder": "搜索",
"searchPlaceholder": "搜索您的笔记...",
"semanticInProgress": "AI 搜索进行中...",
"semanticTooltip": "AI 语义搜索",
"semanticTooltip": "按含义搜索",
"searching": "搜索中...",
"noResults": "未找到结果",
"resultsFound": "找到 {count} 条笔记",
@@ -861,7 +861,7 @@
"compareAll": "比较全部",
"mergeAll": "合并全部",
"close": "关闭",
"affinityBadge": "{percentage} % d'affinité sémantique",
"affinityBadge": "{percentage} % 接近",
"backToNote": "Revenir à ma note",
"badgeLabel": "记忆回声",
"bottomCueConsent": "下方有AI连接",
@@ -918,7 +918,7 @@
"noContentReturned": "API 未返回融合内容",
"unknownDate": "未知日期"
},
"defaultInsight": "这些笔记似乎在语义上相关。",
"defaultInsight": "这些笔记相关。",
"preview": {
"loadError": "Impossible de charger le contenu de cette note.",
"subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "无法清理标签",
"indexingComplete": "索引完成:已处理 {count} 条笔记",
"indexingError": "索引期间出错",
"semanticIndexing": "语义索引",
"semanticIndexingDescription": "为所有笔记生成向量以启用基于意图的搜索",
"semanticIndexing": "按含义搜索的索引",
"semanticIndexingDescription": "为所有笔记准备按含义搜索",
"profile": "个人资料",
"searchNoResults": "未找到匹配的设置",
"languageAuto": "语言设为自动",
@@ -1664,7 +1664,7 @@
"title": "功能",
"description": "AI 驱动的功能",
"titleSuggestions": "AI 驱动的标题建议",
"semanticSearch": "使用嵌入的语义搜索",
"semanticSearch": "按含义搜索",
"paragraphReformulation": "段落改写",
"memoryEcho": "Memory Echo 每日洞察",
"notebookOrganization": "笔记本组织",
@@ -1779,7 +1779,7 @@
},
"indexing": {
"title": "重建搜索索引",
"description": "所有笔记重新生成嵌入以提高语义搜索效果。",
"description": "重建所有笔记的索引,以改进按含义搜索。",
"button": "重建索引",
"success": "索引完成:已处理 {count} 条笔记",
"failed": "索引期间出错"
@@ -1984,7 +1984,7 @@
"legendWiki": "链接到笔记",
"mentionShort": "提及",
"moreNodes": "地图上 +{count}",
"noInbound": "没有入站 wiki 链接指向此笔记。",
"noInbound": "没有其他笔记指向这一篇。",
"noOutbound": "此笔记尚未链接到其他笔记。",
"noWikiYet": "还没有到其他笔记的链接。",
"outboundHelp": "此笔记在文本中使用 [[…]] 链接到的笔记。",
@@ -2190,7 +2190,7 @@
"custom": "自定义"
},
"typeDescriptions": {
"scraper": "抓取多个网站并创建摘要",
"scraper": "阅读多个网站并写出摘要",
"researcher": "搜索有关主题的信息",
"monitor": "监视笔记本并分析笔记",
"slideGenerator": "根据笔记创建 PowerPoint 演示文稿",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "例如:周二 AI 观察",
"description": "描述(可选)",
"descriptionPlaceholder": "每周 AI 新闻摘要",
"urlsLabel": "要抓取的 URL",
"urlsLabel": "要阅读的页面地址",
"urlsOptional": "(可选)",
"sourceNotebook": "要监视的笔记本",
"selectNotebook": "选择笔记本...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "邮件通知",
"notifyEmailHint": "每次运行后通过邮件接收代理结果",
"includeImages": "包含图片",
"includeImagesHint": "从抓取的页面中提取图片并附加到生成的笔记",
"includeImagesHint": "从已阅读的页面取出图片并附到笔记",
"back": "返回",
"configuration": "配置",
"options": "选项",
@@ -2347,15 +2347,15 @@
},
"veilleAI": {
"name": "AI 观察",
"description": "抓取 5 个 AI 专业网站并生成每周摘要。"
"description": "阅读 5 个 AI 网站并写出每周摘要。"
},
"veilleTech": {
"name": "科技观察",
"description": "抓取主要科技网站并创建新闻摘要。"
"description": "阅读主要科技网站并写出新闻摘要。"
},
"veilleDev": {
"name": "开发观察",
"description": "抓取开发网站并总结新技术和框架。"
"description": "阅读开发网站并总结新技术。"
},
"surveillant": {
"name": "笔记观察者",
@@ -2402,7 +2402,7 @@
"tools": {
"title": "代理工具",
"webSearch": "网络搜索",
"webScrape": "网页抓取",
"webScrape": "阅读网页",
"noteSearch": "笔记搜索",
"noteRead": "读取笔记",
"noteCreate": "创建笔记",
@@ -2431,15 +2431,15 @@
"btnLabel": "帮助",
"close": "关闭",
"whatIsAgent": "什么是代理?",
"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.",
"whatIsAgentContent": "An **agent** is an AI assistant that runs automatically to perform tasks for you. It has access to **tools** (web search, reading pages, 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 reads pages, then writes a structured note you can read later.",
"howToUse": "如何使用代理?",
"howToUseContent": "1. 点击**\"新建智能体\"**(或从页面底部的**模板**开始)。",
"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 (e.g. tech news sites, blogs...)\n- **Default tools:** web scraping, note creation\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",
"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, reading pages, note search, note creation\n- **Requirements:** a web search provider must be configured (SearXNG or Brave Search)\n\n### Monitor\nReads a **list of pages** you give it and writes a summary.\n\n- **Fields:** name, list of URLs (e.g. tech news sites, blogs...)\n- **Default tools:** reading pages, note creation\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": "高级模式AI指令最大迭代",
"advancedContent": "点击表单底部的**\"高级模式\"**以访问附加设置。",
"tools": "可用工具(详细)",
"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- **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 5 tech blogs and produces a synthesized summary.\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.",
"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, then can read the most useful 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 reads the top 3.\n\n### Read web pages\nAllows the agent to **read the text of a page** from its address.\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- **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 5 tech blogs and produces a synthesized summary.\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": "频率和计划",
"frequencyContent": "| 频率 | 行为\n|-----------|----------\n| **手动** | 您自己点击\"运行\"。",
"targetNotebook": "目标笔记本",
@@ -2447,7 +2447,7 @@
"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 include:\n\n- **AI Watch** — weekly AI news roundup from 5 specialized sites\n- **Tech Watch** — general tech news summary\n- **Dev Watch** — developer news and new frameworks\n- **Note Observer** — analyzes a notebook and suggests connections\n- **Topic Researcher** — deep research on a specific topic\n\nOnce installed, you can edit the agent to customize it.",
"tips": "提示和故障排除",
"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- **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",
"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- **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- **Page-reading 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",
"tooltips": {
"agentType": "选择代理将执行的任务类型。每种类型具有不同的功能和字段。",
"researchTopic": "代理将在网络上研究的主题。请具体说明以获得更好的结果。",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "升级到Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro包括",
"proSearch": "100 semantic searches / month",
"proSearch": "每月 1,000 个 AI 积分",
"proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "图表生成",
"featureFlashcards": "AI 闪卡",
"featureFlashcards": "复习卡片",
"featurePublishEnhance": "AI发布",
"featureSlides": "幻灯片生成",
"featureVoice": "语音转写",
@@ -3100,7 +3100,7 @@
"businessFeature3": "每月 500 次改写",
"businessFeature4": "每月 1,000 条聊天消息",
"enterpriseTitle": "企业版",
"enterpriseDescription": "自定义配额、SSO、优先支持。",
"enterpriseDescription": "自定义配额、全团队一次登录、优先支持。",
"contactSales": "联系销售",
"startCheckout": "开始",
"checkoutLoading": "加载结账中…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "您的订阅将自动续订。",
"businessDescription": "适合团队和产品负责人。",
"enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML",
"enterpriseFeature2": "全团队一次登录",
"enterpriseFeature3": "专属支持",
"enterpriseFeature4": "自定义账单",
"enterpriseFeature5": "保证SLA",
"enterpriseFeature5": "保证响应时间",
"subtitle": "选择适合您的计划",
"freeDescription": "体验Memento",
"freeF1": "30次语义搜索",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "无法获取计费状态",
"fetchQuotasFailed": "无法获取配额",
"fetchInvoicesFailed": "无法加载计费历史记录。",
"savePercent": "节省 ~17%",
"savePercent": "节省约 {percent}%",
"billedYearTotal": "即每年 {price}",
"cancelSubscription": "取消订阅",
"changeOffer": "更换套餐",
"downgradeToFree": "回到免费套餐",
@@ -3379,13 +3380,13 @@
"cta": "联系我们",
"feature0": "包含 Business 全部",
"feature1": "无限智能体",
"feature2": "SSO / SAML",
"feature3": "审计日志与 SLA",
"feature2": "全团队一次登录",
"feature3": "活动记录与保证响应时间",
"feature4": "专属支持",
"feature5": "现场入职"
"feature5": "安装陪同"
},
"basicPrice": "免费",
"savePercent": "节省约 17%",
"savePercent": "节省约 {percent}%",
"proMonthly": "€9.90",
"proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90",
@@ -3494,7 +3495,7 @@
"sectionDescription": "永久且不可逆地删除您的账户和所有相关数据。",
"whatWillBeDeleted": "以下内容将被永久删除:",
"item1": "所有笔记、笔记本和附件",
"item2": "所有pgvector语义嵌入",
"item2": "用于关联笔记的索引",
"item3": "所有BYOK API密钥",
"item4": "所有AI对话和头脑风暴会话",
"item5": "配额和使用历史",
@@ -3559,7 +3560,7 @@
"step_features_title": "您的 AI 超能力",
"step_features_subtitle": "选择从哪里开始。",
"step_features_cta": "开始吧!",
"feature_search_title": "义搜索",
"feature_search_title": "按含义搜索",
"feature_search_desc": "按含义查找任何笔记,而不仅仅是关键词。",
"feature_flashcards_title": "AI 闪卡",
"feature_flashcards_desc": "一键从笔记生成复习卡片。",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "点击想法卡片以用子想法扩展并进一步探索。",
"hint_brainstorm_export_title": "导出会话",
"hint_brainstorm_export_desc": "将整个头脑风暴会话导出为结构化笔记到选定的笔记本。",
"hint_insights_clusters_title": "笔记聚类",
"hint_insights_clusters_desc": "您的笔记会自动分组为主题聚类。点击聚类查看详情。",
"hint_insights_clusters_title": "笔记主题",
"hint_insights_clusters_desc": "笔记已按主题分组。点击主题即可查看笔记。",
"hint_insights_bridge_title": "桥接笔记",
"hint_insights_bridge_desc": "桥笔记连接多个聚类,因为包含重要连接而被高亮显示。",
"hint_insights_refresh_title": "刷新聚类",
"hint_insights_refresh_desc": "如果添加了笔记,点击\"刷新\"重新计算聚类。"
"hint_insights_bridge_desc": "桥笔记连接多个主题,显示想法在何处交叉。",
"hint_insights_refresh_title": "更新主题",
"hint_insights_refresh_desc": "如果添加了笔记,点击「更新」以重新计算主题。"
},
"blockAction": {
"moveUp": "向上移动块",
@@ -3657,15 +3658,15 @@
"insightsView": {
"title": "关联",
"toggleMenu": "显示或隐藏菜单",
"subtitle": "发现知识背后的隐藏架构",
"subtitle": "看看您的笔记如何彼此关联",
"resync": "更新",
"mapping": "映射中…",
"loading": "加载笔记中…",
"mappingTitle": "正在映射您的知识…",
"mappingHint": "这可能需要一到三分钟。您可以继续浏览;页面会自动更新。",
"analyzeNow": "开始语义分析",
"emptyNeedMoreNotes": "添加 {count} 条更多笔记以解锁语义聚类(最少10条。",
"embeddingsHint": "仅{indexed}/{total}笔记被AI索引。",
"analyzeNow": "更新主题",
"emptyNeedMoreNotes": "添加 {count} 条笔记即可分组主题(至少 10 条)。",
"embeddingsHint": "仅 {indexed} / {total} 条笔记已准备好按主题分组。",
"vsGraphHint": "这与\"链接地图\"不同这里AI按语义分组而非按链接。",
"openGraphMap": "打开链接地图",
"analysisFailed": "分析失败。请检查AI设置。",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "笔记",
"clusterFallback": "主题 {index}",
"unclusteredNotes": "{count} 条笔记未分配到任何主题(从图中隐藏)。",
"emptyTitle": "发现您的知识集群",
"emptyDescription": "点击\"重新同步网络\"来分析您的笔记并发现隐藏的联系",
"emptyTitle": "发现您的主题",
"emptyDescription": "点击「更新」按主题整理笔记。",
"stats": {
"clusters": "集群",
"bridgeNotes": "桥梁笔记",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro"
},
"clusters": {
"title": "语义聚类",
"title": "主题",
"notesCount": "{count} 条笔记",
"centralNotes": "核心笔记",
"emptyCluster": "此聚类中无笔记"
"emptyCluster": "此主题中无笔记"
},
"bridgeNotes": {
"title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "相似度 {score}%",
"moreThemes": "+{count}",
"needsResync": "重新同步网络以刷新桥接对。",
"scoreHint": "此笔记桥接的两个主题的平均语义亲和度(余弦相似度)。"
"scoreHint": "这条笔记与它所连接的两个主题有多接近。"
},
"suggestions": {
"title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "图谱",
"viewDashboard": "仪表板",
"isolatedClusters": {
"title": "孤立聚类 ({count})",
"title": "孤立主题 ({count})",
"badge": "未连接",
"empty": "所有集群已互联!"
"empty": "所有主题都已至少由一条桥梁笔记相连。"
},
"focusCluster": {
"title": "集群焦点已激活",
"description": "此主题聚类汇集了 {count} 条互补笔记。点击笔记打开。",
"title": "已打开主题",
"description": "此主题汇集了 {count} 条笔记。点击笔记即可打开。",
"close": "关闭"
},
"badgeDominant": "主要",
"bridgeCount": "桥梁",
"echoTitle": "您不断回到这个想法",
"tipClusters": "AI按语义亲和性对您的笔记进行了分组,无论属于哪个笔记本。",
"tipClusters": "AI 已按主题整理笔记,即使它们在不同笔记本。",
"tipClustersAction": "点击主题查看其笔记。点击笔记以打开。",
"tipBridgeNotes": "These notes speak to two different themes at once. They reveal where your thinking crosses boundaries — often where the most original ideas hide.",
"tipBridgeNotes": "A bridge note links two themes. We keep only the strongest link.",
"tipBridgeNotesAction": "点击笔记以打开并理解连接。",
"tipEcho": "Memory Echo检测到两条在不同时间编写但涵盖同一主题的笔记。",
"tipEchoAction": "两条笔记,同一个想法,不同的时间。点击探索。",
"tipSuggestions": "These themes have no note linking them yet. AI proposes a starting idea. Click 'Create bridge note' to write it and open it in the editor.",
"tipSuggestions": "Suggestions only when two themes truly meet — not forced pairings.",
"tipSuggestionsAction": "点击\"创建桥接笔记\"来编写并立即打开。",
"tipIsolated": "这些主题是孤立的:没有笔记将它们与其他主题连接。也许缺少一个视角。",
"tipIsolatedAction": "这些主题没有连接到其余思考的笔记。",
"recalcSystem": {
"title": "重算系统",
"statusSynced": "已同步",
"scheduledCron": "已计划",
"lastSync": "上次同步"
"title": "主题更新",
"statusSynced": "已是最新",
"scheduledCron": "自动更新",
"lastSync": "上次更新"
},
"resetFocus": "重置焦点",
"resetFocus": "显示全部",
"listView": "列表",
"graphAriaLabel": "语义网络{clusters} 个聚类{notes} 条笔记,{bridges} 条桥笔记。箭头键导航。",
"listAriaLabel": "可访问的聚类列表,包含笔记和桥接连接",
"graphAriaLabel": "主题地图{clusters} 个主题{notes} 条笔记,{bridges} 条桥笔记。切换到列表以便浏览。",
"listAriaLabel": "主题、笔记和桥梁笔记列表",
"dashboardFilterPlaceholder": "过滤桥接笔记、主题…",
"legendFilterPlaceholder": "过滤主题…",
"legendShowLess": "收起",
@@ -3896,7 +3897,7 @@
"genericError": "发送到您的实例时出错了。",
"ignore": "已掌握",
"processing": "正在处理…",
"processingDetail": "正在生成标签、语义摘要和嵌入。",
"processingDetail": "正在准备笔记:标签、摘要、按含义搜索。",
"publishedOn": "发布于 {domain}",
"quitSimulator": "关闭模拟器",
"realtimeCapture": "日期:实时捕获",
@@ -4156,7 +4157,7 @@
"match": "登录",
"memoryEchoDisabled": "记忆回声在你的 AI 设置中已禁用。",
"mindMap": "思维导图",
"mindMapEmpty": "还没有检测到主题。语义分析按主题对你的笔记进行分组。",
"mindMapEmpty": "还没有主题。AI 会按主题分组您的笔记。",
"mindMapOpen": "打开洞察地图 →",
"mindMapUnavailable": "思维导图不可用。",
"new": "创建的笔记",
@@ -4183,7 +4184,7 @@
"pathTypes": {
"add-link": "添加到笔记",
"bridge": "桥接思路",
"connect": "语义链接",
"connect": "关联一条笔记",
"continue": "继续",
"daily": "日记",
"explore": "探索主题",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "您的第二大脑一览AI建议、快速捕捉和后续步骤。使用下方快捷方式立即行动。",
"resumeOpen": "继续",
"review": "复习",
"semanticConnection": "语义亲和度",
"semanticConnection": "接近程度",
"sentiment": "情感",
"sentimentDominant": "本周主导情绪",
"suggestedBridge": "连接 {clusterA} 和 {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "留存、连续记录和总卡片数。",
"gmail": "通过 Gmail 同步的邮件捕获。",
"inbox": "等待归档到笔记本的笔记。",
"intelligence": "语义链接、桥接想法和代理发现。",
"intelligence": "彼此关联的笔记、起桥梁作用的想法,以及助手的结果。",
"link-suggestions": "要在当前笔记中链接的段落。",
"mind-map": "主题集群按笔记数量调整大小。",
"next-paths": "AI根据你最近的工作建议的下一步。",
@@ -4258,7 +4259,7 @@
"resume": "从你上次离开的地方继续最近的笔记。",
"revision": "待间隔复习的闪卡。",
"sentiment": "本周笔记的情感基调。",
"stats": "集群、桥接笔记和索引笔记总数。",
"stats": "主题、起桥梁作用的笔记和索引笔记。",
"usage": "剩余 AI 额度和月度限制。"
},
"widgetDone": "完成",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "学习留存率、复习连续记录和总卡片数。",
"gmail": "通过 Gmail 集成同步的邮件捕获。",
"inbox": "还没有笔记本的笔记。归档它们以保持你的第二大脑整洁。",
"intelligence": "AI发现:笔记间的语义链接、桥接思路和代理发现。",
"intelligence": "AI 找到的内容:彼此关联的笔记、起桥梁作用的想法,以及助手的结果。",
"link-suggestions": "其他笔记中值得链接到你当前工作的段落。",
"mind-map": "主题集群按笔记数量调整大小。点击在洞察中探索。",
"next-paths": "基于您最近编辑的笔记的建议后续步骤:继续、链接、桥接或研究。",
@@ -4284,7 +4285,7 @@
"resume": "您最近更新的笔记。从您停下的地方继续。",
"revision": "今天待间隔复习的闪卡。",
"sentiment": "过去 7 天编辑笔记的情感基调。需要至少 3 条近期笔记并启用 AI。",
"stats": "语义索引统计:活跃主题、桥接笔记、已索引笔记总数。",
"stats": "主题数量、起桥梁作用的笔记,以及已索引笔记。",
"usage": "按功能统计的月度 AI 额度使用情况。"
},
"widgetHelpClose": "关闭",
@@ -4319,7 +4320,7 @@
"resume": "从这里继续",
"revision": "闪卡",
"sentiment": "情感",
"stats": "语义统计",
"stats": "主题与笔记",
"usage": "AI配额"
}
},
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "将其粘贴到下方字段中并点击「连接」。首次同步会导入你所有的书籍和文章。",
"readwiseHelpStep3": "每本书都会变成「Readwise 📚」笔记本中的一条笔记——所有高亮内容都已整理好。",
"readwiseHelpStep4": "要更新新高亮,请回到此处并点击\"立即同步\"。",
"readwiseHelpStep5": "💡 提示:从 Readwise 笔记创建 AI 闪卡(编辑器中的 🎓 按钮)以复习您的阅读。",
"readwiseHelpStep5": "提示:从 Readwise 笔记创建复习卡片(笔记顶部的卡片按钮)以复习您的阅读。",
"readwiseInfo": "Readwise 如何运作?",
"readwiseSynced": "Readwise 同步——创建了 {{created}} 条,更新了 {{updated}} 条",
"readwiseTokenPlaceholder": "Readwise 令牌…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "转换完成!已创建关联笔记本。",
"convertToNotebook": "转换为笔记本",
"converting": "转换中…",
"createLocalDb": "创建独立本地数据库",
"createLocalDb": "在本笔记中创建表格",
"createNotebook": "创建笔记本",
"defaultOption1": "选项 1",
"defaultOption2": "选项 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "已移除过时块。",
"displayModeGallery": "画廊",
"displayModeTable": "桌子",
"echoLoading": "正在搜索语义连接...",
"echoNameRequired": "请先输入此行的名称以搜索语义连接。",
"echoLoading": "正在查找相近笔记…",
"echoNameRequired": "请先为这一行输入名称,以便查找相近笔记。",
"echoNoMatch": "在你的工作区中未找到包含「{{query}}」的笔记。",
"echoPopoverTitle": "语义共振 🔮",
"echoPopoverTitle": "相近笔记",
"echoSearchError": "搜索时出错。",
"echoUpgradeText": "此表转为笔记本以激活Memento的神经分析。",
"echoUpgradeText": "此表转为笔记本,以便 Memento 找出相近笔记。",
"emptyTable": "表格中没有行。",
"insertCitation": "在编辑器中插入链接",
"insertDesc": "嵌入你笔记本的结构化数据",
@@ -4514,9 +4515,9 @@
"keywordMatch": "关键词",
"linkToNotebook": "链接到笔记本",
"loadError": "加载结构化数据失败。",
"localDbTitle": "独立数据库",
"localDbTitle": "本笔记中的表格",
"namePlaceholder": "输入名称…",
"noEchoFound": "未检测到语义连接。",
"noEchoFound": "未找到相近笔记。",
"noNotebook": "此块需要笔记本。先将此笔记移至笔记本。",
"noNotebookDesc": "此块显示笔记本的结构化视图。选择要链接的笔记本:",
"noSchema": "此笔记本尚无结构化视图。从笔记本标题设置。",
@@ -4528,8 +4529,8 @@
"selectNotebook": "链接到笔记本",
"selectOptionsPlaceholder": "用逗号分隔的选项",
"semanticEcho": "语义共振",
"switchToLocalDb": "切换到本地数据库",
"turnIntoLabel": "内联数据库",
"switchToLocalDb": "回到本笔记的表格",
"turnIntoLabel": "笔记中的表格",
"untitled": "无标题"
},
"structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "搜索笔记…",
"selectOptions": "选项(每行一个)",
"selectOptionsPlaceholder": "待办\\\n进行中\\\n完成",
"semanticResonances": "语义共振",
"semanticResonances": "相关笔记",
"tagApplied": "桥",
"viewCalendarHint": "日历——按日期组织的笔记",
"viewGallery": "画廊",