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>
<button <button
onClick={handleCreate} 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" /> <Plus className="w-4 h-4" />
{t('agents.newAgent')} {t('agents.newAgent')}
@@ -268,7 +268,7 @@ export function AgentsPageClient({
{typeFilter === opt.value && ( {typeFilter === opt.value && (
<motion.div <motion.div
layoutId="activeAgentTag" 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> </button>

View File

@@ -167,7 +167,7 @@ export default function DataSettingsPage() {
loadingText: t('dataManagement.exporting'), loadingText: t('dataManagement.exporting'),
buttonText: t('dataManagement.export.button'), buttonText: t('dataManagement.export.button'),
onAction: handleExport, 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, icon: FolderArchive,
@@ -179,7 +179,7 @@ export default function DataSettingsPage() {
loadingText: t('dataManagement.zipExporting'), loadingText: t('dataManagement.zipExporting'),
buttonText: t('dataManagement.zipExport.button'), buttonText: t('dataManagement.zipExport.button'),
onAction: handleZipExport, 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, icon: Upload,

View File

@@ -163,7 +163,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
checked={emailNotifications} checked={emailNotifications}
onChange={(e) => handleEmailNotificationsChange(e.target.checked)} 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> </label>
</div> </div>
@@ -179,7 +179,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
checked={desktopNotifications} checked={desktopNotifications}
onChange={(e) => handleDesktopNotificationsChange(e.target.checked)} 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> </label>
</div> </div>
@@ -195,7 +195,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
checked={autoSave} checked={autoSave}
onChange={(e) => handleAutoSaveChange(e.target.checked)} 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> </label>
</div> </div>
</div> </div>
@@ -298,7 +298,7 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
) : ( ) : (
<button <button
onClick={() => requestAiConsent()} 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')} {t('consent.ai.grantButton')}
</button> </button>

View File

@@ -215,7 +215,7 @@ export default function IntegrationsPage() {
/> />
<button <button
onClick={handleGmailConnect} 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} /> <Mail size={14} />
{t('integrations.gmail.connect')} {t('integrations.gmail.connect')}
@@ -277,7 +277,7 @@ export default function IntegrationsPage() {
/> />
<button <button
onClick={handleCalConnect} 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} /> <CalendarDays size={14} />
{t('integrations.connectCalendar')} {t('integrations.connectCalendar')}
@@ -367,7 +367,7 @@ export default function IntegrationsPage() {
<button <button
onClick={handleRwConnect} onClick={handleRwConnect}
disabled={!rwToken.trim() || rwConnecting} 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} {rwConnecting ? <Loader2 size={14} className="animate-spin" /> : null}
{t('integrations.connect')} {t('integrations.connect')}

View File

@@ -6,11 +6,20 @@ import { useState } from 'react'
import { useQuery } from '@tanstack/react-query' import { useQuery } from '@tanstack/react-query'
import { useLanguage } from '@/lib/i18n' import { useLanguage } from '@/lib/i18n'
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants' 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() { export default function PricingPage() {
const { t } = useLanguage() const { t } = useLanguage()
const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly') const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly')
const trialDays = SUBSCRIPTION_TRIAL_DAYS const trialDays = SUBSCRIPTION_TRIAL_DAYS
const annualSavePercent = annualDiscountPercent(
DEFAULT_PRICES.PRO.month.amount,
DEFAULT_PRICES.PRO.year.amount,
)
const { data: byokCatalog } = useQuery({ const { data: byokCatalog } = useQuery({
queryKey: ['public', 'byok-catalog'], queryKey: ['public', 'byok-catalog'],
queryFn: async () => { queryFn: async () => {
@@ -48,51 +57,28 @@ export default function PricingPage() {
] ]
return ( return (
<main className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white"> <PublicSiteChrome currentPage="pricing">
<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]"> <section className="px-5 sm:px-8 py-20 sm:py-28">
<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">
<div className="max-w-6xl mx-auto"> <div className="max-w-6xl mx-auto">
<div className="text-center mb-12"> <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> <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> <p className="text-white/80 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/10 bg-white/[0.03]"> <div className="inline-flex p-1 rounded-full border border-white/15 bg-white/[0.04]">
<button <button
type="button" type="button"
onClick={() => setBillingInterval('monthly')} 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')} {t('landing.pricing.monthly')}
</button> </button>
<button <button
type="button" type="button"
onClick={() => setBillingInterval('annual')} 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')} {t('landing.pricing.annual')}
<span className="absolute -top-3 -right-1 text-[10px] text-[#D4A373] whitespace-nowrap"> <span className="absolute -top-3 -right-1 text-[11px] text-[#E8C39A] whitespace-nowrap">
{t('landing.pricing.savePercent')} {t('landing.pricing.savePercent', { percent: annualSavePercent })}
</span> </span>
</button> </button>
</div> </div>
@@ -103,32 +89,32 @@ export default function PricingPage() {
key={plan.key} key={plan.key}
className={`rounded-2xl border p-6 flex flex-col ${ className={`rounded-2xl border p-6 flex flex-col ${
plan.popular plan.popular
? 'border-[#D4A373]/50 bg-[#D4A373]/10' ? 'border-[#D4A373]/60 bg-[#D4A373]/12'
: 'border-white/[0.08] bg-white/[0.02]' : 'border-white/[0.12] bg-white/[0.04]'
}`} }`}
> >
{plan.popular && ( {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')} {t('landing.pricing.popular')}
</span> </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`)} {t(`landing.pricing.${plan.key}.name`)}
</h2> </h2>
<div className="flex items-baseline gap-1 mb-2"> <div className="flex items-baseline gap-1 mb-2">
<span className="text-3xl font-serif">{plan.price}</span> <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> </div>
{plan.hasTrial && ( {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 })} {t('landing.pricing.trialBadge', { days: trialDays })}
</p> </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"> <ul className="space-y-2.5 mb-8 flex-1">
{plan.hasTrial && ( {plan.hasTrial && (
<li className="flex gap-2 text-xs text-[#D4A373]/90"> <li className="flex gap-2 text-xs text-[#E8C39A]">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{t('landing.pricing.trialFeature', { days: trialDays })} {t('landing.pricing.trialFeature', { days: trialDays })}
</li> </li>
)} )}
@@ -136,8 +122,8 @@ export default function PricingPage() {
const feat = t(`landing.pricing.${plan.key}.feature${j}`, { count: providerCount }) const feat = t(`landing.pricing.${plan.key}.feature${j}`, { count: providerCount })
if (!feat || feat.startsWith('landing.')) return null if (!feat || feat.startsWith('landing.')) return null
return ( return (
<li key={j} className="flex gap-2 text-sm text-white/80"> <li key={j} className="flex gap-2 text-sm text-[#F4F1EA]/90">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{feat} {feat}
</li> </li>
) )
@@ -148,7 +134,7 @@ export default function PricingPage() {
className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${ className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${
plan.popular plan.popular
? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white' ? '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 {plan.hasTrial
@@ -160,6 +146,6 @@ export default function PricingPage() {
</div> </div>
</div> </div>
</section> </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() { export async function getTrashedNotes() {
const session = await auth() const session = await auth()
if (!session?.user?.id) return [] 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 // Toggle functions
export async function togglePin( export async function togglePin(
id: string, id: string,
@@ -1169,6 +1204,8 @@ import {
deleteNote as _deleteNote, deleteNote as _deleteNote,
trashNote as _trashNote, trashNote as _trashNote,
restoreNote as _restoreNote, restoreNote as _restoreNote,
bulkTrashNotes as _bulkTrashNotes,
restoreNotes as _restoreNotes,
getTrashedNotes as _getTrashedNotes, getTrashedNotes as _getTrashedNotes,
permanentDeleteNote as _permanentDeleteNote, permanentDeleteNote as _permanentDeleteNote,
emptyTrash as _emptyTrash, 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 deleteNote(...args: Parameters<typeof _deleteNote>) { return _deleteNote(...args) }
export async function trashNote(...args: Parameters<typeof _trashNote>) { return _trashNote(...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 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 getTrashedNotes(...args: Parameters<typeof _getTrashedNotes>) { return _getTrashedNotes(...args) }
export async function permanentDeleteNote(...args: Parameters<typeof _permanentDeleteNote>) { return _permanentDeleteNote(...args) } export async function permanentDeleteNote(...args: Parameters<typeof _permanentDeleteNote>) { return _permanentDeleteNote(...args) }
export async function emptyTrash(...args: Parameters<typeof _emptyTrash>) { return _emptyTrash(...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 ${ className={`px-3 py-1.5 rounded-full text-xs font-semibold transition-all border ${
activeCategory === cat.id 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' : 'bg-paper text-muted-ink border-border/40 hover:border-ink/30'
}`} }`}
> >

View File

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

View File

@@ -18,9 +18,18 @@ interface BridgeNote {
note?: { id: string; title: string | null } 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 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 } { function clusterPoint(index: number, count: number): { x: number; y: number } {
if (count === 1) return { x: 50, y: 42 } if (count === 1) return { x: 50, y: 42 }
const angle = -Math.PI / 2 + (index * 2 * Math.PI) / count 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" 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" /> <Layers size={22} className="text-concrete/35" />
<p className="text-xs text-concrete italic max-w-[220px]">{t('homeDashboard.mindMapEmpty')}</p> <p className="text-[13px] text-ink/80 dark:text-dark-ink/80 italic max-w-[220px]">{t('homeDashboard.mindMapEmpty')}</p>
<span className="text-[9px] font-mono uppercase font-bold text-brand-accent">{t('homeDashboard.mindMapOpen')}</span> <span className="text-[13px] font-semibold uppercase tracking-wider text-brand-accent">{t('homeDashboard.mindMapOpen')}</span>
</button> </button>
) )
} }
@@ -85,7 +94,7 @@ export function DashboardMindOrbit({
<button <button
type="button" type="button"
onClick={onOpenInsights} 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')} {t('homeDashboard.fullMap')}
<ArrowUpRight size={10} /> <ArrowUpRight size={10} />
@@ -108,11 +117,11 @@ export function DashboardMindOrbit({
d={`M 50 44 L ${point.x} ${point.y}`} d={`M 50 44 L ${point.x} ${point.y}`}
fill="none" fill="none"
stroke={color} stroke={color}
strokeWidth={0.7} strokeWidth={1.2}
strokeLinecap="round" strokeLinecap="round"
vectorEffect="non-scaling-stroke" vectorEffect="non-scaling-stroke"
initial={reduced ? false : { pathLength: 0, opacity: 0 }} 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 }} 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 }} transition={{ duration: reduced ? 0 : 0.38, delay: reduced ? 0 : 0.18 + idx * 0.05, ease: EASE }}
> >
<div <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={{ style={{
width: size, width: size,
height: size, height: size,
backgroundColor: `${color}cc`, backgroundColor: color,
borderColor: `${color}40`, borderColor: color,
fontSize: Math.max(9, size * 0.22), color: clusterInk(color),
fontSize: Math.max(13, size * 0.28),
}} }}
> >
{cluster.noteIds.length} {cluster.noteIds.length}
</div> </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} {label}
</span> </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} {label}
</span> </span>
</motion.button> </motion.button>
@@ -182,12 +192,12 @@ export function DashboardMindOrbit({
> >
<Zap size={11} className="text-brand-accent shrink-0" /> <Zap size={11} className="text-brand-accent shrink-0" />
<div className="min-w-0 flex-1"> <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')} {topBridge.note.title || t('homeDashboard.untitled')}
</p> </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> </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)}% {Math.round(topBridge.bridgeScore * 100)}%
</span> </span>
</motion.button> </motion.button>

View File

@@ -4,7 +4,7 @@ import React, { useState, useEffect, useCallback, useRef, useTransition, useMemo
import { useSearchParams, useRouter } from 'next/navigation' import { useSearchParams, useRouter } from 'next/navigation'
import dynamic from 'next/dynamic' import dynamic from 'next/dynamic'
import { Note } from '@/lib/types' 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 { NotesListViews, type NotesLayoutMode, type NotesClassicLayoutMode, isClassicLayoutMode } from '@/components/notes-list-views'
import { import {
NOTES_LAYOUT_STORAGE_KEY, NOTES_LAYOUT_STORAGE_KEY,
@@ -36,7 +36,8 @@ import { toast } from 'sonner'
import { AnimatePresence, motion } from 'motion/react' import { AnimatePresence, motion } from 'motion/react'
import { isDashboardHomeRoute } from '@/lib/dashboard/home-route' import { isDashboardHomeRoute } from '@/lib/dashboard/home-route'
import { ConfirmDeleteNoteDialog } from '@/components/confirm-delete-note-dialog' 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' type SortOrder = 'newest' | 'oldest' | 'alpha' | 'manual'
@@ -163,6 +164,9 @@ export function HomeClient({
const [showStudyPlanner, setShowStudyPlanner] = useState(false) const [showStudyPlanner, setShowStudyPlanner] = useState(false)
const [showOrganizer, setShowOrganizer] = useState(false) const [showOrganizer, setShowOrganizer] = useState(false)
const [notePendingDelete, setNotePendingDelete] = useState<Note | null>(null) 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(() => { const handleExportCSV = useCallback(() => {
if (!searchParams.get('notebook')) return if (!searchParams.get('notebook')) return
@@ -194,6 +198,10 @@ export function HomeClient({
}, [searchParams]) }, [searchParams])
const notebookFilter = searchParams.get('notebook') const notebookFilter = searchParams.get('notebook')
const isInboxView =
!notebookFilter &&
searchParams.get('shared') !== '1' &&
searchParams.get('reminders') !== '1'
const schemaHook = useNotebookSchema(notebookFilter) const schemaHook = useNotebookSchema(notebookFilter)
const structuredModeActive = Boolean(notebookFilter && schemaHook.schema) const structuredModeActive = Boolean(notebookFilter && schemaHook.schema)
const wantsStructuredView = Boolean( const wantsStructuredView = Boolean(
@@ -602,6 +610,68 @@ export function HomeClient({
[noteVisibleInCurrentView, patchNoteInList, removeNoteFromList, t] [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>) => { const handleNoteContentPatch = useCallback((noteId: string, patch: Partial<Note>) => {
setNotes((prev) => { setNotes((prev) => {
const next = prev.map((n) => (n.id === noteId ? { ...n, ...patch } : n)) const next = prev.map((n) => (n.id === noteId ? { ...n, ...patch } : n))
@@ -827,6 +897,27 @@ export function HomeClient({
return sortedNotes.filter(n => n.isPinned) return sortedNotes.filter(n => n.isPinned)
}, [sortedNotes]) }, [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> = { const sortLabels: Record<SortOrder, string> = {
newest: t('sidebar.sortNewest'), newest: t('sidebar.sortNewest'),
oldest: t('sidebar.sortOldest'), oldest: t('sidebar.sortOldest'),
@@ -928,6 +1019,8 @@ export function HomeClient({
? t('sidebar.sharedWithMe') ? t('sidebar.sharedWithMe')
: searchParams.get('reminders') === '1' : searchParams.get('reminders') === '1'
? t('sidebar.reminders') ? t('sidebar.reminders')
: isInboxView
? t('sidebar.inbox')
: t('notes.title')} : t('notes.title')}
</h1> </h1>
</div> </div>
@@ -1224,6 +1317,18 @@ export function HomeClient({
</div> </div>
</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 && ( {availableTags.length > 0 && (
<div className="flex flex-col gap-3"> <div className="flex flex-col gap-3">
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
@@ -1381,6 +1486,14 @@ export function HomeClient({
onNoteIllustrationGenerated={handleNoteIllustrationGenerated} onNoteIllustrationGenerated={handleNoteIllustrationGenerated}
onNoteIllustrationDeleted={handleNoteIllustrationDeleted} onNoteIllustrationDeleted={handleNoteIllustrationDeleted}
onGridReorder={handleGridReorder} 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> </div>
@@ -1499,11 +1612,16 @@ export function HomeClient({
)} )}
<ConfirmDeleteNoteDialog <ConfirmDeleteNoteDialog
open={notePendingDelete != null} open={notePendingDelete != null || bulkTrashOpen}
onOpenChange={(open) => { 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 && ( {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 { motion, AnimatePresence } from 'motion/react'
import { import {
ArrowRight, Menu, X, Check, BrainCircuit, ArrowRight, Check, BrainCircuit,
Network, GraduationCap, Bot, KeyRound, Globe, ChevronDown Network, GraduationCap, Bot, KeyRound
} from 'lucide-react' } from 'lucide-react'
import Link from 'next/link' import Link from 'next/link'
import Image from 'next/image' import Image from 'next/image'
import { useLanguage } from '@/lib/i18n' import { useLanguage } from '@/lib/i18n'
import type { SupportedLanguage } from '@/lib/i18n/load-translations'
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants' 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 { 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 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() { export function LandingPage() {
const { t, language, setLanguage } = useLanguage() const { t } = useLanguage()
const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly') const [billingInterval, setBillingInterval] = useState<'monthly' | 'annual'>('monthly')
const [menuOpen, setMenuOpen] = useState(false)
const [langOpen, setLangOpen] = useState(false)
const [echoIndex, setEchoIndex] = useState(0) const [echoIndex, setEchoIndex] = useState(0)
const langRef = useRef<HTMLDivElement>(null)
const { data: byokCatalog } = useQuery({ const { data: byokCatalog } = useQuery({
queryKey: ['public', 'byok-catalog'], queryKey: ['public', 'byok-catalog'],
queryFn: async () => { queryFn: async () => {
@@ -51,36 +34,16 @@ export function LandingPage() {
}) })
const byokProviders = byokCatalog?.providers ?? [] 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(() => { useEffect(() => {
const id = setInterval(() => setEchoIndex((i) => (i + 1) % ECHO_LINES.length), 3200) const id = setInterval(() => setEchoIndex((i) => (i + 1) % ECHO_LINES.length), 3200)
return () => clearInterval(id) 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 trialDays = SUBSCRIPTION_TRIAL_DAYS
const annualSavePercent = annualDiscountPercent(
DEFAULT_PRICES.PRO.month.amount,
DEFAULT_PRICES.PRO.year.amount,
)
const PLANS = [ const PLANS = [
{ key: 'basic', popular: false, hasTrial: false, price: t('landing.pricing.basicPrice'), period: '' }, { 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 scrollPublicHash = (hash: string) => {
const id = hash.replace(/^#/, '') const id = hash.replace(/^#/, '')
const target = document.getElementById(id) const target = document.getElementById(id)
@@ -130,138 +86,7 @@ export function LandingPage() {
}, []) }, [])
return ( return (
<div className="min-h-screen bg-[#0B0A09] text-[#F4F1EA] font-[family-name:var(--font-manrope)] selection:bg-[#D4A373]/40 selection:text-white"> <PublicSiteChrome currentPage="home" onHashNavigate={scrollPublicHash}>
{/* 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>
{/* ── HERO ── */} {/* ── HERO ── */}
<section className="relative min-h-[100dvh] flex flex-col justify-center pt-28 pb-16 px-5 sm:px-8 overflow-hidden"> <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 */} {/* Atmosphere — warm, not purple neon */}
@@ -524,23 +349,23 @@ export function LandingPage() {
<div className="max-w-6xl mx-auto"> <div className="max-w-6xl mx-auto">
<div className="text-center mb-12"> <div className="text-center mb-12">
<h2 className="font-serif text-3xl sm:text-5xl tracking-tight mb-4">{t('landing.pricing.title')}</h2> <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> <p className="text-white/80 mb-8">{t('landing.pricing.desc')}</p>
<div className="inline-flex p-1 rounded-full border border-white/10 bg-white/[0.03]"> <div className="inline-flex p-1 rounded-full border border-white/15 bg-white/[0.04]">
<button <button
type="button" type="button"
onClick={() => setBillingInterval('monthly')} 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')} {t('landing.pricing.monthly')}
</button> </button>
<button <button
type="button" type="button"
onClick={() => setBillingInterval('annual')} 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')} {t('landing.pricing.annual')}
<span className="absolute -top-3 -right-1 text-[10px] text-[#D4A373] whitespace-nowrap"> <span className="absolute -top-3 -right-1 text-[11px] text-[#E8C39A] whitespace-nowrap">
{t('landing.pricing.savePercent')} {t('landing.pricing.savePercent', { percent: annualSavePercent })}
</span> </span>
</button> </button>
</div> </div>
@@ -551,32 +376,32 @@ export function LandingPage() {
key={plan.key} key={plan.key}
className={`rounded-2xl border p-6 flex flex-col ${ className={`rounded-2xl border p-6 flex flex-col ${
plan.popular plan.popular
? 'border-[#D4A373]/50 bg-[#D4A373]/10' ? 'border-[#D4A373]/60 bg-[#D4A373]/12'
: 'border-white/[0.08] bg-white/[0.02]' : 'border-white/[0.12] bg-white/[0.04]'
}`} }`}
> >
{plan.popular && ( {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')} {t('landing.pricing.popular')}
</span> </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`)} {t(`landing.pricing.${plan.key}.name`)}
</h4> </h4>
<div className="flex items-baseline gap-1 mb-2"> <div className="flex items-baseline gap-1 mb-2">
<span className="text-3xl font-serif">{plan.price}</span> <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> </div>
{plan.hasTrial && ( {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 })} {t('landing.pricing.trialBadge', { days: trialDays })}
</p> </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"> <ul className="space-y-2.5 mb-8 flex-1">
{plan.hasTrial && ( {plan.hasTrial && (
<li className="flex gap-2 text-xs text-[#D4A373]/90"> <li className="flex gap-2 text-xs text-[#E8C39A]">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{t('landing.pricing.trialFeature', { days: trialDays })} {t('landing.pricing.trialFeature', { days: trialDays })}
</li> </li>
)} )}
@@ -586,8 +411,8 @@ export function LandingPage() {
}) })
if (!feat || feat.startsWith('landing.')) return null if (!feat || feat.startsWith('landing.')) return null
return ( return (
<li key={j} className="flex gap-2 text-sm text-white/80"> <li key={j} className="flex gap-2 text-sm text-[#F4F1EA]/90">
<Check size={12} className="text-[#D4A373] mt-0.5 shrink-0" /> <Check size={12} className="text-[#E8C39A] mt-0.5 shrink-0" />
{feat} {feat}
</li> </li>
) )
@@ -598,7 +423,7 @@ export function LandingPage() {
className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${ className={`py-3 rounded-xl text-center text-[13px] font-semibold transition-colors ${
plan.popular plan.popular
? 'bg-[#F4F1EA] text-[#0B0A09] hover:bg-white' ? '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 {plan.hasTrial
@@ -633,48 +458,7 @@ export function LandingPage() {
</div> </div>
</section> </section>
<footer className="px-5 sm:px-8 py-14 border-t border-white/[0.06]"> </PublicSiteChrome>
<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>
) )
} }

View File

@@ -197,7 +197,7 @@ export function McpSettingsPanel({
) : ( ) : (
<Dialog open={createOpen} onOpenChange={setCreateOpen}> <Dialog open={createOpen} onOpenChange={setCreateOpen}>
<DialogTrigger asChild> <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" /> <Plus className="h-3.5 w-3.5" />
{t('mcpSettings.apiKeys.generate')} {t('mcpSettings.apiKeys.generate')}
</button> </button>
@@ -260,7 +260,7 @@ export function McpSettingsPanel({
<DialogFooter> <DialogFooter>
<button <button
onClick={() => setShowRawKey(null)} 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')} {t('mcpSettings.createDialog.done')}
</button> </button>
@@ -297,7 +297,7 @@ function CreateKeyDialog({ onGenerate, isPending }: { onGenerate: (name: string)
<button <button
onClick={() => onGenerate(name)} onClick={() => onGenerate(name)}
disabled={isPending} 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"> <div className="flex items-center gap-2">
{isPending ? <Loader2 className="h-4 w-4 animate-spin" /> : <Key className="h-4 w-4" />} {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 children: React.ReactElement
align?: 'start' | 'end' align?: 'start' | 'end'
preferDropUp?: boolean preferDropUp?: boolean
showGeneralNotes?: boolean
} }
export function MoveToNotebookPicker({ export function MoveToNotebookPicker({
@@ -26,6 +27,7 @@ export function MoveToNotebookPicker({
children, children,
align = 'end', align = 'end',
preferDropUp = false, preferDropUp = false,
showGeneralNotes = true,
}: MoveToNotebookPickerProps) { }: MoveToNotebookPickerProps) {
const { t } = useLanguage() const { t } = useLanguage()
const [open, setOpen] = useState(false) const [open, setOpen] = useState(false)
@@ -91,7 +93,7 @@ export function MoveToNotebookPicker({
selectedId={currentNotebookId} selectedId={currentNotebookId}
onSelect={(id) => handleSelect(id)} onSelect={(id) => handleSelect(id)}
onClose={close} onClose={close}
showGeneralNotes showGeneralNotes={showGeneralNotes}
generalNotesLabel={t('notebookSuggestion.generalNotes') || 'Notes générales'} generalNotesLabel={t('notebookSuggestion.generalNotes') || 'Notes générales'}
onSelectGeneralNotes={() => handleSelect(null)} onSelectGeneralNotes={() => handleSelect(null)}
searchPlaceholder={t('notebookSuggestion.filterNotebooks') || 'Filtrer les carnets…'} 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 { toast } from 'sonner'
import { ConfirmDeleteNoteDialog } from '@/components/confirm-delete-note-dialog' import { ConfirmDeleteNoteDialog } from '@/components/confirm-delete-note-dialog'
import { showNoteTrashedToast } from '@/lib/notes/trash-toast' import { showNoteTrashedToast } from '@/lib/notes/trash-toast'
import { NoteSelectCheckbox } from '@/components/note-select-checkbox'
import { fr } from 'date-fns/locale/fr' import { fr } from 'date-fns/locale/fr'
import { enUS } from 'date-fns/locale/en-US' import { enUS } from 'date-fns/locale/en-US'
import { formatAbsoluteDateLocalized } from '@/lib/utils/format-localized-date' import { formatAbsoluteDateLocalized } from '@/lib/utils/format-localized-date'
@@ -37,6 +38,10 @@ type NotesEditorialViewProps = {
onOpen: (note: Note, readOnly?: boolean) => void onOpen: (note: Note, readOnly?: boolean) => void
notebookName?: string notebookName?: string
onOpenHistory?: (note: Note) => void onOpenHistory?: (note: Note) => void
selection?: {
selectedIds: ReadonlySet<string>
onToggle: (id: string) => void
}
} & NoteCollectionActions } & NoteCollectionActions
function formatNoteDate(date: Date | string, language: string): string { function formatNoteDate(date: Date | string, language: string): string {
@@ -376,6 +381,7 @@ export function NotesEditorialView({
onMoveToNotebook, onMoveToNotebook,
onNotePatch, onNotePatch,
onNoteIllustrationGenerated, onNoteIllustrationGenerated,
selection,
}: NotesEditorialViewProps) { }: NotesEditorialViewProps) {
const { t, language } = useLanguage() const { t, language } = useLanguage()
const { data: session } = useSession() const { data: session } = useSession()
@@ -454,7 +460,14 @@ export function NotesEditorialView({
</div> </div>
<h2 className="font-memento-serif text-2xl font-medium text-foreground flex items-center gap-2 justify-between"> <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.isPinned && <Pin size={14} className="text-amber-500 fill-amber-500 shrink-0" />}
{note.historyEnabled && <History size={14} className="text-emerald-500 shrink-0" />} {note.historyEnabled && <History size={14} className="text-emerald-500 shrink-0" />}
{title} {title}

View File

@@ -53,6 +53,7 @@ import { useHydrated } from '@/lib/use-hydrated'
import { formatDistanceToNow } from 'date-fns' import { formatDistanceToNow } from 'date-fns'
import { fr } from 'date-fns/locale/fr' import { fr } from 'date-fns/locale/fr'
import { enUS } from 'date-fns/locale/en-US' 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 NotesLayoutMode = 'grid' | 'list' | 'table' | 'kanban' | 'gallery'
export type NotesClassicLayoutMode = 'grid' | 'list' | 'table' export type NotesClassicLayoutMode = 'grid' | 'list' | 'table'
@@ -253,6 +254,12 @@ type NotesListViewsProps = {
onOpenHistory?: (note: Note) => void onOpenHistory?: (note: Note) => void
notebookName?: string notebookName?: string
onGridReorder?: (orderedIds: string[]) => void | Promise<void> onGridReorder?: (orderedIds: string[]) => void | Promise<void>
selection?: {
selectedIds: ReadonlySet<string>
onToggle: (id: string) => void
onToggleAll?: () => void
allSelected?: boolean
}
} & Partial<NoteCollectionActions> } & Partial<NoteCollectionActions>
export function NotesListViews({ export function NotesListViews({
@@ -269,6 +276,7 @@ export function NotesListViews({
onNotePatch, onNotePatch,
onNoteIllustrationGenerated, onNoteIllustrationGenerated,
onGridReorder, onGridReorder,
selection,
}: NotesListViewsProps) { }: NotesListViewsProps) {
const { t, language } = useLanguage() const { t, language } = useLanguage()
const { data: session } = useSession() const { data: session } = useSession()
@@ -352,6 +360,7 @@ export function NotesListViews({
onOpenHistory={onOpenHistory} onOpenHistory={onOpenHistory}
onGridReorder={onGridReorder} onGridReorder={onGridReorder}
pinnedLabel={t('notes.pinned')} pinnedLabel={t('notes.pinned')}
selection={selection}
/> />
) )
} }
@@ -363,6 +372,15 @@ export function NotesListViews({
<table className="w-full text-left border-collapse min-w-[720px]"> <table className="w-full text-left border-collapse min-w-[720px]">
<thead> <thead>
<tr className="border-b border-border/30"> <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 <th
className="w-[32%] px-4 py-3 text-[10px] uppercase tracking-widest font-black text-muted-foreground cursor-pointer hover:text-foreground" 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')} onClick={() => handleSort('title')}
@@ -407,6 +425,15 @@ export function NotesListViews({
role="button" role="button"
className="h-11 hover:bg-foreground/[0.02] cursor-pointer transition-colors group focus-visible:bg-foreground/[0.04]" 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]"> <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"> <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" />} {note.isPinned && <Pin size={11} className="text-amber-500 fill-amber-500 shrink-0" />}
@@ -464,6 +491,7 @@ export function NotesListViews({
onMoveToNotebook={onMoveToNotebook} onMoveToNotebook={onMoveToNotebook}
onNotePatch={onNotePatch} onNotePatch={onNotePatch}
onNoteIllustrationGenerated={onNoteIllustrationGenerated} onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/> />
</div> </div>
)} )}
@@ -479,6 +507,7 @@ export function NotesListViews({
onMoveToNotebook={onMoveToNotebook} onMoveToNotebook={onMoveToNotebook}
onNotePatch={onNotePatch} onNotePatch={onNotePatch}
onNoteIllustrationGenerated={onNoteIllustrationGenerated} onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/> />
)} )}
</div> </div>
@@ -497,6 +526,13 @@ function formatGridCardDate(date: Date | string, language: string): string {
return `${month.toUpperCase()} ${day}, ${year}` return `${month.toUpperCase()} ${day}, ${year}`
} }
type NotesSelection = {
selectedIds: ReadonlySet<string>
onToggle: (id: string) => void
onToggleAll?: () => void
allSelected?: boolean
}
type GridCardSharedProps = { type GridCardSharedProps = {
note: Note note: Note
index: number index: number
@@ -512,6 +548,7 @@ type GridCardSharedProps = {
onNoteIllustrationDeleted?: (noteId: string) => void | Promise<void> onNoteIllustrationDeleted?: (noteId: string) => void | Promise<void>
onOpenHistory?: (note: Note) => void onOpenHistory?: (note: Note) => void
isOverlay?: boolean isOverlay?: boolean
selection?: NotesSelection
} }
function NotesMasonryGrid({ function NotesMasonryGrid({
@@ -624,6 +661,7 @@ function NotesGridSection({
onDeleteNote, onDeleteNote,
onMoveToNotebook, onMoveToNotebook,
onNoteIllustrationGenerated, onNoteIllustrationGenerated,
selection,
className, className,
}: Omit<GridCardSharedProps, 'note' | 'index' | 'isOverlay'> & { }: Omit<GridCardSharedProps, 'note' | 'index' | 'isOverlay'> & {
notes: Note[] notes: Note[]
@@ -650,6 +688,7 @@ function NotesGridSection({
onDeleteNote={onDeleteNote} onDeleteNote={onDeleteNote}
onMoveToNotebook={onMoveToNotebook} onMoveToNotebook={onMoveToNotebook}
onNoteIllustrationGenerated={onNoteIllustrationGenerated} onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/> />
) : ( ) : (
<GridCard <GridCard
@@ -665,6 +704,7 @@ function NotesGridSection({
onDeleteNote={onDeleteNote} onDeleteNote={onDeleteNote}
onMoveToNotebook={onMoveToNotebook} onMoveToNotebook={onMoveToNotebook}
onNoteIllustrationGenerated={onNoteIllustrationGenerated} onNoteIllustrationGenerated={onNoteIllustrationGenerated}
selection={selection}
/> />
), ),
)} )}
@@ -721,6 +761,7 @@ const GridCard = memo(function GridCard({
onNoteIllustrationDeleted, onNoteIllustrationDeleted,
onOpenHistory, onOpenHistory,
isOverlay = false, isOverlay = false,
selection,
}: GridCardSharedProps) { }: GridCardSharedProps) {
const router = useRouter() const router = useRouter()
const { t, language } = useLanguage() const { t, language } = useLanguage()
@@ -760,8 +801,21 @@ const GridCard = memo(function GridCard({
onNoteIllustrationGenerated={onNoteIllustrationGenerated} onNoteIllustrationGenerated={onNoteIllustrationGenerated}
onNoteIllustrationDeleted={onNoteIllustrationDeleted} 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 && ( {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" /> <Pin size={11} className="fill-amber-500" />
</div> </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) && ( {isActive(tab.href) && (
<motion.div <motion.div
layoutId="activeSettingsTabLine" 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 }} 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 { motion } from 'motion/react';
import { BillingHistory } from './billing-history'; import { BillingHistory } from './billing-history';
import { SUBSCRIPTION_TRIAL_DAYS } from '@/lib/billing/trial-constants'; 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 Tier = 'PRO' | 'BUSINESS';
type Interval = 'month' | 'year'; type Interval = 'month' | 'year';
@@ -285,12 +291,36 @@ export function BillingPlans() {
const trialCta = (fallback: string) => const trialCta = (fallback: string) =>
trialEligible ? t('billing.startTrialCta', { days: trialDays }) : fallback; 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 = [ const plans = [
{ {
id: 'free', id: 'free',
name: t('billing.freePlan'), name: t('billing.freePlan'),
price: t('billing.freePrice') || 'Gratuit', price: t('billing.freePrice') || 'Gratuit',
period: '', period: '',
yearHint: null as string | null,
description: t('billing.freeDescription') || 'Pour découvrir Memento.', description: t('billing.freeDescription') || 'Pour découvrir Memento.',
features: [ features: [
t('billing.freeF1'), t('billing.freeF1'),
@@ -313,9 +343,9 @@ export function BillingPlans() {
{ {
id: 'pro', id: 'pro',
name: t('billing.proPlan'), name: t('billing.proPlan'),
price: status?.prices?.PRO?.[interval]?.display ?? price: proBilled.price,
(interval === 'month' ? (t('billing.proPrice') || '9,90€') : (t('billing.proAnnualPrice') || '99€')), period: proBilled.period,
period: interval === 'month' ? t('billing.perMonth') : t('billing.perYear'), yearHint: proBilled.yearHint,
description: t('billing.proDescription') || 'Pour les consultants et créateurs exigeants.', description: t('billing.proDescription') || 'Pour les consultants et créateurs exigeants.',
features: [ features: [
...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []), ...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []),
@@ -337,9 +367,9 @@ export function BillingPlans() {
{ {
id: 'business', id: 'business',
name: t('billing.businessPlan'), name: t('billing.businessPlan'),
price: status?.prices?.BUSINESS?.[interval]?.display ?? price: businessBilled.price,
(interval === 'month' ? (t('billing.businessPrice') || '29,90€') : (t('billing.businessAnnualPrice') || '299€')), period: businessBilled.period,
period: interval === 'month' ? t('billing.perMonth') : t('billing.perYear'), yearHint: businessBilled.yearHint,
features: [ features: [
...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []), ...(trialEligible ? [t('billing.trialFeature', { days: trialDays })] : []),
t('billing.businessFeature1'), t('billing.businessFeature1'),
@@ -361,7 +391,8 @@ export function BillingPlans() {
name: t('billing.enterpriseTitle') || 'Enterprise', name: t('billing.enterpriseTitle') || 'Enterprise',
price: t('billing.contactSales') || 'Sur devis', price: t('billing.contactSales') || 'Sur devis',
period: '', 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: [ features: [
t('billing.enterpriseFeature1'), t('billing.enterpriseFeature1'),
t('billing.enterpriseFeature2'), t('billing.enterpriseFeature2'),
@@ -765,7 +796,11 @@ export function BillingPlans() {
)} )}
> >
{t('billing.annual')} {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> </button>
</div> </div>
) : ( ) : (
@@ -800,6 +835,9 @@ export function BillingPlans() {
<span className="text-4xl font-serif font-bold text-ink">{plan.price}</span> <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> <span className="text-concrete text-xs font-light italic">{plan.period}</span>
</div> </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> <p className="text-xs text-concrete font-light leading-relaxed pe-4">{plan.description}</p>
</div> </div>

View File

@@ -402,7 +402,7 @@ export function NotesStructuredTable({
<div className="flex items-center justify-between text-[11px] font-bold text-foreground/80"> <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"> <span className="flex items-center gap-1.5 text-purple-400">
<Brain className="w-3.5 h-3.5 animate-pulse" /> <Brain className="w-3.5 h-3.5 animate-pulse" />
{t('structuredViewBlock.echoPopoverTitle') || 'Résonance Sémantique 🔮'} {t('structuredViewBlock.echoPopoverTitle') || 'Notes proches'}
</span> </span>
<button <button
onClick={() => { setActiveEchoNoteId(null); setEchoConnections([]); }} 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 type { SubscriptionTier } from '@/lib/plan-entitlements';
import { stripe } from '@/lib/stripe'; import { stripe } from '@/lib/stripe';
import { getConfigValue } from '@/lib/config'; 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, BillingTier, DynamicPrice };
export type BillingInterval = 'month' | 'year'; export { DEFAULT_PRICES, formatBillingAmount };
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 async function isBillingEnabled(): Promise<boolean> { export async function isBillingEnabled(): Promise<boolean> {
const flag = await getConfigValue('BILLING_ENABLED', ''); 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) { if (price.unit_amount !== null && price.unit_amount !== undefined) {
const amount = price.unit_amount / 100; const amount = price.unit_amount / 100;
const currency = price.currency.toUpperCase(); const currency = price.currency.toUpperCase();
result[tier][interval] = {
let display = ''; display: formatBillingAmount(amount, currency),
if (currency === 'EUR') { amount,
display = `${amount.toLocaleString('fr-FR', { minimumFractionDigits: 0, maximumFractionDigits: 2 })} €`; currency,
} 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 };
} }
} catch (err) { } catch (err) {
console.error(`[stripe-prices] Failed to retrieve price for ${tier}/${interval}:`, err); console.error(`[stripe-prices] Failed to retrieve price for ${tier}/${interval}:`, err);

View File

@@ -1,7 +1,7 @@
'use client' 'use client'
import { toast } from 'sonner' 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 { emitNoteChange } from '@/lib/note-change-sync'
import type { Note } from '@/lib/types' 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": "بحث", "placeholder": "بحث",
"searchPlaceholder": "ابحث في ملاحظاتك...", "searchPlaceholder": "ابحث في ملاحظاتك...",
"semanticInProgress": "بحث الذكاء الاصطناعي جارٍ...", "semanticInProgress": "بحث الذكاء الاصطناعي جارٍ...",
"semanticTooltip": "بحث دلالي بالذكاء الاصطناعي", "semanticTooltip": "البحث بالمعنى",
"searching": "جاري البحث...", "searching": "جاري البحث...",
"noResults": "لم يتم العثور على نتائج", "noResults": "لم يتم العثور على نتائج",
"resultsFound": "تم العثور على {count} ملاحظات", "resultsFound": "تم العثور على {count} ملاحظات",
@@ -861,7 +861,7 @@
"compareAll": "مقارنة الكل", "compareAll": "مقارنة الكل",
"mergeAll": "دمج الكل", "mergeAll": "دمج الكل",
"close": "إغلاق", "close": "إغلاق",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} ٪ من القرب",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "صدى الذاكرة", "badgeLabel": "صدى الذاكرة",
"bottomCueConsent": "اتصالات الذكاء الاصطناعي متاحة بالأسفل", "bottomCueConsent": "اتصالات الذكاء الاصطناعي متاحة بالأسفل",
@@ -918,7 +918,7 @@
"noContentReturned": "لم يتم إرجاع محتوى دمج من API", "noContentReturned": "لم يتم إرجاع محتوى دمج من API",
"unknownDate": "تاريخ غير معروف" "unknownDate": "تاريخ غير معروف"
}, },
"defaultInsight": "تبدو هذه الملاحظات مرتبطة دلاليًا.", "defaultInsight": "هذه الملاحظات تلتقي.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "تعذر تنظيف التسميات", "cleanupError": "تعذر تنظيف التسميات",
"indexingComplete": "اكتملت الفهرسة: تمت معالجة {count} ملاحظة", "indexingComplete": "اكتملت الفهرسة: تمت معالجة {count} ملاحظة",
"indexingError": "خطأ أثناء الفهرسة", "indexingError": "خطأ أثناء الفهرسة",
"semanticIndexing": "الفهرسة الدلالية", "semanticIndexing": "فهرس البحث حسب المعنى",
"semanticIndexingDescription": "إنشاء متجهات لجميع الملاحظات لتفعيل البحث القائم على النية", "semanticIndexingDescription": "تجهيز كل الملاحظات للبحث حسب المعنى",
"profile": "الملف الشخصي", "profile": "الملف الشخصي",
"searchNoResults": "لم يتم العثور على إعدادات مطابقة", "searchNoResults": "لم يتم العثور على إعدادات مطابقة",
"languageAuto": "تم ضبط اللغة على تلقائي", "languageAuto": "تم ضبط اللغة على تلقائي",
@@ -1664,7 +1664,7 @@
"title": "الميزات", "title": "الميزات",
"description": "قدرات مدعومة بالذكاء الاصطناعي", "description": "قدرات مدعومة بالذكاء الاصطناعي",
"titleSuggestions": "اقتراحات عناوين مدعومة بالذكاء الاصطناعي", "titleSuggestions": "اقتراحات عناوين مدعومة بالذكاء الاصطناعي",
"semanticSearch": "بحث دلالي مع التضمينات", "semanticSearch": "البحث حسب المعنى",
"paragraphReformulation": "إعادة صياغة الفقرات", "paragraphReformulation": "إعادة صياغة الفقرات",
"memoryEcho": "رؤى Memory Echo اليومية", "memoryEcho": "رؤى Memory Echo اليومية",
"notebookOrganization": "تنظيم الدفاتر", "notebookOrganization": "تنظيم الدفاتر",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "إعادة بناء فهرس البحث", "title": "إعادة بناء فهرس البحث",
"description": "إعادة توليد التضمينات لجميع الملاحظات لتحسين البحث الدلالي.", "description": "أعد بناء فهرس كل الملاحظات لتحسين البحث حسب المعنى.",
"button": "إعادة بناء الفهرس", "button": "إعادة بناء الفهرس",
"success": "اكتملت الفهرسة: تمت معالجة {count} ملاحظة", "success": "اكتملت الفهرسة: تمت معالجة {count} ملاحظة",
"failed": "حدث خطأ أثناء الفهرسة" "failed": "حدث خطأ أثناء الفهرسة"
@@ -1984,7 +1984,7 @@
"legendWiki": "ربط بملاحظة", "legendWiki": "ربط بملاحظة",
"mentionShort": "إشارة", "mentionShort": "إشارة",
"moreNodes": "+{count} على الخريطة", "moreNodes": "+{count} على الخريطة",
"noInbound": "لا توجد روابط ويكي وارد تشير إلى هذه الملاحظة.", "noInbound": "لا تشير أي ملاحظة أخرى إلى هذه.",
"noOutbound": "هذه الملاحظة لا ترتبط بملاحظات أخرى بعد.", "noOutbound": "هذه الملاحظة لا ترتبط بملاحظات أخرى بعد.",
"noWikiYet": "لا روابط لملاحظات أخرى بعد.", "noWikiYet": "لا روابط لملاحظات أخرى بعد.",
"outboundHelp": "ملاحظات تشير إليها هذه باستخدام [[…]] في نصها.", "outboundHelp": "ملاحظات تشير إليها هذه باستخدام [[…]] في نصها.",
@@ -2190,7 +2190,7 @@
"custom": "مخصص" "custom": "مخصص"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": جمع البيانات من عدة مواقع وينشئ ملخصًا", "scraper": قرأ عدة مواقع ويكتب ملخصًا",
"researcher": "يبحث عن معلومات حول موضوع معين", "researcher": "يبحث عن معلومات حول موضوع معين",
"monitor": "يراقب دفتر ملاحظات ويحلل الملاحظات", "monitor": "يراقب دفتر ملاحظات ويحلل الملاحظات",
"slideGenerator": "إنشاء عرض تقديمي لـ PowerPoint من الملاحظات", "slideGenerator": "إنشاء عرض تقديمي لـ PowerPoint من الملاحظات",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "مثال: مراقبة الذكاء الاصطناعي الثلاثاء", "namePlaceholder": "مثال: مراقبة الذكاء الاصطناعي الثلاثاء",
"description": "الوصف (اختياري)", "description": "الوصف (اختياري)",
"descriptionPlaceholder": "ملخص أخبار الذكاء الاصطناعي الأسبوعي", "descriptionPlaceholder": "ملخص أخبار الذكاء الاصطناعي الأسبوعي",
"urlsLabel": "روابط URLs للجمع", "urlsLabel": "عناوين الصفحات للقراءة",
"urlsOptional": "(اختياري)", "urlsOptional": "(اختياري)",
"sourceNotebook": "دفتر الملاحظات للمراقبة", "sourceNotebook": "دفتر الملاحظات للمراقبة",
"selectNotebook": "اختر دفتر ملاحظات...", "selectNotebook": "اختر دفتر ملاحظات...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "إشعار بالبريد الإلكتروني", "notifyEmail": "إشعار بالبريد الإلكتروني",
"notifyEmailHint": "استلام بريد إلكتروني بنتائج الوكيل بعد كل تشغيل", "notifyEmailHint": "استلام بريد إلكتروني بنتائج الوكيل بعد كل تشغيل",
"includeImages": "تضمين الصور", "includeImages": "تضمين الصور",
"includeImagesHint": "استخراج الصور من الصفحات المجمعة وإرفاقها بالملاحظة المولدة", "includeImagesHint": "أخذ الصور من الصفحات المقروءة وإرفاقها بالملاحظة",
"back": "رجوع", "back": "رجوع",
"configuration": "التكوين", "configuration": "التكوين",
"options": "الخيارات", "options": "الخيارات",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "مراقبة الذكاء الاصطناعي", "name": "مراقبة الذكاء الاصطناعي",
"description": جمع البيانات من 5 مواقع متخصصة في الذكاء الاصطناعي وينشئ ملخصًا أسبوعيًا." "description": قرأ 5 مواقع للذكاء الاصطناعي ويكتب ملخصًا أسبوعيًا."
}, },
"veilleTech": { "veilleTech": {
"name": "مراقبة التقنية", "name": "مراقبة التقنية",
"description": جمع البيانات من مواقع تقنية رئيسية وينشئ ملخص أخبار." "description": قرأ مواقع تقنية رئيسية ويكتب ملخص أخبار."
}, },
"veilleDev": { "veilleDev": {
"name": "مراقبة التطوير", "name": "مراقبة التطوير",
"description": جمع البيانات من مواقع التطوير ويلخص التقنيات والأطر الجديدة." "description": قرأ مواقع التطوير ويلخص ما هو جديد."
}, },
"surveillant": { "surveillant": {
"name": "مراقب الملاحظات", "name": "مراقب الملاحظات",
@@ -2431,15 +2431,15 @@
"btnLabel": "مساعدة", "btnLabel": "مساعدة",
"close": "إغلاق", "close": "إغلاق",
"whatIsAgent": "ما هو الوكيل؟", "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": "كيف تستخدم وكيلًا؟", "howToUse": "كيف تستخدم وكيلًا؟",
"howToUseContent": "1. انقر على **\"وكيل جديد\"** (أو ابدأ من **قالب** أسفل الصفحة).", "howToUseContent": "1. انقر على **\"وكيل جديد\"** (أو ابدأ من **قالب** أسفل الصفحة).",
"types": "أنواع الوكلاء", "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": "الوضع المتقدم (تعليمات الذكاء الاصطناعي، الحد الأقصى للتكرارات)", "advanced": "الوضع المتقدم (تعليمات الذكاء الاصطناعي، الحد الأقصى للتكرارات)",
"advancedContent": "انقر على **\"الوضع المتقدم\"** أسفل النموذج للوصول إلى إعدادات إضافية.", "advancedContent": "انقر على **\"الوضع المتقدم\"** أسفل النموذج للوصول إلى إعدادات إضافية.",
"tools": "الأدوات المتاحة (التفاصيل)", "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": "التكرار والجدولة", "frequency": "التكرار والجدولة",
"frequencyContent": "| التكرار | السلوك\n|-----------|----------\n| **يدوي** | تنقر بنفسك على \"تشغيل\".", "frequencyContent": "| التكرار | السلوك\n|-----------|----------\n| **يدوي** | تنقر بنفسك على \"تشغيل\".",
"targetNotebook": "دفتر الملاحظات المستهدف", "targetNotebook": "دفتر الملاحظات المستهدف",
@@ -2447,7 +2447,7 @@
"templates": "القوالب", "templates": "القوالب",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates 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.", "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": "نصائح وحل المشكلات",
"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": { "tooltips": {
"agentType": "اختر نوع المهمة التي سيقوم بها الوكيل. كل نوع لديه قدرات وحقول مختلفة.", "agentType": "اختر نوع المهمة التي سيقوم بها الوكيل. كل نوع لديه قدرات وحقول مختلفة.",
"researchTopic": "الموضوع الذي سيبحث عنه الوكيل على الويب. كن محددًا للحصول على نتائج أفضل.", "researchTopic": "الموضوع الذي سيبحث عنه الوكيل على الويب. كن محددًا للحصول على نتائج أفضل.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "ترقية إلى Pro", "upgradeTitle": "ترقية إلى Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro يشمل:", "proIncludes": "Pro يشمل:",
"proSearch": "100 semantic searches / month", "proSearch": "1٬000 رصيد ذكاء اصطناعي / شهر",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "إنشاء المخطط", "featureDiagrams": "إنشاء المخطط",
"featureFlashcards": "بطاقات الذكاء الاصطناعي", "featureFlashcards": "بطاقات المراجعة",
"featurePublishEnhance": "النشر بالذكاء الاصطناعي", "featurePublishEnhance": "النشر بالذكاء الاصطناعي",
"featureSlides": "إنشاء الشرائح", "featureSlides": "إنشاء الشرائح",
"featureVoice": "تفريغ صوتي", "featureVoice": "تفريغ صوتي",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 إعادة صياغة / شهر", "businessFeature3": "500 إعادة صياغة / شهر",
"businessFeature4": "1,000 رسالة دردشة / شهر", "businessFeature4": "1,000 رسالة دردشة / شهر",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "حصص مخصصة، SSO، دعم أولوي.", "enterpriseDescription": "حصص مخصصة، تسجيل دخول واحد للفريق، دعم أولوي.",
"contactSales": "تواصل مع المبيعات", "contactSales": "تواصل مع المبيعات",
"startCheckout": "ابدأ", "startCheckout": "ابدأ",
"checkoutLoading": "جارٍ تحميل الدفع…", "checkoutLoading": "جارٍ تحميل الدفع…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "يتم تجديد اشتراكك تلقائيًا.", "paidPlanDesc": "يتم تجديد اشتراكك تلقائيًا.",
"businessDescription": "للفرق وقادة المنتجات.", "businessDescription": "للفرق وقادة المنتجات.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "تسجيل دخول واحد للفريق كله",
"enterpriseFeature3": "دعم مخصص", "enterpriseFeature3": "دعم مخصص",
"enterpriseFeature4": "فوترة مخصصة", "enterpriseFeature4": "فوترة مخصصة",
"enterpriseFeature5": "اتفاقية مستوى الخدمة المضمونة", "enterpriseFeature5": "وقت استجابة مضمون",
"subtitle": "اختر الخطة المناسبة لك", "subtitle": "اختر الخطة المناسبة لك",
"freeDescription": "لاكتشاف ميمينتو", "freeDescription": "لاكتشاف ميمينتو",
"freeF1": "30 بحث دلالي", "freeF1": "30 بحث دلالي",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "تعذر جلب حالة الفوترة", "fetchStatusFailed": "تعذر جلب حالة الفوترة",
"fetchQuotasFailed": "تعذر جلب الحصص", "fetchQuotasFailed": "تعذر جلب الحصص",
"fetchInvoicesFailed": "تعذر تحميل سجل الفوترة.", "fetchInvoicesFailed": "تعذر تحميل سجل الفوترة.",
"savePercent": "وفّر ~17%", "savePercent": "وفّر ~{percent}%",
"billedYearTotal": "أي {price} في السنة",
"cancelSubscription": "إلغاء الاشتراك", "cancelSubscription": "إلغاء الاشتراك",
"changeOffer": "تغيير العرض", "changeOffer": "تغيير العرض",
"downgradeToFree": "العودة إلى العرض المجاني", "downgradeToFree": "العودة إلى العرض المجاني",
@@ -3379,13 +3380,13 @@
"cta": "تواصل معنا", "cta": "تواصل معنا",
"feature0": "كل ما في Business", "feature0": "كل ما في Business",
"feature1": "وكلاء بلا حد", "feature1": "وكلاء بلا حد",
"feature2": "SSO / SAML", "feature2": "تسجيل دخول واحد للفريق كله",
"feature3": "سجلات تدقيق وSLA", "feature3": "سجل النشاط ووقت استجابة مضمون",
"feature4": "دعم مخصص", "feature4": "دعم مخصص",
"feature5": "إعداد مباشر" "feature5": "مرافقة عند التثبيت"
}, },
"basicPrice": "مجاني", "basicPrice": "مجاني",
"savePercent": "وفّر حوالي 17%", "savePercent": "وفّر حوالي {percent}%",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "احذف حسابك وجميع البيانات المرتبطة به نهائيًا وبدون رجعة.", "sectionDescription": "احذف حسابك وجميع البيانات المرتبطة به نهائيًا وبدون رجعة.",
"whatWillBeDeleted": "سيتم حذف ما يلي نهائيًا:", "whatWillBeDeleted": "سيتم حذف ما يلي نهائيًا:",
"item1": "جميع الملاحظات والدفاتر والمرفقات", "item1": "جميع الملاحظات والدفاتر والمرفقات",
"item2": "جميع تضمينات pgvector الدلالية", "item2": "الفهرس الذي يربط ملاحظاتك",
"item3": "جميع مفاتيح API الخاصة بـ BYOK", "item3": "جميع مفاتيح API الخاصة بـ BYOK",
"item4": "جميع محادثات الذكاء الاصطناعي وجلسات العصف الذهني", "item4": "جميع محادثات الذكاء الاصطناعي وجلسات العصف الذهني",
"item5": "سجل الحصص والاستخدام", "item5": "سجل الحصص والاستخدام",
@@ -3559,7 +3560,7 @@
"step_features_title": "قدراتك الخارقة بالذكاء الاصطناعي", "step_features_title": "قدراتك الخارقة بالذكاء الاصطناعي",
"step_features_subtitle": "اختر من أين تبدأ.", "step_features_subtitle": "اختر من أين تبدأ.",
"step_features_cta": "لنبدأ!", "step_features_cta": "لنبدأ!",
"feature_search_title": "البحث الدلالي", "feature_search_title": "البحث بالمعنى",
"feature_search_desc": "ابحث عن أي ملاحظة بالمعنى، ليس فقط بالكلمات المفتاحية.", "feature_search_desc": "ابحث عن أي ملاحظة بالمعنى، ليس فقط بالكلمات المفتاحية.",
"feature_flashcards_title": "بطاقات الذكاء الاصطناعي", "feature_flashcards_title": "بطاقات الذكاء الاصطناعي",
"feature_flashcards_desc": "أنشئ بطاقات مراجعة من ملاحظاتك بنقرة واحدة.", "feature_flashcards_desc": "أنشئ بطاقات مراجعة من ملاحظاتك بنقرة واحدة.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "انقر على بطاقة فكرة لتوسيعها بأفكار فرعية واستكشافها.", "hint_brainstorm_deepen_desc": "انقر على بطاقة فكرة لتوسيعها بأفكار فرعية واستكشافها.",
"hint_brainstorm_export_title": "تصدير الجلسة", "hint_brainstorm_export_title": "تصدير الجلسة",
"hint_brainstorm_export_desc": "صدّر جلسة العصف الذهني كملاحظة منظمة في الكارنيه المختار.", "hint_brainstorm_export_desc": "صدّر جلسة العصف الذهني كملاحظة منظمة في الكارنيه المختار.",
"hint_insights_clusters_title": "عناقيد الملاحظات", "hint_insights_clusters_title": "مواضيع الملاحظات",
"hint_insights_clusters_desc": "تُجمع ملاحظاتك تلقائياً في عناقيد موضوعية. انقر على عنقود للتفاصيل.", "hint_insights_clusters_desc": "ملاحظاتك مجمّعة حسب المواضيع. انقر موضوعاً لرؤية الملاحظات.",
"hint_insights_bridge_title": "ملاحظات الجسر", "hint_insights_bridge_title": "ملاحظات الجسر",
"hint_insights_bridge_desc": "تربط ملاحظات الجسر عناقيد متعددة وتُبرز لأنها تحتوي على روابط مهمة.", "hint_insights_bridge_desc": "ملاحظات الجسر تربط عدة مواضيع وتظهر أين تتقاطع أفكارك.",
"hint_insights_refresh_title": "تحديث العناقيد", "hint_insights_refresh_title": "تحديث المواضيع",
"hint_insights_refresh_desc": "إذا أضفت ملاحظات جديدة، انقر على «تحديث» لإعادة حساب العناقيد." "hint_insights_refresh_desc": "إذا أضفت ملاحظات، انقر «تحديث» لإعادة حساب المواضيع."
}, },
"blockAction": { "blockAction": {
"moveUp": "تحريك الكتلة لأعلى", "moveUp": "تحريك الكتلة لأعلى",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "الروابط", "title": "الروابط",
"toggleMenu": "إظهار القائمة أو إخفاؤها", "toggleMenu": "إظهار القائمة أو إخفاؤها",
"subtitle": "اكتشف البنية المخفية لمعرفتك", "subtitle": "شاهد كيف ترتبط ملاحظاتك",
"resync": "تحديث", "resync": "تحديث",
"mapping": "جاري الربط…", "mapping": "جاري الربط…",
"loading": "جاري تحميل الملاحظات…", "loading": "جاري تحميل الملاحظات…",
"mappingTitle": "جاري رسم خريطة معرفتك…", "mappingTitle": "جاري رسم خريطة معرفتك…",
"mappingHint": "قد يستغرق هذا من دقيقة إلى ثلاث دقائق. يمكنك متابعة التصفح؛ ستتحدث الصفحة تلقائياً.", "mappingHint": "قد يستغرق هذا من دقيقة إلى ثلاث دقائق. يمكنك متابعة التصفح؛ ستتحدث الصفحة تلقائياً.",
"analyzeNow": "بدء التحليل الدلالي", "analyzeNow": "تحديث المواضيع",
"emptyNeedMoreNotes": "أضف {count} ملاحظات أخرى لفتح العنقدة الدلالية (الحد الأدنى 10).", "emptyNeedMoreNotes": "أضف {count} ملاحظات أخرى لتجميع مواضيعك (الحد الأدنى 10).",
"embeddingsHint": "فقط {indexed} من أصل {total} ملاحظة مفهرسة للذكاء الاصطناعي.", "embeddingsHint": "فقط {indexed} من أصل {total} ملاحظة جاهزة للتجميع حسب الموضوع.",
"vsGraphHint": "ليس هذا «خريطة الروابط»: هنا الذكاء الاصطناعي يجمع حسب المعنى وليس الروابط.", "vsGraphHint": "ليس هذا «خريطة الروابط»: هنا الذكاء الاصطناعي يجمع حسب المعنى وليس الروابط.",
"openGraphMap": "فتح خريطة الروابط", "openGraphMap": "فتح خريطة الروابط",
"analysisFailed": "فشل التحليل. تحقق من إعدادات الذكاء الاصطناعي.", "analysisFailed": "فشل التحليل. تحقق من إعدادات الذكاء الاصطناعي.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "ملاحظات", "graphNotesLabel": "ملاحظات",
"clusterFallback": "موضوع {index}", "clusterFallback": "موضوع {index}",
"unclusteredNotes": "{count} ملاحظات غير معينة لأي موضوع (مخفية من الرسم البياني).", "unclusteredNotes": "{count} ملاحظات غير معينة لأي موضوع (مخفية من الرسم البياني).",
"emptyTitle": "اكتشف مجموعات معرفتك", "emptyTitle": "اكتشف مواضيعك",
"emptyDescription": "انقر على «إعادة مزامنة الشبكة» لتحليل ملاحظاتك والعثور على الروابط المخفية", "emptyDescription": "انقر على «تحديث» لتجميع ملاحظاتك حسب الموضوع.",
"stats": { "stats": {
"clusters": "المجموعات", "clusters": "المجموعات",
"bridgeNotes": "ملاحظات جسر", "bridgeNotes": "ملاحظات جسر",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "العناقيد الدلالية", "title": "المواضيع",
"notesCount": "{count} ملاحظات", "notesCount": "{count} ملاحظات",
"centralNotes": "ملاحظات مركزية", "centralNotes": "ملاحظات مركزية",
"emptyCluster": "لا توجد ملاحظات في هذا العنقود" "emptyCluster": "لا توجد ملاحظات في هذا الموضوع"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "التقارب {score}%", "affinity": "التقارب {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "أعد مزامنة الشبكة لتحديث أزواج الجسر.", "needsResync": "أعد مزامنة الشبكة لتحديث أزواج الجسر.",
"scoreHint": "التقارب الدلالي المتوسط للموضوعين اللذين تربطهما هذه الملاحظة (تشابه جيب التمام)." "scoreHint": "مدى قرب هذه الملاحظة من الموضوعين اللذين تربطهما."
}, },
"suggestions": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "الرسم البياني", "viewGraph": "الرسم البياني",
"viewDashboard": "لوحة التحكم", "viewDashboard": "لوحة التحكم",
"isolatedClusters": { "isolatedClusters": {
"title": "عناقيد معزولة ({count})", "title": "مواضيع معزولة ({count})",
"badge": "غير متصل", "badge": "غير متصل",
"empty": "جميع المجموعات مترابطة!" "empty": "جميع مواضيعك مرتبطة بالفعل بملاحظة جسر واحدة على الأقل."
}, },
"focusCluster": { "focusCluster": {
"title": "تركيز على المجموعة", "title": "موضوع مفتوح",
"description": "يجمع هذا العنقود الموضوعي {count} ملاحظات مكمّلة. انقر على ملاحظة لفتحها.", "description": "يجمع هذا الموضوع {count} ملاحظات. انقر على ملاحظة لفتحها.",
"close": "إغلاق" "close": "إغلاق"
}, },
"badgeDominant": "مهيمن", "badgeDominant": "مهيمن",
"bridgeCount": "جسر/جسور", "bridgeCount": "جسر/جسور",
"echoTitle": "تستمر في العودة إلى هذه الفكرة", "echoTitle": "تستمر في العودة إلى هذه الفكرة",
"tipClusters": "قام الذكاء الاصطناعي بتجميع ملاحظاتك حسب التقارب الدلالي، بغض النظر عن الكارنيه.", "tipClusters": "جمّع الذكاء الاصطناعي ملاحظاتك حسب الموضوع، حتى لو كانت في دفاتر مختلفة.",
"tipClustersAction": "انقر على موضوع لرؤية ملاحظاته. انقر على ملاحظة لفتحها.", "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": "انقر على ملاحظة لفتحها وفهم الرابط.", "tipBridgeNotesAction": "انقر على ملاحظة لفتحها وفهم الرابط.",
"tipEcho": "يكتشف صدى الذاكرة ملاحظتين كُتبتا في وقتين مختلفين جداً وتغطيان نفس الموضوع.", "tipEcho": "يكتشف صدى الذاكرة ملاحظتين كُتبتا في وقتين مختلفين جداً وتغطيان نفس الموضوع.",
"tipEchoAction": "ملاحظتان، نفس الفكرة، لحظتان مختلفتان. انقر للاستكشاف.", "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": "انقر على «إنشاء ملاحظة جسر» لكتابة الملاحظة وفتحها فوراً.", "tipSuggestionsAction": "انقر على «إنشاء ملاحظة جسر» لكتابة الملاحظة وفتحها فوراً.",
"tipIsolated": "هذه الموضوعات معزولة: لا توجد ملاحظة تربطها بالبقية. ربما ينقصك منظور.", "tipIsolated": "هذه الموضوعات معزولة: لا توجد ملاحظة تربطها بالبقية. ربما ينقصك منظور.",
"tipIsolatedAction": "لا توجد ملاحظة تربط هذه الموضوعات بباقي تفكيرك.", "tipIsolatedAction": "لا توجد ملاحظة تربط هذه الموضوعات بباقي تفكيرك.",
"recalcSystem": { "recalcSystem": {
"title": "نظام إعادة الحساب", "title": "تحديث المواضيع",
"statusSynced": تزامن", "statusSynced": حدَّث",
"scheduledCron": "مجدول", "scheduledCron": "تحديث تلقائي",
"lastSync": "آخر مزامنة" "lastSync": "آخر تحديث"
}, },
"resetFocus": "إعادة ضبط التركيز", "resetFocus": "عرض الكل",
"listView": "قائمة", "listView": "قائمة",
"graphAriaLabel": "الشبكة الدلالية: {clusters} عناقيد، {notes} ملاحظات، {bridges} ملاحظات جسر. مفاتيح الأسهم للتنقل.", "graphAriaLabel": "خريطة المواضيع: {clusters} مواضيع، {notes} ملاحظات، {bridges} ملاحظات جسر. انتقل إلى القائمة للتنقل بسهولة.",
"listAriaLabel": "قائمة عناقيد يمكن الوصول إليها مع الملاحظات وروابط الجسر", "listAriaLabel": "قائمة المواضيع والملاحظات وملاحظات الجسر",
"dashboardFilterPlaceholder": "تصفية الملاحظات الجسرية، المواضيع…", "dashboardFilterPlaceholder": "تصفية الملاحظات الجسرية، المواضيع…",
"legendFilterPlaceholder": "تصفية المواضيع…", "legendFilterPlaceholder": "تصفية المواضيع…",
"legendShowLess": "عرض أقل", "legendShowLess": "عرض أقل",
@@ -3896,7 +3897,7 @@
"genericError": "حدث خطأ أثناء الإرسال إلى مثيلك.", "genericError": "حدث خطأ أثناء الإرسال إلى مثيلك.",
"ignore": "تم إتقانه", "ignore": "تم إتقانه",
"processing": "جاري المعالجة…", "processing": "جاري المعالجة…",
"processingDetail": "جاري إنشاء الوسوم والملخص الدلالي والتضمينات.", "processingDetail": "جارٍ تجهيز الملاحظة: تسميات، ملخص، بحث حسب المعنى.",
"publishedOn": "نُشر على {domain}", "publishedOn": "نُشر على {domain}",
"quitSimulator": "إغلاق المحاكي", "quitSimulator": "إغلاق المحاكي",
"realtimeCapture": "التاريخ: التقاط مباشر", "realtimeCapture": "التاريخ: التقاط مباشر",
@@ -4156,7 +4157,7 @@
"match": "تسجيل الدخول", "match": "تسجيل الدخول",
"memoryEchoDisabled": "صدى الذاكرة معطل في إعدادات الذكاء الاصطناعي لديك.", "memoryEchoDisabled": "صدى الذاكرة معطل في إعدادات الذكاء الاصطناعي لديك.",
"mindMap": "خريطة ذهنية", "mindMap": "خريطة ذهنية",
"mindMapEmpty": م يتم اكتشاف مواضيع بعد. التحليل الدلالي يجمع ملاحظاتك حسب الموضوع.", "mindMapEmpty": ا مواضيع بعد. الذكاء الاصطناعي يجمع ملاحظاتك حسب الموضوع.",
"mindMapOpen": "فتح خريطة الرؤى →", "mindMapOpen": "فتح خريطة الرؤى →",
"mindMapUnavailable": "الخريطة الذهنية غير متاحة.", "mindMapUnavailable": "الخريطة الذهنية غير متاحة.",
"new": "ملاحظات أنشئت", "new": "ملاحظات أنشئت",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "إضافة إلى الملاحظة", "add-link": "إضافة إلى الملاحظة",
"bridge": "فكرة جسر", "bridge": "فكرة جسر",
"connect": ابط دلالي", "connect": "ربط ملاحظة",
"continue": "متابعة", "continue": "متابعة",
"daily": "يوميات", "daily": "يوميات",
"explore": "استكشف الموضوع", "explore": "استكشف الموضوع",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "دماغك الثاني في لمحة: اقتراحات الذكاء الاصطناعي، الالتقاط السريع، والخطوات التالية. استخدم الاختصارات أدناه للبدء.", "resumeEmptyHint": "دماغك الثاني في لمحة: اقتراحات الذكاء الاصطناعي، الالتقاط السريع، والخطوات التالية. استخدم الاختصارات أدناه للبدء.",
"resumeOpen": "متابعة", "resumeOpen": "متابعة",
"review": "مراجعة", "review": "مراجعة",
"semanticConnection": "التقارب الدلالي", "semanticConnection": "القرب",
"sentiment": "مشاعر", "sentiment": "مشاعر",
"sentimentDominant": "النبرة السائدة هذا الأسبوع", "sentimentDominant": "النبرة السائدة هذا الأسبوع",
"suggestedBridge": "ربط {clusterA} و {clusterB}", "suggestedBridge": "ربط {clusterA} و {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "الاحتفاظ، السلسلة، وإجمالي البطاقات.", "flashcards-progress": "الاحتفاظ، السلسلة، وإجمالي البطاقات.",
"gmail": "عمليات التقاط البريد الإلكتروني المتزامنة من Gmail.", "gmail": "عمليات التقاط البريد الإلكتروني المتزامنة من Gmail.",
"inbox": "ملاحظات في انتظار الأرشفة في الدفاتر.", "inbox": "ملاحظات في انتظار الأرشفة في الدفاتر.",
"intelligence": "الروابط الدلالية، أفكار جسرية، واكتشافات الوكلاء.", "intelligence": "ملاحظات تلتقي، أفكار تصل بينها، ونتائج الوكلاء.",
"link-suggestions": "مقتطفات للربط في ملاحظتك الحالية.", "link-suggestions": "مقتطفات للربط في ملاحظتك الحالية.",
"mind-map": "عناقيد المواضيع مضبوطة الحجم حسب حجم الملاحظات.", "mind-map": "عناقيد المواضيع مضبوطة الحجم حسب حجم الملاحظات.",
"next-paths": "الخطوات التالية التي يقترحها الذكاء الاصطناعي بناءً على أحدث أعمالك.", "next-paths": "الخطوات التالية التي يقترحها الذكاء الاصطناعي بناءً على أحدث أعمالك.",
@@ -4258,7 +4259,7 @@
"resume": "تابع أحدث ملاحظاتك من حيث توقفت.", "resume": "تابع أحدث ملاحظاتك من حيث توقفت.",
"revision": "بطاقات تعليمية مستحقة للمراجعة بالتكرار المتباعد.", "revision": "بطاقات تعليمية مستحقة للمراجعة بالتكرار المتباعد.",
"sentiment": "النبرة العاطفية لملاحظاتك هذا الأسبوع.", "sentiment": "النبرة العاطفية لملاحظاتك هذا الأسبوع.",
"stats": "المجموعات، ملاحظات الجسر، وإجمالي الملاحظات المفهرسة.", "stats": "المواضيع والملاحظات التي تصل بينها والملاحظات المفهرسة.",
"usage": "ائتمانات الذكاء الاصطناعي المتبقية والحدود الشهرية." "usage": "ائتمانات الذكاء الاصطناعي المتبقية والحدود الشهرية."
}, },
"widgetDone": "تم", "widgetDone": "تم",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "معدل الاحتفاظ بالتعلم، سلسلة المراجعة، وإجمالي البطاقات.", "flashcards-progress": "معدل الاحتفاظ بالتعلم، سلسلة المراجعة، وإجمالي البطاقات.",
"gmail": "عمليات التقاط البريد الإلكتروني المتزامنة من تكامل Gmail.", "gmail": "عمليات التقاط البريد الإلكتروني المتزامنة من تكامل Gmail.",
"inbox": "ملاحظات بدون دفتر. أرشفها للحفاظ على دماغك الثاني مرتباً.", "inbox": "ملاحظات بدون دفتر. أرشفها للحفاظ على دماغك الثاني مرتباً.",
"intelligence": "اكتشافات الذكاء الاصطناعي: روابط دلالية بين الملاحظات وأفكار جسر ونتائج الوكلاء.", "intelligence": "ما وجده الذكاء الاصطناعي: ملاحظات تلتقي، أفكار تصل بينها، ونتائج الوكلاء.",
"link-suggestions": "مقتطفات من ملاحظات أخرى تستحق الربط بعملك الحالي.", "link-suggestions": "مقتطفات من ملاحظات أخرى تستحق الربط بعملك الحالي.",
"mind-map": "عناقيد المواضيع مضبوطة الحجم حسب حجم الملاحظات. انقر للاستكشاف في الرؤى.", "mind-map": "عناقيد المواضيع مضبوطة الحجم حسب حجم الملاحظات. انقر للاستكشاف في الرؤى.",
"next-paths": "الخطوات التالية المقترحة بناءً على آخر ملاحظة حررتها: استئناف، ربط، تأريخ أو بحث.", "next-paths": "الخطوات التالية المقترحة بناءً على آخر ملاحظة حررتها: استئناف، ربط، تأريخ أو بحث.",
@@ -4284,7 +4285,7 @@
"resume": "أحدث ملاحظاتك المحدثة. تابع من حيث توقفت.", "resume": "أحدث ملاحظاتك المحدثة. تابع من حيث توقفت.",
"revision": "بطاقات تعليمية مستحقة للمراجعة اليوم بالتكرار المتباعد.", "revision": "بطاقات تعليمية مستحقة للمراجعة اليوم بالتكرار المتباعد.",
"sentiment": "النبرة العاطفية للملاحظات التي تم تحريرها في آخر 7 أيام. يتطلب 3 ملاحظات حديثة على الأقل وتفعيل الذكاء الاصطناعي.", "sentiment": "النبرة العاطفية للملاحظات التي تم تحريرها في آخر 7 أيام. يتطلب 3 ملاحظات حديثة على الأقل وتفعيل الذكاء الاصطناعي.",
"stats": "إحصائيات الفهرس الدلالي: المواضيع النشطة، الملاحظات الجسرية، إجمالي الملاحظات المفهرسة.", "stats": "عدد المواضيع والملاحظات التي تصل بينها والملاحظات المفهرسة.",
"usage": "الاستخدام الشهري لائتمانات الذكاء الاصطناعي حسب الميزة." "usage": "الاستخدام الشهري لائتمانات الذكاء الاصطناعي حسب الميزة."
}, },
"widgetHelpClose": "إغلاق", "widgetHelpClose": "إغلاق",
@@ -4319,7 +4320,7 @@
"resume": "متابعة من هنا", "resume": "متابعة من هنا",
"revision": "بطاقات تعليمية", "revision": "بطاقات تعليمية",
"sentiment": "مشاعر", "sentiment": "مشاعر",
"stats": "الإحصائيات الدلالية", "stats": "المواضيع والملاحظات",
"usage": "حصة الذكاء الاصطناعي" "usage": "حصة الذكاء الاصطناعي"
} }
}, },
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "الصقه في الحقل أدناه وانقر على \"اتصال\". ستقوم المزامنة الأولى باستيراد جميع كتبك ومقالاتك.", "readwiseHelpStep2": "الصقه في الحقل أدناه وانقر على \"اتصال\". ستقوم المزامنة الأولى باستيراد جميع كتبك ومقالاتك.",
"readwiseHelpStep3": "يصبح كل كتاب ملاحظة في دفتر «Readwise 📚» — مع جميع تظليلاتك منظمة.", "readwiseHelpStep3": "يصبح كل كتاب ملاحظة في دفتر «Readwise 📚» — مع جميع تظليلاتك منظمة.",
"readwiseHelpStep4": "لتحديث الإبرازات الجديدة، عد إلى هنا وانقر على \"مزامنة الآن\".", "readwiseHelpStep4": "لتحديث الإبرازات الجديدة، عد إلى هنا وانقر على \"مزامنة الآن\".",
"readwiseHelpStep5": "💡 نصيحة: أنشئ بطاقات ذكاء اصطناعي من ملاحظة Readwise (زر 🎓 في المحرر) لمراجعة قراءاتك.", "readwiseHelpStep5": "نصيحة: أنشئ بطاقات مراجعة من ملاحظة Readwise (زر البطاقات أعلى الملاحظة) لمراجعة قراءاتك.",
"readwiseInfo": "كيف يعمل Readwise؟", "readwiseInfo": "كيف يعمل Readwise؟",
"readwiseSynced": "مزامنة Readwise — {{created}} منشأة، {{updated}} محدثة", "readwiseSynced": "مزامنة Readwise — {{created}} منشأة، {{updated}} محدثة",
"readwiseTokenPlaceholder": "رمز Readwise…", "readwiseTokenPlaceholder": "رمز Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "اكتمل التحويل! تم إنشاء دفتر مرتبط.", "convertSuccess": "اكتمل التحويل! تم إنشاء دفتر مرتبط.",
"convertToNotebook": "تحويل إلى دفتر", "convertToNotebook": "تحويل إلى دفتر",
"converting": "جاري التحويل…", "converting": "جاري التحويل…",
"createLocalDb": "أنشئ قاعدة بيانات محلية مستقلة", "createLocalDb": "إنشاء جدول في هذه الملاحظة",
"createNotebook": "إنشاء دفتر", "createNotebook": "إنشاء دفتر",
"defaultOption1": "خيار 1", "defaultOption1": "خيار 1",
"defaultOption2": "خيار 2", "defaultOption2": "خيار 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "تمت إزالة الكتلة القديمة.", "deprecatedBlock": "تمت إزالة الكتلة القديمة.",
"displayModeGallery": "معرض", "displayModeGallery": "معرض",
"displayModeTable": "طاولة", "displayModeTable": "طاولة",
"echoLoading": "جاري البحث عن الروابط الدلالية...", "echoLoading": "البحث عن ملاحظات قريبة…",
"echoNameRequired": "أدخل أولاً اسماً لهذا الصف للبحث عن الروابط الدلالية.", "echoNameRequired": "أدخل أولاً اسماً لهذا الصف للبحث عن ملاحظات قريبة.",
"echoNoMatch": "لم يتم العثور على ملاحظات تحتوي على \"{{query}}\" في مساحة عملك.", "echoNoMatch": "لم يتم العثور على ملاحظات تحتوي على \"{{query}}\" في مساحة عملك.",
"echoPopoverTitle": "الرنين الدلالي 🔮", "echoPopoverTitle": "ملاحظات قريبة",
"echoSearchError": "حدث خطأ أثناء البحث.", "echoSearchError": "حدث خطأ أثناء البحث.",
"echoUpgradeText": "حوّل هذا الجدول إلى دفتر لتفعيل التحليل العصبي لـ Memento.", "echoUpgradeText": "حوّل هذا الجدول إلى دفتر حتى يجد ميمنتو الملاحظات القريبة.",
"emptyTable": "لا توجد صفوف في الجدول.", "emptyTable": "لا توجد صفوف في الجدول.",
"insertCitation": "إدراج رابط في المحرر", "insertCitation": "إدراج رابط في المحرر",
"insertDesc": "ضمن البيانات المنظمة لدفترك", "insertDesc": "ضمن البيانات المنظمة لدفترك",
@@ -4514,9 +4515,9 @@
"keywordMatch": "كلمة مفتاحية", "keywordMatch": "كلمة مفتاحية",
"linkToNotebook": "ربط بدفتر", "linkToNotebook": "ربط بدفتر",
"loadError": "خطأ في تحميل البيانات المنظمة.", "loadError": "خطأ في تحميل البيانات المنظمة.",
"localDbTitle": "قاعدة بيانات مستقلة", "localDbTitle": "جدول في هذه الملاحظة",
"namePlaceholder": "أدخل اسماً…", "namePlaceholder": "أدخل اسماً…",
"noEchoFound": "لم يتم اكتشاف روابط دلالية.", "noEchoFound": "لم يُعثر على ملاحظات قريبة.",
"noNotebook": "تتطلب هذه الكتلة دفتر ملاحظات. انقل هذه الملاحظة إلى دفتر أولاً.", "noNotebook": "تتطلب هذه الكتلة دفتر ملاحظات. انقل هذه الملاحظة إلى دفتر أولاً.",
"noNotebookDesc": "يعرض هذه الكتلة العرض المنظم لدفتر ملاحظات. اختر الدفتر المرتبط:", "noNotebookDesc": "يعرض هذه الكتلة العرض المنظم لدفتر ملاحظات. اختر الدفتر المرتبط:",
"noSchema": "لا يوجد عرض منظم لهذا الدفتر بعد. قم بإعداده من رأس الدفتر.", "noSchema": "لا يوجد عرض منظم لهذا الدفتر بعد. قم بإعداده من رأس الدفتر.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "ربط بدفتر", "selectNotebook": "ربط بدفتر",
"selectOptionsPlaceholder": "خيارات مفصولة بفواصل", "selectOptionsPlaceholder": "خيارات مفصولة بفواصل",
"semanticEcho": "الرنين الدلالي", "semanticEcho": "الرنين الدلالي",
"switchToLocalDb": "التبديل إلى قاعدة البيانات المحلية", "switchToLocalDb": "العودة إلى جدول هذه الملاحظة",
"turnIntoLabel": "قاعدة بيانات مدمجة", "turnIntoLabel": "جدول في الملاحظة",
"untitled": "بدون عنوان" "untitled": "بدون عنوان"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "ابحث عن ملاحظة…", "relationSearch": "ابحث عن ملاحظة…",
"selectOptions": "خيارات (واحد لكل سطر)", "selectOptions": "خيارات (واحد لكل سطر)",
"selectOptionsPlaceholder": "للقيام\\\nقيد التقدم\\\nمنجز", "selectOptionsPlaceholder": "للقيام\\\nقيد التقدم\\\nمنجز",
"semanticResonances": "الرنين الدلالي", "semanticResonances": "ملاحظات تلتقي",
"tagApplied": "جسور", "tagApplied": "جسور",
"viewCalendarHint": "التقويم — ملاحظاتك مرتبة حسب التاريخ", "viewCalendarHint": "التقويم — ملاحظاتك مرتبة حسب التاريخ",
"viewGallery": "معرض", "viewGallery": "معرض",

View File

@@ -407,7 +407,7 @@
"placeholder": "Suchen", "placeholder": "Suchen",
"searchPlaceholder": "Durchsuchen Sie Ihre Notizen...", "searchPlaceholder": "Durchsuchen Sie Ihre Notizen...",
"semanticInProgress": "KI-Suche läuft...", "semanticInProgress": "KI-Suche läuft...",
"semanticTooltip": "Semantische KI-Suche", "semanticTooltip": "Suche nach Sinn",
"searching": "Wird gesucht...", "searching": "Wird gesucht...",
"noResults": "Keine Ergebnisse gefunden", "noResults": "Keine Ergebnisse gefunden",
"resultsFound": "{count} Notizen gefunden", "resultsFound": "{count} Notizen gefunden",
@@ -861,7 +861,7 @@
"compareAll": "Alle vergleichen", "compareAll": "Alle vergleichen",
"mergeAll": "Alle zusammenführen", "mergeAll": "Alle zusammenführen",
"close": "Schließen", "close": "Schließen",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % Nähe",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo", "badgeLabel": "Memory Echo",
"bottomCueConsent": "KI-Verbindungen unten verfügbar", "bottomCueConsent": "KI-Verbindungen unten verfügbar",
@@ -918,7 +918,7 @@
"noContentReturned": "Kein Fusion-Inhalt von der API zurückgegeben", "noContentReturned": "Kein Fusion-Inhalt von der API zurückgegeben",
"unknownDate": "Unbekanntes Datum" "unknownDate": "Unbekanntes Datum"
}, },
"defaultInsight": "Diese Notizen scheinen semantisch verwandt zu sein.", "defaultInsight": "Diese Notizen gehören zusammen.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "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", "cleanupError": "Labels konnten nicht bereinigt werden",
"indexingComplete": "Indexierung abgeschlossen: {count} Notiz(en) verarbeitet", "indexingComplete": "Indexierung abgeschlossen: {count} Notiz(en) verarbeitet",
"indexingError": "Fehler bei der Indexierung", "indexingError": "Fehler bei der Indexierung",
"semanticIndexing": "Semantische Indizierung", "semanticIndexing": "Index für die Suche nach Bedeutung",
"semanticIndexingDescription": "Vektoren für alle Notizen generieren, um absichtsbasierte Suche zu ermöglichen", "semanticIndexingDescription": "Alle Notizen für die Suche nach Bedeutung vorbereiten",
"profile": "Profil", "profile": "Profil",
"searchNoResults": "Keine Ergebnisse gefunden", "searchNoResults": "Keine Ergebnisse gefunden",
"languageAuto": "Sprache auf Auto eingestellt", "languageAuto": "Sprache auf Auto eingestellt",
@@ -1664,7 +1664,7 @@
"title": "Funktionen", "title": "Funktionen",
"description": "KI-gestützte Fähigkeiten", "description": "KI-gestützte Fähigkeiten",
"titleSuggestions": "KI-gestützte Titelvorschläge", "titleSuggestions": "KI-gestützte Titelvorschläge",
"semanticSearch": "Semantische Suche mit Embeddings", "semanticSearch": "Suche nach Bedeutung",
"paragraphReformulation": "Absatz-Reformulierung", "paragraphReformulation": "Absatz-Reformulierung",
"memoryEcho": "Memory Echo tägliche Einblicke", "memoryEcho": "Memory Echo tägliche Einblicke",
"notebookOrganization": "Notizbuch-Organisation", "notebookOrganization": "Notizbuch-Organisation",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "Suchindex neu erstellen", "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", "button": "Index neu erstellen",
"success": "Indizierung abgeschlossen: {count} Notizen verarbeitet", "success": "Indizierung abgeschlossen: {count} Notizen verarbeitet",
"failed": "Fehler während der Indizierung" "failed": "Fehler während der Indizierung"
@@ -1984,7 +1984,7 @@
"legendWiki": "Eine Notiz verlinken", "legendWiki": "Eine Notiz verlinken",
"mentionShort": "Erwähnung", "mentionShort": "Erwähnung",
"moreNodes": "+{count} auf der Karte", "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.", "noOutbound": "Diese Notiz ist noch nicht mit anderen Notizen verknüpft.",
"noWikiYet": "Noch keine Links zu anderen Notizen.", "noWikiYet": "Noch keine Links zu anderen Notizen.",
"outboundHelp": "Notizen, auf die diese mit [[…]] im Text verweist.", "outboundHelp": "Notizen, auf die diese mit [[…]] im Text verweist.",
@@ -2190,7 +2190,7 @@
"custom": "Benutzerdefiniert" "custom": "Benutzerdefiniert"
}, },
"typeDescriptions": { "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", "researcher": "Sucht nach Informationen zu einem Thema",
"monitor": "Überwacht ein Notizbuch und analysiert Notizen", "monitor": "Überwacht ein Notizbuch und analysiert Notizen",
"slideGenerator": "Erstellt eine PowerPoint-Präsentation aus Notizen", "slideGenerator": "Erstellt eine PowerPoint-Präsentation aus Notizen",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "z.B. Dienstag KI-Watch", "namePlaceholder": "z.B. Dienstag KI-Watch",
"description": "Beschreibung (optional)", "description": "Beschreibung (optional)",
"descriptionPlaceholder": "Wöchentliche KI-Nachrichtenzusammenfassung", "descriptionPlaceholder": "Wöchentliche KI-Nachrichtenzusammenfassung",
"urlsLabel": "URLs zum Extrahieren", "urlsLabel": "Adressen der zu lesenden Seiten",
"urlsOptional": "(optional)", "urlsOptional": "(optional)",
"sourceNotebook": "Zu überwachendes Notizbuch", "sourceNotebook": "Zu überwachendes Notizbuch",
"selectNotebook": "Notizbuch auswählen...", "selectNotebook": "Notizbuch auswählen...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "E-Mail-Benachrichtigung", "notifyEmail": "E-Mail-Benachrichtigung",
"notifyEmailHint": "Erhalten Sie eine E-Mail mit den Ergebnissen des Agenten nach jedem Durchlauf", "notifyEmailHint": "Erhalten Sie eine E-Mail mit den Ergebnissen des Agenten nach jedem Durchlauf",
"includeImages": "Bilder einschließen", "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", "back": "Zurück",
"configuration": "Konfiguration", "configuration": "Konfiguration",
"options": "Optionen", "options": "Optionen",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "KI-Watch", "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": { "veilleTech": {
"name": "Tech-Watch", "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": { "veilleDev": {
"name": "Dev-Watch", "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": { "surveillant": {
"name": "Notiz-Beobachter", "name": "Notiz-Beobachter",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Agenten-Werkzeuge", "title": "Agenten-Werkzeuge",
"webSearch": "Websuche", "webSearch": "Websuche",
"webScrape": "Web-Scraping", "webScrape": "Webseiten lesen",
"noteSearch": "Notizsuche", "noteSearch": "Notizsuche",
"noteRead": "Notiz lesen", "noteRead": "Notiz lesen",
"noteCreate": "Notiz erstellen", "noteCreate": "Notiz erstellen",
@@ -2431,15 +2431,15 @@
"btnLabel": "Hilfe", "btnLabel": "Hilfe",
"close": "Schließen", "close": "Schließen",
"whatIsAgent": "Was ist ein Agent?", "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?", "howToUse": "Wie verwendet man einen Agenten?",
"howToUseContent": "1. Klicken Sie auf **„Neuer Agent\"** (oder beginnen Sie mit einer **Vorlage** unten auf der Seite).", "howToUseContent": "1. Klicken Sie auf **„Neuer Agent\"** (oder beginnen Sie mit einer **Vorlage** unten auf der Seite).",
"types": "Agententypen", "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)", "advanced": "Erweiterter Modus (KI-Anweisungen, Max. Iterationen)",
"advancedContent": "Klicken Sie unten im Formular auf **„Erweiterter Modus\"**, um auf zusätzliche Einstellungen zuzugreifen.", "advancedContent": "Klicken Sie unten im Formular auf **„Erweiterter Modus\"**, um auf zusätzliche Einstellungen zuzugreifen.",
"tools": "Verfügbare Werkzeuge (Details)", "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", "frequency": "Häufigkeit & Planung",
"frequencyContent": "| Häufigkeit | Verhalten\n|-----------|----------\n| **Manuell** | Sie klicken selbst auf „Ausführen\".", "frequencyContent": "| Häufigkeit | Verhalten\n|-----------|----------\n| **Manuell** | Sie klicken selbst auf „Ausführen\".",
"targetNotebook": "Zielnotizbuch", "targetNotebook": "Zielnotizbuch",
@@ -2447,7 +2447,7 @@
"templates": "Vorlagen", "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.", "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", "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": { "tooltips": {
"agentType": "Wählen Sie die Art der Aufgabe, die der Agent ausführen soll. Jeder Typ hat unterschiedliche Funktionen und Felder.", "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.", "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", "upgradeTitle": "Auf Pro upgraden",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro beinhaltet:", "proIncludes": "Pro beinhaltet:",
"proSearch": "100 semantic searches / month", "proSearch": "1.000 KI-Credits / Monat",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Diagramm-Generierung", "featureDiagrams": "Diagramm-Generierung",
"featureFlashcards": "KI-Karteikarten", "featureFlashcards": "Lernkarten",
"featurePublishEnhance": "KI-Veröffentlichung", "featurePublishEnhance": "KI-Veröffentlichung",
"featureSlides": "Foliengenerierung", "featureSlides": "Foliengenerierung",
"featureVoice": "Sprachtranskription", "featureVoice": "Sprachtranskription",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 Umformulierungen / Monat", "businessFeature3": "500 Umformulierungen / Monat",
"businessFeature4": "1.000 Chat-Nachrichten / Monat", "businessFeature4": "1.000 Chat-Nachrichten / Monat",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "Benutzerdefinierte Kontingente, SSO, Prioritätssupport.", "enterpriseDescription": "Benutzerdefinierte Kontingente, Einmalanmeldung für das Team, Prioritätssupport.",
"contactSales": "Vertrieb kontaktieren", "contactSales": "Vertrieb kontaktieren",
"startCheckout": "Loslegen", "startCheckout": "Loslegen",
"checkoutLoading": "Checkout wird geladen…", "checkoutLoading": "Checkout wird geladen…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Ihr Abonnement verlängert sich automatisch.", "paidPlanDesc": "Ihr Abonnement verlängert sich automatisch.",
"businessDescription": "Für Teams und Produktverantwortliche.", "businessDescription": "Für Teams und Produktverantwortliche.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Einmalanmeldung für das ganze Team",
"enterpriseFeature3": "Engagierter Support", "enterpriseFeature3": "Engagierter Support",
"enterpriseFeature4": "Individuelle Abrechnung", "enterpriseFeature4": "Individuelle Abrechnung",
"enterpriseFeature5": "Garantierte SLA", "enterpriseFeature5": "Garantierte Antwortzeit",
"subtitle": "Wählen Sie den passenden Plan", "subtitle": "Wählen Sie den passenden Plan",
"freeDescription": "Um Memento kennenzulernen", "freeDescription": "Um Memento kennenzulernen",
"freeF1": "30 semantische Suchen", "freeF1": "30 semantische Suchen",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Abrechnungsstatus konnte nicht abgerufen werden", "fetchStatusFailed": "Abrechnungsstatus konnte nicht abgerufen werden",
"fetchQuotasFailed": "Kontingente konnten nicht abgerufen werden", "fetchQuotasFailed": "Kontingente konnten nicht abgerufen werden",
"fetchInvoicesFailed": "Rechnungsverlauf konnte nicht geladen werden.", "fetchInvoicesFailed": "Rechnungsverlauf konnte nicht geladen werden.",
"savePercent": "~17% sparen", "savePercent": "~{percent} % sparen",
"billedYearTotal": "also {price} im Jahr",
"cancelSubscription": "Abonnement kündigen", "cancelSubscription": "Abonnement kündigen",
"changeOffer": "Angebot wechseln", "changeOffer": "Angebot wechseln",
"downgradeToFree": "Zum kostenlosen Angebot zurück", "downgradeToFree": "Zum kostenlosen Angebot zurück",
@@ -3379,13 +3380,13 @@
"cta": "Kontakt", "cta": "Kontakt",
"feature0": "Alles aus Business", "feature0": "Alles aus Business",
"feature1": "Unbegrenzte Agenten", "feature1": "Unbegrenzte Agenten",
"feature2": "SSO / SAML", "feature2": "Einmalanmeldung für das ganze Team",
"feature3": "Audit-Logs & SLA", "feature3": "Aktivitätsprotokoll und garantierte Antwortzeit",
"feature4": "Dedizierter Support", "feature4": "Dedizierter Support",
"feature5": "Live-Onboarding" "feature5": "Begleitete Einrichtung"
}, },
"basicPrice": "Kostenlos", "basicPrice": "Kostenlos",
"savePercent": "~17% sparen", "savePercent": "~{percent} % sparen",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Lösche dein Konto und alle zugehörigen Daten dauerhaft und unwiderruflich.", "sectionDescription": "Lösche dein Konto und alle zugehörigen Daten dauerhaft und unwiderruflich.",
"whatWillBeDeleted": "Folgendes wird dauerhaft gelöscht:", "whatWillBeDeleted": "Folgendes wird dauerhaft gelöscht:",
"item1": "Alle Notizen, Notizbücher und Anhänge", "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", "item3": "Alle BYOK API-Schlüssel",
"item4": "Alle KI-Gespräche und Brainstorm-Sitzungen", "item4": "Alle KI-Gespräche und Brainstorm-Sitzungen",
"item5": "Kontingent- und Nutzungsverlauf", "item5": "Kontingent- und Nutzungsverlauf",
@@ -3559,7 +3560,7 @@
"step_features_title": "Ihre KI-Superkräfte", "step_features_title": "Ihre KI-Superkräfte",
"step_features_subtitle": "Wählen Sie Ihren Einstieg.", "step_features_subtitle": "Wählen Sie Ihren Einstieg.",
"step_features_cta": "Los geht's!", "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_search_desc": "Finden Sie jede Notiz nach Bedeutung, nicht nur nach Schlüsselwörtern.",
"feature_flashcards_title": "KI-Karteikarten", "feature_flashcards_title": "KI-Karteikarten",
"feature_flashcards_desc": "Lernkarten aus Ihren Notizen in einem Klick erstellen.", "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_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_title": "Sitzung exportieren",
"hint_brainstorm_export_desc": "Exportieren Sie die gesamte Brainstorming-Sitzung als strukturierte Notiz ins gewählte Carnet.", "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_title": "Notizthemen",
"hint_insights_clusters_desc": "Ihre Notizen werden automatisch in thematische Cluster gruppiert. Klicken Sie auf einen Cluster für Details.", "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_title": "Brückennotizen",
"hint_insights_bridge_desc": "Brückennotizen verbinden mehrere Cluster und sind hervorgehoben, weil sie wichtige Verbindungen enthalten.", "hint_insights_bridge_desc": "Brückennotizen verbinden mehrere Themen. Sie zeigen, wo Ihre Ideen sich kreuzen.",
"hint_insights_refresh_title": "Cluster aktualisieren", "hint_insights_refresh_title": "Themen aktualisieren",
"hint_insights_refresh_desc": "Wenn Sie neue Notizen hinzugefügt haben, klicken Sie auf „Aktualisieren\", um die Cluster neu zu berechnen." "hint_insights_refresh_desc": "Wenn Sie Notizen hinzugefügt haben, klicken Sie auf „Aktualisieren, um die Themen neu zu berechnen."
}, },
"blockAction": { "blockAction": {
"moveUp": "Block nach oben verschieben", "moveUp": "Block nach oben verschieben",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "Verbindungen", "title": "Verbindungen",
"toggleMenu": "Menü ein- oder ausblenden", "toggleMenu": "Menü ein- oder ausblenden",
"subtitle": "Entdecke die verborgene Architektur deines Wissens", "subtitle": "Sehen Sie, wie Ihre Notizen zusammenhängen",
"resync": "Aktualisieren", "resync": "Aktualisieren",
"mapping": "Kartierung…", "mapping": "Kartierung…",
"loading": "Deine Notizen werden geladen…", "loading": "Deine Notizen werden geladen…",
"mappingTitle": "Dein Wissen wird kartiert…", "mappingTitle": "Dein Wissen wird kartiert…",
"mappingHint": "Dies kann ein bis drei Minuten dauern. Sie können weiter browsen; die Seite wird automatisch aktualisiert.", "mappingHint": "Dies kann ein bis drei Minuten dauern. Sie können weiter browsen; die Seite wird automatisch aktualisiert.",
"analyzeNow": "Semantische Analyse starten", "analyzeNow": "Themen aktualisieren",
"emptyNeedMoreNotes": "Fügen Sie {count} weitere Notizen hinzu, um semantisches Clustering freizuschalten (Minimum 10).", "emptyNeedMoreNotes": "Fügen Sie {count} weitere Notizen hinzu, um Ihre Themen zu gruppieren (Minimum 10).",
"embeddingsHint": "Nur {indexed} von {total} Notizen sind für KI indiziert.", "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.", "vsGraphHint": "Nicht dasselbe wie die „Link-Map\" (Netzwerk-Symbol): Hier gruppiert die KI nach Bedeutung, nicht nach Links.",
"openGraphMap": "Link-Map öffnen", "openGraphMap": "Link-Map öffnen",
"analysisFailed": "Analyse fehlgeschlagen. Überprüfe deine KI-Einstellungen.", "analysisFailed": "Analyse fehlgeschlagen. Überprüfe deine KI-Einstellungen.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "Notizen", "graphNotesLabel": "Notizen",
"clusterFallback": "Thema {index}", "clusterFallback": "Thema {index}",
"unclusteredNotes": "{count} Notizen keinem Thema zugeordnet (im Graphen ausgeblendet).", "unclusteredNotes": "{count} Notizen keinem Thema zugeordnet (im Graphen ausgeblendet).",
"emptyTitle": "Entdecke deine Wissenscluster", "emptyTitle": "Entdecke deine Themen",
"emptyDescription": "Klicken Sie auf „Netzwerk neu synchronisieren\", um Ihre Notizen zu analysieren und verborgene Verbindungen zu finden", "emptyDescription": "Klicken Sie auf „Aktualisieren, um Ihre Notizen nach Themen zu gruppieren.",
"stats": { "stats": {
"clusters": "Cluster", "clusters": "Cluster",
"bridgeNotes": "Brücken-Notizen", "bridgeNotes": "Brücken-Notizen",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "Semantische Cluster", "title": "Themen",
"notesCount": "{count} Notizen", "notesCount": "{count} Notizen",
"centralNotes": "Zentrale Notizen", "centralNotes": "Zentrale Notizen",
"emptyCluster": "Keine Notizen in diesem Cluster" "emptyCluster": "Keine Notizen in diesem Thema"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Affinität {score}%", "affinity": "Affinität {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "Netzwerk neu synchronisieren, um Brückenpaare zu aktualisieren.", "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": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Graph", "viewGraph": "Graph",
"viewDashboard": "Dashboard", "viewDashboard": "Dashboard",
"isolatedClusters": { "isolatedClusters": {
"title": "Isolierte Cluster ({count})", "title": "Isolierte Themen ({count})",
"badge": "Nicht verbunden", "badge": "Nicht verbunden",
"empty": "Alle Cluster sind verbunden!" "empty": "Alle Themen sind bereits durch mindestens eine Brückennotiz verbunden."
}, },
"focusCluster": { "focusCluster": {
"title": "Cluster-Fokus aktiv", "title": "Thema geöffnet",
"description": "Dieses thematische Cluster sammelt {count} ergänzende Notizen. Klicken Sie auf eine Notiz, um sie zu öffnen.", "description": "Dieses Thema umfasst {count} Notizen. Klicken Sie auf eine Notiz, um sie zu öffnen.",
"close": "Schließen" "close": "Schließen"
}, },
"badgeDominant": "Dominant", "badgeDominant": "Dominant",
"bridgeCount": "Brücke(n)", "bridgeCount": "Brücke(n)",
"echoTitle": "Sie kehren immer wieder zu dieser Idee zurück", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "tipIsolatedAction": "Diese Themen haben keine verbindende Notiz zum restlichen Denken.",
"recalcSystem": { "recalcSystem": {
"title": "Neuberechnungssystem", "title": "Themenaktualisierung",
"statusSynced": "Synchronisiert", "statusSynced": "Aktuell",
"scheduledCron": "Geplant", "scheduledCron": "Automatische Aktualisierung",
"lastSync": "Letzte Sync" "lastSync": "Letzte Aktualisierung"
}, },
"resetFocus": "Fokus zurücksetzen", "resetFocus": "Alles anzeigen",
"listView": "Liste", "listView": "Liste",
"graphAriaLabel": "Semantisches Netzwerk: {clusters} Cluster, {notes} Notizen, {bridges} Brückennotizen. Pfeiltasten zur Navigation.", "graphAriaLabel": "Themenkarte: {clusters} Themen, {notes} Notizen, {bridges} Brückennotizen. Listenansicht für einfachere Navigation.",
"listAriaLabel": "Barrierefreie Cluster-Liste mit Notizen und Brückenverbindungen", "listAriaLabel": "Liste der Themen, Notizen und Brückennotizen",
"dashboardFilterPlaceholder": "Brücken-Notizen, Themen filtern…", "dashboardFilterPlaceholder": "Brücken-Notizen, Themen filtern…",
"legendFilterPlaceholder": "Themen filtern…", "legendFilterPlaceholder": "Themen filtern…",
"legendShowLess": "Weniger anzeigen", "legendShowLess": "Weniger anzeigen",
@@ -3896,7 +3897,7 @@
"genericError": "Beim Senden an Ihre Instanz ist ein Fehler aufgetreten.", "genericError": "Beim Senden an Ihre Instanz ist ein Fehler aufgetreten.",
"ignore": "beherrscht", "ignore": "beherrscht",
"processing": "Verarbeiten…", "processing": "Verarbeiten…",
"processingDetail": "Tags, semantische Zusammenfassung und Embeddings werden generiert.", "processingDetail": "Notiz wird vorbereitet: Labels, Zusammenfassung, Suche nach Bedeutung.",
"publishedOn": "Veröffentlicht auf {domain}", "publishedOn": "Veröffentlicht auf {domain}",
"quitSimulator": "Simulator schließen", "quitSimulator": "Simulator schließen",
"realtimeCapture": "Datum: Live-Erfassung", "realtimeCapture": "Datum: Live-Erfassung",
@@ -4156,7 +4157,7 @@
"match": "Anmelden", "match": "Anmelden",
"memoryEchoDisabled": "Memory Echo ist in Ihren KI-Einstellungen deaktiviert.", "memoryEchoDisabled": "Memory Echo ist in Ihren KI-Einstellungen deaktiviert.",
"mindMap": "Mindmap", "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 →", "mindMapOpen": "Insights-Karte öffnen →",
"mindMapUnavailable": "Mindmap nicht verfügbar.", "mindMapUnavailable": "Mindmap nicht verfügbar.",
"new": "Notizen erstellt", "new": "Notizen erstellt",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "Zur Notiz hinzufügen", "add-link": "Zur Notiz hinzufügen",
"bridge": "Brücken-Idee", "bridge": "Brücken-Idee",
"connect": "Semantischer Link", "connect": "Notiz verknüpfen",
"continue": "Fortfahren", "continue": "Fortfahren",
"daily": "Tagebuch", "daily": "Tagebuch",
"explore": "Thema erkunden", "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.", "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", "resumeOpen": "Fortsetzen",
"review": "Wiederholen", "review": "Wiederholen",
"semanticConnection": "Semantische Affinität", "semanticConnection": "Nähe",
"sentiment": "Stimmung", "sentiment": "Stimmung",
"sentimentDominant": "Dominanter Ton diese Woche", "sentimentDominant": "Dominanter Ton diese Woche",
"suggestedBridge": "Verbindet {clusterA} & {clusterB}", "suggestedBridge": "Verbindet {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Behalten, Strähne und Gesamtkarten.", "flashcards-progress": "Behalten, Strähne und Gesamtkarten.",
"gmail": "E-Mail-Erfassungen, die über Gmail synchronisiert wurden.", "gmail": "E-Mail-Erfassungen, die über Gmail synchronisiert wurden.",
"inbox": "Notizen, die auf Einordnung in Notizbücher warten.", "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.", "link-suggestions": "Passagen zum Verlinken in Ihrer aktuellen Notiz.",
"mind-map": "Themencluster, größen skaliert nach Notizvolumen.", "mind-map": "Themencluster, größen skaliert nach Notizvolumen.",
"next-paths": "KI-vorgeschlagene nächste Schritte aus deiner letzten Arbeit.", "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.", "resume": "Setzen Sie Ihre aktuellsten Notizen dort fort, wo Sie aufgehört haben.",
"revision": "Karteikarten fällig für Wiederholung mit Spaced Repetition.", "revision": "Karteikarten fällig für Wiederholung mit Spaced Repetition.",
"sentiment": "Emotionaler Ton Ihrer Notizen diese Woche.", "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." "usage": "Verbleibende KI-Credits und Monatslimits."
}, },
"widgetDone": "Fertig", "widgetDone": "Fertig",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Lern-Behaltensrate, Wiederholungssträhne und Gesamtkarten.", "flashcards-progress": "Lern-Behaltensrate, Wiederholungssträhne und Gesamtkarten.",
"gmail": "E-Mail-Erfassungen, die über die Gmail-Integration synchronisiert wurden.", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "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." "usage": "Monatliche KI-Credit-Nutzung nach Funktion."
}, },
"widgetHelpClose": "Schließen", "widgetHelpClose": "Schließen",
@@ -4319,7 +4320,7 @@
"resume": "Hier fortsetzen", "resume": "Hier fortsetzen",
"revision": "Karteikarten", "revision": "Karteikarten",
"sentiment": "Stimmung", "sentiment": "Stimmung",
"stats": "Semantische Statistiken", "stats": "Themen und Notizen",
"usage": "KI-Kontingent" "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.", "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.", "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\".", "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?", "readwiseInfo": "Wie funktioniert Readwise?",
"readwiseSynced": "Readwise-Sync — {{created}} erstellt, {{updated}} aktualisiert", "readwiseSynced": "Readwise-Sync — {{created}} erstellt, {{updated}} aktualisiert",
"readwiseTokenPlaceholder": "Readwise-Token…", "readwiseTokenPlaceholder": "Readwise-Token…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Konvertierung abgeschlossen! Verknüpftes Notizbuch erstellt.", "convertSuccess": "Konvertierung abgeschlossen! Verknüpftes Notizbuch erstellt.",
"convertToNotebook": "In Notizbuch umwandeln", "convertToNotebook": "In Notizbuch umwandeln",
"converting": "Konvertieren…", "converting": "Konvertieren…",
"createLocalDb": "Eine eigenständige lokale Datenbank erstellen", "createLocalDb": "Tabelle in dieser Notiz erstellen",
"createNotebook": "Notizbuch erstellen", "createNotebook": "Notizbuch erstellen",
"defaultOption1": "Option 1", "defaultOption1": "Option 1",
"defaultOption2": "Option 2", "defaultOption2": "Option 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Veralteter Block entfernt.", "deprecatedBlock": "Veralteter Block entfernt.",
"displayModeGallery": "Galerie", "displayModeGallery": "Galerie",
"displayModeTable": "Tisch", "displayModeTable": "Tisch",
"echoLoading": "Suche nach semantischen Verbindungen...", "echoLoading": "Suche nach nahen Notizen…",
"echoNameRequired": "Geben Sie zuerst einen Namen für diese Zeile ein, um nach semantischen Verbindungen zu suchen.", "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.", "echoNoMatch": "Keine Notizen mit „{{query}}\" in Ihrem Bereich gefunden.",
"echoPopoverTitle": "Semantische Resonanzen 🔮", "echoPopoverTitle": "Nahe Notizen",
"echoSearchError": "Bei der Suche ist ein Fehler aufgetreten.", "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.", "emptyTable": "Keine Zeilen in der Tabelle.",
"insertCitation": "Link im Editor einfügen", "insertCitation": "Link im Editor einfügen",
"insertDesc": "Betten Sie die strukturierten Daten Ihres Notizbuchs ein", "insertDesc": "Betten Sie die strukturierten Daten Ihres Notizbuchs ein",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Schlüsselwort", "keywordMatch": "Schlüsselwort",
"linkToNotebook": "Ein Notizbuch verlinken", "linkToNotebook": "Ein Notizbuch verlinken",
"loadError": "Fehler beim Laden der strukturierten Daten.", "loadError": "Fehler beim Laden der strukturierten Daten.",
"localDbTitle": "Eigenständige Datenbank", "localDbTitle": "Tabelle in dieser Notiz",
"namePlaceholder": "Namen eingeben…", "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.", "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:", "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.", "noSchema": "Dieses Notizbuch hat noch keine strukturierte Ansicht. Richten Sie sie im Notizbuch-Header ein.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Ein Notizbuch verlinken", "selectNotebook": "Ein Notizbuch verlinken",
"selectOptionsPlaceholder": "Optionen durch Kommas getrennt", "selectOptionsPlaceholder": "Optionen durch Kommas getrennt",
"semanticEcho": "Semantische Resonanzen", "semanticEcho": "Semantische Resonanzen",
"switchToLocalDb": "Zur lokalen Datenbank wechseln", "switchToLocalDb": "Zurück zur Tabelle dieser Notiz",
"turnIntoLabel": "Inline-Datenbank", "turnIntoLabel": "Tabelle in der Notiz",
"untitled": "Unbenannt" "untitled": "Unbenannt"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Notiz suchen…", "relationSearch": "Notiz suchen…",
"selectOptions": "Optionen (eine pro Zeile)", "selectOptions": "Optionen (eine pro Zeile)",
"selectOptionsPlaceholder": "Zu erledigen\\\nIn Bearbeitung\\\nErledigt", "selectOptionsPlaceholder": "Zu erledigen\\\nIn Bearbeitung\\\nErledigt",
"semanticResonances": "Semantische Resonanzen", "semanticResonances": "Notizen, die zusammengehören",
"tagApplied": "Brücken", "tagApplied": "Brücken",
"viewCalendarHint": "Kalender — deine Notizen nach Datum sortiert", "viewCalendarHint": "Kalender — deine Notizen nach Datum sortiert",
"viewGallery": "Galerie", "viewGallery": "Galerie",

View File

@@ -114,6 +114,17 @@
"title": "Notes", "title": "Notes",
"newNote": "New note", "newNote": "New note",
"reorganize": "Reorganize notes", "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", "untitled": "Untitled",
"placeholder": "Take a note...", "placeholder": "Take a note...",
"markdownPlaceholder": "Take a note... (Markdown supported)", "markdownPlaceholder": "Take a note... (Markdown supported)",
@@ -408,7 +419,7 @@
"placeholder": "Search", "placeholder": "Search",
"searchPlaceholder": "Search your notes...", "searchPlaceholder": "Search your notes...",
"semanticInProgress": "AI search in progress...", "semanticInProgress": "AI search in progress...",
"semanticTooltip": "AI semantic search", "semanticTooltip": "Search by meaning",
"searching": "Searching...", "searching": "Searching...",
"noResults": "No results found", "noResults": "No results found",
"resultsFound": "{count} notes found", "resultsFound": "{count} notes found",
@@ -841,7 +852,7 @@
"match": "{percentage}% match", "match": "{percentage}% match",
"fused": "Fused", "fused": "Fused",
"clickToView": "Click to view note →", "clickToView": "Click to view note →",
"defaultInsight": "These notes appear to be semantically related.", "defaultInsight": "These notes belong together.",
"overlay": { "overlay": {
"title": "Connected Notes", "title": "Connected Notes",
"searchPlaceholder": "Search connections...", "searchPlaceholder": "Search connections...",
@@ -883,7 +894,7 @@
"backToNote": "Back to my note", "backToNote": "Back to my note",
"openInEditor": "Open in editor", "openInEditor": "Open in editor",
"badgeLabel": "Memory Echo", "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.", "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}", "detectedIn": "Passage found in: {title}",
"helpToggle": "How does this work?", "helpToggle": "How does this work?",
@@ -902,7 +913,7 @@
"hideAll": "Hide extra connections ({count})", "hideAll": "Hide extra connections ({count})",
"retroTitle": "Notes that cite this content", "retroTitle": "Notes that cite this content",
"retroDescription": "This passage is quoted in {count} other note(s):", "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…", "bottomCueLoading": "Memory Echo is scanning below…",
"bottomCueFound": "{count} related notes below", "bottomCueFound": "{count} related notes below",
"bottomCueFoundOne": "1 related note below", "bottomCueFoundOne": "1 related note below",
@@ -976,7 +987,7 @@
"clipPage": "Clip this page", "clipPage": "Clip this page",
"analyzingSource": "Analyzing source", "analyzingSource": "Analyzing source",
"processing": "Processing…", "processing": "Processing…",
"processingDetail": "Generating tags, semantic summary and embeddings.", "processingDetail": "Preparing the note: labels, summary, search by meaning.",
"successBadge": "Success", "successBadge": "Success",
"sentToNotebook": "Note saved to notebook", "sentToNotebook": "Note saved to notebook",
"viewInMomento": "View in Memento", "viewInMomento": "View in Memento",
@@ -1087,8 +1098,8 @@
"cleanupError": "Could not clean up labels", "cleanupError": "Could not clean up labels",
"indexingComplete": "Indexing complete: {count} note(s) processed", "indexingComplete": "Indexing complete: {count} note(s) processed",
"indexingError": "Error during indexing", "indexingError": "Error during indexing",
"semanticIndexing": "Semantic Indexing", "semanticIndexing": "Index for search by meaning",
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search", "semanticIndexingDescription": "Prepare all notes for search by meaning",
"profile": "Profile", "profile": "Profile",
"searchNoResults": "No settings found", "searchNoResults": "No settings found",
"languageAuto": "Language set to Auto", "languageAuto": "Language set to Auto",
@@ -1712,7 +1723,7 @@
"title": "Features", "title": "Features",
"description": "AI-powered capabilities", "description": "AI-powered capabilities",
"titleSuggestions": "AI-powered title suggestions", "titleSuggestions": "AI-powered title suggestions",
"semanticSearch": "Semantic search with embeddings", "semanticSearch": "Search by meaning",
"paragraphReformulation": "Paragraph reformulation", "paragraphReformulation": "Paragraph reformulation",
"memoryEcho": "Memory Echo daily insights", "memoryEcho": "Memory Echo daily insights",
"notebookOrganization": "Notebook organization", "notebookOrganization": "Notebook organization",
@@ -1827,7 +1838,7 @@
}, },
"indexing": { "indexing": {
"title": "Rebuild Search Index", "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", "button": "Rebuild Index",
"success": "Indexing complete: {count} notes processed", "success": "Indexing complete: {count} notes processed",
"failed": "Error during indexing" "failed": "Error during indexing"
@@ -1900,7 +1911,7 @@
"featurePublishEnhance": "AI Publishing", "featurePublishEnhance": "AI Publishing",
"featureBrainstormExpand": "Brainstorm expansions", "featureBrainstormExpand": "Brainstorm expansions",
"featureBrainstormEnrich": "Brainstorm enrichments", "featureBrainstormEnrich": "Brainstorm enrichments",
"featureFlashcards": "AI flashcards", "featureFlashcards": "Review cards",
"featureVoice": "Voice transcription", "featureVoice": "Voice transcription",
"featureSlides": "Presentations", "featureSlides": "Presentations",
"featureDiagrams": "Diagrams", "featureDiagrams": "Diagrams",
@@ -2094,7 +2105,7 @@
"inboundList": "To this note ({count})", "inboundList": "To this note ({count})",
"outboundList": "From this note ({count})", "outboundList": "From this note ({count})",
"unlinkedList": "Unlinked mentions ({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.", "noOutbound": "This note does not link to other notes yet.",
"refBadge": "In", "refBadge": "In",
"toBadge": "Out" "toBadge": "Out"
@@ -2282,7 +2293,7 @@
"custom": "Custom" "custom": "Custom"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Scrapes multiple sites and creates a summary", "scraper": "Reads several sites and writes a summary",
"researcher": "Searches for information on a topic", "researcher": "Searches for information on a topic",
"monitor": "Watches a notebook and analyzes notes", "monitor": "Watches a notebook and analyzes notes",
"slideGenerator": "Creates a PowerPoint presentation from notes", "slideGenerator": "Creates a PowerPoint presentation from notes",
@@ -2296,7 +2307,7 @@
"namePlaceholder": "e.g. Tuesday AI Watch", "namePlaceholder": "e.g. Tuesday AI Watch",
"description": "Description (optional)", "description": "Description (optional)",
"descriptionPlaceholder": "Weekly AI news summary", "descriptionPlaceholder": "Weekly AI news summary",
"urlsLabel": "URLs to scrape", "urlsLabel": "Pages to read",
"urlsOptional": "(optional)", "urlsOptional": "(optional)",
"sourceNotebook": "Notebook to watch", "sourceNotebook": "Notebook to watch",
"selectNotebook": "Select a notebook...", "selectNotebook": "Select a notebook...",
@@ -2361,7 +2372,7 @@
"notifyEmail": "Email notification", "notifyEmail": "Email notification",
"notifyEmailHint": "Receive an email with the agent's results after each run", "notifyEmailHint": "Receive an email with the agent's results after each run",
"includeImages": "Include images", "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", "back": "Back",
"configuration": "Configuration", "configuration": "Configuration",
"options": "Options" "options": "Options"
@@ -2440,15 +2451,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI Watch", "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": { "veilleTech": {
"name": "Tech Watch", "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": { "veilleDev": {
"name": "Dev Watch", "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": { "surveillant": {
"name": "Note Observer", "name": "Note Observer",
@@ -2495,7 +2506,7 @@
"tools": { "tools": {
"title": "Agent Tools", "title": "Agent Tools",
"webSearch": "Web Search", "webSearch": "Web Search",
"webScrape": "Web Scrape", "webScrape": "Read web pages",
"noteSearch": "Note Search", "noteSearch": "Note Search",
"noteRead": "Read Note", "noteRead": "Read Note",
"noteCreate": "Create Note", "noteCreate": "Create Note",
@@ -2524,15 +2535,15 @@
"btnLabel": "Help", "btnLabel": "Help",
"close": "Close", "close": "Close",
"whatIsAgent": "What is an agent?", "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?", "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", "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", "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)", "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.", "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)", "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", "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.", "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", "targetNotebook": "Target notebook",
@@ -2545,7 +2556,7 @@
"agentType": "Choose the type of task the agent will perform. Each type has different capabilities and fields.", "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.", "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.", "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.", "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.", "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.", "frequency": "How often the agent runs automatically. Start with Manual to test.",
@@ -2629,7 +2640,7 @@
"slashCatText": "Text", "slashCatText": "Text",
"slashCatMedia": "Media", "slashCatMedia": "Media",
"slashCatData": "Data", "slashCatData": "Data",
"slashCatEmbed": "Embed", "slashCatEmbed": "Inserted",
"slashCatFormatting": "Formatting", "slashCatFormatting": "Formatting",
"slashCatAi": "AI Note", "slashCatAi": "AI Note",
"placeholderH1": "Main heading...", "placeholderH1": "Main heading...",
@@ -3190,7 +3201,7 @@
"relationEmpty": "Link a note…", "relationEmpty": "Link a note…",
"relationNoResults": "No note found", "relationNoResults": "No note found",
"relationSearch": "Search a note…", "relationSearch": "Search a note…",
"semanticResonances": "Semantic resonances", "semanticResonances": "Notes that meet",
"insertLink": "Insert link in editor" "insertLink": "Insert link in editor"
}, },
"brainstorm": { "brainstorm": {
@@ -3413,7 +3424,7 @@
"businessFeature3": "Your own keys · {count} providers", "businessFeature3": "Your own keys · {count} providers",
"businessFeature4": "Agents & brainstorm (credits)", "businessFeature4": "Agents & brainstorm (credits)",
"enterpriseTitle": "Enterprise", "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", "contactSales": "Contact us",
"startCheckout": "Get Started", "startCheckout": "Get Started",
"checkoutLoading": "Loading checkout…", "checkoutLoading": "Loading checkout…",
@@ -3468,10 +3479,10 @@
"paidPlanDesc": "Your subscription renews automatically.", "paidPlanDesc": "Your subscription renews automatically.",
"businessDescription": "For teams and product leaders.", "businessDescription": "For teams and product leaders.",
"enterpriseFeature1": "Unlimited AI credits or dedicated pool", "enterpriseFeature1": "Unlimited AI credits or dedicated pool",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Single sign-on for the whole team",
"enterpriseFeature3": "Dedicated support", "enterpriseFeature3": "Dedicated support",
"enterpriseFeature4": "Custom invoicing", "enterpriseFeature4": "Custom invoicing",
"enterpriseFeature5": "Guaranteed SLA", "enterpriseFeature5": "Guaranteed response time",
"subtitle": "Choose the plan that suits you", "subtitle": "Choose the plan that suits you",
"freeDescription": "To discover Memento", "freeDescription": "To discover Memento",
"freeF1": "Up to 100 notes", "freeF1": "Up to 100 notes",
@@ -3508,7 +3519,8 @@
"fetchStatusFailed": "Failed to fetch billing status", "fetchStatusFailed": "Failed to fetch billing status",
"fetchQuotasFailed": "Failed to load credit usage", "fetchQuotasFailed": "Failed to load credit usage",
"fetchInvoicesFailed": "Failed to load billing history.", "fetchInvoicesFailed": "Failed to load billing history.",
"savePercent": "Save ~17%", "savePercent": "Save ~{percent}%",
"billedYearTotal": "thats {price} a year",
"startTrialCta": "Start {days}-day free trial", "startTrialCta": "Start {days}-day free trial",
"trialFeature": "{days}-day free trial (card required)", "trialFeature": "{days}-day free trial (card required)",
"trialEndsOn": "Your free trial ends on {date}. You will then be billed automatically.", "trialEndsOn": "Your free trial ends on {date}. You will then be billed automatically.",
@@ -3663,7 +3675,7 @@
"perMonthAnnual": "/mo, billed yearly", "perMonthAnnual": "/mo, billed yearly",
"perUser": "+ €3.90/user", "perUser": "+ €3.90/user",
"perUserAnnual": "+ €2.90/user, yearly", "perUserAnnual": "+ €2.90/user, yearly",
"savePercent": "Save ~17%", "savePercent": "Save ~{percent}%",
"proMonthly": "€9.90", "proMonthly": "€9.90",
"proAnnualMonthly": "€8.25", "proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90", "businessMonthly": "€29.90",
@@ -3708,10 +3720,10 @@
"cta": "Talk to us", "cta": "Talk to us",
"feature0": "Unlimited AI credits or dedicated pool", "feature0": "Unlimited AI credits or dedicated pool",
"feature1": "Everything in Business", "feature1": "Everything in Business",
"feature2": "SSO / SAML", "feature2": "Single sign-on for the whole team",
"feature3": "Audit logs & SLA", "feature3": "Activity log and guaranteed response time",
"feature4": "Dedicated support", "feature4": "Dedicated support",
"feature5": "Live onboarding" "feature5": "Guided setup"
}, },
"basicPrice": "Free", "basicPrice": "Free",
"trialBadge": "{days}-day free trial", "trialBadge": "{days}-day free trial",
@@ -3799,15 +3811,15 @@
"insightsView": { "insightsView": {
"title": "Connections", "title": "Connections",
"toggleMenu": "Show or hide the menu", "toggleMenu": "Show or hide the menu",
"subtitle": "Discover the hidden architecture of your knowledge", "subtitle": "See how your notes connect",
"resync": "Update", "resync": "Update",
"mapping": "Mapping…", "mapping": "Mapping…",
"loading": "Loading your notes…", "loading": "Loading your notes…",
"mappingTitle": "Mapping your knowledge…", "mappingTitle": "Mapping your knowledge…",
"mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.", "mappingHint": "This can take one to three minutes. You can keep browsing; the page will update when it's done.",
"analyzeNow": "Start semantic analysis", "analyzeNow": "Update themes",
"emptyNeedMoreNotes": "Add {count} more notes to unlock semantic clustering (minimum 10).", "emptyNeedMoreNotes": "Add {count} more notes to group your themes (minimum 10).",
"embeddingsHint": "Only {indexed} of {total} notes are indexed for AI. Analysis will prepare them first (this may take several minutes).", "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.", "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", "openGraphMap": "Open link map",
"analysisFailed": "Analysis failed. Check your AI settings or try again.", "analysisFailed": "Analysis failed. Check your AI settings or try again.",
@@ -3825,8 +3837,8 @@
"graphNotesLabel": "notes", "graphNotesLabel": "notes",
"clusterFallback": "Theme {index}", "clusterFallback": "Theme {index}",
"unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).", "unclusteredNotes": "{count} notes not assigned to a theme (hidden from graph).",
"emptyTitle": "Discover your knowledge clusters", "emptyTitle": "Discover your themes",
"emptyDescription": "Click Update to analyze your notes and find hidden connections", "emptyDescription": "Click Update to group your notes by theme.",
"stats": { "stats": {
"clusters": "Themes", "clusters": "Themes",
"bridgeNotes": "Bridge notes", "bridgeNotes": "Bridge notes",
@@ -3834,16 +3846,16 @@
"bridgesSubtitle": "cross-theme notes" "bridgesSubtitle": "cross-theme notes"
}, },
"clusters": { "clusters": {
"title": "Semantic clusters", "title": "Themes",
"notesCount": "{count} notes", "notesCount": "{count} notes",
"centralNotes": "Central notes", "centralNotes": "Central notes",
"emptyCluster": "No notes in this cluster" "emptyCluster": "No notes in this theme"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Bridge notes", "title": "Bridge notes",
"score": "Score: {score}%", "score": "Score: {score}%",
"affinity": "Affinity {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}", "moreThemes": "+{count}",
"needsResync": "Click Update to refresh theme pairs.", "needsResync": "Click Update to refresh theme pairs.",
"empty": "No significant bridge notes yet. Deepen your research to find new connections." "empty": "No significant bridge notes yet. Deepen your research to find new connections."
@@ -3864,35 +3876,35 @@
"viewGraph": "Graph", "viewGraph": "Graph",
"viewDashboard": "Dashboard", "viewDashboard": "Dashboard",
"isolatedClusters": { "isolatedClusters": {
"title": "Isolated clusters ({count})", "title": "Isolated themes ({count})",
"badge": "Not connected", "badge": "Not connected",
"empty": "All your semantic clusters are interconnected!" "empty": "All your themes are already linked by at least one bridge note."
}, },
"focusCluster": { "focusCluster": {
"title": "Cluster Focus Active", "title": "Theme open",
"description": "This thematic cluster gathers {count} complementary notes. Click on a note to access it directly:", "description": "This theme gathers {count} notes. Click a note to open it.",
"close": "Close" "close": "Close"
}, },
"badgeDominant": "Dominant", "badgeDominant": "Dominant",
"bridgeCount": "bridge(s)", "bridgeCount": "bridge(s)",
"echoTitle": "You keep returning to this idea", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "tipIsolatedAction": "These themes have no note connecting them to the rest of your thinking.",
"recalcSystem": { "recalcSystem": {
"title": "Recalculation system", "title": "Theme updates",
"statusSynced": "Synced", "statusSynced": "Up to date",
"scheduledCron": "Scheduled", "scheduledCron": "Automatic update",
"lastSync": "Last sync" "lastSync": "Last update"
}, },
"resetFocus": "Reset focus", "resetFocus": "Show all",
"listView": "List", "listView": "List",
"listFilterPlaceholder": "Filter themes or notes…", "listFilterPlaceholder": "Filter themes or notes…",
"listFilterEmpty": "No theme or note matches this filter.", "listFilterEmpty": "No theme or note matches this filter.",
@@ -3901,8 +3913,8 @@
"listSortSize": "By size", "listSortSize": "By size",
"listSortBridges": "By bridges", "listSortBridges": "By bridges",
"listSortAlpha": "AZ", "listSortAlpha": "AZ",
"graphAriaLabel": "Semantic network: {clusters} clusters, {notes} notes, {bridges} bridge notes. Switch to List view for accessible navigation.", "graphAriaLabel": "Theme map: {clusters} themes, {notes} notes, {bridges} bridge notes. Switch to List view to navigate more easily.",
"listAriaLabel": "Accessible cluster list with notes and bridge connections" "listAriaLabel": "List of themes, notes, and bridge notes"
}, },
"consent": { "consent": {
"banner": { "banner": {
@@ -3962,7 +3974,7 @@
"sectionDescription": "Permanently and irreversibly delete your account and all associated data.", "sectionDescription": "Permanently and irreversibly delete your account and all associated data.",
"whatWillBeDeleted": "The following will be permanently deleted:", "whatWillBeDeleted": "The following will be permanently deleted:",
"item1": "All notes, notebooks, and attachments", "item1": "All notes, notebooks, and attachments",
"item2": "All pgvector semantic embeddings", "item2": "The index used to connect your notes",
"item3": "All your provider keys", "item3": "All your provider keys",
"item4": "All AI conversations and brainstorm sessions", "item4": "All AI conversations and brainstorm sessions",
"item5": "Quota and usage history", "item5": "Quota and usage history",
@@ -4076,18 +4088,18 @@
"chooseNotebook": "Choose a notebook", "chooseNotebook": "Choose a notebook",
"changeNotebook": "Change notebook", "changeNotebook": "Change notebook",
"change": "Change", "change": "Change",
"localDbTitle": "Standalone Database", "localDbTitle": "Table in this note",
"echoPopoverTitle": "Semantic Resonances 🔮", "echoPopoverTitle": "Nearby notes",
"noEchoFound": "No semantic connections detected.", "noEchoFound": "No nearby notes found.",
"echoUpgradeText": "Convert this table to a notebook to activate Memento's neural analysis.", "echoUpgradeText": "Turn this table into a notebook so Memento can find nearby notes.",
"echoLoading": "Searching for semantic connections...", "echoLoading": "Looking for nearby notes…",
"analyticsTitle": "Analytics & Insights", "analyticsTitle": "Analytics & Insights",
"analyticsNoData": "No analysis data available.", "analyticsNoData": "No analysis data available.",
"analyticsCompletion": "Completion Rate", "analyticsCompletion": "Completion Rate",
"analyticsDistribution": "Distribution", "analyticsDistribution": "Distribution",
"analyticsTotalRows": "Total Rows", "analyticsTotalRows": "Total Rows",
"analyticsShort": "Analytics", "analyticsShort": "Analytics",
"turnIntoLabel": "Inline database", "turnIntoLabel": "Table in the note",
"columnAdded": "Column added!", "columnAdded": "Column added!",
"columnRemoved": "Column removed", "columnRemoved": "Column removed",
"propertyName": "Property {{index}}", "propertyName": "Property {{index}}",
@@ -4098,7 +4110,7 @@
"convertNoteError": "Could not create note.", "convertNoteError": "Could not create note.",
"convertSuccess": "Conversion complete! Linked notebook created.", "convertSuccess": "Conversion complete! Linked notebook created.",
"convertGenericError": "Something went wrong.", "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.", "echoSearchError": "An error occurred while searching.",
"echoNoMatch": "No matching notes containing \"{{query}}\" were found in your workspace.", "echoNoMatch": "No matching notes containing \"{{query}}\" were found in your workspace.",
"convertToNotebook": "Convert to notebook", "convertToNotebook": "Convert to notebook",
@@ -4113,7 +4125,7 @@
"deleteColumn": "Delete column", "deleteColumn": "Delete column",
"addColumn": "Add column", "addColumn": "Add column",
"deleteRow": "Delete row", "deleteRow": "Delete row",
"semanticEcho": "Semantic resonances", "semanticEcho": "Notes that meet",
"close": "Close", "close": "Close",
"insertCitation": "Insert link in editor", "insertCitation": "Insert link in editor",
"keywordMatch": "Keyword", "keywordMatch": "Keyword",
@@ -4125,8 +4137,8 @@
"selectOptionsPlaceholder": "Options separated by commas", "selectOptionsPlaceholder": "Options separated by commas",
"namePlaceholder": "Enter a name…", "namePlaceholder": "Enter a name…",
"or": "or", "or": "or",
"createLocalDb": "Create a standalone local database", "createLocalDb": "Create a table in this note",
"switchToLocalDb": "Switch to local database", "switchToLocalDb": "Back to this notes table",
"untitled": "Untitled", "untitled": "Untitled",
"citationInserted": "Link inserted in the editor!", "citationInserted": "Link inserted in the editor!",
"notesLoadError": "Error loading notes", "notesLoadError": "Error loading notes",
@@ -4162,7 +4174,7 @@
"step_features_title": "Your AI superpowers", "step_features_title": "Your AI superpowers",
"step_features_subtitle": "Choose where to start.", "step_features_subtitle": "Choose where to start.",
"step_features_cta": "Let's go!", "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_search_desc": "Find any note by meaning, not just keywords.",
"feature_flashcards_title": "Review cards", "feature_flashcards_title": "Review cards",
"feature_flashcards_desc": "Create review cards from your notes, in one click.", "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_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_title": "Export your session",
"hint_brainstorm_export_desc": "When done, export the entire brainstorm session as a structured note saved to your notebook.", "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_title": "Note themes",
"hint_insights_clusters_desc": "Your notes are automatically grouped into thematic clusters. Click a cluster to explore the notes it contains.", "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_title": "Bridge notes",
"hint_insights_bridge_desc": "Bridge notes connect multiple clusters. They are highlighted because they hold your knowledge graph together.", "hint_insights_bridge_desc": "Bridge notes link several themes. They show where your ideas cross.",
"hint_insights_refresh_title": "Refresh clusters", "hint_insights_refresh_title": "Update themes",
"hint_insights_refresh_desc": "If you've added new notes, click the refresh button to recalculate the clusters with the latest content." "hint_insights_refresh_desc": "If you added notes, click Update to recalculate the themes."
}, },
"integrations": { "integrations": {
"title": "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.", "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.", "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\".", "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": { "homeDashboard": {
"title": "Dashboard", "title": "Dashboard",
@@ -4295,7 +4307,7 @@
"captureError": "Failed", "captureError": "Failed",
"mindMap": "Mind map", "mindMap": "Mind map",
"fullMap": "Full 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 →", "mindMapOpen": "Open insights map →",
"mindMapUnavailable": "Mind map unavailable.", "mindMapUnavailable": "Mind map unavailable.",
"themes": "Themes", "themes": "Themes",
@@ -4338,7 +4350,7 @@
"new": "new", "new": "new",
"noConnections": "No connections yet. AI analyzes your notes.", "noConnections": "No connections yet. AI analyzes your notes.",
"match": "Match", "match": "Match",
"semanticConnection": "Semantic affinity", "semanticConnection": "Closeness",
"suggestedBridge": "Link {clusterA} & {clusterB}", "suggestedBridge": "Link {clusterA} & {clusterB}",
"createBridgeNote": "Create bridge note", "createBridgeNote": "Create bridge note",
"bridgeNoteCreated": "Bridge note created", "bridgeNoteCreated": "Bridge note created",
@@ -4411,7 +4423,7 @@
"sentiment": "Sentiment", "sentiment": "Sentiment",
"inbox": "Inbox", "inbox": "Inbox",
"revision": "Review cards", "revision": "Review cards",
"stats": "Semantic stats", "stats": "Themes and notes",
"agent-activity": "Agent activity", "agent-activity": "Agent activity",
"gmail": "Gmail captures", "gmail": "Gmail captures",
"activity": "Writing activity", "activity": "Writing activity",
@@ -4428,14 +4440,14 @@
"widgetDescriptions": { "widgetDescriptions": {
"capture": "Capture a thought instantly into your inbox.", "capture": "Capture a thought instantly into your inbox.",
"resume": "Pick up your most recent notes where you left off.", "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.", "reminders": "Upcoming note reminders at a glance.",
"mind-map": "Theme clusters sized by note volume.", "mind-map": "Theme clusters sized by note volume.",
"agents": "AI-suggested research agents for your topics.", "agents": "AI-suggested research agents for your topics.",
"sentiment": "Emotional tone of your notes this week.", "sentiment": "Emotional tone of your notes this week.",
"inbox": "Notes waiting to be filed into notebooks.", "inbox": "Notes waiting to be filed into notebooks.",
"revision": "Cards due today. They come back at the right time.", "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.", "agent-activity": "Latest completed agent runs.",
"gmail": "Email captures synced from Gmail.", "gmail": "Email captures synced from Gmail.",
"activity": "GitHub-style heatmap of your writing rhythm.", "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.", "activityEmptyHint": "Edit notes to see your writing rhythm over the last 90 days.",
"pathTypes": { "pathTypes": {
"continue": "Continue", "continue": "Continue",
"connect": "Semantic link", "connect": "Link a note",
"add-link": "Add to note", "add-link": "Add to note",
"bridge": "Bridge idea", "bridge": "Bridge idea",
"research": "Research agent", "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.", "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.", "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.", "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.", "reminders": "Upcoming note reminders. Empty when everything is on schedule.",
"mind-map": "Theme clusters sized by note volume. Click to explore in Connections.", "mind-map": "Theme clusters sized by note volume. Click to explore in Connections.",
"agents": "AI-suggested research agents for topics you write about often.", "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.", "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.", "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.", "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.", "agent-activity": "Agents that completed a run in the last 48 hours.",
"gmail": "Email captures synced from Gmail integration.", "gmail": "Email captures synced from Gmail integration.",
"activity": "Heatmap of notes you edited over the last 90 days.", "activity": "Heatmap of notes you edited over the last 90 days.",

View File

@@ -407,7 +407,7 @@
"placeholder": "Buscar", "placeholder": "Buscar",
"searchPlaceholder": "Busca en tus notas...", "searchPlaceholder": "Busca en tus notas...",
"semanticInProgress": "Búsqueda semántica en curso...", "semanticInProgress": "Búsqueda semántica en curso...",
"semanticTooltip": "Búsqueda semántica con IA", "semanticTooltip": "Búsqueda por el sentido",
"searching": "Buscando...", "searching": "Buscando...",
"noResults": "No se encontraron resultados", "noResults": "No se encontraron resultados",
"resultsFound": "{count} notas encontradas", "resultsFound": "{count} notas encontradas",
@@ -861,7 +861,7 @@
"compareAll": "Comparar todas", "compareAll": "Comparar todas",
"mergeAll": "Fusionar todas", "mergeAll": "Fusionar todas",
"close": "Cerrar", "close": "Cerrar",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % de cercanía",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo", "badgeLabel": "Memory Echo",
"bottomCueConsent": "Conexiones IA disponibles abajo", "bottomCueConsent": "Conexiones IA disponibles abajo",
@@ -918,7 +918,7 @@
"noContentReturned": "No se devolvió contenido de fusión de la API", "noContentReturned": "No se devolvió contenido de fusión de la API",
"unknownDate": "Fecha desconocida" "unknownDate": "Fecha desconocida"
}, },
"defaultInsight": "Estas notas parecen estar relacionadas semánticamente.", "defaultInsight": "Estas notas van juntas.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "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", "cleanupError": "No se pudieron limpiar las etiquetas",
"indexingComplete": "Indexación completa: {count} nota(s) procesada(s)", "indexingComplete": "Indexación completa: {count} nota(s) procesada(s)",
"indexingError": "Error durante la indexación", "indexingError": "Error durante la indexación",
"semanticIndexing": "Indexación semántica", "semanticIndexing": "Índice para la búsqueda por el sentido",
"semanticIndexingDescription": "Generar vectores para todas las notas para habilitar la búsqueda basada en intenciones", "semanticIndexingDescription": "Preparar todas las notas para la búsqueda por el sentido",
"profile": "Perfil", "profile": "Perfil",
"searchNoResults": "Sin resultados de búsqueda", "searchNoResults": "Sin resultados de búsqueda",
"languageAuto": "Idioma establecido en Automático", "languageAuto": "Idioma establecido en Automático",
@@ -1664,7 +1664,7 @@
"title": "Funciones", "title": "Funciones",
"description": "Capacidades impulsadas por IA", "description": "Capacidades impulsadas por IA",
"titleSuggestions": "Sugerencias de título con 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", "paragraphReformulation": "Reformulación de párrafos",
"memoryEcho": "Insights diarios de Memory Echo", "memoryEcho": "Insights diarios de Memory Echo",
"notebookOrganization": "Organización por cuadernos", "notebookOrganization": "Organización por cuadernos",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "Reconstruir índice de búsqueda", "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", "button": "Reconstruir índice",
"success": "Indexación completada: {count} notas procesadas", "success": "Indexación completada: {count} notas procesadas",
"failed": "Error durante la indexación" "failed": "Error durante la indexación"
@@ -1984,7 +1984,7 @@
"legendWiki": "Enlazar una nota", "legendWiki": "Enlazar una nota",
"mentionShort": "Mención", "mentionShort": "Mención",
"moreNodes": "+{count} en el mapa", "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.", "noOutbound": "Esta nota no enlaza con otras notas todavía.",
"noWikiYet": "Aún sin enlaces a otras notas.", "noWikiYet": "Aún sin enlaces a otras notas.",
"outboundHelp": "Notas a las que esta enlaza usando [[…]] en su texto.", "outboundHelp": "Notas a las que esta enlaza usando [[…]] en su texto.",
@@ -2190,7 +2190,7 @@
"custom": "Personalizado" "custom": "Personalizado"
}, },
"typeDescriptions": { "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", "researcher": "Busca información sobre un tema",
"monitor": "Observa un cuaderno y analiza notas", "monitor": "Observa un cuaderno y analiza notas",
"slideGenerator": "Crea una presentación de PowerPoint a partir de notas.", "slideGenerator": "Crea una presentación de PowerPoint a partir de notas.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "ej. Vigilancia IA del martes", "namePlaceholder": "ej. Vigilancia IA del martes",
"description": "Descripción (opcional)", "description": "Descripción (opcional)",
"descriptionPlaceholder": "Resumen semanal de noticias de IA", "descriptionPlaceholder": "Resumen semanal de noticias de IA",
"urlsLabel": "URLs a extraer", "urlsLabel": "Direcciones de las páginas a leer",
"urlsOptional": "(opcional)", "urlsOptional": "(opcional)",
"sourceNotebook": "Cuaderno a observar", "sourceNotebook": "Cuaderno a observar",
"selectNotebook": "Seleccionar un cuaderno...", "selectNotebook": "Seleccionar un cuaderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notificación por correo", "notifyEmail": "Notificación por correo",
"notifyEmailHint": "Recibe un correo con los resultados del agente después de cada ejecución", "notifyEmailHint": "Recibe un correo con los resultados del agente después de cada ejecución",
"includeImages": "Incluir imágenes", "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", "back": "Atrás",
"configuration": "Configuración", "configuration": "Configuración",
"options": "Opciones", "options": "Opciones",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Vigilancia IA", "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": { "veilleTech": {
"name": "Vigilancia Tech", "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": { "veilleDev": {
"name": "Vigilancia Dev", "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": { "surveillant": {
"name": "Observador de notas", "name": "Observador de notas",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Herramientas del Agente", "title": "Herramientas del Agente",
"webSearch": "Búsqueda Web", "webSearch": "Búsqueda Web",
"webScrape": "Scraping Web", "webScrape": "Lectura de páginas",
"noteSearch": "Búsqueda de Notas", "noteSearch": "Búsqueda de Notas",
"noteRead": "Leer Nota", "noteRead": "Leer Nota",
"noteCreate": "Crear Nota", "noteCreate": "Crear Nota",
@@ -2431,15 +2431,15 @@
"btnLabel": "Ayuda", "btnLabel": "Ayuda",
"close": "Cerrar", "close": "Cerrar",
"whatIsAgent": "¿Qué es un agente?", "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?", "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", "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", "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.)", "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.", "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)", "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", "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.", "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", "targetNotebook": "Libreta destino",
@@ -2447,7 +2447,7 @@
"templates": "Plantillas", "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.", "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", "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": { "tooltips": {
"agentType": "Elija el tipo de tarea que realizará el agente. Cada tipo tiene diferentes capacidades y campos.", "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.", "researchTopic": "El tema que el agente investigará en la web. Sea específico para mejores resultados.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Actualizar a Pro", "upgradeTitle": "Actualizar a Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro incluye:", "proIncludes": "Pro incluye:",
"proSearch": "100 semantic searches / month", "proSearch": "1.000 créditos IA / mes",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Generación de diagrama", "featureDiagrams": "Generación de diagrama",
"featureFlashcards": "Tarjetas IA", "featureFlashcards": "Tarjetas de repaso",
"featurePublishEnhance": "Publicación con IA", "featurePublishEnhance": "Publicación con IA",
"featureSlides": "Generación de diapositivas", "featureSlides": "Generación de diapositivas",
"featureVoice": "Transcripción de voz", "featureVoice": "Transcripción de voz",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 reformulaciones / mes", "businessFeature3": "500 reformulaciones / mes",
"businessFeature4": "1.000 mensajes de chat / mes", "businessFeature4": "1.000 mensajes de chat / mes",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "Cuotas personalizadas, SSO, soporte prioritario.", "enterpriseDescription": "Cuotas personalizadas, inicio de sesión único para el equipo, soporte prioritario.",
"contactSales": "Contactar ventas", "contactSales": "Contactar ventas",
"startCheckout": "Comenzar", "startCheckout": "Comenzar",
"checkoutLoading": "Cargando pago…", "checkoutLoading": "Cargando pago…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Su suscripción se renueva automáticamente.", "paidPlanDesc": "Su suscripción se renueva automáticamente.",
"businessDescription": "Para equipos y líderes de producto.", "businessDescription": "Para equipos y líderes de producto.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Inicio de sesión único para todo el equipo",
"enterpriseFeature3": "Soporte dedicado", "enterpriseFeature3": "Soporte dedicado",
"enterpriseFeature4": "Facturación personalizada", "enterpriseFeature4": "Facturación personalizada",
"enterpriseFeature5": "SLA garantizado", "enterpriseFeature5": "Plazo de respuesta garantizado",
"subtitle": "Elige el plan que mejor se adapte a ti", "subtitle": "Elige el plan que mejor se adapte a ti",
"freeDescription": "Para descubrir Memento", "freeDescription": "Para descubrir Memento",
"freeF1": "30 búsquedas semánticas", "freeF1": "30 búsquedas semánticas",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "No se pudo obtener el estado de facturación", "fetchStatusFailed": "No se pudo obtener el estado de facturación",
"fetchQuotasFailed": "No se pudieron obtener las cuotas", "fetchQuotasFailed": "No se pudieron obtener las cuotas",
"fetchInvoicesFailed": "No se pudo cargar el historial de facturación.", "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", "cancelSubscription": "Cancelar suscripción",
"changeOffer": "Cambiar de oferta", "changeOffer": "Cambiar de oferta",
"downgradeToFree": "Volver a la oferta gratuita", "downgradeToFree": "Volver a la oferta gratuita",
@@ -3379,13 +3380,13 @@
"cta": "Hablar con nosotros", "cta": "Hablar con nosotros",
"feature0": "Todo Business", "feature0": "Todo Business",
"feature1": "Agentes ilimitados", "feature1": "Agentes ilimitados",
"feature2": "SSO / SAML", "feature2": "Inicio de sesión único para todo el equipo",
"feature3": "Audit logs y SLA", "feature3": "Registro de actividad y plazo de respuesta garantizado",
"feature4": "Soporte dedicado", "feature4": "Soporte dedicado",
"feature5": "Onboarding en vivo" "feature5": "Acompañamiento en la instalación"
}, },
"basicPrice": "Gratis", "basicPrice": "Gratis",
"savePercent": "Ahorra ~17%", "savePercent": "Ahorra ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Elimina permanente e irreversiblemente tu cuenta y todos los datos asociados.", "sectionDescription": "Elimina permanente e irreversiblemente tu cuenta y todos los datos asociados.",
"whatWillBeDeleted": "Lo siguiente se eliminará permanentemente:", "whatWillBeDeleted": "Lo siguiente se eliminará permanentemente:",
"item1": "Todas las notas, cuadernos y adjuntos", "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", "item3": "Todas las claves API BYOK",
"item4": "Todas las conversaciones de IA y sesiones de brainstorming", "item4": "Todas las conversaciones de IA y sesiones de brainstorming",
"item5": "Historial de cuotas y uso", "item5": "Historial de cuotas y uso",
@@ -3559,7 +3560,7 @@
"step_features_title": "Tus superpoderes de IA", "step_features_title": "Tus superpoderes de IA",
"step_features_subtitle": "Elige por dónde empezar.", "step_features_subtitle": "Elige por dónde empezar.",
"step_features_cta": "¡Vamos!", "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_search_desc": "Encuentra cualquier nota por significado, no solo por palabras clave.",
"feature_flashcards_title": "Tarjetas IA", "feature_flashcards_title": "Tarjetas IA",
"feature_flashcards_desc": "Genera tarjetas de repaso desde tus notas con un clic.", "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_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_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_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_title": "Temas 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_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_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_bridge_desc": "Las notas puente unen varios temas. Muestran dónde se cruzan tus ideas.",
"hint_insights_refresh_title": "Actualizar clusters", "hint_insights_refresh_title": "Actualizar temas",
"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_refresh_desc": "Si has añadido notas, haz clic en «Actualizar» para recalcular los temas."
}, },
"blockAction": { "blockAction": {
"moveUp": "Mover bloque hacia arriba", "moveUp": "Mover bloque hacia arriba",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "Conexiones", "title": "Conexiones",
"toggleMenu": "Mostrar u ocultar el menú", "toggleMenu": "Mostrar u ocultar el menú",
"subtitle": "Descubre la arquitectura oculta de tu conocimiento", "subtitle": "Vea cómo se relacionan sus notas",
"resync": "Actualizar", "resync": "Actualizar",
"mapping": "Mapeando…", "mapping": "Mapeando…",
"loading": "Cargando tus notas…", "loading": "Cargando tus notas…",
"mappingTitle": "Mapeando tu conocimiento…", "mappingTitle": "Mapeando tu conocimiento…",
"mappingHint": "Esto puede tardar de uno a tres minutos. Puedes seguir navegando; la página se actualizará cuando termine.", "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", "analyzeNow": "Actualizar los temas",
"emptyNeedMoreNotes": "Añade {count} notas más para desbloquear el clustering semántico (mínimo 10).", "emptyNeedMoreNotes": "Añade {count} notas más para agrupar tus temas (mínimo 10).",
"embeddingsHint": "Solo {indexed} de {total} notas están indexadas para IA.", "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.", "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", "openGraphMap": "Abrir mapa de enlaces",
"analysisFailed": "Análisis fallido. Revisa tu configuración de IA.", "analysisFailed": "Análisis fallido. Revisa tu configuración de IA.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notas", "graphNotesLabel": "notas",
"clusterFallback": "Tema {index}", "clusterFallback": "Tema {index}",
"unclusteredNotes": "{count} notas sin asignar a un tema (ocultas del grafo).", "unclusteredNotes": "{count} notas sin asignar a un tema (ocultas del grafo).",
"emptyTitle": "Descubre tus clústeres de conocimiento", "emptyTitle": "Descubre tus temas",
"emptyDescription": "Haz clic en \"Resincronizar red\" para analizar tus notas y encontrar conexiones ocultas", "emptyDescription": "Haz clic en «Actualizar» para agrupar tus notas por temas.",
"stats": { "stats": {
"clusters": "Clústeres", "clusters": "Clústeres",
"bridgeNotes": "Notas puente", "bridgeNotes": "Notas puente",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "Clusters semánticos", "title": "Temas",
"notesCount": "{count} notas", "notesCount": "{count} notas",
"centralNotes": "Notas centrales", "centralNotes": "Notas centrales",
"emptyCluster": "No hay notas en este cluster" "emptyCluster": "No hay notas en este tema"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Afinidad {score}%", "affinity": "Afinidad {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "Vuelve a sincronizar la red para actualizar los puentes.", "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": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Grafo", "viewGraph": "Grafo",
"viewDashboard": "Panel", "viewDashboard": "Panel",
"isolatedClusters": { "isolatedClusters": {
"title": "Clusters aislados ({count})", "title": "Temas aislados ({count})",
"badge": "No conectado", "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": { "focusCluster": {
"title": "Foco de clúster activo", "title": "Tema abierto",
"description": "Este cluster temático agrupa {count} notas complementarias. Haz clic en una nota para acceder a ella directamente:", "description": "Este tema reúne {count} notas. Haz clic en una nota para abrirla.",
"close": "Cerrar" "close": "Cerrar"
}, },
"badgeDominant": "Dominante", "badgeDominant": "Dominante",
"bridgeCount": "puente(s)", "bridgeCount": "puente(s)",
"echoTitle": "Vuelves constantemente a esta idea", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "tipIsolatedAction": "Estos temas no tienen ninguna nota que los conecte con el resto de tu pensamiento.",
"recalcSystem": { "recalcSystem": {
"title": "Sistema de recálculo", "title": "Actualización de temas",
"statusSynced": "Sincronizado", "statusSynced": "Al día",
"scheduledCron": "Programado", "scheduledCron": "Actualización automática",
"lastSync": "Última sync" "lastSync": "Última actualización"
}, },
"resetFocus": "Restablecer enfoque", "resetFocus": "Mostrar todo",
"listView": "Lista", "listView": "Lista",
"graphAriaLabel": "Red semántica: {clusters} clusters, {notes} notas, {bridges} notas puente. Cambia a la vista de lista para una navegación accesible.", "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 clusters accesible con notas y conexiones puente", "listAriaLabel": "Lista de temas, notas y notas puente",
"dashboardFilterPlaceholder": "Filtrar notas puente, temas…", "dashboardFilterPlaceholder": "Filtrar notas puente, temas…",
"legendFilterPlaceholder": "Filtrar temas…", "legendFilterPlaceholder": "Filtrar temas…",
"legendShowLess": "Mostrar menos", "legendShowLess": "Mostrar menos",
@@ -3896,7 +3897,7 @@
"genericError": "Algo salió mal al enviar a tu instancia.", "genericError": "Algo salió mal al enviar a tu instancia.",
"ignore": "dominado", "ignore": "dominado",
"processing": "Procesando…", "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}", "publishedOn": "Publicado en {domain}",
"quitSimulator": "Cerrar simulador", "quitSimulator": "Cerrar simulador",
"realtimeCapture": "Fecha: captura en vivo", "realtimeCapture": "Fecha: captura en vivo",
@@ -4156,7 +4157,7 @@
"match": "Iniciar sesión", "match": "Iniciar sesión",
"memoryEchoDisabled": "Memory Echo está desactivado en tu configuración de IA.", "memoryEchoDisabled": "Memory Echo está desactivado en tu configuración de IA.",
"mindMap": "Mapa mental", "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 →", "mindMapOpen": "Abrir mapa de insights →",
"mindMapUnavailable": "Mapa mental no disponible.", "mindMapUnavailable": "Mapa mental no disponible.",
"new": "notas creadas", "new": "notas creadas",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "Añadir a la nota", "add-link": "Añadir a la nota",
"bridge": "Idea puente", "bridge": "Idea puente",
"connect": "Enlace semántico", "connect": "Enlazar una nota",
"continue": "Continuar", "continue": "Continuar",
"daily": "Diario", "daily": "Diario",
"explore": "Explorar tema", "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.", "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", "resumeOpen": "Reanudar",
"review": "Revisar", "review": "Revisar",
"semanticConnection": "Afinidad semántica", "semanticConnection": "Cercanía",
"sentiment": "Sentimiento", "sentiment": "Sentimiento",
"sentimentDominant": "Tono dominante esta semana", "sentimentDominant": "Tono dominante esta semana",
"suggestedBridge": "Conectando {clusterA} & {clusterB}", "suggestedBridge": "Conectando {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retención, racha y total de tarjetas.", "flashcards-progress": "Retención, racha y total de tarjetas.",
"gmail": "Capturas de correo sincronizadas desde Gmail.", "gmail": "Capturas de correo sincronizadas desde Gmail.",
"inbox": "Notas esperando ser archivadas en cuadernos.", "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.", "link-suggestions": "Pasajes para enlazar en tu nota actual.",
"mind-map": "Clústeres de temas dimensionados por volumen de notas.", "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.", "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.", "resume": "Continúa tus notas más recientes donde lo dejaste.",
"revision": "Flashcards pendientes de repaso con repetición espaciada.", "revision": "Flashcards pendientes de repaso con repetición espaciada.",
"sentiment": "Tono emocional de tus notas esta semana.", "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." "usage": "Créditos de IA restantes y límites mensuales."
}, },
"widgetDone": "Hecho", "widgetDone": "Hecho",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Tasa de retención de aprendizaje, racha de revisión y total de tarjetas.", "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.", "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.", "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.", "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.", "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.", "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.", "resume": "Tus notas actualizadas más recientemente. Continúa donde lo dejaste.",
"revision": "Flashcards pendientes de repaso con repetición espaciada hoy.", "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.", "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." "usage": "Uso mensual de créditos de IA por función."
}, },
"widgetHelpClose": "Cerrar", "widgetHelpClose": "Cerrar",
@@ -4319,7 +4320,7 @@
"resume": "Reanudar aquí", "resume": "Reanudar aquí",
"revision": "Flashcards", "revision": "Flashcards",
"sentiment": "Sentimiento", "sentiment": "Sentimiento",
"stats": "Estadísticas semánticas", "stats": "Temas y notas",
"usage": "Cuota IA" "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.", "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.", "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\".", "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?", "readwiseInfo": "¿Cómo funciona Readwise?",
"readwiseSynced": "Sincronización de Readwise — {{created}} creadas, {{updated}} actualizadas", "readwiseSynced": "Sincronización de Readwise — {{created}} creadas, {{updated}} actualizadas",
"readwiseTokenPlaceholder": "Token de Readwise…", "readwiseTokenPlaceholder": "Token de Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "¡Conversión completa! Cuaderno vinculado creado.", "convertSuccess": "¡Conversión completa! Cuaderno vinculado creado.",
"convertToNotebook": "Convertir a cuaderno", "convertToNotebook": "Convertir a cuaderno",
"converting": "Convirtiendo…", "converting": "Convirtiendo…",
"createLocalDb": "Crear una base de datos local independiente", "createLocalDb": "Crear una tabla en esta nota",
"createNotebook": "Crear", "createNotebook": "Crear",
"defaultOption1": "Opción 1", "defaultOption1": "Opción 1",
"defaultOption2": "Opción 2", "defaultOption2": "Opción 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Bloque obsoleto eliminado.", "deprecatedBlock": "Bloque obsoleto eliminado.",
"displayModeGallery": "Galería", "displayModeGallery": "Galería",
"displayModeTable": "Mesa", "displayModeTable": "Mesa",
"echoLoading": "Buscando conexiones semánticas...", "echoLoading": "Buscando notas cercanas…",
"echoNameRequired": "Primero introduce un nombre para esta fila para buscar conexiones semánticas.", "echoNameRequired": "Introduce primero un nombre para esta fila, para buscar notas cercanas.",
"echoNoMatch": "No se encontraron notas que coincidan con «{{query}}» en tu espacio.", "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.", "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.", "emptyTable": "Sin filas en la tabla.",
"insertCitation": "Insertar enlace en el editor", "insertCitation": "Insertar enlace en el editor",
"insertDesc": "Incrusta los datos estructurados de tu cuaderno", "insertDesc": "Incrusta los datos estructurados de tu cuaderno",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Palabra clave", "keywordMatch": "Palabra clave",
"linkToNotebook": "Enlazar un cuaderno", "linkToNotebook": "Enlazar un cuaderno",
"loadError": "Error al cargar datos estructurados.", "loadError": "Error al cargar datos estructurados.",
"localDbTitle": "Base de datos independiente", "localDbTitle": "Tabla en esta nota",
"namePlaceholder": "Introduce un nombre…", "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.", "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:", "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.", "noSchema": "Este cuaderno no tiene vista estructurada todavía. Configúrala desde el encabezado del cuaderno.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Enlazar un cuaderno", "selectNotebook": "Enlazar un cuaderno",
"selectOptionsPlaceholder": "Opciones separadas por comas", "selectOptionsPlaceholder": "Opciones separadas por comas",
"semanticEcho": "Resonancias semánticas", "semanticEcho": "Resonancias semánticas",
"switchToLocalDb": "Cambiar a base de datos local", "switchToLocalDb": "Volver a la tabla de esta nota",
"turnIntoLabel": "Base de datos en línea", "turnIntoLabel": "Tabla en la nota",
"untitled": "Sin título" "untitled": "Sin título"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Buscar una nota…", "relationSearch": "Buscar una nota…",
"selectOptions": "Opciones (una por línea)", "selectOptions": "Opciones (una por línea)",
"selectOptionsPlaceholder": "Por hacer\\\nEn progreso\\\nHecho", "selectOptionsPlaceholder": "Por hacer\\\nEn progreso\\\nHecho",
"semanticResonances": "Resonancias semánticas", "semanticResonances": "Notas que se encuentran",
"tagApplied": "puentes", "tagApplied": "puentes",
"viewCalendarHint": "Calendario — tus notas organizadas por fecha", "viewCalendarHint": "Calendario — tus notas organizadas por fecha",
"viewGallery": "Galería", "viewGallery": "Galería",

View File

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

View File

@@ -114,6 +114,17 @@
"title": "Notes", "title": "Notes",
"newNote": "Nouvelle note", "newNote": "Nouvelle note",
"reorganize": "Réorganiser les notes", "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", "untitled": "Sans titre",
"placeholder": "Prenez une note...", "placeholder": "Prenez une note...",
"markdownPlaceholder": "Prenez une note... (Markdown supporté)", "markdownPlaceholder": "Prenez une note... (Markdown supporté)",
@@ -414,7 +425,7 @@
"placeholder": "Rechercher", "placeholder": "Rechercher",
"searchPlaceholder": "Rechercher dans vos notes...", "searchPlaceholder": "Rechercher dans vos notes...",
"semanticInProgress": "Recherche IA en cours...", "semanticInProgress": "Recherche IA en cours...",
"semanticTooltip": "Recherche sémantique IA", "semanticTooltip": "Recherche par le sens",
"searching": "Recherche en cours...", "searching": "Recherche en cours...",
"noResults": "Aucun résultat trouvé", "noResults": "Aucun résultat trouvé",
"resultsFound": "{count} notes trouvées", "resultsFound": "{count} notes trouvées",
@@ -847,7 +858,7 @@
"match": "{percentage}% correspondance", "match": "{percentage}% correspondance",
"fused": "Fusionné", "fused": "Fusionné",
"clickToView": "Cliquer pour voir la note →", "clickToView": "Cliquer pour voir la note →",
"defaultInsight": "Ces notes semblent sémantiquement liées.", "defaultInsight": "Ces notes se rejoignent.",
"overlay": { "overlay": {
"title": "Notes connectées", "title": "Notes connectées",
"searchPlaceholder": "Rechercher des connexions...", "searchPlaceholder": "Rechercher des connexions...",
@@ -889,7 +900,7 @@
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"openInEditor": "Ouvrir dans l'éditeur", "openInEditor": "Ouvrir dans l'éditeur",
"badgeLabel": "Memory Echo", "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.", "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}", "detectedIn": "Passage repéré dans : {title}",
"helpToggle": "Comment ça marche ?", "helpToggle": "Comment ça marche ?",
@@ -908,7 +919,7 @@
"hideAll": "Masquer les connexions ({count})", "hideAll": "Masquer les connexions ({count})",
"retroTitle": "Notes qui citent ce contenu", "retroTitle": "Notes qui citent ce contenu",
"retroDescription": "Ce passage est repris dans {count} autre(s) note(s) :", "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…", "bottomCueLoading": "Memory Echo analyse en bas…",
"bottomCueFound": "{count} notes liées plus bas", "bottomCueFound": "{count} notes liées plus bas",
"bottomCueFoundOne": "1 note liée plus bas", "bottomCueFoundOne": "1 note liée plus bas",
@@ -982,7 +993,7 @@
"clipPage": "Clipper cette page", "clipPage": "Clipper cette page",
"analyzingSource": "Analyse de la source", "analyzingSource": "Analyse de la source",
"processing": "Traitement en cours…", "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", "successBadge": "Traitement réussi",
"sentToNotebook": "Note envoyée dans le carnet", "sentToNotebook": "Note envoyée dans le carnet",
"viewInMomento": "Voir dans Memento", "viewInMomento": "Voir dans Memento",
@@ -1093,8 +1104,8 @@
"cleanupError": "Impossible de nettoyer les étiquettes", "cleanupError": "Impossible de nettoyer les étiquettes",
"indexingComplete": "Indexation terminée : {count} note(s) traitée(s)", "indexingComplete": "Indexation terminée : {count} note(s) traitée(s)",
"indexingError": "Erreur pendant lindexation", "indexingError": "Erreur pendant lindexation",
"semanticIndexing": "Indexation sémantique", "semanticIndexing": "Index pour la recherche par le sens",
"semanticIndexingDescription": "Générer des vecteurs pour toutes les notes afin de permettre la recherche par intention", "semanticIndexingDescription": "Préparer toutes les notes pour la recherche par le sens",
"profile": "Profil", "profile": "Profil",
"searchNoResults": "Aucun paramètre trouvé", "searchNoResults": "Aucun paramètre trouvé",
"languageAuto": "Langue définie sur Auto", "languageAuto": "Langue définie sur Auto",
@@ -1718,7 +1729,7 @@
"title": "Fonctionnalités", "title": "Fonctionnalités",
"description": "Capacités alimentées par l'IA", "description": "Capacités alimentées par l'IA",
"titleSuggestions": "Suggestions de titre 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", "paragraphReformulation": "Reformulation de paragraphes",
"memoryEcho": "Perspectives quotidiennes Memory Echo", "memoryEcho": "Perspectives quotidiennes Memory Echo",
"notebookOrganization": "Organisation en carnets", "notebookOrganization": "Organisation en carnets",
@@ -1833,7 +1844,7 @@
}, },
"indexing": { "indexing": {
"title": "Reconstruire l'index de recherche", "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", "button": "Reconstruire l'index",
"success": "Indexation terminée : {count} notes traitées", "success": "Indexation terminée : {count} notes traitées",
"failed": "Erreur lors de l'indexation" "failed": "Erreur lors de l'indexation"
@@ -1906,7 +1917,7 @@
"featurePublishEnhance": "Publication IA", "featurePublishEnhance": "Publication IA",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureFlashcards": "Flashcards IA", "featureFlashcards": "Cartes de révision",
"featureVoice": "Transcription vocale", "featureVoice": "Transcription vocale",
"featureSlides": "Présentations", "featureSlides": "Présentations",
"featureDiagrams": "Diagrammes", "featureDiagrams": "Diagrammes",
@@ -2102,7 +2113,7 @@
"unlinkedList": "Mentions non reliées ({count})", "unlinkedList": "Mentions non reliées ({count})",
"refBadge": "Entrant", "refBadge": "Entrant",
"toBadge": "Sortant", "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." "noOutbound": "Cette note ne contient pas encore de liens vers d'autres notes."
} }
}, },
@@ -2288,7 +2299,7 @@
"custom": "Personnalisé" "custom": "Personnalisé"
}, },
"typeDescriptions": { "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", "researcher": "Recherche des informations sur un sujet",
"monitor": "Surveille un carnet et analyse les notes", "monitor": "Surveille un carnet et analyse les notes",
"slideGenerator": "Crée une présentation PowerPoint à partir de notes", "slideGenerator": "Crée une présentation PowerPoint à partir de notes",
@@ -2302,7 +2313,7 @@
"namePlaceholder": "Ex : Veille IA du mardi", "namePlaceholder": "Ex : Veille IA du mardi",
"description": "Description (optionnel)", "description": "Description (optionnel)",
"descriptionPlaceholder": "Résumé hebdo des actus IA", "descriptionPlaceholder": "Résumé hebdo des actus IA",
"urlsLabel": "URLs à scraper", "urlsLabel": "Adresses des pages à lire",
"urlsOptional": "(optionnel)", "urlsOptional": "(optionnel)",
"sourceNotebook": "Carnet à surveiller", "sourceNotebook": "Carnet à surveiller",
"selectNotebook": "Sélectionner un carnet...", "selectNotebook": "Sélectionner un carnet...",
@@ -2367,7 +2378,7 @@
"notifyEmail": "Notification par email", "notifyEmail": "Notification par email",
"notifyEmailHint": "Recevez un email avec les résultats de l'agent après chaque exécution", "notifyEmailHint": "Recevez un email avec les résultats de l'agent après chaque exécution",
"includeImages": "Inclure les images", "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", "back": "Retour",
"configuration": "Configuration", "configuration": "Configuration",
"options": "Options" "options": "Options"
@@ -2446,15 +2457,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Veille IA", "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": { "veilleTech": {
"name": "Veille Tech", "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": { "veilleDev": {
"name": "Veille Dev", "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": { "surveillant": {
"name": "Surveillant de Notes", "name": "Surveillant de Notes",
@@ -2501,7 +2512,7 @@
"tools": { "tools": {
"title": "Outils de l'agent", "title": "Outils de l'agent",
"webSearch": "Recherche web", "webSearch": "Recherche web",
"webScrape": "Scraping web", "webScrape": "Lecture de pages web",
"noteSearch": "Recherche notes", "noteSearch": "Recherche notes",
"noteRead": "Lire une note", "noteRead": "Lire une note",
"noteCreate": "Créer une note", "noteCreate": "Créer une note",
@@ -2534,11 +2545,11 @@
"howToUse": "Comment utiliser un agent ?", "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", "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", "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)", "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.", "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)", "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", "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.", "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", "targetNotebook": "Carnet cible",
@@ -2546,12 +2557,12 @@
"templates": "Modèles", "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.", "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", "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": { "tooltips": {
"agentType": "Choisissez le type de tâche que l'agent effectuera. Chaque type a des capacités et des champs différents.", "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.", "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.", "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.", "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.", "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.", "frequency": "À quelle fréquence l'agent s'exécute automatiquement. Commencez par Manuel pour tester.",
@@ -3196,7 +3207,7 @@
"relationEmpty": "Lier une note…", "relationEmpty": "Lier une note…",
"relationNoResults": "Aucune note trouvée", "relationNoResults": "Aucune note trouvée",
"relationSearch": "Rechercher une note…", "relationSearch": "Rechercher une note…",
"semanticResonances": "Résonances sémantiques", "semanticResonances": "Notes qui se rejoignent",
"insertLink": "Insérer le lien dans l'éditeur" "insertLink": "Insérer le lien dans l'éditeur"
}, },
"brainstorm": { "brainstorm": {
@@ -3419,7 +3430,7 @@
"businessFeature3": "Vos clés · {count} fournisseurs", "businessFeature3": "Vos clés · {count} fournisseurs",
"businessFeature4": "Agents & brainstorm (crédits)", "businessFeature4": "Agents & brainstorm (crédits)",
"enterpriseTitle": "Entreprise", "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", "contactSales": "Contactez-nous",
"startCheckout": "Commencer", "startCheckout": "Commencer",
"checkoutLoading": "Chargement du paiement…", "checkoutLoading": "Chargement du paiement…",
@@ -3474,10 +3485,10 @@
"paidPlanDesc": "Votre abonnement se renouvelle automatiquement.", "paidPlanDesc": "Votre abonnement se renouvelle automatiquement.",
"businessDescription": "Pour les équipes et chefs de produit.", "businessDescription": "Pour les équipes et chefs de produit.",
"enterpriseFeature1": "Crédits IA illimités ou pool dédié", "enterpriseFeature1": "Crédits IA illimités ou pool dédié",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Connexion unique pour toute léquipe",
"enterpriseFeature3": "Support dédié", "enterpriseFeature3": "Support dédié",
"enterpriseFeature4": "Facturation personnalisée", "enterpriseFeature4": "Facturation personnalisée",
"enterpriseFeature5": "SLA garanti", "enterpriseFeature5": "Délai de réponse garanti",
"subtitle": "Choisissez le plan qui vous convient", "subtitle": "Choisissez le plan qui vous convient",
"freeDescription": "Pour découvrir Memento", "freeDescription": "Pour découvrir Memento",
"freeF1": "Jusqu'à 100 notes", "freeF1": "Jusqu'à 100 notes",
@@ -3514,7 +3525,8 @@
"fetchStatusFailed": "Échec du chargement des informations de facturation", "fetchStatusFailed": "Échec du chargement des informations de facturation",
"fetchQuotasFailed": "Échec du chargement des crédits", "fetchQuotasFailed": "Échec du chargement des crédits",
"fetchInvoicesFailed": "Impossible de charger l'historique de facturation.", "fetchInvoicesFailed": "Impossible de charger l'historique de facturation.",
"savePercent": "Économisez ~17%", "savePercent": "Économisez ~{percent} %",
"billedYearTotal": "soit {price} par an",
"startTrialCta": "Essai gratuit {days} jours", "startTrialCta": "Essai gratuit {days} jours",
"trialFeature": "Essai gratuit {days} jours (carte requise)", "trialFeature": "Essai gratuit {days} jours (carte requise)",
"trialEndsOn": "Votre essai gratuit se termine le {date}. Vous serez ensuite facturé automatiquement.", "trialEndsOn": "Votre essai gratuit se termine le {date}. Vous serez ensuite facturé automatiquement.",
@@ -3669,7 +3681,7 @@
"perMonthAnnual": "/mois, facturé à l'année", "perMonthAnnual": "/mois, facturé à l'année",
"perUser": "+ 3,90€/user", "perUser": "+ 3,90€/user",
"perUserAnnual": "+ 2,90€/user, à l'année", "perUserAnnual": "+ 2,90€/user, à l'année",
"savePercent": "~17 %", "savePercent": "~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3714,10 +3726,10 @@
"cta": "Nous parler", "cta": "Nous parler",
"feature0": "Crédits IA illimités ou pool dédié", "feature0": "Crédits IA illimités ou pool dédié",
"feature1": "Tout Business", "feature1": "Tout Business",
"feature2": "SSO / SAML", "feature2": "Connexion unique pour toute léquipe",
"feature3": "Audit logs & SLA", "feature3": "Journal dactivité et délai de réponse garanti",
"feature4": "Support dédié", "feature4": "Support dédié",
"feature5": "Onboarding live" "feature5": "Accompagnement à linstallation"
}, },
"basicPrice": "Gratuit", "basicPrice": "Gratuit",
"trialBadge": "Essai gratuit {days} jours", "trialBadge": "Essai gratuit {days} jours",
@@ -3805,15 +3817,15 @@
"insightsView": { "insightsView": {
"title": "Connexions", "title": "Connexions",
"toggleMenu": "Afficher ou masquer le menu", "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", "resync": "Mettre à jour",
"mapping": "Cartographie…", "mapping": "Cartographie…",
"loading": "Chargement de vos notes…", "loading": "Chargement de vos notes…",
"mappingTitle": "Cartographie de votre savoir…", "mappingTitle": "Cartographie de votre savoir…",
"mappingHint": "Cela peut prendre une à trois minutes. Vous pouvez continuer à naviguer ; la page se mettra à jour à la fin.", "mappingHint": "Cela peut prendre une à trois minutes. Vous pouvez continuer à naviguer ; la page se mettra à jour à la fin.",
"analyzeNow": "Lancer l'analyse sémantique", "analyzeNow": "Mettre à jour les thèmes",
"emptyNeedMoreNotes": "Ajoutez encore {count} notes pour débloquer le regroupement sémantique (minimum 10).", "emptyNeedMoreNotes": "Ajoutez encore {count} notes pour regrouper vos thèmes (minimum 10).",
"embeddingsHint": "Seulement {indexed} notes sur {total} sont indexées pour lIA. Lanalyse va dabord les préparer (cela peut prendre plusieurs minutes).", "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.", "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", "openGraphMap": "Ouvrir la carte des liens",
"analysisFailed": "Lanalyse a échoué. Vérifiez vos paramètres IA ou réessayez.", "analysisFailed": "Lanalyse a échoué. Vérifiez vos paramètres IA ou réessayez.",
@@ -3831,8 +3843,8 @@
"graphNotesLabel": "notes", "graphNotesLabel": "notes",
"clusterFallback": "Thème {index}", "clusterFallback": "Thème {index}",
"unclusteredNotes": "{count} notes non rattachées à un thème (hors graphe).", "unclusteredNotes": "{count} notes non rattachées à un thème (hors graphe).",
"emptyTitle": "Découvrez vos clusters de connaissance", "emptyTitle": "Découvrez vos thèmes",
"emptyDescription": "Cliquez sur « Mettre à jour » pour analyser vos notes et révéler des connexions cachées", "emptyDescription": "Cliquez sur « Mettre à jour » pour regrouper vos notes par thèmes.",
"stats": { "stats": {
"clusters": "Thèmes", "clusters": "Thèmes",
"bridgeNotes": "Notes pont", "bridgeNotes": "Notes pont",
@@ -3840,16 +3852,16 @@
"bridgesSubtitle": "notes transversales" "bridgesSubtitle": "notes transversales"
}, },
"clusters": { "clusters": {
"title": "Clusters sémantiques", "title": "Thèmes",
"notesCount": "{count} notes", "notesCount": "{count} notes",
"centralNotes": "Notes centrales", "centralNotes": "Notes centrales",
"emptyCluster": "Aucune note dans ce cluster" "emptyCluster": "Aucune note dans ce thème"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Notes pont", "title": "Notes pont",
"score": "Score : {score} %", "score": "Score : {score} %",
"affinity": "Affinité {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}", "moreThemes": "+{count}",
"needsResync": "Cliquez « Mettre à jour » pour rafraîchir les paires de thèmes.", "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." "empty": "Aucune note pont significative pour l'instant. Approfondissez vos recherches pour découvrir de nouvelles connexions."
@@ -3870,35 +3882,35 @@
"viewGraph": "Graphe", "viewGraph": "Graphe",
"viewDashboard": "Tableau", "viewDashboard": "Tableau",
"isolatedClusters": { "isolatedClusters": {
"title": "Clusters isolés ({count})", "title": "Thèmes isolés ({count})",
"badge": "Non connecté", "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": { "focusCluster": {
"title": "Focus Cluster Activé", "title": "Thème ouvert",
"description": "Cet ensemble thématique réunit {count} notes complémentaires. Cliquez sur une note pour y accéder directement :", "description": "Ce thème réunit {count} notes. Cliquez sur une note pour louvrir.",
"close": "Fermer" "close": "Fermer"
}, },
"badgeDominant": "Dominant", "badgeDominant": "Dominant",
"bridgeCount": "pont(s)", "bridgeCount": "pont(s)",
"echoTitle": "Tu reviens sur cette idée", "echoTitle": "Vous revenez 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.", "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": "Clique sur un thème pour voir ses notes. Clique sur une note pour l'ouvrir.", "tipClustersAction": "Cliquez sur un thème pour voir ses notes. Cliquez sur une note pour louvrir.",
"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.", "tipBridgeNotes": "Une note pont relie deux thèmes. On ne garde que le lien le plus fort.",
"tipBridgeNotesAction": "Clique sur une note pour l'ouvrir et comprendre le lien.", "tipBridgeNotesAction": "Cliquez sur une note pour louvrir 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.", "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. Clique pour explorer.", "tipEchoAction": "Deux notes, même idée, moments différents. Cliquez 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.", "tipSuggestions": "LIA propose un pont seulement quand deux thèmes se touchent vraiment — pas des rapprochements forcés.",
"tipSuggestionsAction": "Clique sur « Créer la note pont » pour créer la note et l'ouvrir immédiatement.", "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 explores-tu une idée encore fragile ? Une note de synthèse suffirait à créer le lien.", "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 n'ont aucune note qui les relie au reste de ta réflexion.", "tipIsolatedAction": "Ces thèmes nont aucune note qui les relie au reste de votre réflexion.",
"recalcSystem": { "recalcSystem": {
"title": "Système de recalcul", "title": "Mise à jour des thèmes",
"statusSynced": "Synchronisé", "statusSynced": "À jour",
"scheduledCron": "CRON planifié", "scheduledCron": "Mise à jour automatique",
"lastSync": "Dernière synchro" "lastSync": "Dernière mise à jour"
}, },
"resetFocus": "Réinitialiser focus", "resetFocus": "Tout afficher",
"listView": "Liste", "listView": "Liste",
"listFilterPlaceholder": "Filtrer thèmes ou notes…", "listFilterPlaceholder": "Filtrer thèmes ou notes…",
"listFilterEmpty": "Aucun thème ni note ne correspond à ce filtre.", "listFilterEmpty": "Aucun thème ni note ne correspond à ce filtre.",
@@ -3907,8 +3919,8 @@
"listSortSize": "Par taille", "listSortSize": "Par taille",
"listSortBridges": "Par ponts", "listSortBridges": "Par ponts",
"listSortAlpha": "AZ", "listSortAlpha": "AZ",
"graphAriaLabel": "Réseau sémantique : {clusters} thèmes, {notes} notes, {bridges} notes-ponts. Basculez en vue Liste pour une navigation accessible.", "graphAriaLabel": "Carte des thèmes : {clusters} thèmes, {notes} notes, {bridges} notes-ponts. Passez en vue Liste pour naviguer plus facilement.",
"listAriaLabel": "Liste accessible des clusters avec notes et connexions ponts" "listAriaLabel": "Liste des thèmes, notes et notes pont"
}, },
"consent": { "consent": {
"banner": { "banner": {
@@ -3968,7 +3980,7 @@
"sectionDescription": "Supprimez définitivement et irréversiblement votre compte et toutes vos données.", "sectionDescription": "Supprimez définitivement et irréversiblement votre compte et toutes vos données.",
"whatWillBeDeleted": "Les éléments suivants seront définitivement supprimés :", "whatWillBeDeleted": "Les éléments suivants seront définitivement supprimés :",
"item1": "Toutes vos notes, carnets et pièces jointes", "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", "item3": "Toutes vos clés fournisseur",
"item4": "Toutes vos conversations IA et sessions de brainstorm", "item4": "Toutes vos conversations IA et sessions de brainstorm",
"item5": "Votre historique de quotas et d'utilisation", "item5": "Votre historique de quotas et d'utilisation",
@@ -4082,18 +4094,18 @@
"chooseNotebook": "Choisir un carnet", "chooseNotebook": "Choisir un carnet",
"changeNotebook": "Changer de carnet", "changeNotebook": "Changer de carnet",
"change": "Changer", "change": "Changer",
"localDbTitle": "Base de Données Autonome", "localDbTitle": "Tableau dans cette note",
"echoPopoverTitle": "Résonance Sémantique 🔮", "echoPopoverTitle": "Notes proches",
"noEchoFound": "Aucune résonance sémantique détectée.", "noEchoFound": "Aucune note proche trouvée.",
"echoUpgradeText": "Convertissez ce tableau en carnet pour activer l'analyse neuronale de Memento.", "echoUpgradeText": "Convertissez ce tableau en carnet pour que Memento trouve les notes proches.",
"echoLoading": "Recherche de connexions sémantiques...", "echoLoading": "Recherche de notes proches…",
"analyticsTitle": "Analyses & Insights", "analyticsTitle": "Analyses & Insights",
"analyticsNoData": "Aucune donnée d'analyse disponible.", "analyticsNoData": "Aucune donnée d'analyse disponible.",
"analyticsCompletion": "Taux de complétion", "analyticsCompletion": "Taux de complétion",
"analyticsDistribution": "Répartition", "analyticsDistribution": "Répartition",
"analyticsTotalRows": "Total des lignes", "analyticsTotalRows": "Total des lignes",
"analyticsShort": "Analyses", "analyticsShort": "Analyses",
"turnIntoLabel": "Base de données inline", "turnIntoLabel": "Tableau dans la note",
"columnAdded": "Colonne ajoutée !", "columnAdded": "Colonne ajoutée !",
"columnRemoved": "Colonne supprimée", "columnRemoved": "Colonne supprimée",
"propertyName": "Propriété {{index}}", "propertyName": "Propriété {{index}}",
@@ -4104,7 +4116,7 @@
"convertNoteError": "Erreur de création de note.", "convertNoteError": "Erreur de création de note.",
"convertSuccess": "Conversion réussie ! Base liée créée.", "convertSuccess": "Conversion réussie ! Base liée créée.",
"convertGenericError": "Une erreur est survenue.", "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.", "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.", "echoNoMatch": "Aucune note correspondante contenant « {{query}} » n'a été trouvée dans votre espace de travail.",
"convertToNotebook": "Convertir en carnet", "convertToNotebook": "Convertir en carnet",
@@ -4119,7 +4131,7 @@
"deleteColumn": "Supprimer la colonne", "deleteColumn": "Supprimer la colonne",
"addColumn": "Ajouter une colonne", "addColumn": "Ajouter une colonne",
"deleteRow": "Supprimer la ligne", "deleteRow": "Supprimer la ligne",
"semanticEcho": "Résonances sémantiques", "semanticEcho": "Notes qui se rejoignent",
"close": "Fermer", "close": "Fermer",
"insertCitation": "Insérer le lien dans l'éditeur", "insertCitation": "Insérer le lien dans l'éditeur",
"keywordMatch": "Mot-clé", "keywordMatch": "Mot-clé",
@@ -4131,8 +4143,8 @@
"selectOptionsPlaceholder": "Options séparées par des virgules", "selectOptionsPlaceholder": "Options séparées par des virgules",
"namePlaceholder": "Saisir un nom…", "namePlaceholder": "Saisir un nom…",
"or": "ou", "or": "ou",
"createLocalDb": "Créer une base locale autonome", "createLocalDb": "Créer un tableau dans cette note",
"switchToLocalDb": "Passer en base locale", "switchToLocalDb": "Revenir au tableau de cette note",
"untitled": "Sans titre", "untitled": "Sans titre",
"citationInserted": "Citation insérée dans l'éditeur !", "citationInserted": "Citation insérée dans l'éditeur !",
"notesLoadError": "Erreur de chargement des notes", "notesLoadError": "Erreur de chargement des notes",
@@ -4168,7 +4180,7 @@
"step_features_title": "Vos super-pouvoirs IA", "step_features_title": "Vos super-pouvoirs IA",
"step_features_subtitle": "Choisissez par où commencer.", "step_features_subtitle": "Choisissez par où commencer.",
"step_features_cta": "C'est parti !", "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_search_desc": "Retrouvez n'importe quelle note par sens, pas seulement par mot-clé.",
"feature_flashcards_title": "Cartes de révision", "feature_flashcards_title": "Cartes de révision",
"feature_flashcards_desc": "Créez des cartes de révision depuis vos notes, en un clic.", "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_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_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_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_title": "Thèmes 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_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_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_bridge_desc": "Les notes pont relient plusieurs thèmes. Elles montrent où vos idées se croisent.",
"hint_insights_refresh_title": "Rafraîchir les clusters", "hint_insights_refresh_title": "Mettre à jour les thèmes",
"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_refresh_desc": "Si vous avez ajouté des notes, cliquez sur « Mettre à jour » pour recalculer les thèmes."
}, },
"integrations": { "integrations": {
"title": "Intégrations", "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.", "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.", "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 ».", "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": { "homeDashboard": {
"title": "Tableau de bord", "title": "Tableau de bord",
@@ -4301,7 +4313,7 @@
"captureError": "Erreur", "captureError": "Erreur",
"mindMap": "Carte mentale", "mindMap": "Carte mentale",
"fullMap": "Vue complète →", "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 →", "mindMapOpen": "Ouvrir la cartographie →",
"mindMapUnavailable": "Cartographie indisponible.", "mindMapUnavailable": "Cartographie indisponible.",
"themes": "Thèmes", "themes": "Thèmes",
@@ -4344,7 +4356,7 @@
"new": "nouveaux", "new": "nouveaux",
"noConnections": "Aucune connexion trouvée. L'IA analyse vos notes.", "noConnections": "Aucune connexion trouvée. L'IA analyse vos notes.",
"match": "Connexion", "match": "Connexion",
"semanticConnection": "Affinité sémantique", "semanticConnection": "Proximité",
"suggestedBridge": "Relier {clusterA} et {clusterB}", "suggestedBridge": "Relier {clusterA} et {clusterB}",
"createBridgeNote": "Créer la note-pont", "createBridgeNote": "Créer la note-pont",
"bridgeNoteCreated": "Note-pont créée", "bridgeNoteCreated": "Note-pont créée",
@@ -4417,7 +4429,7 @@
"sentiment": "Analyse émotionnelle", "sentiment": "Analyse émotionnelle",
"inbox": "Boîte de réception", "inbox": "Boîte de réception",
"revision": "Cartes de révision", "revision": "Cartes de révision",
"stats": "Statistiques sémantiques", "stats": "Thèmes et notes",
"agent-activity": "Activité agents", "agent-activity": "Activité agents",
"gmail": "Captures Gmail", "gmail": "Captures Gmail",
"activity": "Activité d'écriture", "activity": "Activité d'écriture",
@@ -4434,14 +4446,14 @@
"widgetDescriptions": { "widgetDescriptions": {
"capture": "Noter une pensée tout de suite. Elle va dans la file.", "capture": "Noter une pensée tout de suite. Elle va dans la file.",
"resume": "Reprendre vos notes les plus récentes.", "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.", "reminders": "Rappels de notes à venir en un coup d'œil.",
"mind-map": "Thèmes regroupés, taille proportionnelle au volume.", "mind-map": "Thèmes regroupés, taille proportionnelle au volume.",
"agents": "Agents de recherche suggérés par l'IA.", "agents": "Agents de recherche suggérés par l'IA.",
"sentiment": "Tonalité émotionnelle de vos notes cette semaine.", "sentiment": "Tonalité émotionnelle de vos notes cette semaine.",
"inbox": "Notes en attente de classement dans un carnet.", "inbox": "Notes en attente de classement dans un carnet.",
"revision": "Cartes à réviser (répétition espacée).", "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.", "agent-activity": "Dernières exécutions d'agents terminées.",
"gmail": "Captures e-mail synchronisées depuis Gmail.", "gmail": "Captures e-mail synchronisées depuis Gmail.",
"activity": "Heatmap de votre rythme d'écriture.", "activity": "Heatmap de votre rythme d'écriture.",
@@ -4483,7 +4495,7 @@
"activityEmptyHint": "Éditez des notes pour voir votre rythme décriture sur 90 jours.", "activityEmptyHint": "Éditez des notes pour voir votre rythme décriture sur 90 jours.",
"pathTypes": { "pathTypes": {
"continue": "Continuer", "continue": "Continuer",
"connect": "Lien sémantique", "connect": "Lier une note",
"add-link": "Ajouter à la note", "add-link": "Ajouter à la note",
"bridge": "Idée-pont", "bridge": "Idée-pont",
"research": "Agent de recherche", "research": "Agent de recherche",
@@ -4501,14 +4513,14 @@
"capture": "Écrivez une pensée. Elle arrive dans la file, à classer plus tard.", "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.", "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é.", "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.", "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.", "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.", "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.", "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é.", "inbox": "Notes sans carnet. Classez-les pour garder un second brain ordonné.",
"revision": "Cartes à réviser aujourd'hui. Elles reviennent au bon moment.", "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.", "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.", "gmail": "Captures e-mail synchronisées depuis l'intégration Gmail.",
"activity": "Heatmap des notes modifiées sur les 90 derniers jours.", "activity": "Heatmap des notes modifiées sur les 90 derniers jours.",

View File

@@ -407,7 +407,7 @@
"placeholder": "खोज", "placeholder": "खोज",
"searchPlaceholder": "नोट्स खोजें…", "searchPlaceholder": "नोट्स खोजें…",
"semanticInProgress": "AI खोज जारी…", "semanticInProgress": "AI खोज जारी…",
"semanticTooltip": "AI सिमेंटिक खोज", "semanticTooltip": "अर्थ से खोज",
"searching": "खोज रहा है…", "searching": "खोज रहा है…",
"noResults": "कोई परिणाम नहीं मिला", "noResults": "कोई परिणाम नहीं मिला",
"resultsFound": "{count} नोट्स मिले", "resultsFound": "{count} नोट्स मिले",
@@ -861,7 +861,7 @@
"compareAll": "सभी की तुलना करें", "compareAll": "सभी की तुलना करें",
"mergeAll": "सभी को मर्ज करें", "mergeAll": "सभी को मर्ज करें",
"close": "बंद करें", "close": "बंद करें",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % निकटता",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "मेमोरी इको", "badgeLabel": "मेमोरी इको",
"bottomCueConsent": "नीचे AI कनेक्शन उपलब्ध हैं", "bottomCueConsent": "नीचे AI कनेक्शन उपलब्ध हैं",
@@ -918,7 +918,7 @@
"noContentReturned": "API से कोई फ्यूजन सामग्री नहीं मिली", "noContentReturned": "API से कोई फ्यूजन सामग्री नहीं मिली",
"unknownDate": "अज्ञात तिथि" "unknownDate": "अज्ञात तिथि"
}, },
"defaultInsight": "ये नोट्स अर्थपूर्ण रूप से संबंधित प्रतीत होते हैं।", "defaultInsight": "ये नोट्स एक साथ हैं।",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "लेबल साफ़ नहीं कर सके", "cleanupError": "लेबल साफ़ नहीं कर सके",
"indexingComplete": "इंडेक्सिंग पूर्ण: {count} नोट प्रोसेस किए", "indexingComplete": "इंडेक्सिंग पूर्ण: {count} नोट प्रोसेस किए",
"indexingError": "इंडेक्सिंग में त्रुटि", "indexingError": "इंडेक्सिंग में त्रुटि",
"semanticIndexing": "सिमेंटिक इंडेक्सिंग", "semanticIndexing": "अर्थ से खोज का अनुक्रमणिका",
"semanticIndexingDescription": "सभी नोट्स के लिए वेक्टर बनाएं ताकि इरादा-आधारित खोज सक्षम हो", "semanticIndexingDescription": "सभी नोट को अर्थ से खोज के लिए तैयार करें",
"profile": "प्रोफ़ाइल", "profile": "प्रोफ़ाइल",
"searchNoResults": "कोई मिलान सेटिंग्स नहीं मिली", "searchNoResults": "कोई मिलान सेटिंग्स नहीं मिली",
"languageAuto": "भाषा स्वचालित पर सेट है", "languageAuto": "भाषा स्वचालित पर सेट है",
@@ -1664,7 +1664,7 @@
"title": "सुविधाएं", "title": "सुविधाएं",
"description": "AI-संचालित क्षमताएं", "description": "AI-संचालित क्षमताएं",
"titleSuggestions": "AI-संचालित शीर्षक सुझाव", "titleSuggestions": "AI-संचालित शीर्षक सुझाव",
"semanticSearch": "एम्बेडिंग्स के साथ सिमेंटिक खोज", "semanticSearch": "अर्थ से खोज",
"paragraphReformulation": "अनुच्छेद पुनर्सुधार", "paragraphReformulation": "अनुच्छेद पुनर्सुधार",
"memoryEcho": "Memory Echo दैनिक अंतर्दृष्टि", "memoryEcho": "Memory Echo दैनिक अंतर्दृष्टि",
"notebookOrganization": "नोटबुक संगठन", "notebookOrganization": "नोटबुक संगठन",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "खोज इंडेक्स पुनर्निर्माण करें", "title": "खोज इंडेक्स पुनर्निर्माण करें",
"description": "सिमेंटिक खोज में सुधार के लिए सभी नोट्स के लिए एम्बेडिंग्स पुनः उत्पन्न करें।", "description": "अर्थ से खोज बेहतर करने के लिए सभी नोट की अनुक्रमणिका फिर बनाएँ।",
"button": "इंडेक्स पुनर्निर्माण करें", "button": "इंडेक्स पुनर्निर्माण करें",
"success": "इंडेक्सिंग पूर्ण: {count} नोट्स संसाधित", "success": "इंडेक्सिंग पूर्ण: {count} नोट्स संसाधित",
"failed": "इंडेक्सिंग के दौरान त्रुटि" "failed": "इंडेक्सिंग के दौरान त्रुटि"
@@ -1984,7 +1984,7 @@
"legendWiki": "नोट से लिंक", "legendWiki": "नोट से लिंक",
"mentionShort": "उल्लेख", "mentionShort": "उल्लेख",
"moreNodes": "मानचित्र पर +{count}", "moreNodes": "मानचित्र पर +{count}",
"noInbound": "इस नोट की ओर इशारा करती कोई इनबाउंड विकि लिंक नहीं है।", "noInbound": "कोई अन्य नोट इस ओर इशारा नहीं करता।",
"noOutbound": "यह नोट अभी तक अन्य नोट्स से नहीं जुड़ा है।", "noOutbound": "यह नोट अभी तक अन्य नोट्स से नहीं जुड़ा है।",
"noWikiYet": "अभी तक अन्य नोट्स के लिंक नहीं हैं।", "noWikiYet": "अभी तक अन्य नोट्स के लिंक नहीं हैं।",
"outboundHelp": "जिन नोट्स को यह टेक्स्ट में [[…]] का उपयोग करके लिंक करती है।", "outboundHelp": "जिन नोट्स को यह टेक्स्ट में [[…]] का उपयोग करके लिंक करती है।",
@@ -2190,7 +2190,7 @@
"custom": "कस्टम" "custom": "कस्टम"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "कई साइटों से डेटा एकत्र करता है और सारांश बनाता है", "scraper": "कई साइटें पढ़कर सार लिखता है",
"researcher": "किसी विषय पर जानकारी खोजता है", "researcher": "किसी विषय पर जानकारी खोजता है",
"monitor": "नोटबुक की निगरानी करता है और नोट्स का विश्लेषण करता है", "monitor": "नोटबुक की निगरानी करता है और नोट्स का विश्लेषण करता है",
"slideGenerator": "नोट्स से एक पावरपॉइंट प्रेजेंटेशन बनाता है", "slideGenerator": "नोट्स से एक पावरपॉइंट प्रेजेंटेशन बनाता है",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "उदा: मंगलवार AI वॉच", "namePlaceholder": "उदा: मंगलवार AI वॉच",
"description": "विवरण (वैकल्पिक)", "description": "विवरण (वैकल्पिक)",
"descriptionPlaceholder": "साप्ताहिक AI समाचार सारांश", "descriptionPlaceholder": "साप्ताहिक AI समाचार सारांश",
"urlsLabel": "स्क्रैप करने के लिए URL", "urlsLabel": "पढ़ने वाले पेज के पते",
"urlsOptional": "(वैकल्पिक)", "urlsOptional": "(वैकल्पिक)",
"sourceNotebook": "निगरानी करने के लिए नोटबुक", "sourceNotebook": "निगरानी करने के लिए नोटबुक",
"selectNotebook": "नोटबुक चुनें...", "selectNotebook": "नोटबुक चुनें...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "ईमेल सूचना", "notifyEmail": "ईमेल सूचना",
"notifyEmailHint": "प्रत्येक रन के बाद एजेंट के परिणामों के साथ ईमेल प्राप्त करें", "notifyEmailHint": "प्रत्येक रन के बाद एजेंट के परिणामों के साथ ईमेल प्राप्त करें",
"includeImages": "चित्र शामिल करें", "includeImages": "चित्र शामिल करें",
"includeImagesHint": "स्क्रैप किए गए पेजों से चित्र निकालें और उत्पन्न नोट में संलग्न करें", "includeImagesHint": "पढ़े गए पेजों की तस्वीरें नोट में जोड़ें",
"back": "वापस", "back": "वापस",
"configuration": "कॉन्फ़िगरेशन", "configuration": "कॉन्फ़िगरेशन",
"options": "विकल्प", "options": "विकल्प",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI वॉच", "name": "AI वॉच",
"description": "5 AI विशेष साइटों से डेटा एकत्र करता है और साप्ताहिक सारांश बनाता है।" "description": "5 AI साइटें पढ़कर साप्ताहिक सार लिखता है।"
}, },
"veilleTech": { "veilleTech": {
"name": "टेक वॉच", "name": "टेक वॉच",
"description": "प्रमुख तकनीकी साइटसे डेटा एकत्र करता है और समाचार सारांश बनाता है।" "description": "मुख्य तकनीकी साइटपढ़कर समाचार सार लिखता है।"
}, },
"veilleDev": { "veilleDev": {
"name": "डेव वॉच", "name": "डेव वॉच",
"description": "विकास साइटसे डेटा एकत्र करता है और नई तकनीकों का सारांश देता है।" "description": "डेव साइटपढ़कर नई तकनीकों का सार लिखता है।"
}, },
"surveillant": { "surveillant": {
"name": "नोट पर्यवेक्षक", "name": "नोट पर्यवेक्षक",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "एजेंट टूल", "title": "एजेंट टूल",
"webSearch": "वेब खोज", "webSearch": "वेब खोज",
"webScrape": "वेब स्क्रैप", "webScrape": "पेज पढ़ना",
"noteSearch": "नोट खोज", "noteSearch": "नोट खोज",
"noteRead": "नोट पढ़ें", "noteRead": "नोट पढ़ें",
"noteCreate": "नोट बनाएं", "noteCreate": "नोट बनाएं",
@@ -2431,15 +2431,15 @@
"btnLabel": "सहायता", "btnLabel": "सहायता",
"close": "बंद करें", "close": "बंद करें",
"whatIsAgent": "एजेंट क्या है?", "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": "एजेंट का उपयोग कैसे करें?", "howToUse": "एजेंट का उपयोग कैसे करें?",
"howToUseContent": "1. **\"नया एजेंट\"** पर क्लिक करें (या पेज के नीचे **टेम्पलेट** से शुरू करें)।", "howToUseContent": "1. **\"नया एजेंट\"** पर क्लिक करें (या पेज के नीचे **टेम्पलेट** से शुरू करें)।",
"types": "एजेंट प्रकार", "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 निर्देश, अधिकतम पुनरावृत्ति)", "advanced": "उन्नत मोड (AI निर्देश, अधिकतम पुनरावृत्ति)",
"advancedContent": "अतिरिक्त सेटिंग्स तक पहुँचने के लिए फ़ॉर्म के नीचे **\"उन्नत मोड\"** पर क्लिक करें।", "advancedContent": "अतिरिक्त सेटिंग्स तक पहुँचने के लिए फ़ॉर्म के नीचे **\"उन्नत मोड\"** पर क्लिक करें।",
"tools": "उपलब्ध उपकरण (विस्तार)", "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": "आवृत्ति और शेड्यूलिंग", "frequency": "आवृत्ति और शेड्यूलिंग",
"frequencyContent": "| आवृत्ति | व्यवहार\n|-----------|----------\n| **मैनुअल** | आप स्वयं \"चलाएँ\" पर क्लिक करते हैं।", "frequencyContent": "| आवृत्ति | व्यवहार\n|-----------|----------\n| **मैनुअल** | आप स्वयं \"चलाएँ\" पर क्लिक करते हैं।",
"targetNotebook": "लक्ष्य नोटबुक", "targetNotebook": "लक्ष्य नोटबुक",
@@ -2447,7 +2447,7 @@
"templates": "टेम्पलेट", "templates": "टेम्पलेट",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates 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.", "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": "सुझाव और समस्या हल",
"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": { "tooltips": {
"agentType": "एजेंट किस प्रकार का कार्य करेगा उसे चुनें। प्रत्येक प्रकार की अलग क्षमताएं और फ़ील्ड हैं।", "agentType": "एजेंट किस प्रकार का कार्य करेगा उसे चुनें। प्रत्येक प्रकार की अलग क्षमताएं और फ़ील्ड हैं।",
"researchTopic": "वह विषय जिस पर एजेंट वेब पर शोध करेगा। बेहतर परिणामों के लिए विशिष्ट रहें।", "researchTopic": "वह विषय जिस पर एजेंट वेब पर शोध करेगा। बेहतर परिणामों के लिए विशिष्ट रहें।",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Pro में अपग्रेड करें", "upgradeTitle": "Pro में अपग्रेड करें",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro में शामिल:", "proIncludes": "Pro में शामिल:",
"proSearch": "100 semantic searches / month", "proSearch": "प्रति माह 1,000 AI क्रेडिट",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "आरेख निर्माण", "featureDiagrams": "आरेख निर्माण",
"featureFlashcards": "AI फ्लैशकार्ड", "featureFlashcards": "समीक्षा कार्ड",
"featurePublishEnhance": "AI प्रकाशन", "featurePublishEnhance": "AI प्रकाशन",
"featureSlides": "स्लाइड निर्माण", "featureSlides": "स्लाइड निर्माण",
"featureVoice": "वॉइस ट्रांसक्रिप्शन", "featureVoice": "वॉइस ट्रांसक्रिप्शन",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 पुनर्लेखन / माह", "businessFeature3": "500 पुनर्लेखन / माह",
"businessFeature4": "1,000 चैट संदेश / माह", "businessFeature4": "1,000 चैट संदेश / माह",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "कस्टम कोटा, SSO, प्राथमिकता समर्थन।", "enterpriseDescription": "कस्टम कोटा, पूरी टीम के लिए एक बार लॉगिन, प्राथमिकता समर्थन।",
"contactSales": "बिक्री से संपर्क करें", "contactSales": "बिक्री से संपर्क करें",
"startCheckout": "शुरू करें", "startCheckout": "शुरू करें",
"checkoutLoading": "भुगतान लोड हो रहा है…", "checkoutLoading": "भुगतान लोड हो रहा है…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "आपकी सदस्यता स्वचालित रूप से नवीनीकरण होती है।", "paidPlanDesc": "आपकी सदस्यता स्वचालित रूप से नवीनीकरण होती है।",
"businessDescription": "टीमों और उत्पाद नेताओं के लिए।", "businessDescription": "टीमों और उत्पाद नेताओं के लिए।",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "पूरी टीम के लिए एक बार लॉगिन",
"enterpriseFeature3": "समर्पित सहायता", "enterpriseFeature3": "समर्पित सहायता",
"enterpriseFeature4": "कस्टम बिलिंग", "enterpriseFeature4": "कस्टम बिलिंग",
"enterpriseFeature5": "गारंटीड SLA", "enterpriseFeature5": "गारंटीड जवाब समय",
"subtitle": "अपने लिए उपयुक्त योजना चुनें", "subtitle": "अपने लिए उपयुक्त योजना चुनें",
"freeDescription": "मेमेंटो की खोज के लिए", "freeDescription": "मेमेंटो की खोज के लिए",
"freeF1": "30 शब्दार्थ खोज", "freeF1": "30 शब्दार्थ खोज",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "बिलिंग स्थिति प्राप्त करने में विफल", "fetchStatusFailed": "बिलिंग स्थिति प्राप्त करने में विफल",
"fetchQuotasFailed": "कोटा प्राप्त करने में विफल", "fetchQuotasFailed": "कोटा प्राप्त करने में विफल",
"fetchInvoicesFailed": "बिलिंग इतिहास लोड करने में विफल।", "fetchInvoicesFailed": "बिलिंग इतिहास लोड करने में विफल।",
"savePercent": "~17% बचाएँ", "savePercent": "~{percent}% बचाएँ",
"billedYearTotal": "अर्थात {price} प्रति वर्ष",
"cancelSubscription": "सदस्यता रद्द करें", "cancelSubscription": "सदस्यता रद्द करें",
"changeOffer": "योजना बदलें", "changeOffer": "योजना बदलें",
"downgradeToFree": "मुफ़्त योजना पर वापस जाएँ", "downgradeToFree": "मुफ़्त योजना पर वापस जाएँ",
@@ -3379,13 +3380,13 @@
"cta": "हमसे बात करें", "cta": "हमसे बात करें",
"feature0": "Business की सब सुविधाएँ", "feature0": "Business की सब सुविधाएँ",
"feature1": "असीमित एजेंट", "feature1": "असीमित एजेंट",
"feature2": "SSO / SAML", "feature2": "पूरी टीम के लिए एक बार लॉगिन",
"feature3": "ऑडिट लॉग और SLA", "feature3": "गतिविधि रिकॉर्ड और गारंटीड जवाब समय",
"feature4": "समर्पित सपोर्ट", "feature4": "समर्पित सपोर्ट",
"feature5": "लाइव ऑनबोर्डिंग" "feature5": "शुरुआत में साथ"
}, },
"basicPrice": "मुफ़्त", "basicPrice": "मुफ़्त",
"savePercent": "~17% बचाएँ", "savePercent": "~{percent}% बचाएँ",
"proMonthly": "€9.90", "proMonthly": "€9.90",
"proAnnualMonthly": "€8.25", "proAnnualMonthly": "€8.25",
"businessMonthly": "€29.90", "businessMonthly": "€29.90",
@@ -3494,7 +3495,7 @@
"sectionDescription": "अपना खाता और सभी संबंधित डेटा स्थायी और अनुत्करणीय रूप से हटाएं।", "sectionDescription": "अपना खाता और सभी संबंधित डेटा स्थायी और अनुत्करणीय रूप से हटाएं।",
"whatWillBeDeleted": "निम्नलिखित स्थायी रूप से हटाए जाएंगे:", "whatWillBeDeleted": "निम्नलिखित स्थायी रूप से हटाए जाएंगे:",
"item1": "सभी नोट्स, नोटबुक और अनुलग्नक", "item1": "सभी नोट्स, नोटबुक और अनुलग्नक",
"item2": "सभी pgvector अर्थपूर्ण एम्बेडिंग", "item2": "वह अनुक्रमणिका जो आपके नोट जोड़ती है",
"item3": "सभी BYOK API कुंजी", "item3": "सभी BYOK API कुंजी",
"item4": "सभी AI वार्ताएं और ब्रेनस्टॉर्म सत्र", "item4": "सभी AI वार्ताएं और ब्रेनस्टॉर्म सत्र",
"item5": "कोटा और उपयोग इतिहास", "item5": "कोटा और उपयोग इतिहास",
@@ -3559,7 +3560,7 @@
"step_features_title": "आपकी AI महाशक्तियाँ", "step_features_title": "आपकी AI महाशक्तियाँ",
"step_features_subtitle": "चुनें कहाँ से शुरू करना है।", "step_features_subtitle": "चुनें कहाँ से शुरू करना है।",
"step_features_cta": "चलिए शुरू करते हैं!", "step_features_cta": "चलिए शुरू करते हैं!",
"feature_search_title": "सिमेंटिक खोज", "feature_search_title": "अर्थ से खोज",
"feature_search_desc": "केवल कीवर्ड से नहीं, अर्थ से कोई भी नोट खोजें।", "feature_search_desc": "केवल कीवर्ड से नहीं, अर्थ से कोई भी नोट खोजें।",
"feature_flashcards_title": "AI फ्लैशकार्ड", "feature_flashcards_title": "AI फ्लैशकार्ड",
"feature_flashcards_desc": "एक क्लिक में अपने नोट्स से समीक्षा कार्ड बनाएं।", "feature_flashcards_desc": "एक क्लिक में अपने नोट्स से समीक्षा कार्ड बनाएं।",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "किसी आइडिया कार्ड पर क्लिक करके उसे उप-आइडिया के साथ विस्तारित करें।", "hint_brainstorm_deepen_desc": "किसी आइडिया कार्ड पर क्लिक करके उसे उप-आइडिया के साथ विस्तारित करें।",
"hint_brainstorm_export_title": "सत्र निर्यात करें", "hint_brainstorm_export_title": "सत्र निर्यात करें",
"hint_brainstorm_export_desc": "पूरे ब्रेनस्टॉर्मिंग सत्र को चयनित नोटबुक में संरचित नोट के रूप में निर्यात करें।", "hint_brainstorm_export_desc": "पूरे ब्रेनस्टॉर्मिंग सत्र को चयनित नोटबुक में संरचित नोट के रूप में निर्यात करें।",
"hint_insights_clusters_title": "नोट क्लस्टर", "hint_insights_clusters_title": "नोट के विषय",
"hint_insights_clusters_desc": "आपके नोट्स स्वचालित रूप से थीमैटिक क्लस्टर में समूहबद्ध होते हैं। विवरण के लिए क्लिक करें।", "hint_insights_clusters_desc": "नोट विषय के अनुसार जुड़े हैं। विषय पर क्लिक करके नोट देखें।",
"hint_insights_bridge_title": "ब्रिज नोट्स", "hint_insights_bridge_title": "ब्रिज नोट्स",
"hint_insights_bridge_desc": "ब्रिज नोट कई क्लस्टर को जोड़ते हैं और महत्वपूर्ण संबंध होने के कारण उजागर किए गए हैं।", "hint_insights_bridge_desc": "पुल नोट कई विषयों को जोड़ते हैं। वे दिखाते हैं कि विचार कहाँ मिलते हैं।",
"hint_insights_refresh_title": "क्लस्टर रिफ्रे", "hint_insights_refresh_title": "विषय अपडेट करे",
"hint_insights_refresh_desc": "अगर आपने नए नोट्स जोड़े हैं, तो क्लस्टर पुनर्गणना के लिए \"रिफ्रेश\" पर क्लिक करें।" "hint_insights_refresh_desc": "अगर आपने नोट जोड़े हैं, «अपडेट» पर क्लिक करके विषय फिर से जोड़ें।"
}, },
"blockAction": { "blockAction": {
"moveUp": "ब्लॉक ऊपर ले जाएं", "moveUp": "ब्लॉक ऊपर ले जाएं",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "कड़ियाँ", "title": "कड़ियाँ",
"toggleMenu": "मेनू दिखाएँ या छिपाएँ", "toggleMenu": "मेनू दिखाएँ या छिपाएँ",
"subtitle": "अपने ज्ञान की छिपी संरचना खोजें", "subtitle": "देखें आपकी नोट्स कैसे जुड़ती हैं",
"resync": "अपडेट करें", "resync": "अपडेट करें",
"mapping": "मैपिंग…", "mapping": "मैपिंग…",
"loading": "नोट लोड हो रहे हैं…", "loading": "नोट लोड हो रहे हैं…",
"mappingTitle": "आपका ज्ञान मैप किया जा रहा है…", "mappingTitle": "आपका ज्ञान मैप किया जा रहा है…",
"mappingHint": "इसमें एक से तीन मिनट लग सकते हैं। आप ब्राउज़िंग जारी रख सकते हैं; पेज स्वचालित अपडेट होगा।", "mappingHint": "इसमें एक से तीन मिनट लग सकते हैं। आप ब्राउज़िंग जारी रख सकते हैं; पेज स्वचालित अपडेट होगा।",
"analyzeNow": "सिमेंटिक विश्लेषण शुरू करें", "analyzeNow": "विषय अपडेट करें",
"emptyNeedMoreNotes": "सिमेंटिक क्लस्टरिंग को अनलॉक करने के लिए {count} और नोट्स जोड़ें (न्यूनतम 10).", "emptyNeedMoreNotes": "विषय समूह करने के लिए {count} और नोट्स जोड़ें (न्यूनतम 10).",
"embeddingsHint": "केवल {indexed}/{total} नोट्स AI के लिए अनुक्रमित हैं।", "embeddingsHint": "केवल {indexed} / {total} नोट विषय के अनुसार जुड़ने के लिए तैयार हैं।",
"vsGraphHint": "यह \"लिंक मैप\" से अलग है: यहाँ AI लिंक के बजाय अर्थ के अनुसार समूहबद्ध करता है।", "vsGraphHint": "यह \"लिंक मैप\" से अलग है: यहाँ AI लिंक के बजाय अर्थ के अनुसार समूहबद्ध करता है।",
"openGraphMap": "लिंक मानचित्र खोलें", "openGraphMap": "लिंक मानचित्र खोलें",
"analysisFailed": "विश्लेषण विफल। AI सेटिंग्स जांचें।", "analysisFailed": "विश्लेषण विफल। AI सेटिंग्स जांचें।",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "नोट्स", "graphNotesLabel": "नोट्स",
"clusterFallback": "विषय {index}", "clusterFallback": "विषय {index}",
"unclusteredNotes": "{count} नोट्स किसी थीम को नहीं दिए गए (ग्राफ से छिपे हुए)।", "unclusteredNotes": "{count} नोट्स किसी थीम को नहीं दिए गए (ग्राफ से छिपे हुए)।",
"emptyTitle": "अपने ज्ञान क्लस्टर खोजें", "emptyTitle": "अपने विषय देखें",
"emptyDescription": "\"नेटवर्क पुनः सिंक करें\" पर क्लिक करके अपने नोट्स क विश्लेषण करें और छिपे हुए संबंध खोजें", "emptyDescription": "«अपडेट» पर क्लिक करके नोट्स क विषय के अनुसार जोड़ें",
"stats": { "stats": {
"clusters": "क्लस्टर", "clusters": "क्लस्टर",
"bridgeNotes": "ब्रिज नोट्स", "bridgeNotes": "ब्रिज नोट्स",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "सिमेंटिक क्लस्टर", "title": "विषय",
"notesCount": "{count} नोट्स", "notesCount": "{count} नोट्स",
"centralNotes": "केंद्रीय नोट्स", "centralNotes": "केंद्रीय नोट्स",
"emptyCluster": "इस क्लस्टर में कोई नोट नहीं" "emptyCluster": "इस विषय में कोई नोट नहीं"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "आत्मीयता {score}%", "affinity": "आत्मीयता {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "ब्रिज जोड़े ताज़ा करने के लिए नेटवर्क को पुनः सिंक करें।", "needsResync": "ब्रिज जोड़े ताज़ा करने के लिए नेटवर्क को पुनः सिंक करें।",
"scoreHint": "इस नोट द्वारा जोड़े गए दो विषयों के लिए औसत सिमेंटिक आत्मीयता (कोसाइन समानता)।" "scoreHint": "यह नोट जिन दो विषयों को जोड़ता है, उनसे कितना पास है।"
}, },
"suggestions": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "ग्राफ", "viewGraph": "ग्राफ",
"viewDashboard": "डैशबोर्ड", "viewDashboard": "डैशबोर्ड",
"isolatedClusters": { "isolatedClusters": {
"title": "पृथक क्लस्टर ({count})", "title": "अलग विषय ({count})",
"badge": "कनेक्टेड नहीं", "badge": "कनेक्टेड नहीं",
"empty": "सभी क्लस्टर जुड़े हुए हैं!" "empty": "सभी विषय पहले से कम से कम एक पुल नोट से जुड़े हैं"
}, },
"focusCluster": { "focusCluster": {
"title": "क्लस्टर फोकस सक्रिय", "title": "विषय खुला है",
"description": "यह थीमैटिक क्लस्टर {count} पूरक नोट्स इकट्ठा करता है। नोट खोलने के लिए क्लिक करें।", "description": "इस विषय में {count} नोट हैं। खोलने के लिए नोट पर क्लिक करें।",
"close": "बंद करें" "close": "बंद करें"
}, },
"badgeDominant": "प्रमुख", "badgeDominant": "प्रमुख",
"bridgeCount": "ब्रिज", "bridgeCount": "ब्रिज",
"echoTitle": "आप इस विचार पर बार-बार लौटते हैं", "echoTitle": "आप इस विचार पर बार-बार लौटते हैं",
"tipClusters": "AI ने आपके नोट्स को सिमेंटिक आत्मीयता के अनुसार समूहबद्ध किया — नोटबुक से स्वतंत्र।", "tipClusters": "AI ने नोट्स को विषय के अनुसार जोड़ा, भले ही वे अलग नोटबुक में हों।",
"tipClustersAction": "थीम देखने के लिए क्लिक करें। नोट खोलने के लिए क्लिक करें।", "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": "नोट खोलने और कनेक्शन समझने के लिए क्लिक करें।", "tipBridgeNotesAction": "नोट खोलने और कनेक्शन समझने के लिए क्लिक करें।",
"tipEcho": "मेमोरी इको बहुत अलग समय पर लिखे गए दो नोट्स का पता लगाता है जो एक ही विषय को कवर करते हैं।", "tipEcho": "मेमोरी इको बहुत अलग समय पर लिखे गए दो नोट्स का पता लगाता है जो एक ही विषय को कवर करते हैं।",
"tipEchoAction": "दो नोट्स, एक ही विचार, अलग क्षण। एक्सप्लोर करने के लिए क्लिक करें।", "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": "नोट लिखने और तुरंत खोलने के लिए \"ब्रिज नोट बनाएं\" पर क्लिक करें।", "tipSuggestionsAction": "नोट लिखने और तुरंत खोलने के लिए \"ब्रिज नोट बनाएं\" पर क्लिक करें।",
"tipIsolated": "ये थीम अलग-थलग हैं: कोई नोट इन्हें बाकी से नहीं जोड़ता। शायद दृष्टिकोण की कमी है।", "tipIsolated": "ये थीम अलग-थलग हैं: कोई नोट इन्हें बाकी से नहीं जोड़ता। शायद दृष्टिकोण की कमी है।",
"tipIsolatedAction": "इन थीम्स में आपके बाकी विचारों से जोड़ने वाला कोई नोट नहीं है।", "tipIsolatedAction": "इन थीम्स में आपके बाकी विचारों से जोड़ने वाला कोई नोट नहीं है।",
"recalcSystem": { "recalcSystem": {
"title": "पुनर्गणना प्रणाली", "title": "विषय अपडेट",
"statusSynced": "सिंक्रनाइज़्ड", "statusSynced": "अप टू डेट",
"scheduledCron": "अनुसूचित", "scheduledCron": "स्वचालित अपडेट",
"lastSync": "अंतिम सिंक" "lastSync": "आखिरी अपडेट"
}, },
"resetFocus": "फोकस रीसेट करें", "resetFocus": "सब दिखाएँ",
"listView": "सूची", "listView": "सूची",
"graphAriaLabel": "सिमेंटिक नेटवर्क: {clusters} क्लस्टर, {notes} नोट्स, {bridges} ब्रिज नोट्स। तीर कुंजी से नेविगेट करें।", "graphAriaLabel": "विषय मानचित्र: {clusters} विषय, {notes} नोट, {bridges} पुल नोट। सूची में जाकर आसानी से घूमें।",
"listAriaLabel": "नोट्स और ब्रिज कनेक्शन के साथ सुलभ क्लस्टर सूची", "listAriaLabel": "विषय, नोट और पुल नोट की सूची",
"dashboardFilterPlaceholder": "ब्रिज नोट्स, विषय फ़िल्टर करें…", "dashboardFilterPlaceholder": "ब्रिज नोट्स, विषय फ़िल्टर करें…",
"legendFilterPlaceholder": "विषय फ़िल्टर करें…", "legendFilterPlaceholder": "विषय फ़िल्टर करें…",
"legendShowLess": "कम दिखाएं", "legendShowLess": "कम दिखाएं",
@@ -3896,7 +3897,7 @@
"genericError": "आपके इंस्टेंस पर भेजते समय कुछ गलत हुआ।", "genericError": "आपके इंस्टेंस पर भेजते समय कुछ गलत हुआ।",
"ignore": "प्रवीण", "ignore": "प्रवीण",
"processing": "प्रसंस्कित कर रहा है…", "processing": "प्रसंस्कित कर रहा है…",
"processingDetail": "टैग, सिमेंटिक सारांश और एम्बेडिंग उत्पन्न कर रहा है।", "processingDetail": "नोट तैयार हो रहा है: लेबल, सार, अर्थ से खोज।",
"publishedOn": "{domain} पर प्रकाशित", "publishedOn": "{domain} पर प्रकाशित",
"quitSimulator": "सिम्युलेटर बंद करें", "quitSimulator": "सिम्युलेटर बंद करें",
"realtimeCapture": "तारीख: लाइव कैप्चर", "realtimeCapture": "तारीख: लाइव कैप्चर",
@@ -4156,7 +4157,7 @@
"match": "साइन इन करें", "match": "साइन इन करें",
"memoryEchoDisabled": "मेमोरी इको आपकी AI सेटिंग्स में अक्षम है।", "memoryEchoDisabled": "मेमोरी इको आपकी AI सेटिंग्स में अक्षम है।",
"mindMap": "माइंड मैप", "mindMap": "माइंड मैप",
"mindMapEmpty": "अभी तक कोई विषय पहचाना नहीं गया। सिमेंटिक विश्लेषण आपके नोट्स को विषय अनुसार समूहबद्ध करता है।", "mindMapEmpty": "अभी विषय नहीं हैं। AI नोट्स को विषय अनुसार जोड़ता है।",
"mindMapOpen": "इनसाइट मानचित्र खोलें →", "mindMapOpen": "इनसाइट मानचित्र खोलें →",
"mindMapUnavailable": "माइंड मैप अनुपलब्ध।", "mindMapUnavailable": "माइंड मैप अनुपलब्ध।",
"new": "नोट्स बनाए गए", "new": "नोट्स बनाए गए",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "नोट में जोड़ें", "add-link": "नोट में जोड़ें",
"bridge": "ब्रिज विचार", "bridge": "ब्रिज विचार",
"connect": "सिमेंटिक लिंक", "connect": "नोट जोड़ें",
"continue": "जारी रखें", "continue": "जारी रखें",
"daily": "जर्नल", "daily": "जर्नल",
"explore": "विषय खोज", "explore": "विषय खोज",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "आपका द्वितीय मस्तिष्क एक नज़र में: AI सुझाव, त्वरित कैप्चर और अगले कदम। कार्रवाई के लिए नीचे दिए गए शॉर्टकट का उपयोग करें।", "resumeEmptyHint": "आपका द्वितीय मस्तिष्क एक नज़र में: AI सुझाव, त्वरित कैप्चर और अगले कदम। कार्रवाई के लिए नीचे दिए गए शॉर्टकट का उपयोग करें।",
"resumeOpen": "पुनर्ब्यहार", "resumeOpen": "पुनर्ब्यहार",
"review": "समीक्षा", "review": "समीक्षा",
"semanticConnection": "सिमेंटिक आत्मीयता", "semanticConnection": "निकटता",
"sentiment": "भावना", "sentiment": "भावना",
"sentimentDominant": "इस सप्ताह प्रमुख स्वर", "sentimentDominant": "इस सप्ताह प्रमुख स्वर",
"suggestedBridge": "{clusterA} और {clusterB} जोड़ें", "suggestedBridge": "{clusterA} और {clusterB} जोड़ें",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "प्रतिधारण, श्रृंखला, और कुल कार्ड।", "flashcards-progress": "प्रतिधारण, श्रृंखला, और कुल कार्ड।",
"gmail": "Gmail से सिंक किए गए ईमेल कैप्चर।", "gmail": "Gmail से सिंक किए गए ईमेल कैप्चर।",
"inbox": "नोटबुक में दाखिल होने की प्रतीक्षा कर रही नोट्स।", "inbox": "नोटबुक में दाखिल होने की प्रतीक्षा कर रही नोट्स।",
"intelligence": "सिमेंटिक लिंक, ब्रिज विचार और एजेंट खोजें।", "intelligence": "जुड़ने वाले नोट्स, सेतु वाले विचार और एजेंट के परिणाम।",
"link-suggestions": "आपके वर्तमान नोट में लिंक करने के लिए अंश।", "link-suggestions": "आपके वर्तमान नोट में लिंक करने के लिए अंश।",
"mind-map": "थीम क्लस्टर नोट मात्रा के अनुसार बड़े हैं।", "mind-map": "थीम क्लस्टर नोट मात्रा के अनुसार बड़े हैं।",
"next-paths": "AI द्वारा आपके नवीनतम कार्य से सुझाए गए अगले कदम।", "next-paths": "AI द्वारा आपके नवीनतम कार्य से सुझाए गए अगले कदम।",
@@ -4258,7 +4259,7 @@
"resume": "अपने सबसे हाल के नोट्स को जहां छोड़ा था वहीं से जारी रखें।", "resume": "अपने सबसे हाल के नोट्स को जहां छोड़ा था वहीं से जारी रखें।",
"revision": "अंतराल पुनरावृत्ति के लिए देय फ्लैशकार्ड।", "revision": "अंतराल पुनरावृत्ति के लिए देय फ्लैशकार्ड।",
"sentiment": "इस सप्ताह आपके नोट्स का भावनात्मक स्वर।", "sentiment": "इस सप्ताह आपके नोट्स का भावनात्मक स्वर।",
"stats": "क्लस्टर, ब्रिज नोट और कुल अनुक्रमित नोट्स।", "stats": "विषय, सेतु वाले नोट्स और अनुक्रमित नोट्स।",
"usage": "शेष AI क्रेडिट और मासिक सीमाएँ।" "usage": "शेष AI क्रेडिट और मासिक सीमाएँ।"
}, },
"widgetDone": "पूर्ण", "widgetDone": "पूर्ण",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "अधिगम प्रतिधारण दर, समीक्षा श्रृंखला, और कुल कार्ड।", "flashcards-progress": "अधिगम प्रतिधारण दर, समीक्षा श्रृंखला, और कुल कार्ड।",
"gmail": "Gmail एकीकरण से सिंक किए गए ईमेल कैप्चर।", "gmail": "Gmail एकीकरण से सिंक किए गए ईमेल कैप्चर।",
"inbox": "नोटबुक के बिना नोट्स। अपने द्वितीय मस्तिष्क को व्यवस्थित रखने के लिए उन्हें वर्गीकृत करें।", "inbox": "नोटबुक के बिना नोट्स। अपने द्वितीय मस्तिष्क को व्यवस्थित रखने के लिए उन्हें वर्गीकृत करें।",
"intelligence": "AI खोज: नोट्स के बीच अर्थपूर्ण लिंक, ब्रिज विचार और एजेंट निष्कर्ष।", "intelligence": "AI को क्या मिला: जुड़ने वाले नोट्स, सेतु वाले विचार और एजेंट के परिणाम।",
"link-suggestions": "अन्य नोट्स के ऐसे अंश जिन्हें आपके वर्तमान काम से जोड़ना लायक है।", "link-suggestions": "अन्य नोट्स के ऐसे अंश जिन्हें आपके वर्तमान काम से जोड़ना लायक है।",
"mind-map": "थीम क्लस्टर नोट मात्रा के अनुसार बड़े हैं। इनसाइट्स में खोजने के लिए क्लिक करें।", "mind-map": "थीम क्लस्टर नोट मात्रा के अनुसार बड़े हैं। इनसाइट्स में खोजने के लिए क्लिक करें।",
"next-paths": "आपके अंतिम संपादित नोट पर आधारित सुझाए गए अगले कदम: फिर से शुरू करें, लिंक करें, जोड़ें या शोध करें।", "next-paths": "आपके अंतिम संपादित नोट पर आधारित सुझाए गए अगले कदम: फिर से शुरू करें, लिंक करें, जोड़ें या शोध करें।",
@@ -4284,7 +4285,7 @@
"resume": "आपकी हाल ही में अपडेट की गई नोट्स। जहां छोड़ा था वहां से जारी रखें।", "resume": "आपकी हाल ही में अपडेट की गई नोट्स। जहां छोड़ा था वहां से जारी रखें।",
"revision": "आज अंतराल पुनरावृत्ति के लिए देय फ्लैशकार्ड।", "revision": "आज अंतराल पुनरावृत्ति के लिए देय फ्लैशकार्ड।",
"sentiment": "पिछले 7 दिनों में संपादित नोट्स का भावनात्मक स्वर। कम से कम 3 हाल की नोट्स और AI सक्षम होना आवश्यक है।", "sentiment": "पिछले 7 दिनों में संपादित नोट्स का भावनात्मक स्वर। कम से कम 3 हाल की नोट्स और AI सक्षम होना आवश्यक है।",
"stats": "सिमेंटिक इंडेक्स आँकड़े: सक्रिय विषय, ब्रिज नोट्स, कुल अनुक्रमित नोट्स।", "stats": "कितने विषय, सेतु वाले नोट्स और अनुक्रमित नोट्स हैं।",
"usage": "सुविधा के अनुसार मासिक AI क्रेडिट उपयोग।" "usage": "सुविधा के अनुसार मासिक AI क्रेडिट उपयोग।"
}, },
"widgetHelpClose": "बंद करें", "widgetHelpClose": "बंद करें",
@@ -4319,7 +4320,7 @@
"resume": "यहाँ पुनर्ब्यहार", "resume": "यहाँ पुनर्ब्यहार",
"revision": "फ्लैशकार्ड", "revision": "फ्लैशकार्ड",
"sentiment": "भावना", "sentiment": "भावना",
"stats": "सिमेंटिक आँकड़े", "stats": "विषय और नोट्स",
"usage": "AI कोटा" "usage": "AI कोटा"
} }
}, },
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "इसे नीचे के फ़ील्ड में पेस्ट करें और \"कनेक्ट\" पर क्लिक करें। पहला सिंक आपकी सभी पुस्तकें और लेख आयात करेगा।", "readwiseHelpStep2": "इसे नीचे के फ़ील्ड में पेस्ट करें और \"कनेक्ट\" पर क्लिक करें। पहला सिंक आपकी सभी पुस्तकें और लेख आयात करेगा।",
"readwiseHelpStep3": "प्रत्येक पुस्तक «Readwise 📚» नोटबुक में एक नोट बन जाती है — आपके सभी हाइलाइट्स व्यवस्थित हैं।", "readwiseHelpStep3": "प्रत्येक पुस्तक «Readwise 📚» नोटबुक में एक नोट बन जाती है — आपके सभी हाइलाइट्स व्यवस्थित हैं।",
"readwiseHelpStep4": "नई हाइलाइट अपडेट करने के लिए, यहां वापस आएं और \"अभी सिंक करें\" पर क्लिक करें।", "readwiseHelpStep4": "नई हाइलाइट अपडेट करने के लिए, यहां वापस आएं और \"अभी सिंक करें\" पर क्लिक करें।",
"readwiseHelpStep5": "💡 सुझाव: Readwise नोट से AI फ्लैशकार्ड बनाएं (एडिटर में 🎓 बटन) अपनी रीडिंग की समीक्षा करें।", "readwiseHelpStep5": "सुझाव: Readwise नोट से समीक्षा कार्ड बनाएं (नोट के ऊपर कार्ड बटन) अपनी रीडिंग की समीक्षा करें।",
"readwiseInfo": "Readwise कैसे काम करता है?", "readwiseInfo": "Readwise कैसे काम करता है?",
"readwiseSynced": "Readwise सिंक — {{created}} बनाई गईं, {{updated}} अद्यतन", "readwiseSynced": "Readwise सिंक — {{created}} बनाई गईं, {{updated}} अद्यतन",
"readwiseTokenPlaceholder": "Readwise टोकन…", "readwiseTokenPlaceholder": "Readwise टोकन…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "रूपांतरण पूर्ण! लिंक किया गया नोटबुक बनाया गया।", "convertSuccess": "रूपांतरण पूर्ण! लिंक किया गया नोटबुक बनाया गया।",
"convertToNotebook": "नोटबुक में बदलें", "convertToNotebook": "नोटबुक में बदलें",
"converting": "रूपांतरित कर रहा है…", "converting": "रूपांतरित कर रहा है…",
"createLocalDb": "स्टैंडअलोन लोकल डेटाबेस बनाए", "createLocalDb": "इस नोट में तालिका बनाए",
"createNotebook": "नोटबुक बनाएं", "createNotebook": "नोटबुक बनाएं",
"defaultOption1": "विकल्प 1", "defaultOption1": "विकल्प 1",
"defaultOption2": "विकल्प 2", "defaultOption2": "विकल्प 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "पुराना ब्लॉक हटाया गया।", "deprecatedBlock": "पुराना ब्लॉक हटाया गया।",
"displayModeGallery": "गैलरी", "displayModeGallery": "गैलरी",
"displayModeTable": "मेज़", "displayModeTable": "मेज़",
"echoLoading": "सिमेंटिक कनेक्शन खोज रह है...", "echoLoading": "पास के नोट्स खोज रह हैं…",
"echoNameRequired": "सिमेंटिक कनेक्शन खोजने के लिए पहले इस पंक्ति का नाम दर्ज करें।", "echoNameRequired": "पास के नोट्स खोजने के लिए पहले इस पंक्ति का नाम लिखें।",
"echoNoMatch": "आपके कार्यक्षेत्र में \"{{query}}\" वाली कोई नोट्स नहीं मिलीं।", "echoNoMatch": "आपके कार्यक्षेत्र में \"{{query}}\" वाली कोई नोट्स नहीं मिलीं।",
"echoPopoverTitle": "सिमेंटिक अनुनाद 🔮", "echoPopoverTitle": "पास के नोट",
"echoSearchError": "खोजते समय त्रुटि हुई।", "echoSearchError": "खोजते समय त्रुटि हुई।",
"echoUpgradeText": "Memento के तंत्रिका विश्लेषण को सक्रिय करने के लिए इस तालिका क नोटबुक में बदलें।", "echoUpgradeText": "इस तालिका को नोटबुक बनाएँ ताकि Memento पास नोट खोज सके।",
"emptyTable": "तालिका में कोई पंक्ति नहीं।", "emptyTable": "तालिका में कोई पंक्ति नहीं।",
"insertCitation": "संपादक में लिंक सम्मिलित करें", "insertCitation": "संपादक में लिंक सम्मिलित करें",
"insertDesc": "अपने नोटबुक के संरचित डेटा को एम्बेड करें", "insertDesc": "अपने नोटबुक के संरचित डेटा को एम्बेड करें",
@@ -4514,9 +4515,9 @@
"keywordMatch": "कीवर्ड", "keywordMatch": "कीवर्ड",
"linkToNotebook": "नोटबुक से लिंक", "linkToNotebook": "नोटबुक से लिंक",
"loadError": "संरचित डेटा लोड करने में त्रुटि।", "loadError": "संरचित डेटा लोड करने में त्रुटि।",
"localDbTitle": "स्टैंडअलोन डेटाबेस", "localDbTitle": "इस नोट की तालिका",
"namePlaceholder": "नाम दर्ज करें…", "namePlaceholder": "नाम दर्ज करें…",
"noEchoFound": "कोई सिमेंटिक कनेक्शन नहीं पाया गया।", "noEchoFound": "कोई पास का नोट नहीं मिला।",
"noNotebook": "इस ब्लॉक को नोटबुक चाहिए। पहले इस नोट को नोटबुक में ले जाएं।", "noNotebook": "इस ब्लॉक को नोटबुक चाहिए। पहले इस नोट को नोटबुक में ले जाएं।",
"noNotebookDesc": "यह ब्लॉक नोटबुक का संरचित दृश्य दिखाता है। लिंक करने के लिए नोटबुक चुनें:", "noNotebookDesc": "यह ब्लॉक नोटबुक का संरचित दृश्य दिखाता है। लिंक करने के लिए नोटबुक चुनें:",
"noSchema": "इस नोटबुक में अभी तक संरचित दृश्य नहीं है। इसे नोटबुक हेडर से सेट करें।", "noSchema": "इस नोटबुक में अभी तक संरचित दृश्य नहीं है। इसे नोटबुक हेडर से सेट करें।",
@@ -4528,8 +4529,8 @@
"selectNotebook": "नोटबुक से लिंक", "selectNotebook": "नोटबुक से लिंक",
"selectOptionsPlaceholder": "कॉमा से अलग किए गए विकल्प", "selectOptionsPlaceholder": "कॉमा से अलग किए गए विकल्प",
"semanticEcho": "सिमेंटिक अनुनाद", "semanticEcho": "सिमेंटिक अनुनाद",
"switchToLocalDb": "स्थानीय डेटाबेस पर स्विच करें", "switchToLocalDb": "इस नोट की तालिका पर वापस जाएँ",
"turnIntoLabel": "इनलाइन डेटाबेस", "turnIntoLabel": "नोट में तालिका",
"untitled": "बिना शीर्षक" "untitled": "बिना शीर्षक"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "एक नोट खोजें…", "relationSearch": "एक नोट खोजें…",
"selectOptions": "विकल्प (प्रति पंक्ति एक)", "selectOptions": "विकल्प (प्रति पंक्ति एक)",
"selectOptionsPlaceholder": "करने के लिए\\\nप्रगति में\\\nपूर्ण", "selectOptionsPlaceholder": "करने के लिए\\\nप्रगति में\\\nपूर्ण",
"semanticResonances": "सिमेंटिक अनुनाद", "semanticResonances": "जुड़ने वाले नोट्स",
"tagApplied": "सेतु", "tagApplied": "सेतु",
"viewCalendarHint": "कैलेंडर — तारीख अनुसार व्यवस्थित नोट्स", "viewCalendarHint": "कैलेंडर — तारीख अनुसार व्यवस्थित नोट्स",
"viewGallery": "गैलरी", "viewGallery": "गैलरी",

View File

@@ -407,7 +407,7 @@
"placeholder": "Cerca", "placeholder": "Cerca",
"searchPlaceholder": "Cerca nelle tue note...", "searchPlaceholder": "Cerca nelle tue note...",
"semanticInProgress": "Ricerca AI in corso...", "semanticInProgress": "Ricerca AI in corso...",
"semanticTooltip": "Ricerca semantica AI", "semanticTooltip": "Ricerca per il senso",
"searching": "Ricerca in corso...", "searching": "Ricerca in corso...",
"noResults": "Nessun risultato trovato", "noResults": "Nessun risultato trovato",
"resultsFound": "{count} note trovate", "resultsFound": "{count} note trovate",
@@ -861,7 +861,7 @@
"compareAll": "Confronta tutto", "compareAll": "Confronta tutto",
"mergeAll": "Unisci tutto", "mergeAll": "Unisci tutto",
"close": "Chiudi", "close": "Chiudi",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % di vicinanza",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo", "badgeLabel": "Memory Echo",
"bottomCueConsent": "Connessioni IA disponibili sotto", "bottomCueConsent": "Connessioni IA disponibili sotto",
@@ -918,7 +918,7 @@
"noContentReturned": "Nessun contenuto di fusione restituito dall'API", "noContentReturned": "Nessun contenuto di fusione restituito dall'API",
"unknownDate": "Data sconosciuta" "unknownDate": "Data sconosciuta"
}, },
"defaultInsight": "Queste note sembrano essere correlate semanticamente.", "defaultInsight": "Queste note stanno insieme.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "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", "cleanupError": "Impossibile pulire le etichette",
"indexingComplete": "Indicizzazione completata: {count} nota/e elaborata/e", "indexingComplete": "Indicizzazione completata: {count} nota/e elaborata/e",
"indexingError": "Errore durante l'indicizzazione", "indexingError": "Errore durante l'indicizzazione",
"semanticIndexing": "Indicizzazione semantica", "semanticIndexing": "Indice per la ricerca per il senso",
"semanticIndexingDescription": "Genera vettori per tutte le note per abilitare la ricerca basata su intento", "semanticIndexingDescription": "Preparare tutte le note per la ricerca per il senso",
"profile": "Profilo", "profile": "Profilo",
"searchNoResults": "Nessun risultato trovato", "searchNoResults": "Nessun risultato trovato",
"languageAuto": "Lingua impostata su Automatico", "languageAuto": "Lingua impostata su Automatico",
@@ -1664,7 +1664,7 @@
"title": "Funzioni", "title": "Funzioni",
"description": "Funzioni basate sull'IA", "description": "Funzioni basate sull'IA",
"titleSuggestions": "Suggerimenti di titoli basati sull'IA", "titleSuggestions": "Suggerimenti di titoli basati sull'IA",
"semanticSearch": "Ricerca semantica con embedding", "semanticSearch": "Ricerca per il senso",
"paragraphReformulation": "Riformulazione dei paragrafi", "paragraphReformulation": "Riformulazione dei paragrafi",
"memoryEcho": "Approfondimenti giornalieri di Memory Echo", "memoryEcho": "Approfondimenti giornalieri di Memory Echo",
"notebookOrganization": "Organizzazione dei quaderni", "notebookOrganization": "Organizzazione dei quaderni",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "Ricostruisci indice di ricerca", "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", "button": "Ricostruisci indice",
"success": "Indicizzazione completata: {count} note elaborate", "success": "Indicizzazione completata: {count} note elaborate",
"failed": "Errore durante l'indicizzazione" "failed": "Errore durante l'indicizzazione"
@@ -1984,7 +1984,7 @@
"legendWiki": "Collega a una nota", "legendWiki": "Collega a una nota",
"mentionShort": "Menzione", "mentionShort": "Menzione",
"moreNodes": "+{count} sulla mappa", "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.", "noOutbound": "Questa nota non collega ancora altre note.",
"noWikiYet": "Nessun link ad altre note ancora.", "noWikiYet": "Nessun link ad altre note ancora.",
"outboundHelp": "Note a cui questa linka usando [[…]] nel suo testo.", "outboundHelp": "Note a cui questa linka usando [[…]] nel suo testo.",
@@ -2190,7 +2190,7 @@
"custom": "Personalizzato" "custom": "Personalizzato"
}, },
"typeDescriptions": { "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", "researcher": "Cerca informazioni su un argomento",
"monitor": "Osserva un quaderno e analizza le note", "monitor": "Osserva un quaderno e analizza le note",
"slideGenerator": "Crea una presentazione PowerPoint dalle note", "slideGenerator": "Crea una presentazione PowerPoint dalle note",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "es. Martedì Watch IA", "namePlaceholder": "es. Martedì Watch IA",
"description": "Descrizione (opzionale)", "description": "Descrizione (opzionale)",
"descriptionPlaceholder": "Riepilogo settimanale delle notizie sull'IA", "descriptionPlaceholder": "Riepilogo settimanale delle notizie sull'IA",
"urlsLabel": "URL da estrarre", "urlsLabel": "Indirizzi delle pagine da leggere",
"urlsOptional": "(opzionale)", "urlsOptional": "(opzionale)",
"sourceNotebook": "Quaderno da osservare", "sourceNotebook": "Quaderno da osservare",
"selectNotebook": "Seleziona un quaderno...", "selectNotebook": "Seleziona un quaderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notifica email", "notifyEmail": "Notifica email",
"notifyEmailHint": "Ricevi un'email con i risultati dell'agent dopo ogni esecuzione", "notifyEmailHint": "Ricevi un'email con i risultati dell'agent dopo ogni esecuzione",
"includeImages": "Includi immagini", "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", "back": "Indietro",
"configuration": "Configurazione", "configuration": "Configurazione",
"options": "Opzioni", "options": "Opzioni",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Watch IA", "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": { "veilleTech": {
"name": "Watch Tech", "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": { "veilleDev": {
"name": "Watch Dev", "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": { "surveillant": {
"name": "Osservatore di note", "name": "Osservatore di note",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Strumenti Agente", "title": "Strumenti Agente",
"webSearch": "Ricerca Web", "webSearch": "Ricerca Web",
"webScrape": "Scraping Web", "webScrape": "Lettura di pagine",
"noteSearch": "Cerca Note", "noteSearch": "Cerca Note",
"noteRead": "Leggi Nota", "noteRead": "Leggi Nota",
"noteCreate": "Crea Nota", "noteCreate": "Crea Nota",
@@ -2431,15 +2431,15 @@
"btnLabel": "Aiuto", "btnLabel": "Aiuto",
"close": "Chiudi", "close": "Chiudi",
"whatIsAgent": "Cos'è un agente?", "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?", "howToUse": "Come usare un agente?",
"howToUseContent": "1. Fai clic su **\"Nuovo agente\"** (oppure inizia da un **Modello** in fondo alla pagina).", "howToUseContent": "1. Fai clic su **\"Nuovo agente\"** (oppure inizia da un **Modello** in fondo alla pagina).",
"types": "Tipi di agenti", "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)", "advanced": "Modalità avanzata (Istruzioni IA, Iterazioni max)",
"advancedContent": "Fai clic su **\"Modalità avanzata\"** in fondo al modulo per accedere a impostazioni aggiuntive.", "advancedContent": "Fai clic su **\"Modalità avanzata\"** in fondo al modulo per accedere a impostazioni aggiuntive.",
"tools": "Strumenti disponibili (dettaglio)", "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", "frequency": "Frequenza e pianificazione",
"frequencyContent": "| Frequenza | Comportamento\n|-----------|----------\n| **Manuale** | Fai clic su \"Esegui\".", "frequencyContent": "| Frequenza | Comportamento\n|-----------|----------\n| **Manuale** | Fai clic su \"Esegui\".",
"targetNotebook": "Quaderno di destinazione", "targetNotebook": "Quaderno di destinazione",
@@ -2447,7 +2447,7 @@
"templates": "Modelli", "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.", "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", "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": { "tooltips": {
"agentType": "Scegli il tipo di attività che l'agente svolgerà. Ogni tipo ha capacità e campi diversi.", "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.", "researchTopic": "L'argomento che l'agente cercherà sul web. Sii specifico per risultati migliori.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Passa a Pro", "upgradeTitle": "Passa a Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro include:", "proIncludes": "Pro include:",
"proSearch": "100 semantic searches / month", "proSearch": "1.000 crediti IA / mese",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Generazione diagramma", "featureDiagrams": "Generazione diagramma",
"featureFlashcards": "Flashcard IA", "featureFlashcards": "Schede di ripasso",
"featurePublishEnhance": "Pubblicazione IA", "featurePublishEnhance": "Pubblicazione IA",
"featureSlides": "Generazione di diapositive", "featureSlides": "Generazione di diapositive",
"featureVoice": "Trascrizione vocale", "featureVoice": "Trascrizione vocale",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 riformulazioni / mese", "businessFeature3": "500 riformulazioni / mese",
"businessFeature4": "1.000 messaggi chat / mese", "businessFeature4": "1.000 messaggi chat / mese",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "Quote personalizzate, SSO, supporto prioritario.", "enterpriseDescription": "Quote personalizzate, accesso unico per il team, supporto prioritario.",
"contactSales": "Contatta le vendite", "contactSales": "Contatta le vendite",
"startCheckout": "Inizia", "startCheckout": "Inizia",
"checkoutLoading": "Caricamento pagamento…", "checkoutLoading": "Caricamento pagamento…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Il tuo abbonamento si rinnova automaticamente.", "paidPlanDesc": "Il tuo abbonamento si rinnova automaticamente.",
"businessDescription": "Per team e responsabili di prodotto.", "businessDescription": "Per team e responsabili di prodotto.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Accesso unico per tutto il team",
"enterpriseFeature3": "Supporto dedicato", "enterpriseFeature3": "Supporto dedicato",
"enterpriseFeature4": "Fatturazione personalizzata", "enterpriseFeature4": "Fatturazione personalizzata",
"enterpriseFeature5": "SLA garantito", "enterpriseFeature5": "Tempo di risposta garantito",
"subtitle": "Scegli il piano che fa per te", "subtitle": "Scegli il piano che fa per te",
"freeDescription": "Per scoprire Memento", "freeDescription": "Per scoprire Memento",
"freeF1": "30 ricerche semantiche", "freeF1": "30 ricerche semantiche",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Impossibile recuperare lo stato della fatturazione", "fetchStatusFailed": "Impossibile recuperare lo stato della fatturazione",
"fetchQuotasFailed": "Impossibile recuperare le quote", "fetchQuotasFailed": "Impossibile recuperare le quote",
"fetchInvoicesFailed": "Impossibile caricare lo storico delle fatture.", "fetchInvoicesFailed": "Impossibile caricare lo storico delle fatture.",
"savePercent": "Risparmia ~17%", "savePercent": "Risparmia ~{percent} %",
"billedYearTotal": "cioè {price} allanno",
"cancelSubscription": "Annulla abbonamento", "cancelSubscription": "Annulla abbonamento",
"changeOffer": "Cambia offerta", "changeOffer": "Cambia offerta",
"downgradeToFree": "Torna allofferta gratuita", "downgradeToFree": "Torna allofferta gratuita",
@@ -3379,13 +3380,13 @@
"cta": "Parliamone", "cta": "Parliamone",
"feature0": "Tutto Business", "feature0": "Tutto Business",
"feature1": "Agenti illimitati", "feature1": "Agenti illimitati",
"feature2": "SSO / SAML", "feature2": "Accesso unico per tutto il team",
"feature3": "Audit log e SLA", "feature3": "Registro attività e tempo di risposta garantito",
"feature4": "Supporto dedicato", "feature4": "Supporto dedicato",
"feature5": "Onboarding live" "feature5": "Accompagnamento allinstallazione"
}, },
"basicPrice": "Gratis", "basicPrice": "Gratis",
"savePercent": "Risparmia ~17%", "savePercent": "Risparmia ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Elimina definitivamente e irreversibilmente il tuo account e tutti i dati associati.", "sectionDescription": "Elimina definitivamente e irreversibilmente il tuo account e tutti i dati associati.",
"whatWillBeDeleted": "Quanto segue verrà eliminato definitivamente:", "whatWillBeDeleted": "Quanto segue verrà eliminato definitivamente:",
"item1": "Tutte le note, i quaderni e gli allegati", "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", "item3": "Tutte le chiavi API BYOK",
"item4": "Tutte le conversazioni IA e sessioni di brainstorm", "item4": "Tutte le conversazioni IA e sessioni di brainstorm",
"item5": "Cronologia quote e utilizzo", "item5": "Cronologia quote e utilizzo",
@@ -3559,7 +3560,7 @@
"step_features_title": "I tuoi superpoteri IA", "step_features_title": "I tuoi superpoteri IA",
"step_features_subtitle": "Scegli da dove iniziare.", "step_features_subtitle": "Scegli da dove iniziare.",
"step_features_cta": "Andiamo!", "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_search_desc": "Trova qualsiasi nota per significato, non solo per parole chiave.",
"feature_flashcards_title": "Flashcard IA", "feature_flashcards_title": "Flashcard IA",
"feature_flashcards_desc": "Genera schede di ripasso dalle tue note in un clic.", "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_deepen_desc": "Fai clic su una scheda idea per espanderla con sotto-idee ed esplorarla.",
"hint_brainstorm_export_title": "Esporta sessione", "hint_brainstorm_export_title": "Esporta sessione",
"hint_brainstorm_export_desc": "Esporta l'intera sessione di brainstorming come nota strutturata nel carnet scelto.", "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_title": "Temi delle note",
"hint_insights_clusters_desc": "Le tue note sono automaticamente raggruppate in cluster tematici. Fai clic per i dettagli.", "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_title": "Note ponte",
"hint_insights_bridge_desc": "Le note ponte collegano più cluster e sono evidenziate perché contengono collegamenti importanti.", "hint_insights_bridge_desc": "Le note ponte collegano più temi. Mostrano dove le idee si incrociano.",
"hint_insights_refresh_title": "Aggiorna cluster", "hint_insights_refresh_title": "Aggiorna i temi",
"hint_insights_refresh_desc": "Se hai aggiunto nuove note, fai clic su \"Aggiorna\" per ricalcolare i cluster." "hint_insights_refresh_desc": "Se hai aggiunto note, fai clic su «Aggiorna» per ricalcolare i temi."
}, },
"blockAction": { "blockAction": {
"moveUp": "Sposta blocco su", "moveUp": "Sposta blocco su",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "Connessioni", "title": "Connessioni",
"toggleMenu": "Mostra o nascondi il menu", "toggleMenu": "Mostra o nascondi il menu",
"subtitle": "Scopri l'architettura nascosta della tua conoscenza", "subtitle": "Vedi come le tue note si collegano",
"resync": "Aggiorna", "resync": "Aggiorna",
"mapping": "Mappatura…", "mapping": "Mappatura…",
"loading": "Caricamento delle note…", "loading": "Caricamento delle note…",
"mappingTitle": "Mappatura della tua conoscenza…", "mappingTitle": "Mappatura della tua conoscenza…",
"mappingHint": "Può richiedere da uno a tre minuti. Puoi continuare a navigare; la pagina si aggiornerà automaticamente.", "mappingHint": "Può richiedere da uno a tre minuti. Puoi continuare a navigare; la pagina si aggiornerà automaticamente.",
"analyzeNow": "Avvia analisi semantica", "analyzeNow": "Aggiorna i temi",
"emptyNeedMoreNotes": "Aggiungi altre {count} note per sbloccare il clustering semantico (minimo 10).", "emptyNeedMoreNotes": "Aggiungi altre {count} note per raggruppare i temi (minimo 10).",
"embeddingsHint": "Solo {indexed} di {total} note indicizzate per IA.", "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.", "vsGraphHint": "Non è la \"Mappa dei link\": qui l'IA raggruppa per significato, non per link.",
"openGraphMap": "Apri mappa link", "openGraphMap": "Apri mappa link",
"analysisFailed": "Analisi fallita. Controlla le impostazioni IA.", "analysisFailed": "Analisi fallita. Controlla le impostazioni IA.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "note", "graphNotesLabel": "note",
"clusterFallback": "Tema {index}", "clusterFallback": "Tema {index}",
"unclusteredNotes": "{count} note non assegnate ad alcun tema (nascoste dal grafico).", "unclusteredNotes": "{count} note non assegnate ad alcun tema (nascoste dal grafico).",
"emptyTitle": "Scopri i tuoi cluster di conoscenza", "emptyTitle": "Scopri i tuoi temi",
"emptyDescription": "Fai clic su \"Risincronizza rete\" per analizzare le tue note e trovare connessioni nascoste", "emptyDescription": "Fai clic su «Aggiorna» per raggruppare le tue note per temi.",
"stats": { "stats": {
"clusters": "Cluster", "clusters": "Cluster",
"bridgeNotes": "Note ponte", "bridgeNotes": "Note ponte",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "Cluster semantici", "title": "Temi",
"notesCount": "{count} note", "notesCount": "{count} note",
"centralNotes": "Note centrali", "centralNotes": "Note centrali",
"emptyCluster": "Nessuna nota in questo cluster" "emptyCluster": "Nessuna nota in questo tema"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Affinità {score}%", "affinity": "Affinità {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "Risincronizza la rete per aggiornare le coppie ponte.", "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": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Grafo", "viewGraph": "Grafo",
"viewDashboard": "Pannello", "viewDashboard": "Pannello",
"isolatedClusters": { "isolatedClusters": {
"title": "Cluster isolati ({count})", "title": "Temi isolati ({count})",
"badge": "Non connesso", "badge": "Non connesso",
"empty": "Tutti i cluster sono interconnessi!" "empty": "Tutti i temi sono già collegati da almeno una nota ponte."
}, },
"focusCluster": { "focusCluster": {
"title": "Focus cluster attivo", "title": "Tema aperto",
"description": "Questo cluster tematico raccoglie {count} note complementari. Fai clic su una nota peraprirla.", "description": "Questo tema riunisce {count} note. Fai clic su una nota per aprirla.",
"close": "Chiudi" "close": "Chiudi"
}, },
"badgeDominant": "Dominante", "badgeDominant": "Dominante",
"bridgeCount": "ponte/i", "bridgeCount": "ponte/i",
"echoTitle": "Continui a tornare a questa idea", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "tipIsolatedAction": "Questi temi non hanno note che li collegano al resto del tuo pensiero.",
"recalcSystem": { "recalcSystem": {
"title": "Sistema di ricalcolo", "title": "Aggiornamento dei temi",
"statusSynced": "Sincronizzato", "statusSynced": "Aggiornato",
"scheduledCron": "Programmato", "scheduledCron": "Aggiornamento automatico",
"lastSync": "Ultima sync" "lastSync": "Ultimo aggiornamento"
}, },
"resetFocus": "Reimposta focus", "resetFocus": "Mostra tutto",
"listView": "Elenco", "listView": "Elenco",
"graphAriaLabel": "Rete semantica: {clusters} cluster, {notes} note, {bridges} note ponte. Usa le frecce.", "graphAriaLabel": "Mappa dei temi: {clusters} temi, {notes} note, {bridges} note ponte. Passa alla vista Elenco per navigare più facilmente.",
"listAriaLabel": "Elenco cluster accessibile con note e connessioni ponte", "listAriaLabel": "Elenco di temi, note e note ponte",
"dashboardFilterPlaceholder": "Filtra note ponte, temi…", "dashboardFilterPlaceholder": "Filtra note ponte, temi…",
"legendFilterPlaceholder": "Filtra temi…", "legendFilterPlaceholder": "Filtra temi…",
"legendShowLess": "Mostra meno", "legendShowLess": "Mostra meno",
@@ -3896,7 +3897,7 @@
"genericError": "Si è verificato un errore durante l'invio alla tua istanza.", "genericError": "Si è verificato un errore durante l'invio alla tua istanza.",
"ignore": "padroneggiato", "ignore": "padroneggiato",
"processing": "Elaborazione…", "processing": "Elaborazione…",
"processingDetail": "Generazione tag, riepilogo semantico ed embedding.", "processingDetail": "Preparazione della nota: etichette, riassunto, ricerca per il senso.",
"publishedOn": "Pubblicato su {domain}", "publishedOn": "Pubblicato su {domain}",
"quitSimulator": "Chiudi simulatore", "quitSimulator": "Chiudi simulatore",
"realtimeCapture": "Data: acquisizione live", "realtimeCapture": "Data: acquisizione live",
@@ -4156,7 +4157,7 @@
"match": "Accedi", "match": "Accedi",
"memoryEchoDisabled": "Memory Echo è disabilitato nelle tue impostazioni IA.", "memoryEchoDisabled": "Memory Echo è disabilitato nelle tue impostazioni IA.",
"mindMap": "Mappa mentale", "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 →", "mindMapOpen": "Apri mappa insight →",
"mindMapUnavailable": "Mappa mentale non disponibile.", "mindMapUnavailable": "Mappa mentale non disponibile.",
"new": "note create", "new": "note create",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "Aggiungi alla nota", "add-link": "Aggiungi alla nota",
"bridge": "Idea ponte", "bridge": "Idea ponte",
"connect": "Link semantico", "connect": "Collega una nota",
"continue": "Continua", "continue": "Continua",
"daily": "Diario", "daily": "Diario",
"explore": "Esplora tema", "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.", "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", "resumeOpen": "Riprendi",
"review": "Rivedi", "review": "Rivedi",
"semanticConnection": "Affinità semantica", "semanticConnection": "Vicinanza",
"sentiment": "Sentimento", "sentiment": "Sentimento",
"sentimentDominant": "Tono dominante questa settimana", "sentimentDominant": "Tono dominante questa settimana",
"suggestedBridge": "Collega {clusterA} & {clusterB}", "suggestedBridge": "Collega {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Ritenzione, serie e totale carte.", "flashcards-progress": "Ritenzione, serie e totale carte.",
"gmail": "Acquisizioni email sincronizzate da Gmail.", "gmail": "Acquisizioni email sincronizzate da Gmail.",
"inbox": "Note in attesa di essere archiviate nei quaderni.", "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.", "link-suggestions": "Passaggi da collegare nella tua nota attuale.",
"mind-map": "Cluster di temi dimensionati in base al volume di note.", "mind-map": "Cluster di temi dimensionati in base al volume di note.",
"next-paths": "Prossimi passi suggeriti dall'IA dal tuo lavoro più recente.", "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.", "resume": "Riprendi le tue note più recenti da dove le hai lasciate.",
"revision": "Flashcard in scadenza per la ripasso con ripetizione dilazionata.", "revision": "Flashcard in scadenza per la ripasso con ripetizione dilazionata.",
"sentiment": "Tono emotivo delle tue note di questa settimana.", "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." "usage": "Crediti IA rimanenti e limiti mensili."
}, },
"widgetDone": "Fatto", "widgetDone": "Fatto",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Tasso di ritenzione dell'apprendimento, serie di revisione e totale delle carte.", "flashcards-progress": "Tasso di ritenzione dell'apprendimento, serie di revisione e totale delle carte.",
"gmail": "Acquisizioni email sincronizzate dall'integrazione Gmail.", "gmail": "Acquisizioni email sincronizzate dall'integrazione Gmail.",
"inbox": "Note senza quaderno. Archiviale per mantenere il tuo secondo cervello in ordine.", "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.", "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.", "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.", "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.", "resume": "Le tue note aggiornate più di recente. Riprendi da dove avevi lasciato.",
"revision": "Flashcard in scadenza oggi per ripasso con ripetizione dilazionata.", "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.", "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." "usage": "Utilizzo mensile crediti IA per funzione."
}, },
"widgetHelpClose": "Chiudi", "widgetHelpClose": "Chiudi",
@@ -4319,7 +4320,7 @@
"resume": "Riprendi qui", "resume": "Riprendi qui",
"revision": "Flashcard", "revision": "Flashcard",
"sentiment": "Sentimento", "sentiment": "Sentimento",
"stats": "Statistiche semantiche", "stats": "Temi e note",
"usage": "Quota IA" "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.", "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.", "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\".", "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?", "readwiseInfo": "Come funziona Readwise?",
"readwiseSynced": "Sincronizzazione Readwise — {{created}} create, {{updated}} aggiornate", "readwiseSynced": "Sincronizzazione Readwise — {{created}} create, {{updated}} aggiornate",
"readwiseTokenPlaceholder": "Token Readwise…", "readwiseTokenPlaceholder": "Token Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversione completata! Quaderno collegato creato.", "convertSuccess": "Conversione completata! Quaderno collegato creato.",
"convertToNotebook": "Converti in quaderno", "convertToNotebook": "Converti in quaderno",
"converting": "Conversione…", "converting": "Conversione…",
"createLocalDb": "Crea un database locale autonomo", "createLocalDb": "Crea una tabella in questa nota",
"createNotebook": "Crea notebook", "createNotebook": "Crea notebook",
"defaultOption1": "Opzione 1", "defaultOption1": "Opzione 1",
"defaultOption2": "Opzione 2", "defaultOption2": "Opzione 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Blocco obsoleto rimosso.", "deprecatedBlock": "Blocco obsoleto rimosso.",
"displayModeGallery": "Galleria", "displayModeGallery": "Galleria",
"displayModeTable": "Tavolo", "displayModeTable": "Tavolo",
"echoLoading": "Ricerca di connessioni semantiche...", "echoLoading": "Ricerca di note vicine…",
"echoNameRequired": "Inserisci prima un nome per questa riga per cercare connessioni semantiche.", "echoNameRequired": "Inserisci prima un nome per questa riga, per cercare note vicine.",
"echoNoMatch": "Nessuna nota contenente «{{query}}» trovata nel tuo spazio.", "echoNoMatch": "Nessuna nota contenente «{{query}}» trovata nel tuo spazio.",
"echoPopoverTitle": "Risonanze semantiche 🔮", "echoPopoverTitle": "Note vicine",
"echoSearchError": "Si è verificato un errore durante la ricerca.", "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.", "emptyTable": "Nessuna riga nella tabella.",
"insertCitation": "Inserisci link nell'editor", "insertCitation": "Inserisci link nell'editor",
"insertDesc": "Incorpora i dati strutturati del tuo quaderno", "insertDesc": "Incorpora i dati strutturati del tuo quaderno",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Parola chiave", "keywordMatch": "Parola chiave",
"linkToNotebook": "Collega a un quaderno", "linkToNotebook": "Collega a un quaderno",
"loadError": "Errore nel caricamento dei dati strutturati.", "loadError": "Errore nel caricamento dei dati strutturati.",
"localDbTitle": "Database autonomo", "localDbTitle": "Tabella in questa nota",
"namePlaceholder": "Inserisci un nome…", "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.", "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:", "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.", "noSchema": "Questo quaderno non ha ancora una vista strutturata. Configurala dall'intestazione del quaderno.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Collega a un quaderno", "selectNotebook": "Collega a un quaderno",
"selectOptionsPlaceholder": "Opzioni separate da virgole", "selectOptionsPlaceholder": "Opzioni separate da virgole",
"semanticEcho": "Risonanze semantiche", "semanticEcho": "Risonanze semantiche",
"switchToLocalDb": "Passa a database locale", "switchToLocalDb": "Torna alla tabella di questa nota",
"turnIntoLabel": "Database inline", "turnIntoLabel": "Tabella nella nota",
"untitled": "Senza titolo" "untitled": "Senza titolo"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Cerca una nota…", "relationSearch": "Cerca una nota…",
"selectOptions": "Opzioni (una per riga)", "selectOptions": "Opzioni (una per riga)",
"selectOptionsPlaceholder": "Da fare\\\nIn corso\\\nFatto", "selectOptionsPlaceholder": "Da fare\\\nIn corso\\\nFatto",
"semanticResonances": "Risonanze semantiche", "semanticResonances": "Note che si incontrano",
"tagApplied": "ponti", "tagApplied": "ponti",
"viewCalendarHint": "Calendario — le tue note organizzate per data", "viewCalendarHint": "Calendario — le tue note organizzate per data",
"viewGallery": "Galleria", "viewGallery": "Galleria",

View File

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

View File

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

View File

@@ -407,7 +407,7 @@
"placeholder": "Zoeken", "placeholder": "Zoeken",
"searchPlaceholder": "Doorzoek uw notities...", "searchPlaceholder": "Doorzoek uw notities...",
"semanticInProgress": "AI-zoeken bezig...", "semanticInProgress": "AI-zoeken bezig...",
"semanticTooltip": "AI semantisch zoeken", "semanticTooltip": "Zoeken op betekenis",
"searching": "Zoeken...", "searching": "Zoeken...",
"noResults": "Geen resultaten gevonden", "noResults": "Geen resultaten gevonden",
"resultsFound": "{count} notities gevonden", "resultsFound": "{count} notities gevonden",
@@ -861,7 +861,7 @@
"compareAll": "Alles vergelijken", "compareAll": "Alles vergelijken",
"mergeAll": "Alles samenvoegen", "mergeAll": "Alles samenvoegen",
"close": "Sluiten", "close": "Sluiten",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % nabijheid",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo", "badgeLabel": "Memory Echo",
"bottomCueConsent": "AI-verbindingen hieronder beschikbaar", "bottomCueConsent": "AI-verbindingen hieronder beschikbaar",
@@ -918,7 +918,7 @@
"noContentReturned": "Geen fusie-inhoud ontvangen van API", "noContentReturned": "Geen fusie-inhoud ontvangen van API",
"unknownDate": "Onbekende datum" "unknownDate": "Onbekende datum"
}, },
"defaultInsight": "Deze notities lijken semantisch verwant te zijn.", "defaultInsight": "Deze notities horen bij elkaar.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "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", "cleanupError": "Kan labels niet opruimen",
"indexingComplete": "Indexering voltooid: {count} notitie(s) verwerkt", "indexingComplete": "Indexering voltooid: {count} notitie(s) verwerkt",
"indexingError": "Fout bij indexeren", "indexingError": "Fout bij indexeren",
"semanticIndexing": "Semantische indexering", "semanticIndexing": "Index voor zoeken op betekenis",
"semanticIndexingDescription": "Genereer vectoren voor alle notities om intentiegericht zoeken mogelijk te maken", "semanticIndexingDescription": "Alle notities voorbereiden voor zoeken op betekenis",
"profile": "Profiel", "profile": "Profiel",
"searchNoResults": "Geen resultaten gevonden", "searchNoResults": "Geen resultaten gevonden",
"languageAuto": "Taal ingesteld op Auto", "languageAuto": "Taal ingesteld op Auto",
@@ -1664,7 +1664,7 @@
"title": "Functies", "title": "Functies",
"description": "AI-ondersteunde mogelijkheden", "description": "AI-ondersteunde mogelijkheden",
"titleSuggestions": "AI-ondersteunde titelsuggesties", "titleSuggestions": "AI-ondersteunde titelsuggesties",
"semanticSearch": "Semantisch zoeken met embeddings", "semanticSearch": "Zoeken op betekenis",
"paragraphReformulation": "Alinea herformulering", "paragraphReformulation": "Alinea herformulering",
"memoryEcho": "Memory Echo dagelijkse inzichten", "memoryEcho": "Memory Echo dagelijkse inzichten",
"notebookOrganization": "Notitieboek organisatie", "notebookOrganization": "Notitieboek organisatie",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "Zoekindex herbouwen", "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", "button": "Index herbouwen",
"success": "Indexering voltooid: {count} notities verwerkt", "success": "Indexering voltooid: {count} notities verwerkt",
"failed": "Fout bij indexeren" "failed": "Fout bij indexeren"
@@ -1984,7 +1984,7 @@
"legendWiki": "Koppel aan een notitie", "legendWiki": "Koppel aan een notitie",
"mentionShort": "Vermelding", "mentionShort": "Vermelding",
"moreNodes": "+{count} op kaart", "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.", "noOutbound": "Deze notitie linkt nog niet naar andere notities.",
"noWikiYet": "Nog geen links naar andere notities.", "noWikiYet": "Nog geen links naar andere notities.",
"outboundHelp": "Notities waarnaar deze verwijst met [[…]] in de tekst.", "outboundHelp": "Notities waarnaar deze verwijst met [[…]] in de tekst.",
@@ -2190,7 +2190,7 @@
"custom": "Aangepast" "custom": "Aangepast"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Schraapt meerdere sites en maakt een samenvatting", "scraper": "Leest meerdere sites en maakt een samenvatting",
"researcher": "Zoekt naar informatie over een onderwerp", "researcher": "Zoekt naar informatie over een onderwerp",
"monitor": "Bewaakt een notitieboek en analyseert notities", "monitor": "Bewaakt een notitieboek en analyseert notities",
"slideGenerator": "Creëert een PowerPoint-presentatie van notities", "slideGenerator": "Creëert een PowerPoint-presentatie van notities",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "bijv. Dinsdag AI Watch", "namePlaceholder": "bijv. Dinsdag AI Watch",
"description": "Beschrijving (optioneel)", "description": "Beschrijving (optioneel)",
"descriptionPlaceholder": "Wekelijkse AI-nieuwssamenvatting", "descriptionPlaceholder": "Wekelijkse AI-nieuwssamenvatting",
"urlsLabel": "URL's om te schrapen", "urlsLabel": "Adressen van te lezen paginas",
"urlsOptional": "(optioneel)", "urlsOptional": "(optioneel)",
"sourceNotebook": "Notitieboek om te bewaken", "sourceNotebook": "Notitieboek om te bewaken",
"selectNotebook": "Selecteer een notitieboek...", "selectNotebook": "Selecteer een notitieboek...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "E-mailnotificatie", "notifyEmail": "E-mailnotificatie",
"notifyEmailHint": "Ontvang een e-mail met de resultaten van de agent na elke uitvoering", "notifyEmailHint": "Ontvang een e-mail met de resultaten van de agent na elke uitvoering",
"includeImages": "Afbeeldingen opnemen", "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", "back": "Terug",
"configuration": "Configuratie", "configuration": "Configuratie",
"options": "Opties", "options": "Opties",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "AI Watch", "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": { "veilleTech": {
"name": "Tech Watch", "name": "Tech Watch",
"description": "Schraapt grote techsites en maakt een nieuwssamenvatting." "description": "Leest grote techsites en maakt een nieuwssamenvatting."
}, },
"veilleDev": { "veilleDev": {
"name": "Dev Watch", "name": "Dev Watch",
"description": "Schraapt ontwikkelingssites en vat nieuwe tech en frameworks samen." "description": "Leest ontwikkelingssites en vat samen wat er nieuw is."
}, },
"surveillant": { "surveillant": {
"name": "Notitie-waarnemer", "name": "Notitie-waarnemer",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Agent-tools", "title": "Agent-tools",
"webSearch": "Web Zoeken", "webSearch": "Web Zoeken",
"webScrape": "Web Schrapen", "webScrape": "Webpaginas lezen",
"noteSearch": "Notitie Zoeken", "noteSearch": "Notitie Zoeken",
"noteRead": "Notitie Lezen", "noteRead": "Notitie Lezen",
"noteCreate": "Notitie Maken", "noteCreate": "Notitie Maken",
@@ -2431,15 +2431,15 @@
"btnLabel": "Hulp", "btnLabel": "Hulp",
"close": "Sluiten", "close": "Sluiten",
"whatIsAgent": "Wat is een agent?", "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?", "howToUse": "Hoe gebruik je een agent?",
"howToUseContent": "1. Klik op **\"Nieuwe agent\"** (of begin met een **Sjabloon** onderaan de pagina).", "howToUseContent": "1. Klik op **\"Nieuwe agent\"** (of begin met een **Sjabloon** onderaan de pagina).",
"types": "Typen agents", "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)", "advanced": "Geavanceerde modus (AI-instructies, Max iteraties)",
"advancedContent": "Klik onderaan het formulier op **\"Geavanceerde modus\"** voor toegang tot aanvullende instellingen.", "advancedContent": "Klik onderaan het formulier op **\"Geavanceerde modus\"** voor toegang tot aanvullende instellingen.",
"tools": "Beschikbare tools (details)", "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", "frequency": "Frequentie & planning",
"frequencyContent": "| Frequentie | Gedrag\n|-----------|----------\n| **Handmatig** | U klikt zelf op \"Uitvoeren\".", "frequencyContent": "| Frequentie | Gedrag\n|-----------|----------\n| **Handmatig** | U klikt zelf op \"Uitvoeren\".",
"targetNotebook": "Doelnotitieboek", "targetNotebook": "Doelnotitieboek",
@@ -2447,7 +2447,7 @@
"templates": "Sjablonen", "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.", "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", "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": { "tooltips": {
"agentType": "Kies het type taak dat de agent zal uitvoeren. Elk type heeft verschillende mogelijkheden en velden.", "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.", "researchTopic": "Het onderwerp dat de agent op het web zal onderzoeken. Wees specifiek voor betere resultaten.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Upgrade naar Pro", "upgradeTitle": "Upgrade naar Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro omvat:", "proIncludes": "Pro omvat:",
"proSearch": "100 semantic searches / month", "proSearch": "1.000 AI-credits / maand",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Diagramgeneratie", "featureDiagrams": "Diagramgeneratie",
"featureFlashcards": "AI-flashcards", "featureFlashcards": "Revisiekaarten",
"featurePublishEnhance": "AI-publicatie", "featurePublishEnhance": "AI-publicatie",
"featureSlides": "Diavoorstelling genereren", "featureSlides": "Diavoorstelling genereren",
"featureVoice": "Spraaktranscriptie", "featureVoice": "Spraaktranscriptie",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 herformuleringen / maand", "businessFeature3": "500 herformuleringen / maand",
"businessFeature4": "1.000 chatberichten / maand", "businessFeature4": "1.000 chatberichten / maand",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "Aangepaste quota's, SSO, prioriteitsondersteuning.", "enterpriseDescription": "Aangepaste quota's, eenmalige aanmelding voor het team, prioriteitsondersteuning.",
"contactSales": "Contact verkoop", "contactSales": "Contact verkoop",
"startCheckout": "Aan de slag", "startCheckout": "Aan de slag",
"checkoutLoading": "Checkout laden…", "checkoutLoading": "Checkout laden…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Uw abonnement wordt automatisch verlengd.", "paidPlanDesc": "Uw abonnement wordt automatisch verlengd.",
"businessDescription": "Voor teams en productmanagers.", "businessDescription": "Voor teams en productmanagers.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Eenmalige aanmelding voor het hele team",
"enterpriseFeature3": "Toegewijde ondersteuning", "enterpriseFeature3": "Toegewijde ondersteuning",
"enterpriseFeature4": "Aangepaste facturering", "enterpriseFeature4": "Aangepaste facturering",
"enterpriseFeature5": "Gegarandeerde SLA", "enterpriseFeature5": "Gegarandeerde reactietijd",
"subtitle": "Kies het plan dat bij je past", "subtitle": "Kies het plan dat bij je past",
"freeDescription": "Om Memento te ontdekken", "freeDescription": "Om Memento te ontdekken",
"freeF1": "30 semantische zoekopdrachten", "freeF1": "30 semantische zoekopdrachten",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Facturatiestatus kon niet worden opgehaald", "fetchStatusFailed": "Facturatiestatus kon niet worden opgehaald",
"fetchQuotasFailed": "Quota konden niet worden opgehaald", "fetchQuotasFailed": "Quota konden niet worden opgehaald",
"fetchInvoicesFailed": "Factuurgeschiedenis kon niet worden geladen.", "fetchInvoicesFailed": "Factuurgeschiedenis kon niet worden geladen.",
"savePercent": "Bespaar ~17%", "savePercent": "Bespaar ~{percent} %",
"billedYearTotal": "of {price} per jaar",
"cancelSubscription": "Abonnement opzeggen", "cancelSubscription": "Abonnement opzeggen",
"changeOffer": "Ander aanbod kiezen", "changeOffer": "Ander aanbod kiezen",
"downgradeToFree": "Terug naar het gratis aanbod", "downgradeToFree": "Terug naar het gratis aanbod",
@@ -3379,13 +3380,13 @@
"cta": "Neem contact op", "cta": "Neem contact op",
"feature0": "Alles van Business", "feature0": "Alles van Business",
"feature1": "Onbeperkte agents", "feature1": "Onbeperkte agents",
"feature2": "SSO / SAML", "feature2": "Eenmalige aanmelding voor het hele team",
"feature3": "Auditlogs & SLA", "feature3": "Activiteitenlog en gegarandeerde reactietijd",
"feature4": "Dedicated support", "feature4": "Dedicated support",
"feature5": "Live onboarding" "feature5": "Begeleide installatie"
}, },
"basicPrice": "Gratis", "basicPrice": "Gratis",
"savePercent": "Bespaar ~17%", "savePercent": "Bespaar ~{percent} %",
"proMonthly": "€9,90", "proMonthly": "€9,90",
"proAnnualMonthly": "€8,25", "proAnnualMonthly": "€8,25",
"businessMonthly": "€29,90", "businessMonthly": "€29,90",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Verwijder je account en alle bijbehorende gegevens definitief en onomkeerbaar.", "sectionDescription": "Verwijder je account en alle bijbehorende gegevens definitief en onomkeerbaar.",
"whatWillBeDeleted": "Het volgende wordt definitief verwijderd:", "whatWillBeDeleted": "Het volgende wordt definitief verwijderd:",
"item1": "Alle notities, notitieboeken en bijlagen", "item1": "Alle notities, notitieboeken en bijlagen",
"item2": "Alle pgvector semantische embeddings", "item2": "De index die je notities verbindt",
"item3": "Alle BYOK API-sleutels", "item3": "Alle BYOK API-sleutels",
"item4": "Alle AI-gesprekken en brainstormsessies", "item4": "Alle AI-gesprekken en brainstormsessies",
"item5": "Quota- en gebruiksgeschiedenis", "item5": "Quota- en gebruiksgeschiedenis",
@@ -3559,7 +3560,7 @@
"step_features_title": "Uw AI-superkrachten", "step_features_title": "Uw AI-superkrachten",
"step_features_subtitle": "Kies waar u wilt beginnen.", "step_features_subtitle": "Kies waar u wilt beginnen.",
"step_features_cta": "Aan de slag!", "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_search_desc": "Vind elke notitie op betekenis, niet alleen op trefwoorden.",
"feature_flashcards_title": "AI-flashcards", "feature_flashcards_title": "AI-flashcards",
"feature_flashcards_desc": "Genereer revisiekaarten uit uw notities met één klik.", "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_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_title": "Sessie exporteren",
"hint_brainstorm_export_desc": "Exporteer de hele brainstormsessie als gestructureerde notitie naar het gekozen carnet.", "hint_brainstorm_export_desc": "Exporteer de hele brainstormsessie als gestructureerde notitie naar het gekozen carnet.",
"hint_insights_clusters_title": "Notitie-clusters", "hint_insights_clusters_title": "Notitiethemas",
"hint_insights_clusters_desc": "Uw notities worden automatisch gegroepeerd in thematische clusters. Klik voor details.", "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_title": "Brugnotities",
"hint_insights_bridge_desc": "Brugnotities verbinden meerdere clusters en zijn gemarkeerd omdat ze belangrijke verbindingen bevatten.", "hint_insights_bridge_desc": "Brugnotities verbinden meerdere themas. Ze tonen waar je ideeën elkaar kruisen.",
"hint_insights_refresh_title": "Clusters vernieuwen", "hint_insights_refresh_title": "Themas bijwerken",
"hint_insights_refresh_desc": "Als u nieuwe notities heeft toegevoegd, klikt u op \"Vernieuwen\" om clusters te herberekenen." "hint_insights_refresh_desc": "Als je notities hebt toegevoegd, klik op «Bijwerken» om de themas opnieuw te berekenen."
}, },
"blockAction": { "blockAction": {
"moveUp": "Blok omhoog verplaatsen", "moveUp": "Blok omhoog verplaatsen",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "Verbanden", "title": "Verbanden",
"toggleMenu": "Menu tonen of verbergen", "toggleMenu": "Menu tonen of verbergen",
"subtitle": "Ontdek de verborgen architectuur van je kennis", "subtitle": "Zie hoe je notities samenhangen",
"resync": "Bijwerken", "resync": "Bijwerken",
"mapping": "In kaart brengen…", "mapping": "In kaart brengen…",
"loading": "Notizen laden…", "loading": "Notizen laden…",
"mappingTitle": "Je kennis in kaart brengen…", "mappingTitle": "Je kennis in kaart brengen…",
"mappingHint": "Dit kan één tot drie minuten duren. U kunt blijven browsen; de pagina wordt automatisch bijgewerkt.", "mappingHint": "Dit kan één tot drie minuten duren. U kunt blijven browsen; de pagina wordt automatisch bijgewerkt.",
"analyzeNow": "Semantische analyse starten", "analyzeNow": "Thema's bijwerken",
"emptyNeedMoreNotes": "Voeg {count} notities meer toe om semantische clustering te ontgrendelen (minimum 10).", "emptyNeedMoreNotes": "Voeg {count} notities meer toe om uw thema's te groeperen (minimum 10).",
"embeddingsHint": "Slechts {indexed} van {total} notities geïndexeerd voor AI.", "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.", "vsGraphHint": "Dit is niet de \"Link-kaart\": hier groepeert de AI op betekenis, niet op links.",
"openGraphMap": "Linkkaart openen", "openGraphMap": "Linkkaart openen",
"analysisFailed": "Analyse mislukt. Controleer je AI-instellingen.", "analysisFailed": "Analyse mislukt. Controleer je AI-instellingen.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notities", "graphNotesLabel": "notities",
"clusterFallback": "Thema {index}", "clusterFallback": "Thema {index}",
"unclusteredNotes": "{count} notities niet toegewezen aan een thema (verborgen in de grafiek).", "unclusteredNotes": "{count} notities niet toegewezen aan een thema (verborgen in de grafiek).",
"emptyTitle": "Ontdek je kennisclusters", "emptyTitle": "Ontdek je themas",
"emptyDescription": "Klik op \"Netwerk opnieuw synchroniseren\" om uw notities te analyseren en verborgen verbanden te vinden", "emptyDescription": "Klik op «Bijwerken» om je notities per thema te groeperen.",
"stats": { "stats": {
"clusters": "Clusters", "clusters": "Clusters",
"bridgeNotes": "Brugnotities", "bridgeNotes": "Brugnotities",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "Semantische clusters", "title": "Themas",
"notesCount": "{count} notities", "notesCount": "{count} notities",
"centralNotes": "Centrale notities", "centralNotes": "Centrale notities",
"emptyCluster": "Geen notities in dit cluster" "emptyCluster": "Geen notities in dit thema"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Affiniteit {score}%", "affinity": "Affiniteit {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "Hersynchroniseer het netwerk om brugparen te vernieuwen.", "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": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Graaf", "viewGraph": "Graaf",
"viewDashboard": "Dashboard", "viewDashboard": "Dashboard",
"isolatedClusters": { "isolatedClusters": {
"title": "Geïsoleerde clusters ({count})", "title": "Geïsoleerde themas ({count})",
"badge": "Niet verbonden", "badge": "Niet verbonden",
"empty": "Alle clusters zijn verbonden!" "empty": "Al je themas zijn al verbonden door minstens één brugnotitie."
}, },
"focusCluster": { "focusCluster": {
"title": "Clusterfocus actief", "title": "Thema geopend",
"description": "Dit thematische cluster verzamelt {count} aanvullende notities. Klik op een notitie om deze te openen.", "description": "Dit thema bevat {count} notities. Klik op een notitie om die te openen.",
"close": "Sluiten" "close": "Sluiten"
}, },
"badgeDominant": "Dominant", "badgeDominant": "Dominant",
"bridgeCount": "brug(en)", "bridgeCount": "brug(en)",
"echoTitle": "U keert steeds terug naar dit idee", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "tipIsolatedAction": "Deze thema's hebben geen verbindende notitie met de rest van uw denken.",
"recalcSystem": { "recalcSystem": {
"title": "Herberekeningssysteem", "title": "Thema-update",
"statusSynced": "Gesynchroniseerd", "statusSynced": "Bijgewerkt",
"scheduledCron": "Gepland", "scheduledCron": "Automatische update",
"lastSync": "Laatste sync" "lastSync": "Laatste update"
}, },
"resetFocus": "Focus resetten", "resetFocus": "Alles tonen",
"listView": "Lijst", "listView": "Lijst",
"graphAriaLabel": "Semantisch netwerk: {clusters} clusters, {notes} notities, {bridges} brugnotities. Pijltjestoetsen.", "graphAriaLabel": "Themenkaart: {clusters} themas, {notes} notities, {bridges} brugnotities. Schakel naar Lijst om makkelijker te navigeren.",
"listAriaLabel": "Toegankelijke clusterlijst met notities en brugverbindingen", "listAriaLabel": "Lijst van themas, notities en brugnotities",
"dashboardFilterPlaceholder": "Brugnotities, thema's filteren…", "dashboardFilterPlaceholder": "Brugnotities, thema's filteren…",
"legendFilterPlaceholder": "Thema's filteren…", "legendFilterPlaceholder": "Thema's filteren…",
"legendShowLess": "Minder weergeven", "legendShowLess": "Minder weergeven",
@@ -3896,7 +3897,7 @@
"genericError": "Er is een fout opgetreden bij het verzenden naar uw instantie.", "genericError": "Er is een fout opgetreden bij het verzenden naar uw instantie.",
"ignore": "onder de knie", "ignore": "onder de knie",
"processing": "Verwerken…", "processing": "Verwerken…",
"processingDetail": "Tags, semantische samenvatting en embeddings genereren.", "processingDetail": "Notitie voorbereiden: labels, samenvatting, zoeken op betekenis.",
"publishedOn": "Gepubliceerd op {domain}", "publishedOn": "Gepubliceerd op {domain}",
"quitSimulator": "Simulator sluiten", "quitSimulator": "Simulator sluiten",
"realtimeCapture": "Datum: live vastleggen", "realtimeCapture": "Datum: live vastleggen",
@@ -4156,7 +4157,7 @@
"match": "Inloggen", "match": "Inloggen",
"memoryEchoDisabled": "Memory Echo is uitgeschakeld in uw AI-instellingen.", "memoryEchoDisabled": "Memory Echo is uitgeschakeld in uw AI-instellingen.",
"mindMap": "Mindmap", "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 →", "mindMapOpen": "Inzichtkaart openen →",
"mindMapUnavailable": "Mindmap niet beschikbaar.", "mindMapUnavailable": "Mindmap niet beschikbaar.",
"new": "Notities aangemaakt", "new": "Notities aangemaakt",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "Toevoegen aan notitie", "add-link": "Toevoegen aan notitie",
"bridge": "Brugidee", "bridge": "Brugidee",
"connect": "Semantische link", "connect": "Een notitie koppelen",
"continue": "Doorgaan", "continue": "Doorgaan",
"daily": "Journaal", "daily": "Journaal",
"explore": "Thema verkennen", "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.", "resumeEmptyHint": "Uw second brain in één oogopslag: AI-suggesties, snelle invoer en vervolgstappen. Gebruik de snelkoppelingen hieronder om in actie te komen.",
"resumeOpen": "Hervatten", "resumeOpen": "Hervatten",
"review": "Herhalen", "review": "Herhalen",
"semanticConnection": "Semantische affiniteit", "semanticConnection": "Nabijheid",
"sentiment": "Stemming", "sentiment": "Stemming",
"sentimentDominant": "Dominante toon deze week", "sentimentDominant": "Dominante toon deze week",
"suggestedBridge": "Verbindt {clusterA} & {clusterB}", "suggestedBridge": "Verbindt {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retentie, reeks en totaal aantal kaarten.", "flashcards-progress": "Retentie, reeks en totaal aantal kaarten.",
"gmail": "E-mailopnames gesynchroniseerd via Gmail.", "gmail": "E-mailopnames gesynchroniseerd via Gmail.",
"inbox": "Notities die wachten om in notitieboeken te worden ingedeeld.", "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.", "link-suggestions": "Passages om te koppelen in uw huidige notitie.",
"mind-map": "Thematische clusters, gegroepeerd op notitievolume.", "mind-map": "Thematische clusters, gegroepeerd op notitievolume.",
"next-paths": "AI-voorgestelde volgende stappen op basis van je laatste werk.", "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.", "resume": "Vervolg uw meest recente notities waar u gebleven was.",
"revision": "Flashcards die klaarstaan voor gespreide herhaling.", "revision": "Flashcards die klaarstaan voor gespreide herhaling.",
"sentiment": "Emotionele toon van uw notities deze week.", "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." "usage": "Resterende AI-kredieten en maandlimieten."
}, },
"widgetDone": "Klaar", "widgetDone": "Klaar",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Leerretentie, herhalingsreeks en totaal aantal kaarten.", "flashcards-progress": "Leerretentie, herhalingsreeks en totaal aantal kaarten.",
"gmail": "E-mailopnames gesynchroniseerd via Gmail-integratie.", "gmail": "E-mailopnames gesynchroniseerd via Gmail-integratie.",
"inbox": "Notities zonder notitieboek. Berg ze op om uw second brain netjes te houden.", "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.", "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.", "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.", "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.", "resume": "Uw recentst bijgewerkte notities. Ga verder waar u gebleven was.",
"revision": "Vandaag vervallen flashcards voor gespreide herhaling.", "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.", "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." "usage": "Maandelijks AI-kredietgebruik per functie."
}, },
"widgetHelpClose": "Sluiten", "widgetHelpClose": "Sluiten",
@@ -4319,7 +4320,7 @@
"resume": "Hier hervatten", "resume": "Hier hervatten",
"revision": "Flashcards", "revision": "Flashcards",
"sentiment": "Stemming", "sentiment": "Stemming",
"stats": "Semantische statistieken", "stats": "Thema's en notities",
"usage": "AI-quota" "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.", "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.", "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\".", "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?", "readwiseInfo": "Hoe werkt Readwise?",
"readwiseSynced": "Readwise synchronisatie — {{created}} aangemaakt, {{updated}} bijgewerkt", "readwiseSynced": "Readwise synchronisatie — {{created}} aangemaakt, {{updated}} bijgewerkt",
"readwiseTokenPlaceholder": "Readwise-token…", "readwiseTokenPlaceholder": "Readwise-token…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversie voltooid! Gekoppeld notitieboek aangemaakt.", "convertSuccess": "Conversie voltooid! Gekoppeld notitieboek aangemaakt.",
"convertToNotebook": "Naar notitieboek converteren", "convertToNotebook": "Naar notitieboek converteren",
"converting": "Converteren…", "converting": "Converteren…",
"createLocalDb": "Maak een zelfstandige lokale database", "createLocalDb": "Maak een tabel in deze notitie",
"createNotebook": "Notitieboek maken", "createNotebook": "Notitieboek maken",
"defaultOption1": "Optie 1", "defaultOption1": "Optie 1",
"defaultOption2": "Optie 2", "defaultOption2": "Optie 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Verouderd blok verwijderd.", "deprecatedBlock": "Verouderd blok verwijderd.",
"displayModeGallery": "Galerij", "displayModeGallery": "Galerij",
"displayModeTable": "Tafel", "displayModeTable": "Tafel",
"echoLoading": "Zoeken naar semantische verbindingen...", "echoLoading": "Zoeken naar nabije notities…",
"echoNameRequired": "Voer eerst een naam in voor deze rij om naar semantische verbindingen te zoeken.", "echoNameRequired": "Voer eerst een naam in voor deze rij om nabije notities te zoeken.",
"echoNoMatch": "Geen notities met \"{{query}}\" gevonden in uw werkruimte.", "echoNoMatch": "Geen notities met \"{{query}}\" gevonden in uw werkruimte.",
"echoPopoverTitle": "Semantische resonanties 🔮", "echoPopoverTitle": "Dichte notities",
"echoSearchError": "Er is een fout opgetreden tijdens het zoeken.", "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.", "emptyTable": "Geen rijen in de tabel.",
"insertCitation": "Link in editor invoegen", "insertCitation": "Link in editor invoegen",
"insertDesc": "Sluit de gestructureerde gegevens van uw notitieboek in", "insertDesc": "Sluit de gestructureerde gegevens van uw notitieboek in",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Trefwoord", "keywordMatch": "Trefwoord",
"linkToNotebook": "Koppel aan een notitieboek", "linkToNotebook": "Koppel aan een notitieboek",
"loadError": "Fout bij laden van gestructureerde gegevens.", "loadError": "Fout bij laden van gestructureerde gegevens.",
"localDbTitle": "Zelfstandige database", "localDbTitle": "Tabel in deze notitie",
"namePlaceholder": "Naam invoeren…", "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.", "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:", "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.", "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", "selectNotebook": "Koppel aan een notitieboek",
"selectOptionsPlaceholder": "Opties gescheiden door komma's", "selectOptionsPlaceholder": "Opties gescheiden door komma's",
"semanticEcho": "Semantische resonanties", "semanticEcho": "Semantische resonanties",
"switchToLocalDb": "Schakel naar lokale database", "switchToLocalDb": "Terug naar de tabel van deze notitie",
"turnIntoLabel": "Inline database", "turnIntoLabel": "Tabel in de notitie",
"untitled": "Naamloos" "untitled": "Naamloos"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Een notitie zoeken…", "relationSearch": "Een notitie zoeken…",
"selectOptions": "Opties (één per regel)", "selectOptions": "Opties (één per regel)",
"selectOptionsPlaceholder": "Te doen\\\nIn behandeling\\\nKlaar", "selectOptionsPlaceholder": "Te doen\\\nIn behandeling\\\nKlaar",
"semanticResonances": "Semantische resonanties", "semanticResonances": "Notities die bij elkaar horen",
"tagApplied": "bruggen", "tagApplied": "bruggen",
"viewCalendarHint": "Kalender — je notities geordend op datum", "viewCalendarHint": "Kalender — je notities geordend op datum",
"viewGallery": "Galerij", "viewGallery": "Galerij",

View File

@@ -407,7 +407,7 @@
"placeholder": "Szukaj", "placeholder": "Szukaj",
"searchPlaceholder": "Przeszukaj swoje notatki...", "searchPlaceholder": "Przeszukaj swoje notatki...",
"semanticInProgress": "Wyszukiwanie semantyczne AI...", "semanticInProgress": "Wyszukiwanie semantyczne AI...",
"semanticTooltip": "Wyszukiwanie semantyczne AI", "semanticTooltip": "Szukanie po sensie",
"searching": "Wyszukiwanie...", "searching": "Wyszukiwanie...",
"noResults": "Nie znaleziono wyników", "noResults": "Nie znaleziono wyników",
"resultsFound": "Znaleziono {count} notatek", "resultsFound": "Znaleziono {count} notatek",
@@ -861,7 +861,7 @@
"compareAll": "Porównaj wszystko", "compareAll": "Porównaj wszystko",
"mergeAll": "Połącz wszystko", "mergeAll": "Połącz wszystko",
"close": "Zamknij", "close": "Zamknij",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % bliskości",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo", "badgeLabel": "Memory Echo",
"bottomCueConsent": "Połączenia AI dostępne poniżej", "bottomCueConsent": "Połączenia AI dostępne poniżej",
@@ -918,7 +918,7 @@
"noContentReturned": "Brak zawartości fuzji z API", "noContentReturned": "Brak zawartości fuzji z API",
"unknownDate": "Nieznana data" "unknownDate": "Nieznana data"
}, },
"defaultInsight": "Te notatki wydają się semantycznie powiązane.", "defaultInsight": "Te notatki do siebie pasują.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "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", "cleanupError": "Nie udało się wyczyścić etykiet",
"indexingComplete": "Indeksowanie zakończone: przetworzono {count} notatek", "indexingComplete": "Indeksowanie zakończone: przetworzono {count} notatek",
"indexingError": "Błąd podczas indeksowania", "indexingError": "Błąd podczas indeksowania",
"semanticIndexing": "Indeksowanie semantyczne", "semanticIndexing": "Indeks wyszukiwania według sensu",
"semanticIndexingDescription": "Generuj wektory dla wszystkich notatek, aby umożliwić wyszukiwanie oparte na intencji", "semanticIndexingDescription": "Przygotuj wszystkie notatki do wyszukiwania według sensu",
"profile": "Profil", "profile": "Profil",
"searchNoResults": "Nie znaleziono wyników", "searchNoResults": "Nie znaleziono wyników",
"languageAuto": "Język ustawiony na Auto", "languageAuto": "Język ustawiony na Auto",
@@ -1664,7 +1664,7 @@
"title": "Funkcje", "title": "Funkcje",
"description": "Możliwości wspomagane przez AI", "description": "Możliwości wspomagane przez AI",
"titleSuggestions": "Sugestie tytułów wspomagane przez AI", "titleSuggestions": "Sugestie tytułów wspomagane przez AI",
"semanticSearch": "Wyszukiwanie semantyczne z embeddingami", "semanticSearch": "Wyszukiwanie według sensu",
"paragraphReformulation": "Reformulowanie akapitów", "paragraphReformulation": "Reformulowanie akapitów",
"memoryEcho": "Codzienne spostrzeżenia Memory Echo", "memoryEcho": "Codzienne spostrzeżenia Memory Echo",
"notebookOrganization": "Organizacja notatników", "notebookOrganization": "Organizacja notatników",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "Przebuduj indeks wyszukiwania", "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", "button": "Przebuduj indeks",
"success": "Indeksowanie zakończone: przetworzono {count} notatek", "success": "Indeksowanie zakończone: przetworzono {count} notatek",
"failed": "Błąd podczas indeksowania" "failed": "Błąd podczas indeksowania"
@@ -1984,7 +1984,7 @@
"legendWiki": "Połącz z notatką", "legendWiki": "Połącz z notatką",
"mentionShort": "Wzmianka", "mentionShort": "Wzmianka",
"moreNodes": "+{count} na mapie", "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.", "noOutbound": "Ta notatka nie łączy się jeszcze z innymi notatkami.",
"noWikiYet": "Brak linków do innych notatek.", "noWikiYet": "Brak linków do innych notatek.",
"outboundHelp": "Notatki, do których ta odwołuje się, używając [[…]] w tekście.", "outboundHelp": "Notatki, do których ta odwołuje się, używając [[…]] w tekście.",
@@ -2190,7 +2190,7 @@
"custom": "Niestandardowy" "custom": "Niestandardowy"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Pobiera dane z wielu stron i tworzy podsumowanie", "scraper": "Czyta kilka stron i robi podsumowanie",
"researcher": "Wyszukuje informacje na dany temat", "researcher": "Wyszukuje informacje na dany temat",
"monitor": "Obserwuje notatnik i analizuje notatki", "monitor": "Obserwuje notatnik i analizuje notatki",
"slideGenerator": "Tworzy prezentację programu PowerPoint z notatek", "slideGenerator": "Tworzy prezentację programu PowerPoint z notatek",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "np. Wtorkowy Przegląd AI", "namePlaceholder": "np. Wtorkowy Przegląd AI",
"description": "Opis (opcjonalnie)", "description": "Opis (opcjonalnie)",
"descriptionPlaceholder": "Tygodniowe podsumowanie wiadomości AI", "descriptionPlaceholder": "Tygodniowe podsumowanie wiadomości AI",
"urlsLabel": "Adresy URL do pobrania", "urlsLabel": "Adresy stron do przeczytania",
"urlsOptional": "(opcjonalnie)", "urlsOptional": "(opcjonalnie)",
"sourceNotebook": "Notatnik do obserwacji", "sourceNotebook": "Notatnik do obserwacji",
"selectNotebook": "Wybierz notatnik...", "selectNotebook": "Wybierz notatnik...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Powiadomienie e-mail", "notifyEmail": "Powiadomienie e-mail",
"notifyEmailHint": "Otrzymuj e-mail z wynikami agenta po każdym uruchomieniu", "notifyEmailHint": "Otrzymuj e-mail z wynikami agenta po każdym uruchomieniu",
"includeImages": "Uwzględnij obrazy", "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", "back": "Wstecz",
"configuration": "Konfiguracja", "configuration": "Konfiguracja",
"options": "Opcje", "options": "Opcje",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Przegląd AI", "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": { "veilleTech": {
"name": "Przegląd technologiczny", "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": { "veilleDev": {
"name": "Przegląd deweloperski", "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": { "surveillant": {
"name": "Obserwator notatek", "name": "Obserwator notatek",
@@ -2431,15 +2431,15 @@
"btnLabel": "Pomoc", "btnLabel": "Pomoc",
"close": "Zamknij", "close": "Zamknij",
"whatIsAgent": "Czym jest agent?", "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?", "howToUse": "Jak używać agenta?",
"howToUseContent": "1. Kliknij **„Nowy agent\"** (lub zacznij od **Szablonu** na dole strony).", "howToUseContent": "1. Kliknij **„Nowy agent\"** (lub zacznij od **Szablonu** na dole strony).",
"types": "Typy agentów", "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)", "advanced": "Tryb zaawansowany (Instrukcje AI, Maks. iteracje)",
"advancedContent": "Kliknij na **„Tryb zaawansowany\"** na dole formularza, aby uzyskać dostęp do dodatkowych ustawień.", "advancedContent": "Kliknij na **„Tryb zaawansowany\"** na dole formularza, aby uzyskać dostęp do dodatkowych ustawień.",
"tools": "Dostępne narzędzia (szczegóły)", "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", "frequency": "Częstotliwość i harmonogram",
"frequencyContent": "| Częstotliwość | Zachowanie\n|-----------|----------\n| **Ręcznie** | Klikasz samodzielnie \"Uruchom\".", "frequencyContent": "| Częstotliwość | Zachowanie\n|-----------|----------\n| **Ręcznie** | Klikasz samodzielnie \"Uruchom\".",
"targetNotebook": "Docelowy notatnik", "targetNotebook": "Docelowy notatnik",
@@ -2447,7 +2447,7 @@
"templates": "Szablony", "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.", "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", "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": { "tooltips": {
"agentType": "Wybierz typ zadania, które będzie wykonywał agent. Każdy typ ma różne możliwości i pola.", "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.", "researchTopic": "Temat, który agent zbada w internecie. Bądź konkretny, aby uzyskać lepsze wyniki.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Ulepsz do Pro", "upgradeTitle": "Ulepsz do Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro obejmuje:", "proIncludes": "Pro obejmuje:",
"proSearch": "100 semantic searches / month", "proSearch": "1000 kredytów AI / miesiąc",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Generowanie diagramu", "featureDiagrams": "Generowanie diagramu",
"featureFlashcards": "Fiszki AI", "featureFlashcards": "Karty powtórek",
"featurePublishEnhance": "Publikacja AI", "featurePublishEnhance": "Publikacja AI",
"featureSlides": "Generowanie slajdów", "featureSlides": "Generowanie slajdów",
"featureVoice": "Transkrypcja głosowa", "featureVoice": "Transkrypcja głosowa",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 przeformułowań / miesiąc", "businessFeature3": "500 przeformułowań / miesiąc",
"businessFeature4": "1 000 wiadomości czatu / miesiąc", "businessFeature4": "1 000 wiadomości czatu / miesiąc",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "Niestandardowe limity, SSO, wsparcie priorytetowe.", "enterpriseDescription": "Niestandardowe limity, jedno logowanie dla zespołu, wsparcie priorytetowe.",
"contactSales": "Kontakt ze sprzedażą", "contactSales": "Kontakt ze sprzedażą",
"startCheckout": "Rozpocznij", "startCheckout": "Rozpocznij",
"checkoutLoading": "Ładowanie płatności…", "checkoutLoading": "Ładowanie płatności…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Twoja subskrypcja odnawia się automatycznie.", "paidPlanDesc": "Twoja subskrypcja odnawia się automatycznie.",
"businessDescription": "Dla zespołów i kierowników produktu.", "businessDescription": "Dla zespołów i kierowników produktu.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Jedno logowanie dla całego zespołu",
"enterpriseFeature3": "Dedykowane wsparcie", "enterpriseFeature3": "Dedykowane wsparcie",
"enterpriseFeature4": "Niestandardowe fakturowanie", "enterpriseFeature4": "Niestandardowe fakturowanie",
"enterpriseFeature5": "Gwarantowane SLA", "enterpriseFeature5": "Gwarantowany czas odpowiedzi",
"subtitle": "Wybierz plan odpowiedni dla siebie", "subtitle": "Wybierz plan odpowiedni dla siebie",
"freeDescription": "Aby odkryć Memento", "freeDescription": "Aby odkryć Memento",
"freeF1": "30 wyszukiwań semantycznych", "freeF1": "30 wyszukiwań semantycznych",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Nie udało się pobrać statusu rozliczeń", "fetchStatusFailed": "Nie udało się pobrać statusu rozliczeń",
"fetchQuotasFailed": "Nie udało się pobrać limitów", "fetchQuotasFailed": "Nie udało się pobrać limitów",
"fetchInvoicesFailed": "Nie udało się załadować historii rozliczeń.", "fetchInvoicesFailed": "Nie udało się załadować historii rozliczeń.",
"savePercent": "Oszczędź ~17%", "savePercent": "Oszczędź ~{percent} %",
"billedYearTotal": "czyli {price} rocznie",
"cancelSubscription": "Anuluj subskrypcję", "cancelSubscription": "Anuluj subskrypcję",
"changeOffer": "Zmień ofertę", "changeOffer": "Zmień ofertę",
"downgradeToFree": "Wróć do oferty darmowej", "downgradeToFree": "Wróć do oferty darmowej",
@@ -3379,13 +3380,13 @@
"cta": "Porozmawiajmy", "cta": "Porozmawiajmy",
"feature0": "Wszystko z Business", "feature0": "Wszystko z Business",
"feature1": "Nielimitowani agenci", "feature1": "Nielimitowani agenci",
"feature2": "SSO / SAML", "feature2": "Jedno logowanie dla całego zespołu",
"feature3": "Audit logi i SLA", "feature3": "Dziennik aktywności i gwarantowany czas odpowiedzi",
"feature4": "Dedykowane wsparcie", "feature4": "Dedykowane wsparcie",
"feature5": "Onboarding na żywo" "feature5": "Pomoc przy starcie"
}, },
"basicPrice": "Za darmo", "basicPrice": "Za darmo",
"savePercent": "Oszczędź ~17%", "savePercent": "Oszczędź ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Trwale i bezpowrotnie usuń swoje konto i wszystkie powiązane dane.", "sectionDescription": "Trwale i bezpowrotnie usuń swoje konto i wszystkie powiązane dane.",
"whatWillBeDeleted": "Następujące elementy zostaną trwale usunięte:", "whatWillBeDeleted": "Następujące elementy zostaną trwale usunięte:",
"item1": "Wszystkie notatki, notatniki i załączniki", "item1": "Wszystkie notatki, notatniki i załączniki",
"item2": "Wszystkie osadzenia semantyczne pgvector", "item2": "Indeks, który łączy Twoje notatki",
"item3": "Wszystkie klucze API BYOK", "item3": "Wszystkie klucze API BYOK",
"item4": "Wszystkie rozmowy AI i sesje burzy mózgów", "item4": "Wszystkie rozmowy AI i sesje burzy mózgów",
"item5": "Historia limitów i użycia", "item5": "Historia limitów i użycia",
@@ -3559,7 +3560,7 @@
"step_features_title": "Twoje supermoce AI", "step_features_title": "Twoje supermoce AI",
"step_features_subtitle": "Wybierz, od czego zacząć.", "step_features_subtitle": "Wybierz, od czego zacząć.",
"step_features_cta": "Zaczynamy!", "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_search_desc": "Znajdź każdą notatkę według znaczenia, nie tylko słów kluczowych.",
"feature_flashcards_title": "Fiszki AI", "feature_flashcards_title": "Fiszki AI",
"feature_flashcards_desc": "Generuj karty powtórek z notatek jednym kliknięciem.", "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_deepen_desc": "Kliknij kartę pomysłu, aby ją rozwinąć podpomysłami i zbadać.",
"hint_brainstorm_export_title": "Eksportuj sesję", "hint_brainstorm_export_title": "Eksportuj sesję",
"hint_brainstorm_export_desc": "Wyeksportuj całą sesję burzy mózgów jako ustrukturyzowaną notatkę do wybranego carnecu.", "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_title": "Motywy notatek",
"hint_insights_clusters_desc": "Twoje notatki są automatycznie grupowane w klastry tematyczne. Kliknij, aby zobaczyć szczegóły.", "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_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_bridge_desc": "Notatki-mosty łączą kilka motywów. Pokazują, gdzie idee się krzyżują.",
"hint_insights_refresh_title": "Odśwież klastry", "hint_insights_refresh_title": "Aktualizuj motywy",
"hint_insights_refresh_desc": "Jeśli dodałeś nowe notatki, kliknij „Odśwież\", aby przeliczyć klastry ponownie." "hint_insights_refresh_desc": "Jeśli dodałeś notatki, kliknij «Aktualizuj», aby przeliczyć motywy."
}, },
"blockAction": { "blockAction": {
"moveUp": "Przesuń blok w górę", "moveUp": "Przesuń blok w górę",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "Powiązania", "title": "Powiązania",
"toggleMenu": "Pokaż lub ukryj menu", "toggleMenu": "Pokaż lub ukryj menu",
"subtitle": "Odkryj ukrytą architekturę swojej wiedzy", "subtitle": "Zobacz, jak łączą się Twoje notatki",
"resync": "Aktualizuj", "resync": "Aktualizuj",
"mapping": "Mapowanie…", "mapping": "Mapowanie…",
"loading": "Ładowanie notatek…", "loading": "Ładowanie notatek…",
"mappingTitle": "Mapowanie Twojej wiedzy…", "mappingTitle": "Mapowanie Twojej wiedzy…",
"mappingHint": "To może zająć od jednej do trzech minut. Możesz dalej przeglądać; strona zaktualizuje się automatycznie.", "mappingHint": "To może zająć od jednej do trzech minut. Możesz dalej przeglądać; strona zaktualizuje się automatycznie.",
"analyzeNow": "Rozpocznij analizę semantyczną", "analyzeNow": "Zaktualizuj tematy",
"emptyNeedMoreNotes": "Dodaj jeszcze {count} notatek, aby odblokować klasteryzację semantyczną (minimum 10).", "emptyNeedMoreNotes": "Dodaj jeszcze {count} notatek, aby pogrupować tematy (minimum 10).",
"embeddingsHint": "Tylko {indexed} z {total} notatek zaindeksowanych dla AI.", "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.", "vsGraphHint": "To nie „Mapa linków\": tutaj AI grupuje wg znaczenia, nie linków.",
"openGraphMap": "Otwórz mapę linków", "openGraphMap": "Otwórz mapę linków",
"analysisFailed": "Analiza nieudana. Sprawdź ustawienia AI.", "analysisFailed": "Analiza nieudana. Sprawdź ustawienia AI.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notatki", "graphNotesLabel": "notatki",
"clusterFallback": "Temat {index}", "clusterFallback": "Temat {index}",
"unclusteredNotes": "{count} notatek nie przypisano do żadnego motywu (ukryte na grafie).", "unclusteredNotes": "{count} notatek nie przypisano do żadnego motywu (ukryte na grafie).",
"emptyTitle": "Odkryj swoje klastry wiedzy", "emptyTitle": "Odkryj swoje motywy",
"emptyDescription": "Kliknij „Ponownie synchronizuj sieć\", aby przeanalizować notatki i znaleźć ukryte powiązania", "emptyDescription": "Kliknij «Aktualizuj», aby pogrupować notatki według motywów.",
"stats": { "stats": {
"clusters": "Klastry", "clusters": "Klastry",
"bridgeNotes": "Notatki-pomosty", "bridgeNotes": "Notatki-pomosty",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "Klastry semantyczne", "title": "Motywy",
"notesCount": "{count} notatek", "notesCount": "{count} notatek",
"centralNotes": "Notatki centralne", "centralNotes": "Notatki centralne",
"emptyCluster": "Brak notatek w tym klastrze" "emptyCluster": "Brak notatek w tym motywie"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Pokrewieństwo {score}%", "affinity": "Pokrewieństwo {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "Ponownie zsynchronizuj sieć, aby odświeżyć pary pomostowe.", "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": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Graf", "viewGraph": "Graf",
"viewDashboard": "Panel", "viewDashboard": "Panel",
"isolatedClusters": { "isolatedClusters": {
"title": "Odizolowane klastry ({count})", "title": "Odizolowane motywy ({count})",
"badge": "Niepowiązany", "badge": "Niepowiązany",
"empty": "Wszystkie klastry są połączone!" "empty": "Wszystkie motywy są już połączone przynajmniej jedną notatką-mostem."
}, },
"focusCluster": { "focusCluster": {
"title": "Fokus klastra aktywny", "title": "Motyw otwarty",
"description": "Ten klaster tematyczny gromadzi {count} uzupełniających notatek. Kliknij notatkę, aby ją otworzyć.", "description": "Ten motyw zbiera {count} notatek. Kliknij notatkę, aby ją otworzyć.",
"close": "Zamknij" "close": "Zamknij"
}, },
"badgeDominant": "Dominujący", "badgeDominant": "Dominujący",
"bridgeCount": "most(ów)", "bridgeCount": "most(ów)",
"echoTitle": "Ciągle wracasz do tego pomysłu", "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ć.", "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.", "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.", "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ć.", "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ć.", "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.", "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.", "tipIsolatedAction": "Te motywy nie mają notatki łączącej je z resztą Twojego myślenia.",
"recalcSystem": { "recalcSystem": {
"title": "System przeliczania", "title": "Aktualizacja motywów",
"statusSynced": "Zsynchronizowano", "statusSynced": "Aktualne",
"scheduledCron": "Zaplanowano", "scheduledCron": "Automatyczna aktualizacja",
"lastSync": "Ostatnia sync" "lastSync": "Ostatnia aktualizacja"
}, },
"resetFocus": "Resetuj fokus", "resetFocus": "Pokaż wszystko",
"listView": "Lista", "listView": "Lista",
"graphAriaLabel": "Sieć semantyczna: {clusters} klastrów, {notes} notatek, {bridges} notatek łączących. Strzałki do nawigacji.", "graphAriaLabel": "Mapa motywów: {clusters} motywów, {notes} notatek, {bridges} notatek-mostów. Przełącz na Listę, by łatwiej nawigować.",
"listAriaLabel": "Dostępna lista klastrów z notatkami i połączeniami łączącymi", "listAriaLabel": "Lista motywów, notatek i notatek-mostów",
"dashboardFilterPlaceholder": "Filtruj notatki pomostowe, motywy…", "dashboardFilterPlaceholder": "Filtruj notatki pomostowe, motywy…",
"legendFilterPlaceholder": "Filtruj motywy…", "legendFilterPlaceholder": "Filtruj motywy…",
"legendShowLess": "Pokaż mniej", "legendShowLess": "Pokaż mniej",
@@ -3896,7 +3897,7 @@
"genericError": "Coś poszło nie tak podczas wysyłania do Twojej instancji.", "genericError": "Coś poszło nie tak podczas wysyłania do Twojej instancji.",
"ignore": "opanowane", "ignore": "opanowane",
"processing": "Przetwarzanie…", "processing": "Przetwarzanie…",
"processingDetail": "Generowanie tagów, podsumowania semantycznego i osadzeń.", "processingDetail": "Przygotowanie notatki: etykiety, streszczenie, wyszukiwanie według sensu.",
"publishedOn": "Opublikowano na {domain}", "publishedOn": "Opublikowano na {domain}",
"quitSimulator": "Zamknij symulator", "quitSimulator": "Zamknij symulator",
"realtimeCapture": "Data: przechwytywanie na żywo", "realtimeCapture": "Data: przechwytywanie na żywo",
@@ -4156,7 +4157,7 @@
"match": "Zaloguj się", "match": "Zaloguj się",
"memoryEchoDisabled": "Memory Echo jest wyłączony w ustawieniach AI.", "memoryEchoDisabled": "Memory Echo jest wyłączony w ustawieniach AI.",
"mindMap": "Mapa myśli", "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ń →", "mindMapOpen": "Otwórz mapę spostrzeżeń →",
"mindMapUnavailable": "Mapa myśli niedostępna.", "mindMapUnavailable": "Mapa myśli niedostępna.",
"new": "Utworzone notatki", "new": "Utworzone notatki",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "Dodaj do notatki", "add-link": "Dodaj do notatki",
"bridge": "Pomysł pomostowy", "bridge": "Pomysł pomostowy",
"connect": "Powiązanie semantyczne", "connect": "Połącz notatkę",
"continue": "Kontynuuj", "continue": "Kontynuuj",
"daily": "Dziennik", "daily": "Dziennik",
"explore": "Eksploruj motyw", "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ć.", "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", "resumeOpen": "Wznów",
"review": "Powtarzaj", "review": "Powtarzaj",
"semanticConnection": "Powinowactwo semantyczne", "semanticConnection": "Bliskość",
"sentiment": "Sentyment", "sentiment": "Sentyment",
"sentimentDominant": "Dominujący ton w tym tygodniu", "sentimentDominant": "Dominujący ton w tym tygodniu",
"suggestedBridge": "Łączy {clusterA} & {clusterB}", "suggestedBridge": "Łączy {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retencja, seria i łączna liczba kart.", "flashcards-progress": "Retencja, seria i łączna liczba kart.",
"gmail": "Przechwycone e-maile zsynchronizowane z Gmail.", "gmail": "Przechwycone e-maile zsynchronizowane z Gmail.",
"inbox": "Notatki czekające na przypisanie do notatników.", "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.", "link-suggestions": "Fragmenty do połączenia w Twojej bieżącej notatce.",
"mind-map": "Klastry tematyczne o rozmiarze zależnym od liczby notatek.", "mind-map": "Klastry tematyczne o rozmiarze zależnym od liczby notatek.",
"next-paths": "Następne kroki sugerowane przez AI na podstawie twojej ostatniej pracy.", "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ś.", "resume": "Kontynuuj swoje najnowsze notatki od miejsca, w którym skończyłeś.",
"revision": "Fiszki do powtórki z rozstawionym powtarzaniem.", "revision": "Fiszki do powtórki z rozstawionym powtarzaniem.",
"sentiment": "Ton emocjonalny Twoich notatek w tym tygodniu.", "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." "usage": "Pozostałe kredyty AI i miesięczne limity."
}, },
"widgetDone": "Gotowe", "widgetDone": "Gotowe",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Wskaźnik retencji nauki, seria powtórek i łączna liczba kart.", "flashcards-progress": "Wskaźnik retencji nauki, seria powtórek i łączna liczba kart.",
"gmail": "Przechwycone e-maile zsynchronizowane z integracją Gmail.", "gmail": "Przechwycone e-maile zsynchronizowane z integracją Gmail.",
"inbox": "Notatki bez notatnika. Przypisz je, aby utrzymać porządek w swoim drugim mózgu.", "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ą.", "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.", "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.", "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ś.", "resume": "Twoje ostatnio zaktualizowane notatki. Kontynuuj, gdzie skończyłeś.",
"revision": "Fiszki do powtórki dzisiaj z rozstawionym powtarzaniem.", "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.", "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." "usage": "Miesięczne użycie kredytów AI według funkcji."
}, },
"widgetHelpClose": "Zamknij", "widgetHelpClose": "Zamknij",
@@ -4319,7 +4320,7 @@
"resume": "Wznów tutaj", "resume": "Wznów tutaj",
"revision": "Fiszki", "revision": "Fiszki",
"sentiment": "Sentyment", "sentiment": "Sentyment",
"stats": "Statystyki semantyczne", "stats": "Tematy i notatki",
"usage": "Limit AI" "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.", "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.", "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\".", "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?", "readwiseInfo": "Jak działa Readwise?",
"readwiseSynced": "Synchronizacja Readwise — {{created}} utworzonych, {{updated}} zaktualizowanych", "readwiseSynced": "Synchronizacja Readwise — {{created}} utworzonych, {{updated}} zaktualizowanych",
"readwiseTokenPlaceholder": "Token Readwise…", "readwiseTokenPlaceholder": "Token Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Konwersja zakończona! Utworzono powiązany notatnik.", "convertSuccess": "Konwersja zakończona! Utworzono powiązany notatnik.",
"convertToNotebook": "Konwertuj na notatnik", "convertToNotebook": "Konwertuj na notatnik",
"converting": "Konwertowanie…", "converting": "Konwertowanie…",
"createLocalDb": "Utwórz autonomiczną lokalną bazę danych", "createLocalDb": "Utwórz tabelę w tej notatce",
"createNotebook": "Utwórz notatnik", "createNotebook": "Utwórz notatnik",
"defaultOption1": "Opcja 1", "defaultOption1": "Opcja 1",
"defaultOption2": "Opcja 2", "defaultOption2": "Opcja 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Usunięto przestarzały blok.", "deprecatedBlock": "Usunięto przestarzały blok.",
"displayModeGallery": "Galeria", "displayModeGallery": "Galeria",
"displayModeTable": "Tabela", "displayModeTable": "Tabela",
"echoLoading": "Wyszukiwanie powiązań semantycznych...", "echoLoading": "Szukanie bliskich notatek…",
"echoNameRequired": "Najpierw wpisz nazwę dla tego wiersza, aby wyszukać powiązania semantyczne.", "echoNameRequired": "Najpierw wpisz nazwę tego wiersza, aby szukać bliskich notatek.",
"echoNoMatch": "Nie znaleziono notatek zawierających „{{query}}” w Twojej przestrzeni.", "echoNoMatch": "Nie znaleziono notatek zawierających „{{query}}” w Twojej przestrzeni.",
"echoPopoverTitle": "Rezonanse semantyczne 🔮", "echoPopoverTitle": "Bliskie notatki",
"echoSearchError": "Wystąpił błąd podczas wyszukiwania.", "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.", "emptyTable": "Brak wierszy w tabeli.",
"insertCitation": "Wstaw link w edytorze", "insertCitation": "Wstaw link w edytorze",
"insertDesc": "Osadź ustrukturyzowane dane swojego notatnika", "insertDesc": "Osadź ustrukturyzowane dane swojego notatnika",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Słowo kluczowe", "keywordMatch": "Słowo kluczowe",
"linkToNotebook": "Połącz z notatnikiem", "linkToNotebook": "Połącz z notatnikiem",
"loadError": "Błąd ładowania danych ustrukturyzowanych.", "loadError": "Błąd ładowania danych ustrukturyzowanych.",
"localDbTitle": "Autonomiczna baza danych", "localDbTitle": "Tabela w tej notatce",
"namePlaceholder": "Wprowadź nazwę…", "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.", "noNotebook": "Ten blok wymaga notatnika. Najpierw przenieś tę notatkę do notatnika.",
"noNotebookDesc": "Ten blok wyświetla ustrukturyzowany widok notatnika. Wybierz notatnik do połączenia:", "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.", "noSchema": "Ten notatnik nie ma jeszcze ustrukturyzowanego widoku. Skonfiguruj go w nagłówku notatnika.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Połącz z notatnikiem", "selectNotebook": "Połącz z notatnikiem",
"selectOptionsPlaceholder": "Opcje oddzielone przecinkami", "selectOptionsPlaceholder": "Opcje oddzielone przecinkami",
"semanticEcho": "Rezonanse semantyczne", "semanticEcho": "Rezonanse semantyczne",
"switchToLocalDb": "Przełącz na lokalną bazę danych", "switchToLocalDb": "Wróć do tabeli tej notatki",
"turnIntoLabel": "Wbudowana baza danych", "turnIntoLabel": "Tabela w notatce",
"untitled": "Bez tytułu" "untitled": "Bez tytułu"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Szukaj notatki…", "relationSearch": "Szukaj notatki…",
"selectOptions": "Opcje (jedna na wiersz)", "selectOptions": "Opcje (jedna na wiersz)",
"selectOptionsPlaceholder": "Do zrobienia\\\nW toku\\\nGotowe", "selectOptionsPlaceholder": "Do zrobienia\\\nW toku\\\nGotowe",
"semanticResonances": "Rezonanse semantyczne", "semanticResonances": "Notatki, które się spotykają",
"tagApplied": "pomosty", "tagApplied": "pomosty",
"viewCalendarHint": "Kalendarz — notatki uporządkowane według daty", "viewCalendarHint": "Kalendarz — notatki uporządkowane według daty",
"viewGallery": "Galeria", "viewGallery": "Galeria",

View File

@@ -407,7 +407,7 @@
"placeholder": "Pesquisar", "placeholder": "Pesquisar",
"searchPlaceholder": "Pesquise suas notas...", "searchPlaceholder": "Pesquise suas notas...",
"semanticInProgress": "Pesquisa semântica em andamento...", "semanticInProgress": "Pesquisa semântica em andamento...",
"semanticTooltip": "Pesquisa semântica com IA", "semanticTooltip": "Pesquisa pelo sentido",
"searching": "Pesquisando...", "searching": "Pesquisando...",
"noResults": "Nenhum resultado encontrado", "noResults": "Nenhum resultado encontrado",
"resultsFound": "{count} notas encontradas", "resultsFound": "{count} notas encontradas",
@@ -861,7 +861,7 @@
"compareAll": "Comparar tudo", "compareAll": "Comparar tudo",
"mergeAll": "Mesclar tudo", "mergeAll": "Mesclar tudo",
"close": "Fechar", "close": "Fechar",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % de proximidade",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "Memory Echo", "badgeLabel": "Memory Echo",
"bottomCueConsent": "Conexões IA disponíveis abaixo", "bottomCueConsent": "Conexões IA disponíveis abaixo",
@@ -918,7 +918,7 @@
"noContentReturned": "Nenhum conteúdo de fusão retornado pela API", "noContentReturned": "Nenhum conteúdo de fusão retornado pela API",
"unknownDate": "Data desconhecida" "unknownDate": "Data desconhecida"
}, },
"defaultInsight": "Estas notas parecem estar relacionadas semanticamente.", "defaultInsight": "Estas notas pertencem juntas.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "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", "cleanupError": "Não foi possível limpar as etiquetas",
"indexingComplete": "Indexação concluída: {count} nota(s) processada(s)", "indexingComplete": "Indexação concluída: {count} nota(s) processada(s)",
"indexingError": "Erro durante a indexação", "indexingError": "Erro durante a indexação",
"semanticIndexing": "Indexação Semântica", "semanticIndexing": "Índice para pesquisa pelo sentido",
"semanticIndexingDescription": "Gere vetores para todas as notas para ativar a pesquisa baseada em intenção", "semanticIndexingDescription": "Preparar todas as notas para a pesquisa pelo sentido",
"profile": "Perfil", "profile": "Perfil",
"searchNoResults": "Nenhum resultado encontrado", "searchNoResults": "Nenhum resultado encontrado",
"languageAuto": "Idioma definido como Automático", "languageAuto": "Idioma definido como Automático",
@@ -1664,7 +1664,7 @@
"title": "Recursos", "title": "Recursos",
"description": "Capacidades baseadas em IA", "description": "Capacidades baseadas em IA",
"titleSuggestions": "Sugestões de título com 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", "paragraphReformulation": "Reformulação de parágrafos",
"memoryEcho": "Insights diários do Memory Echo", "memoryEcho": "Insights diários do Memory Echo",
"notebookOrganization": "Organização por cadernos", "notebookOrganization": "Organização por cadernos",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "Reconstruir Índice de Pesquisa", "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", "button": "Reconstruir Índice",
"success": "Indexação concluída: {count} notas processadas", "success": "Indexação concluída: {count} notas processadas",
"failed": "Erro durante a indexação" "failed": "Erro durante a indexação"
@@ -1984,7 +1984,7 @@
"legendWiki": "Vincular a uma nota", "legendWiki": "Vincular a uma nota",
"mentionShort": "Menção", "mentionShort": "Menção",
"moreNodes": "+{count} no mapa", "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.", "noOutbound": "Esta nota ainda não vincula outras notas.",
"noWikiYet": "Sem links para outras notas ainda.", "noWikiYet": "Sem links para outras notas ainda.",
"outboundHelp": "Notas para as quais esta vincula usando [[…]] em seu texto.", "outboundHelp": "Notas para as quais esta vincula usando [[…]] em seu texto.",
@@ -2190,7 +2190,7 @@
"custom": "Personalizado" "custom": "Personalizado"
}, },
"typeDescriptions": { "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", "researcher": "Busca informações sobre um tema",
"monitor": "Observa um caderno e analisa as notas", "monitor": "Observa um caderno e analisa as notas",
"slideGenerator": "Cria uma apresentação do PowerPoint a partir de notas", "slideGenerator": "Cria uma apresentação do PowerPoint a partir de notas",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "ex. Terça-feira IA Watch", "namePlaceholder": "ex. Terça-feira IA Watch",
"description": "Descrição (opcional)", "description": "Descrição (opcional)",
"descriptionPlaceholder": "Resumo semanal de notícias de IA", "descriptionPlaceholder": "Resumo semanal de notícias de IA",
"urlsLabel": "URLs para extrair", "urlsLabel": "Endereços das páginas a ler",
"urlsOptional": "(opcional)", "urlsOptional": "(opcional)",
"sourceNotebook": "Caderno para observar", "sourceNotebook": "Caderno para observar",
"selectNotebook": "Selecione um caderno...", "selectNotebook": "Selecione um caderno...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Notificação por e-mail", "notifyEmail": "Notificação por e-mail",
"notifyEmailHint": "Receba um e-mail com os resultados do agente após cada execução", "notifyEmailHint": "Receba um e-mail com os resultados do agente após cada execução",
"includeImages": "Incluir imagens", "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", "back": "Voltar",
"configuration": "Configuração", "configuration": "Configuração",
"options": "Opções", "options": "Opções",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Watch IA", "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": { "veilleTech": {
"name": "Watch Tech", "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": { "veilleDev": {
"name": "Watch Dev", "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": { "surveillant": {
"name": "Observador de notas", "name": "Observador de notas",
@@ -2431,15 +2431,15 @@
"btnLabel": "Ajuda", "btnLabel": "Ajuda",
"close": "Fechar", "close": "Fechar",
"whatIsAgent": "O que é um agente?", "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?", "howToUse": "Como usar um agente?",
"howToUseContent": "1. Clique em **\"Novo Agente\"** (ou comece a partir de um **Modelo** na parte inferior da página).", "howToUseContent": "1. Clique em **\"Novo Agente\"** (ou comece a partir de um **Modelo** na parte inferior da página).",
"types": "Tipos de agentes", "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.)", "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.", "advancedContent": "Clique em **\"Modo avançado\"** na parte inferior do formulário para acessar definições adicionais.",
"tools": "Ferramentas disponíveis (detalhes)", "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", "frequency": "Frequência e agendamento",
"frequencyContent": "| Frequência | Comportamento\n|-----------|----------\n| **Manual** | Clica em \"Executar\".", "frequencyContent": "| Frequência | Comportamento\n|-----------|----------\n| **Manual** | Clica em \"Executar\".",
"targetNotebook": "Caderno de destino", "targetNotebook": "Caderno de destino",
@@ -2447,7 +2447,7 @@
"templates": "Modelos", "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.", "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", "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": { "tooltips": {
"agentType": "Escolha o tipo de tarefa que o agente realizará. Cada tipo tem capacidades e campos diferentes.", "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.", "researchTopic": "O tema que o agente pesquisará na web. Seja específico para melhores resultados.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Atualizar para Pro", "upgradeTitle": "Atualizar para Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro inclui:", "proIncludes": "Pro inclui:",
"proSearch": "100 semantic searches / month", "proSearch": "1 000 créditos IA / mês",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Geração de diagrama", "featureDiagrams": "Geração de diagrama",
"featureFlashcards": "Flashcards IA", "featureFlashcards": "Cartões de revisão",
"featurePublishEnhance": "Publicação com IA", "featurePublishEnhance": "Publicação com IA",
"featureSlides": "Geração de slides", "featureSlides": "Geração de slides",
"featureVoice": "Transcrição de voz", "featureVoice": "Transcrição de voz",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 reformulações / mês", "businessFeature3": "500 reformulações / mês",
"businessFeature4": "1.000 mensagens de chat / mês", "businessFeature4": "1.000 mensagens de chat / mês",
"enterpriseTitle": "Enterprise", "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", "contactSales": "Contactar vendas",
"startCheckout": "Começar", "startCheckout": "Começar",
"checkoutLoading": "A carregar pagamento…", "checkoutLoading": "A carregar pagamento…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Sua assinatura renova automaticamente.", "paidPlanDesc": "Sua assinatura renova automaticamente.",
"businessDescription": "Para equipes e líderes de produto.", "businessDescription": "Para equipes e líderes de produto.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Início de sessão único para toda a equipa",
"enterpriseFeature3": "Suporte dedicado", "enterpriseFeature3": "Suporte dedicado",
"enterpriseFeature4": "Faturação personalizada", "enterpriseFeature4": "Faturação personalizada",
"enterpriseFeature5": "SLA garantido", "enterpriseFeature5": "Prazo de resposta garantido",
"subtitle": "Escolha o plano que mais te convém", "subtitle": "Escolha o plano que mais te convém",
"freeDescription": "Para descobrir Memento", "freeDescription": "Para descobrir Memento",
"freeF1": "30 pesquisas semânticas", "freeF1": "30 pesquisas semânticas",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Falha ao buscar o status de cobrança", "fetchStatusFailed": "Falha ao buscar o status de cobrança",
"fetchQuotasFailed": "Falha ao buscar as cotas", "fetchQuotasFailed": "Falha ao buscar as cotas",
"fetchInvoicesFailed": "Falha ao carregar o histórico de cobrança.", "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", "cancelSubscription": "Cancelar subscrição",
"changeOffer": "Mudar de oferta", "changeOffer": "Mudar de oferta",
"downgradeToFree": "Voltar à oferta gratuita", "downgradeToFree": "Voltar à oferta gratuita",
@@ -3379,13 +3380,13 @@
"cta": "Falar conosco", "cta": "Falar conosco",
"feature0": "Tudo do Business", "feature0": "Tudo do Business",
"feature1": "Agentes ilimitados", "feature1": "Agentes ilimitados",
"feature2": "SSO / SAML", "feature2": "Início de sessão único para toda a equipa",
"feature3": "Audit logs e SLA", "feature3": "Registo de atividade e prazo de resposta garantido",
"feature4": "Suporte dedicado", "feature4": "Suporte dedicado",
"feature5": "Onboarding ao vivo" "feature5": "Acompanhamento na instalação"
}, },
"basicPrice": "Grátis", "basicPrice": "Grátis",
"savePercent": "Economize ~17%", "savePercent": "Economize ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Exclua permanente e irreversivelmente sua conta e todos os dados associados.", "sectionDescription": "Exclua permanente e irreversivelmente sua conta e todos os dados associados.",
"whatWillBeDeleted": "O seguinte será excluído permanentemente:", "whatWillBeDeleted": "O seguinte será excluído permanentemente:",
"item1": "Todas as notas, cadernos e anexos", "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", "item3": "Todas as chaves API BYOK",
"item4": "Todas as conversas de IA e sessões de brainstorm", "item4": "Todas as conversas de IA e sessões de brainstorm",
"item5": "Histórico de cota e uso", "item5": "Histórico de cota e uso",
@@ -3559,7 +3560,7 @@
"step_features_title": "Seus superpoderes de IA", "step_features_title": "Seus superpoderes de IA",
"step_features_subtitle": "Escolha por onde começar.", "step_features_subtitle": "Escolha por onde começar.",
"step_features_cta": "Vamos lá!", "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_search_desc": "Encontre qualquer nota por significado, não apenas por palavras-chave.",
"feature_flashcards_title": "Flashcards IA", "feature_flashcards_title": "Flashcards IA",
"feature_flashcards_desc": "Gere cartões de revisão das suas notas com um clique.", "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_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_title": "Exportar sessão",
"hint_brainstorm_export_desc": "Exporte a sessão de brainstorming como nota estruturada no carnet escolhido.", "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_title": "Temas 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_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_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_bridge_desc": "As notas-ponte ligam vários temas. Mostram onde as ideias se cruzam.",
"hint_insights_refresh_title": "Atualizar clusters", "hint_insights_refresh_title": "Atualizar temas",
"hint_insights_refresh_desc": "Se adicionou novas notas, clique em \"Atualizar\" para recalcular os clusters." "hint_insights_refresh_desc": "Se adicionou notas, clique em «Atualizar» para recalcular os temas."
}, },
"blockAction": { "blockAction": {
"moveUp": "Mover bloco para cima", "moveUp": "Mover bloco para cima",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "Conexões", "title": "Conexões",
"toggleMenu": "Mostrar ou ocultar o menu", "toggleMenu": "Mostrar ou ocultar o menu",
"subtitle": "Descobre a arquitetura oculta do teu conhecimento", "subtitle": "Veja como as suas notas se ligam",
"resync": "Atualizar", "resync": "Atualizar",
"mapping": "Mapeando…", "mapping": "Mapeando…",
"loading": "A carregar notas…", "loading": "A carregar notas…",
"mappingTitle": "Mapeando o teu conhecimento…", "mappingTitle": "Mapeando o teu conhecimento…",
"mappingHint": "Pode demorar de um a três minutos. Pode continuar a navegar; a página atualizar-se-á automaticamente.", "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", "analyzeNow": "Atualizar os temas",
"emptyNeedMoreNotes": "Adicione mais {count} notas para desbloquear o clustering semântico (mínimo 10).", "emptyNeedMoreNotes": "Adicione mais {count} notas para agrupar os seus temas (mínimo 10).",
"embeddingsHint": "Apenas {indexed} de {total} notas indexadas para IA.", "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.", "vsGraphHint": "Não é o \"Mapa de ligações\": aqui a IA agrupa por significado, não por ligações.",
"openGraphMap": "Abrir mapa de links", "openGraphMap": "Abrir mapa de links",
"analysisFailed": "Análise falhou. Verifica as configurações de IA.", "analysisFailed": "Análise falhou. Verifica as configurações de IA.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "notas", "graphNotesLabel": "notas",
"clusterFallback": "Tema {index}", "clusterFallback": "Tema {index}",
"unclusteredNotes": "{count} notas não atribuídas a nenhum tema (ocultas do grafo).", "unclusteredNotes": "{count} notas não atribuídas a nenhum tema (ocultas do grafo).",
"emptyTitle": "Descobre os teus clusters de conhecimento", "emptyTitle": "Descobre os teus temas",
"emptyDescription": "Clique em \"Ressincronizar rede\" para analisar as suas notas e encontrar ligações ocultas", "emptyDescription": "Clique em «Atualizar» para agrupar as suas notas por temas.",
"stats": { "stats": {
"clusters": "Clusters", "clusters": "Clusters",
"bridgeNotes": "Notas ponte", "bridgeNotes": "Notas ponte",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "Clusters semânticos", "title": "Temas",
"notesCount": "{count} notas", "notesCount": "{count} notas",
"centralNotes": "Notas centrais", "centralNotes": "Notas centrais",
"emptyCluster": "Sem notas neste cluster" "emptyCluster": "Sem notas neste tema"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Afinidade {score}%", "affinity": "Afinidade {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "Ressincronize a rede para atualizar os pares de ponte.", "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": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Grafo", "viewGraph": "Grafo",
"viewDashboard": "Painel", "viewDashboard": "Painel",
"isolatedClusters": { "isolatedClusters": {
"title": "Clusters isolados ({count})", "title": "Temas isolados ({count})",
"badge": "Não conectado", "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": { "focusCluster": {
"title": "Foco de cluster ativo", "title": "Tema aberto",
"description": "Este cluster temático reúne {count} notas complementares. Clique numa nota para abri-la.", "description": "Este tema reúne {count} notas. Clique numa nota para a abrir.",
"close": "Fechar" "close": "Fechar"
}, },
"badgeDominant": "Dominante", "badgeDominant": "Dominante",
"bridgeCount": "ponte(s)", "bridgeCount": "ponte(s)",
"echoTitle": "Continua a regressar a esta ideia", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "tipIsolatedAction": "Estes temas não têm notas que os liguem ao restante pensamento.",
"recalcSystem": { "recalcSystem": {
"title": "Sistema de recálculo", "title": "Atualização de temas",
"statusSynced": "Sincronizado", "statusSynced": "Em dia",
"scheduledCron": "Programado", "scheduledCron": "Atualização automática",
"lastSync": "Última sync" "lastSync": "Última atualização"
}, },
"resetFocus": "Repor foco", "resetFocus": "Mostrar tudo",
"listView": "Lista", "listView": "Lista",
"graphAriaLabel": "Rede semântica: {clusters} clusters, {notes} notas, {bridges} notas-ponte. Use as setas.", "graphAriaLabel": "Mapa de temas: {clusters} temas, {notes} notas, {bridges} notas-ponte. Passe à vista Lista para navegar mais facilmente.",
"listAriaLabel": "Lista de clusters acessível com notas e ligações-ponte", "listAriaLabel": "Lista de temas, notas e notas-ponte",
"dashboardFilterPlaceholder": "Filtrar notas-ponte, temas…", "dashboardFilterPlaceholder": "Filtrar notas-ponte, temas…",
"legendFilterPlaceholder": "Filtrar temas…", "legendFilterPlaceholder": "Filtrar temas…",
"legendShowLess": "Mostrar menos", "legendShowLess": "Mostrar menos",
@@ -3896,7 +3897,7 @@
"genericError": "Algo deu errado ao enviar para sua instância.", "genericError": "Algo deu errado ao enviar para sua instância.",
"ignore": "dominado", "ignore": "dominado",
"processing": "Processando…", "processing": "Processando…",
"processingDetail": "Gerando tags, resumo semântico e embeddings.", "processingDetail": "A preparar a nota: etiquetas, resumo, pesquisa pelo sentido.",
"publishedOn": "Publicado em {domain}", "publishedOn": "Publicado em {domain}",
"quitSimulator": "Fechar simulador", "quitSimulator": "Fechar simulador",
"realtimeCapture": "Data: captura ao vivo", "realtimeCapture": "Data: captura ao vivo",
@@ -4156,7 +4157,7 @@
"match": "Entrar", "match": "Entrar",
"memoryEchoDisabled": "Memory Echo está desativado nas suas configurações de IA.", "memoryEchoDisabled": "Memory Echo está desativado nas suas configurações de IA.",
"mindMap": "Mapa mental", "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 →", "mindMapOpen": "Abrir mapa de insights →",
"mindMapUnavailable": "Mapa mental indisponível.", "mindMapUnavailable": "Mapa mental indisponível.",
"new": "notas criadas", "new": "notas criadas",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "Adicionar à nota", "add-link": "Adicionar à nota",
"bridge": "Ideia ponte", "bridge": "Ideia ponte",
"connect": "Link semântico", "connect": "Ligar uma nota",
"continue": "Continuar", "continue": "Continuar",
"daily": "Diário", "daily": "Diário",
"explore": "Explorar tema", "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.", "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", "resumeOpen": "Retomar",
"review": "Revisar", "review": "Revisar",
"semanticConnection": "Afinidade semântica", "semanticConnection": "Proximidade",
"sentiment": "Sentimento", "sentiment": "Sentimento",
"sentimentDominant": "Tom dominante esta semana", "sentimentDominant": "Tom dominante esta semana",
"suggestedBridge": "Ligar {clusterA} & {clusterB}", "suggestedBridge": "Ligar {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Retenção, sequência e total de cartões.", "flashcards-progress": "Retenção, sequência e total de cartões.",
"gmail": "Capturas de e-mail sincronizadas do Gmail.", "gmail": "Capturas de e-mail sincronizadas do Gmail.",
"inbox": "Notas aguardando para serem arquivadas em cadernos.", "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.", "link-suggestions": "Passagens para vincular em sua nota atual.",
"mind-map": "Clusters de temas dimensionados pelo volume de notas.", "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.", "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.", "resume": "Continue suas notas mais recentes de onde parou.",
"revision": "Flashcards pendentes para revisão com repetição espaçada.", "revision": "Flashcards pendentes para revisão com repetição espaçada.",
"sentiment": "Tom emocional das suas notas esta semana.", "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." "usage": "Créditos de IA restantes e limites mensais."
}, },
"widgetDone": "Concluído", "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.", "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.", "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.", "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.", "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.", "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.", "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.", "resume": "Suas notas atualizadas mais recentemente. Continue de onde parou.",
"revision": "Flashcards pendentes para revisão hoje com repetição espaçada.", "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.", "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." "usage": "Uso mensal de créditos de IA por recurso."
}, },
"widgetHelpClose": "Fechar", "widgetHelpClose": "Fechar",
@@ -4319,7 +4320,7 @@
"resume": "Retomar aqui", "resume": "Retomar aqui",
"revision": "Flashcards", "revision": "Flashcards",
"sentiment": "Sentimento", "sentiment": "Sentimento",
"stats": "Estatísticas semânticas", "stats": "Temas e notas",
"usage": "Cota IA" "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.", "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.", "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\".", "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?", "readwiseInfo": "Como o Readwise funciona?",
"readwiseSynced": "Sincronização do Readwise — {{created}} criadas, {{updated}} atualizadas", "readwiseSynced": "Sincronização do Readwise — {{created}} criadas, {{updated}} atualizadas",
"readwiseTokenPlaceholder": "Token do Readwise…", "readwiseTokenPlaceholder": "Token do Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Conversão concluída! Caderno vinculado criado.", "convertSuccess": "Conversão concluída! Caderno vinculado criado.",
"convertToNotebook": "Converter em caderno", "convertToNotebook": "Converter em caderno",
"converting": "Convertendo…", "converting": "Convertendo…",
"createLocalDb": "Criar um banco de dados local autônomo", "createLocalDb": "Criar uma tabela nesta nota",
"createNotebook": "Criar caderno", "createNotebook": "Criar caderno",
"defaultOption1": "Opção 1", "defaultOption1": "Opção 1",
"defaultOption2": "Opção 2", "defaultOption2": "Opção 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Bloco desatualizado removido.", "deprecatedBlock": "Bloco desatualizado removido.",
"displayModeGallery": "Galeria", "displayModeGallery": "Galeria",
"displayModeTable": "Mesa", "displayModeTable": "Mesa",
"echoLoading": "Buscando conexões semânticas...", "echoLoading": "A procurar notas próximas…",
"echoNameRequired": "Digite primeiro um nome para esta linha para buscar conexões semânticas.", "echoNameRequired": "Escreva primeiro um nome nesta linha para procurar notas próximas.",
"echoNoMatch": "Nenhuma nota contendo \"{{query}}\" encontrada no seu espaço.", "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.", "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.", "emptyTable": "Sem linhas na tabela.",
"insertCitation": "Inserir link no editor", "insertCitation": "Inserir link no editor",
"insertDesc": "Incorpore os dados estruturados do seu caderno", "insertDesc": "Incorpore os dados estruturados do seu caderno",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Palavra-chave", "keywordMatch": "Palavra-chave",
"linkToNotebook": "Vincular a um caderno", "linkToNotebook": "Vincular a um caderno",
"loadError": "Erro ao carregar dados estruturados.", "loadError": "Erro ao carregar dados estruturados.",
"localDbTitle": "Banco de dados autônomo", "localDbTitle": "Tabela nesta nota",
"namePlaceholder": "Digite um nome…", "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.", "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:", "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.", "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", "selectNotebook": "Vincular a um caderno",
"selectOptionsPlaceholder": "Opções separadas por vírgulas", "selectOptionsPlaceholder": "Opções separadas por vírgulas",
"semanticEcho": "Ressonâncias semânticas", "semanticEcho": "Ressonâncias semânticas",
"switchToLocalDb": "Mudar para banco de dados local", "switchToLocalDb": "Voltar à tabela desta nota",
"turnIntoLabel": "Banco de dados embutido", "turnIntoLabel": "Tabela na nota",
"untitled": "Sem título" "untitled": "Sem título"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Pesquisar uma nota…", "relationSearch": "Pesquisar uma nota…",
"selectOptions": "Opções (uma por linha)", "selectOptions": "Opções (uma por linha)",
"selectOptionsPlaceholder": "A fazer\\\nEm progresso\\\nConcluído", "selectOptionsPlaceholder": "A fazer\\\nEm progresso\\\nConcluído",
"semanticResonances": "Ressonâncias semânticas", "semanticResonances": "Notas que se encontram",
"tagApplied": "pontes", "tagApplied": "pontes",
"viewCalendarHint": "Calendário — suas notas organizadas por data", "viewCalendarHint": "Calendário — suas notas organizadas por data",
"viewGallery": "Galeria", "viewGallery": "Galeria",

View File

@@ -407,7 +407,7 @@
"placeholder": "Поиск", "placeholder": "Поиск",
"searchPlaceholder": "Поиск в заметках...", "searchPlaceholder": "Поиск в заметках...",
"semanticInProgress": "ИИ-поиск...", "semanticInProgress": "ИИ-поиск...",
"semanticTooltip": "Семантический поиск с ИИ", "semanticTooltip": "Поиск по смыслу",
"searching": "Поиск...", "searching": "Поиск...",
"noResults": "Результаты не найдены", "noResults": "Результаты не найдены",
"resultsFound": "Найдено заметок: {count}", "resultsFound": "Найдено заметок: {count}",
@@ -861,7 +861,7 @@
"compareAll": "Сравнить всё", "compareAll": "Сравнить всё",
"mergeAll": "Объединить всё", "mergeAll": "Объединить всё",
"close": "Закрыть", "close": "Закрыть",
"affinityBadge": "{percentage} % d'affinité sémantique", "affinityBadge": "{percentage} % близости",
"backToNote": "Revenir à ma note", "backToNote": "Revenir à ma note",
"badgeLabel": "Эхо памяти", "badgeLabel": "Эхо памяти",
"bottomCueConsent": "AI-связи доступны ниже", "bottomCueConsent": "AI-связи доступны ниже",
@@ -918,7 +918,7 @@
"noContentReturned": "API не вернул содержимого слияния", "noContentReturned": "API не вернул содержимого слияния",
"unknownDate": "Неизвестная дата" "unknownDate": "Неизвестная дата"
}, },
"defaultInsight": "Эти записи кажутся семантически связанными.", "defaultInsight": "Эти заметки связаны.",
"preview": { "preview": {
"loadError": "Impossible de charger le contenu de cette note.", "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." "subtitle": "Aperçu de la note liée — vous ne quittez pas celle que vous éditez."
@@ -1037,8 +1037,8 @@
"cleanupError": "Не удалось очистить метки", "cleanupError": "Не удалось очистить метки",
"indexingComplete": "Индексация завершена: обработано {count} заметок", "indexingComplete": "Индексация завершена: обработано {count} заметок",
"indexingError": "Ошибка при индексации", "indexingError": "Ошибка при индексации",
"semanticIndexing": "Семантическая индексация", "semanticIndexing": "Индекс для поиска по смыслу",
"semanticIndexingDescription": "Создать векторы для всех заметок для поиска по смыслу", "semanticIndexingDescription": "Подготовить все заметки для поиска по смыслу",
"profile": "Профиль", "profile": "Профиль",
"searchNoResults": "Результаты не найдены", "searchNoResults": "Результаты не найдены",
"languageAuto": "Язык установлен на Авто", "languageAuto": "Язык установлен на Авто",
@@ -1664,7 +1664,7 @@
"title": "Функции", "title": "Функции",
"description": "Возможности на базе ИИ", "description": "Возможности на базе ИИ",
"titleSuggestions": "Предложения заголовков с ИИ", "titleSuggestions": "Предложения заголовков с ИИ",
"semanticSearch": "Семантический поиск с эмбеддингами", "semanticSearch": "Поиск по смыслу",
"paragraphReformulation": "Реформулировка абзацев", "paragraphReformulation": "Реформулировка абзацев",
"memoryEcho": "Ежедневные идеи Memory Echo", "memoryEcho": "Ежедневные идеи Memory Echo",
"notebookOrganization": "Организация по блокнотам", "notebookOrganization": "Организация по блокнотам",
@@ -1779,7 +1779,7 @@
}, },
"indexing": { "indexing": {
"title": "Перестроить поисковый индекс", "title": "Перестроить поисковый индекс",
"description": "Перегенерировать эмбеддинги для всех заметок для улучшения семантического поиска.", "description": "Пересчитать индекс всех заметок, чтобы улучшить поиск по смыслу.",
"button": "Перестроить индекс", "button": "Перестроить индекс",
"success": "Индексация завершена: обработано {count} заметок", "success": "Индексация завершена: обработано {count} заметок",
"failed": "Ошибка при индексации" "failed": "Ошибка при индексации"
@@ -1984,7 +1984,7 @@
"legendWiki": "Ссылка на заметку", "legendWiki": "Ссылка на заметку",
"mentionShort": "Упоминание", "mentionShort": "Упоминание",
"moreNodes": "+{count} на карте", "moreNodes": "+{count} на карте",
"noInbound": "Никакие входящие wiki-ссылки не указывают на эту заметку.", "noInbound": "Никакая другая заметка не указывает на эту.",
"noOutbound": "Эта запись ещё не связана с другими записями.", "noOutbound": "Эта запись ещё не связана с другими записями.",
"noWikiYet": "Пока нет ссылок на другие заметки.", "noWikiYet": "Пока нет ссылок на другие заметки.",
"outboundHelp": "Заметки, на которые она ссылается, используя [[…]] в тексте.", "outboundHelp": "Заметки, на которые она ссылается, используя [[…]] в тексте.",
@@ -2190,7 +2190,7 @@
"custom": "Пользовательский" "custom": "Пользовательский"
}, },
"typeDescriptions": { "typeDescriptions": {
"scraper": "Собирает данные с нескольких сайтов и создаёт сводку", "scraper": "Читает несколько сайтов и пишет сводку",
"researcher": "Ищет информацию по теме", "researcher": "Ищет информацию по теме",
"monitor": "Следит за блокнотом и анализирует заметки", "monitor": "Следит за блокнотом и анализирует заметки",
"slideGenerator": "Создает презентацию PowerPoint из заметок.", "slideGenerator": "Создает презентацию PowerPoint из заметок.",
@@ -2203,7 +2203,7 @@
"namePlaceholder": "напр. Еженедельный обзор ИИ", "namePlaceholder": "напр. Еженедельный обзор ИИ",
"description": "Описание (необязательно)", "description": "Описание (необязательно)",
"descriptionPlaceholder": "Еженедельная сводка новостей ИИ", "descriptionPlaceholder": "Еженедельная сводка новостей ИИ",
"urlsLabel": "URL-адреса для сбора", "urlsLabel": "Адреса страниц для чтения",
"urlsOptional": "(необязательно)", "urlsOptional": "(необязательно)",
"sourceNotebook": "Блокнот для наблюдения", "sourceNotebook": "Блокнот для наблюдения",
"selectNotebook": "Выберите блокнот...", "selectNotebook": "Выберите блокнот...",
@@ -2248,7 +2248,7 @@
"notifyEmail": "Email-уведомление", "notifyEmail": "Email-уведомление",
"notifyEmailHint": "Получайте письмо с результатами агента после каждого запуска", "notifyEmailHint": "Получайте письмо с результатами агента после каждого запуска",
"includeImages": "Включить изображения", "includeImages": "Включить изображения",
"includeImagesHint": "Извлекать изображения со страниц и прикреплять к созданной заметке", "includeImagesHint": "Брать изображения с прочитанных страниц и прикреплять к заметке",
"back": "Назад", "back": "Назад",
"configuration": "Конфигурация", "configuration": "Конфигурация",
"options": "Параметры", "options": "Параметры",
@@ -2347,15 +2347,15 @@
}, },
"veilleAI": { "veilleAI": {
"name": "Обзор ИИ", "name": "Обзор ИИ",
"description": "Собирает данные с 5 сайтов, специализирующихся на ИИ, и генерирует еженедельную сводку." "description": "Читает 5 сайтов об ИИ и пишет еженедельную сводку."
}, },
"veilleTech": { "veilleTech": {
"name": "Обзор технологий", "name": "Обзор технологий",
"description": "Собирает данные с крупных технических сайтов и создаёт сводку новостей." "description": "Читает крупные технические сайты и пишет сводку новостей."
}, },
"veilleDev": { "veilleDev": {
"name": "Обзор разработок", "name": "Обзор разработок",
"description": "Собирает данные с сайтов для разработчиков и обобщает новые технологии и фреймворки." "description": "Читает сайты для разработчиков и кратко описывает новинки."
}, },
"surveillant": { "surveillant": {
"name": "Наблюдатель за заметками", "name": "Наблюдатель за заметками",
@@ -2402,7 +2402,7 @@
"tools": { "tools": {
"title": "Инструменты Агента", "title": "Инструменты Агента",
"webSearch": "Веб-поиск", "webSearch": "Веб-поиск",
"webScrape": "Веб-скрейпинг", "webScrape": "Чтение страниц",
"noteSearch": "Поиск Заметок", "noteSearch": "Поиск Заметок",
"noteRead": "Читать Заметку", "noteRead": "Читать Заметку",
"noteCreate": "Создать Заметку", "noteCreate": "Создать Заметку",
@@ -2431,15 +2431,15 @@
"btnLabel": "Помощь", "btnLabel": "Помощь",
"close": "Закрыть", "close": "Закрыть",
"whatIsAgent": "Что такое агент?", "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": "Как использовать агента?", "howToUse": "Как использовать агента?",
"howToUseContent": "1. Нажмите **«Новый агент»** (или начните с **шаблона** в нижней части страницы).", "howToUseContent": "1. Нажмите **«Новый агент»** (или начните с **шаблона** в нижней части страницы).",
"types": "Типы агентов", "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": "Расширенный режим (Инструкции ИИ, Макс. итерации)", "advanced": "Расширенный режим (Инструкции ИИ, Макс. итерации)",
"advancedContent": "Нажмите **«Расширенный режим»** в нижней части формы, чтобы получить доступ к дополнительным настройкам.", "advancedContent": "Нажмите **«Расширенный режим»** в нижней части формы, чтобы получить доступ к дополнительным настройкам.",
"tools": "Доступные инструменты (подробно)", "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": "Частота и расписание", "frequency": "Частота и расписание",
"frequencyContent": "| Частота | Поведение\n|-----------|----------\n| **Вручную** | Вы нажимаете «Запустить».", "frequencyContent": "| Частота | Поведение\n|-----------|----------\n| **Вручную** | Вы нажимаете «Запустить».",
"targetNotebook": "Целевой блокнот", "targetNotebook": "Целевой блокнот",
@@ -2447,7 +2447,7 @@
"templates": "Шаблоны", "templates": "Шаблоны",
"templatesContent": "Templates are pre-configured agents ready to install in one click. You'll find them at the **bottom of the Agents page**.\n\nAvailable templates 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.", "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": "Советы и устранение неполадок",
"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": { "tooltips": {
"agentType": "Выберите тип задачи, которую будет выполнять агент. Каждый тип имеет разные возможности и поля.", "agentType": "Выберите тип задачи, которую будет выполнять агент. Каждый тип имеет разные возможности и поля.",
"researchTopic": "Тема, которую агент будет исследовать в интернете. Будьте конкретны для лучших результатов.", "researchTopic": "Тема, которую агент будет исследовать в интернете. Будьте конкретны для лучших результатов.",
@@ -3011,7 +3011,7 @@
"upgradeTitle": "Обновить до Pro", "upgradeTitle": "Обновить до Pro",
"upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.", "upgradeDescription": "You've used all your AI Discovery Pack credits. Upgrade to Pro for higher limits and additional features.",
"proIncludes": "Pro включает:", "proIncludes": "Pro включает:",
"proSearch": "100 semantic searches / month", "proSearch": "1000 кредитов ИИ / месяц",
"proTags": "200 auto-tags / month", "proTags": "200 auto-tags / month",
"proTitles": "200 auto-titles / month", "proTitles": "200 auto-titles / month",
"proReformulate": "50 reformulations / month", "proReformulate": "50 reformulations / month",
@@ -3023,7 +3023,7 @@
"featureBrainstormEnrich": "Enrichissements brainstorm", "featureBrainstormEnrich": "Enrichissements brainstorm",
"featureBrainstormExpand": "Extensions brainstorm", "featureBrainstormExpand": "Extensions brainstorm",
"featureDiagrams": "Генерация диаграммы", "featureDiagrams": "Генерация диаграммы",
"featureFlashcards": "Карточки ИИ", "featureFlashcards": "Карточки для повторения",
"featurePublishEnhance": "AI-публикация", "featurePublishEnhance": "AI-публикация",
"featureSlides": "Генерация слайдов", "featureSlides": "Генерация слайдов",
"featureVoice": "Голосовая транскрипция", "featureVoice": "Голосовая транскрипция",
@@ -3100,7 +3100,7 @@
"businessFeature3": "500 перефразирований / месяц", "businessFeature3": "500 перефразирований / месяц",
"businessFeature4": "1 000 сообщений чата / месяц", "businessFeature4": "1 000 сообщений чата / месяц",
"enterpriseTitle": "Enterprise", "enterpriseTitle": "Enterprise",
"enterpriseDescription": "Пользовательские квоты, SSO, приоритетная поддержка.", "enterpriseDescription": "Пользовательские квоты, единый вход для команды, приоритетная поддержка.",
"contactSales": "Связаться с продажами", "contactSales": "Связаться с продажами",
"startCheckout": "Начать", "startCheckout": "Начать",
"checkoutLoading": "Загрузка оплаты…", "checkoutLoading": "Загрузка оплаты…",
@@ -3136,10 +3136,10 @@
"paidPlanDesc": "Ваша подписка продлевается автоматически.", "paidPlanDesc": "Ваша подписка продлевается автоматически.",
"businessDescription": "Для команд и руководителей продуктов.", "businessDescription": "Для команд и руководителей продуктов.",
"enterpriseFeature1": "Unlimited quotas", "enterpriseFeature1": "Unlimited quotas",
"enterpriseFeature2": "SSO / SAML", "enterpriseFeature2": "Единый вход для всей команды",
"enterpriseFeature3": "Выделенная поддержка", "enterpriseFeature3": "Выделенная поддержка",
"enterpriseFeature4": "Индивидуальный биллинг", "enterpriseFeature4": "Индивидуальный биллинг",
"enterpriseFeature5": "Гарантированное SLA", "enterpriseFeature5": "Гарантированное время ответа",
"subtitle": "Выберите подходящий план", "subtitle": "Выберите подходящий план",
"freeDescription": "Чтобы узнать Memento", "freeDescription": "Чтобы узнать Memento",
"freeF1": "30 семантических поисков", "freeF1": "30 семантических поисков",
@@ -3176,7 +3176,8 @@
"fetchStatusFailed": "Не удалось получить статус биллинга", "fetchStatusFailed": "Не удалось получить статус биллинга",
"fetchQuotasFailed": "Не удалось получить квоты", "fetchQuotasFailed": "Не удалось получить квоты",
"fetchInvoicesFailed": "Не удалось загрузить историю счетов.", "fetchInvoicesFailed": "Не удалось загрузить историю счетов.",
"savePercent": "Экономия ~17%", "savePercent": "Экономия ~{percent} %",
"billedYearTotal": "то есть {price} в год",
"cancelSubscription": "Отменить подписку", "cancelSubscription": "Отменить подписку",
"changeOffer": "Сменить тариф", "changeOffer": "Сменить тариф",
"downgradeToFree": "Вернуться к бесплатному тарифу", "downgradeToFree": "Вернуться к бесплатному тарифу",
@@ -3379,13 +3380,13 @@
"cta": "Связаться", "cta": "Связаться",
"feature0": "Всё из Business", "feature0": "Всё из Business",
"feature1": "Безлимитные агенты", "feature1": "Безлимитные агенты",
"feature2": "SSO / SAML", "feature2": "Единый вход для всей команды",
"feature3": "Audit logs и SLA", "feature3": "Журнал действий и гарантированное время ответа",
"feature4": "Выделенная поддержка", "feature4": "Выделенная поддержка",
"feature5": "Live-онбординг" "feature5": "Помощь при запуске"
}, },
"basicPrice": "Бесплатно", "basicPrice": "Бесплатно",
"savePercent": "Экономия ~17%", "savePercent": "Экономия ~{percent} %",
"proMonthly": "9,90€", "proMonthly": "9,90€",
"proAnnualMonthly": "8,25€", "proAnnualMonthly": "8,25€",
"businessMonthly": "29,90€", "businessMonthly": "29,90€",
@@ -3494,7 +3495,7 @@
"sectionDescription": "Безвозвратно удалить ваш аккаунт и все связанные данные.", "sectionDescription": "Безвозвратно удалить ваш аккаунт и все связанные данные.",
"whatWillBeDeleted": "Следующее будет удалено навсегда:", "whatWillBeDeleted": "Следующее будет удалено навсегда:",
"item1": "Все заметки, блокноты и вложения", "item1": "Все заметки, блокноты и вложения",
"item2": "Все семантические эмбеддинги pgvector", "item2": "Индекс, который связывает ваши заметки",
"item3": "Все BYOK API-ключи", "item3": "Все BYOK API-ключи",
"item4": "Все ИИ-диалоги и сессии брейншторма", "item4": "Все ИИ-диалоги и сессии брейншторма",
"item5": "История квот и использования", "item5": "История квот и использования",
@@ -3559,7 +3560,7 @@
"step_features_title": "Ваши суперспособности ИИ", "step_features_title": "Ваши суперспособности ИИ",
"step_features_subtitle": "Выберите, с чего начать.", "step_features_subtitle": "Выберите, с чего начать.",
"step_features_cta": "Поехали!", "step_features_cta": "Поехали!",
"feature_search_title": "Семантический поиск", "feature_search_title": "Поиск по смыслу",
"feature_search_desc": "Находите любую заметку по смыслу, а не только по ключевым словам.", "feature_search_desc": "Находите любую заметку по смыслу, а не только по ключевым словам.",
"feature_flashcards_title": "Карточки ИИ", "feature_flashcards_title": "Карточки ИИ",
"feature_flashcards_desc": "Создавайте карточки для повторения из заметок одним кликом.", "feature_flashcards_desc": "Создавайте карточки для повторения из заметок одним кликом.",
@@ -3614,12 +3615,12 @@
"hint_brainstorm_deepen_desc": "Нажмите на карточку идеи, чтобы расширить её под-идеями и изучить.", "hint_brainstorm_deepen_desc": "Нажмите на карточку идеи, чтобы расширить её под-идеями и изучить.",
"hint_brainstorm_export_title": "Экспортировать сессию", "hint_brainstorm_export_title": "Экспортировать сессию",
"hint_brainstorm_export_desc": "Экспортируйте сессию как структурированную заметку в выбранный карнет.", "hint_brainstorm_export_desc": "Экспортируйте сессию как структурированную заметку в выбранный карнет.",
"hint_insights_clusters_title": "Кластеры заметок", "hint_insights_clusters_title": "Темы заметок",
"hint_insights_clusters_desc": "Ваши заметки автоматически группируются в тематические кластеры. Нажмите для деталей.", "hint_insights_clusters_desc": "Ваши заметки сгруппированы по темам. Нажмите тему, чтобы увидеть заметки.",
"hint_insights_bridge_title": "Мостовые заметки", "hint_insights_bridge_title": "Мостовые заметки",
"hint_insights_bridge_desc": "Мостовые заметки связывают несколько кластеров и выделены, так как содержат важные связи.", "hint_insights_bridge_desc": "Связующие заметки соединяют несколько тем. Они показывают, где идеи пересекаются.",
"hint_insights_refresh_title": "Обновить кластеры", "hint_insights_refresh_title": "Обновить темы",
"hint_insights_refresh_desc": "Если вы добавили новые заметки, нажмите «Обновить» для пересчёта кластеров." "hint_insights_refresh_desc": "Если вы добавили заметки, нажмите «Обновить», чтобы пересчитать темы."
}, },
"blockAction": { "blockAction": {
"moveUp": "Переместить блок вверх", "moveUp": "Переместить блок вверх",
@@ -3657,15 +3658,15 @@
"insightsView": { "insightsView": {
"title": "Связи", "title": "Связи",
"toggleMenu": "Показать или скрыть меню", "toggleMenu": "Показать или скрыть меню",
"subtitle": "Откройте скрытую архитектуру вашего знания", "subtitle": "Посмотрите, как связаны ваши заметки",
"resync": "Обновить", "resync": "Обновить",
"mapping": "Картирование…", "mapping": "Картирование…",
"loading": "Загрузка заметок…", "loading": "Загрузка заметок…",
"mappingTitle": "Картирование вашего знания…", "mappingTitle": "Картирование вашего знания…",
"mappingHint": "Это может занять от одной до трёх минут. Вы можете продолжать просмотр; страница обновится автоматически.", "mappingHint": "Это может занять от одной до трёх минут. Вы можете продолжать просмотр; страница обновится автоматически.",
"analyzeNow": "Запустить семантический анализ", "analyzeNow": "Обновить темы",
"emptyNeedMoreNotes": "Добавьте ещё {count} заметок для семантической кластеризации (минимум 10).", "emptyNeedMoreNotes": "Добавьте ещё {count} заметок, чтобы сгруппировать темы (минимум 10).",
"embeddingsHint": "Только {indexed} из {total} заметок индексированы для ИИ.", "embeddingsHint": "Только {indexed} из {total} заметок готовы к группировке по темам.",
"vsGraphHint": "Это не «Карта ссылок»: здесь ИИ группирует по смыслу, а не по ссылкам.", "vsGraphHint": "Это не «Карта ссылок»: здесь ИИ группирует по смыслу, а не по ссылкам.",
"openGraphMap": "Открыть карту связей", "openGraphMap": "Открыть карту связей",
"analysisFailed": "Анализ не удался. Проверьте настройки ИИ.", "analysisFailed": "Анализ не удался. Проверьте настройки ИИ.",
@@ -3679,8 +3680,8 @@
"graphNotesLabel": "заметки", "graphNotesLabel": "заметки",
"clusterFallback": "Тема {index}", "clusterFallback": "Тема {index}",
"unclusteredNotes": "{count} заметок не отнесены к теме (скрыты с графика).", "unclusteredNotes": "{count} заметок не отнесены к теме (скрыты с графика).",
"emptyTitle": "Откройте свои кластеры знания", "emptyTitle": "Откройте свои темы",
"emptyDescription": "Нажмите «Пересинхронизировать сеть», чтобы проанализировать заметки и найти скрытые связи", "emptyDescription": "Нажмите «Обновить», чтобы сгруппировать заметки по темам.",
"stats": { "stats": {
"clusters": "Кластеры", "clusters": "Кластеры",
"bridgeNotes": "Мосты-заметки", "bridgeNotes": "Мосты-заметки",
@@ -3688,10 +3689,10 @@
"themesSubtitle": "p. ej. Mi clave pro" "themesSubtitle": "p. ej. Mi clave pro"
}, },
"clusters": { "clusters": {
"title": "Семантические кластеры", "title": "Темы",
"notesCount": "{count} заметок", "notesCount": "{count} заметок",
"centralNotes": "Центральные заметки", "centralNotes": "Центральные заметки",
"emptyCluster": "В этом кластере нет заметок" "emptyCluster": "В этой теме нет заметок"
}, },
"bridgeNotes": { "bridgeNotes": {
"title": "Powerful bridge notes", "title": "Powerful bridge notes",
@@ -3700,7 +3701,7 @@
"affinity": "Сходство {score}%", "affinity": "Сходство {score}%",
"moreThemes": "+{count}", "moreThemes": "+{count}",
"needsResync": "Пересинхронизируйте сеть для обновления мостовых пар.", "needsResync": "Пересинхронизируйте сеть для обновления мостовых пар.",
"scoreHint": "Средняя семантическая близость к двум темам, которые связывает эта заметка (косинусное сходство)." "scoreHint": "Насколько эта заметка близка к двум темам, которые она связывает."
}, },
"suggestions": { "suggestions": {
"title": "Missing links (AI generated)", "title": "Missing links (AI generated)",
@@ -3718,38 +3719,38 @@
"viewGraph": "Граф", "viewGraph": "Граф",
"viewDashboard": "Панель", "viewDashboard": "Панель",
"isolatedClusters": { "isolatedClusters": {
"title": "Изолированные кластеры ({count})", "title": "Изолированные темы ({count})",
"badge": "Не связан", "badge": "Не связан",
"empty": "Все кластеры связаны!" "empty": "Все темы уже связаны хотя бы одной связующей заметкой."
}, },
"focusCluster": { "focusCluster": {
"title": "Фокус на кластере", "title": "Тема открыта",
"description": "Этот тематический кластер объединяет {count} взаимодополняющих заметок. Нажмите на заметку, чтобы открыть её.", "description": "Эта тема объединяет {count} заметок. Нажмите на заметку, чтобы открыть её.",
"close": "Закрыть" "close": "Закрыть"
}, },
"badgeDominant": "Доминирующий", "badgeDominant": "Доминирующий",
"bridgeCount": "мост(ов)", "bridgeCount": "мост(ов)",
"echoTitle": "Вы постоянно возвращаетесь к этой идее", "echoTitle": "Вы постоянно возвращаетесь к этой идее",
"tipClusters": "ИИ сгруппировал ваши заметки по семантической близости — независимо от карнета.", "tipClusters": "ИИ сгруппировал ваши заметки по темам, даже в разных блокнотах.",
"tipClustersAction": "Нажмите на тему, чтобы увидеть её заметки. Нажмите на заметку, чтобы открыть.", "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": "Нажмите на заметку, чтобы открыть её и понять связь.", "tipBridgeNotesAction": "Нажмите на заметку, чтобы открыть её и понять связь.",
"tipEcho": "Memory Echo обнаруживает две заметки, написанные в разное время, но затрагивающие одну тему.", "tipEcho": "Memory Echo обнаруживает две заметки, написанные в разное время, но затрагивающие одну тему.",
"tipEchoAction": "Две заметки, одна идея, разные моменты. Нажмите, чтобы исследовать.", "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": "Нажмите «Создать мостовую заметку», чтобы написать и сразу открыть.", "tipSuggestionsAction": "Нажмите «Создать мостовую заметку», чтобы написать и сразу открыть.",
"tipIsolated": "Эти темы изолированы: ни одна заметка не связывает их с остальными. Возможно, не хватает перспективы.", "tipIsolated": "Эти темы изолированы: ни одна заметка не связывает их с остальными. Возможно, не хватает перспективы.",
"tipIsolatedAction": "У этих тем нет заметки, связывающей их с остальными размышлениями.", "tipIsolatedAction": "У этих тем нет заметки, связывающей их с остальными размышлениями.",
"recalcSystem": { "recalcSystem": {
"title": "Система пересчёта", "title": "Обновление тем",
"statusSynced": "Синхронизировано", "statusSynced": "Актуально",
"scheduledCron": "Запланировано", "scheduledCron": "Автообновление",
"lastSync": "Последняя sync" "lastSync": "Последнее обновление"
}, },
"resetFocus": "Сбросить фокус", "resetFocus": "Показать всё",
"listView": "Список", "listView": "Список",
"graphAriaLabel": "Семантическая сеть: {clusters} кластеров, {notes} заметок, {bridges} мостовых заметок. Стрелки для навигации.", "graphAriaLabel": "Карта тем: {clusters} тем, {notes} заметок, {bridges} связующих заметок. Перейдите к списку, чтобы проще ориентироваться.",
"listAriaLabel": "Доступный список кластеров с заметками и мостовыми связями", "listAriaLabel": "Список тем, заметок и связующих заметок",
"dashboardFilterPlaceholder": "Фильтр мостовых заметок, тем…", "dashboardFilterPlaceholder": "Фильтр мостовых заметок, тем…",
"legendFilterPlaceholder": "Фильтр тем…", "legendFilterPlaceholder": "Фильтр тем…",
"legendShowLess": "Показать меньше", "legendShowLess": "Показать меньше",
@@ -3896,7 +3897,7 @@
"genericError": "Произошла ошибка при отправке на ваш экземпляр.", "genericError": "Произошла ошибка при отправке на ваш экземпляр.",
"ignore": "освоено", "ignore": "освоено",
"processing": "Обработка…", "processing": "Обработка…",
"processingDetail": "Создание тегов, семантического резюме и эмбеддингов.", "processingDetail": "Подготовка заметки: метки, краткое содержание, поиск по смыслу.",
"publishedOn": "Опубликовано на {domain}", "publishedOn": "Опубликовано на {domain}",
"quitSimulator": "Закрыть симулятор", "quitSimulator": "Закрыть симулятор",
"realtimeCapture": "Дата: захват в реальном времени", "realtimeCapture": "Дата: захват в реальном времени",
@@ -4156,7 +4157,7 @@
"match": "Войти", "match": "Войти",
"memoryEchoDisabled": "Эхо памяти отключено в настройках ИИ.", "memoryEchoDisabled": "Эхо памяти отключено в настройках ИИ.",
"mindMap": "Ментальная карта", "mindMap": "Ментальная карта",
"mindMapEmpty": "Темы пока не обнаружены. Семантический анализ группирует ваши заметки по темам.", "mindMapEmpty": "Тем пока нет. ИИ группирует ваши заметки по темам.",
"mindMapOpen": "Открыть карту инсайтов →", "mindMapOpen": "Открыть карту инсайтов →",
"mindMapUnavailable": "Ментальная карта недоступна.", "mindMapUnavailable": "Ментальная карта недоступна.",
"new": "записей создано", "new": "записей создано",
@@ -4183,7 +4184,7 @@
"pathTypes": { "pathTypes": {
"add-link": "Добавить к заметке", "add-link": "Добавить к заметке",
"bridge": "Мостовая идея", "bridge": "Мостовая идея",
"connect": "Семантическая ссылка", "connect": "Связать заметку",
"continue": "Продолжить", "continue": "Продолжить",
"daily": "Журнал", "daily": "Журнал",
"explore": "Исследовать тему", "explore": "Исследовать тему",
@@ -4211,7 +4212,7 @@
"resumeEmptyHint": "Ваш «второй мозг» одним взглядом: подсказки ИИ, быстрый захват и следующие шаги. Используйте ярлыки ниже.", "resumeEmptyHint": "Ваш «второй мозг» одним взглядом: подсказки ИИ, быстрый захват и следующие шаги. Используйте ярлыки ниже.",
"resumeOpen": "Продолжить", "resumeOpen": "Продолжить",
"review": "Повторять", "review": "Повторять",
"semanticConnection": "Семантическая близость", "semanticConnection": "Близость",
"sentiment": "Настроение", "sentiment": "Настроение",
"sentimentDominant": "Преобладающий тон на этой неделе", "sentimentDominant": "Преобладающий тон на этой неделе",
"suggestedBridge": "Связать {clusterA} & {clusterB}", "suggestedBridge": "Связать {clusterA} & {clusterB}",
@@ -4248,7 +4249,7 @@
"flashcards-progress": "Усвоение, серия и общее число карточек.", "flashcards-progress": "Усвоение, серия и общее число карточек.",
"gmail": "Письма, синхронизированные через Gmail.", "gmail": "Письма, синхронизированные через Gmail.",
"inbox": "Заметки, ожидающие распределения по блокнотам.", "inbox": "Заметки, ожидающие распределения по блокнотам.",
"intelligence": "Семантические связи, мостовые идеи и находки агентов.", "intelligence": "Заметки, которые сходятся, связующие идеи и результаты агентов.",
"link-suggestions": "Отрывки для связи в вашей текущей заметке.", "link-suggestions": "Отрывки для связи в вашей текущей заметке.",
"mind-map": "Тематические кластеры, размер по объёму записей.", "mind-map": "Тематические кластеры, размер по объёму записей.",
"next-paths": "AI-предложенные следующие шаги на основе вашей последней работы.", "next-paths": "AI-предложенные следующие шаги на основе вашей последней работы.",
@@ -4258,7 +4259,7 @@
"resume": "Продолжайте свои самые свежие заметки с того места, где остановились.", "resume": "Продолжайте свои самые свежие заметки с того места, где остановились.",
"revision": "Карточки, подлежащие проверке методом интервального повторения.", "revision": "Карточки, подлежащие проверке методом интервального повторения.",
"sentiment": "Эмоциональный тон ваших заметок на этой неделе.", "sentiment": "Эмоциональный тон ваших заметок на этой неделе.",
"stats": "Кластеры, мостовые заметки и всего проиндексированных заметок.", "stats": "Темы, связующие заметки и проиндексированные заметки.",
"usage": "Оставшиеся кредиты ИИ и месячные лимиты." "usage": "Оставшиеся кредиты ИИ и месячные лимиты."
}, },
"widgetDone": "Готово", "widgetDone": "Готово",
@@ -4274,7 +4275,7 @@
"flashcards-progress": "Коэффициент усвоения, серия повторений и общее число карточек.", "flashcards-progress": "Коэффициент усвоения, серия повторений и общее число карточек.",
"gmail": "Письма, синхронизированные через интеграцию Gmail.", "gmail": "Письма, синхронизированные через интеграцию Gmail.",
"inbox": "Заметки без блокнота. Распределите их, чтобы поддерживать порядок во «втором мозге».", "inbox": "Заметки без блокнота. Распределите их, чтобы поддерживать порядок во «втором мозге».",
"intelligence": "AI-открытия: семантические связи между заметками, мостовые идеи и находки агентов.", "intelligence": "Что нашёл ИИ: заметки, которые сходятся, связующие идеи и результаты агентов.",
"link-suggestions": "Отрывки из других заметок, которые стоит связать с вашей текущей работой.", "link-suggestions": "Отрывки из других заметок, которые стоит связать с вашей текущей работой.",
"mind-map": "Тематические кластеры по объёму записей. Нажмите, чтобы изучить в Аналитике.", "mind-map": "Тематические кластеры по объёму записей. Нажмите, чтобы изучить в Аналитике.",
"next-paths": "Предлагаемые следующие шаги на основе последней отредактированной записи: продолжить, связать, объединить или исследовать.", "next-paths": "Предлагаемые следующие шаги на основе последней отредактированной записи: продолжить, связать, объединить или исследовать.",
@@ -4284,7 +4285,7 @@
"resume": "Ваши недавно обновлённые записи. Продолжите, где остановились.", "resume": "Ваши недавно обновлённые записи. Продолжите, где остановились.",
"revision": "Карточки для проверки сегодня методом интервального повторения.", "revision": "Карточки для проверки сегодня методом интервального повторения.",
"sentiment": "Эмоциональный тон заметок, отредактированных за последние 7 дней. Требуется минимум 3 недавние заметки и включённый ИИ.", "sentiment": "Эмоциональный тон заметок, отредактированных за последние 7 дней. Требуется минимум 3 недавние заметки и включённый ИИ.",
"stats": "Статистика семантического индекса: активные темы, мостовые заметки, всего проиндексировано.", "stats": "Сколько тем, связующих заметок и проиндексированных заметок у вас есть.",
"usage": "Ежемесячное использование кредитов ИИ по функциям." "usage": "Ежемесячное использование кредитов ИИ по функциям."
}, },
"widgetHelpClose": "Закрыть", "widgetHelpClose": "Закрыть",
@@ -4319,7 +4320,7 @@
"resume": "Продолжить здесь", "resume": "Продолжить здесь",
"revision": "Карточки", "revision": "Карточки",
"sentiment": "Настроение", "sentiment": "Настроение",
"stats": "Семантическая статистика", "stats": "Темы и заметки",
"usage": "Квота ИИ" "usage": "Квота ИИ"
} }
}, },
@@ -4373,7 +4374,7 @@
"readwiseHelpStep2": "Вставьте его в поле ниже и нажмите «Подключить». Первая синхронизация импортирует все ваши книги и статьи.", "readwiseHelpStep2": "Вставьте его в поле ниже и нажмите «Подключить». Первая синхронизация импортирует все ваши книги и статьи.",
"readwiseHelpStep3": "Каждая книга становится заметкой в блокноте «Readwise 📚» — со всеми вашими заметками-выделениями, упорядоченными.", "readwiseHelpStep3": "Каждая книга становится заметкой в блокноте «Readwise 📚» — со всеми вашими заметками-выделениями, упорядоченными.",
"readwiseHelpStep4": "Чтобы обновить новые выделения, вернитесь сюда и нажмите «Синхронизировать сейчас».", "readwiseHelpStep4": "Чтобы обновить новые выделения, вернитесь сюда и нажмите «Синхронизировать сейчас».",
"readwiseHelpStep5": "💡 Совет: создайте ИИ-флешкарты из записи Readwise (кнопка 🎓 в редакторе), чтобы повторять прочитанное.", "readwiseHelpStep5": "Совет: создайте карточки для повторения из записи Readwise (кнопка карточек вверху заметки), чтобы повторять прочитанное.",
"readwiseInfo": "Как работает Readwise?", "readwiseInfo": "Как работает Readwise?",
"readwiseSynced": "Синхронизация Readwise — {{created}} создано, {{updated}} обновлено", "readwiseSynced": "Синхронизация Readwise — {{created}} создано, {{updated}} обновлено",
"readwiseTokenPlaceholder": "Токен Readwise…", "readwiseTokenPlaceholder": "Токен Readwise…",
@@ -4492,7 +4493,7 @@
"convertSuccess": "Конвертация завершена! Связанный блокнот создан.", "convertSuccess": "Конвертация завершена! Связанный блокнот создан.",
"convertToNotebook": "В блокнот", "convertToNotebook": "В блокнот",
"converting": "Конвертация…", "converting": "Конвертация…",
"createLocalDb": "Создать автономную локальную базу данных", "createLocalDb": "Создать таблицу в этой заметке",
"createNotebook": "Создать блокнот", "createNotebook": "Создать блокнот",
"defaultOption1": "Вариант 1", "defaultOption1": "Вариант 1",
"defaultOption2": "Вариант 2", "defaultOption2": "Вариант 2",
@@ -4501,12 +4502,12 @@
"deprecatedBlock": "Устаревший блок удалён.", "deprecatedBlock": "Устаревший блок удалён.",
"displayModeGallery": "Галерея", "displayModeGallery": "Галерея",
"displayModeTable": "Стол", "displayModeTable": "Стол",
"echoLoading": "Поиск семантических связей...", "echoLoading": "Поиск близких заметок…",
"echoNameRequired": "Сначала введите имя для этой строки, чтобы найти семантические связи.", "echoNameRequired": "Сначала введите имя этой строки, чтобы искать близкие заметки.",
"echoNoMatch": "Заметок, содержащих «{{query}}», в вашем пространстве не найдено.", "echoNoMatch": "Заметок, содержащих «{{query}}», в вашем пространстве не найдено.",
"echoPopoverTitle": "Семантические резонансы 🔮", "echoPopoverTitle": "Близкие заметки",
"echoSearchError": "Произошла ошибка при поиске.", "echoSearchError": "Произошла ошибка при поиске.",
"echoUpgradeText": "Конвертируйте эту таблицу в блокнот, чтобы активировать нейроанализ Memento.", "echoUpgradeText": "Преобразуйте эту таблицу в блокнот, чтобы Memento нашёл близкие заметки.",
"emptyTable": "В таблице нет строк.", "emptyTable": "В таблице нет строк.",
"insertCitation": "Вставить ссылку в редакторе", "insertCitation": "Вставить ссылку в редакторе",
"insertDesc": "Встройте структурированные данные вашего блокнота", "insertDesc": "Встройте структурированные данные вашего блокнота",
@@ -4514,9 +4515,9 @@
"keywordMatch": "Ключевое слово", "keywordMatch": "Ключевое слово",
"linkToNotebook": "Ссылка на блокнот", "linkToNotebook": "Ссылка на блокнот",
"loadError": "Ошибка загрузки структурированных данных.", "loadError": "Ошибка загрузки структурированных данных.",
"localDbTitle": "Автономная база данных", "localDbTitle": "Таблица в этой заметке",
"namePlaceholder": "Введите имя…", "namePlaceholder": "Введите имя…",
"noEchoFound": "Семантические связи не обнаружены.", "noEchoFound": "Близких заметок не найдено.",
"noNotebook": "Этот блок требует блокнот. Сначала переместите эту запись в блокнот.", "noNotebook": "Этот блок требует блокнот. Сначала переместите эту запись в блокнот.",
"noNotebookDesc": "Этот блок отображает структурированный вид блокнота. Выберите блокнот для связи:", "noNotebookDesc": "Этот блок отображает структурированный вид блокнота. Выберите блокнот для связи:",
"noSchema": "В этом блокноте ещё нет структурированного вида. Настройте его в заголовке блокнота.", "noSchema": "В этом блокноте ещё нет структурированного вида. Настройте его в заголовке блокнота.",
@@ -4528,8 +4529,8 @@
"selectNotebook": "Ссылка на блокнот", "selectNotebook": "Ссылка на блокнот",
"selectOptionsPlaceholder": "Варианты, разделённые запятыми", "selectOptionsPlaceholder": "Варианты, разделённые запятыми",
"semanticEcho": "Семантические резонансы", "semanticEcho": "Семантические резонансы",
"switchToLocalDb": "Перейти к локальной базе данных", "switchToLocalDb": "Вернуться к таблице этой заметки",
"turnIntoLabel": "Встроенная база данных", "turnIntoLabel": "Таблица в заметке",
"untitled": "Без названия" "untitled": "Без названия"
}, },
"structuredViews": { "structuredViews": {
@@ -4605,7 +4606,7 @@
"relationSearch": "Искать заметку…", "relationSearch": "Искать заметку…",
"selectOptions": "Варианты (по одному в строке)", "selectOptions": "Варианты (по одному в строке)",
"selectOptionsPlaceholder": "Сделать\\\nВ работе\\\nГотово", "selectOptionsPlaceholder": "Сделать\\\nВ работе\\\nГотово",
"semanticResonances": "Семантические резонансы", "semanticResonances": "Заметки, которые сходятся",
"tagApplied": "мостики", "tagApplied": "мостики",
"viewCalendarHint": "Календарь — ваши заметки, упорядоченные по дате", "viewCalendarHint": "Календарь — ваши заметки, упорядоченные по дате",
"viewGallery": "Галерея", "viewGallery": "Галерея",

View File

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