docs: add comprehensive Stripe billing guide
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 4s

Covers architecture, configuration steps, user flows, API routes,
webhooks, pricing, testing with Stripe CLI, production checklist,
and troubleshooting.
This commit is contained in:
Antigravity
2026-05-16 21:10:26 +00:00
parent aa12d2226f
commit bb75b2e763
36 changed files with 2099 additions and 735 deletions

View File

@@ -51,7 +51,7 @@ development_status:
3-6-stripe-subscription-tiers: review 3-6-stripe-subscription-tiers: review
epic-3-retrospective: optional epic-3-retrospective: optional
epic-4: in-progress epic-4: in-progress
4-1-gdpr-cookie-consent: ready-for-dev 4-1-gdpr-cookie-consent: in-progress
4-2-gdpr-right-to-be-forgotten: backlog 4-2-gdpr-right-to-be-forgotten: backlog
4-3-data-portability: backlog 4-3-data-portability: backlog
4-4-explicit-ai-consent: backlog 4-4-explicit-ai-consent: backlog

View File

@@ -0,0 +1,451 @@
# Momento — Guide Stripe : Configuration, Architecture et Utilisation
## Vue d'ensemble
Momento utilise **Stripe** pour la gestion des abonnements payants (Pro, Business, Enterprise). Le système repose sur :
- **Stripe Embedded Checkout** (modal dans l'app, sans redirection)
- **Webhooks** pour synchroniser l'état des abonnements en temps réel
- **Customer Portal** pour que les utilisateurs gèrent leur carte/facturation
- Un **feature flag** pour activer/désactiver le billing sans déploiement
---
## 1. Architecture
```
┌─────────────────────────────────────────────────────────┐
│ Frontend (React) │
│ │
│ /settings/billing │
│ └─ billing-plans.tsx │
│ ├─ Cartes Free / Pro / Business / Enterprise │
│ ├─ Toggle mensuel/annuel │
│ ├─ Embedded Checkout (modal Stripe) │
│ └─ Lien vers Customer Portal │
│ │
│ /settings → SettingsNav → onglet "Facturation" │
│ Sidebar → UsageMeter → lien vers /settings/billing │
└───────────────────────┬─────────────────────────────────┘
POST /api/billing/create-checkout
POST /api/billing/portal
GET /api/billing/status
┌───────────────────────▼─────────────────────────────────┐
│ Backend (Next.js API) │
│ │
│ lib/stripe.ts → Client Stripe singleton │
│ lib/billing/ → Logique métier billing │
│ ├─ stripe-prices.ts → Mapping priceId ↔ tier │
│ └─ sync-subscription-from-stripe.ts │
│ → Upsert Prisma Subscription depuis webhook │
│ │
│ POST /api/billing/webhook → Reception événements │
│ Stripe (raw body + sig) │
└───────────────────────┬─────────────────────────────────┘
┌────────────▼────────────┐
│ PostgreSQL (Prisma) │
│ │
│ Subscription { │
│ userId │
│ tier (BASIC/PRO/ │
│ BUSINESS/ENTERP.) │
│ status (ACTIVE/ │
│ CANCELED/...) │
│ stripeCustomerId │
│ stripeSubscriptionId │
│ stripePriceId │
│ currentPeriodStart │
│ currentPeriodEnd │
│ cancelAtPeriodEnd │
│ } │
└────────────┬────────────┘
┌────────────▼────────────┐
│ Redis │
│ │
│ usage:{userId}: │
│ {feature}:{period} │
│ → Compteurs mensuels │
└─────────────────────────┘
```
---
## 2. Configuration pas à pas
### 2.1 Créer un compte Stripe
1. Aller sur https://dashboard.stripe.com/register
2. Créer un compte (utiliser l'email `sales@memento-note.com`)
3. Activer le **mode test** (toggle en haut à droite)
### 2.2 Créer les produits et prix
Dans le **Stripe Dashboard****Produits** :
#### Produit 1 : Momento Pro
| Champ | Valeur |
|-------|--------|
| Nom | Momento Pro |
| Description | Pour les consultants et créateurs exigeants |
Créer **2 prix** :
| Prix | Montant | Récurrent |
|------|---------|-----------|
| Pro Mensuel | 9,90 EUR | Tous les mois |
| Pro Annuel | 99 EUR | Tous les ans |
#### Produit 2 : Momento Business
| Champ | Valeur |
|-------|--------|
| Nom | Momento Business |
| Description | Pour les équipes et chefs de produit |
Créer **2 prix** :
| Prix | Montant | Récurrent |
|------|---------|-----------|
| Business Mensuel | 29,90 EUR | Tous les mois |
| Business Annuel | 299 EUR | Tous les ans |
> **Enterprise** n'a pas de prix Stripe — c'est un contact manuel (`sales@memento-note.com`).
### 2.3 Récupérer les clés et price IDs
Dans **Stripe Dashboard****Développeurs****Clés API** :
| Variable | Où la trouver |
|----------|---------------|
| `STRIPE_SECRET_KEY` | Clés API → Clé secrète (sk_test_...) |
| `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` | Clés API → Clé publiable (pk_test_...) |
Dans **Stripe Dashboard****Produits** → cliquer sur chaque prix :
| Variable | Source |
|----------|--------|
| `STRIPE_PRICE_PRO_MONTHLY` | Produit Pro → Prix mensuel → `price_1xxx...` |
| `STRIPE_PRICE_PRO_ANNUAL` | Produit Pro → Prix annuel → `price_1yyy...` |
| `STRIPE_PRICE_BUSINESS_MONTHLY` | Produit Business → Prix mensuel → `price_1zzz...` |
| `STRIPE_PRICE_BUSINESS_ANNUAL` | Produit Business → Prix annuel → `price_1www...` |
### 2.4 Configurer le webhook
Dans **Stripe Dashboard****Développeurs****Webhooks** :
1. Cliquer **Ajouter un endpoint**
2. URL : `https://memento-note.com/api/billing/webhook`
3. Événements à écouter :
- `checkout.session.completed`
- `customer.subscription.created`
- `customer.subscription.updated`
- `customer.subscription.deleted`
- `invoice.payment_failed`
4. Copier la **signature secrète**`STRIPE_WEBHOOK_SECRET` (commence par `whsec_...`)
### 2.5 Configurer le Customer Portal
Dans **Stripe Dashboard****Paramètres****Customer Portal** :
1. Activer le portal
2. Configurer les fonctions autorisées :
- Mettre à jour le moyen de paiement
- Voir les factures
- Annuler l'abonnement
- Changer de plan (optionnel)
3. URL de retour : `https://memento-note.com/settings/billing`
### 2.6 Remplir le fichier `.env`
Ajouter dans `memento-note/.env` :
```env
# Stripe — Server-side (NE JAMAIS exposer côté client)
STRIPE_SECRET_KEY="sk_test_VOTRE_CLE_SECRETE"
STRIPE_WEBHOOK_SECRET="whsec_VOTRE_SIGNATURE_WEBHOOK"
# Stripe — Price IDs
STRIPE_PRICE_PRO_MONTHLY="price_ID_PRO_MENSUEL"
STRIPE_PRICE_PRO_ANNUAL="price_ID_PRO_ANNUEL"
STRIPE_PRICE_BUSINESS_MONTHLY="price_ID_BUSINESS_MENSUEL"
STRIPE_PRICE_BUSINESS_ANNUAL="price_ID_BUSINESS_ANNUEL"
# Stripe — Client-side (sûr à exposer)
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_VOTRE_CLE_PUBLIABLE"
# Activer l'interface de facturation
NEXT_PUBLIC_FEATURE_BILLING_ENABLED="true"
```
> **Important** : Relancer le serveur après modification du `.env`.
### 2.7 Résumé des variables
| Variable | Où | Obligatoire |
|----------|----|----|
| `STRIPE_SECRET_KEY` | `.env` (server) | Oui |
| `STRIPE_WEBHOOK_SECRET` | `.env` (server) | Oui |
| `STRIPE_PRICE_PRO_MONTHLY` | `.env` (server) | Oui |
| `STRIPE_PRICE_PRO_ANNUAL` | `.env` (server) | Oui |
| `STRIPE_PRICE_BUSINESS_MONTHLY` | `.env` (server) | Oui |
| `STRIPE_PRICE_BUSINESS_ANNUAL` | `.env` (server) | Oui |
| `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` | `.env` (client+server) | Oui |
| `NEXT_PUBLIC_FEATURE_BILLING_ENABLED` | `.env` (client+server) | Oui |
---
## 3. Flux utilisateur
### 3.1 Checkout (achat d'un plan)
```
Utilisateur Frontend Backend Stripe
│ │ │ │
│ Clique "Passer Pro" │ │ │
│───────────────────────────>│ │ │
│ │ POST /api/billing/ │ │
│ │ create-checkout │ │
│ │ {tier: "PRO", │ │
│ │ interval: "month"} │ │
│ │─────────────────────────>│ │
│ │ │ Crée/respire │
│ │ │ Customer + Session │
│ │ │───────────────────────>│
│ │ │ │
│ │ │ {clientSecret} │
│ │ │<───────────────────────│
│ │ │ │
│ │ Modal Embedded │ │
│ │ Checkout Stripe │ │
│ │<─────────────────────────│ │
│ │ │ │
│ Remplit carte 4242... │ │ │
│───────────────────────────>│ │ │
│ │ Paiement Stripe │ │
│ │─────────────────────────────────────────────────>│
│ │ │ │
│ │ │ Webhook: │
│ │ │ checkout.session. │
│ │ │ completed │
│ │ │<───────────────────────│
│ │ │ │
│ │ │ Upsert Subscription │
│ │ │ tier=PRO status=ACTIVE│
│ │ │ │
│ Toast "Bienvenue Pro !" │ │ │
│ UsageMeter rafraîchi │ │ │
│<───────────────────────────│ │ │
```
### 3.2 Webhook — Cycle de vie des abonnements
| Événement Stripe | Action Momento | Statut Prisma |
|------------------|---------------|---------------|
| `checkout.session.completed` | Upsert subscription avec tier/periode | `ACTIVE` |
| `customer.subscription.created` | Upsert (nouvelle souscription) | Selon Stripe |
| `customer.subscription.updated` | Upsert (changement de plan, etc.) | Selon Stripe |
| `customer.subscription.deleted` | Marquer annulé | `CANCELED` |
| `invoice.payment_failed` | Sync subscription (passage en `PAST_DUE`) | `PAST_DUE` |
### 3.3 Mapping statuts Stripe → Prisma
| Stripe | Prisma | Comportement `getEffectiveTier()` |
|--------|--------|----------------------------------|
| `active` | `ACTIVE` | Retourne le tier payé (PRO/BUSINESS) |
| `trialing` | `TRIALING` | Retourne le tier (accès complet pendant l'essai) |
| `past_due` | `PAST_DUE` | Garde le tier jusqu'à `currentPeriodEnd` |
| `canceled` / `unpaid` | `CANCELED` | Garde le tier jusqu'à `currentPeriodEnd`, puis BASIC |
| `incomplete_expired` | `INACTIVE` | Retourne BASIC |
---
## 4. Pages et composants
### 4.1 Accès utilisateur
| URL | Description |
|-----|-------------|
| `/settings/billing` | Page principale : plans, usage, facturation |
| `/settings` → onglet "Facturation" | Navigation via SettingsNav |
| UsageMeter (sidebar) → "Upgrade" | Lien direct vers `/settings/billing` |
### 4.2 Composants clés
| Fichier | Rôle |
|---------|------|
| `components/settings/billing-plans.tsx` | Cartes de plans, checkout modal, usage grid, portal |
| `components/settings/SettingsNav.tsx` | Onglet "Facturation" avec icône CreditCard |
| `components/settings/billing-history.tsx` | Lien vers le portal Stripe pour factures |
| `components/usage-meter.tsx` | Meter sidebar → lien vers billing quand quota dépassé |
### 4.3 API Routes
| Route | Méthode | Auth | Description |
|-------|---------|------|-------------|
| `/api/billing/create-checkout` | POST | Session | Crée une session checkout embedded |
| `/api/billing/portal` | POST | Session | Ouvre le portal client Stripe |
| `/api/billing/status` | GET | Session | Retourne tier, status, periodEnd |
| `/api/billing/webhook` | POST | Signature Stripe | Reçoit les événements lifecycle |
### 4.4 Librairies backend
| Fichier | Rôle |
|---------|------|
| `lib/stripe.ts` | Client Stripe singleton (`getStripe()`) |
| `lib/billing/stripe-prices.ts` | `resolvePriceId()` et `priceIdToTier()` |
| `lib/billing/sync-subscription-from-stripe.ts` | Upsert Prisma depuis webhook Stripe |
| `lib/entitlements.ts` | `getEffectiveTier()`, `TIER_LIMITS`, `getUserQuotas()` |
---
## 5. Quotas par tier
| Feature | BASIC | PRO | BUSINESS | ENTERPRISE |
|---------|-------|-----|----------|------------|
| Recherche sémantique | 30 | 100 | 1000 | ∞ |
| Tags automatiques | 20 | 200 | 1000 | ∞ |
| Titres automatiques | 10 | 200 | 1000 | ∞ |
| Reformulation | — | 50 | 500 | ∞ |
| Chat IA | — | 100 | 1000 | ∞ |
| Brainstorm (création) | 1 | 30 | 200 | ∞ |
| Brainstorm (expansion) | 10 | 100 | 500 | ∞ |
| Brainstorm (enrichissement) | 20 | 200 | 1000 | ∞ |
> Les compteurs sont stockés dans Redis avec un TTL de 90 jours. Le tier détermine les limites, pas les compteurs.
---
## 6. Tests
### Tests unitaires (22 tests, 100% passent)
| Fichier | Tests | Description |
|---------|-------|-------------|
| `tests/unit/billing-price-map.test.ts` | 10 | Mapping priceId → tier, erreurs si env manquant |
| `tests/unit/billing-sync.test.ts` | 12 | Upsert Prisma, mapping statuts Stripe→Prisma, métadonnées |
### Lancer les tests
```bash
cd memento-note
npx vitest run tests/unit/billing-price-map.test.ts tests/unit/billing-sync.test.ts
```
---
## 7. Test local avec Stripe CLI
### 7.1 Installer Stripe CLI
```bash
# macOS
brew install stripe/stripe-cli/stripe
# Linux
curl -s https://packages.stripe.dev/api/security/keypair/stripe-cli-gpg/public/download.gpg | sudo tee /usr/share/keyrings/stripe.gpg
echo "deb [signed-by=/usr/share/keyrings/stripe.gpg] https://packages.stripe.dev/stripe-cli-debian-local stable main" | sudo tee -a /etc/apt/sources.list.d/stripe.list
sudo apt update && sudo apt install stripe
```
### 7.2 Forward des webhooks en local
```bash
stripe listen --forward-to localhost:3000/api/billing/webhook
```
Cette commande affiche la signature webhook (`whsec_...`) à mettre dans `STRIPE_WEBHOOK_SECRET`.
### 7.3 Tester un paiement
1. Lancer le serveur : `npm run dev`
2. Aller sur `/settings/billing`
3. Cliquer "Passer au Plan Pro"
4. Utiliser la carte test : **4242 4242 4242 4242**
5. Date d'expiration : n'importe quelle date future
6. CVC : n'importe quels 3 chiffres
7. Le webhook se déclenche → `Subscription` upserté dans la DB
### 7.4 Vérifier en base
```sql
SELECT tier, status, "currentPeriodStart", "currentPeriodEnd"
FROM "Subscription"
WHERE "userId" = 'VOTRE_USER_ID';
```
### 7.5 Vérifier via l'API
```bash
curl http://localhost:3000/api/billing/status -H "Cookie: next-auth.session-token=VOTRE_TOKEN"
```
Devrait retourner :
```json
{
"tier": "PRO",
"effectiveTier": "PRO",
"status": "ACTIVE",
"currentPeriodEnd": "2026-06-16T...",
"cancelAtPeriodEnd": false,
"hasStripeSubscription": true
}
```
---
## 8. Passage en production
### 8.1 Checklist
- [ ] Compte Stripe vérifié (KYC complété)
- [ ] Produits et prix créés en **mode live**
- [ ] Webhook configuré en mode live avec l'URL de production
- [ ] Variables `.env` mises à jour avec les clés live (`sk_live_...`, `pk_live_...`)
- [ ] `NEXT_PUBLIC_FEATURE_BILLING_ENABLED="true"`
- [ ] Customer Portal configuré pour le mode live
- [ ] Tester un paiement réel avec une vraie carte
### 8.2 Sécurité
- **Jamais** de `STRIPE_SECRET_KEY` ou `STRIPE_WEBHOOK_SECRET` côté client
- Les price IDs sont côté serveur uniquement
- Le webhook vérifie la signature Stripe-Signature sur chaque requête
- L'upsert par `stripeSubscriptionId` garantit l'idempotence
---
## 9. Dépannage
### Les cartes de plans ne s'affichent pas
→ Vérifier `NEXT_PUBLIC_FEATURE_BILLING_ENABLED="true"` dans `.env` et relancer le serveur.
### Le checkout ne s'ouvre pas
→ Vérifier `NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY` est défini. Regarder la console navigateur.
### Le webhook ne se déclenche pas
→ En local : utiliser `stripe listen --forward-to localhost:3000/api/billing/webhook`
→ En production : vérifier l'URL du webhook dans le Stripe Dashboard.
### L'abonnement reste BASIC après paiement
→ Vérifier les logs du webhook (`[billing/webhook]`). Le `userId` doit être dans les metadata de la session.
### `getStripe()` throw "STRIPE_SECRET_KEY is required"
→ Ajouter `STRIPE_SECRET_KEY` dans `.env`.
---
## 10. Tarification
| Tier | Mensuel | Annuel | Économie annuelle |
|------|---------|--------|-------------------|
| Gratuit | 0 € | — | — |
| Pro | 9,90 € | 99 € | ~17% |
| Business | 29,90 € | 299 € | ~17% |
| Enterprise | Sur devis | Sur devis | — |
Devise : EUR (configurable dans Stripe Dashboard pour multi-devises).

View File

@@ -135,7 +135,7 @@ export function UserList({ initialUsers }: { initialUsers: any[] }) {
<th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.name')}</th> <th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.name')}</th>
<th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.email')}</th> <th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.email')}</th>
<th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.role')}</th> <th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.role')}</th>
<th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.subscription') || 'Abonnement'}</th> <th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.subscription')}</th>
<th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.createdAt')}</th> <th className="h-12 px-4 align-middle font-medium text-muted-foreground">{t('admin.users.table.createdAt')}</th>
<th className="h-12 px-4 align-middle font-medium text-muted-foreground text-right">{t('admin.users.table.actions')}</th> <th className="h-12 px-4 align-middle font-medium text-muted-foreground text-right">{t('admin.users.table.actions')}</th>
</tr> </tr>

View File

@@ -56,7 +56,7 @@ export function AppearanceSettingsClient({
localStorage.setItem('theme-preference', next) localStorage.setItem('theme-preference', next)
applyDocumentTheme(next) applyDocumentTheme(next)
await updateUserSettings({ theme: next }) await updateUserSettings({ theme: next })
toast.success(t('settings.settingsSaved') || 'Saved') toast.success(t('settings.settingsSaved'))
} }
const handleFontSizeChange = async (value: string) => { const handleFontSizeChange = async (value: string) => {
@@ -64,7 +64,7 @@ export function AppearanceSettingsClient({
const map: Record<string, string> = { small: '14px', medium: '16px', large: '18px', 'extra-large': '20px' } const map: Record<string, string> = { small: '14px', medium: '16px', large: '18px', 'extra-large': '20px' }
document.documentElement.style.setProperty('--user-font-size', map[value] || '16px') document.documentElement.style.setProperty('--user-font-size', map[value] || '16px')
await updateAISettings({ fontSize: value as any }) await updateAISettings({ fontSize: value as any })
toast.success(t('settings.settingsSaved') || 'Saved') toast.success(t('settings.settingsSaved'))
} }
const handleFontFamilyChange = async (value: string) => { const handleFontFamilyChange = async (value: string) => {
@@ -80,7 +80,7 @@ export function AppearanceSettingsClient({
if (font === 'playfair') root.classList.add('font-playfair') if (font === 'playfair') root.classList.add('font-playfair')
if (font === 'jetbrains') root.classList.add('font-jetbrains') if (font === 'jetbrains') root.classList.add('font-jetbrains')
await updateAISettings({ fontFamily: font as 'inter' | 'playfair' | 'jetbrains' | 'system' }) await updateAISettings({ fontFamily: font as 'inter' | 'playfair' | 'jetbrains' | 'system' })
toast.success(t('settings.settingsSaved') || 'Saved') toast.success(t('settings.settingsSaved'))
} }
const SelectCard = ({ const SelectCard = ({
@@ -174,7 +174,7 @@ export function AppearanceSettingsClient({
> >
<div className="space-y-10"> <div className="space-y-10">
<p className="text-[11px] font-bold uppercase tracking-[0.2em] text-muted-foreground"> <p className="text-[11px] font-bold uppercase tracking-[0.2em] text-muted-foreground">
{t('appearance.description') || "Personnalisez l'interface"} {t('appearance.description')}
</p> </p>
<div className="grid grid-cols-1 md:grid-cols-2 gap-8"> <div className="grid grid-cols-1 md:grid-cols-2 gap-8">
@@ -186,8 +186,8 @@ export function AppearanceSettingsClient({
<Palette size={20} /> <Palette size={20} />
</div> </div>
<div className="space-y-0.5 text-left"> <div className="space-y-0.5 text-left">
<h4 className="text-base font-bold text-foreground">{t('appearance.accentColorTitle') || 'Couleur d\'accentuation'}</h4> <h4 className="text-base font-bold text-foreground">{t('appearance.accentColorTitle')}</h4>
<p className="text-[11px] text-muted-foreground leading-tight">{t('appearance.accentColorDescription') || 'Définissez la couleur principale de votre espace de travail'}</p> <p className="text-[11px] text-muted-foreground leading-tight">{t('appearance.accentColorDescription')}</p>
</div> </div>
</div> </div>
<div className="flex items-center gap-3 bg-slate-50 dark:bg-black/20 px-4 py-2 rounded-xl border border-border/40"> <div className="flex items-center gap-3 bg-slate-50 dark:bg-black/20 px-4 py-2 rounded-xl border border-border/40">
@@ -264,14 +264,14 @@ export function AppearanceSettingsClient({
<SelectCard <SelectCard
icon={Type} icon={Type}
title={t('appearance.fontFamilyLabel') || 'Police'} title={t('appearance.fontFamilyLabel')}
description={t('appearance.fontFamilyDescription') || "Choisissez la police de l'application"} description={t('appearance.fontFamilyDescription')}
value={fontFamily} value={fontFamily}
options={[ options={[
{ value: 'inter', label: t('appearance.fontInterDefault') }, { value: 'inter', label: t('appearance.fontInterDefault') },
{ value: 'playfair', label: t('appearance.fontPlayfairDisplay') }, { value: 'playfair', label: t('appearance.fontPlayfairDisplay') },
{ value: 'jetbrains', label: t('appearance.fontJetBrainsMono') }, { value: 'jetbrains', label: t('appearance.fontJetBrainsMono') },
{ value: 'system', label: t('appearance.fontSystem') || 'Système' }, { value: 'system', label: t('appearance.fontSystem') },
]} ]}
onChange={handleFontFamilyChange} onChange={handleFontFamilyChange}
/> />

View File

@@ -32,12 +32,12 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
if (value === 'auto') { if (value === 'auto') {
localStorage.removeItem('user-language') localStorage.removeItem('user-language')
document.cookie = 'user-language=;path=/;max-age=0' document.cookie = 'user-language=;path=/;max-age=0'
toast.success(t('settings.languageAuto') || 'Language set to Auto') toast.success(t('settings.languageAuto'))
} else { } else {
localStorage.setItem('user-language', value) localStorage.setItem('user-language', value)
document.cookie = `user-language=${value};path=/;max-age=${60 * 60 * 24 * 365};samesite=lax` document.cookie = `user-language=${value};path=/;max-age=${60 * 60 * 24 * 365};samesite=lax`
setContextLanguage(value as any) setContextLanguage(value as any)
toast.success(t('profile.languageUpdateSuccess') || 'Language updated') toast.success(t('profile.languageUpdateSuccess'))
} }
setTimeout(() => router.refresh(), 300) setTimeout(() => router.refresh(), 300)
} }
@@ -45,19 +45,19 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
const handleEmailNotificationsChange = async (enabled: boolean) => { const handleEmailNotificationsChange = async (enabled: boolean) => {
setEmailNotifications(enabled) setEmailNotifications(enabled)
await updateAISettings({ emailNotifications: enabled }) await updateAISettings({ emailNotifications: enabled })
toast.success(t('settings.settingsSaved') || 'Saved') toast.success(t('settings.settingsSaved'))
} }
const handleDesktopNotificationsChange = async (enabled: boolean) => { const handleDesktopNotificationsChange = async (enabled: boolean) => {
setDesktopNotifications(enabled) setDesktopNotifications(enabled)
await updateAISettings({ desktopNotifications: enabled }) await updateAISettings({ desktopNotifications: enabled })
toast.success(t('settings.settingsSaved') || 'Saved') toast.success(t('settings.settingsSaved'))
} }
const handleAutoSaveChange = async (enabled: boolean) => { const handleAutoSaveChange = async (enabled: boolean) => {
setAutoSave(enabled) setAutoSave(enabled)
await updateAISettings({ autoSave: enabled }) await updateAISettings({ autoSave: enabled })
toast.success(t('settings.settingsSaved') || 'Saved') toast.success(t('settings.settingsSaved'))
} }
return ( return (
@@ -89,21 +89,21 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
className="w-full bg-white/50 dark:bg-black/40 border border-border rounded-xl px-5 py-3.5 text-sm outline-none focus:ring-1 ring-brand-accent/20 appearance-none cursor-pointer transition-all hover:bg-white dark:hover:bg-black/60 text-ink font-medium" className="w-full bg-white/50 dark:bg-black/40 border border-border rounded-xl px-5 py-3.5 text-sm outline-none focus:ring-1 ring-brand-accent/20 appearance-none cursor-pointer transition-all hover:bg-white dark:hover:bg-black/60 text-ink font-medium"
> >
<option value="auto">{t('profile.autoDetect')}</option> <option value="auto">{t('profile.autoDetect')}</option>
<option value="en">English</option> <option value="en">{t('languages.en')}</option>
<option value="fr">Français</option> <option value="fr">{t('languages.fr')}</option>
<option value="es">Español</option> <option value="es">{t('languages.es')}</option>
<option value="de">Deutsch</option> <option value="de">{t('languages.de')}</option>
<option value="fa">فارسی</option> <option value="fa">{t('languages.fa')}</option>
<option value="it">Italiano</option> <option value="it">{t('languages.it')}</option>
<option value="pt">Português</option> <option value="pt">{t('languages.pt')}</option>
<option value="ru">Русский</option> <option value="ru">{t('languages.ru')}</option>
<option value="zh"></option> <option value="zh">{t('languages.zh')}</option>
<option value="ja"></option> <option value="ja">{t('languages.ja')}</option>
<option value="ko"></option> <option value="ko">{t('languages.ko')}</option>
<option value="ar">العربية</option> <option value="ar">{t('languages.ar')}</option>
<option value="hi">ि</option> <option value="hi">{t('languages.hi')}</option>
<option value="nl">Nederlands</option> <option value="nl">{t('languages.nl')}</option>
<option value="pl">Polski</option> <option value="pl">{t('languages.pl')}</option>
</select> </select>
<div className="absolute right-5 top-1/2 -translate-y-1/2 pointer-events-none opacity-40 text-concrete"> <div className="absolute right-5 top-1/2 -translate-y-1/2 pointer-events-none opacity-40 text-concrete">
<svg width="10" height="6" viewBox="0 0 10 6" fill="none"> <svg width="10" height="6" viewBox="0 0 10 6" fill="none">
@@ -159,8 +159,8 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
<div className="flex items-center justify-between pt-6"> <div className="flex items-center justify-between pt-6">
<div className="space-y-1"> <div className="space-y-1">
<p className="text-xs font-bold text-ink">{t('settings.autoSave') || 'Auto-Save'}</p> <p className="text-xs font-bold text-ink">{t('settings.autoSave')}</p>
<p className="text-[10px] text-concrete leading-relaxed">{t('settings.autoSaveDesc') || 'Sauvegarder automatiquement les modifications'}</p> <p className="text-[10px] text-concrete leading-relaxed">{t('settings.autoSaveDesc')}</p>
</div> </div>
<label className="relative inline-flex items-center cursor-pointer"> <label className="relative inline-flex items-center cursor-pointer">
<input <input

View File

@@ -121,14 +121,14 @@ export function ProfileForm({ user }: { user: { name: string | null; email: stri
{/* Preferences */} {/* Preferences */}
<div className="space-y-4"> <div className="space-y-4">
<h4 className="text-[10px] font-bold uppercase tracking-[0.2em] text-concrete opacity-60"> <h4 className="text-[10px] font-bold uppercase tracking-[0.2em] text-concrete opacity-60">
{t('profile.preferences') || 'Préférences de compte'} {t('profile.preferences')}
</h4> </h4>
<div className="p-4 bg-white/40 dark:bg-white/5 border border-border rounded-2xl flex items-center justify-between"> <div className="p-4 bg-white/40 dark:bg-white/5 border border-border rounded-2xl flex items-center justify-between">
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">
<Bell size={18} className="text-concrete" /> <Bell size={18} className="text-concrete" />
<div> <div>
<p className="text-sm text-ink">{t('profile.desktopNotifications') || 'Notification bureau'}</p> <p className="text-sm text-ink">{t('profile.desktopNotifications')}</p>
<p className="text-[10px] text-concrete font-light pe-4">{t('profile.desktopNotificationsDesc') || 'Recevez des alertes pour vos rappels et activités IA.'}</p> <p className="text-[10px] text-concrete font-light pe-4">{t('profile.desktopNotificationsDesc')}</p>
</div> </div>
</div> </div>
<button <button
@@ -147,7 +147,7 @@ export function ProfileForm({ user }: { user: { name: string | null; email: stri
className="flex items-center gap-3 px-6 py-3 bg-rose-50 dark:bg-rose-500/10 text-rose-600 rounded-xl font-bold uppercase tracking-widest text-[10px] hover:bg-rose-100 transition-colors" className="flex items-center gap-3 px-6 py-3 bg-rose-50 dark:bg-rose-500/10 text-rose-600 rounded-xl font-bold uppercase tracking-widest text-[10px] hover:bg-rose-100 transition-colors"
> >
<LogOut size={16} /> <LogOut size={16} />
{t('sidebar.signOut') || 'Déconnexion'} {t('sidebar.signOut')}
</button> </button>
</div> </div>
</div> </div>

View File

@@ -62,7 +62,7 @@ export function TrashClient({
const all: TrashItem[] = [ const all: TrashItem[] = [
...notes.map(n => ({ ...notes.map(n => ({
id: n.id, id: n.id,
title: n.title || t('notes.untitled') || 'Untitled', title: n.title || t('notes.untitled'),
itemType: 'note' as const, itemType: 'note' as const,
deletedAt: (n as any).trashedAt || null, deletedAt: (n as any).trashedAt || null,
content: n.content, content: n.content,
@@ -101,9 +101,9 @@ export function TrashClient({
await restoreNb(item.id) await restoreNb(item.id)
setNotebooks(prev => prev.filter((nb: any) => nb.id !== item.id)) setNotebooks(prev => prev.filter((nb: any) => nb.id !== item.id))
} }
toast.success(t('trash.restoreSuccess') || 'Restored successfully') toast.success(t('trash.restoreSuccess'))
} catch { } catch {
toast.error(t('trash.restoreError') || 'Failed to restore') toast.error(t('trash.restoreError'))
} }
} }
@@ -116,22 +116,22 @@ export function TrashClient({
await permDeleteNb(item.id) await permDeleteNb(item.id)
setNotebooks(prev => prev.filter((nb: any) => nb.id !== item.id)) setNotebooks(prev => prev.filter((nb: any) => nb.id !== item.id))
} }
toast.success(t('trash.permanentDeleteSuccess') || 'Permanently deleted') toast.success(t('trash.permanentDeleteSuccess'))
} catch { } catch {
toast.error(t('trash.deleteError') || 'Failed to delete') toast.error(t('trash.deleteError'))
} }
} }
const handleEmptyTrash = async () => { const handleEmptyTrash = async () => {
if (!window.confirm(t('trash.emptyTrashConfirm') || 'Empty trash? This is irreversible.')) return if (!window.confirm(t('trash.emptyTrashConfirm'))) return
setIsEmptying(true) setIsEmptying(true)
try { try {
await emptyTrash() await emptyTrash()
setNotes([]) setNotes([])
setNotebooks([]) setNotebooks([])
toast.success(t('trash.emptyTrashSuccess') || 'Trash emptied') toast.success(t('trash.emptyTrashSuccess'))
} catch { } catch {
toast.error(t('trash.deleteError') || 'Failed to empty trash') toast.error(t('trash.deleteError'))
} finally { } finally {
setIsEmptying(false) setIsEmptying(false)
} }
@@ -143,10 +143,10 @@ export function TrashClient({
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div className="space-y-1"> <div className="space-y-1">
<h1 className="text-4xl font-memento-serif font-medium text-foreground flex items-center gap-4"> <h1 className="text-4xl font-memento-serif font-medium text-foreground flex items-center gap-4">
{t('sidebar.trash') || 'Trash'} <Trash2 size={28} className="text-rose-400 opacity-40" /> {t('sidebar.trash')} <Trash2 size={28} className="text-rose-400 opacity-40" />
</h1> </h1>
<p className="text-[10px] text-muted-foreground font-bold uppercase tracking-[0.3em] opacity-60"> <p className="text-[10px] text-muted-foreground font-bold uppercase tracking-[0.3em] opacity-60">
{t('trash.autoDelete30') || 'Auto-delete after 30 days'} {t('trash.autoDelete30')}
</p> </p>
</div> </div>
@@ -156,7 +156,7 @@ export function TrashClient({
disabled={isEmptying} disabled={isEmptying}
className="px-6 py-3 bg-card border border-border text-rose-500 rounded-2xl text-[10px] font-bold uppercase tracking-widest hover:bg-rose-50 hover:border-rose-100 transition-all shadow-sm disabled:opacity-50" className="px-6 py-3 bg-card border border-border text-rose-500 rounded-2xl text-[10px] font-bold uppercase tracking-widest hover:bg-rose-50 hover:border-rose-100 transition-all shadow-sm disabled:opacity-50"
> >
{t('trash.emptyTrash') || 'Empty all'} {t('trash.emptyTrash')}
</button> </button>
)} )}
</div> </div>
@@ -166,7 +166,7 @@ export function TrashClient({
<Search className="absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground group-focus-within:text-foreground transition-colors" size={16} /> <Search className="absolute left-4 top-1/2 -translate-y-1/2 text-muted-foreground group-focus-within:text-foreground transition-colors" size={16} />
<input <input
type="text" type="text"
placeholder={t('common.search') || 'Search...'} placeholder={t('common.search')}
value={searchQuery} value={searchQuery}
onChange={(e) => setSearchQuery(e.target.value)} onChange={(e) => setSearchQuery(e.target.value)}
className="w-full bg-white dark:bg-white/5 border border-border/40 rounded-2xl pl-12 pr-6 py-4 text-sm outline-none focus:ring-4 ring-foreground/5 transition-all shadow-sm" className="w-full bg-white dark:bg-white/5 border border-border/40 rounded-2xl pl-12 pr-6 py-4 text-sm outline-none focus:ring-4 ring-foreground/5 transition-all shadow-sm"
@@ -181,7 +181,7 @@ export function TrashClient({
className={`px-6 py-3 rounded-xl text-[10px] font-bold uppercase tracking-widest transition-all className={`px-6 py-3 rounded-xl text-[10px] font-bold uppercase tracking-widest transition-all
${filterType === type ? 'bg-foreground text-background shadow-lg' : 'text-muted-foreground hover:text-foreground'}`} ${filterType === type ? 'bg-foreground text-background shadow-lg' : 'text-muted-foreground hover:text-foreground'}`}
> >
{type === 'all' ? (t('trash.filterAll') || 'All') : type === 'notes' ? (t('nav.notes') || 'Notes') : (t('nav.notebooks') || 'Notebooks')} {type === 'all' ? t('trash.filterAll') : type === 'notes' ? t('nav.notes') : t('nav.notebooks')}
</button> </button>
))} ))}
</div> </div>
@@ -220,12 +220,12 @@ export function TrashClient({
onClick={() => handleRestore(item)} onClick={() => handleRestore(item)}
className="flex items-center gap-2 px-4 py-2 bg-emerald-50 text-emerald-600 rounded-xl text-[10px] font-bold uppercase tracking-widest hover:bg-emerald-100 transition-colors" className="flex items-center gap-2 px-4 py-2 bg-emerald-50 text-emerald-600 rounded-xl text-[10px] font-bold uppercase tracking-widest hover:bg-emerald-100 transition-colors"
> >
<RotateCcw size={12} /> {t('trash.restore') || 'Restore'} <RotateCcw size={12} /> {t('trash.restore')}
</button> </button>
<button <button
onClick={() => handlePermanentDelete(item)} onClick={() => handlePermanentDelete(item)}
className="p-2 hover:bg-rose-50 text-rose-500 rounded-xl transition-colors" className="p-2 hover:bg-rose-50 text-rose-500 rounded-xl transition-colors"
title={t('trash.permanentDelete') || 'Delete permanently'} title={t('trash.permanentDelete')}
> >
<X size={16} /> <X size={16} />
</button> </button>
@@ -238,7 +238,7 @@ export function TrashClient({
</h3> </h3>
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
<div className={`text-[9px] font-bold uppercase tracking-widest px-2 py-0.5 rounded border ${daysLeft < 5 ? 'border-rose-200 text-rose-500 bg-rose-50' : 'border-terreo/20 text-terreo bg-terreo/5'}`}> <div className={`text-[9px] font-bold uppercase tracking-widest px-2 py-0.5 rounded border ${daysLeft < 5 ? 'border-rose-200 text-rose-500 bg-rose-50' : 'border-terreo/20 text-terreo bg-terreo/5'}`}>
{daysLeft} {t('trash.daysRemaining') || 'DAYS LEFT'} {daysLeft} {t('trash.daysRemaining')}
</div> </div>
{item.deletedAt && ( {item.deletedAt && (
<span className="text-[10px] text-muted-foreground font-medium uppercase tracking-tight flex items-center gap-1"> <span className="text-[10px] text-muted-foreground font-medium uppercase tracking-tight flex items-center gap-1">
@@ -255,7 +255,7 @@ export function TrashClient({
) : ( ) : (
<div className="border-t border-border/40 pt-4"> <div className="border-t border-border/40 pt-4">
<div className="text-[9px] font-bold text-muted-foreground/40 uppercase tracking-widest"> <div className="text-[9px] font-bold text-muted-foreground/40 uppercase tracking-widest">
{t('trash.notebookContentPreserved') || 'Notebook content preserved'} {t('trash.notebookContentPreserved')}
</div> </div>
</div> </div>
)} )}
@@ -271,10 +271,10 @@ export function TrashClient({
</div> </div>
<div className="space-y-2"> <div className="space-y-2">
<h2 className="text-2xl font-memento-serif text-foreground italic"> <h2 className="text-2xl font-memento-serif text-foreground italic">
{t('trash.empty') || 'Trash is empty'} {t('trash.empty')}
</h2> </h2>
<p className="text-sm text-muted-foreground max-w-xs"> <p className="text-sm text-muted-foreground max-w-xs">
{t('trash.emptyDescription') || 'Deleted items will appear here. They are kept for 30 days before permanent deletion.'} {t('trash.emptyDescription')}
</p> </p>
</div> </div>
</div> </div>
@@ -284,7 +284,7 @@ export function TrashClient({
<footer className="px-12 py-6 bg-white/50 dark:bg-white/5 border-t border-border flex items-center gap-4"> <footer className="px-12 py-6 bg-white/50 dark:bg-white/5 border-t border-border flex items-center gap-4">
<AlertCircle size={14} className="text-muted-foreground" /> <AlertCircle size={14} className="text-muted-foreground" />
<p className="text-[10px] text-muted-foreground font-medium uppercase tracking-widest"> <p className="text-[10px] text-muted-foreground font-medium uppercase tracking-widest">
{t('trash.notebookRestoreHint') || 'Restoring a notebook also restores all its notes.'} {t('trash.notebookRestoreHint')}
</p> </p>
</footer> </footer>
</div> </div>

View File

@@ -58,13 +58,9 @@ export function AIChat({ showFloatingTrigger = true }: { showFloatingTrigger?: b
if (parsed.error === 'QUOTA_EXCEEDED') { if (parsed.error === 'QUOTA_EXCEEDED') {
const isBasic = (parsed.currentTier || 'BASIC') === 'BASIC' const isBasic = (parsed.currentTier || 'BASIC') === 'BASIC'
toast.error( toast.error(
language === 'fr' isBasic
? isBasic ? t('chat.quotaExceededBasic')
? 'Le chat IA est réservé au plan PRO et supérieur.' : t('chat.quotaExceededTier', { tier: parsed.currentTier }),
: `Limite mensuelle atteinte pour le plan ${parsed.currentTier}. Elle se réinitialise le mois prochain.`
: isBasic
? 'AI Chat is available from the PRO plan onwards.'
: `Monthly quota reached for ${parsed.currentTier} plan. It will reset next month.`,
{ duration: 8000 } { duration: 8000 }
) )
return return

View File

@@ -40,7 +40,7 @@ function getActionLabel(action: string, t: (key: string) => string | undefined):
function timeAgo(dateStr: string, t: (key: string) => string | undefined): string { function timeAgo(dateStr: string, t: (key: string) => string | undefined): string {
const diff = Date.now() - new Date(dateStr).getTime() const diff = Date.now() - new Date(dateStr).getTime()
const mins = Math.floor(diff / 60000) const mins = Math.floor(diff / 60000)
if (mins < 1) return t('brainstorm.justNow') || 'just now' if (mins < 1) return t('brainstorm.justNow')
if (mins < 60) return `${mins}m` if (mins < 60) return `${mins}m`
const hours = Math.floor(mins / 60) const hours = Math.floor(mins / 60)
if (hours < 24) return `${hours}h` if (hours < 24) return `${hours}h`
@@ -63,7 +63,7 @@ export function ActivityFeed({ activities, isOpen, onToggle, t }: ActivityFeedPr
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<Activity size={14} className="text-orange-500" /> <Activity size={14} className="text-orange-500" />
<h3 className="text-[10px] font-bold uppercase tracking-[0.2em] text-foreground"> <h3 className="text-[10px] font-bold uppercase tracking-[0.2em] text-foreground">
{t('brainstorm.activityTitle') || 'Activity'} {t('brainstorm.activityTitle')}
</h3> </h3>
</div> </div>
<button <button
@@ -78,7 +78,7 @@ export function ActivityFeed({ activities, isOpen, onToggle, t }: ActivityFeedPr
{activities.length === 0 ? ( {activities.length === 0 ? (
<div className="p-6 text-center"> <div className="p-6 text-center">
<p className="text-xs italic text-muted-foreground"> <p className="text-xs italic text-muted-foreground">
{t('brainstorm.noActivity') || 'No activity yet'} {t('brainstorm.noActivity')}
</p> </p>
</div> </div>
) : ( ) : (

View File

@@ -289,7 +289,7 @@ export function BrainstormPage() {
</motion.div> </motion.div>
<div className="flex-1"> <div className="flex-1">
<h1 className="text-4xl font-serif font-medium text-foreground tracking-tight"> <h1 className="text-4xl font-serif font-medium text-foreground tracking-tight">
{t('brainstorm.title') || 'Waves of Thought'} {t('brainstorm.title')}
</h1> </h1>
<div className="flex items-center gap-2 mt-1"> <div className="flex items-center gap-2 mt-1">
<span className="w-8 h-px bg-brand-accent/40" /> <span className="w-8 h-px bg-brand-accent/40" />

View File

@@ -185,7 +185,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
handleNoteCreated(newNote) handleNoteCreated(newNote)
setEditingNote({ note: newNote, readOnly: false }) setEditingNote({ note: newNote, readOnly: false })
} catch { } catch {
toast.error(t('notes.createFailed') || 'Failed to create note') toast.error(t('notes.createFailed'))
} }
}) })
} }
@@ -429,10 +429,10 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
}, [sortedNotes]) }, [sortedNotes])
const sortLabels: Record<SortOrder, string> = { const sortLabels: Record<SortOrder, string> = {
newest: t('sidebar.sortNewest') || 'Plus récentes', newest: t('sidebar.sortNewest'),
oldest: t('sidebar.sortOldest') || 'Plus anciennes', oldest: t('sidebar.sortOldest'),
alpha: t('sidebar.sortAlpha') || 'A → Z', alpha: t('sidebar.sortAlpha'),
manual: t('sidebar.sortManual') || 'Libre', manual: t('sidebar.sortManual'),
} }
@@ -495,9 +495,9 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
{currentNotebook {currentNotebook
? currentNotebook.name ? currentNotebook.name
: searchParams.get('shared') === '1' : searchParams.get('shared') === '1'
? (t('sidebar.sharedWithMe') || 'Partagées avec moi') ? t('sidebar.sharedWithMe')
: searchParams.get('reminders') === '1' : searchParams.get('reminders') === '1'
? (t('sidebar.reminders') || 'Rappels') ? t('sidebar.reminders')
: t('notes.title')} : t('notes.title')}
</h1> </h1>
</div> </div>
@@ -511,7 +511,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity" className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity"
> >
<Plus size={16} /> <Plus size={16} />
<span>{t('notes.newNote') || 'Add Note'}</span> <span>{t('notes.newNote')}</span>
</button> </button>
{currentNotebook && ( {currentNotebook && (
@@ -520,7 +520,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity" className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity"
> >
<FolderOpen size={16} /> <FolderOpen size={16} />
<span>{t('notebook.createSubNotebook') || 'Nouveau sous-carnet'}</span> <span>{t('notebook.createSubNotebook')}</span>
</button> </button>
)} )}
@@ -558,7 +558,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
router.push(`/home?${params.toString()}`) router.push(`/home?${params.toString()}`)
} }
}} }}
placeholder={t('search.placeholder') || 'Rechercher...'} placeholder={t('search.placeholder')}
className="w-48 bg-transparent border-b border-foreground/20 focus:border-foreground outline-none text-[13px] text-foreground placeholder:text-muted-foreground/50 py-0.5 transition-colors" className="w-48 bg-transparent border-b border-foreground/20 focus:border-foreground outline-none text-[13px] text-foreground placeholder:text-muted-foreground/50 py-0.5 transition-colors"
/> />
{inlineSearchQuery && ( {inlineSearchQuery && (
@@ -585,7 +585,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity" className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity"
> >
<Search size={16} /> <Search size={16} />
<span>{t('notes.search') || 'Search'}</span> <span>{t('notes.search')}</span>
</button> </button>
)} )}
@@ -595,7 +595,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity" className="flex items-center gap-2 text-[13px] text-foreground font-medium hover:opacity-70 transition-opacity"
> >
<Sparkles size={16} /> <Sparkles size={16} />
<span>{t('notes.reorganize') || 'Réorganiser les notes'}</span> <span>{t('notes.reorganize')}</span>
</button> </button>
)} )}
@@ -622,7 +622,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
title={initialSettings.aiAssistantEnabled ? t('notebook.summary') : t('notebook.assistantRequiredForSummarize')} title={initialSettings.aiAssistantEnabled ? t('notebook.summary') : t('notebook.assistantRequiredForSummarize')}
> >
<FileText size={16} /> <FileText size={16} />
<span>{t('notebook.summary') || 'Summarize'}</span> <span>{t('notebook.summary')}</span>
</button> </button>
)} )}
<button <button
@@ -640,7 +640,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<div className="flex items-center gap-3 text-[10px] font-bold uppercase tracking-[0.2em] text-muted-foreground"> <div className="flex items-center gap-3 text-[10px] font-bold uppercase tracking-[0.2em] text-muted-foreground">
<TagIcon size={12} /> <TagIcon size={12} />
<span>{t('labels.filterByTags') || 'Filter by Tags'}</span> <span>{t('labels.filterByTags')}</span>
{selectedTagIds.length > 0 && ( {selectedTagIds.length > 0 && (
<span className="bg-brand-accent/10 text-brand-accent px-2 py-0.5 rounded-full text-[9px] lowercase tracking-normal"> <span className="bg-brand-accent/10 text-brand-accent px-2 py-0.5 rounded-full text-[9px] lowercase tracking-normal">
{selectedTagIds.length} active {selectedTagIds.length} active
@@ -650,7 +650,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
{availableTags.length > 10 && ( {availableTags.length > 10 && (
<input <input
type="text" type="text"
placeholder={t('labels.searchTags') || 'Search tags...'} placeholder={t('labels.searchTags')}
className="bg-transparent border-b border-foreground/10 text-[10px] outline-none focus:border-brand-accent/40 py-1 px-2 w-32 transition-all focus:w-48 placeholder:text-muted-foreground/40" className="bg-transparent border-b border-foreground/10 text-[10px] outline-none focus:border-brand-accent/40 py-1 px-2 w-32 transition-all focus:w-48 placeholder:text-muted-foreground/40"
value={tagSearchQuery} value={tagSearchQuery}
onChange={e => setTagSearchQuery(e.target.value)} onChange={e => setTagSearchQuery(e.target.value)}
@@ -696,7 +696,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
className="px-3 py-1.5 text-[10px] font-bold uppercase tracking-wider text-muted-foreground/60 hover:text-foreground transition-colors border border-dashed border-border rounded-full" className="px-3 py-1.5 text-[10px] font-bold uppercase tracking-wider text-muted-foreground/60 hover:text-foreground transition-colors border border-dashed border-border rounded-full"
> >
{isTagsExpanded {isTagsExpanded
? (t('labels.showLess') || 'Show less') ? t('labels.showLess')
: `+ ${availableTags.length - 10} more`} : `+ ${availableTags.length - 10} more`}
</button> </button>
)} )}
@@ -706,7 +706,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
onClick={() => setSelectedTagIds([])} onClick={() => setSelectedTagIds([])}
className="px-3 py-1.5 text-[10px] font-bold uppercase tracking-wider text-red-500 hover:underline ms-auto" className="px-3 py-1.5 text-[10px] font-bold uppercase tracking-wider text-red-500 hover:underline ms-auto"
> >
{t('labels.clearAll') || 'Clear all'} {t('labels.clearAll')}
</button> </button>
)} )}
</div> </div>
@@ -745,14 +745,14 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
{notes.length === 0 && ( {notes.length === 0 && (
<div className="h-64 flex flex-col items-center justify-center text-center space-y-4"> <div className="h-64 flex flex-col items-center justify-center text-center space-y-4">
<p className="font-memento-serif text-xl italic text-muted-foreground"> <p className="font-memento-serif text-xl italic text-muted-foreground">
{t('notes.emptyState') || 'This notebook is waiting for its first vision.'} {t('notes.emptyState')}
</p> </p>
<button <button
onClick={handleAddNote} onClick={handleAddNote}
disabled={isCreating} disabled={isCreating}
className="px-6 py-2 border border-foreground text-[13px] uppercase tracking-[0.2em] hover:bg-foreground hover:text-background transition-all" className="px-6 py-2 border border-foreground text-[13px] uppercase tracking-[0.2em] hover:bg-foreground hover:text-background transition-all"
> >
{t('notes.createFirst') || 'Begin Drawing'} {t('notes.createFirst')}
</button> </button>
</div> </div>
)} )}

View File

@@ -0,0 +1,126 @@
'use client'
import { useEffect, useState } from 'react'
import { useLanguage } from '@/lib/i18n'
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from '@/components/ui/dialog'
import { getConsent, setConsent } from '@/lib/consent/cookie-consent'
import { toast } from 'sonner'
interface CookiePreferencesDialogProps {
open: boolean
onOpenChange: (open: boolean) => void
}
export function CookiePreferencesDialog({ open, onOpenChange }: CookiePreferencesDialogProps) {
const { t } = useLanguage()
const [analytics, setAnalytics] = useState(false)
useEffect(() => {
if (!open) return
const current = getConsent()
setAnalytics(current?.analytics ?? false)
}, [open])
const handleSave = () => {
setConsent({ analytics, marketing: false })
toast.success(t('consent.preferences.saved'))
onOpenChange(false)
}
return (
<Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent className="max-w-lg border-border bg-memento-paper dark:bg-background">
<DialogHeader>
<DialogTitle className="font-memento-serif text-xl text-ink">
{t('consent.preferences.title')}
</DialogTitle>
<DialogDescription className="text-[11px] text-concrete leading-relaxed">
{t('consent.preferences.description')}
</DialogDescription>
</DialogHeader>
<motionless className="space-y-6 py-2">
<CategoryRow
title={t('consent.preferences.necessaryTitle')}
description={t('consent.preferences.necessaryDesc')}
locked
checked
/>
<CategoryRow
title={t('consent.preferences.analyticsTitle')}
description={t('consent.preferences.analyticsDesc')}
checked={analytics}
onChange={setAnalytics}
/>
</motionless>
<DialogFooter className="gap-2 sm:gap-2">
<button
type="button"
onClick={() => onOpenChange(false)}
className="px-5 py-2.5 text-[10px] font-bold uppercase tracking-[0.2em] text-concrete hover:text-ink transition-colors"
>
{t('common.cancel')}
</button>
<button
type="button"
onClick={handleSave}
className="px-6 py-2.5 bg-foreground text-background rounded-xl text-[10px] font-bold uppercase tracking-[0.2em] hover:opacity-90 transition-opacity"
>
{t('consent.preferences.save')}
</button>
</DialogFooter>
</DialogContent>
</Dialog>
)
}
function CategoryRow({
title,
description,
checked,
onChange,
locked,
}: {
title: string
description: string
checked: boolean
onChange?: (v: boolean) => void
locked?: boolean
}) {
return (
<motionless className="flex items-start justify-between gap-4 border-b border-border/40 pb-5 last:border-0 last:pb-0">
<div className="space-y-1 pe-4">
<p className="text-xs font-bold text-ink">{title}</p>
<p className="text-[10px] text-concrete leading-relaxed">{description}</p>
{locked && (
<p className="text-[9px] font-bold uppercase tracking-widest text-concrete/80">
{title.includes('—') ? '' : ''}
</p>
)}
</motionless>
<label className={`relative inline-flex shrink-0 items-center ${locked ? 'opacity-50 pointer-events-none' : 'cursor-pointer'}`}>
<input
type="checkbox"
className="sr-only peer"
checked={checked}
disabled={locked}
onChange={(e) => onChange?.(e.target.checked)}
/>
<motionless className="w-11 h-6 bg-gray-200 dark:bg-white/10 rounded-full peer peer-checked:after:translate-x-[20px] 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 peer-checked:bg-ink" />
</label>
</motionless>
)
}
/** Avoid pulling motion into dialog — plain wrapper */
function motionless({ children, className }: { children: React.ReactNode; className?: string }) {
return <motionless className={className}>{children}</motionless>
}

View File

@@ -234,7 +234,7 @@ export function NoteActions({
<DropdownMenuItem onClick={onOpenHistory}> <DropdownMenuItem onClick={onOpenHistory}>
<History className="h-4 w-4 mr-2" /> <History className="h-4 w-4 mr-2" />
{historyEnabled {historyEnabled
? (t('notes.history') || 'Historique') ? t('notes.history')
: (t('notes.enableHistory') || "Activer l'historique")} : (t('notes.enableHistory') || "Activer l'historique")}
</DropdownMenuItem> </DropdownMenuItem>
)} )}

View File

@@ -351,9 +351,9 @@ export const NoteCard = memo(function NoteCard({
refreshNotes(note?.notebookId) refreshNotes(note?.notebookId)
if (!note.isPinned) { if (!note.isPinned) {
toast.success(t('notes.pinned') || 'Note pinned') toast.success(t('notes.pinned'))
} else { } else {
toast.info(t('notes.unpinned') || 'Note unpinned') toast.info(t('notes.unpinned'))
} }
}) })
} }
@@ -483,8 +483,8 @@ export const NoteCard = memo(function NoteCard({
{/* Drag Handle - Only visible on mobile/touch devices */} {/* Drag Handle - Only visible on mobile/touch devices */}
<div <div
className="muuri-drag-handle absolute top-2 start-2 z-20 cursor-grab active:cursor-grabbing p-2 md:hidden" className="muuri-drag-handle absolute top-2 start-2 z-20 cursor-grab active:cursor-grabbing p-2 md:hidden"
aria-label={t('notes.dragToReorder') || 'Drag to reorder'} aria-label={t('notes.dragToReorder')}
title={t('notes.dragToReorder') || 'Drag to reorder'} title={t('notes.dragToReorder')}
> >
<GripVertical className="h-5 w-5 text-muted-foreground" /> <GripVertical className="h-5 w-5 text-muted-foreground" />
</div> </div>
@@ -563,7 +563,7 @@ export const NoteCard = memo(function NoteCard({
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuItem className="text-muted-foreground" onSelect={() => onCreateSubNotebook?.()}> <DropdownMenuItem className="text-muted-foreground" onSelect={() => onCreateSubNotebook?.()}>
<Plus className="h-4 w-4 me-2" /> <Plus className="h-4 w-4 me-2" />
{t('notebook.createSubNotebook') || 'Nouveau sous-carnet…'} {t('notebook.createSubNotebook')}
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
@@ -605,7 +605,7 @@ export const NoteCard = memo(function NoteCard({
<button <button
onClick={handleRemoveFusedBadge} onClick={handleRemoveFusedBadge}
className="ms-1 opacity-0 group-hover/badge:opacity-100 hover:opacity-100 transition-opacity" className="ms-1 opacity-0 group-hover/badge:opacity-100 hover:opacity-100 transition-opacity"
title={t('notes.remove') || 'Remove'} title={t('notes.remove')}
> >
<Trash2 className="h-2.5 w-2.5" /> <Trash2 className="h-2.5 w-2.5" />
</button> </button>
@@ -873,13 +873,13 @@ export const NoteCard = memo(function NoteCard({
<AlertDialogHeader> <AlertDialogHeader>
<AlertDialogTitle>{t('notes.confirmDeleteTitle') || t('notes.delete')}</AlertDialogTitle> <AlertDialogTitle>{t('notes.confirmDeleteTitle') || t('notes.delete')}</AlertDialogTitle>
<AlertDialogDescription> <AlertDialogDescription>
{t('notes.confirmDelete') || 'Are you sure you want to delete this note?'} {t('notes.confirmDelete')}
</AlertDialogDescription> </AlertDialogDescription>
</AlertDialogHeader> </AlertDialogHeader>
<AlertDialogFooter> <AlertDialogFooter>
<AlertDialogCancel>{t('common.cancel') || 'Cancel'}</AlertDialogCancel> <AlertDialogCancel>{t('common.cancel')}</AlertDialogCancel>
<AlertDialogAction variant="destructive" onClick={handleDelete}> <AlertDialogAction variant="destructive" onClick={handleDelete}>
{t('notes.delete') || 'Delete'} {t('notes.delete')}
</AlertDialogAction> </AlertDialogAction>
</AlertDialogFooter> </AlertDialogFooter>
</AlertDialogContent> </AlertDialogContent>

View File

@@ -48,6 +48,7 @@ function fmtDate(date: Date | string, language: string): string {
} }
function VersionPreview({ entry, language }: { entry: NoteHistoryEntry; language: string }) { function VersionPreview({ entry, language }: { entry: NoteHistoryEntry; language: string }) {
const { t } = useLanguage()
const isMd = entry.type === 'markdown' || entry.isMarkdown const isMd = entry.type === 'markdown' || entry.isMarkdown
const isCl = entry.type === 'checklist' const isCl = entry.type === 'checklist'
const isRt = entry.type === 'richtext' const isRt = entry.type === 'richtext'
@@ -56,15 +57,15 @@ function VersionPreview({ entry, language }: { entry: NoteHistoryEntry; language
<div className="space-y-4"> <div className="space-y-4">
<div> <div>
<p className="text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1"> <p className="text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1">
{language === 'fr' ? 'Titre' : 'Title'} {t('noteHistory.title')}
</p> </p>
<p className="text-sm text-foreground font-medium"> <p className="text-sm text-foreground font-medium">
{entry.title || (language === 'fr' ? 'Sans titre' : 'Untitled')} {entry.title || t('noteHistory.untitled')}
</p> </p>
</div> </div>
<div> <div>
<p className="text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1"> <p className="text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1">
{language === 'fr' ? 'Contenu' : 'Content'} {t('noteHistory.content')}
</p> </p>
<div className="rounded-md border border-border/70 bg-muted/30 p-3 text-sm text-foreground overflow-auto max-h-[48vh]"> <div className="rounded-md border border-border/70 bg-muted/30 p-3 text-sm text-foreground overflow-auto max-h-[48vh]">
{isCl && entry.checkItems ? ( {isCl && entry.checkItems ? (

View File

@@ -222,7 +222,7 @@ export function BillingPlans() {
buttonClass: effectiveTier === 'ENTERPRISE' buttonClass: effectiveTier === 'ENTERPRISE'
? 'bg-paper text-concrete cursor-default' ? 'bg-paper text-concrete cursor-default'
: 'bg-ink text-white shadow-xl shadow-ink/20 hover:scale-[1.02] active:scale-95', : 'bg-ink text-white shadow-xl shadow-ink/20 hover:scale-[1.02] active:scale-95',
onClick: () => { window.location.href = 'mailto:sales@momento.app'; }, onClick: () => { window.location.href = 'mailto:sales@memento-note.com'; },
}, },
]; ];

View File

@@ -298,21 +298,21 @@ function SidebarCarnetItem({
<button <button
onClick={(e) => { e.stopPropagation(); onAddSubNotebook() }} onClick={(e) => { e.stopPropagation(); onAddSubNotebook() }}
className="p-1 hover:bg-ink/10 rounded-md transition-all text-concrete hover:text-ink" className="p-1 hover:bg-ink/10 rounded-md transition-all text-concrete hover:text-ink"
title={t('notebook.createSubNotebook') || 'Add sub-carnet'} title={t('notebook.createSubNotebook')}
> >
<Plus size={10} /> <Plus size={10} />
</button> </button>
<button <button
onClick={(e) => { e.stopPropagation(); onRename() }} onClick={(e) => { e.stopPropagation(); onRename() }}
className="p-1 hover:bg-ink/10 rounded-md transition-all text-concrete hover:text-ink" className="p-1 hover:bg-ink/10 rounded-md transition-all text-concrete hover:text-ink"
title={t('notebook.rename') || 'Rename'} title={t('notebook.rename')}
> >
<Pencil size={10} /> <Pencil size={10} />
</button> </button>
<button <button
onClick={(e) => { e.stopPropagation(); onDelete() }} onClick={(e) => { e.stopPropagation(); onDelete() }}
className="p-1 hover:bg-rose-50 rounded-md transition-all text-concrete hover:text-rose-500" className="p-1 hover:bg-rose-50 rounded-md transition-all text-concrete hover:text-rose-500"
title={t('notebook.delete') || 'Delete'} title={t('notebook.delete')}
> >
<Trash2 size={10} /> <Trash2 size={10} />
</button> </button>
@@ -399,7 +399,7 @@ function SidebarCarnetItem({
))} ))}
{isActive && notes.length === 0 && !hasChildren && ( {isActive && notes.length === 0 && !hasChildren && (
<p className="ps-8 py-2 text-[10px] italic text-muted-foreground/40 font-light"> <p className="ps-8 py-2 text-[10px] italic text-muted-foreground/40 font-light">
{t('common.noResults') || 'No notes found'} {t('common.noResults')}
</p> </p>
)} )}
</div> </div>
@@ -583,7 +583,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
try { try {
await moveNotebookToParent(dragId, targetId) await moveNotebookToParent(dragId, targetId)
} catch (err) { } catch (err) {
toast.error(err instanceof Error ? err.message : t('sidebar.moveFailed') || 'Failed to move notebook') toast.error(err instanceof Error ? err.message : t('sidebar.moveFailed'))
setOrderedNotebooks(sortedNotebooks) setOrderedNotebooks(sortedNotebooks)
} }
} }
@@ -602,7 +602,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
try { try {
await moveNotebookToParent(dragId, null) await moveNotebookToParent(dragId, null)
} catch (err) { } catch (err) {
toast.error(err instanceof Error ? err.message : t('sidebar.moveFailed') || 'Failed to move notebook') toast.error(err instanceof Error ? err.message : t('sidebar.moveFailed'))
setOrderedNotebooks(sortedNotebooks) setOrderedNotebooks(sortedNotebooks)
} }
} }
@@ -835,14 +835,14 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
<DropdownMenuItem asChild> <DropdownMenuItem asChild>
<Link href="/settings/profile" className="flex items-center gap-2 cursor-pointer"> <Link href="/settings/profile" className="flex items-center gap-2 cursor-pointer">
<User className="h-4 w-4" /> <User className="h-4 w-4" />
{t('sidebar.profile') || 'Profil'} {t('sidebar.profile')}
</Link> </Link>
</DropdownMenuItem> </DropdownMenuItem>
{(user as { role?: string } | undefined)?.role === 'ADMIN' && ( {(user as { role?: string } | undefined)?.role === 'ADMIN' && (
<DropdownMenuItem asChild> <DropdownMenuItem asChild>
<a href="/admin" className="flex items-center gap-2 cursor-pointer"> <a href="/admin" className="flex items-center gap-2 cursor-pointer">
<Shield className="h-4 w-4" /> <Shield className="h-4 w-4" />
{t('nav.adminDashboard') || 'Administration'} {t('nav.adminDashboard')}
</a> </a>
</DropdownMenuItem> </DropdownMenuItem>
)} )}
@@ -852,7 +852,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
onClick={() => signOut({ callbackUrl: '/login' })} onClick={() => signOut({ callbackUrl: '/login' })}
> >
<LogOut className="h-4 w-4 me-2" /> <LogOut className="h-4 w-4 me-2" />
{t('sidebar.signOut') || 'Se déconnecter'} {t('sidebar.signOut')}
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
@@ -873,7 +873,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
<button <button
onClick={() => { router.push('/home') }} onClick={() => { router.push('/home') }}
className="p-1.5 text-muted-ink hover:text-ink transition-all hover:bg-white/50 dark:hover:bg-white/10 rounded-lg border border-transparent hover:border-border" className="p-1.5 text-muted-ink hover:text-ink transition-all hover:bg-white/50 dark:hover:bg-white/10 rounded-lg border border-transparent hover:border-border"
title={t('nav.home') || 'Accueil'} title={t('nav.home')}
> >
<Home size={14} /> <Home size={14} />
</button> </button>
@@ -1016,7 +1016,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
<div <div
className="h-10 rounded-lg border-2 border-dashed border-brand-accent/20 flex items-center justify-center text-[11px] text-brand-accent/50" className="h-10 rounded-lg border-2 border-dashed border-brand-accent/20 flex items-center justify-center text-[11px] text-brand-accent/50"
> >
{t('sidebar.dropToRoot') || 'Drop here to move to root'} {t('sidebar.dropToRoot')}
</div> </div>
)} )}
</div> </div>
@@ -1034,7 +1034,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
</p> </p>
<div className="px-4 py-8 text-center border border-dashed border-border rounded-2xl bg-paper/30"> <div className="px-4 py-8 text-center border border-dashed border-border rounded-2xl bg-paper/30">
<Clock size={24} className="mx-auto text-concrete/40 mb-3" /> <Clock size={24} className="mx-auto text-concrete/40 mb-3" />
<p className="text-[11px] text-concrete italic">{t('sidebar.noReminders') || 'No active reminders.'}</p> <p className="text-[11px] text-concrete italic">{t('sidebar.noReminders')}</p>
</div> </div>
</motion.div> </motion.div>
) : activeView === 'agents' ? ( ) : activeView === 'agents' ? (
@@ -1118,7 +1118,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
)} )}
> >
<Users size={14} className={searchParams.get('shared') === '1' && pathname === '/home' ? 'text-accent' : 'text-muted-ink group-hover:text-ink'} /> <Users size={14} className={searchParams.get('shared') === '1' && pathname === '/home' ? 'text-accent' : 'text-muted-ink group-hover:text-ink'} />
<span>{t('sidebar.sharedWithMe') || 'Shared'}</span> <span>{t('sidebar.sharedWithMe')}</span>
</Link> </Link>
<Link <Link
@@ -1175,7 +1175,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
onClick={(e) => e.stopPropagation()} onClick={(e) => e.stopPropagation()}
> >
<h3 className="text-sm font-semibold mb-4 font-memento-serif"> <h3 className="text-sm font-semibold mb-4 font-memento-serif">
{t('notebook.rename') || 'Rename notebook'} {t('notebook.rename')}
</h3> </h3>
<input <input
autoFocus autoFocus
@@ -1183,7 +1183,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
onChange={(e) => setRenameValue(e.target.value)} onChange={(e) => setRenameValue(e.target.value)}
onKeyDown={(e) => { if (e.key === 'Enter') handleConfirmRename(); if (e.key === 'Escape') setRenamingNotebook(null) }} onKeyDown={(e) => { if (e.key === 'Enter') handleConfirmRename(); if (e.key === 'Escape') setRenamingNotebook(null) }}
className="w-full px-3 py-2 text-sm border border-border rounded-lg bg-transparent focus:outline-none focus:ring-2 focus:ring-foreground/20" className="w-full px-3 py-2 text-sm border border-border rounded-lg bg-transparent focus:outline-none focus:ring-2 focus:ring-foreground/20"
placeholder={t('notebook.namePlaceholder') || 'Notebook name'} placeholder={t('notebook.namePlaceholder')}
/> />
<div className="flex justify-end gap-2 mt-4"> <div className="flex justify-end gap-2 mt-4">
<button <button
@@ -1191,14 +1191,14 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
disabled={isRenaming} disabled={isRenaming}
className="px-4 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors rounded-lg" className="px-4 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors rounded-lg"
> >
{t('common.cancel') || 'Cancel'} {t('common.cancel')}
</button> </button>
<button <button
onClick={handleConfirmRename} onClick={handleConfirmRename}
disabled={isRenaming || !renameValue.trim()} disabled={isRenaming || !renameValue.trim()}
className="px-4 py-1.5 text-xs font-medium bg-foreground text-background rounded-lg hover:opacity-90 transition-opacity disabled:opacity-50" className="px-4 py-1.5 text-xs font-medium bg-foreground text-background rounded-lg hover:opacity-90 transition-opacity disabled:opacity-50"
> >
{isRenaming ? '...' : (t('common.confirm') || 'Rename')} {isRenaming ? '...' : t('notebook.confirmRename')}
</button> </button>
</div> </div>
</motion.div> </motion.div>
@@ -1228,7 +1228,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
<Trash2 size={16} className="text-red-500" /> <Trash2 size={16} className="text-red-500" />
</div> </div>
<h3 className="text-sm font-semibold mb-1 font-memento-serif"> <h3 className="text-sm font-semibold mb-1 font-memento-serif">
{t('notebook.trashTitle') || 'Move to trash'} {t('notebook.trashTitle')}
</h3> </h3>
<p className="text-xs text-muted-foreground mb-4"> <p className="text-xs text-muted-foreground mb-4">
{t('notebook.trashConfirm', { name: deletingNotebook.name }) || `Move "${deletingNotebook.name}" to trash? You can restore it within 30 days.`} {t('notebook.trashConfirm', { name: deletingNotebook.name }) || `Move "${deletingNotebook.name}" to trash? You can restore it within 30 days.`}
@@ -1244,14 +1244,14 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
disabled={isDeleting} disabled={isDeleting}
className="px-4 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors rounded-lg" className="px-4 py-1.5 text-xs font-medium text-muted-foreground hover:text-foreground transition-colors rounded-lg"
> >
{t('common.cancel') || 'Cancel'} {t('common.cancel')}
</button> </button>
<button <button
onClick={handleConfirmDelete} onClick={handleConfirmDelete}
disabled={isDeleting} disabled={isDeleting}
className="px-4 py-1.5 text-xs font-medium bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50" className="px-4 py-1.5 text-xs font-medium bg-red-500 text-white rounded-lg hover:bg-red-600 transition-colors disabled:opacity-50"
> >
{isDeleting ? '...' : (t('notebook.moveToTrash') || 'Move to trash')} {isDeleting ? '...' : t('notebook.moveToTrash')}
</button> </button>
</div> </div>
</motion.div> </motion.div>

View File

@@ -188,7 +188,7 @@ export function UsageMeter({ className }: UsageMeterProps) {
onClick={(e) => { e.stopPropagation(); router.push('/settings/billing'); }} onClick={(e) => { e.stopPropagation(); router.push('/settings/billing'); }}
className="w-full mt-2 py-2 bg-brand-accent/10 hover:bg-brand-accent text-brand-accent hover:text-white text-[9px] font-bold uppercase tracking-widest rounded-xl transition-all duration-300 border border-brand-accent/20" className="w-full mt-2 py-2 bg-brand-accent/10 hover:bg-brand-accent text-brand-accent hover:text-white text-[9px] font-bold uppercase tracking-widest rounded-xl transition-all duration-300 border border-brand-accent/20"
> >
{t('usageMeter.upgradePricing') || 'Passer à Pro'} {t('usageMeter.upgradePricing')}
</button> </button>
)} )}
</div> </div>

View File

@@ -0,0 +1,40 @@
'use client'
import { useCallback, useEffect, useState } from 'react'
import {
CONSENT_CHANGE_EVENT,
getConsent,
hasConsentChoice,
type ConsentRecord,
} from '@/lib/consent/cookie-consent'
export function useCookieConsent() {
const [consent, setConsentState] = useState<ConsentRecord | null>(null)
const [ready, setReady] = useState(false)
const refresh = useCallback(() => {
setConsentState(getConsent())
setReady(true)
}, [])
useEffect(() => {
refresh()
const onChange = () => refresh()
const onStorage = (e: StorageEvent) => {
if (e.key === 'memento-consent-v1') refresh()
}
window.addEventListener(CONSENT_CHANGE_EVENT, onChange)
window.addEventListener('storage', onStorage)
return () => {
window.removeEventListener(CONSENT_CHANGE_EVENT, onChange)
window.removeEventListener('storage', onStorage)
}
}, [refresh])
return {
consent,
ready,
hasChoice: ready && hasConsentChoice(),
needsBanner: ready && !hasConsentChoice(),
}
}

View File

@@ -0,0 +1,17 @@
/**
* Analytics choke-point — all product analytics must go through these helpers.
* New third-party scripts in app/ must check hasAnalyticsConsent() before loading.
*/
import { hasAnalyticsConsent } from '@/lib/consent/cookie-consent'
export type AnalyticsEventProperties = Record<string, string | number | boolean | null | undefined>
export function trackClientEvent(_event: string, _properties?: AnalyticsEventProperties): void {
if (!hasAnalyticsConsent()) return
// Future: PostHog/Umami client capture (see saas-deployment-prep.md §D)
}
export function trackServerEvent(_event: string, _properties?: AnalyticsEventProperties): void {
if (!hasAnalyticsConsent()) return
// Future: server-side analytics capture
}

View File

@@ -0,0 +1,112 @@
export const CONSENT_VERSION = 1 as const
export const CONSENT_STORAGE_KEY = 'memento-consent-v1'
export const CONSENT_COOKIE_NAME = 'memento-cookie-consent'
const CONSENT_COOKIE_MAX_AGE = 60 * 60 * 24 * 365
export type ConsentRecord = {
version: typeof CONSENT_VERSION
necessary: true
analytics: boolean
marketing: boolean
updatedAt: string
}
export const CONSENT_CHANGE_EVENT = 'memento-consent-change'
export const OPEN_COOKIE_PREFERENCES_EVENT = 'memento-open-cookie-preferences'
function isBrowser(): boolean {
return typeof window !== 'undefined'
}
function parseRecord(raw: unknown): ConsentRecord | null {
if (!raw || typeof raw !== 'object') return null
const o = raw as Partial<ConsentRecord>
if (o.version !== CONSENT_VERSION) return null
if (o.necessary !== true) return null
if (typeof o.analytics !== 'boolean' || typeof o.marketing !== 'boolean') return null
if (typeof o.updatedAt !== 'string') return null
return {
version: CONSENT_VERSION,
necessary: true,
analytics: o.analytics,
marketing: o.marketing,
updatedAt: o.updatedAt,
}
}
function readCookie(): ConsentRecord | null {
if (!isBrowser()) return null
const match = document.cookie
.split(';')
.map((s) => s.trim())
.find((s) => s.startsWith(`${CONSENT_COOKIE_NAME}=`))
if (!match) return null
try {
const encoded = match.slice(CONSENT_COOKIE_NAME.length + 1)
const json = decodeURIComponent(atob(encoded))
return parseRecord(JSON.parse(json))
} catch {
return null
}
}
function writeCookie(record: ConsentRecord): void {
if (!isBrowser()) return
const encoded = btoa(encodeURIComponent(JSON.stringify(record)))
document.cookie = `${CONSENT_COOKIE_NAME}=${encoded};path=/;max-age=${CONSENT_COOKIE_MAX_AGE};samesite=lax`
}
export function getConsent(): ConsentRecord | null {
if (!isBrowser()) return null
try {
const fromStorage = localStorage.getItem(CONSENT_STORAGE_KEY)
if (fromStorage) {
const parsed = parseRecord(JSON.parse(fromStorage))
if (parsed) return parsed
}
} catch {
// ignore corrupt storage
}
return readCookie()
}
export function hasConsentChoice(): boolean {
return getConsent() !== null
}
export function hasAnalyticsConsent(): boolean {
return getConsent()?.analytics === true
}
export function hasMarketingConsent(): boolean {
return getConsent()?.marketing === true
}
export function setConsent(partial: Pick<ConsentRecord, 'analytics' | 'marketing'>): ConsentRecord {
const record: ConsentRecord = {
version: CONSENT_VERSION,
necessary: true,
analytics: partial.analytics,
marketing: partial.marketing,
updatedAt: new Date().toISOString(),
}
if (isBrowser()) {
localStorage.setItem(CONSENT_STORAGE_KEY, JSON.stringify(record))
writeCookie(record)
window.dispatchEvent(new CustomEvent(CONSENT_CHANGE_EVENT, { detail: record }))
}
return record
}
export function acceptEssentialsOnly(): ConsentRecord {
return setConsent({ analytics: false, marketing: false })
}
export function acceptAllOptional(): ConsentRecord {
return setConsent({ analytics: true, marketing: false })
}
export function openCookiePreferences(): void {
if (!isBrowser()) return
window.dispatchEvent(new CustomEvent(OPEN_COOKIE_PREFERENCES_EVENT))
}

View File

@@ -49,8 +49,8 @@
"sortOldest": "الأقدم أولاً", "sortOldest": "الأقدم أولاً",
"sortAlpha": "أ → ز", "sortAlpha": "أ → ز",
"accountMenu": "قائمة الحساب", "accountMenu": "قائمة الحساب",
"profile": "حساب تعريفي", "profile": "Profile",
"signOut": "تسجيل الخروج", "signOut": "Sign out",
"sortOrder": "ترتيب الترتيب", "sortOrder": "ترتيب الترتيب",
"freezePinnedNotebook": "تثبيت ترتيب الشريط الجانبي للكمبيوتر الدفتري", "freezePinnedNotebook": "تثبيت ترتيب الشريط الجانبي للكمبيوتر الدفتري",
"unfreezePinnedNotebook": "قم بإزالة تثبيت ترتيب الشريط الجانبي للكمبيوتر الدفتري", "unfreezePinnedNotebook": "قم بإزالة تثبيت ترتيب الشريط الجانبي للكمبيوتر الدفتري",
@@ -58,14 +58,15 @@
"renameNotebook": "إعادة تسمية", "renameNotebook": "إعادة تسمية",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "ترتيب حر", "sortManual": "ترتيب حر",
"moveFailed": "فشل نقل دفتر الملاحظات", "moveFailed": "Failed to move notebook",
"dropToRoot": "أفلت هنا للنقل إلى الجذر" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "الملاحظات", "title": "الملاحظات",
"newNote": "ملاحظة جديدة", "newNote": "ملاحظة جديدة",
"reorganize": "إعادة تنظيم الملاحظات", "reorganize": "إعادة تنظيم الملاحظات",
"untitled": "بدون عنوان", "untitled": "Untitled",
"placeholder": "اكتب ملاحظة...", "placeholder": "اكتب ملاحظة...",
"markdownPlaceholder": "اكتب ملاحظة... (Markdown مدعوم)", "markdownPlaceholder": "اكتب ملاحظة... (Markdown مدعوم)",
"titlePlaceholder": "العنوان", "titlePlaceholder": "العنوان",
@@ -81,12 +82,12 @@
"add": "إضافة", "add": "إضافة",
"adding": "جاري الإضافة...", "adding": "جاري الإضافة...",
"close": "إغلاق", "close": "إغلاق",
"confirmDelete": "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "هل أنت متأكد أنك تريد مغادرة هذه الملاحظة المشتركة؟", "confirmLeaveShare": "هل أنت متأكد أنك تريد مغادرة هذه الملاحظة المشتركة؟",
"sharedBy": "شاركها", "sharedBy": "شاركها",
"sharedShort": "مشترك", "sharedShort": "مشترك",
"leaveShare": "مغادرة", "leaveShare": "مغادرة",
"delete": "حذف", "delete": "Delete",
"archive": "أرشفة", "archive": "أرشفة",
"unarchive": "إلغاء الأرشفة", "unarchive": "إلغاء الأرشفة",
"pin": "تثبيت", "pin": "تثبيت",
@@ -127,7 +128,7 @@
"duplicate": "نسخ", "duplicate": "نسخ",
"share": "مشاركة", "share": "مشاركة",
"showCollaborators": "إظهار المتعاونين", "showCollaborators": "إظهار المتعاونين",
"pinned": "مثبتة", "pinned": "Note pinned",
"others": "أخرى", "others": "أخرى",
"noNotes": "لا توجد ملاحظات", "noNotes": "لا توجد ملاحظات",
"noNotesFound": "لم يتم العثور على ملاحظات", "noNotesFound": "لم يتم العثور على ملاحظات",
@@ -159,8 +160,8 @@
"recent": "الحديثة", "recent": "الحديثة",
"addNote": "إضافة ملاحظة", "addNote": "إضافة ملاحظة",
"readMore": "اقرأ المزيد", "readMore": "اقرأ المزيد",
"remove": "إزالة", "remove": "Remove",
"dragToReorder": "اسحب لإعادة الترتيب", "dragToReorder": "Drag to reorder",
"more": "المزيد", "more": "المزيد",
"emptyState": "لا توجد ملاحظات", "emptyState": "لا توجد ملاحظات",
"metadataPanel": "تفاصيل", "metadataPanel": "تفاصيل",
@@ -173,7 +174,7 @@
"improveFailed": "فشل التحسين", "improveFailed": "فشل التحسين",
"transformFailed": "فشل التحويل", "transformFailed": "فشل التحويل",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "غير مثبت", "unpinned": "Note unpinned",
"redoShortcut": "إعادة (Ctrl+Y)", "redoShortcut": "إعادة (Ctrl+Y)",
"undoShortcut": "تراجع (Ctrl+Z)", "undoShortcut": "تراجع (Ctrl+Z)",
"reorderTabs": "إعادة ترتيب علامة التبويب", "reorderTabs": "إعادة ترتيب علامة التبويب",
@@ -751,7 +752,7 @@
"downloadFailed": "فشل التنزيل" "downloadFailed": "فشل التنزيل"
}, },
"nav": { "nav": {
"home": "الرئيسية", "home": "Home",
"notes": "الملاحظات", "notes": "الملاحظات",
"notebooks": "الدفاتر", "notebooks": "الدفاتر",
"generalNotes": "الملاحظات العامة", "generalNotes": "الملاحظات العامة",
@@ -761,7 +762,7 @@
"aiSettings": "إعدادات الذكاء الاصطناعي", "aiSettings": "إعدادات الذكاء الاصطناعي",
"logout": "تسجيل الخروج", "logout": "تسجيل الخروج",
"login": "تسجيل الدخول", "login": "تسجيل الدخول",
"adminDashboard": "لوحة تحكم المشرف", "adminDashboard": "Admin Dashboard",
"diagnostics": "التشخيص", "diagnostics": "التشخيص",
"trash": "المهملات", "trash": "المهملات",
"support": "دعم Memento ☕", "support": "دعم Memento ☕",
@@ -786,7 +787,8 @@
"proPlan": "خطة احترافية", "proPlan": "خطة احترافية",
"chat": "دردشة الذكاء الاصطناعي", "chat": "دردشة الذكاء الاصطناعي",
"lab": "المختبر", "lab": "المختبر",
"agents": "الوكلاء" "agents": "الوكلاء",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "الإعدادات", "title": "الإعدادات",
@@ -814,7 +816,7 @@
"security": "الأمان", "security": "الأمان",
"about": "حول", "about": "حول",
"version": "الإصدار", "version": "الإصدار",
"settingsSaved": "تم حفظ الإعدادات", "settingsSaved": "Settings saved",
"cardSizeMode": "حجم الملاحظة", "cardSizeMode": "حجم الملاحظة",
"cardSizeModeDescription": "اختر بين أحجام متغيرة أو حجم موحد", "cardSizeModeDescription": "اختر بين أحجام متغيرة أو حجم موحد",
"selectCardSizeMode": "اختر وضع العرض", "selectCardSizeMode": "اختر وضع العرض",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "إنشاء متجهات لجميع الملاحظات لتفعيل البحث القائم على النية", "semanticIndexingDescription": "إنشاء متجهات لجميع الملاحظات لتفعيل البحث القائم على النية",
"profile": "الملف الشخصي", "profile": "الملف الشخصي",
"searchNoResults": "لم يتم العثور على إعدادات مطابقة", "searchNoResults": "لم يتم العثور على إعدادات مطابقة",
"languageAuto": "الكشف التلقائي", "languageAuto": "Language set to Auto",
"emailNotifications": "إشعارات البريد الإلكتروني", "emailNotifications": "إشعارات البريد الإلكتروني",
"emailNotificationsDesc": "تلقي إشعارات مهمة عبر البريد الإلكتروني", "emailNotificationsDesc": "تلقي إشعارات مهمة عبر البريد الإلكتروني",
"desktopNotifications": "إشعارات سطح المكتب", "desktopNotifications": "إشعارات سطح المكتب",
"desktopNotificationsDesc": "تلقي إشعارات في المتصفح", "desktopNotificationsDesc": "تلقي إشعارات في المتصفح",
"notificationsDesc": "إدارة تفضيلات الإشعارات", "notificationsDesc": "إدارة تفضيلات الإشعارات",
"autoSave": "الحفظ التلقائي", "autoSave": "Auto-save",
"autoSaveDesc": "حفظ التغييرات تلقائيًا أثناء الكتابة" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "الملف الشخصي", "title": "الملف الشخصي",
@@ -864,10 +866,10 @@
"preferredLanguage": "اللغة المفضلة", "preferredLanguage": "اللغة المفضلة",
"selectLanguage": "اختر لغة", "selectLanguage": "اختر لغة",
"languageDescription": "سيتم استخدام هذه اللغة لميزات الذكاء الاصطناعي وتحليل المحتوى ونص الواجهة.", "languageDescription": "سيتم استخدام هذه اللغة لميزات الذكاء الاصطناعي وتحليل المحتوى ونص الواجهة.",
"autoDetect": "الكشف التلقائي", "autoDetect": "Auto-detect",
"updateSuccess": "تم تحديث الملف الشخصي", "updateSuccess": "تم تحديث الملف الشخصي",
"updateFailed": "فشل في تحديث الملف الشخصي", "updateFailed": "فشل في تحديث الملف الشخصي",
"languageUpdateSuccess": "تم تحديث اللغة بنجاح", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "فشل في تحديث اللغة", "languageUpdateFailed": "فشل في تحديث اللغة",
"profileUpdated": "تم تحديث الملف الشخصي", "profileUpdated": "تم تحديث الملف الشخصي",
"profileError": "خطأ في تحديث الملف الشخصي", "profileError": "خطأ في تحديث الملف الشخصي",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "جاري التحميل...", "loading": "جاري التحميل...",
"save": "حفظ", "save": "Save",
"cancel": "إلغاء", "cancel": "Cancel",
"add": "إضافة", "add": "إضافة",
"edit": "تعديل", "edit": "تعديل",
"confirm": "تأكيد", "confirm": "تأكيد",
@@ -984,7 +986,7 @@
"createNew": "إنشاء دفتر جديد", "createNew": "إنشاء دفتر جديد",
"createDescription": "ابدأ مجموعة جديدة لتنظيم ملاحظاتك وأفكارك ومشاريعك بكفاءة.", "createDescription": "ابدأ مجموعة جديدة لتنظيم ملاحظاتك وأفكارك ومشاريعك بكفاءة.",
"name": "اسم الدفتر", "name": "اسم الدفتر",
"namePlaceholder": "مثال: استراتيجية التسويق الربع سنوية", "namePlaceholder": "Notebook name",
"myNotebook": "دفتري", "myNotebook": "دفتري",
"saving": "جاري الحفظ...", "saving": "جاري الحفظ...",
"selectIcon": "الأيقونة", "selectIcon": "الأيقونة",
@@ -993,7 +995,7 @@
"creating": "جاري الإنشاء...", "creating": "جاري الإنشاء...",
"edit": "تحرير الدفتر", "edit": "تحرير الدفتر",
"editDescription": "تغيير اسم الدفتر وأيقونته ولونه.", "editDescription": "تغيير اسم الدفتر وأيقونته ولونه.",
"delete": "حذف الدفتر", "delete": "Delete",
"deleteWarning": "هل أنت متأكد أنك تريد حذف هذا الدفتر؟ سيتم نقل الملاحظات إلى الملاحظات العامة.", "deleteWarning": "هل أنت متأكد أنك تريد حذف هذا الدفتر؟ سيتم نقل الملاحظات إلى الملاحظات العامة.",
"deleteConfirm": "حذف", "deleteConfirm": "حذف",
"summary": "ملخص الدفتر", "summary": "ملخص الدفتر",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "دفتر ملاحظات مثبت — تم تجميد الطلب", "pinnedFrozenTooltip": "دفتر ملاحظات مثبت — تم تجميد الطلب",
"organizeNotebookWithAITooltip": "قم بتنظيم دفتر الملاحظات هذا باستخدام الذكاء الاصطناعي", "organizeNotebookWithAITooltip": "قم بتنظيم دفتر الملاحظات هذا باستخدام الذكاء الاصطناعي",
"assistantRequiredForSummarize": "قم بتشغيل AI Assistant في الإعدادات للتلخيص", "assistantRequiredForSummarize": "قم بتشغيل AI Assistant في الإعدادات للتلخيص",
"createSubnotebook": "إضافة دفتر فرعي" "createSubnotebook": "إضافة دفتر فرعي",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "النقل إلى {name}؟", "title": "النقل إلى {name}؟",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "المظهر", "title": "المظهر",
"description": "تخصيص مظهر التطبيق", "description": "Customize the interface",
"notesViewDescription": "اختر كيفية عرض الملاحظات على الصفحة الرئيسية وفي الدفاتر.", "notesViewDescription": "اختر كيفية عرض الملاحظات على الصفحة الرئيسية وفي الدفاتر.",
"notesViewLabel": "عرض الملاحظات", "notesViewLabel": "عرض الملاحظات",
"notesViewTabs": "علامات تبويب (نمط OneNote)", "notesViewTabs": "علامات تبويب (نمط OneNote)",
"notesViewMasonry": "بطاقات (شبكة)", "notesViewMasonry": "بطاقات (شبكة)",
"notesViewList": "قائمة (مجلة)", "notesViewList": "قائمة (مجلة)",
"selectTheme": "اختر المظهر", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "عائلة الخطوط", "fontFamilyLabel": "Font",
"fontFamilyDescription": "اختر الخط المستخدم في جميع أنحاء التطبيق", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter مُحسّن لسهولة القراءة، النظام يستخدم الخط الأصلي لنظام التشغيل", "selectFontFamily": "Inter مُحسّن لسهولة القراءة، النظام يستخدم الخط الأصلي لنظام التشغيل",
"fontSystem": "الخط الافتراضي للنظام", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "سلة المحذوفات", "title": "سلة المحذوفات",
"empty": "سلة المحذوفات فارغة", "empty": "Trash is empty",
"emptyDescription": "ستظهر الملاحظات المحذوفة هنا", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "استعادة", "restore": "Restore",
"deletePermanently": "حذف نهائي", "deletePermanently": "حذف نهائي",
"noteTrashed": "تم نقل الملاحظة إلى سلة المحذوفات", "noteTrashed": "تم نقل الملاحظة إلى سلة المحذوفات",
"noteRestored": "تم استعادة الملاحظة", "noteRestored": "تم استعادة الملاحظة",
"notePermanentlyDeleted": "تم حذف الملاحظة نهائيًا", "notePermanentlyDeleted": "تم حذف الملاحظة نهائيًا",
"emptyTrash": "إفراغ سلة المحذوفات", "emptyTrash": "إفراغ سلة المحذوفات",
"emptyTrashConfirm": "حذف جميع الملاحظات في سلة المحذوفات نهائيًا؟", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "تم إفراغ سلة المحذوفات", "emptyTrashSuccess": "تم إفراغ سلة المحذوفات",
"permanentDelete": "حذف نهائي", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "سيتم حذف هذه الملاحظة نهائيًا. لا يمكن التراجع عن هذا الإجراء." "permanentDeleteConfirm": "سيتم حذف هذه الملاحظة نهائيًا. لا يمكن التراجع عن هذا الإجراء.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "الخصوصية", "privacy": "الخصوصية",
@@ -1583,7 +1598,23 @@
"chinese": "الصينية", "chinese": "الصينية",
"japanese": "اليابانية" "japanese": "اليابانية"
}, },
"customPlaceholder": "على سبيل المثال العربية والروسية..." "customPlaceholder": "على سبيل المثال العربية والروسية...",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "غير معروف", "unknown": "غير معروف",
@@ -1591,16 +1622,16 @@
"loading": "جاري التحميل...", "loading": "جاري التحميل...",
"error": "خطأ", "error": "خطأ",
"success": "نجاح", "success": "نجاح",
"confirm": "تأكيد", "confirm": "Confirm",
"cancel": "إلغاء", "cancel": "Cancel",
"close": "إغلاق", "close": "إغلاق",
"save": "حفظ", "save": "حفظ",
"delete": "حذف", "delete": "حذف",
"edit": "تعديل", "edit": "تعديل",
"add": "إضافة", "add": "إضافة",
"remove": "إزالة", "remove": "إزالة",
"search": "بحث", "search": "Search...",
"noResults": "لا توجد نتائج", "noResults": "No notes found",
"required": "مطلوب", "required": "مطلوب",
"optional": "اختياري" "optional": "اختياري"
}, },
@@ -1982,7 +2013,9 @@
"searching": "جاري البحث...", "searching": "جاري البحث...",
"noNotesFoundForContext": "لم يتم العثور على ملاحظات ذات صلة لهذا السؤال. أجب باستخدام معرفتك العامة.", "noNotesFoundForContext": "لم يتم العثور على ملاحظات ذات صلة لهذا السؤال. أجب باستخدام معرفتك العامة.",
"webSearch": "بحث الويب", "webSearch": "بحث الويب",
"timeoutWarning": "الاستجابة تستغرق وقتاً أطول من المتوقع..." "timeoutWarning": "الاستجابة تستغرق وقتاً أطول من المتوقع...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "المختبر", "title": "المختبر",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "Älteste zuerst", "sortOldest": "Älteste zuerst",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "Kontomenü", "accountMenu": "Kontomenü",
"profile": "Profil", "profile": "Profile",
"signOut": "Abmelden", "signOut": "Sign out",
"sortOrder": "Sortierreihenfolge", "sortOrder": "Sortierreihenfolge",
"freezePinnedNotebook": "Pin-Reihenfolge in der Seitenleiste des Notizbuchs", "freezePinnedNotebook": "Pin-Reihenfolge in der Seitenleiste des Notizbuchs",
"unfreezePinnedNotebook": "Pinnwandreihenfolge in der Notizbuch-Seitenleiste aufheben", "unfreezePinnedNotebook": "Pinnwandreihenfolge in der Notizbuch-Seitenleiste aufheben",
@@ -58,14 +58,15 @@
"renameNotebook": "Umbenennen", "renameNotebook": "Umbenennen",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Freie Anordnung", "sortManual": "Freie Anordnung",
"moveFailed": "Verschieben fehlgeschlagen", "moveFailed": "Failed to move notebook",
"dropToRoot": "Hier ablegen für Hauptebene" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Notizen", "title": "Notizen",
"newNote": "Neue Notiz", "newNote": "Neue Notiz",
"reorganize": "Notizen neu organisieren", "reorganize": "Notizen neu organisieren",
"untitled": "Unbenannt", "untitled": "Untitled",
"placeholder": "Notiz machen...", "placeholder": "Notiz machen...",
"markdownPlaceholder": "Notiz machen... (Markdown unterstützt)", "markdownPlaceholder": "Notiz machen... (Markdown unterstützt)",
"titlePlaceholder": "Titel", "titlePlaceholder": "Titel",
@@ -81,12 +82,12 @@
"add": "Hinzufügen", "add": "Hinzufügen",
"adding": "Wird hinzugefügt...", "adding": "Wird hinzugefügt...",
"close": "Schließen", "close": "Schließen",
"confirmDelete": "Möchten Sie diese Notiz wirklich löschen?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "Möchten Sie diese geteilte Notiz wirklich verlassen?", "confirmLeaveShare": "Möchten Sie diese geteilte Notiz wirklich verlassen?",
"sharedBy": "Geteilt von", "sharedBy": "Geteilt von",
"sharedShort": "Geteilt", "sharedShort": "Geteilt",
"leaveShare": "Verlassen", "leaveShare": "Verlassen",
"delete": "Löschen", "delete": "Delete",
"archive": "Archivieren", "archive": "Archivieren",
"unarchive": "Aus Archiv entfernen", "unarchive": "Aus Archiv entfernen",
"pin": "Anheften", "pin": "Anheften",
@@ -127,7 +128,7 @@
"duplicate": "Duplizieren", "duplicate": "Duplizieren",
"share": "Teilen", "share": "Teilen",
"showCollaborators": "Mitarbeiter anzeigen", "showCollaborators": "Mitarbeiter anzeigen",
"pinned": "Angeheftet", "pinned": "Note pinned",
"others": "Andere", "others": "Andere",
"noNotes": "Keine Notizen", "noNotes": "Keine Notizen",
"noNotesFound": "Keine Notizen gefunden", "noNotesFound": "Keine Notizen gefunden",
@@ -159,8 +160,8 @@
"recent": "Aktuell", "recent": "Aktuell",
"addNote": "Notiz hinzufügen", "addNote": "Notiz hinzufügen",
"readMore": "Weiterlesen", "readMore": "Weiterlesen",
"remove": "Entfernen", "remove": "Remove",
"dragToReorder": "Ziehen zum Neuanordnen", "dragToReorder": "Drag to reorder",
"more": "Mehr", "more": "Mehr",
"emptyState": "Keine Notizen vorhanden", "emptyState": "Keine Notizen vorhanden",
"metadataPanel": "Einzelheiten", "metadataPanel": "Einzelheiten",
@@ -173,7 +174,7 @@
"improveFailed": "Verbesserung fehlgeschlagen", "improveFailed": "Verbesserung fehlgeschlagen",
"transformFailed": "Umwandlung fehlgeschlagen", "transformFailed": "Umwandlung fehlgeschlagen",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "Nicht angepinnt", "unpinned": "Note unpinned",
"redoShortcut": "Wiederholen (Strg+Y)", "redoShortcut": "Wiederholen (Strg+Y)",
"undoShortcut": "Rückgängig (Strg+Z)", "undoShortcut": "Rückgängig (Strg+Z)",
"reorderTabs": "Tab umsortieren", "reorderTabs": "Tab umsortieren",
@@ -751,7 +752,7 @@
"downloadFailed": "Der Download ist fehlgeschlagen" "downloadFailed": "Der Download ist fehlgeschlagen"
}, },
"nav": { "nav": {
"home": "Startseite", "home": "Home",
"notes": "Notizen", "notes": "Notizen",
"notebooks": "Notizbücher", "notebooks": "Notizbücher",
"generalNotes": "Allgemeine Notizen", "generalNotes": "Allgemeine Notizen",
@@ -761,7 +762,7 @@
"aiSettings": "KI-Einstellungen", "aiSettings": "KI-Einstellungen",
"logout": "Abmelden", "logout": "Abmelden",
"login": "Anmelden", "login": "Anmelden",
"adminDashboard": "Admin-Dashboard", "adminDashboard": "Admin Dashboard",
"diagnostics": "Diagnose", "diagnostics": "Diagnose",
"trash": "Papierkorb", "trash": "Papierkorb",
"support": "Memento unterstützen ☕", "support": "Memento unterstützen ☕",
@@ -786,7 +787,8 @@
"proPlan": "Pro Plan", "proPlan": "Pro Plan",
"chat": "KI-Chat", "chat": "KI-Chat",
"lab": "Das Labor", "lab": "Das Labor",
"agents": "Agenten" "agents": "Agenten",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Einstellungen", "title": "Einstellungen",
@@ -814,7 +816,7 @@
"security": "Sicherheit", "security": "Sicherheit",
"about": "Über", "about": "Über",
"version": "Version", "version": "Version",
"settingsSaved": "Einstellungen gespeichert", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search", "semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
"profile": "Profil", "profile": "Profil",
"searchNoResults": "Keine Ergebnisse gefunden", "searchNoResults": "Keine Ergebnisse gefunden",
"languageAuto": "Automatisch", "languageAuto": "Language set to Auto",
"emailNotifications": "E-Mail-Benachrichtigungen", "emailNotifications": "E-Mail-Benachrichtigungen",
"emailNotificationsDesc": "Wichtige Benachrichtigungen per E-Mail erhalten", "emailNotificationsDesc": "Wichtige Benachrichtigungen per E-Mail erhalten",
"desktopNotifications": "Desktop-Benachrichtigungen", "desktopNotifications": "Desktop-Benachrichtigungen",
"desktopNotificationsDesc": "Benachrichtigungen im Browser erhalten", "desktopNotificationsDesc": "Benachrichtigungen im Browser erhalten",
"notificationsDesc": "Verwalten Sie Ihre Benachrichtigungseinstellungen", "notificationsDesc": "Verwalten Sie Ihre Benachrichtigungseinstellungen",
"autoSave": "Automatisch speichern", "autoSave": "Auto-save",
"autoSaveDesc": "Änderungen während der Eingabe automatisch speichern" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "Profil", "title": "Profil",
@@ -864,10 +866,10 @@
"preferredLanguage": "Bevorzugte Sprache", "preferredLanguage": "Bevorzugte Sprache",
"selectLanguage": "Sprache auswählen", "selectLanguage": "Sprache auswählen",
"languageDescription": "Diese Sprache wird für KI-gesteuerte Funktionen, Inhaltsanalyse und Oberflächentext verwendet.", "languageDescription": "Diese Sprache wird für KI-gesteuerte Funktionen, Inhaltsanalyse und Oberflächentext verwendet.",
"autoDetect": "Automatische Erkennung", "autoDetect": "Auto-detect",
"updateSuccess": "Profil aktualisiert", "updateSuccess": "Profil aktualisiert",
"updateFailed": "Fehler beim Aktualisieren des Profils", "updateFailed": "Fehler beim Aktualisieren des Profils",
"languageUpdateSuccess": "Sprache erfolgreich aktualisiert", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Fehler beim Aktualisieren der Sprache", "languageUpdateFailed": "Fehler beim Aktualisieren der Sprache",
"profileUpdated": "Profil aktualisiert", "profileUpdated": "Profil aktualisiert",
"profileError": "Fehler beim Aktualisieren des Profils", "profileError": "Fehler beim Aktualisieren des Profils",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "Wird geladen...", "loading": "Wird geladen...",
"save": "Speichern", "save": "Save",
"cancel": "Abbrechen", "cancel": "Cancel",
"add": "Hinzufügen", "add": "Hinzufügen",
"edit": "Bearbeiten", "edit": "Bearbeiten",
"confirm": "Bestätigen", "confirm": "Bestätigen",
@@ -984,7 +986,7 @@
"createNew": "Neues Notizbuch erstellen", "createNew": "Neues Notizbuch erstellen",
"createDescription": "Starten Sie eine neue Sammlung, um Ihre Notizen, Ideen und Projekte effizient zu organisieren.", "createDescription": "Starten Sie eine neue Sammlung, um Ihre Notizen, Ideen und Projekte effizient zu organisieren.",
"name": "Notizbuch-Name", "name": "Notizbuch-Name",
"namePlaceholder": "z.B. Q4 Marketing-Strategie", "namePlaceholder": "Notebook name",
"myNotebook": "Mein Notizbuch", "myNotebook": "Mein Notizbuch",
"saving": "Speichern...", "saving": "Speichern...",
"selectIcon": "Symbol", "selectIcon": "Symbol",
@@ -993,7 +995,7 @@
"creating": "Erstellen...", "creating": "Erstellen...",
"edit": "Notizbuch bearbeiten", "edit": "Notizbuch bearbeiten",
"editDescription": "Ändern Sie den Namen, das Symbol und die Farbe Ihres Notizbuchs.", "editDescription": "Ändern Sie den Namen, das Symbol und die Farbe Ihres Notizbuchs.",
"delete": "Notizbuch löschen", "delete": "Delete",
"deleteWarning": "Möchten Sie dieses Notizbuch wirklich löschen? Notizen werden in Allgemeine Notizen verschoben.", "deleteWarning": "Möchten Sie dieses Notizbuch wirklich löschen? Notizen werden in Allgemeine Notizen verschoben.",
"deleteConfirm": "Löschen", "deleteConfirm": "Löschen",
"summary": "Notizbuch-Zusammenfassung", "summary": "Notizbuch-Zusammenfassung",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "Angeheftetes Notizbuch Bestellung eingefroren", "pinnedFrozenTooltip": "Angeheftetes Notizbuch Bestellung eingefroren",
"organizeNotebookWithAITooltip": "Organisieren Sie dieses Notizbuch mit KI", "organizeNotebookWithAITooltip": "Organisieren Sie dieses Notizbuch mit KI",
"assistantRequiredForSummarize": "Aktivieren Sie AI Assistant in den Einstellungen, um eine Zusammenfassung vorzunehmen", "assistantRequiredForSummarize": "Aktivieren Sie AI Assistant in den Einstellungen, um eine Zusammenfassung vorzunehmen",
"createSubnotebook": "Sub-Notebook hinzufügen" "createSubnotebook": "Sub-Notebook hinzufügen",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Nach {name} verschieben?", "title": "Nach {name} verschieben?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "Erscheinungsbild", "title": "Erscheinungsbild",
"description": "Anpassen, wie die App aussieht", "description": "Customize the interface",
"notesViewDescription": "Wählen Sie, wie Notizen auf der Startseite und in Notizbüchern angezeigt werden.", "notesViewDescription": "Wählen Sie, wie Notizen auf der Startseite und in Notizbüchern angezeigt werden.",
"notesViewLabel": "Notizen-Ansicht", "notesViewLabel": "Notizen-Ansicht",
"notesViewTabs": "Tabs (OneNote-Stil)", "notesViewTabs": "Tabs (OneNote-Stil)",
"notesViewMasonry": "Karten (Raster)", "notesViewMasonry": "Karten (Raster)",
"notesViewList": "Liste (Magazin)", "notesViewList": "Liste (Magazin)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Schriftfamilie", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Wählen Sie die im gesamten Programm verwendete Schriftart", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter ist für Lesbarkeit optimiert, System verwendet die native Schriftart Ihres Betriebssystems", "selectFontFamily": "Inter ist für Lesbarkeit optimiert, System verwendet die native Schriftart Ihres Betriebssystems",
"fontSystem": "Standardsystemschriftart", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "Papierkorb", "title": "Papierkorb",
"empty": "Der Papierkorb ist leer", "empty": "Trash is empty",
"emptyDescription": "Gelöschte Notizen werden hier angezeigt", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Wiederherstellen", "restore": "Restore",
"deletePermanently": "Dauerhaft löschen", "deletePermanently": "Dauerhaft löschen",
"noteTrashed": "Notiz in den Papierkorb verschoben", "noteTrashed": "Notiz in den Papierkorb verschoben",
"noteRestored": "Notiz wiederhergestellt", "noteRestored": "Notiz wiederhergestellt",
"notePermanentlyDeleted": "Notiz dauerhaft gelöscht", "notePermanentlyDeleted": "Notiz dauerhaft gelöscht",
"emptyTrash": "Papierkorb leeren", "emptyTrash": "Papierkorb leeren",
"emptyTrashConfirm": "Alle Notizen im Papierkorb dauerhaft löschen?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Papierkorb geleert", "emptyTrashSuccess": "Papierkorb geleert",
"permanentDelete": "Dauerhaft löschen", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "Diese Notiz wird dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden." "permanentDeleteConfirm": "Diese Notiz wird dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Datenschutz", "privacy": "Datenschutz",
@@ -1583,7 +1598,23 @@
"chinese": "chinesisch", "chinese": "chinesisch",
"japanese": "japanisch" "japanese": "japanisch"
}, },
"customPlaceholder": "z.B. Arabisch, Russisch…" "customPlaceholder": "z.B. Arabisch, Russisch…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Unbekannt", "unknown": "Unbekannt",
@@ -1591,16 +1622,16 @@
"loading": "Wird geladen...", "loading": "Wird geladen...",
"error": "Fehler", "error": "Fehler",
"success": "Erfolg", "success": "Erfolg",
"confirm": "Bestätigen", "confirm": "Confirm",
"cancel": "Abbrechen", "cancel": "Cancel",
"close": "Schließen", "close": "Schließen",
"save": "Speichern", "save": "Speichern",
"delete": "Löschen", "delete": "Löschen",
"edit": "Bearbeiten", "edit": "Bearbeiten",
"add": "Hinzufügen", "add": "Hinzufügen",
"remove": "Entfernen", "remove": "Entfernen",
"search": "Suchen", "search": "Search...",
"noResults": "Keine Ergebnisse", "noResults": "No notes found",
"required": "Erforderlich", "required": "Erforderlich",
"optional": "Optional" "optional": "Optional"
}, },
@@ -1982,7 +2013,9 @@
"searching": "Wird gesucht...", "searching": "Wird gesucht...",
"noNotesFoundForContext": "Keine relevanten Notizen für diese Frage gefunden. Antworte mit deinem Allgemeinwissen.", "noNotesFoundForContext": "Keine relevanten Notizen für diese Frage gefunden. Antworte mit deinem Allgemeinwissen.",
"webSearch": "Websuche", "webSearch": "Websuche",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "Das Labor", "title": "Das Labor",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -66,7 +66,8 @@
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Custom order", "sortManual": "Custom order",
"moveFailed": "Failed to move notebook", "moveFailed": "Failed to move notebook",
"dropToRoot": "Drop here to move to root" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Notes", "title": "Notes",
@@ -789,7 +790,8 @@
"proPlan": "Pro Plan", "proPlan": "Pro Plan",
"chat": "AI Chat", "chat": "AI Chat",
"lab": "The Workshop", "lab": "The Workshop",
"agents": "Agents" "agents": "Agents",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Settings", "title": "Settings",
@@ -891,7 +893,10 @@
"showRecentNotesDescription": "Display recent notes (last 7 days) on the main page", "showRecentNotesDescription": "Display recent notes (last 7 days) on the main page",
"recentNotesUpdateSuccess": "Recent notes setting updated successfully", "recentNotesUpdateSuccess": "Recent notes setting updated successfully",
"recentNotesUpdateFailed": "Failed to update recent notes setting", "recentNotesUpdateFailed": "Failed to update recent notes setting",
"tab": "Profile" "tab": "Profile",
"preferences": "Account Preferences",
"desktopNotifications": "Desktop notifications",
"desktopNotificationsDesc": "Receive alerts for your reminders and AI activities."
}, },
"aiSettings": { "aiSettings": {
"title": "AI", "title": "AI",
@@ -988,7 +993,7 @@
"createNew": "Create New Notebook", "createNew": "Create New Notebook",
"createDescription": "Start a new collection to organize your notes, ideas, and projects efficiently.", "createDescription": "Start a new collection to organize your notes, ideas, and projects efficiently.",
"name": "Notebook Name", "name": "Notebook Name",
"namePlaceholder": "e.g. Q4 Marketing Strategy", "namePlaceholder": "Notebook name",
"myNotebook": "My Notebook", "myNotebook": "My Notebook",
"saving": "Saving...", "saving": "Saving...",
"selectIcon": "Icon", "selectIcon": "Icon",
@@ -997,7 +1002,7 @@
"creating": "Creating...", "creating": "Creating...",
"edit": "Edit Notebook", "edit": "Edit Notebook",
"editDescription": "Change the name, icon, and color of your notebook.", "editDescription": "Change the name, icon, and color of your notebook.",
"delete": "Delete Notebook", "delete": "Delete",
"deleteWarning": "Are you sure you want to delete this notebook? Notes will be moved to General Notes.", "deleteWarning": "Are you sure you want to delete this notebook? Notes will be moved to General Notes.",
"deleteConfirm": "Delete", "deleteConfirm": "Delete",
"summary": "Notebook Summary", "summary": "Notebook Summary",
@@ -1016,7 +1021,10 @@
"pinnedFrozenTooltip": "Pinned notebook — order frozen", "pinnedFrozenTooltip": "Pinned notebook — order frozen",
"organizeNotebookWithAITooltip": "Organize this notebook with AI", "organizeNotebookWithAITooltip": "Organize this notebook with AI",
"assistantRequiredForSummarize": "Turn on AI Assistant in settings to summarize", "assistantRequiredForSummarize": "Turn on AI Assistant in settings to summarize",
"createSubnotebook": "Add sub-notebook" "createSubnotebook": "Add sub-notebook",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"confirmRename": "Rename"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Move to {name}?", "title": "Move to {name}?",
@@ -1435,21 +1443,23 @@
}, },
"appearance": { "appearance": {
"title": "Appearance", "title": "Appearance",
"description": "Customize how the app looks", "description": "Customize the interface",
"notesViewDescription": "Choose how notes are shown on home and in notebooks.", "notesViewDescription": "Choose how notes are shown on home and in notebooks.",
"notesViewLabel": "Notes layout", "notesViewLabel": "Notes layout",
"notesViewTabs": "Tabs (OneNote-style)", "notesViewTabs": "Tabs (OneNote-style)",
"notesViewMasonry": "Cards (grid)", "notesViewMasonry": "Cards (grid)",
"notesViewList": "List (magazine)", "notesViewList": "List (magazine)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Font Family", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Choose the font used throughout the app", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter is optimized for readability, System uses your OS native font", "selectFontFamily": "Inter is optimized for readability, System uses your OS native font",
"fontSystem": "System Default", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono", "fontJetBrainsMono": "JetBrains Mono",
"tab": "Appearance" "tab": "Appearance",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"usageMeter": { "usageMeter": {
"packName": "AI Discovery Pack", "packName": "AI Discovery Pack",
@@ -1507,18 +1517,26 @@
}, },
"trash": { "trash": {
"title": "Trash", "title": "Trash",
"empty": "The trash is empty", "empty": "Trash is empty",
"emptyDescription": "Deleted notes will appear here", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Restore", "restore": "Restore",
"deletePermanently": "Delete Permanently", "deletePermanently": "Delete Permanently",
"noteTrashed": "Note moved to trash", "noteTrashed": "Note moved to trash",
"noteRestored": "Note restored", "noteRestored": "Note restored",
"notePermanentlyDeleted": "Note permanently deleted", "notePermanentlyDeleted": "Note permanently deleted",
"emptyTrash": "Empty Trash", "emptyTrash": "Empty Trash",
"emptyTrashConfirm": "Permanently delete all notes in the trash?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Trash emptied", "emptyTrashSuccess": "Trash emptied",
"permanentDelete": "Delete Permanently", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "This note will be permanently deleted. This action cannot be undone." "permanentDeleteConfirm": "This note will be permanently deleted. This action cannot be undone.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Privacy", "privacy": "Privacy",
@@ -1613,7 +1631,23 @@
"chinese": "Chinese", "chinese": "Chinese",
"japanese": "Japanese" "japanese": "Japanese"
}, },
"customPlaceholder": "e.g. Arabic, Russian…" "customPlaceholder": "e.g. Arabic, Russian…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Unknown", "unknown": "Unknown",
@@ -1629,8 +1663,8 @@
"edit": "Edit", "edit": "Edit",
"add": "Add", "add": "Add",
"remove": "Remove", "remove": "Remove",
"search": "Search", "search": "Search...",
"noResults": "No results", "noResults": "No notes found",
"required": "Required", "required": "Required",
"optional": "Optional" "optional": "Optional"
}, },
@@ -2012,7 +2046,9 @@
"searching": "Searching...", "searching": "Searching...",
"noNotesFoundForContext": "No relevant notes found for this question. Answer with your general knowledge.", "noNotesFoundForContext": "No relevant notes found for this question. Answer with your general knowledge.",
"webSearch": "Web Search", "webSearch": "Web Search",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "The Workshop", "title": "The Workshop",
@@ -2562,5 +2598,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "El más viejo primero", "sortOldest": "El más viejo primero",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "Menú de cuenta", "accountMenu": "Menú de cuenta",
"profile": "Perfil", "profile": "Profile",
"signOut": "desconectar", "signOut": "Sign out",
"sortOrder": "orden de clasificación", "sortOrder": "orden de clasificación",
"freezePinnedNotebook": "Orden de fijación de la barra lateral del cuaderno", "freezePinnedNotebook": "Orden de fijación de la barra lateral del cuaderno",
"unfreezePinnedNotebook": "Desanclar el orden de la barra lateral del cuaderno", "unfreezePinnedNotebook": "Desanclar el orden de la barra lateral del cuaderno",
@@ -58,14 +58,15 @@
"renameNotebook": "Rebautizar", "renameNotebook": "Rebautizar",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Orden libre", "sortManual": "Orden libre",
"moveFailed": "Error al mover el cuaderno", "moveFailed": "Failed to move notebook",
"dropToRoot": "Soltar aquí para mover a la raíz" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Notas", "title": "Notas",
"newNote": "Nueva nota", "newNote": "Nueva nota",
"reorganize": "Reorganizar notas", "reorganize": "Reorganizar notas",
"untitled": "Sin título", "untitled": "Untitled",
"placeholder": "Toma una nota...", "placeholder": "Toma una nota...",
"markdownPlaceholder": "Toma una nota... (Markdown compatible)", "markdownPlaceholder": "Toma una nota... (Markdown compatible)",
"titlePlaceholder": "Título", "titlePlaceholder": "Título",
@@ -81,12 +82,12 @@
"add": "Agregar", "add": "Agregar",
"adding": "Agregando...", "adding": "Agregando...",
"close": "Cerrar", "close": "Cerrar",
"confirmDelete": "¿Estás seguro de que quieres eliminar esta nota?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "¿Estás seguro de que quieres abandonar esta nota compartida?", "confirmLeaveShare": "¿Estás seguro de que quieres abandonar esta nota compartida?",
"sharedBy": "Compartido por", "sharedBy": "Compartido por",
"sharedShort": "Compartido", "sharedShort": "Compartido",
"leaveShare": "Abandonar", "leaveShare": "Abandonar",
"delete": "Eliminar", "delete": "Delete",
"archive": "Archivar", "archive": "Archivar",
"unarchive": "Desarchivar", "unarchive": "Desarchivar",
"pin": "Fijar", "pin": "Fijar",
@@ -127,7 +128,7 @@
"duplicate": "Duplicar", "duplicate": "Duplicar",
"share": "Compartir", "share": "Compartir",
"showCollaborators": "Mostrar colaboradores", "showCollaborators": "Mostrar colaboradores",
"pinned": "Fijadas", "pinned": "Note pinned",
"others": "Otros", "others": "Otros",
"noNotes": "Sin notas", "noNotes": "Sin notas",
"noNotesFound": "No se encontraron notas", "noNotesFound": "No se encontraron notas",
@@ -160,7 +161,7 @@
"addNote": "Agregar nota", "addNote": "Agregar nota",
"readMore": "Leer más", "readMore": "Leer más",
"remove": "Remove", "remove": "Remove",
"dragToReorder": "Arrastra para reordenar", "dragToReorder": "Drag to reorder",
"more": "Más", "more": "Más",
"emptyState": "Sin notas", "emptyState": "Sin notas",
"metadataPanel": "Detalles", "metadataPanel": "Detalles",
@@ -173,7 +174,7 @@
"improveFailed": "Error al mejorar", "improveFailed": "Error al mejorar",
"transformFailed": "Error al transformar", "transformFailed": "Error al transformar",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "Desfijadas", "unpinned": "Note unpinned",
"redoShortcut": "Rehacer (Ctrl+Y)", "redoShortcut": "Rehacer (Ctrl+Y)",
"undoShortcut": "Deshacer (Ctrl+Z)", "undoShortcut": "Deshacer (Ctrl+Z)",
"reorderTabs": "Reordenar pestaña", "reorderTabs": "Reordenar pestaña",
@@ -751,7 +752,7 @@
"downloadFailed": "Descarga fallida" "downloadFailed": "Descarga fallida"
}, },
"nav": { "nav": {
"home": "Inicio", "home": "Home",
"notes": "Notas", "notes": "Notas",
"notebooks": "Cuadernos", "notebooks": "Cuadernos",
"generalNotes": "Notas generales", "generalNotes": "Notas generales",
@@ -761,7 +762,7 @@
"aiSettings": "Configuración IA", "aiSettings": "Configuración IA",
"logout": "Cerrar sesión", "logout": "Cerrar sesión",
"login": "Iniciar sesión", "login": "Iniciar sesión",
"adminDashboard": "Panel de administración", "adminDashboard": "Admin Dashboard",
"diagnostics": "Diagnósticos", "diagnostics": "Diagnósticos",
"trash": "Papelera", "trash": "Papelera",
"support": "Apoyar Memento ☕", "support": "Apoyar Memento ☕",
@@ -786,7 +787,8 @@
"proPlan": "Plan Pro", "proPlan": "Plan Pro",
"chat": "Chat IA", "chat": "Chat IA",
"lab": "El Laboratorio", "lab": "El Laboratorio",
"agents": "Agentes" "agents": "Agentes",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Configuración", "title": "Configuración",
@@ -814,7 +816,7 @@
"security": "Seguridad", "security": "Seguridad",
"about": "Acerca de", "about": "Acerca de",
"version": "Versión", "version": "Versión",
"settingsSaved": "Configuración guardada", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search", "semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
"profile": "Perfil", "profile": "Perfil",
"searchNoResults": "Sin resultados de búsqueda", "searchNoResults": "Sin resultados de búsqueda",
"languageAuto": "Automático", "languageAuto": "Language set to Auto",
"emailNotifications": "Notificaciones por correo", "emailNotifications": "Notificaciones por correo",
"emailNotificationsDesc": "Recibir notificaciones importantes por correo", "emailNotificationsDesc": "Recibir notificaciones importantes por correo",
"desktopNotifications": "Notificaciones de escritorio", "desktopNotifications": "Notificaciones de escritorio",
"desktopNotificationsDesc": "Recibir notificaciones en el navegador", "desktopNotificationsDesc": "Recibir notificaciones en el navegador",
"notificationsDesc": "Gestiona tus preferencias de notificaciones", "notificationsDesc": "Gestiona tus preferencias de notificaciones",
"autoSave": "Guardar automáticamente", "autoSave": "Auto-save",
"autoSaveDesc": "Guarda automáticamente los cambios mientras escribes" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "Perfil", "title": "Perfil",
@@ -864,10 +866,10 @@
"preferredLanguage": "Idioma preferido", "preferredLanguage": "Idioma preferido",
"selectLanguage": "Selecciona un idioma", "selectLanguage": "Selecciona un idioma",
"languageDescription": "Este idioma se usará para las funciones impulsadas por IA, análisis de contenido y texto de la interfaz.", "languageDescription": "Este idioma se usará para las funciones impulsadas por IA, análisis de contenido y texto de la interfaz.",
"autoDetect": "Detección automática", "autoDetect": "Auto-detect",
"updateSuccess": "Perfil actualizado", "updateSuccess": "Perfil actualizado",
"updateFailed": "Error al actualizar el perfil", "updateFailed": "Error al actualizar el perfil",
"languageUpdateSuccess": "Idioma actualizado exitosamente", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Error al actualizar el idioma", "languageUpdateFailed": "Error al actualizar el idioma",
"profileUpdated": "Perfil actualizado", "profileUpdated": "Perfil actualizado",
"profileError": "Error al actualizar el perfil", "profileError": "Error al actualizar el perfil",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "Cargando...", "loading": "Cargando...",
"save": "Guardar", "save": "Save",
"cancel": "Cancelar", "cancel": "Cancel",
"add": "Agregar", "add": "Agregar",
"edit": "Editar", "edit": "Editar",
"confirm": "Confirmar", "confirm": "Confirmar",
@@ -984,7 +986,7 @@
"createNew": "Crear nuevo cuaderno", "createNew": "Crear nuevo cuaderno",
"createDescription": "Inicia una nueva colección para organizar tus notas, ideas y proyectos de manera eficiente.", "createDescription": "Inicia una nueva colección para organizar tus notas, ideas y proyectos de manera eficiente.",
"name": "Nombre del cuaderno", "name": "Nombre del cuaderno",
"namePlaceholder": "ej. Estrategia Marketing Q4", "namePlaceholder": "Notebook name",
"myNotebook": "Mi cuaderno", "myNotebook": "Mi cuaderno",
"saving": "Guardando...", "saving": "Guardando...",
"selectIcon": "Icono", "selectIcon": "Icono",
@@ -993,7 +995,7 @@
"creating": "Creando...", "creating": "Creando...",
"edit": "Editar cuaderno", "edit": "Editar cuaderno",
"editDescription": "Cambia el nombre, icono y color de tu cuaderno.", "editDescription": "Cambia el nombre, icono y color de tu cuaderno.",
"delete": "Eliminar cuaderno", "delete": "Delete",
"deleteWarning": "¿Estás seguro de que quieres eliminar este cuaderno? Las notas se moverán a Notas generales.", "deleteWarning": "¿Estás seguro de que quieres eliminar este cuaderno? Las notas se moverán a Notas generales.",
"deleteConfirm": "Eliminar", "deleteConfirm": "Eliminar",
"summary": "Resumen del cuaderno", "summary": "Resumen del cuaderno",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "Cuaderno fijado: pedido congelado", "pinnedFrozenTooltip": "Cuaderno fijado: pedido congelado",
"organizeNotebookWithAITooltip": "Organiza este cuaderno con IA", "organizeNotebookWithAITooltip": "Organiza este cuaderno con IA",
"assistantRequiredForSummarize": "Active AI Assistant en la configuración para resumir", "assistantRequiredForSummarize": "Active AI Assistant en la configuración para resumir",
"createSubnotebook": "Agregar subcuaderno" "createSubnotebook": "Agregar subcuaderno",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "¿Mover a {name}?", "title": "¿Mover a {name}?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "Apariencia", "title": "Apariencia",
"description": "Personaliza el aspecto de la aplicación", "description": "Customize the interface",
"notesViewDescription": "Elige cómo se muestran las notas en el inicio y en los cuadernos.", "notesViewDescription": "Elige cómo se muestran las notas en el inicio y en los cuadernos.",
"notesViewLabel": "Vista de notas", "notesViewLabel": "Vista de notas",
"notesViewTabs": "Pestañas (estilo OneNote)", "notesViewTabs": "Pestañas (estilo OneNote)",
"notesViewMasonry": "Tarjetas (cuadrícula)", "notesViewMasonry": "Tarjetas (cuadrícula)",
"notesViewList": "Lista (revista)", "notesViewList": "Lista (revista)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Familia de fuentes", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Elige la fuente utilizada en toda la aplicación", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter está optimizado para la legibilidad, Sistema usa la fuente nativa de tu sistema operativo", "selectFontFamily": "Inter está optimizado para la legibilidad, Sistema usa la fuente nativa de tu sistema operativo",
"fontSystem": "Fuente del sistema predeterminada", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "Papelera", "title": "Papelera",
"empty": "La papelera está vacía", "empty": "Trash is empty",
"emptyDescription": "Las notas eliminadas aparecerán aquí", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Restaurar", "restore": "Restore",
"deletePermanently": "Eliminar permanentemente", "deletePermanently": "Eliminar permanentemente",
"noteTrashed": "Nota movida a la papelera", "noteTrashed": "Nota movida a la papelera",
"noteRestored": "Nota restaurada", "noteRestored": "Nota restaurada",
"notePermanentlyDeleted": "Nota eliminada permanentemente", "notePermanentlyDeleted": "Nota eliminada permanentemente",
"emptyTrash": "Vaciar papelera", "emptyTrash": "Vaciar papelera",
"emptyTrashConfirm": "¿Eliminar permanentemente todas las notas de la papelera?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Papelera vaciada", "emptyTrashSuccess": "Papelera vaciada",
"permanentDelete": "Eliminar permanentemente", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "Esta nota se eliminará permanentemente. Esta acción no se puede deshacer." "permanentDeleteConfirm": "Esta nota se eliminará permanentemente. Esta acción no se puede deshacer.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Privacidad", "privacy": "Privacidad",
@@ -1583,7 +1598,23 @@
"chinese": "Chino", "chinese": "Chino",
"japanese": "japonés" "japanese": "japonés"
}, },
"customPlaceholder": "p.ej. Árabe, ruso…" "customPlaceholder": "p.ej. Árabe, ruso…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Desconocido", "unknown": "Desconocido",
@@ -1591,16 +1622,16 @@
"loading": "Cargando", "loading": "Cargando",
"error": "Error", "error": "Error",
"success": "Éxito", "success": "Éxito",
"confirm": "Confirmar", "confirm": "Confirm",
"cancel": "Cancelar", "cancel": "Cancel",
"close": "Cerrar", "close": "Cerrar",
"save": "Guardar", "save": "Guardar",
"delete": "Eliminar", "delete": "Eliminar",
"edit": "Editar", "edit": "Editar",
"add": "Agregar", "add": "Agregar",
"remove": "Eliminar", "remove": "Eliminar",
"search": "Buscar", "search": "Search...",
"noResults": "Sin resultados", "noResults": "No notes found",
"required": "Requerido", "required": "Requerido",
"optional": "Opcional" "optional": "Opcional"
}, },
@@ -1982,7 +2013,9 @@
"searching": "Buscando...", "searching": "Buscando...",
"noNotesFoundForContext": "No se encontraron notas relevantes para esta pregunta. Responde con tu conocimiento general.", "noNotesFoundForContext": "No se encontraron notas relevantes para esta pregunta. Responde con tu conocimiento general.",
"webSearch": "Búsqueda web", "webSearch": "Búsqueda web",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "El Laboratorio", "title": "El Laboratorio",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "اول قدیمی ترین", "sortOldest": "اول قدیمی ترین",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "منوی حساب", "accountMenu": "منوی حساب",
"profile": "نمایه", "profile": "Profile",
"signOut": "از سیستم خارج شوید", "signOut": "Sign out",
"sortOrder": "ترتیب مرتب سازی", "sortOrder": "ترتیب مرتب سازی",
"freezePinnedNotebook": "پین کردن سفارش نوار کناری نوت بوک", "freezePinnedNotebook": "پین کردن سفارش نوار کناری نوت بوک",
"unfreezePinnedNotebook": "پین کردن سفارش نوار کناری نوت بوک", "unfreezePinnedNotebook": "پین کردن سفارش نوار کناری نوت بوک",
@@ -58,14 +58,15 @@
"renameNotebook": "تغییر نام دهید", "renameNotebook": "تغییر نام دهید",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "ترتیب آزاد", "sortManual": "ترتیب آزاد",
"moveFailed": "انتقال دفترچه ناموفق بود", "moveFailed": "Failed to move notebook",
"dropToRoot": "برای انتقال به ریشه اینجا رها کنید" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "یادداشت‌ها", "title": "یادداشت‌ها",
"newNote": "یادداشت جدید", "newNote": "یادداشت جدید",
"reorganize": "سازماندهی مجدد یادداشت ها", "reorganize": "سازماندهی مجدد یادداشت ها",
"untitled": "بدون عنوان", "untitled": "Untitled",
"placeholder": "یادداشت بگیرید...", "placeholder": "یادداشت بگیرید...",
"markdownPlaceholder": "یادداشت بگیرید... (Markdown پشتیبانی می‌شود)", "markdownPlaceholder": "یادداشت بگیرید... (Markdown پشتیبانی می‌شود)",
"titlePlaceholder": "عنوان", "titlePlaceholder": "عنوان",
@@ -81,12 +82,12 @@
"add": "افزودن", "add": "افزودن",
"adding": "در حال افزودن...", "adding": "در حال افزودن...",
"close": "بستن", "close": "بستن",
"confirmDelete": "آیا مطمئن هستید که می‌خواهید این یادداشت را حذف کنید؟", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "آیا مطمئن هستید که می‌خواهید این یادداشت اشتراکی را ترک کنید؟", "confirmLeaveShare": "آیا مطمئن هستید که می‌خواهید این یادداشت اشتراکی را ترک کنید؟",
"sharedBy": "به اشتراک گذاشته توسط", "sharedBy": "به اشتراک گذاشته توسط",
"sharedShort": "به اشتراک گذاشته شده است", "sharedShort": "به اشتراک گذاشته شده است",
"leaveShare": "ترک", "leaveShare": "ترک",
"delete": "حذف", "delete": "Delete",
"archive": "بایگانی", "archive": "بایگانی",
"unarchive": "خروج از بایگانی", "unarchive": "خروج از بایگانی",
"pin": "سنجاق کردن", "pin": "سنجاق کردن",
@@ -127,7 +128,7 @@
"duplicate": "تکثیر", "duplicate": "تکثیر",
"share": "اشتراک‌گذاری", "share": "اشتراک‌گذاری",
"showCollaborators": "مشاهده همکاران", "showCollaborators": "مشاهده همکاران",
"pinned": "سنجاق شده", "pinned": "Note pinned",
"others": "سایر", "others": "سایر",
"noNotes": "بدون عنوان", "noNotes": "بدون عنوان",
"noNotesFound": "یادداشتی یافت نشد", "noNotesFound": "یادداشتی یافت نشد",
@@ -159,8 +160,8 @@
"recent": "اخیر", "recent": "اخیر",
"addNote": "افزودن یادداشت", "addNote": "افزودن یادداشت",
"readMore": "ادامه مطلب", "readMore": "ادامه مطلب",
"remove": "حذف", "remove": "Remove",
"dragToReorder": "بکشید تا مرتب کنید", "dragToReorder": "Drag to reorder",
"more": "بیشتر", "more": "بیشتر",
"emptyState": "یادداشتی نیست", "emptyState": "یادداشتی نیست",
"metadataPanel": "جزئیات", "metadataPanel": "جزئیات",
@@ -173,7 +174,7 @@
"improveFailed": "بهبود شکست خورد", "improveFailed": "بهبود شکست خورد",
"transformFailed": "تبدیل شکست خورد", "transformFailed": "تبدیل شکست خورد",
"markdown": "مارک‌داون", "markdown": "مارک‌داون",
"unpinned": "سنجاق نشده", "unpinned": "Note unpinned",
"redoShortcut": "انجام مجدد (Ctrl+Y)", "redoShortcut": "انجام مجدد (Ctrl+Y)",
"undoShortcut": "بازگردانی (Ctrl+Z)", "undoShortcut": "بازگردانی (Ctrl+Z)",
"reorderTabs": "مرتب‌سازی زبانه", "reorderTabs": "مرتب‌سازی زبانه",
@@ -753,7 +754,7 @@
"downloadFailed": "دانلود انجام نشد" "downloadFailed": "دانلود انجام نشد"
}, },
"nav": { "nav": {
"home": "خانه", "home": "Home",
"notes": "یادداشت‌ها", "notes": "یادداشت‌ها",
"notebooks": "دفترچه‌ها", "notebooks": "دفترچه‌ها",
"generalNotes": "یادداشت‌های عمومی", "generalNotes": "یادداشت‌های عمومی",
@@ -763,7 +764,7 @@
"aiSettings": "تنظیمات هوش مصنوعی", "aiSettings": "تنظیمات هوش مصنوعی",
"logout": "خروج", "logout": "خروج",
"login": "ورود", "login": "ورود",
"adminDashboard": "داشبورد مدیریت", "adminDashboard": "Admin Dashboard",
"diagnostics": "تشخیص‌ها", "diagnostics": "تشخیص‌ها",
"trash": "سطل زباله", "trash": "سطل زباله",
"support": "پشتیبانی مامنتو ☕", "support": "پشتیبانی مامنتو ☕",
@@ -788,7 +789,8 @@
"proPlan": "پلن پرو", "proPlan": "پلن پرو",
"chat": "چت هوش مصنوعی", "chat": "چت هوش مصنوعی",
"lab": "آزمایشگاه", "lab": "آزمایشگاه",
"agents": "عامل‌ها" "agents": "عامل‌ها",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "تنظیمات", "title": "تنظیمات",
@@ -816,7 +818,7 @@
"security": "امنیت", "security": "امنیت",
"about": "درباره", "about": "درباره",
"version": "نسخه", "version": "نسخه",
"settingsSaved": "تنظیمات ذخیره شد", "settingsSaved": "Settings saved",
"cardSizeMode": "اندازه یادداشت", "cardSizeMode": "اندازه یادداشت",
"cardSizeModeDescription": "انتخاب بین اندازه متغیر یا یکنواخت", "cardSizeModeDescription": "انتخاب بین اندازه متغیر یا یکنواخت",
"selectCardSizeMode": "انتخاب حالت نمایش", "selectCardSizeMode": "انتخاب حالت نمایش",
@@ -837,14 +839,14 @@
"semanticIndexingDescription": "تولید بردارها برای همه یادداشت‌ها جهت فعال‌سازی جستجوی مبتنی بر قصد", "semanticIndexingDescription": "تولید بردارها برای همه یادداشت‌ها جهت فعال‌سازی جستجوی مبتنی بر قصد",
"profile": "پروفایل", "profile": "پروفایل",
"searchNoResults": "تنظیمات مطابق یافت نشد", "searchNoResults": "تنظیمات مطابق یافت نشد",
"languageAuto": "تشخیص خودکار", "languageAuto": "Language set to Auto",
"emailNotifications": "اعلان‌های ایمیل", "emailNotifications": "اعلان‌های ایمیل",
"emailNotificationsDesc": "دریافت اعلان‌های مهم از طریق ایمیل", "emailNotificationsDesc": "دریافت اعلان‌های مهم از طریق ایمیل",
"desktopNotifications": "اعلان‌های مرورگر", "desktopNotifications": "اعلان‌های مرورگر",
"desktopNotificationsDesc": "دریافت اعلان‌ها در مرورگر", "desktopNotificationsDesc": "دریافت اعلان‌ها در مرورگر",
"notificationsDesc": "مدیریت تنظیمات اعلان", "notificationsDesc": "مدیریت تنظیمات اعلان",
"autoSave": "ذخیره خودکار", "autoSave": "Auto-save",
"autoSaveDesc": "هنگام تایپ کردن، تغییرات را به صورت خودکار ذخیره کنید" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "پروفایل", "title": "پروفایل",
@@ -866,10 +868,10 @@
"preferredLanguage": "زبان مورد نظر", "preferredLanguage": "زبان مورد نظر",
"selectLanguage": "یک زبان انتخاب کنید", "selectLanguage": "یک زبان انتخاب کنید",
"languageDescription": "این زبان برای ویژگی‌های هوش مصنوعی، تحلیل محتوا و متن رابط کاربری استفاده خواهد شد.", "languageDescription": "این زبان برای ویژگی‌های هوش مصنوعی، تحلیل محتوا و متن رابط کاربری استفاده خواهد شد.",
"autoDetect": "تشخیص خودکار", "autoDetect": "Auto-detect",
"updateSuccess": "پروفایل به‌روزرسانی شد", "updateSuccess": "پروفایل به‌روزرسانی شد",
"updateFailed": "به‌روزرسانی پروفایل شکست خورد", "updateFailed": "به‌روزرسانی پروفایل شکست خورد",
"languageUpdateSuccess": "زبان با موفقیت به‌روزرسانی شد", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "به‌روزرسانی زبان شکست خورد", "languageUpdateFailed": "به‌روزرسانی زبان شکست خورد",
"profileUpdated": "پروفایل به‌روزرسانی شد", "profileUpdated": "پروفایل به‌روزرسانی شد",
"profileError": "خطا در به‌روزرسانی پروفایل", "profileError": "خطا در به‌روزرسانی پروفایل",
@@ -925,8 +927,8 @@
}, },
"general": { "general": {
"loading": "در حال بارگذاری...", "loading": "در حال بارگذاری...",
"save": "ذخیره", "save": "Save",
"cancel": "لغو", "cancel": "Cancel",
"add": "افزودن", "add": "افزودن",
"edit": "ویرایش", "edit": "ویرایش",
"confirm": "تأیید", "confirm": "تأیید",
@@ -987,7 +989,7 @@
"createNew": "ایجاد دفترچه جدید", "createNew": "ایجاد دفترچه جدید",
"createDescription": "یک مجموعه جدید برای سازماندهی یادداشت‌ها، ایده‌ها و پروژه‌های خود به طور مؤثر شروع کنید.", "createDescription": "یک مجموعه جدید برای سازماندهی یادداشت‌ها، ایده‌ها و پروژه‌های خود به طور مؤثر شروع کنید.",
"name": "نام دفترچه", "name": "نام دفترچه",
"namePlaceholder": "مثلاً استراتژی بازاریابی سه‌ماهه چهارم", "namePlaceholder": "Notebook name",
"myNotebook": "دفترچه من", "myNotebook": "دفترچه من",
"saving": "در حال ذخیره...", "saving": "در حال ذخیره...",
"selectIcon": "آیکون", "selectIcon": "آیکون",
@@ -996,7 +998,7 @@
"creating": "در حال ایجاد...", "creating": "در حال ایجاد...",
"edit": "ویرایش دفترچه", "edit": "ویرایش دفترچه",
"editDescription": "نام، آیکون و رنگ دفترچه خود را تغییر دهید.", "editDescription": "نام، آیکون و رنگ دفترچه خود را تغییر دهید.",
"delete": "حذف دفترچه", "delete": "Delete",
"deleteWarning": "آیا مطمئن هستید که می‌خواهید این دفترچه را حذف کنید؟ یادداشت‌ها به یادداشت‌های عمومی منتقل می‌شوند.", "deleteWarning": "آیا مطمئن هستید که می‌خواهید این دفترچه را حذف کنید؟ یادداشت‌ها به یادداشت‌های عمومی منتقل می‌شوند.",
"deleteConfirm": "حذف", "deleteConfirm": "حذف",
"summary": "خلاصه دفترچه", "summary": "خلاصه دفترچه",
@@ -1015,7 +1017,10 @@
"pinnedFrozenTooltip": "نوت بوک پین شده - سفارش منجمد شده", "pinnedFrozenTooltip": "نوت بوک پین شده - سفارش منجمد شده",
"organizeNotebookWithAITooltip": "این نوت بوک را با هوش مصنوعی سازماندهی کنید", "organizeNotebookWithAITooltip": "این نوت بوک را با هوش مصنوعی سازماندهی کنید",
"assistantRequiredForSummarize": "برای خلاصه کردن، دستیار هوش مصنوعی را در تنظیمات روشن کنید", "assistantRequiredForSummarize": "برای خلاصه کردن، دستیار هوش مصنوعی را در تنظیمات روشن کنید",
"createSubnotebook": "اضافه کردن نوت بوک فرعی" "createSubnotebook": "اضافه کردن نوت بوک فرعی",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "انتقال به {name}؟", "title": "انتقال به {name}؟",
@@ -1434,21 +1439,23 @@
}, },
"appearance": { "appearance": {
"title": "ظاهر", "title": "ظاهر",
"description": "سفارشی‌سازی ظاهر برنامه", "description": "Customize the interface",
"notesViewDescription": "نحوه نمایش یادداشت‌ها در صفحه اصلی و دفترچه‌ها را انتخاب کنید.", "notesViewDescription": "نحوه نمایش یادداشت‌ها در صفحه اصلی و دفترچه‌ها را انتخاب کنید.",
"notesViewLabel": "چیدمان یادداشت‌ها", "notesViewLabel": "چیدمان یادداشت‌ها",
"notesViewTabs": "زبانه‌ها (سبک OneNote)", "notesViewTabs": "زبانه‌ها (سبک OneNote)",
"notesViewMasonry": "کارت‌ها (شبکه‌ای)", "notesViewMasonry": "کارت‌ها (شبکه‌ای)",
"notesViewList": "فهرست (مجله)", "notesViewList": "فهرست (مجله)",
"selectTheme": "انتخاب تم", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "خانواده فونت", "fontFamilyLabel": "Font",
"fontFamilyDescription": "فونت استفاده شده در سراسر برنامه را انتخاب کنید", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter برای خوانایی بهینه شده است، سیستم از فونت بومی سیستم‌عامل شما استفاده می‌کند", "selectFontFamily": "Inter برای خوانایی بهینه شده است، سیستم از فونت بومی سیستم‌عامل شما استفاده می‌کند",
"fontSystem": "فونت پیش‌فرض سیستم", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono", "fontJetBrainsMono": "JetBrains Mono",
"tab": "ظاهر" "tab": "ظاهر",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "عمومی", "title": "عمومی",
@@ -1482,18 +1489,26 @@
}, },
"trash": { "trash": {
"title": "سطل زباله", "title": "سطل زباله",
"empty": "سطل زباله خالی است", "empty": "Trash is empty",
"emptyDescription": "یادداشت‌های حذف شده در اینجا نمایش داده می‌شوند", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "بازیابی", "restore": "Restore",
"deletePermanently": "حذف دائمی", "deletePermanently": "حذف دائمی",
"noteTrashed": "یادداشت به سطل زباله منتقل شد", "noteTrashed": "یادداشت به سطل زباله منتقل شد",
"noteRestored": "یادداشت بازیابی شد", "noteRestored": "یادداشت بازیابی شد",
"notePermanentlyDeleted": "یادداشت برای همیشه حذف شد", "notePermanentlyDeleted": "یادداشت برای همیشه حذف شد",
"emptyTrash": "خالی کردن سطل زباله", "emptyTrash": "خالی کردن سطل زباله",
"emptyTrashConfirm": "همه یادداشت‌های سطل زباله برای همیشه حذف شوند؟", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "سطل زباله خالی شد", "emptyTrashSuccess": "سطل زباله خالی شد",
"permanentDelete": "حذف دائمی", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "این یادداشت برای همیشه حذف خواهد شد. این عمل قابل بازگشت نیست." "permanentDeleteConfirm": "این یادداشت برای همیشه حذف خواهد شد. این عمل قابل بازگشت نیست.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "حریم خصوصی", "privacy": "حریم خصوصی",
@@ -1588,7 +1603,23 @@
"chinese": "چینی", "chinese": "چینی",
"japanese": "ژاپنی" "japanese": "ژاپنی"
}, },
"customPlaceholder": "به عنوان مثال عربی، روسی…" "customPlaceholder": "به عنوان مثال عربی، روسی…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "نامشخص", "unknown": "نامشخص",
@@ -1596,16 +1627,16 @@
"loading": "در حال بارگذاری...", "loading": "در حال بارگذاری...",
"error": "خطا", "error": "خطا",
"success": "موفق", "success": "موفق",
"confirm": "تأیید", "confirm": "Confirm",
"cancel": "لغو", "cancel": "Cancel",
"close": "بستن", "close": "بستن",
"save": "ذخیره", "save": "ذخیره",
"delete": "حذف", "delete": "حذف",
"edit": "ویرایش", "edit": "ویرایش",
"add": "افزودن", "add": "افزودن",
"remove": "حذف", "remove": "حذف",
"search": "جستجو", "search": "Search...",
"noResults": "نتیجه‌ای یافت نشد", "noResults": "No notes found",
"required": "الزامی", "required": "الزامی",
"optional": "اختیاری" "optional": "اختیاری"
}, },
@@ -1987,7 +2018,9 @@
"searching": "در حال جستجو...", "searching": "در حال جستجو...",
"noNotesFoundForContext": "هیچ یادداشت مرتبطی برای این سوال یافت نشد. با دانش عمومی خود پاسخ دهید.", "noNotesFoundForContext": "هیچ یادداشت مرتبطی برای این سوال یافت نشد. با دانش عمومی خود پاسخ دهید.",
"webSearch": "جستجوی وب", "webSearch": "جستجوی وب",
"timeoutWarning": "پاسخ بیشتر از حد انتظار طول می‌کشد..." "timeoutWarning": "پاسخ بیشتر از حد انتظار طول می‌کشد...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "آزمایشگاه", "title": "آزمایشگاه",
@@ -2561,5 +2594,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -65,8 +65,9 @@
"renameNotebook": "Renommer", "renameNotebook": "Renommer",
"sharedNotebookBadge": "· partagé", "sharedNotebookBadge": "· partagé",
"sortManual": "Ordre libre", "sortManual": "Ordre libre",
"moveFailed": "Impossible de déplacer le carnet", "moveFailed": "Échec du déplacement du carnet",
"dropToRoot": "Déposer ici pour remonter à la racine" "dropToRoot": "Déposez ici pour déplacer à la racine",
"noReminders": "Aucun rappel actif."
}, },
"notes": { "notes": {
"title": "Notes", "title": "Notes",
@@ -88,7 +89,7 @@
"add": "Ajouter", "add": "Ajouter",
"adding": "Ajout...", "adding": "Ajout...",
"close": "Fermer", "close": "Fermer",
"confirmDelete": "Êtes-vous sûr de vouloir supprimer cette note ?", "confirmDelete": "Voulez-vous vraiment supprimer cette note ?",
"confirmLeaveShare": "Êtes-vous sûr de vouloir quitter cette note partagée ?", "confirmLeaveShare": "Êtes-vous sûr de vouloir quitter cette note partagée ?",
"sharedBy": "Partagé par", "sharedBy": "Partagé par",
"sharedShort": "Partagé", "sharedShort": "Partagé",
@@ -770,7 +771,7 @@
"aiSettings": "Paramètres IA", "aiSettings": "Paramètres IA",
"logout": "Déconnexion", "logout": "Déconnexion",
"login": "Connexion", "login": "Connexion",
"adminDashboard": "Tableau de bord Admin", "adminDashboard": "Administration",
"diagnostics": "Diagnostics", "diagnostics": "Diagnostics",
"trash": "Corbeille", "trash": "Corbeille",
"support": "Soutenir Memento ☕", "support": "Soutenir Memento ☕",
@@ -795,7 +796,8 @@
"proPlan": "Plan Pro", "proPlan": "Plan Pro",
"chat": "Chat IA", "chat": "Chat IA",
"lab": "L'Atelier", "lab": "L'Atelier",
"agents": "Agents" "agents": "Agents",
"sharedWithMe": "Partagé avec moi"
}, },
"settings": { "settings": {
"title": "Paramètres", "title": "Paramètres",
@@ -897,7 +899,10 @@
"showRecentNotesDescription": "Afficher les notes récentes (7 derniers jours) sur la page principale", "showRecentNotesDescription": "Afficher les notes récentes (7 derniers jours) sur la page principale",
"recentNotesUpdateSuccess": "Paramètre des notes récentes mis à jour avec succès", "recentNotesUpdateSuccess": "Paramètre des notes récentes mis à jour avec succès",
"recentNotesUpdateFailed": "Échec de la mise à jour du paramètre des notes récentes", "recentNotesUpdateFailed": "Échec de la mise à jour du paramètre des notes récentes",
"tab": "Profil" "tab": "Profil",
"preferences": "Préférences de compte",
"desktopNotifications": "Notification bureau",
"desktopNotificationsDesc": "Recevez des alertes pour vos rappels et activités IA."
}, },
"aiSettings": { "aiSettings": {
"title": "IA", "title": "IA",
@@ -994,7 +999,7 @@
"createNew": "Créer un nouveau carnet", "createNew": "Créer un nouveau carnet",
"createDescription": "Commencez une nouvelle collection pour organiser vos notes, idées et projets efficacement.", "createDescription": "Commencez une nouvelle collection pour organiser vos notes, idées et projets efficacement.",
"name": "Nom du carnet", "name": "Nom du carnet",
"namePlaceholder": "ex. Stratégie Marketing Q4", "namePlaceholder": "Nom du carnet",
"myNotebook": "Mon carnet", "myNotebook": "Mon carnet",
"saving": "Enregistrement...", "saving": "Enregistrement...",
"selectIcon": "Icône", "selectIcon": "Icône",
@@ -1003,7 +1008,7 @@
"creating": "Création...", "creating": "Création...",
"edit": "Modifier le carnet", "edit": "Modifier le carnet",
"editDescription": "Changer le nom, l'icône et la couleur de votre carnet.", "editDescription": "Changer le nom, l'icône et la couleur de votre carnet.",
"delete": "Supprimer le carnet", "delete": "Supprimer",
"deleteWarning": "Êtes-vous sûr de vouloir supprimer ce carnet ? Les notes seront déplacées dans les Notes générales.", "deleteWarning": "Êtes-vous sûr de vouloir supprimer ce carnet ? Les notes seront déplacées dans les Notes générales.",
"deleteConfirm": "Supprimer", "deleteConfirm": "Supprimer",
"summary": "Résumé du carnet", "summary": "Résumé du carnet",
@@ -1022,7 +1027,10 @@
"pinnedFrozenTooltip": "Carnet figé (ordre des sous-carnets verrouillé)", "pinnedFrozenTooltip": "Carnet figé (ordre des sous-carnets verrouillé)",
"organizeNotebookWithAITooltip": "Organiser ce carnet avec l'IA", "organizeNotebookWithAITooltip": "Organiser ce carnet avec l'IA",
"assistantRequiredForSummarize": "Activez l'assistant IA dans les paramètres pour résumer", "assistantRequiredForSummarize": "Activez l'assistant IA dans les paramètres pour résumer",
"createSubnotebook": "Ajouter un sous-carnet" "createSubnotebook": "Ajouter un sous-carnet",
"createSubNotebook": "Nouveau sous-carnet…",
"rename": "Renommer",
"confirmRename": "Renommer"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Déplacer vers {name} ?", "title": "Déplacer vers {name} ?",
@@ -1441,21 +1449,23 @@
}, },
"appearance": { "appearance": {
"title": "Apparence", "title": "Apparence",
"description": "Personnaliser l'apparence de l'application", "description": "Personnalisez l'interface",
"notesViewDescription": "Choisissez comment afficher les notes sur l'accueil et dans les carnets.", "notesViewDescription": "Choisissez comment afficher les notes sur l'accueil et dans les carnets.",
"notesViewLabel": "Affichage des notes", "notesViewLabel": "Affichage des notes",
"notesViewTabs": "Onglets (type OneNote)", "notesViewTabs": "Onglets (type OneNote)",
"notesViewMasonry": "Cartes (grille)", "notesViewMasonry": "Cartes (grille)",
"notesViewList": "Liste (magazine)", "notesViewList": "Liste (magazine)",
"selectTheme": "Sélectionner le thème", "selectTheme": "Choisissez votre thème",
"fontFamilyLabel": "Famille de polices", "fontFamilyLabel": "Police",
"fontFamilyDescription": "Choisissez la police utilisée dans toute l'application", "fontFamilyDescription": "Choisissez la police de l'application",
"selectFontFamily": "Inter est optimisé pour la lisibilité, Système utilise la police native de votre système d'exploitation", "selectFontFamily": "Inter est optimisé pour la lisibilité, Système utilise la police native de votre système d'exploitation",
"fontSystem": "Police système par défaut", "fontSystem": "Système",
"fontInterDefault": "Inter (défaut)", "fontInterDefault": "Inter (par défaut)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono", "fontJetBrainsMono": "JetBrains Mono",
"tab": "Apparence" "tab": "Apparence",
"accentColorTitle": "Couleur d'activation",
"accentColorDescription": "Définissez la couleur principale de votre espace de travail"
}, },
"usageMeter": { "usageMeter": {
"packName": "Pack découverte IA", "packName": "Pack découverte IA",
@@ -1514,17 +1524,25 @@
"trash": { "trash": {
"title": "Corbeille", "title": "Corbeille",
"empty": "La corbeille est vide", "empty": "La corbeille est vide",
"emptyDescription": "Les notes supprimées apparaîtront ici", "emptyDescription": "Les éléments supprimés apparaîtront ici. Ils sont conservés pendant 30 jours avant suppression définitive.",
"restore": "Restaurer", "restore": "Restaurer",
"deletePermanently": "Supprimer définitivement", "deletePermanently": "Supprimer définitivement",
"noteTrashed": "Note déplacée dans la corbeille", "noteTrashed": "Note déplacée dans la corbeille",
"noteRestored": "Note restaurée", "noteRestored": "Note restaurée",
"notePermanentlyDeleted": "Note supprimée définitivement", "notePermanentlyDeleted": "Note supprimée définitivement",
"emptyTrash": "Vider la corbeille", "emptyTrash": "Vider la corbeille",
"emptyTrashConfirm": "Supprimer définitivement toutes les notes de la corbeille ?", "emptyTrashConfirm": "Vider la corbeille ? Cette action est irréversible.",
"emptyTrashSuccess": "Corbeille vidée", "emptyTrashSuccess": "Corbeille vidée",
"permanentDelete": "Supprimer définitivement", "permanentDelete": "Supprimer définitivement",
"permanentDeleteConfirm": "Cette note sera supprimée définitivement. Cette action est irréversible." "permanentDeleteConfirm": "Cette note sera supprimée définitivement. Cette action est irréversible.",
"restoreSuccess": "Restauration réussie",
"restoreError": "Échec de la restauration",
"permanentDeleteSuccess": "Suppression définitive",
"deleteError": "Échec de la suppression",
"daysRemaining": "JOURS RESTANTS",
"notebookContentPreserved": "Contenu du carnet préservé",
"notebookRestoreHint": "La restauration d'un carnet restaure également toutes ses notes.",
"filterAll": "Tous"
}, },
"footer": { "footer": {
"privacy": "Confidentialité", "privacy": "Confidentialité",
@@ -1619,7 +1637,23 @@
"chinese": "Chinois", "chinese": "Chinois",
"japanese": "Japonais" "japanese": "Japonais"
}, },
"customPlaceholder": "ex. : Arabe, Russe…" "customPlaceholder": "ex. : Arabe, Russe…",
"autoDetect": "Détection auto",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Inconnu", "unknown": "Inconnu",
@@ -1635,8 +1669,8 @@
"edit": "Modifier", "edit": "Modifier",
"add": "Ajouter", "add": "Ajouter",
"remove": "Supprimer", "remove": "Supprimer",
"search": "Rechercher", "search": "Rechercher...",
"noResults": "Aucun résultat", "noResults": "Aucune note trouvée",
"required": "Requis", "required": "Requis",
"optional": "Optionnel" "optional": "Optionnel"
}, },
@@ -2018,7 +2052,9 @@
"searching": "Recherche en cours...", "searching": "Recherche en cours...",
"noNotesFoundForContext": "Aucune note pertinente trouvée pour cette question. Réponds avec tes connaissances générales.", "noNotesFoundForContext": "Aucune note pertinente trouvée pour cette question. Réponds avec tes connaissances générales.",
"webSearch": "Recherche web", "webSearch": "Recherche web",
"timeoutWarning": "La réponse met plus de temps que prévu..." "timeoutWarning": "La réponse met plus de temps que prévu...",
"quotaExceededBasic": "Le chat IA est réservé au plan PRO et supérieur.",
"quotaExceededTier": "Limite mensuelle atteinte pour le plan {tier}. Elle se réinitialise le mois prochain."
}, },
"labHeader": { "labHeader": {
"title": "L'Atelier", "title": "L'Atelier",
@@ -2568,5 +2604,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Titre",
"content": "Contenu",
"untitled": "Sans titre",
"emptyState": "Aucune version disponible",
"selectVersion": "Sélectionnez une version pour prévisualiser son contenu",
"currentVersion": "actuelle"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "सबसे पुराना पहले", "sortOldest": "सबसे पुराना पहले",
"sortAlpha": "ए → जेड", "sortAlpha": "ए → जेड",
"accountMenu": "खाता मेनू", "accountMenu": "खाता मेनू",
"profile": "प्रोफ़ाइल", "profile": "Profile",
"signOut": "साइन आउट", "signOut": "Sign out",
"sortOrder": "क्रमबद्ध करेन का आदेश", "sortOrder": "क्रमबद्ध करेन का आदेश",
"freezePinnedNotebook": "पिन नोटबुक साइडबार ऑर्डर", "freezePinnedNotebook": "पिन नोटबुक साइडबार ऑर्डर",
"unfreezePinnedNotebook": "नोटबुक साइडबार ऑर्डर को अनपिन करें", "unfreezePinnedNotebook": "नोटबुक साइडबार ऑर्डर को अनपिन करें",
@@ -58,14 +58,15 @@
"renameNotebook": "नाम बदलें", "renameNotebook": "नाम बदलें",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "कस्टम क्रम", "sortManual": "कस्टम क्रम",
"moveFailed": "नोटबुक ले जाने में विफल", "moveFailed": "Failed to move notebook",
"dropToRoot": "रूट में ले जाने के लिए यहाँ छोड़ें" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "नोट्स", "title": "नोट्स",
"newNote": "नया नोट", "newNote": "नया नोट",
"reorganize": "नोट्स को पुनर्व्यवस्थित करें", "reorganize": "नोट्स को पुनर्व्यवस्थित करें",
"untitled": "शीर्षकहीन", "untitled": "Untitled",
"placeholder": "नोट लें...", "placeholder": "नोट लें...",
"markdownPlaceholder": "नोट लें... (Markdown समर्थित)", "markdownPlaceholder": "नोट लें... (Markdown समर्थित)",
"titlePlaceholder": "शीर्षक", "titlePlaceholder": "शीर्षक",
@@ -81,12 +82,12 @@
"add": "जोड़ें", "add": "जोड़ें",
"adding": "जोड़ रहे हैं...", "adding": "जोड़ रहे हैं...",
"close": "बंद करें", "close": "बंद करें",
"confirmDelete": "क्या आप वाकई इस नोट को हटाना चाहते हैं?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "क्या आप वाकई इस साझा नोट को छोड़ना चाहते हैं?", "confirmLeaveShare": "क्या आप वाकई इस साझा नोट को छोड़ना चाहते हैं?",
"sharedBy": "द्वारा साझा किया गया", "sharedBy": "द्वारा साझा किया गया",
"sharedShort": "साझा", "sharedShort": "साझा",
"leaveShare": "छोड़ें", "leaveShare": "छोड़ें",
"delete": "हटाएं", "delete": "Delete",
"archive": "संग्रहित करें", "archive": "संग्रहित करें",
"unarchive": "संग्रह से निकालें", "unarchive": "संग्रह से निकालें",
"pin": "पिन करें", "pin": "पिन करें",
@@ -127,7 +128,7 @@
"duplicate": "डुप्लिकेट", "duplicate": "डुप्लिकेट",
"share": "साझा करें", "share": "साझा करें",
"showCollaborators": "सहयोगी दिखाएं", "showCollaborators": "सहयोगी दिखाएं",
"pinned": "पिन किए गए", "pinned": "Note pinned",
"others": "अन्य", "others": "अन्य",
"noNotes": "कोई नोट नहीं", "noNotes": "कोई नोट नहीं",
"noNotesFound": "कोई नोट नहीं मिला", "noNotesFound": "कोई नोट नहीं मिला",
@@ -159,8 +160,8 @@
"recent": "हालिया", "recent": "हालिया",
"addNote": "नोट जोड़ें", "addNote": "नोट जोड़ें",
"readMore": "और पढ़ें", "readMore": "और पढ़ें",
"remove": "हटाएं", "remove": "Remove",
"dragToReorder": "पुनर्व्यवस्थित करने के लिए खींचें", "dragToReorder": "Drag to reorder",
"more": "अधिक", "more": "अधिक",
"emptyState": "कोई नोट नहीं", "emptyState": "कोई नोट नहीं",
"metadataPanel": "विवरण", "metadataPanel": "विवरण",
@@ -173,7 +174,7 @@
"improveFailed": "सुधारने में विफल", "improveFailed": "सुधारने में विफल",
"transformFailed": "रूपांतरित करने में विफल", "transformFailed": "रूपांतरित करने में विफल",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "अनपिन किया गया", "unpinned": "Note unpinned",
"redoShortcut": "फिर से करें (Ctrl+Y)", "redoShortcut": "फिर से करें (Ctrl+Y)",
"undoShortcut": "पूर्ववत करें (Ctrl+Z)", "undoShortcut": "पूर्ववत करें (Ctrl+Z)",
"reorderTabs": "टैब पुनर्व्यवस्थित करें", "reorderTabs": "टैब पुनर्व्यवस्थित करें",
@@ -751,7 +752,7 @@
"downloadFailed": "डाउनलोड विफल रहा" "downloadFailed": "डाउनलोड विफल रहा"
}, },
"nav": { "nav": {
"home": "होम", "home": "Home",
"notes": "नोट्स", "notes": "नोट्स",
"notebooks": "नोटबुक", "notebooks": "नोटबुक",
"generalNotes": "सामान्य नोट्स", "generalNotes": "सामान्य नोट्स",
@@ -761,7 +762,7 @@
"aiSettings": "AI सेटिंग्स", "aiSettings": "AI सेटिंग्स",
"logout": "लॉग आउट", "logout": "लॉग आउट",
"login": "लॉग इन", "login": "लॉग इन",
"adminDashboard": "एडमिन डैशबोर्ड", "adminDashboard": "Admin Dashboard",
"diagnostics": "निदान", "diagnostics": "निदान",
"trash": "कचरा", "trash": "कचरा",
"support": "Memento का समर्थन करें ☕", "support": "Memento का समर्थन करें ☕",
@@ -786,7 +787,8 @@
"proPlan": "प्रो योजना", "proPlan": "प्रो योजना",
"chat": "AI चैट", "chat": "AI चैट",
"lab": "लैब", "lab": "लैब",
"agents": "एजेंट" "agents": "एजेंट",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "सेटिंग्स", "title": "सेटिंग्स",
@@ -814,7 +816,7 @@
"security": "सुरक्षा", "security": "सुरक्षा",
"about": "के बारे में", "about": "के बारे में",
"version": "संस्करण", "version": "संस्करण",
"settingsSaved": "सेटिंग्स सहेजी गई", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search", "semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
"profile": "प्रोफ़ाइल", "profile": "प्रोफ़ाइल",
"searchNoResults": "कोई मिलान सेटिंग्स नहीं मिली", "searchNoResults": "कोई मिलान सेटिंग्स नहीं मिली",
"languageAuto": "स्वचालित पता लगाना", "languageAuto": "Language set to Auto",
"emailNotifications": "ईमेल सूचनाएं", "emailNotifications": "ईमेल सूचनाएं",
"emailNotificationsDesc": "ईमेल द्वारा महत्वपूर्ण सूचनाएं प्राप्त करें", "emailNotificationsDesc": "ईमेल द्वारा महत्वपूर्ण सूचनाएं प्राप्त करें",
"desktopNotifications": "डेस्कटॉप सूचनाएं", "desktopNotifications": "डेस्कटॉप सूचनाएं",
"desktopNotificationsDesc": "ब्राउज़र में सूचनाएं प्राप्त करें", "desktopNotificationsDesc": "ब्राउज़र में सूचनाएं प्राप्त करें",
"notificationsDesc": "अपनी सूचना वरीयताएं प्रबंधित करें", "notificationsDesc": "अपनी सूचना वरीयताएं प्रबंधित करें",
"autoSave": "ऑटो को बचाने", "autoSave": "Auto-save",
"autoSaveDesc": "टाइप करते समय परिवर्तन स्वचालित रूप से सहेजें" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "प्रोफ़ाइल", "title": "प्रोफ़ाइल",
@@ -864,10 +866,10 @@
"preferredLanguage": "पसंदीदा भाषा", "preferredLanguage": "पसंदीदा भाषा",
"selectLanguage": "भाषा चुनें", "selectLanguage": "भाषा चुनें",
"languageDescription": "यह भाषा AI-संचालित सुविधाओं, सामग्री विश्लेषण और इंटरफेस पाठ के लिए उपयोग की जाएगी।", "languageDescription": "यह भाषा AI-संचालित सुविधाओं, सामग्री विश्लेषण और इंटरफेस पाठ के लिए उपयोग की जाएगी।",
"autoDetect": "स्वचालित पता लगाना", "autoDetect": "Auto-detect",
"updateSuccess": "प्रोफ़ाइल अपडेट किया गया", "updateSuccess": "प्रोफ़ाइल अपडेट किया गया",
"updateFailed": "प्रोफ़ाइल अपडेट करने में विफल", "updateFailed": "प्रोफ़ाइल अपडेट करने में विफल",
"languageUpdateSuccess": "भाषा सफलतापूर्वक अपडेट की गई", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "भाषा अपडेट करने में विफल", "languageUpdateFailed": "भाषा अपडेट करने में विफल",
"profileUpdated": "प्रोफ़ाइल अपडेट किया गया", "profileUpdated": "प्रोफ़ाइल अपडेट किया गया",
"profileError": "प्रोफ़ाइल अपडेट करने में त्रुटि", "profileError": "प्रोफ़ाइल अपडेट करने में त्रुटि",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "लोड हो रहा है...", "loading": "लोड हो रहा है...",
"save": "सहेजें", "save": "Save",
"cancel": "रद्द करें", "cancel": "Cancel",
"add": "जोड़ें", "add": "जोड़ें",
"edit": "संपादित करें", "edit": "संपादित करें",
"confirm": "पुष्टि करें", "confirm": "पुष्टि करें",
@@ -984,7 +986,7 @@
"createNew": "नया नोटबुक बनाएं", "createNew": "नया नोटबुक बनाएं",
"createDescription": "अपने नोट्स, विचारों और परियोजनाओं को कुशलता से व्यवस्थित करने के लिए एक नया संग्रह शुरू करें।", "createDescription": "अपने नोट्स, विचारों और परियोजनाओं को कुशलता से व्यवस्थित करने के लिए एक नया संग्रह शुरू करें।",
"name": "नोटबुक नाम", "name": "नोटबुक नाम",
"namePlaceholder": "उदा. Q4 मार्केटिंग रणनीति", "namePlaceholder": "Notebook name",
"myNotebook": "मेरी नोटबुक", "myNotebook": "मेरी नोटबुक",
"saving": "सहेज रहा है...", "saving": "सहेज रहा है...",
"selectIcon": "आइकन", "selectIcon": "आइकन",
@@ -993,7 +995,7 @@
"creating": "बना रहे हैं...", "creating": "बना रहे हैं...",
"edit": "नोटबुक संपादित करें", "edit": "नोटबुक संपादित करें",
"editDescription": "नोटबुक का नाम, आइकन और रंग बदलें।", "editDescription": "नोटबुक का नाम, आइकन और रंग बदलें।",
"delete": "नोटबुक हटाएं", "delete": "Delete",
"deleteWarning": "क्या आप वाकई इस नोटबुक को हटाना चाहते हैं? नोट्स को सामान्य नोट्स में ले जाया जाएगा।", "deleteWarning": "क्या आप वाकई इस नोटबुक को हटाना चाहते हैं? नोट्स को सामान्य नोट्स में ले जाया जाएगा।",
"deleteConfirm": "हटाएं", "deleteConfirm": "हटाएं",
"summary": "नोटबुक सारांश", "summary": "नोटबुक सारांश",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "पिन की गई नोटबुक - ऑर्डर फ़्रीज़ किया गया", "pinnedFrozenTooltip": "पिन की गई नोटबुक - ऑर्डर फ़्रीज़ किया गया",
"organizeNotebookWithAITooltip": "इस नोटबुक को AI के साथ व्यवस्थित करें", "organizeNotebookWithAITooltip": "इस नोटबुक को AI के साथ व्यवस्थित करें",
"assistantRequiredForSummarize": "संक्षेप में बताने के लिए सेटिंग्स में AI Assistant चालू करें", "assistantRequiredForSummarize": "संक्षेप में बताने के लिए सेटिंग्स में AI Assistant चालू करें",
"createSubnotebook": "उप-नोटबुक जोड़ें" "createSubnotebook": "उप-नोटबुक जोड़ें",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "{name} में ले जाएं?", "title": "{name} में ले जाएं?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "दिखावट", "title": "दिखावट",
"description": "ऐप के दिखने के तरीके को अनुकूलित करें", "description": "Customize the interface",
"notesViewDescription": "चुनें कि होम और नोटबुक में नोट्स कैसे दिखाए जाएं।", "notesViewDescription": "चुनें कि होम और नोटबुक में नोट्स कैसे दिखाए जाएं।",
"notesViewLabel": "नोट्स दृश्य", "notesViewLabel": "नोट्स दृश्य",
"notesViewTabs": "टैब (OneNote-शैली)", "notesViewTabs": "टैब (OneNote-शैली)",
"notesViewMasonry": "कार्ड (ग्रिड)", "notesViewMasonry": "कार्ड (ग्रिड)",
"notesViewList": "सूची (पत्रिका)", "notesViewList": "सूची (पत्रिका)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "फ़ॉन्ट परिवार", "fontFamilyLabel": "Font",
"fontFamilyDescription": "पूरे ऐप में उपयोग किए जाने वाले फ़ॉन्ट का चयन करें", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter पठनीयता के लिए अनुकूलित है, सिस्टम आपके OS के मूल फ़ॉन्ट का उपयोग करता है", "selectFontFamily": "Inter पठनीयता के लिए अनुकूलित है, सिस्टम आपके OS के मूल फ़ॉन्ट का उपयोग करता है",
"fontSystem": "सिस्टम डिफ़ॉल्ट", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "रीसायकल बिन", "title": "रीसायकल बिन",
"empty": "रीसायकल बिन खाली है", "empty": "Trash is empty",
"emptyDescription": "हटाई गई नोट्स यहां दिखाई देंगी", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "पुनर्स्थापित करें", "restore": "Restore",
"deletePermanently": "स्थायी रूप से हटाएं", "deletePermanently": "स्थायी रूप से हटाएं",
"noteTrashed": "नोट रीसायकल बिन में ले जाया गया", "noteTrashed": "नोट रीसायकल बिन में ले जाया गया",
"noteRestored": "नोट पुनर्स्थापित किया गया", "noteRestored": "नोट पुनर्स्थापित किया गया",
"notePermanentlyDeleted": "नोट स्थायी रूप से हटाया गया", "notePermanentlyDeleted": "नोट स्थायी रूप से हटाया गया",
"emptyTrash": "रीसायकल बिन खाली करें", "emptyTrash": "रीसायकल बिन खाली करें",
"emptyTrashConfirm": "रीसायकल बिन की सभी नोट्स स्थायी रूप से हटाएं?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "रीसायकल बिन खाली किया गया", "emptyTrashSuccess": "रीसायकल बिन खाली किया गया",
"permanentDelete": "स्थायी रूप से हटाएं", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "यह नोट स्थायी रूप से हटा दी जाएगी। इसे पूर्ववत नहीं किया जा सकता।" "permanentDeleteConfirm": "यह नोट स्थायी रूप से हटा दी जाएगी। इसे पूर्ववत नहीं किया जा सकता।",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "गोपनीयता", "privacy": "गोपनीयता",
@@ -1583,7 +1598,23 @@
"chinese": "चीनी", "chinese": "चीनी",
"japanese": "जापानी" "japanese": "जापानी"
}, },
"customPlaceholder": "जैसे अरबी, रूसी..." "customPlaceholder": "जैसे अरबी, रूसी...",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "अज्ञात", "unknown": "अज्ञात",
@@ -1591,16 +1622,16 @@
"loading": "लोड हो रहा है...", "loading": "लोड हो रहा है...",
"error": "त्रुटि", "error": "त्रुटि",
"success": "सफल", "success": "सफल",
"confirm": "पुष्टि करें", "confirm": "Confirm",
"cancel": "रद्द करें", "cancel": "Cancel",
"close": "बंद करें", "close": "बंद करें",
"save": "सहेजें", "save": "सहेजें",
"delete": "हटाएं", "delete": "हटाएं",
"edit": "संपादित करें", "edit": "संपादित करें",
"add": "जोड़ें", "add": "जोड़ें",
"remove": "हटाएं", "remove": "हटाएं",
"search": "खोजें", "search": "Search...",
"noResults": "कोई परिणाम नहीं", "noResults": "No notes found",
"required": "आवश्यक", "required": "आवश्यक",
"optional": "वैकल्पिक" "optional": "वैकल्पिक"
}, },
@@ -1982,7 +2013,9 @@
"searching": "खोज रहे हैं...", "searching": "खोज रहे हैं...",
"noNotesFoundForContext": "इस प्रश्न के लिए कोई प्रासंगिक नोट्स नहीं मिले। अपने सामान्य ज्ञान से उत्तर दें।", "noNotesFoundForContext": "इस प्रश्न के लिए कोई प्रासंगिक नोट्स नहीं मिले। अपने सामान्य ज्ञान से उत्तर दें।",
"webSearch": "वेब खोज", "webSearch": "वेब खोज",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "लैब", "title": "लैब",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "Prima il più vecchio", "sortOldest": "Prima il più vecchio",
"sortAlpha": "A→Z", "sortAlpha": "A→Z",
"accountMenu": "Menù conto", "accountMenu": "Menù conto",
"profile": "Profilo", "profile": "Profile",
"signOut": "disconnessione", "signOut": "Sign out",
"sortOrder": "Ordinamento", "sortOrder": "Ordinamento",
"freezePinnedNotebook": "Blocca l'ordine della barra laterale del taccuino", "freezePinnedNotebook": "Blocca l'ordine della barra laterale del taccuino",
"unfreezePinnedNotebook": "Sblocca l'ordine della barra laterale del notebook", "unfreezePinnedNotebook": "Sblocca l'ordine della barra laterale del notebook",
@@ -58,14 +58,15 @@
"renameNotebook": "Rinominare", "renameNotebook": "Rinominare",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Ordine libero", "sortManual": "Ordine libero",
"moveFailed": "Impossibile spostare il quaderno", "moveFailed": "Failed to move notebook",
"dropToRoot": "Rilascia qui per spostare alla radice" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Note", "title": "Note",
"newNote": "Nuova nota", "newNote": "Nuova nota",
"reorganize": "Riorganizzare le note", "reorganize": "Riorganizzare le note",
"untitled": "Senza titolo", "untitled": "Untitled",
"placeholder": "Scrivi una nota...", "placeholder": "Scrivi una nota...",
"markdownPlaceholder": "Scrivi una nota... (Markdown supportato)", "markdownPlaceholder": "Scrivi una nota... (Markdown supportato)",
"titlePlaceholder": "Titolo", "titlePlaceholder": "Titolo",
@@ -81,12 +82,12 @@
"add": "Aggiungi", "add": "Aggiungi",
"adding": "Aggiunta in corso...", "adding": "Aggiunta in corso...",
"close": "Chiudi", "close": "Chiudi",
"confirmDelete": "Sei sicuro di voler eliminare questa nota?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "Sei sicuro di voler abbandonare questa nota condivisa?", "confirmLeaveShare": "Sei sicuro di voler abbandonare questa nota condivisa?",
"sharedBy": "Condivisa da", "sharedBy": "Condivisa da",
"sharedShort": "Condiviso", "sharedShort": "Condiviso",
"leaveShare": "Abbandona", "leaveShare": "Abbandona",
"delete": "Elimina", "delete": "Delete",
"archive": "Archivia", "archive": "Archivia",
"unarchive": "Rimuovi dallarchivio", "unarchive": "Rimuovi dallarchivio",
"pin": "Fissa", "pin": "Fissa",
@@ -127,7 +128,7 @@
"duplicate": "Duplica", "duplicate": "Duplica",
"share": "Condividi", "share": "Condividi",
"showCollaborators": "Mostra collaboratori", "showCollaborators": "Mostra collaboratori",
"pinned": "Fissate", "pinned": "Note pinned",
"others": "Altre", "others": "Altre",
"noNotes": "Nessuna nota", "noNotes": "Nessuna nota",
"noNotesFound": "Nessuna nota trovata", "noNotesFound": "Nessuna nota trovata",
@@ -160,7 +161,7 @@
"addNote": "Aggiungi nota", "addNote": "Aggiungi nota",
"readMore": "Leggi di più", "readMore": "Leggi di più",
"remove": "Remove", "remove": "Remove",
"dragToReorder": "Trascina per riordinare", "dragToReorder": "Drag to reorder",
"more": "Altro", "more": "Altro",
"emptyState": "Nessuna nota qui", "emptyState": "Nessuna nota qui",
"metadataPanel": "Dettagli", "metadataPanel": "Dettagli",
@@ -173,7 +174,7 @@
"improveFailed": "Miglioramento non riuscito", "improveFailed": "Miglioramento non riuscito",
"transformFailed": "Trasformazione non riuscita", "transformFailed": "Trasformazione non riuscita",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "Non fissato", "unpinned": "Note unpinned",
"redoShortcut": "Ripeti (Ctrl+Y)", "redoShortcut": "Ripeti (Ctrl+Y)",
"undoShortcut": "Annulla (Ctrl+Z)", "undoShortcut": "Annulla (Ctrl+Z)",
"reorderTabs": "Riordina scheda", "reorderTabs": "Riordina scheda",
@@ -761,7 +762,7 @@
"aiSettings": "Impostazioni AI", "aiSettings": "Impostazioni AI",
"logout": "Logout", "logout": "Logout",
"login": "Login", "login": "Login",
"adminDashboard": "Dashboard amministratore", "adminDashboard": "Admin Dashboard",
"diagnostics": "Diagnostica", "diagnostics": "Diagnostica",
"trash": "Cestino", "trash": "Cestino",
"support": "Supporta Memento ☕", "support": "Supporta Memento ☕",
@@ -786,7 +787,8 @@
"proPlan": "Piano Pro", "proPlan": "Piano Pro",
"chat": "Chat IA", "chat": "Chat IA",
"lab": "Il Lab", "lab": "Il Lab",
"agents": "Agenti" "agents": "Agenti",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Settings", "title": "Settings",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search", "semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
"profile": "Profilo", "profile": "Profilo",
"searchNoResults": "Nessun risultato trovato", "searchNoResults": "Nessun risultato trovato",
"languageAuto": "Automatico", "languageAuto": "Language set to Auto",
"emailNotifications": "Notifiche email", "emailNotifications": "Notifiche email",
"emailNotificationsDesc": "Ricevi notifiche importanti via email", "emailNotificationsDesc": "Ricevi notifiche importanti via email",
"desktopNotifications": "Notifiche desktop", "desktopNotifications": "Notifiche desktop",
"desktopNotificationsDesc": "Ricevi notifiche nel browser", "desktopNotificationsDesc": "Ricevi notifiche nel browser",
"notificationsDesc": "Gestisci le preferenze di notifica", "notificationsDesc": "Gestisci le preferenze di notifica",
"autoSave": "Salvataggio automatico", "autoSave": "Auto-save",
"autoSaveDesc": "Salva automaticamente le modifiche durante la digitazione" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "Profilo", "title": "Profilo",
@@ -864,10 +866,10 @@
"preferredLanguage": "Lingua preferita", "preferredLanguage": "Lingua preferita",
"selectLanguage": "Seleziona una lingua", "selectLanguage": "Seleziona una lingua",
"languageDescription": "Questa lingua sarà usata per le funzionalità AI, lanalisi dei contenuti e linterfaccia.", "languageDescription": "Questa lingua sarà usata per le funzionalità AI, lanalisi dei contenuti e linterfaccia.",
"autoDetect": "Rilevamento automatico", "autoDetect": "Auto-detect",
"updateSuccess": "Profilo aggiornato", "updateSuccess": "Profilo aggiornato",
"updateFailed": "Aggiornamento del profilo non riuscito", "updateFailed": "Aggiornamento del profilo non riuscito",
"languageUpdateSuccess": "Lingua aggiornata con successo", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Aggiornamento della lingua non riuscito", "languageUpdateFailed": "Aggiornamento della lingua non riuscito",
"profileUpdated": "Profilo aggiornato", "profileUpdated": "Profilo aggiornato",
"profileError": "Errore nellaggiornamento del profilo", "profileError": "Errore nellaggiornamento del profilo",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "Caricamento...", "loading": "Caricamento...",
"save": "Salva", "save": "Save",
"cancel": "Annulla", "cancel": "Cancel",
"add": "Aggiungi", "add": "Aggiungi",
"edit": "Modifica", "edit": "Modifica",
"confirm": "Conferma", "confirm": "Conferma",
@@ -984,7 +986,7 @@
"createNew": "Crea nuovo notebook", "createNew": "Crea nuovo notebook",
"createDescription": "Avvia una nuova raccolta per organizzare note, idee e progetti in modo efficiente.", "createDescription": "Avvia una nuova raccolta per organizzare note, idee e progetti in modo efficiente.",
"name": "Nome del notebook", "name": "Nome del notebook",
"namePlaceholder": "es. Strategia Marketing Q4", "namePlaceholder": "Notebook name",
"myNotebook": "Il mio quaderno", "myNotebook": "Il mio quaderno",
"saving": "Salvataggio...", "saving": "Salvataggio...",
"selectIcon": "Icona", "selectIcon": "Icona",
@@ -993,7 +995,7 @@
"creating": "Creazione...", "creating": "Creazione...",
"edit": "Modifica notebook", "edit": "Modifica notebook",
"editDescription": "Cambia nome, icona e colore del tuo notebook.", "editDescription": "Cambia nome, icona e colore del tuo notebook.",
"delete": "Elimina notebook", "delete": "Delete",
"deleteWarning": "Sei sicuro di voler eliminare questo notebook? Le note verranno spostate in Note generali.", "deleteWarning": "Sei sicuro di voler eliminare questo notebook? Le note verranno spostate in Note generali.",
"deleteConfirm": "Elimina", "deleteConfirm": "Elimina",
"summary": "Riepilogo notebook", "summary": "Riepilogo notebook",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "Taccuino appuntato: ordine congelato", "pinnedFrozenTooltip": "Taccuino appuntato: ordine congelato",
"organizeNotebookWithAITooltip": "Organizza questo taccuino con l'intelligenza artificiale", "organizeNotebookWithAITooltip": "Organizza questo taccuino con l'intelligenza artificiale",
"assistantRequiredForSummarize": "Attiva AI Assistant nelle impostazioni per riepilogare", "assistantRequiredForSummarize": "Attiva AI Assistant nelle impostazioni per riepilogare",
"createSubnotebook": "Aggiungi sub-notebook" "createSubnotebook": "Aggiungi sub-notebook",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Spostare in {name}?", "title": "Spostare in {name}?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "Aspetto", "title": "Aspetto",
"description": "Personalizza l'aspetto dell'app", "description": "Customize the interface",
"notesViewDescription": "Scegli come mostrare le note nella home e nei quaderni.", "notesViewDescription": "Scegli come mostrare le note nella home e nei quaderni.",
"notesViewLabel": "Vista note", "notesViewLabel": "Vista note",
"notesViewTabs": "Schede (stile OneNote)", "notesViewTabs": "Schede (stile OneNote)",
"notesViewMasonry": "Schede (griglia)", "notesViewMasonry": "Schede (griglia)",
"notesViewList": "Elenco (rivista)", "notesViewList": "Elenco (rivista)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Famiglia di caratteri", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Scegli il carattere utilizzato in tutta l'app", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter è ottimizzato per la leggibilità, Sistema usa il carattere nativo del tuo sistema operativo", "selectFontFamily": "Inter è ottimizzato per la leggibilità, Sistema usa il carattere nativo del tuo sistema operativo",
"fontSystem": "Carattere predefinito di sistema", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "Cestino", "title": "Cestino",
"empty": "Il cestino è vuoto", "empty": "Trash is empty",
"emptyDescription": "Le note eliminate appariranno qui", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Ripristina", "restore": "Restore",
"deletePermanently": "Elimina definitivamente", "deletePermanently": "Elimina definitivamente",
"noteTrashed": "Nota spostata nel cestino", "noteTrashed": "Nota spostata nel cestino",
"noteRestored": "Nota ripristinata", "noteRestored": "Nota ripristinata",
"notePermanentlyDeleted": "Nota eliminata definitivamente", "notePermanentlyDeleted": "Nota eliminata definitivamente",
"emptyTrash": "Svuota cestino", "emptyTrash": "Svuota cestino",
"emptyTrashConfirm": "Eliminare definitivamente tutte le note nel cestino?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Cestino svuotato", "emptyTrashSuccess": "Cestino svuotato",
"permanentDelete": "Elimina definitivamente", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "Questa nota verrà eliminata definitivamente. Questa azione non può essere annullata." "permanentDeleteConfirm": "Questa nota verrà eliminata definitivamente. Questa azione non può essere annullata.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Privacy", "privacy": "Privacy",
@@ -1583,7 +1598,23 @@
"chinese": "cinese", "chinese": "cinese",
"japanese": "giapponese" "japanese": "giapponese"
}, },
"customPlaceholder": "per esempio. Arabo, russo…" "customPlaceholder": "per esempio. Arabo, russo…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Sconosciuto", "unknown": "Sconosciuto",
@@ -1591,16 +1622,16 @@
"loading": "Caricamento...", "loading": "Caricamento...",
"error": "Errore", "error": "Errore",
"success": "Successo", "success": "Successo",
"confirm": "Conferma", "confirm": "Confirm",
"cancel": "Annulla", "cancel": "Cancel",
"close": "Chiudi", "close": "Chiudi",
"save": "Salva", "save": "Salva",
"delete": "Elimina", "delete": "Elimina",
"edit": "Modifica", "edit": "Modifica",
"add": "Aggiungi", "add": "Aggiungi",
"remove": "Rimuovi", "remove": "Rimuovi",
"search": "Cerca", "search": "Search...",
"noResults": "Nessun risultato", "noResults": "No notes found",
"required": "Obbligatorio", "required": "Obbligatorio",
"optional": "Opzionale" "optional": "Opzionale"
}, },
@@ -1982,7 +2013,9 @@
"searching": "Ricerca in corso...", "searching": "Ricerca in corso...",
"noNotesFoundForContext": "Nessuna nota rilevante trovata per questa domanda. Rispondi con la tua conoscenza generale.", "noNotesFoundForContext": "Nessuna nota rilevante trovata per questa domanda. Rispondi con la tua conoscenza generale.",
"webSearch": "Ricerca web", "webSearch": "Ricerca web",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "Il Laboratorio", "title": "Il Laboratorio",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "古い順", "sortOldest": "古い順",
"sortAlpha": "A→Z", "sortAlpha": "A→Z",
"accountMenu": "アカウントメニュー", "accountMenu": "アカウントメニュー",
"profile": "プロフィール", "profile": "Profile",
"signOut": "サインアウト", "signOut": "Sign out",
"sortOrder": "並べ替え順序", "sortOrder": "並べ替え順序",
"freezePinnedNotebook": "ノートブックのサイドバーの順序を固定する", "freezePinnedNotebook": "ノートブックのサイドバーの順序を固定する",
"unfreezePinnedNotebook": "ノートブックのサイドバーの順序の固定を解除する", "unfreezePinnedNotebook": "ノートブックのサイドバーの順序の固定を解除する",
@@ -58,14 +58,15 @@
"renameNotebook": "名前の変更", "renameNotebook": "名前の変更",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "自由な順序", "sortManual": "自由な順序",
"moveFailed": "ノートブックの移動に失敗しました", "moveFailed": "Failed to move notebook",
"dropToRoot": "ここにドロップでルートに移動" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "ノート", "title": "ノート",
"newNote": "新しいノート", "newNote": "新しいノート",
"reorganize": "メモを再整理する", "reorganize": "メモを再整理する",
"untitled": "無題", "untitled": "Untitled",
"placeholder": "ノートを作成...", "placeholder": "ノートを作成...",
"markdownPlaceholder": "ノートを作成...Markdown対応", "markdownPlaceholder": "ノートを作成...Markdown対応",
"titlePlaceholder": "タイトル", "titlePlaceholder": "タイトル",
@@ -81,12 +82,12 @@
"add": "追加", "add": "追加",
"adding": "追加中...", "adding": "追加中...",
"close": "閉じる", "close": "閉じる",
"confirmDelete": "このノートを削除してもよろしいですか?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "この共有ノートを退出してもよろしいですか?", "confirmLeaveShare": "この共有ノートを退出してもよろしいですか?",
"sharedBy": "共有者", "sharedBy": "共有者",
"sharedShort": "共有", "sharedShort": "共有",
"leaveShare": "退出", "leaveShare": "退出",
"delete": "削除", "delete": "Delete",
"archive": "アーカイブ", "archive": "アーカイブ",
"unarchive": "アーカイブを解除", "unarchive": "アーカイブを解除",
"pin": "ピン留め", "pin": "ピン留め",
@@ -127,7 +128,7 @@
"duplicate": "複製", "duplicate": "複製",
"share": "共有", "share": "共有",
"showCollaborators": "共同編集者を表示", "showCollaborators": "共同編集者を表示",
"pinned": "ピン留め済み", "pinned": "Note pinned",
"others": "その他", "others": "その他",
"noNotes": "ノートはありません", "noNotes": "ノートはありません",
"noNotesFound": "ノートが見つかりませんでした", "noNotesFound": "ノートが見つかりませんでした",
@@ -159,8 +160,8 @@
"recent": "最近", "recent": "最近",
"addNote": "ノートを追加", "addNote": "ノートを追加",
"readMore": "続きを読む", "readMore": "続きを読む",
"remove": "削除", "remove": "Remove",
"dragToReorder": "ドラッグして並べ替え", "dragToReorder": "Drag to reorder",
"more": "もっと見る", "more": "もっと見る",
"emptyState": "ノートがありません", "emptyState": "ノートがありません",
"metadataPanel": "詳細", "metadataPanel": "詳細",
@@ -173,7 +174,7 @@
"improveFailed": "改善に失敗しました", "improveFailed": "改善に失敗しました",
"transformFailed": "変換に失敗しました", "transformFailed": "変換に失敗しました",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "ピン留め解除", "unpinned": "Note unpinned",
"redoShortcut": "やり直し (Ctrl+Y)", "redoShortcut": "やり直し (Ctrl+Y)",
"undoShortcut": "元に戻す (Ctrl+Z)", "undoShortcut": "元に戻す (Ctrl+Z)",
"reorderTabs": "タブを並べ替え", "reorderTabs": "タブを並べ替え",
@@ -751,7 +752,7 @@
"downloadFailed": "ダウンロードに失敗しました" "downloadFailed": "ダウンロードに失敗しました"
}, },
"nav": { "nav": {
"home": "ホーム", "home": "Home",
"notes": "ノート", "notes": "ノート",
"notebooks": "ノートブック", "notebooks": "ノートブック",
"generalNotes": "一般ノート", "generalNotes": "一般ノート",
@@ -761,7 +762,7 @@
"aiSettings": "AI設定", "aiSettings": "AI設定",
"logout": "ログアウト", "logout": "ログアウト",
"login": "ログイン", "login": "ログイン",
"adminDashboard": "管理ダッシュボード", "adminDashboard": "Admin Dashboard",
"diagnostics": "診断", "diagnostics": "診断",
"trash": "ゴミ箱", "trash": "ゴミ箱",
"support": "Mementoをサポート ☕", "support": "Mementoをサポート ☕",
@@ -786,7 +787,8 @@
"proPlan": "プロプラン", "proPlan": "プロプラン",
"chat": "AIチャット", "chat": "AIチャット",
"lab": "ラボ", "lab": "ラボ",
"agents": "エージェント" "agents": "エージェント",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "設定", "title": "設定",
@@ -814,7 +816,7 @@
"security": "セキュリティ", "security": "セキュリティ",
"about": "について", "about": "について",
"version": "バージョン", "version": "バージョン",
"settingsSaved": "設定を保存しました", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "すべてのノートのベクトルを生成して、意図に基づく検索を有効にします", "semanticIndexingDescription": "すべてのノートのベクトルを生成して、意図に基づく検索を有効にします",
"profile": "プロフィール", "profile": "プロフィール",
"searchNoResults": "一致する設定が見つかりません", "searchNoResults": "一致する設定が見つかりません",
"languageAuto": "自動検出", "languageAuto": "Language set to Auto",
"emailNotifications": "メール通知", "emailNotifications": "メール通知",
"emailNotificationsDesc": "重要な通知をメールで受け取ります", "emailNotificationsDesc": "重要な通知をメールで受け取ります",
"desktopNotifications": "デスクトップ通知", "desktopNotifications": "デスクトップ通知",
"desktopNotificationsDesc": "ブラウザで通知を受け取ります", "desktopNotificationsDesc": "ブラウザで通知を受け取ります",
"notificationsDesc": "通知設定を管理します", "notificationsDesc": "通知設定を管理します",
"autoSave": "自動保存", "autoSave": "Auto-save",
"autoSaveDesc": "入力中に変更を自動的に保存する" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "プロフィール", "title": "プロフィール",
@@ -864,10 +866,10 @@
"preferredLanguage": "優先言語", "preferredLanguage": "優先言語",
"selectLanguage": "言語を選択", "selectLanguage": "言語を選択",
"languageDescription": "この言語はAI機能、コンテンツ分析、インターフェーステキストに使用されます。", "languageDescription": "この言語はAI機能、コンテンツ分析、インターフェーステキストに使用されます。",
"autoDetect": "自動検出", "autoDetect": "Auto-detect",
"updateSuccess": "プロフィールを更新しました", "updateSuccess": "プロフィールを更新しました",
"updateFailed": "プロフィールの更新に失敗しました", "updateFailed": "プロフィールの更新に失敗しました",
"languageUpdateSuccess": "言語を更新しました", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "言語の更新に失敗しました", "languageUpdateFailed": "言語の更新に失敗しました",
"profileUpdated": "プロフィールを更新しました", "profileUpdated": "プロフィールを更新しました",
"profileError": "プロフィールの更新エラー", "profileError": "プロフィールの更新エラー",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "読み込み中...", "loading": "読み込み中...",
"save": "保存", "save": "Save",
"cancel": "キャンセル", "cancel": "Cancel",
"add": "追加", "add": "追加",
"edit": "編集", "edit": "編集",
"confirm": "確認", "confirm": "確認",
@@ -984,7 +986,7 @@
"createNew": "新しいノートブックを作成", "createNew": "新しいノートブックを作成",
"createDescription": "新しいコレクションを開始して、ノート、アイデア、プロジェクトを効率的に整理しましょう。", "createDescription": "新しいコレクションを開始して、ノート、アイデア、プロジェクトを効率的に整理しましょう。",
"name": "ノートブック名", "name": "ノートブック名",
"namePlaceholder": "Q4マーケティング戦略", "namePlaceholder": "Notebook name",
"myNotebook": "マイノートブック", "myNotebook": "マイノートブック",
"saving": "保存中...", "saving": "保存中...",
"selectIcon": "アイコン", "selectIcon": "アイコン",
@@ -993,7 +995,7 @@
"creating": "作成中...", "creating": "作成中...",
"edit": "ノートブックを編集", "edit": "ノートブックを編集",
"editDescription": "ノートブックの名前、アイコン、色を変更します。", "editDescription": "ノートブックの名前、アイコン、色を変更します。",
"delete": "ノートブックを削除", "delete": "Delete",
"deleteWarning": "このノートブックを削除してもよろしいですか?ノートは一般ノートに移動されます。", "deleteWarning": "このノートブックを削除してもよろしいですか?ノートは一般ノートに移動されます。",
"deleteConfirm": "削除", "deleteConfirm": "削除",
"summary": "ノートブックの概要", "summary": "ノートブックの概要",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "固定されたノートブック — 注文は凍結されています", "pinnedFrozenTooltip": "固定されたノートブック — 注文は凍結されています",
"organizeNotebookWithAITooltip": "このノートを AI で整理する", "organizeNotebookWithAITooltip": "このノートを AI で整理する",
"assistantRequiredForSummarize": "設定で AI アシスタントをオンにして要約します", "assistantRequiredForSummarize": "設定で AI アシスタントをオンにして要約します",
"createSubnotebook": "サブノートブックを追加する" "createSubnotebook": "サブノートブックを追加する",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "{name}に移動しますか?", "title": "{name}に移動しますか?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "外観", "title": "外観",
"description": "アプリの見た目をカスタマイズ", "description": "Customize the interface",
"notesViewDescription": "ホームとノートブックでノートを表示する方法を選択します。", "notesViewDescription": "ホームとノートブックでノートを表示する方法を選択します。",
"notesViewLabel": "ノートのレイアウト", "notesViewLabel": "ノートのレイアウト",
"notesViewTabs": "タブOneNote風", "notesViewTabs": "タブOneNote風",
"notesViewMasonry": "カード(グリッド)", "notesViewMasonry": "カード(グリッド)",
"notesViewList": "一覧(雑誌)", "notesViewList": "一覧(雑誌)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "フォントファミリー", "fontFamilyLabel": "Font",
"fontFamilyDescription": "アプリ全体で使用するフォントを選択してください", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter は読みやすさに最適化されています。システムはOSのネイティブフォントを使用します", "selectFontFamily": "Inter は読みやすさに最適化されています。システムはOSのネイティブフォントを使用します",
"fontSystem": "システムデフォルト", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "ゴミ箱", "title": "ゴミ箱",
"empty": "ゴミ箱は空です", "empty": "Trash is empty",
"emptyDescription": "削除されたメモはここに表示されます", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "復元", "restore": "Restore",
"deletePermanently": "完全に削除", "deletePermanently": "完全に削除",
"noteTrashed": "メモをゴミ箱に移動しました", "noteTrashed": "メモをゴミ箱に移動しました",
"noteRestored": "メモを復元しました", "noteRestored": "メモを復元しました",
"notePermanentlyDeleted": "メモを完全に削除しました", "notePermanentlyDeleted": "メモを完全に削除しました",
"emptyTrash": "ゴミ箱を空にする", "emptyTrash": "ゴミ箱を空にする",
"emptyTrashConfirm": "ゴミ箱内のすべてのメモを完全に削除しますか?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "ゴミ箱を空にしました", "emptyTrashSuccess": "ゴミ箱を空にしました",
"permanentDelete": "完全に削除", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "このメモは完全に削除されます。この操作は取り消せません。" "permanentDeleteConfirm": "このメモは完全に削除されます。この操作は取り消せません。",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "プライバシー", "privacy": "プライバシー",
@@ -1583,7 +1598,23 @@
"chinese": "中国語", "chinese": "中国語",
"japanese": "日本語" "japanese": "日本語"
}, },
"customPlaceholder": "例えばアラビア語、ロシア語…" "customPlaceholder": "例えばアラビア語、ロシア語…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "不明", "unknown": "不明",
@@ -1591,16 +1622,16 @@
"loading": "読み込み中...", "loading": "読み込み中...",
"error": "エラー", "error": "エラー",
"success": "成功", "success": "成功",
"confirm": "確認", "confirm": "Confirm",
"cancel": "キャンセル", "cancel": "Cancel",
"close": "閉じる", "close": "閉じる",
"save": "保存", "save": "保存",
"delete": "削除", "delete": "削除",
"edit": "編集", "edit": "編集",
"add": "追加", "add": "追加",
"remove": "削除", "remove": "削除",
"search": "検索", "search": "Search...",
"noResults": "結果なし", "noResults": "No notes found",
"required": "必須", "required": "必須",
"optional": "任意" "optional": "任意"
}, },
@@ -1982,7 +2013,9 @@
"searching": "検索中...", "searching": "検索中...",
"noNotesFoundForContext": "この質問に関連するノートが見つかりませんでした。一般的な知識でお答えください。", "noNotesFoundForContext": "この質問に関連するノートが見つかりませんでした。一般的な知識でお答えください。",
"webSearch": "ウェブ検索", "webSearch": "ウェブ検索",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "ラボ", "title": "ラボ",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "오래된 것부터", "sortOldest": "오래된 것부터",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "계정 메뉴", "accountMenu": "계정 메뉴",
"profile": "윤곽", "profile": "Profile",
"signOut": "로그아웃", "signOut": "Sign out",
"sortOrder": "정렬 순서", "sortOrder": "정렬 순서",
"freezePinnedNotebook": "노트북 사이드바 순서 고정", "freezePinnedNotebook": "노트북 사이드바 순서 고정",
"unfreezePinnedNotebook": "노트북 사이드바 순서 고정 해제", "unfreezePinnedNotebook": "노트북 사이드바 순서 고정 해제",
@@ -58,14 +58,15 @@
"renameNotebook": "이름 바꾸기", "renameNotebook": "이름 바꾸기",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "사용자 지정 순서", "sortManual": "사용자 지정 순서",
"moveFailed": "노트북 이동 실패", "moveFailed": "Failed to move notebook",
"dropToRoot": "여기에 놓아 루트로 이동" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "메모", "title": "메모",
"newNote": "새 메모", "newNote": "새 메모",
"reorganize": "메모 재구성", "reorganize": "메모 재구성",
"untitled": "제목 없음", "untitled": "Untitled",
"placeholder": "메모 작성...", "placeholder": "메모 작성...",
"markdownPlaceholder": "메모 작성... (Markdown 지원)", "markdownPlaceholder": "메모 작성... (Markdown 지원)",
"titlePlaceholder": "제목", "titlePlaceholder": "제목",
@@ -81,12 +82,12 @@
"add": "추가", "add": "추가",
"adding": "추가 중...", "adding": "추가 중...",
"close": "닫기", "close": "닫기",
"confirmDelete": "이 메모를 삭제하시겠습니까?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "이 공유 메모를 나가시겠습니까?", "confirmLeaveShare": "이 공유 메모를 나가시겠습니까?",
"sharedBy": "공유자", "sharedBy": "공유자",
"sharedShort": "공유됨", "sharedShort": "공유됨",
"leaveShare": "나가기", "leaveShare": "나가기",
"delete": "삭제", "delete": "Delete",
"archive": "보관", "archive": "보관",
"unarchive": "보관 취소", "unarchive": "보관 취소",
"pin": "고정", "pin": "고정",
@@ -127,7 +128,7 @@
"duplicate": "복제", "duplicate": "복제",
"share": "공유", "share": "공유",
"showCollaborators": "공동 작업자 표시", "showCollaborators": "공동 작업자 표시",
"pinned": "고정됨", "pinned": "Note pinned",
"others": "기타", "others": "기타",
"noNotes": "메모 없음", "noNotes": "메모 없음",
"noNotesFound": "메모를 찾을 수 없습니다", "noNotesFound": "메모를 찾을 수 없습니다",
@@ -159,8 +160,8 @@
"recent": "최근", "recent": "최근",
"addNote": "메모 추가", "addNote": "메모 추가",
"readMore": "더 읽기", "readMore": "더 읽기",
"remove": "제거", "remove": "Remove",
"dragToReorder": "드래그하여 재정렬", "dragToReorder": "Drag to reorder",
"more": "더 보기", "more": "더 보기",
"emptyState": "메모가 없습니다", "emptyState": "메모가 없습니다",
"metadataPanel": "세부", "metadataPanel": "세부",
@@ -173,7 +174,7 @@
"improveFailed": "개선 실패", "improveFailed": "개선 실패",
"transformFailed": "변환 실패", "transformFailed": "변환 실패",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "고정 해제됨", "unpinned": "Note unpinned",
"redoShortcut": "다시 실행 (Ctrl+Y)", "redoShortcut": "다시 실행 (Ctrl+Y)",
"undoShortcut": "실행 취소 (Ctrl+Z)", "undoShortcut": "실행 취소 (Ctrl+Z)",
"reorderTabs": "탭 재정렬", "reorderTabs": "탭 재정렬",
@@ -751,7 +752,7 @@
"downloadFailed": "다운로드 실패" "downloadFailed": "다운로드 실패"
}, },
"nav": { "nav": {
"home": "", "home": "Home",
"notes": "메모", "notes": "메모",
"notebooks": "노트북", "notebooks": "노트북",
"generalNotes": "일반 메모", "generalNotes": "일반 메모",
@@ -761,7 +762,7 @@
"aiSettings": "AI 설정", "aiSettings": "AI 설정",
"logout": "로그아웃", "logout": "로그아웃",
"login": "로그인", "login": "로그인",
"adminDashboard": "관리자 대시보드", "adminDashboard": "Admin Dashboard",
"diagnostics": "진단", "diagnostics": "진단",
"trash": "휴지통", "trash": "휴지통",
"support": "Memento 지원하기 ☕", "support": "Memento 지원하기 ☕",
@@ -786,7 +787,8 @@
"proPlan": "프로 플랜", "proPlan": "프로 플랜",
"chat": "AI 채팅", "chat": "AI 채팅",
"lab": "랩", "lab": "랩",
"agents": "에이전트" "agents": "에이전트",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "설정", "title": "설정",
@@ -814,7 +816,7 @@
"security": "보안", "security": "보안",
"about": "정보", "about": "정보",
"version": "버전", "version": "버전",
"settingsSaved": "설정이 저장되었습니다", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "의도 기반 검색을 활성화하기 위해 모든 노트의 벡터를 생성합니다", "semanticIndexingDescription": "의도 기반 검색을 활성화하기 위해 모든 노트의 벡터를 생성합니다",
"profile": "프로필", "profile": "프로필",
"searchNoResults": "일치하는 설정을 찾을 수 없습니다", "searchNoResults": "일치하는 설정을 찾을 수 없습니다",
"languageAuto": "자동 감지", "languageAuto": "Language set to Auto",
"emailNotifications": "이메일 알림", "emailNotifications": "이메일 알림",
"emailNotificationsDesc": "이메일로 중요한 알림을 받습니다", "emailNotificationsDesc": "이메일로 중요한 알림을 받습니다",
"desktopNotifications": "데스크톱 알림", "desktopNotifications": "데스크톱 알림",
"desktopNotificationsDesc": "브라우저에서 알림을 받습니다", "desktopNotificationsDesc": "브라우저에서 알림을 받습니다",
"notificationsDesc": "알림 환경설정을 관리합니다", "notificationsDesc": "알림 환경설정을 관리합니다",
"autoSave": "자동 저장", "autoSave": "Auto-save",
"autoSaveDesc": "입력하는 동안 변경 사항을 자동으로 저장" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "프로필", "title": "프로필",
@@ -864,10 +866,10 @@
"preferredLanguage": "선호 언어", "preferredLanguage": "선호 언어",
"selectLanguage": "언어 선택", "selectLanguage": "언어 선택",
"languageDescription": "이 언어는 AI 기능, 콘텐츠 분석 및 인터페이스 텍스트에 사용됩니다.", "languageDescription": "이 언어는 AI 기능, 콘텐츠 분석 및 인터페이스 텍스트에 사용됩니다.",
"autoDetect": "자동 감지", "autoDetect": "Auto-detect",
"updateSuccess": "프로필이 업데이트되었습니다", "updateSuccess": "프로필이 업데이트되었습니다",
"updateFailed": "프로필 업데이트 실패", "updateFailed": "프로필 업데이트 실패",
"languageUpdateSuccess": "언어가 업데이트되었습니다", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "언어 업데이트 실패", "languageUpdateFailed": "언어 업데이트 실패",
"profileUpdated": "프로필이 업데이트되었습니다", "profileUpdated": "프로필이 업데이트되었습니다",
"profileError": "프로필 업데이트 오류", "profileError": "프로필 업데이트 오류",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "로딩 중...", "loading": "로딩 중...",
"save": "저장", "save": "Save",
"cancel": "취소", "cancel": "Cancel",
"add": "추가", "add": "추가",
"edit": "편집", "edit": "편집",
"confirm": "확인", "confirm": "확인",
@@ -984,7 +986,7 @@
"createNew": "새 노트북 만들기", "createNew": "새 노트북 만들기",
"createDescription": "메모, 아이디어, 프로젝트를 효율적으로 정리할 새 컬렉션을 시작하세요.", "createDescription": "메모, 아이디어, 프로젝트를 효율적으로 정리할 새 컬렉션을 시작하세요.",
"name": "노트북 이름", "name": "노트북 이름",
"namePlaceholder": "예: 4분기 마케팅 전략", "namePlaceholder": "Notebook name",
"myNotebook": "내 노트북", "myNotebook": "내 노트북",
"saving": "저장 중...", "saving": "저장 중...",
"selectIcon": "아이콘", "selectIcon": "아이콘",
@@ -993,7 +995,7 @@
"creating": "생성 중...", "creating": "생성 중...",
"edit": "노트북 편집", "edit": "노트북 편집",
"editDescription": "노트북의 이름, 아이콘, 색상을 변경합니다.", "editDescription": "노트북의 이름, 아이콘, 색상을 변경합니다.",
"delete": "노트북 삭제", "delete": "Delete",
"deleteWarning": "이 노트북을 삭제하시겠습니까? 메모는 일반 메모로 이동됩니다.", "deleteWarning": "이 노트북을 삭제하시겠습니까? 메모는 일반 메모로 이동됩니다.",
"deleteConfirm": "삭제", "deleteConfirm": "삭제",
"summary": "노트북 요약", "summary": "노트북 요약",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "고정된 노트북 - 주문이 동결됨", "pinnedFrozenTooltip": "고정된 노트북 - 주문이 동결됨",
"organizeNotebookWithAITooltip": "AI로 이 노트북을 정리하세요", "organizeNotebookWithAITooltip": "AI로 이 노트북을 정리하세요",
"assistantRequiredForSummarize": "요약하려면 설정에서 AI 도우미를 켜세요.", "assistantRequiredForSummarize": "요약하려면 설정에서 AI 도우미를 켜세요.",
"createSubnotebook": "하위 노트북 추가" "createSubnotebook": "하위 노트북 추가",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "{name}(으)로 이동하시겠습니까?", "title": "{name}(으)로 이동하시겠습니까?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "모양", "title": "모양",
"description": "앱의 모양 사용자 지정", "description": "Customize the interface",
"notesViewDescription": "홈 및 노트북에서 메모가 표시되는 방식을 선택하세요.", "notesViewDescription": "홈 및 노트북에서 메모가 표시되는 방식을 선택하세요.",
"notesViewLabel": "메모 레이아웃", "notesViewLabel": "메모 레이아웃",
"notesViewTabs": "탭 (OneNote 스타일)", "notesViewTabs": "탭 (OneNote 스타일)",
"notesViewMasonry": "카드 (그리드)", "notesViewMasonry": "카드 (그리드)",
"notesViewList": "목록(잡지)", "notesViewList": "목록(잡지)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "글꼴 패밀리", "fontFamilyLabel": "Font",
"fontFamilyDescription": "앱 전체에서 사용할 글꼴을 선택하세요", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter는 가독성에 최적화되어 있으며, 시스템은 OS 기본 글꼴을 사용합니다", "selectFontFamily": "Inter는 가독성에 최적화되어 있으며, 시스템은 OS 기본 글꼴을 사용합니다",
"fontSystem": "시스템 기본 글꼴", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "휴지통", "title": "휴지통",
"empty": "휴지통이 비어 있습니다", "empty": "Trash is empty",
"emptyDescription": "삭제된 메모가 여기에 표시됩니다", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "복원", "restore": "Restore",
"deletePermanently": "영구 삭제", "deletePermanently": "영구 삭제",
"noteTrashed": "메모가 휴지통으로 이동되었습니다", "noteTrashed": "메모가 휴지통으로 이동되었습니다",
"noteRestored": "메모가 복원되었습니다", "noteRestored": "메모가 복원되었습니다",
"notePermanentlyDeleted": "메모가 영구 삭제되었습니다", "notePermanentlyDeleted": "메모가 영구 삭제되었습니다",
"emptyTrash": "휴지통 비우기", "emptyTrash": "휴지통 비우기",
"emptyTrashConfirm": "휴지통의 모든 메모를 영구 삭제하시겠습니까?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "휴지통이 비워졌습니다", "emptyTrashSuccess": "휴지통이 비워졌습니다",
"permanentDelete": "영구 삭제", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "이 메모는 영구 삭제됩니다. 이 작업은 되돌릴 수 없습니다." "permanentDeleteConfirm": "이 메모는 영구 삭제됩니다. 이 작업은 되돌릴 수 없습니다.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "개인정보", "privacy": "개인정보",
@@ -1583,7 +1598,23 @@
"chinese": "중국인", "chinese": "중국인",
"japanese": "일본어" "japanese": "일본어"
}, },
"customPlaceholder": "예를 들어 아랍어, 러시아어…" "customPlaceholder": "예를 들어 아랍어, 러시아어…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "알 수 없음", "unknown": "알 수 없음",
@@ -1591,16 +1622,16 @@
"loading": "로딩 중...", "loading": "로딩 중...",
"error": "오류", "error": "오류",
"success": "성공", "success": "성공",
"confirm": "확인", "confirm": "Confirm",
"cancel": "취소", "cancel": "Cancel",
"close": "닫기", "close": "닫기",
"save": "저장", "save": "저장",
"delete": "삭제", "delete": "삭제",
"edit": "편집", "edit": "편집",
"add": "추가", "add": "추가",
"remove": "제거", "remove": "제거",
"search": "검색", "search": "Search...",
"noResults": "결과 없음", "noResults": "No notes found",
"required": "필수", "required": "필수",
"optional": "선택" "optional": "선택"
}, },
@@ -1982,7 +2013,9 @@
"searching": "검색 중...", "searching": "검색 중...",
"noNotesFoundForContext": "이 질문에 대한 관련 노트를 찾을 수 없습니다. 일반 지식으로 답변하세요.", "noNotesFoundForContext": "이 질문에 대한 관련 노트를 찾을 수 없습니다. 일반 지식으로 답변하세요.",
"webSearch": "웹 검색", "webSearch": "웹 검색",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "랩", "title": "랩",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "Oudste eerst", "sortOldest": "Oudste eerst",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "Accountmenu", "accountMenu": "Accountmenu",
"profile": "Profiel", "profile": "Profile",
"signOut": "Meld u af", "signOut": "Sign out",
"sortOrder": "Sorteervolgorde", "sortOrder": "Sorteervolgorde",
"freezePinnedNotebook": "Zet de volgorde van de notitieboekjezijbalk vast", "freezePinnedNotebook": "Zet de volgorde van de notitieboekjezijbalk vast",
"unfreezePinnedNotebook": "Maak de volgorde van de notitieblokzijbalk los", "unfreezePinnedNotebook": "Maak de volgorde van de notitieblokzijbalk los",
@@ -58,14 +58,15 @@
"renameNotebook": "Hernoemen", "renameNotebook": "Hernoemen",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Vrije volgorde", "sortManual": "Vrije volgorde",
"moveFailed": "Kan notitieboek niet verplaatsen", "moveFailed": "Failed to move notebook",
"dropToRoot": "Hier loslaten om naar root te verplaatsen" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Notities", "title": "Notities",
"newNote": "Nieuwe notitie", "newNote": "Nieuwe notitie",
"reorganize": "Notities reorganiseren", "reorganize": "Notities reorganiseren",
"untitled": "Naamloos", "untitled": "Untitled",
"placeholder": "Maak een notitie...", "placeholder": "Maak een notitie...",
"markdownPlaceholder": "Maak een notitie... (Markdown ondersteund)", "markdownPlaceholder": "Maak een notitie... (Markdown ondersteund)",
"titlePlaceholder": "Titel", "titlePlaceholder": "Titel",
@@ -81,12 +82,12 @@
"add": "Toevoegen", "add": "Toevoegen",
"adding": "Toevoegen...", "adding": "Toevoegen...",
"close": "Sluiten", "close": "Sluiten",
"confirmDelete": "Weet u zeker dat u deze notitie wilt verwijderen?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "Weet u zeker dat u deze gedeelde notitie wilt verlaten?", "confirmLeaveShare": "Weet u zeker dat u deze gedeelde notitie wilt verlaten?",
"sharedBy": "Gedeeld door", "sharedBy": "Gedeeld door",
"sharedShort": "Gedeeld", "sharedShort": "Gedeeld",
"leaveShare": "Verlaten", "leaveShare": "Verlaten",
"delete": "Verwijderen", "delete": "Delete",
"archive": "Archiveren", "archive": "Archiveren",
"unarchive": "Dearchiveren", "unarchive": "Dearchiveren",
"pin": "Vastzetten", "pin": "Vastzetten",
@@ -127,7 +128,7 @@
"duplicate": "Dupliceren", "duplicate": "Dupliceren",
"share": "Delen", "share": "Delen",
"showCollaborators": "Medewerkers weergeven", "showCollaborators": "Medewerkers weergeven",
"pinned": "Vastgezet", "pinned": "Note pinned",
"others": "Overig", "others": "Overig",
"noNotes": "Geen notities", "noNotes": "Geen notities",
"noNotesFound": "Geen notities gevonden", "noNotesFound": "Geen notities gevonden",
@@ -159,8 +160,8 @@
"recent": "Recent", "recent": "Recent",
"addNote": "Notitie toevoegen", "addNote": "Notitie toevoegen",
"readMore": "Lees meer", "readMore": "Lees meer",
"remove": "Verwijderen", "remove": "Remove",
"dragToReorder": "Sleep om te herschikken", "dragToReorder": "Drag to reorder",
"more": "Meer", "more": "Meer",
"emptyState": "Geen notities hier", "emptyState": "Geen notities hier",
"metadataPanel": "Details", "metadataPanel": "Details",
@@ -173,7 +174,7 @@
"improveFailed": "Verbeteren mislukt", "improveFailed": "Verbeteren mislukt",
"transformFailed": "Transformeren mislukt", "transformFailed": "Transformeren mislukt",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "Losgemaakt", "unpinned": "Note unpinned",
"redoShortcut": "Opnieuw (Ctrl+Y)", "redoShortcut": "Opnieuw (Ctrl+Y)",
"undoShortcut": "Ongedaan maken (Ctrl+Z)", "undoShortcut": "Ongedaan maken (Ctrl+Z)",
"reorderTabs": "Tabblad herschikken", "reorderTabs": "Tabblad herschikken",
@@ -761,7 +762,7 @@
"aiSettings": "AI-instellingen", "aiSettings": "AI-instellingen",
"logout": "Uitloggen", "logout": "Uitloggen",
"login": "Inloggen", "login": "Inloggen",
"adminDashboard": "Beheerdashboard", "adminDashboard": "Admin Dashboard",
"diagnostics": "Diagnostiek", "diagnostics": "Diagnostiek",
"trash": "Prullenbak", "trash": "Prullenbak",
"support": "Memento ondersteunen ☕", "support": "Memento ondersteunen ☕",
@@ -786,7 +787,8 @@
"proPlan": "Pro Plan", "proPlan": "Pro Plan",
"chat": "AI Chat", "chat": "AI Chat",
"lab": "Het Lab", "lab": "Het Lab",
"agents": "Agents" "agents": "Agents",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Instellingen", "title": "Instellingen",
@@ -814,7 +816,7 @@
"security": "Beveiliging", "security": "Beveiliging",
"about": "Over", "about": "Over",
"version": "Versie", "version": "Versie",
"settingsSaved": "Instellingen opgeslagen", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Genereer vectoren voor alle notities om intentiegericht zoeken mogelijk te maken", "semanticIndexingDescription": "Genereer vectoren voor alle notities om intentiegericht zoeken mogelijk te maken",
"profile": "Profiel", "profile": "Profiel",
"searchNoResults": "Geen resultaten gevonden", "searchNoResults": "Geen resultaten gevonden",
"languageAuto": "Automatisch", "languageAuto": "Language set to Auto",
"emailNotifications": "E-mailmeldingen", "emailNotifications": "E-mailmeldingen",
"emailNotificationsDesc": "Ontvang belangrijke meldingen per e-mail", "emailNotificationsDesc": "Ontvang belangrijke meldingen per e-mail",
"desktopNotifications": "Bureaubladmeldingen", "desktopNotifications": "Bureaubladmeldingen",
"desktopNotificationsDesc": "Ontvang meldingen in uw browser", "desktopNotificationsDesc": "Ontvang meldingen in uw browser",
"notificationsDesc": "Beheer uw meldingsvoorkeuren", "notificationsDesc": "Beheer uw meldingsvoorkeuren",
"autoSave": "Automatisch opslaan", "autoSave": "Auto-save",
"autoSaveDesc": "Sla wijzigingen automatisch op tijdens het typen" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "Profiel", "title": "Profiel",
@@ -864,10 +866,10 @@
"preferredLanguage": "Voorkeurstaal", "preferredLanguage": "Voorkeurstaal",
"selectLanguage": "Selecteer een taal", "selectLanguage": "Selecteer een taal",
"languageDescription": "Deze taal wordt gebruikt voor AI-functies, inhoudsanalyse en interfacetekst.", "languageDescription": "Deze taal wordt gebruikt voor AI-functies, inhoudsanalyse en interfacetekst.",
"autoDetect": "Automatisch detecteren", "autoDetect": "Auto-detect",
"updateSuccess": "Profiel bijgewerkt", "updateSuccess": "Profiel bijgewerkt",
"updateFailed": "Profiel bijwerken mislukt", "updateFailed": "Profiel bijwerken mislukt",
"languageUpdateSuccess": "Taal succesvol bijgewerkt", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Taal bijwerken mislukt", "languageUpdateFailed": "Taal bijwerken mislukt",
"profileUpdated": "Profiel bijgewerkt", "profileUpdated": "Profiel bijgewerkt",
"profileError": "Fout bij bijwerken profiel", "profileError": "Fout bij bijwerken profiel",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "Laden...", "loading": "Laden...",
"save": "Opslaan", "save": "Save",
"cancel": "Annuleren", "cancel": "Cancel",
"add": "Toevoegen", "add": "Toevoegen",
"edit": "Bewerken", "edit": "Bewerken",
"confirm": "Bevestigen", "confirm": "Bevestigen",
@@ -984,7 +986,7 @@
"createNew": "Nieuw notitieboek maken", "createNew": "Nieuw notitieboek maken",
"createDescription": "Start een nieuwe verzameling om uw notities, ideeën en projecten efficiënt te organiseren.", "createDescription": "Start een nieuwe verzameling om uw notities, ideeën en projecten efficiënt te organiseren.",
"name": "Naam van notitieboek", "name": "Naam van notitieboek",
"namePlaceholder": "bijv. Q4 Marketingstrategie", "namePlaceholder": "Notebook name",
"myNotebook": "Mijn notitieboek", "myNotebook": "Mijn notitieboek",
"saving": "Opslaan...", "saving": "Opslaan...",
"selectIcon": "Icoon", "selectIcon": "Icoon",
@@ -993,7 +995,7 @@
"creating": "Maken...", "creating": "Maken...",
"edit": "Notitieboek bewerken", "edit": "Notitieboek bewerken",
"editDescription": "Wijzig de naam, het pictogram en de kleur van uw notitieboek.", "editDescription": "Wijzig de naam, het pictogram en de kleur van uw notitieboek.",
"delete": "Notitieboek verwijderen", "delete": "Delete",
"deleteWarning": "Weet u zeker dat u dit notitieboek wilt verwijderen? Notities worden verplaatst naar Algemene notities.", "deleteWarning": "Weet u zeker dat u dit notitieboek wilt verwijderen? Notities worden verplaatst naar Algemene notities.",
"deleteConfirm": "Verwijderen", "deleteConfirm": "Verwijderen",
"summary": "Samenvatting van notitieboek", "summary": "Samenvatting van notitieboek",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "Vastgezet notitieboekje — bestelling bevroren", "pinnedFrozenTooltip": "Vastgezet notitieboekje — bestelling bevroren",
"organizeNotebookWithAITooltip": "Organiseer dit notitieboekje met AI", "organizeNotebookWithAITooltip": "Organiseer dit notitieboekje met AI",
"assistantRequiredForSummarize": "Schakel AI Assistant in de instellingen in om samen te vatten", "assistantRequiredForSummarize": "Schakel AI Assistant in de instellingen in om samen te vatten",
"createSubnotebook": "Subnotitieblok toevoegen" "createSubnotebook": "Subnotitieblok toevoegen",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Verplaatsen naar {name}?", "title": "Verplaatsen naar {name}?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "Weergave", "title": "Weergave",
"description": "Pas aan hoe de app eruit ziet", "description": "Customize the interface",
"notesViewDescription": "Kies hoe notities worden weergegeven op de startpagina en in notitieboeken.", "notesViewDescription": "Kies hoe notities worden weergegeven op de startpagina en in notitieboeken.",
"notesViewLabel": "Notities weergave", "notesViewLabel": "Notities weergave",
"notesViewTabs": "Tabbladen (OneNote-stijl)", "notesViewTabs": "Tabbladen (OneNote-stijl)",
"notesViewMasonry": "Kaarten (raster)", "notesViewMasonry": "Kaarten (raster)",
"notesViewList": "Lijst (tijdschrift)", "notesViewList": "Lijst (tijdschrift)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Lettertypefamilie", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Kies het lettertype dat in de hele app wordt gebruikt", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter is geoptimaliseerd voor leesbaarheid, Systeem gebruikt het native lettertype van uw besturingssysteem", "selectFontFamily": "Inter is geoptimaliseerd voor leesbaarheid, Systeem gebruikt het native lettertype van uw besturingssysteem",
"fontSystem": "Standaard systeemlettertype", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "Prullenbak", "title": "Prullenbak",
"empty": "De prullenbak is leeg", "empty": "Trash is empty",
"emptyDescription": "Verwijderde notities verschijnen hier", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Herstellen", "restore": "Restore",
"deletePermanently": "Definitief verwijderen", "deletePermanently": "Definitief verwijderen",
"noteTrashed": "Notitie naar prullenbak verplaatst", "noteTrashed": "Notitie naar prullenbak verplaatst",
"noteRestored": "Notitie hersteld", "noteRestored": "Notitie hersteld",
"notePermanentlyDeleted": "Notitie definitief verwijderd", "notePermanentlyDeleted": "Notitie definitief verwijderd",
"emptyTrash": "Prullenbak legen", "emptyTrash": "Prullenbak legen",
"emptyTrashConfirm": "Alle notities in de prullenbak definitief verwijderen?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Prullenbak geleegd", "emptyTrashSuccess": "Prullenbak geleegd",
"permanentDelete": "Definitief verwijderen", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "Deze notitie wordt definitief verwijderd. Deze actie kan niet ongedaan worden gemaakt." "permanentDeleteConfirm": "Deze notitie wordt definitief verwijderd. Deze actie kan niet ongedaan worden gemaakt.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Privacy", "privacy": "Privacy",
@@ -1583,7 +1598,23 @@
"chinese": "Chinese", "chinese": "Chinese",
"japanese": "Japanse" "japanese": "Japanse"
}, },
"customPlaceholder": "bijv. Arabisch, Russisch…" "customPlaceholder": "bijv. Arabisch, Russisch…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Onbekend", "unknown": "Onbekend",
@@ -1591,16 +1622,16 @@
"loading": "Laden...", "loading": "Laden...",
"error": "Fout", "error": "Fout",
"success": "Succes", "success": "Succes",
"confirm": "Bevestigen", "confirm": "Confirm",
"cancel": "Annuleren", "cancel": "Cancel",
"close": "Sluiten", "close": "Sluiten",
"save": "Opslaan", "save": "Opslaan",
"delete": "Verwijderen", "delete": "Verwijderen",
"edit": "Bewerken", "edit": "Bewerken",
"add": "Toevoegen", "add": "Toevoegen",
"remove": "Verwijderen", "remove": "Verwijderen",
"search": "Zoeken", "search": "Search...",
"noResults": "Geen resultaten", "noResults": "No notes found",
"required": "Vereist", "required": "Vereist",
"optional": "Optioneel" "optional": "Optioneel"
}, },
@@ -1982,7 +2013,9 @@
"searching": "Zoeken...", "searching": "Zoeken...",
"noNotesFoundForContext": "Geen relevante notities gevonden voor deze vraag. Beantwoord met je algemene kennis.", "noNotesFoundForContext": "Geen relevante notities gevonden voor deze vraag. Beantwoord met je algemene kennis.",
"webSearch": "Zoeken op het web", "webSearch": "Zoeken op het web",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "Het Lab", "title": "Het Lab",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "Najpierw najstarszy", "sortOldest": "Najpierw najstarszy",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "Menu konta", "accountMenu": "Menu konta",
"profile": "Profil", "profile": "Profile",
"signOut": "Wyloguj się", "signOut": "Sign out",
"sortOrder": "Kolejność sortowania", "sortOrder": "Kolejność sortowania",
"freezePinnedNotebook": "Przypnij kolejność paska bocznego notatnika", "freezePinnedNotebook": "Przypnij kolejność paska bocznego notatnika",
"unfreezePinnedNotebook": "Odepnij zamówienie na pasku bocznym notatnika", "unfreezePinnedNotebook": "Odepnij zamówienie na pasku bocznym notatnika",
@@ -58,14 +58,15 @@
"renameNotebook": "Przemianować", "renameNotebook": "Przemianować",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Dowolna kolejność", "sortManual": "Dowolna kolejność",
"moveFailed": "Nie udało się przenieść notatnika", "moveFailed": "Failed to move notebook",
"dropToRoot": "Upuść tutaj, aby przenieść do roota" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Notatki", "title": "Notatki",
"newNote": "Nowa notatka", "newNote": "Nowa notatka",
"reorganize": "Reorganizuj notatki", "reorganize": "Reorganizuj notatki",
"untitled": "Bez tytułu", "untitled": "Untitled",
"placeholder": "Zrób notatkę...", "placeholder": "Zrób notatkę...",
"markdownPlaceholder": "Zrób notatkę... (Markdown obsługiwany)", "markdownPlaceholder": "Zrób notatkę... (Markdown obsługiwany)",
"titlePlaceholder": "Tytuł", "titlePlaceholder": "Tytuł",
@@ -81,12 +82,12 @@
"add": "Dodaj", "add": "Dodaj",
"adding": "Dodawanie...", "adding": "Dodawanie...",
"close": "Zamknij", "close": "Zamknij",
"confirmDelete": "Czy na pewno chcesz usunąć tę notatkę?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "Czy na pewno chcesz opuścić tę udostępnioną notatkę?", "confirmLeaveShare": "Czy na pewno chcesz opuścić tę udostępnioną notatkę?",
"sharedBy": "Udostępnione przez", "sharedBy": "Udostępnione przez",
"sharedShort": "Wspólny", "sharedShort": "Wspólny",
"leaveShare": "Opuść", "leaveShare": "Opuść",
"delete": "Usuń", "delete": "Delete",
"archive": "Archiwizuj", "archive": "Archiwizuj",
"unarchive": "Przywróć z archiwum", "unarchive": "Przywróć z archiwum",
"pin": "Przypnij", "pin": "Przypnij",
@@ -127,7 +128,7 @@
"duplicate": "Duplikuj", "duplicate": "Duplikuj",
"share": "Udostępnij", "share": "Udostępnij",
"showCollaborators": "Pokaż współpracowników", "showCollaborators": "Pokaż współpracowników",
"pinned": "Przypięte", "pinned": "Note pinned",
"others": "Inne", "others": "Inne",
"noNotes": "Brak notatek", "noNotes": "Brak notatek",
"noNotesFound": "Nie znaleziono notatek", "noNotesFound": "Nie znaleziono notatek",
@@ -159,8 +160,8 @@
"recent": "Ostatnie", "recent": "Ostatnie",
"addNote": "Dodaj notatkę", "addNote": "Dodaj notatkę",
"readMore": "Czytaj więcej", "readMore": "Czytaj więcej",
"remove": "Usuń", "remove": "Remove",
"dragToReorder": "Przeciągnij, aby zmienić kolejność", "dragToReorder": "Drag to reorder",
"more": "Więcej", "more": "Więcej",
"emptyState": "Brak notatek tutaj", "emptyState": "Brak notatek tutaj",
"metadataPanel": "Bliższe dane", "metadataPanel": "Bliższe dane",
@@ -173,7 +174,7 @@
"improveFailed": "Ulepszenie nie powiodło się", "improveFailed": "Ulepszenie nie powiodło się",
"transformFailed": "Przekształcenie nie powiodło się", "transformFailed": "Przekształcenie nie powiodło się",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "Odepnięta", "unpinned": "Note unpinned",
"redoShortcut": "Ponów (Ctrl+Y)", "redoShortcut": "Ponów (Ctrl+Y)",
"undoShortcut": "Cofnij (Ctrl+Z)", "undoShortcut": "Cofnij (Ctrl+Z)",
"reorderTabs": "Zmień kolejność kart", "reorderTabs": "Zmień kolejność kart",
@@ -751,7 +752,7 @@
"downloadFailed": "Pobieranie nie powiodło się" "downloadFailed": "Pobieranie nie powiodło się"
}, },
"nav": { "nav": {
"home": "Strona główna", "home": "Home",
"notes": "Notatki", "notes": "Notatki",
"notebooks": "Notatniki", "notebooks": "Notatniki",
"generalNotes": "Notatki ogólne", "generalNotes": "Notatki ogólne",
@@ -761,7 +762,7 @@
"aiSettings": "Ustawienia AI", "aiSettings": "Ustawienia AI",
"logout": "Wyloguj", "logout": "Wyloguj",
"login": "Zaloguj", "login": "Zaloguj",
"adminDashboard": "Panel administracyjny", "adminDashboard": "Admin Dashboard",
"diagnostics": "Diagnostyka", "diagnostics": "Diagnostyka",
"trash": "Kosz", "trash": "Kosz",
"support": "Wspomóż Memento ☕", "support": "Wspomóż Memento ☕",
@@ -786,7 +787,8 @@
"proPlan": "Plan Pro", "proPlan": "Plan Pro",
"chat": "Czat AI", "chat": "Czat AI",
"lab": "Laboratorium", "lab": "Laboratorium",
"agents": "Agenci" "agents": "Agenci",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Ustawienia", "title": "Ustawienia",
@@ -814,7 +816,7 @@
"security": "Bezpieczeństwo", "security": "Bezpieczeństwo",
"about": "O aplikacji", "about": "O aplikacji",
"version": "Wersja", "version": "Wersja",
"settingsSaved": "Ustawienia zapisane", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Generuj wektory dla wszystkich notatek, aby umożliwić wyszukiwanie oparte na intencji", "semanticIndexingDescription": "Generuj wektory dla wszystkich notatek, aby umożliwić wyszukiwanie oparte na intencji",
"profile": "Profil", "profile": "Profil",
"searchNoResults": "Nie znaleziono wyników", "searchNoResults": "Nie znaleziono wyników",
"languageAuto": "Automatyczny", "languageAuto": "Language set to Auto",
"emailNotifications": "Powiadomienia e-mail", "emailNotifications": "Powiadomienia e-mail",
"emailNotificationsDesc": "Otrzymuj ważne powiadomienia przez e-mail", "emailNotificationsDesc": "Otrzymuj ważne powiadomienia przez e-mail",
"desktopNotifications": "Powiadomienia na pulpicie", "desktopNotifications": "Powiadomienia na pulpicie",
"desktopNotificationsDesc": "Otrzymuj powiadomienia w przeglądarce", "desktopNotificationsDesc": "Otrzymuj powiadomienia w przeglądarce",
"notificationsDesc": "Zarządzaj swoimi preferencjami powiadomień", "notificationsDesc": "Zarządzaj swoimi preferencjami powiadomień",
"autoSave": "Automatyczne zapisywanie", "autoSave": "Auto-save",
"autoSaveDesc": "Automatycznie zapisuj zmiany podczas pisania" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "Profil", "title": "Profil",
@@ -864,10 +866,10 @@
"preferredLanguage": "Preferowany język", "preferredLanguage": "Preferowany język",
"selectLanguage": "Wybierz język", "selectLanguage": "Wybierz język",
"languageDescription": "Ten język będzie używany do funkcji AI, analizy treści i tekstu interfejsu.", "languageDescription": "Ten język będzie używany do funkcji AI, analizy treści i tekstu interfejsu.",
"autoDetect": "Automatyczne wykrywanie", "autoDetect": "Auto-detect",
"updateSuccess": "Profil zaktualizowany", "updateSuccess": "Profil zaktualizowany",
"updateFailed": "Nie udało się zaktualizować profilu", "updateFailed": "Nie udało się zaktualizować profilu",
"languageUpdateSuccess": "Język zaktualizowany pomyślnie", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Nie udało się zaktualizować języka", "languageUpdateFailed": "Nie udało się zaktualizować języka",
"profileUpdated": "Profil zaktualizowany", "profileUpdated": "Profil zaktualizowany",
"profileError": "Błąd aktualizacji profilu", "profileError": "Błąd aktualizacji profilu",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "Ładowanie...", "loading": "Ładowanie...",
"save": "Zapisz", "save": "Save",
"cancel": "Anuluj", "cancel": "Cancel",
"add": "Dodaj", "add": "Dodaj",
"edit": "Edytuj", "edit": "Edytuj",
"confirm": "Potwierdź", "confirm": "Potwierdź",
@@ -984,7 +986,7 @@
"createNew": "Utwórz nowy notatnik", "createNew": "Utwórz nowy notatnik",
"createDescription": "Rozpocznij nową kolekcję, aby efektywnie organizować swoje notatki, pomysły i projekty.", "createDescription": "Rozpocznij nową kolekcję, aby efektywnie organizować swoje notatki, pomysły i projekty.",
"name": "Nazwa notatnika", "name": "Nazwa notatnika",
"namePlaceholder": "np. Strategia marketingowa Q4", "namePlaceholder": "Notebook name",
"myNotebook": "Mój notatnik", "myNotebook": "Mój notatnik",
"saving": "Zapisywanie...", "saving": "Zapisywanie...",
"selectIcon": "Ikona", "selectIcon": "Ikona",
@@ -993,7 +995,7 @@
"creating": "Tworzenie...", "creating": "Tworzenie...",
"edit": "Edytuj notatnik", "edit": "Edytuj notatnik",
"editDescription": "Zmień nazwę, ikonę i kolor swojego notatnika.", "editDescription": "Zmień nazwę, ikonę i kolor swojego notatnika.",
"delete": "Usuń notatnik", "delete": "Delete",
"deleteWarning": "Czy na pewno chcesz usunąć ten notatnik? Notatki zostaną przeniesione do Notatek ogólnych.", "deleteWarning": "Czy na pewno chcesz usunąć ten notatnik? Notatki zostaną przeniesione do Notatek ogólnych.",
"deleteConfirm": "Usuń", "deleteConfirm": "Usuń",
"summary": "Podsumowanie notatnika", "summary": "Podsumowanie notatnika",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "Przypięty notatnik — zamówienie zamrożone", "pinnedFrozenTooltip": "Przypięty notatnik — zamówienie zamrożone",
"organizeNotebookWithAITooltip": "Uporządkuj ten notatnik za pomocą sztucznej inteligencji", "organizeNotebookWithAITooltip": "Uporządkuj ten notatnik za pomocą sztucznej inteligencji",
"assistantRequiredForSummarize": "Aby podsumować, włącz AI Assistant w ustawieniach", "assistantRequiredForSummarize": "Aby podsumować, włącz AI Assistant w ustawieniach",
"createSubnotebook": "Dodaj podnotatnik" "createSubnotebook": "Dodaj podnotatnik",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Przenieść do {name}?", "title": "Przenieść do {name}?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "Wygląd", "title": "Wygląd",
"description": "Dostosuj wygląd aplikacji", "description": "Customize the interface",
"notesViewDescription": "Wybierz sposób wyświetlania notatek na stronie głównej i w notatnikach.", "notesViewDescription": "Wybierz sposób wyświetlania notatek na stronie głównej i w notatnikach.",
"notesViewLabel": "Układ notatek", "notesViewLabel": "Układ notatek",
"notesViewTabs": "Karty (styl OneNote)", "notesViewTabs": "Karty (styl OneNote)",
"notesViewMasonry": "Karty (siatka)", "notesViewMasonry": "Karty (siatka)",
"notesViewList": "Lista (magazyn)", "notesViewList": "Lista (magazyn)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Rodzina czcionek", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Wybierz czcionkę używaną w całej aplikacji", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter jest zoptymalizowany pod kątem czytelności, Systemowa używa natywnej czcionki systemu operacyjnego", "selectFontFamily": "Inter jest zoptymalizowany pod kątem czytelności, Systemowa używa natywnej czcionki systemu operacyjnego",
"fontSystem": "Domyślna czcionka systemowa", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "Kosz", "title": "Kosz",
"empty": "Kosz jest pusty", "empty": "Trash is empty",
"emptyDescription": "Usunięte notatki pojawią się tutaj", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Przywróć", "restore": "Restore",
"deletePermanently": "Usuń trwale", "deletePermanently": "Usuń trwale",
"noteTrashed": "Notatka przeniesiona do kosza", "noteTrashed": "Notatka przeniesiona do kosza",
"noteRestored": "Notatka przywrócona", "noteRestored": "Notatka przywrócona",
"notePermanentlyDeleted": "Notatka trwale usunięta", "notePermanentlyDeleted": "Notatka trwale usunięta",
"emptyTrash": "Opróżnij kosz", "emptyTrash": "Opróżnij kosz",
"emptyTrashConfirm": "Trwale usunąć wszystkie notatki z kosza?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Kosz opróżniony", "emptyTrashSuccess": "Kosz opróżniony",
"permanentDelete": "Usuń trwale", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "Ta notatka zostanie trwale usunięta. Ta operacja jest nieodwracalna." "permanentDeleteConfirm": "Ta notatka zostanie trwale usunięta. Ta operacja jest nieodwracalna.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Prywatność", "privacy": "Prywatność",
@@ -1583,7 +1598,23 @@
"chinese": "chiński", "chinese": "chiński",
"japanese": "japoński" "japanese": "japoński"
}, },
"customPlaceholder": "np. Arabski, rosyjski…" "customPlaceholder": "np. Arabski, rosyjski…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Nieznany", "unknown": "Nieznany",
@@ -1591,16 +1622,16 @@
"loading": "Ładowanie...", "loading": "Ładowanie...",
"error": "Błąd", "error": "Błąd",
"success": "Sukces", "success": "Sukces",
"confirm": "Potwierdź", "confirm": "Confirm",
"cancel": "Anuluj", "cancel": "Cancel",
"close": "Zamknij", "close": "Zamknij",
"save": "Zapisz", "save": "Zapisz",
"delete": "Usuń", "delete": "Usuń",
"edit": "Edytuj", "edit": "Edytuj",
"add": "Dodaj", "add": "Dodaj",
"remove": "Usuń", "remove": "Usuń",
"search": "Szukaj", "search": "Search...",
"noResults": "Brak wyników", "noResults": "No notes found",
"required": "Wymagane", "required": "Wymagane",
"optional": "Opcjonalne" "optional": "Opcjonalne"
}, },
@@ -1982,7 +2013,9 @@
"searching": "Wyszukiwanie...", "searching": "Wyszukiwanie...",
"noNotesFoundForContext": "Nie znaleziono odpowiednich notatek dla tego pytania. Odpowiedz używając ogólnej wiedzy.", "noNotesFoundForContext": "Nie znaleziono odpowiednich notatek dla tego pytania. Odpowiedz używając ogólnej wiedzy.",
"webSearch": "Wyszukiwanie w sieci", "webSearch": "Wyszukiwanie w sieci",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "Laboratorium", "title": "Laboratorium",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "Mais antigo primeiro", "sortOldest": "Mais antigo primeiro",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "Menu da conta", "accountMenu": "Menu da conta",
"profile": "Perfil", "profile": "Profile",
"signOut": "sair", "signOut": "Sign out",
"sortOrder": "Ordem de classificação", "sortOrder": "Ordem de classificação",
"freezePinnedNotebook": "Fixar ordem da barra lateral do notebook", "freezePinnedNotebook": "Fixar ordem da barra lateral do notebook",
"unfreezePinnedNotebook": "Liberar ordem da barra lateral do notebook", "unfreezePinnedNotebook": "Liberar ordem da barra lateral do notebook",
@@ -58,14 +58,15 @@
"renameNotebook": "Renomear", "renameNotebook": "Renomear",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Ordem livre", "sortManual": "Ordem livre",
"moveFailed": "Falha ao mover o caderno", "moveFailed": "Failed to move notebook",
"dropToRoot": "Solte aqui para mover para a raiz" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Notas", "title": "Notas",
"newNote": "Nova nota", "newNote": "Nova nota",
"reorganize": "Reorganizar notas", "reorganize": "Reorganizar notas",
"untitled": "Sem título", "untitled": "Untitled",
"placeholder": "Faça uma nota...", "placeholder": "Faça uma nota...",
"markdownPlaceholder": "Faça uma nota... (Markdown suportado)", "markdownPlaceholder": "Faça uma nota... (Markdown suportado)",
"titlePlaceholder": "Título", "titlePlaceholder": "Título",
@@ -81,12 +82,12 @@
"add": "Adicionar", "add": "Adicionar",
"adding": "Adicionando...", "adding": "Adicionando...",
"close": "Fechar", "close": "Fechar",
"confirmDelete": "Tem certeza de que deseja excluir esta nota?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "Tem certeza de que deseja sair desta nota compartilhada?", "confirmLeaveShare": "Tem certeza de que deseja sair desta nota compartilhada?",
"sharedBy": "Compartilhado por", "sharedBy": "Compartilhado por",
"sharedShort": "Compartilhado", "sharedShort": "Compartilhado",
"leaveShare": "Sair", "leaveShare": "Sair",
"delete": "Excluir", "delete": "Delete",
"archive": "Arquivar", "archive": "Arquivar",
"unarchive": "Desarquivar", "unarchive": "Desarquivar",
"pin": "Fixar", "pin": "Fixar",
@@ -127,7 +128,7 @@
"duplicate": "Duplicar", "duplicate": "Duplicar",
"share": "Compartilhar", "share": "Compartilhar",
"showCollaborators": "Mostrar colaboradores", "showCollaborators": "Mostrar colaboradores",
"pinned": "Fixadas", "pinned": "Note pinned",
"others": "Outros", "others": "Outros",
"noNotes": "Sem notas", "noNotes": "Sem notas",
"noNotesFound": "Nenhuma nota encontrada", "noNotesFound": "Nenhuma nota encontrada",
@@ -159,8 +160,8 @@
"recent": "Recentes", "recent": "Recentes",
"addNote": "Adicionar nota", "addNote": "Adicionar nota",
"readMore": "Ler mais", "readMore": "Ler mais",
"remove": "Remover", "remove": "Remove",
"dragToReorder": "Arraste para reordenar", "dragToReorder": "Drag to reorder",
"more": "Mais", "more": "Mais",
"emptyState": "Nenhuma nota aqui", "emptyState": "Nenhuma nota aqui",
"metadataPanel": "Detalhes", "metadataPanel": "Detalhes",
@@ -173,7 +174,7 @@
"improveFailed": "Falha ao melhorar", "improveFailed": "Falha ao melhorar",
"transformFailed": "Falha ao transformar", "transformFailed": "Falha ao transformar",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "Desafixado", "unpinned": "Note unpinned",
"redoShortcut": "Refazer (Ctrl+Y)", "redoShortcut": "Refazer (Ctrl+Y)",
"undoShortcut": "Desfazer (Ctrl+Z)", "undoShortcut": "Desfazer (Ctrl+Z)",
"reorderTabs": "Reordenar aba", "reorderTabs": "Reordenar aba",
@@ -751,7 +752,7 @@
"downloadFailed": "Falha no download" "downloadFailed": "Falha no download"
}, },
"nav": { "nav": {
"home": "Início", "home": "Home",
"notes": "Notas", "notes": "Notas",
"notebooks": "Cadernos", "notebooks": "Cadernos",
"generalNotes": "Notas gerais", "generalNotes": "Notas gerais",
@@ -761,7 +762,7 @@
"aiSettings": "Configurações de IA", "aiSettings": "Configurações de IA",
"logout": "Sair", "logout": "Sair",
"login": "Entrar", "login": "Entrar",
"adminDashboard": "Painel de administração", "adminDashboard": "Admin Dashboard",
"diagnostics": "Diagnósticos", "diagnostics": "Diagnósticos",
"trash": "Lixeira", "trash": "Lixeira",
"support": "Apoie o Memento ☕", "support": "Apoie o Memento ☕",
@@ -786,7 +787,8 @@
"proPlan": "Plano Pro", "proPlan": "Plano Pro",
"chat": "Chat IA", "chat": "Chat IA",
"lab": "O Laboratório", "lab": "O Laboratório",
"agents": "Agentes" "agents": "Agentes",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Configurações", "title": "Configurações",
@@ -814,7 +816,7 @@
"security": "Segurança", "security": "Segurança",
"about": "Sobre", "about": "Sobre",
"version": "Versão", "version": "Versão",
"settingsSaved": "Configurações salvas", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Gere vetores para todas as notas para ativar a pesquisa baseada em intenção", "semanticIndexingDescription": "Gere vetores para todas as notas para ativar a pesquisa baseada em intenção",
"profile": "Perfil", "profile": "Perfil",
"searchNoResults": "Nenhum resultado encontrado", "searchNoResults": "Nenhum resultado encontrado",
"languageAuto": "Automático", "languageAuto": "Language set to Auto",
"emailNotifications": "Notificações por e-mail", "emailNotifications": "Notificações por e-mail",
"emailNotificationsDesc": "Receba notificações importantes por e-mail", "emailNotificationsDesc": "Receba notificações importantes por e-mail",
"desktopNotifications": "Notificações na área de trabalho", "desktopNotifications": "Notificações na área de trabalho",
"desktopNotificationsDesc": "Receba notificações no seu navegador", "desktopNotificationsDesc": "Receba notificações no seu navegador",
"notificationsDesc": "Gerencie suas preferências de notificação", "notificationsDesc": "Gerencie suas preferências de notificação",
"autoSave": "Salvar automaticamente", "autoSave": "Auto-save",
"autoSaveDesc": "Salvar alterações automaticamente enquanto digita" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "Perfil", "title": "Perfil",
@@ -864,10 +866,10 @@
"preferredLanguage": "Idioma preferido", "preferredLanguage": "Idioma preferido",
"selectLanguage": "Selecione um idioma", "selectLanguage": "Selecione um idioma",
"languageDescription": "Este idioma será usado para recursos com IA, análise de conteúdo e texto da interface.", "languageDescription": "Este idioma será usado para recursos com IA, análise de conteúdo e texto da interface.",
"autoDetect": "Detecção automática", "autoDetect": "Auto-detect",
"updateSuccess": "Perfil atualizado", "updateSuccess": "Perfil atualizado",
"updateFailed": "Falha ao atualizar perfil", "updateFailed": "Falha ao atualizar perfil",
"languageUpdateSuccess": "Idioma atualizado com sucesso", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Falha ao atualizar idioma", "languageUpdateFailed": "Falha ao atualizar idioma",
"profileUpdated": "Perfil atualizado", "profileUpdated": "Perfil atualizado",
"profileError": "Erro ao atualizar perfil", "profileError": "Erro ao atualizar perfil",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "Carregando...", "loading": "Carregando...",
"save": "Salvar", "save": "Save",
"cancel": "Cancelar", "cancel": "Cancel",
"add": "Adicionar", "add": "Adicionar",
"edit": "Editar", "edit": "Editar",
"confirm": "Confirmar", "confirm": "Confirmar",
@@ -984,7 +986,7 @@
"createNew": "Criar novo caderno", "createNew": "Criar novo caderno",
"createDescription": "Inicie uma nova coleção para organizar suas notas, ideias e projetos de forma eficiente.", "createDescription": "Inicie uma nova coleção para organizar suas notas, ideias e projetos de forma eficiente.",
"name": "Nome do caderno", "name": "Nome do caderno",
"namePlaceholder": "ex. Estratégia de Marketing Q4", "namePlaceholder": "Notebook name",
"myNotebook": "Meu Caderno", "myNotebook": "Meu Caderno",
"saving": "Salvando...", "saving": "Salvando...",
"selectIcon": "Ícone", "selectIcon": "Ícone",
@@ -993,7 +995,7 @@
"creating": "Criando...", "creating": "Criando...",
"edit": "Editar caderno", "edit": "Editar caderno",
"editDescription": "Mude o nome, ícone e cor do seu caderno.", "editDescription": "Mude o nome, ícone e cor do seu caderno.",
"delete": "Excluir caderno", "delete": "Delete",
"deleteWarning": "Tem certeza de que deseja excluir este caderno? As notas serão movidas para Notas Gerais.", "deleteWarning": "Tem certeza de que deseja excluir este caderno? As notas serão movidas para Notas Gerais.",
"deleteConfirm": "Excluir", "deleteConfirm": "Excluir",
"summary": "Resumo do caderno", "summary": "Resumo do caderno",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "Caderno fixado pedido congelado", "pinnedFrozenTooltip": "Caderno fixado pedido congelado",
"organizeNotebookWithAITooltip": "Organize este notebook com IA", "organizeNotebookWithAITooltip": "Organize este notebook com IA",
"assistantRequiredForSummarize": "Ative o AI Assistant nas configurações para resumir", "assistantRequiredForSummarize": "Ative o AI Assistant nas configurações para resumir",
"createSubnotebook": "Adicionar sub-notebook" "createSubnotebook": "Adicionar sub-notebook",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Mover para {name}?", "title": "Mover para {name}?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "Aparência", "title": "Aparência",
"description": "Personalize a aparência do aplicativo", "description": "Customize the interface",
"notesViewDescription": "Escolha como as notas são exibidas na página inicial e nos cadernos.", "notesViewDescription": "Escolha como as notas são exibidas na página inicial e nos cadernos.",
"notesViewLabel": "Layout das notas", "notesViewLabel": "Layout das notas",
"notesViewTabs": "Abas (estilo OneNote)", "notesViewTabs": "Abas (estilo OneNote)",
"notesViewMasonry": "Cartões (grade)", "notesViewMasonry": "Cartões (grade)",
"notesViewList": "Lista (revista)", "notesViewList": "Lista (revista)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Família de fontes", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Escolha a fonte usada em todo o aplicativo", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter é otimizado para legibilidade, Sistema usa a fonte nativa do seu sistema operacional", "selectFontFamily": "Inter é otimizado para legibilidade, Sistema usa a fonte nativa do seu sistema operacional",
"fontSystem": "Fonte padrão do sistema", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "Lixeira", "title": "Lixeira",
"empty": "A lixeira está vazia", "empty": "Trash is empty",
"emptyDescription": "As notas excluídas aparecerão aqui", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Restaurar", "restore": "Restore",
"deletePermanently": "Excluir permanentemente", "deletePermanently": "Excluir permanentemente",
"noteTrashed": "Nota movida para a lixeira", "noteTrashed": "Nota movida para a lixeira",
"noteRestored": "Nota restaurada", "noteRestored": "Nota restaurada",
"notePermanentlyDeleted": "Nota excluída permanentemente", "notePermanentlyDeleted": "Nota excluída permanentemente",
"emptyTrash": "Esvaziar lixeira", "emptyTrash": "Esvaziar lixeira",
"emptyTrashConfirm": "Excluir permanentemente todas as notas da lixeira?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Lixeira esvaziada", "emptyTrashSuccess": "Lixeira esvaziada",
"permanentDelete": "Excluir permanentemente", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "Esta nota será excluída permanentemente. Esta ação não pode ser desfeita." "permanentDeleteConfirm": "Esta nota será excluída permanentemente. Esta ação não pode ser desfeita.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Privacidade", "privacy": "Privacidade",
@@ -1583,7 +1598,23 @@
"chinese": "chinês", "chinese": "chinês",
"japanese": "japonês" "japanese": "japonês"
}, },
"customPlaceholder": "por exemplo Árabe, russo…" "customPlaceholder": "por exemplo Árabe, russo…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Desconhecido", "unknown": "Desconhecido",
@@ -1591,16 +1622,16 @@
"loading": "Carregando...", "loading": "Carregando...",
"error": "Erro", "error": "Erro",
"success": "Sucesso", "success": "Sucesso",
"confirm": "Confirmar", "confirm": "Confirm",
"cancel": "Cancelar", "cancel": "Cancel",
"close": "Fechar", "close": "Fechar",
"save": "Salvar", "save": "Salvar",
"delete": "Excluir", "delete": "Excluir",
"edit": "Editar", "edit": "Editar",
"add": "Adicionar", "add": "Adicionar",
"remove": "Remover", "remove": "Remover",
"search": "Pesquisar", "search": "Search...",
"noResults": "Sem resultados", "noResults": "No notes found",
"required": "Obrigatório", "required": "Obrigatório",
"optional": "Opcional" "optional": "Opcional"
}, },
@@ -1982,7 +2013,9 @@
"searching": "Pesquisando...", "searching": "Pesquisando...",
"noNotesFoundForContext": "Nenhuma nota relevante encontrada para esta pergunta. Responda com seu conhecimento geral.", "noNotesFoundForContext": "Nenhuma nota relevante encontrada para esta pergunta. Responda com seu conhecimento geral.",
"webSearch": "Pesquisa na web", "webSearch": "Pesquisa na web",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "O Laboratório", "title": "O Laboratório",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "Сначала самый старый", "sortOldest": "Сначала самый старый",
"sortAlpha": "А → Я", "sortAlpha": "А → Я",
"accountMenu": "Меню аккаунта", "accountMenu": "Меню аккаунта",
"profile": "Профиль", "profile": "Profile",
"signOut": "выход", "signOut": "Sign out",
"sortOrder": "Порядок сортировки", "sortOrder": "Порядок сортировки",
"freezePinnedNotebook": "Закрепить порядок на боковой панели блокнота", "freezePinnedNotebook": "Закрепить порядок на боковой панели блокнота",
"unfreezePinnedNotebook": "Открепить порядок боковой панели блокнота", "unfreezePinnedNotebook": "Открепить порядок боковой панели блокнота",
@@ -58,14 +58,15 @@
"renameNotebook": "Переименовать", "renameNotebook": "Переименовать",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "Свободный порядок", "sortManual": "Свободный порядок",
"moveFailed": "Не удалось переместить блокнот", "moveFailed": "Failed to move notebook",
"dropToRoot": "Перетащите сюда для перемещения в корень" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "Заметки", "title": "Заметки",
"newNote": "Новая заметка", "newNote": "Новая заметка",
"reorganize": "Реорганизация заметок", "reorganize": "Реорганизация заметок",
"untitled": "Без названия", "untitled": "Untitled",
"placeholder": "Сделайте заметку...", "placeholder": "Сделайте заметку...",
"markdownPlaceholder": "Сделайте заметку... (Поддерживается Markdown)", "markdownPlaceholder": "Сделайте заметку... (Поддерживается Markdown)",
"titlePlaceholder": "Заголовок", "titlePlaceholder": "Заголовок",
@@ -81,12 +82,12 @@
"add": "Добавить", "add": "Добавить",
"adding": "Добавление...", "adding": "Добавление...",
"close": "Закрыть", "close": "Закрыть",
"confirmDelete": "Вы уверены, что хотите удалить эту заметку?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "Вы уверены, что хотите покинуть эту общую заметку?", "confirmLeaveShare": "Вы уверены, что хотите покинуть эту общую заметку?",
"sharedBy": "Поделился", "sharedBy": "Поделился",
"sharedShort": "Общий", "sharedShort": "Общий",
"leaveShare": "Покинуть", "leaveShare": "Покинуть",
"delete": "Удалить", "delete": "Delete",
"archive": "Архивировать", "archive": "Архивировать",
"unarchive": "Разархивировать", "unarchive": "Разархивировать",
"pin": "Закрепить", "pin": "Закрепить",
@@ -127,7 +128,7 @@
"duplicate": "Дублировать", "duplicate": "Дублировать",
"share": "Поделиться", "share": "Поделиться",
"showCollaborators": "Показать соавторов", "showCollaborators": "Показать соавторов",
"pinned": "Закреплённые", "pinned": "Note pinned",
"others": "Другие", "others": "Другие",
"noNotes": "Нет заметок", "noNotes": "Нет заметок",
"noNotesFound": "Заметки не найдены", "noNotesFound": "Заметки не найдены",
@@ -159,8 +160,8 @@
"recent": "Недавние", "recent": "Недавние",
"addNote": "Добавить заметку", "addNote": "Добавить заметку",
"readMore": "Читать далее", "readMore": "Читать далее",
"remove": "Удалить", "remove": "Remove",
"dragToReorder": "Перетащите для изменения порядка", "dragToReorder": "Drag to reorder",
"more": "Ещё", "more": "Ещё",
"emptyState": "Здесь нет заметок", "emptyState": "Здесь нет заметок",
"metadataPanel": "Подробности", "metadataPanel": "Подробности",
@@ -173,7 +174,7 @@
"improveFailed": "Ошибка улучшения", "improveFailed": "Ошибка улучшения",
"transformFailed": "Ошибка преобразования", "transformFailed": "Ошибка преобразования",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "Откреплённая", "unpinned": "Note unpinned",
"redoShortcut": "Повторить (Ctrl+Y)", "redoShortcut": "Повторить (Ctrl+Y)",
"undoShortcut": "Отменить (Ctrl+Z)", "undoShortcut": "Отменить (Ctrl+Z)",
"reorderTabs": "Изменить порядок вкладок", "reorderTabs": "Изменить порядок вкладок",
@@ -751,7 +752,7 @@
"downloadFailed": "Загрузка не удалась" "downloadFailed": "Загрузка не удалась"
}, },
"nav": { "nav": {
"home": "Главная", "home": "Home",
"notes": "Заметки", "notes": "Заметки",
"notebooks": "Блокноты", "notebooks": "Блокноты",
"generalNotes": "Общие заметки", "generalNotes": "Общие заметки",
@@ -761,7 +762,7 @@
"aiSettings": "Настройки ИИ", "aiSettings": "Настройки ИИ",
"logout": "Выйти", "logout": "Выйти",
"login": "Войти", "login": "Войти",
"adminDashboard": "Панель администратора", "adminDashboard": "Admin Dashboard",
"diagnostics": "Диагностика", "diagnostics": "Диагностика",
"trash": "Корзина", "trash": "Корзина",
"support": "Поддержать Memento ☕", "support": "Поддержать Memento ☕",
@@ -786,7 +787,8 @@
"proPlan": "Про-план", "proPlan": "Про-план",
"chat": "ИИ-чат", "chat": "ИИ-чат",
"lab": "Лаборатория", "lab": "Лаборатория",
"agents": "Агенты" "agents": "Агенты",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "Настройки", "title": "Настройки",
@@ -814,7 +816,7 @@
"security": "Безопасность", "security": "Безопасность",
"about": "О программе", "about": "О программе",
"version": "Версия", "version": "Версия",
"settingsSaved": "Настройки сохранены", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "Создать векторы для всех заметок для поиска по смыслу", "semanticIndexingDescription": "Создать векторы для всех заметок для поиска по смыслу",
"profile": "Профиль", "profile": "Профиль",
"searchNoResults": "Результаты не найдены", "searchNoResults": "Результаты не найдены",
"languageAuto": "Автоматически", "languageAuto": "Language set to Auto",
"emailNotifications": "Email-уведомления", "emailNotifications": "Email-уведомления",
"emailNotificationsDesc": "Получать важные уведомления по email", "emailNotificationsDesc": "Получать важные уведомления по email",
"desktopNotifications": "Уведомления на рабочем столе", "desktopNotifications": "Уведомления на рабочем столе",
"desktopNotificationsDesc": "Получать уведомления в браузере", "desktopNotificationsDesc": "Получать уведомления в браузере",
"notificationsDesc": "Управление настройками уведомлений", "notificationsDesc": "Управление настройками уведомлений",
"autoSave": "Автосохранение", "autoSave": "Auto-save",
"autoSaveDesc": "Автоматически сохранять изменения во время ввода" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "Профиль", "title": "Профиль",
@@ -864,10 +866,10 @@
"preferredLanguage": "Предпочитаемый язык", "preferredLanguage": "Предпочитаемый язык",
"selectLanguage": "Выберите язык", "selectLanguage": "Выберите язык",
"languageDescription": "Этот язык будет использоваться для функций на базе ИИ, анализа содержимого и текста интерфейса.", "languageDescription": "Этот язык будет использоваться для функций на базе ИИ, анализа содержимого и текста интерфейса.",
"autoDetect": "Автоопределение", "autoDetect": "Auto-detect",
"updateSuccess": "Профиль обновлён", "updateSuccess": "Профиль обновлён",
"updateFailed": "Не удалось обновить профиль", "updateFailed": "Не удалось обновить профиль",
"languageUpdateSuccess": "Язык успешно обновлён", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "Не удалось обновить язык", "languageUpdateFailed": "Не удалось обновить язык",
"profileUpdated": "Профиль обновлён", "profileUpdated": "Профиль обновлён",
"profileError": "Ошибка обновления профиля", "profileError": "Ошибка обновления профиля",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "Загрузка...", "loading": "Загрузка...",
"save": "Сохранить", "save": "Save",
"cancel": "Отмена", "cancel": "Cancel",
"add": "Добавить", "add": "Добавить",
"edit": "Редактировать", "edit": "Редактировать",
"confirm": "Подтвердить", "confirm": "Подтвердить",
@@ -984,7 +986,7 @@
"createNew": "Создать новый блокнот", "createNew": "Создать новый блокнот",
"createDescription": "Начните новую коллекцию для эффективной организации ваших заметок, идей и проектов.", "createDescription": "Начните новую коллекцию для эффективной организации ваших заметок, идей и проектов.",
"name": "Название блокнота", "name": "Название блокнота",
"namePlaceholder": "напр. Маркетинговая стратегия Q4", "namePlaceholder": "Notebook name",
"myNotebook": "Мой блокнот", "myNotebook": "Мой блокнот",
"saving": "Сохранение...", "saving": "Сохранение...",
"selectIcon": "Значок", "selectIcon": "Значок",
@@ -993,7 +995,7 @@
"creating": "Создание...", "creating": "Создание...",
"edit": "Редактировать блокнот", "edit": "Редактировать блокнот",
"editDescription": "Измените название, значок и цвет вашего блокнота.", "editDescription": "Измените название, значок и цвет вашего блокнота.",
"delete": "Удалить блокнот", "delete": "Delete",
"deleteWarning": "Вы уверены, что хотите удалить этот блокнот? Заметки будут перемещены в Общие заметки.", "deleteWarning": "Вы уверены, что хотите удалить этот блокнот? Заметки будут перемещены в Общие заметки.",
"deleteConfirm": "Удалить", "deleteConfirm": "Удалить",
"summary": "Сводка блокнота", "summary": "Сводка блокнота",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "Прикрепленный блокнот — заказ заморожен", "pinnedFrozenTooltip": "Прикрепленный блокнот — заказ заморожен",
"organizeNotebookWithAITooltip": "Организуйте этот блокнот с помощью ИИ", "organizeNotebookWithAITooltip": "Организуйте этот блокнот с помощью ИИ",
"assistantRequiredForSummarize": "Включите AI Assistant в настройках, чтобы подводить итоги.", "assistantRequiredForSummarize": "Включите AI Assistant в настройках, чтобы подводить итоги.",
"createSubnotebook": "Добавить субноутбук" "createSubnotebook": "Добавить субноутбук",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "Переместить в {name}?", "title": "Переместить в {name}?",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "Внешний вид", "title": "Внешний вид",
"description": "Настройте внешний вид приложения", "description": "Customize the interface",
"notesViewDescription": "Выберите, как отображаются заметки на главной странице и в блокнотах.", "notesViewDescription": "Выберите, как отображаются заметки на главной странице и в блокнотах.",
"notesViewLabel": "Макет заметок", "notesViewLabel": "Макет заметок",
"notesViewTabs": "Вкладки (в стиле OneNote)", "notesViewTabs": "Вкладки (в стиле OneNote)",
"notesViewMasonry": "Карточки (сетка)", "notesViewMasonry": "Карточки (сетка)",
"notesViewList": "Список (журнал)", "notesViewList": "Список (журнал)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "Семейство шрифтов", "fontFamilyLabel": "Font",
"fontFamilyDescription": "Выберите шрифт, используемый во всём приложении", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter оптимизирован для читаемости, Системный использует нативный шрифт вашей ОС", "selectFontFamily": "Inter оптимизирован для читаемости, Системный использует нативный шрифт вашей ОС",
"fontSystem": "Системный шрифт по умолчанию", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "Корзина", "title": "Корзина",
"empty": "Корзина пуста", "empty": "Trash is empty",
"emptyDescription": "Удалённые заметки появятся здесь", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "Восстановить", "restore": "Restore",
"deletePermanently": "Удалить навсегда", "deletePermanently": "Удалить навсегда",
"noteTrashed": "Заметка перемещена в корзину", "noteTrashed": "Заметка перемещена в корзину",
"noteRestored": "Заметка восстановлена", "noteRestored": "Заметка восстановлена",
"notePermanentlyDeleted": "Заметка удалена навсегда", "notePermanentlyDeleted": "Заметка удалена навсегда",
"emptyTrash": "Очистить корзину", "emptyTrash": "Очистить корзину",
"emptyTrashConfirm": "Удалить навсегда все заметки из корзины?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "Корзина очищена", "emptyTrashSuccess": "Корзина очищена",
"permanentDelete": "Удалить навсегда", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "Эта заметка будет удалена навсегда. Это действие нельзя отменить." "permanentDeleteConfirm": "Эта заметка будет удалена навсегда. Это действие нельзя отменить.",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "Конфиденциальность", "privacy": "Конфиденциальность",
@@ -1583,7 +1598,23 @@
"chinese": "китайский", "chinese": "китайский",
"japanese": "японский" "japanese": "японский"
}, },
"customPlaceholder": "например арабский, русский…" "customPlaceholder": "например арабский, русский…",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "Неизвестно", "unknown": "Неизвестно",
@@ -1591,16 +1622,16 @@
"loading": "Загрузка...", "loading": "Загрузка...",
"error": "Ошибка", "error": "Ошибка",
"success": "Успешно", "success": "Успешно",
"confirm": "Подтвердить", "confirm": "Confirm",
"cancel": "Отмена", "cancel": "Cancel",
"close": "Закрыть", "close": "Закрыть",
"save": "Сохранить", "save": "Сохранить",
"delete": "Удалить", "delete": "Удалить",
"edit": "Редактировать", "edit": "Редактировать",
"add": "Добавить", "add": "Добавить",
"remove": "Удалить", "remove": "Удалить",
"search": "Поиск", "search": "Search...",
"noResults": "Нет результатов", "noResults": "No notes found",
"required": "Обязательно", "required": "Обязательно",
"optional": "Необязательно" "optional": "Необязательно"
}, },
@@ -1982,7 +2013,9 @@
"searching": "Поиск...", "searching": "Поиск...",
"noNotesFoundForContext": "Не найдено заметок по этому вопросу. Ответьте, используя свои общие знания.", "noNotesFoundForContext": "Не найдено заметок по этому вопросу. Ответьте, используя свои общие знания.",
"webSearch": "Веб-поиск", "webSearch": "Веб-поиск",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "Лаборатория", "title": "Лаборатория",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }

View File

@@ -49,8 +49,8 @@
"sortOldest": "最老的在前", "sortOldest": "最老的在前",
"sortAlpha": "A → Z", "sortAlpha": "A → Z",
"accountMenu": "账户菜单", "accountMenu": "账户菜单",
"profile": "轮廓", "profile": "Profile",
"signOut": "登出", "signOut": "Sign out",
"sortOrder": "排序顺序", "sortOrder": "排序顺序",
"freezePinnedNotebook": "固定笔记本侧边栏顺序", "freezePinnedNotebook": "固定笔记本侧边栏顺序",
"unfreezePinnedNotebook": "取消固定笔记本侧边栏顺序", "unfreezePinnedNotebook": "取消固定笔记本侧边栏顺序",
@@ -58,14 +58,15 @@
"renameNotebook": "重命名", "renameNotebook": "重命名",
"sharedNotebookBadge": "· Shared", "sharedNotebookBadge": "· Shared",
"sortManual": "自定义顺序", "sortManual": "自定义顺序",
"moveFailed": "移动笔记本失败", "moveFailed": "Failed to move notebook",
"dropToRoot": "拖放到此处移至根级别" "dropToRoot": "Drop here to move to root",
"noReminders": "No active reminders."
}, },
"notes": { "notes": {
"title": "笔记", "title": "笔记",
"newNote": "新建笔记", "newNote": "新建笔记",
"reorganize": "重新整理笔记", "reorganize": "重新整理笔记",
"untitled": "无标题", "untitled": "Untitled",
"placeholder": "记笔记...", "placeholder": "记笔记...",
"markdownPlaceholder": "记笔记...(支持 Markdown", "markdownPlaceholder": "记笔记...(支持 Markdown",
"titlePlaceholder": "标题", "titlePlaceholder": "标题",
@@ -81,12 +82,12 @@
"add": "添加", "add": "添加",
"adding": "添加中...", "adding": "添加中...",
"close": "关闭", "close": "关闭",
"confirmDelete": "确定要删除这条笔记吗?", "confirmDelete": "Are you sure you want to delete this note?",
"confirmLeaveShare": "确定要离开这条共享笔记吗?", "confirmLeaveShare": "确定要离开这条共享笔记吗?",
"sharedBy": "共享者", "sharedBy": "共享者",
"sharedShort": "共享", "sharedShort": "共享",
"leaveShare": "离开", "leaveShare": "离开",
"delete": "删除", "delete": "Delete",
"archive": "归档", "archive": "归档",
"unarchive": "取消归档", "unarchive": "取消归档",
"pin": "置顶", "pin": "置顶",
@@ -127,7 +128,7 @@
"duplicate": "复制", "duplicate": "复制",
"share": "共享", "share": "共享",
"showCollaborators": "显示协作者", "showCollaborators": "显示协作者",
"pinned": "已置顶", "pinned": "Note pinned",
"others": "其他", "others": "其他",
"noNotes": "无笔记", "noNotes": "无笔记",
"noNotesFound": "未找到笔记", "noNotesFound": "未找到笔记",
@@ -159,8 +160,8 @@
"recent": "最近", "recent": "最近",
"addNote": "添加笔记", "addNote": "添加笔记",
"readMore": "阅读全文", "readMore": "阅读全文",
"remove": "移除", "remove": "Remove",
"dragToReorder": "拖动以重新排序", "dragToReorder": "Drag to reorder",
"more": "更多", "more": "更多",
"emptyState": "暂无笔记", "emptyState": "暂无笔记",
"metadataPanel": "细节", "metadataPanel": "细节",
@@ -173,7 +174,7 @@
"improveFailed": "改进失败", "improveFailed": "改进失败",
"transformFailed": "转换失败", "transformFailed": "转换失败",
"markdown": "Markdown", "markdown": "Markdown",
"unpinned": "未置顶", "unpinned": "Note unpinned",
"redoShortcut": "重做 (Ctrl+Y)", "redoShortcut": "重做 (Ctrl+Y)",
"undoShortcut": "撤销 (Ctrl+Z)", "undoShortcut": "撤销 (Ctrl+Z)",
"reorderTabs": "重新排序标签页", "reorderTabs": "重新排序标签页",
@@ -751,7 +752,7 @@
"downloadFailed": "下载失败" "downloadFailed": "下载失败"
}, },
"nav": { "nav": {
"home": "主页", "home": "Home",
"notes": "笔记", "notes": "笔记",
"notebooks": "笔记本", "notebooks": "笔记本",
"generalNotes": "普通笔记", "generalNotes": "普通笔记",
@@ -761,7 +762,7 @@
"aiSettings": "AI 设置", "aiSettings": "AI 设置",
"logout": "退出登录", "logout": "退出登录",
"login": "登录", "login": "登录",
"adminDashboard": "管理后台", "adminDashboard": "Admin Dashboard",
"diagnostics": "诊断", "diagnostics": "诊断",
"trash": "回收站", "trash": "回收站",
"support": "支持 Memento ☕", "support": "支持 Memento ☕",
@@ -786,7 +787,8 @@
"proPlan": "专业版", "proPlan": "专业版",
"chat": "AI 聊天", "chat": "AI 聊天",
"lab": "实验室", "lab": "实验室",
"agents": "代理" "agents": "代理",
"sharedWithMe": "Shared with me"
}, },
"settings": { "settings": {
"title": "设置", "title": "设置",
@@ -814,7 +816,7 @@
"security": "安全", "security": "安全",
"about": "关于", "about": "关于",
"version": "版本", "version": "版本",
"settingsSaved": "设置已保存", "settingsSaved": "Settings saved",
"cardSizeMode": "Note Size", "cardSizeMode": "Note Size",
"cardSizeModeDescription": "Choose between variable sizes or uniform size", "cardSizeModeDescription": "Choose between variable sizes or uniform size",
"selectCardSizeMode": "Select display mode", "selectCardSizeMode": "Select display mode",
@@ -835,14 +837,14 @@
"semanticIndexingDescription": "为所有笔记生成向量以启用基于意图的搜索", "semanticIndexingDescription": "为所有笔记生成向量以启用基于意图的搜索",
"profile": "个人资料", "profile": "个人资料",
"searchNoResults": "未找到匹配的设置", "searchNoResults": "未找到匹配的设置",
"languageAuto": "自动检测", "languageAuto": "Language set to Auto",
"emailNotifications": "电子邮件通知", "emailNotifications": "电子邮件通知",
"emailNotificationsDesc": "通过电子邮件接收重要通知", "emailNotificationsDesc": "通过电子邮件接收重要通知",
"desktopNotifications": "桌面通知", "desktopNotifications": "桌面通知",
"desktopNotificationsDesc": "在浏览器中接收通知", "desktopNotificationsDesc": "在浏览器中接收通知",
"notificationsDesc": "管理您的通知偏好", "notificationsDesc": "管理您的通知偏好",
"autoSave": "自动保存", "autoSave": "Auto-save",
"autoSaveDesc": "键入时自动保存更改" "autoSaveDesc": "Automatically save changes while typing"
}, },
"profile": { "profile": {
"title": "个人资料", "title": "个人资料",
@@ -864,10 +866,10 @@
"preferredLanguage": "首选语言", "preferredLanguage": "首选语言",
"selectLanguage": "选择语言", "selectLanguage": "选择语言",
"languageDescription": "此语言将用于 AI 驱动的功能、内容分析和界面文本。", "languageDescription": "此语言将用于 AI 驱动的功能、内容分析和界面文本。",
"autoDetect": "自动检测", "autoDetect": "Auto-detect",
"updateSuccess": "个人资料已更新", "updateSuccess": "个人资料已更新",
"updateFailed": "更新个人资料失败", "updateFailed": "更新个人资料失败",
"languageUpdateSuccess": "语言更新成功", "languageUpdateSuccess": "Language updated successfully",
"languageUpdateFailed": "更新语言失败", "languageUpdateFailed": "更新语言失败",
"profileUpdated": "个人资料已更新", "profileUpdated": "个人资料已更新",
"profileError": "更新个人资料时出错", "profileError": "更新个人资料时出错",
@@ -922,8 +924,8 @@
}, },
"general": { "general": {
"loading": "加载中...", "loading": "加载中...",
"save": "保存", "save": "Save",
"cancel": "取消", "cancel": "Cancel",
"add": "添加", "add": "添加",
"edit": "编辑", "edit": "编辑",
"confirm": "确认", "confirm": "确认",
@@ -984,7 +986,7 @@
"createNew": "创建新笔记本", "createNew": "创建新笔记本",
"createDescription": "开始一个新的集合,高效地组织您的笔记、想法和项目。", "createDescription": "开始一个新的集合,高效地组织您的笔记、想法和项目。",
"name": "笔记本名称", "name": "笔记本名称",
"namePlaceholder": "例如:第四季度营销策略", "namePlaceholder": "Notebook name",
"myNotebook": "我的笔记本", "myNotebook": "我的笔记本",
"saving": "保存中...", "saving": "保存中...",
"selectIcon": "图标", "selectIcon": "图标",
@@ -993,7 +995,7 @@
"creating": "创建中...", "creating": "创建中...",
"edit": "编辑笔记本", "edit": "编辑笔记本",
"editDescription": "更改笔记本的名称、图标和颜色。", "editDescription": "更改笔记本的名称、图标和颜色。",
"delete": "删除笔记本", "delete": "Delete",
"deleteWarning": "确定要删除此笔记本吗?笔记将被移动到普通笔记。", "deleteWarning": "确定要删除此笔记本吗?笔记将被移动到普通笔记。",
"deleteConfirm": "删除", "deleteConfirm": "删除",
"summary": "笔记本摘要", "summary": "笔记本摘要",
@@ -1012,7 +1014,10 @@
"pinnedFrozenTooltip": "固定笔记本 — 订单冻结", "pinnedFrozenTooltip": "固定笔记本 — 订单冻结",
"organizeNotebookWithAITooltip": "用人工智能整理这个笔记本", "organizeNotebookWithAITooltip": "用人工智能整理这个笔记本",
"assistantRequiredForSummarize": "设置中开启AI助手进行总结", "assistantRequiredForSummarize": "设置中开启AI助手进行总结",
"createSubnotebook": "添加子笔记本" "createSubnotebook": "添加子笔记本",
"createSubNotebook": "Add sub-notebook",
"rename": "Rename",
"moveToTrash": "Move to trash"
}, },
"notebookSuggestion": { "notebookSuggestion": {
"title": "移动到 {name}", "title": "移动到 {name}",
@@ -1430,20 +1435,22 @@
}, },
"appearance": { "appearance": {
"title": "外观", "title": "外观",
"description": "自定义应用的外观", "description": "Customize the interface",
"notesViewDescription": "选择笔记在主页和笔记本中的显示方式。", "notesViewDescription": "选择笔记在主页和笔记本中的显示方式。",
"notesViewLabel": "笔记布局", "notesViewLabel": "笔记布局",
"notesViewTabs": "标签页OneNote 风格)", "notesViewTabs": "标签页OneNote 风格)",
"notesViewMasonry": "卡片(网格)", "notesViewMasonry": "卡片(网格)",
"notesViewList": "列表(杂志)", "notesViewList": "列表(杂志)",
"selectTheme": "Select theme", "selectTheme": "Choose your preferred theme",
"fontFamilyLabel": "字体系列", "fontFamilyLabel": "Font",
"fontFamilyDescription": "选择应用程序中使用的字体", "fontFamilyDescription": "Choose the application's font",
"selectFontFamily": "Inter 针对可读性进行了优化,系统使用您操作系统的原生字体", "selectFontFamily": "Inter 针对可读性进行了优化,系统使用您操作系统的原生字体",
"fontSystem": "系统默认字体", "fontSystem": "System",
"fontInterDefault": "Inter (default)", "fontInterDefault": "Inter (default)",
"fontPlayfairDisplay": "Playfair Display", "fontPlayfairDisplay": "Playfair Display",
"fontJetBrainsMono": "JetBrains Mono" "fontJetBrainsMono": "JetBrains Mono",
"accentColorTitle": "Accent Color",
"accentColorDescription": "Set the main color of your workspace"
}, },
"generalSettings": { "generalSettings": {
"title": "General", "title": "General",
@@ -1477,18 +1484,26 @@
}, },
"trash": { "trash": {
"title": "回收站", "title": "回收站",
"empty": "回收站为空", "empty": "Trash is empty",
"emptyDescription": "已删除的笔记将显示在这里", "emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
"restore": "恢复", "restore": "Restore",
"deletePermanently": "永久删除", "deletePermanently": "永久删除",
"noteTrashed": "笔记已移至回收站", "noteTrashed": "笔记已移至回收站",
"noteRestored": "笔记已恢复", "noteRestored": "笔记已恢复",
"notePermanentlyDeleted": "笔记已永久删除", "notePermanentlyDeleted": "笔记已永久删除",
"emptyTrash": "清空回收站", "emptyTrash": "清空回收站",
"emptyTrashConfirm": "确定永久删除回收站中的所有笔记?", "emptyTrashConfirm": "Empty trash? This is irreversible.",
"emptyTrashSuccess": "回收站已清空", "emptyTrashSuccess": "回收站已清空",
"permanentDelete": "永久删除", "permanentDelete": "Delete permanently",
"permanentDeleteConfirm": "此笔记将被永久删除,此操作无法撤销。" "permanentDeleteConfirm": "此笔记将被永久删除,此操作无法撤销。",
"restoreSuccess": "Restored successfully",
"restoreError": "Failed to restore",
"permanentDeleteSuccess": "Permanently deleted",
"deleteError": "Failed to delete",
"daysRemaining": "DAYS LEFT",
"notebookContentPreserved": "Notebook content preserved",
"notebookRestoreHint": "Restoring a notebook also restores all its notes.",
"filterAll": "All"
}, },
"footer": { "footer": {
"privacy": "隐私", "privacy": "隐私",
@@ -1583,7 +1598,23 @@
"chinese": "中国人", "chinese": "中国人",
"japanese": "日本人" "japanese": "日本人"
}, },
"customPlaceholder": "例如阿拉伯语、俄语……" "customPlaceholder": "例如阿拉伯语、俄语……",
"autoDetect": "Auto-detect",
"en": "English",
"fr": "Français",
"es": "Español",
"de": "Deutsch",
"fa": "فارسی",
"it": "Italiano",
"pt": "Português",
"ru": "Русский",
"zh": "中文",
"ja": "日本語",
"ko": "한국어",
"ar": "العربية",
"hi": "हिन्दी",
"nl": "Nederlands",
"pl": "Polski"
}, },
"common": { "common": {
"unknown": "未知", "unknown": "未知",
@@ -1591,16 +1622,16 @@
"loading": "加载中...", "loading": "加载中...",
"error": "错误", "error": "错误",
"success": "成功", "success": "成功",
"confirm": "确认", "confirm": "Confirm",
"cancel": "取消", "cancel": "Cancel",
"close": "关闭", "close": "关闭",
"save": "保存", "save": "保存",
"delete": "删除", "delete": "删除",
"edit": "编辑", "edit": "编辑",
"add": "添加", "add": "添加",
"remove": "移除", "remove": "移除",
"search": "搜索", "search": "Search...",
"noResults": "无结果", "noResults": "No notes found",
"required": "必填", "required": "必填",
"optional": "可选" "optional": "可选"
}, },
@@ -1982,7 +2013,9 @@
"searching": "搜索中...", "searching": "搜索中...",
"noNotesFoundForContext": "未找到与此问题相关的笔记。请用你的常识回答。", "noNotesFoundForContext": "未找到与此问题相关的笔记。请用你的常识回答。",
"webSearch": "网络搜索", "webSearch": "网络搜索",
"timeoutWarning": "Response is taking longer than expected..." "timeoutWarning": "Response is taking longer than expected...",
"quotaExceededBasic": "AI Chat is available from the PRO plan onwards.",
"quotaExceededTier": "Monthly quota reached for {tier} plan. It will reset next month."
}, },
"labHeader": { "labHeader": {
"title": "实验室", "title": "实验室",
@@ -2550,5 +2583,13 @@
"link2Href": "#" "link2Href": "#"
} }
} }
},
"noteHistory": {
"title": "Title",
"content": "Content",
"untitled": "Untitled",
"emptyState": "No versions available",
"selectVersion": "Select a version to preview its content",
"currentVersion": "current"
} }
} }