docs: add comprehensive Stripe billing guide
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 4s
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:
@@ -51,7 +51,7 @@ development_status:
|
||||
3-6-stripe-subscription-tiers: review
|
||||
epic-3-retrospective: optional
|
||||
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-3-data-portability: backlog
|
||||
4-4-explicit-ai-consent: backlog
|
||||
|
||||
451
docs/stripe-billing-guide.md
Normal file
451
docs/stripe-billing-guide.md
Normal 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).
|
||||
@@ -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.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.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 text-right">{t('admin.users.table.actions')}</th>
|
||||
</tr>
|
||||
|
||||
@@ -56,7 +56,7 @@ export function AppearanceSettingsClient({
|
||||
localStorage.setItem('theme-preference', next)
|
||||
applyDocumentTheme(next)
|
||||
await updateUserSettings({ theme: next })
|
||||
toast.success(t('settings.settingsSaved') || 'Saved')
|
||||
toast.success(t('settings.settingsSaved'))
|
||||
}
|
||||
|
||||
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' }
|
||||
document.documentElement.style.setProperty('--user-font-size', map[value] || '16px')
|
||||
await updateAISettings({ fontSize: value as any })
|
||||
toast.success(t('settings.settingsSaved') || 'Saved')
|
||||
toast.success(t('settings.settingsSaved'))
|
||||
}
|
||||
|
||||
const handleFontFamilyChange = async (value: string) => {
|
||||
@@ -80,7 +80,7 @@ export function AppearanceSettingsClient({
|
||||
if (font === 'playfair') root.classList.add('font-playfair')
|
||||
if (font === 'jetbrains') root.classList.add('font-jetbrains')
|
||||
await updateAISettings({ fontFamily: font as 'inter' | 'playfair' | 'jetbrains' | 'system' })
|
||||
toast.success(t('settings.settingsSaved') || 'Saved')
|
||||
toast.success(t('settings.settingsSaved'))
|
||||
}
|
||||
|
||||
const SelectCard = ({
|
||||
@@ -174,7 +174,7 @@ export function AppearanceSettingsClient({
|
||||
>
|
||||
<div className="space-y-10">
|
||||
<p className="text-[11px] font-bold uppercase tracking-[0.2em] text-muted-foreground">
|
||||
{t('appearance.description') || "Personnalisez l'interface"}
|
||||
{t('appearance.description')}
|
||||
</p>
|
||||
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||
@@ -186,8 +186,8 @@ export function AppearanceSettingsClient({
|
||||
<Palette size={20} />
|
||||
</div>
|
||||
<div className="space-y-0.5 text-left">
|
||||
<h4 className="text-base font-bold text-foreground">{t('appearance.accentColorTitle') || 'Couleur d\'accentuation'}</h4>
|
||||
<p className="text-[11px] text-muted-foreground leading-tight">{t('appearance.accentColorDescription') || 'Définissez la couleur principale de votre espace de travail'}</p>
|
||||
<h4 className="text-base font-bold text-foreground">{t('appearance.accentColorTitle')}</h4>
|
||||
<p className="text-[11px] text-muted-foreground leading-tight">{t('appearance.accentColorDescription')}</p>
|
||||
</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">
|
||||
@@ -264,14 +264,14 @@ export function AppearanceSettingsClient({
|
||||
|
||||
<SelectCard
|
||||
icon={Type}
|
||||
title={t('appearance.fontFamilyLabel') || 'Police'}
|
||||
description={t('appearance.fontFamilyDescription') || "Choisissez la police de l'application"}
|
||||
title={t('appearance.fontFamilyLabel')}
|
||||
description={t('appearance.fontFamilyDescription')}
|
||||
value={fontFamily}
|
||||
options={[
|
||||
{ value: 'inter', label: t('appearance.fontInterDefault') },
|
||||
{ value: 'playfair', label: t('appearance.fontPlayfairDisplay') },
|
||||
{ value: 'jetbrains', label: t('appearance.fontJetBrainsMono') },
|
||||
{ value: 'system', label: t('appearance.fontSystem') || 'Système' },
|
||||
{ value: 'system', label: t('appearance.fontSystem') },
|
||||
]}
|
||||
onChange={handleFontFamilyChange}
|
||||
/>
|
||||
|
||||
@@ -32,12 +32,12 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
|
||||
if (value === 'auto') {
|
||||
localStorage.removeItem('user-language')
|
||||
document.cookie = 'user-language=;path=/;max-age=0'
|
||||
toast.success(t('settings.languageAuto') || 'Language set to Auto')
|
||||
toast.success(t('settings.languageAuto'))
|
||||
} else {
|
||||
localStorage.setItem('user-language', value)
|
||||
document.cookie = `user-language=${value};path=/;max-age=${60 * 60 * 24 * 365};samesite=lax`
|
||||
setContextLanguage(value as any)
|
||||
toast.success(t('profile.languageUpdateSuccess') || 'Language updated')
|
||||
toast.success(t('profile.languageUpdateSuccess'))
|
||||
}
|
||||
setTimeout(() => router.refresh(), 300)
|
||||
}
|
||||
@@ -45,19 +45,19 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
|
||||
const handleEmailNotificationsChange = async (enabled: boolean) => {
|
||||
setEmailNotifications(enabled)
|
||||
await updateAISettings({ emailNotifications: enabled })
|
||||
toast.success(t('settings.settingsSaved') || 'Saved')
|
||||
toast.success(t('settings.settingsSaved'))
|
||||
}
|
||||
|
||||
const handleDesktopNotificationsChange = async (enabled: boolean) => {
|
||||
setDesktopNotifications(enabled)
|
||||
await updateAISettings({ desktopNotifications: enabled })
|
||||
toast.success(t('settings.settingsSaved') || 'Saved')
|
||||
toast.success(t('settings.settingsSaved'))
|
||||
}
|
||||
|
||||
const handleAutoSaveChange = async (enabled: boolean) => {
|
||||
setAutoSave(enabled)
|
||||
await updateAISettings({ autoSave: enabled })
|
||||
toast.success(t('settings.settingsSaved') || 'Saved')
|
||||
toast.success(t('settings.settingsSaved'))
|
||||
}
|
||||
|
||||
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"
|
||||
>
|
||||
<option value="auto">{t('profile.autoDetect')}</option>
|
||||
<option value="en">English</option>
|
||||
<option value="fr">Français</option>
|
||||
<option value="es">Español</option>
|
||||
<option value="de">Deutsch</option>
|
||||
<option value="fa">فارسی</option>
|
||||
<option value="it">Italiano</option>
|
||||
<option value="pt">Português</option>
|
||||
<option value="ru">Русский</option>
|
||||
<option value="zh">中文</option>
|
||||
<option value="ja">日本語</option>
|
||||
<option value="ko">한국어</option>
|
||||
<option value="ar">العربية</option>
|
||||
<option value="hi">हिन्दी</option>
|
||||
<option value="nl">Nederlands</option>
|
||||
<option value="pl">Polski</option>
|
||||
<option value="en">{t('languages.en')}</option>
|
||||
<option value="fr">{t('languages.fr')}</option>
|
||||
<option value="es">{t('languages.es')}</option>
|
||||
<option value="de">{t('languages.de')}</option>
|
||||
<option value="fa">{t('languages.fa')}</option>
|
||||
<option value="it">{t('languages.it')}</option>
|
||||
<option value="pt">{t('languages.pt')}</option>
|
||||
<option value="ru">{t('languages.ru')}</option>
|
||||
<option value="zh">{t('languages.zh')}</option>
|
||||
<option value="ja">{t('languages.ja')}</option>
|
||||
<option value="ko">{t('languages.ko')}</option>
|
||||
<option value="ar">{t('languages.ar')}</option>
|
||||
<option value="hi">{t('languages.hi')}</option>
|
||||
<option value="nl">{t('languages.nl')}</option>
|
||||
<option value="pl">{t('languages.pl')}</option>
|
||||
</select>
|
||||
<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">
|
||||
@@ -159,8 +159,8 @@ export function GeneralSettingsClient({ initialSettings }: GeneralSettingsClient
|
||||
|
||||
<div className="flex items-center justify-between pt-6">
|
||||
<div className="space-y-1">
|
||||
<p className="text-xs font-bold text-ink">{t('settings.autoSave') || 'Auto-Save'}</p>
|
||||
<p className="text-[10px] text-concrete leading-relaxed">{t('settings.autoSaveDesc') || 'Sauvegarder automatiquement les modifications'}</p>
|
||||
<p className="text-xs font-bold text-ink">{t('settings.autoSave')}</p>
|
||||
<p className="text-[10px] text-concrete leading-relaxed">{t('settings.autoSaveDesc')}</p>
|
||||
</div>
|
||||
<label className="relative inline-flex items-center cursor-pointer">
|
||||
<input
|
||||
|
||||
@@ -121,14 +121,14 @@ export function ProfileForm({ user }: { user: { name: string | null; email: stri
|
||||
{/* Preferences */}
|
||||
<div className="space-y-4">
|
||||
<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>
|
||||
<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">
|
||||
<Bell size={18} className="text-concrete" />
|
||||
<div>
|
||||
<p className="text-sm text-ink">{t('profile.desktopNotifications') || 'Notification bureau'}</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-sm text-ink">{t('profile.desktopNotifications')}</p>
|
||||
<p className="text-[10px] text-concrete font-light pe-4">{t('profile.desktopNotificationsDesc')}</p>
|
||||
</div>
|
||||
</div>
|
||||
<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"
|
||||
>
|
||||
<LogOut size={16} />
|
||||
{t('sidebar.signOut') || 'Déconnexion'}
|
||||
{t('sidebar.signOut')}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -62,7 +62,7 @@ export function TrashClient({
|
||||
const all: TrashItem[] = [
|
||||
...notes.map(n => ({
|
||||
id: n.id,
|
||||
title: n.title || t('notes.untitled') || 'Untitled',
|
||||
title: n.title || t('notes.untitled'),
|
||||
itemType: 'note' as const,
|
||||
deletedAt: (n as any).trashedAt || null,
|
||||
content: n.content,
|
||||
@@ -101,9 +101,9 @@ export function TrashClient({
|
||||
await restoreNb(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 {
|
||||
toast.error(t('trash.restoreError') || 'Failed to restore')
|
||||
toast.error(t('trash.restoreError'))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,22 +116,22 @@ export function TrashClient({
|
||||
await permDeleteNb(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 {
|
||||
toast.error(t('trash.deleteError') || 'Failed to delete')
|
||||
toast.error(t('trash.deleteError'))
|
||||
}
|
||||
}
|
||||
|
||||
const handleEmptyTrash = async () => {
|
||||
if (!window.confirm(t('trash.emptyTrashConfirm') || 'Empty trash? This is irreversible.')) return
|
||||
if (!window.confirm(t('trash.emptyTrashConfirm'))) return
|
||||
setIsEmptying(true)
|
||||
try {
|
||||
await emptyTrash()
|
||||
setNotes([])
|
||||
setNotebooks([])
|
||||
toast.success(t('trash.emptyTrashSuccess') || 'Trash emptied')
|
||||
toast.success(t('trash.emptyTrashSuccess'))
|
||||
} catch {
|
||||
toast.error(t('trash.deleteError') || 'Failed to empty trash')
|
||||
toast.error(t('trash.deleteError'))
|
||||
} finally {
|
||||
setIsEmptying(false)
|
||||
}
|
||||
@@ -143,10 +143,10 @@ export function TrashClient({
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="space-y-1">
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
|
||||
@@ -156,7 +156,7 @@ export function TrashClient({
|
||||
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"
|
||||
>
|
||||
{t('trash.emptyTrash') || 'Empty all'}
|
||||
{t('trash.emptyTrash')}
|
||||
</button>
|
||||
)}
|
||||
</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} />
|
||||
<input
|
||||
type="text"
|
||||
placeholder={t('common.search') || 'Search...'}
|
||||
placeholder={t('common.search')}
|
||||
value={searchQuery}
|
||||
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"
|
||||
@@ -181,7 +181,7 @@ export function TrashClient({
|
||||
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'}`}
|
||||
>
|
||||
{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>
|
||||
))}
|
||||
</div>
|
||||
@@ -220,12 +220,12 @@ export function TrashClient({
|
||||
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"
|
||||
>
|
||||
<RotateCcw size={12} /> {t('trash.restore') || 'Restore'}
|
||||
<RotateCcw size={12} /> {t('trash.restore')}
|
||||
</button>
|
||||
<button
|
||||
onClick={() => handlePermanentDelete(item)}
|
||||
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} />
|
||||
</button>
|
||||
@@ -238,7 +238,7 @@ export function TrashClient({
|
||||
</h3>
|
||||
<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'}`}>
|
||||
{daysLeft} {t('trash.daysRemaining') || 'DAYS LEFT'}
|
||||
{daysLeft} {t('trash.daysRemaining')}
|
||||
</div>
|
||||
{item.deletedAt && (
|
||||
<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="text-[9px] font-bold text-muted-foreground/40 uppercase tracking-widest">
|
||||
{t('trash.notebookContentPreserved') || 'Notebook content preserved'}
|
||||
{t('trash.notebookContentPreserved')}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
@@ -271,10 +271,10 @@ export function TrashClient({
|
||||
</div>
|
||||
<div className="space-y-2">
|
||||
<h2 className="text-2xl font-memento-serif text-foreground italic">
|
||||
{t('trash.empty') || 'Trash is empty'}
|
||||
{t('trash.empty')}
|
||||
</h2>
|
||||
<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>
|
||||
</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">
|
||||
<AlertCircle size={14} className="text-muted-foreground" />
|
||||
<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>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
@@ -58,13 +58,9 @@ export function AIChat({ showFloatingTrigger = true }: { showFloatingTrigger?: b
|
||||
if (parsed.error === 'QUOTA_EXCEEDED') {
|
||||
const isBasic = (parsed.currentTier || 'BASIC') === 'BASIC'
|
||||
toast.error(
|
||||
language === 'fr'
|
||||
? isBasic
|
||||
? 'Le chat IA est réservé au plan PRO et supérieur.'
|
||||
: `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.`,
|
||||
isBasic
|
||||
? t('chat.quotaExceededBasic')
|
||||
: t('chat.quotaExceededTier', { tier: parsed.currentTier }),
|
||||
{ duration: 8000 }
|
||||
)
|
||||
return
|
||||
|
||||
@@ -40,7 +40,7 @@ function getActionLabel(action: string, t: (key: string) => string | undefined):
|
||||
function timeAgo(dateStr: string, t: (key: string) => string | undefined): string {
|
||||
const diff = Date.now() - new Date(dateStr).getTime()
|
||||
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`
|
||||
const hours = Math.floor(mins / 60)
|
||||
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">
|
||||
<Activity size={14} className="text-orange-500" />
|
||||
<h3 className="text-[10px] font-bold uppercase tracking-[0.2em] text-foreground">
|
||||
{t('brainstorm.activityTitle') || 'Activity'}
|
||||
{t('brainstorm.activityTitle')}
|
||||
</h3>
|
||||
</div>
|
||||
<button
|
||||
@@ -78,7 +78,7 @@ export function ActivityFeed({ activities, isOpen, onToggle, t }: ActivityFeedPr
|
||||
{activities.length === 0 ? (
|
||||
<div className="p-6 text-center">
|
||||
<p className="text-xs italic text-muted-foreground">
|
||||
{t('brainstorm.noActivity') || 'No activity yet'}
|
||||
{t('brainstorm.noActivity')}
|
||||
</p>
|
||||
</div>
|
||||
) : (
|
||||
|
||||
@@ -289,7 +289,7 @@ export function BrainstormPage() {
|
||||
</motion.div>
|
||||
<div className="flex-1">
|
||||
<h1 className="text-4xl font-serif font-medium text-foreground tracking-tight">
|
||||
{t('brainstorm.title') || 'Waves of Thought'}
|
||||
{t('brainstorm.title')}
|
||||
</h1>
|
||||
<div className="flex items-center gap-2 mt-1">
|
||||
<span className="w-8 h-px bg-brand-accent/40" />
|
||||
|
||||
@@ -185,7 +185,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
handleNoteCreated(newNote)
|
||||
setEditingNote({ note: newNote, readOnly: false })
|
||||
} 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])
|
||||
|
||||
const sortLabels: Record<SortOrder, string> = {
|
||||
newest: t('sidebar.sortNewest') || 'Plus récentes',
|
||||
oldest: t('sidebar.sortOldest') || 'Plus anciennes',
|
||||
alpha: t('sidebar.sortAlpha') || 'A → Z',
|
||||
manual: t('sidebar.sortManual') || 'Libre',
|
||||
newest: t('sidebar.sortNewest'),
|
||||
oldest: t('sidebar.sortOldest'),
|
||||
alpha: t('sidebar.sortAlpha'),
|
||||
manual: t('sidebar.sortManual'),
|
||||
}
|
||||
|
||||
|
||||
@@ -495,9 +495,9 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
{currentNotebook
|
||||
? currentNotebook.name
|
||||
: searchParams.get('shared') === '1'
|
||||
? (t('sidebar.sharedWithMe') || 'Partagées avec moi')
|
||||
? t('sidebar.sharedWithMe')
|
||||
: searchParams.get('reminders') === '1'
|
||||
? (t('sidebar.reminders') || 'Rappels')
|
||||
? t('sidebar.reminders')
|
||||
: t('notes.title')}
|
||||
</h1>
|
||||
</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"
|
||||
>
|
||||
<Plus size={16} />
|
||||
<span>{t('notes.newNote') || 'Add Note'}</span>
|
||||
<span>{t('notes.newNote')}</span>
|
||||
</button>
|
||||
|
||||
{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"
|
||||
>
|
||||
<FolderOpen size={16} />
|
||||
<span>{t('notebook.createSubNotebook') || 'Nouveau sous-carnet'}</span>
|
||||
<span>{t('notebook.createSubNotebook')}</span>
|
||||
</button>
|
||||
)}
|
||||
|
||||
@@ -558,7 +558,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
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"
|
||||
/>
|
||||
{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"
|
||||
>
|
||||
<Search size={16} />
|
||||
<span>{t('notes.search') || 'Search'}</span>
|
||||
<span>{t('notes.search')}</span>
|
||||
</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"
|
||||
>
|
||||
<Sparkles size={16} />
|
||||
<span>{t('notes.reorganize') || 'Réorganiser les notes'}</span>
|
||||
<span>{t('notes.reorganize')}</span>
|
||||
</button>
|
||||
)}
|
||||
|
||||
@@ -622,7 +622,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
title={initialSettings.aiAssistantEnabled ? t('notebook.summary') : t('notebook.assistantRequiredForSummarize')}
|
||||
>
|
||||
<FileText size={16} />
|
||||
<span>{t('notebook.summary') || 'Summarize'}</span>
|
||||
<span>{t('notebook.summary')}</span>
|
||||
</button>
|
||||
)}
|
||||
<button
|
||||
@@ -640,7 +640,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
<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">
|
||||
<TagIcon size={12} />
|
||||
<span>{t('labels.filterByTags') || 'Filter by Tags'}</span>
|
||||
<span>{t('labels.filterByTags')}</span>
|
||||
{selectedTagIds.length > 0 && (
|
||||
<span className="bg-brand-accent/10 text-brand-accent px-2 py-0.5 rounded-full text-[9px] lowercase tracking-normal">
|
||||
{selectedTagIds.length} active
|
||||
@@ -650,7 +650,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
{availableTags.length > 10 && (
|
||||
<input
|
||||
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"
|
||||
value={tagSearchQuery}
|
||||
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"
|
||||
>
|
||||
{isTagsExpanded
|
||||
? (t('labels.showLess') || 'Show less')
|
||||
? t('labels.showLess')
|
||||
: `+ ${availableTags.length - 10} more`}
|
||||
</button>
|
||||
)}
|
||||
@@ -706,7 +706,7 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
onClick={() => setSelectedTagIds([])}
|
||||
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>
|
||||
)}
|
||||
</div>
|
||||
@@ -745,14 +745,14 @@ export function HomeClient({ initialNotes, initialSettings }: HomeClientProps) {
|
||||
{notes.length === 0 && (
|
||||
<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">
|
||||
{t('notes.emptyState') || 'This notebook is waiting for its first vision.'}
|
||||
{t('notes.emptyState')}
|
||||
</p>
|
||||
<button
|
||||
onClick={handleAddNote}
|
||||
disabled={isCreating}
|
||||
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>
|
||||
</div>
|
||||
)}
|
||||
|
||||
126
memento-note/components/legal/cookie-preferences-dialog.tsx
Normal file
126
memento-note/components/legal/cookie-preferences-dialog.tsx
Normal 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>
|
||||
}
|
||||
@@ -234,7 +234,7 @@ export function NoteActions({
|
||||
<DropdownMenuItem onClick={onOpenHistory}>
|
||||
<History className="h-4 w-4 mr-2" />
|
||||
{historyEnabled
|
||||
? (t('notes.history') || 'Historique')
|
||||
? t('notes.history')
|
||||
: (t('notes.enableHistory') || "Activer l'historique")}
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
|
||||
@@ -351,9 +351,9 @@ export const NoteCard = memo(function NoteCard({
|
||||
refreshNotes(note?.notebookId)
|
||||
|
||||
if (!note.isPinned) {
|
||||
toast.success(t('notes.pinned') || 'Note pinned')
|
||||
toast.success(t('notes.pinned'))
|
||||
} 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 */}
|
||||
<div
|
||||
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'}
|
||||
title={t('notes.dragToReorder') || 'Drag to reorder'}
|
||||
aria-label={t('notes.dragToReorder')}
|
||||
title={t('notes.dragToReorder')}
|
||||
>
|
||||
<GripVertical className="h-5 w-5 text-muted-foreground" />
|
||||
</div>
|
||||
@@ -563,7 +563,7 @@ export const NoteCard = memo(function NoteCard({
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem className="text-muted-foreground" onSelect={() => onCreateSubNotebook?.()}>
|
||||
<Plus className="h-4 w-4 me-2" />
|
||||
{t('notebook.createSubNotebook') || 'Nouveau sous-carnet…'}
|
||||
{t('notebook.createSubNotebook')}
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
@@ -605,7 +605,7 @@ export const NoteCard = memo(function NoteCard({
|
||||
<button
|
||||
onClick={handleRemoveFusedBadge}
|
||||
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" />
|
||||
</button>
|
||||
@@ -873,13 +873,13 @@ export const NoteCard = memo(function NoteCard({
|
||||
<AlertDialogHeader>
|
||||
<AlertDialogTitle>{t('notes.confirmDeleteTitle') || t('notes.delete')}</AlertDialogTitle>
|
||||
<AlertDialogDescription>
|
||||
{t('notes.confirmDelete') || 'Are you sure you want to delete this note?'}
|
||||
{t('notes.confirmDelete')}
|
||||
</AlertDialogDescription>
|
||||
</AlertDialogHeader>
|
||||
<AlertDialogFooter>
|
||||
<AlertDialogCancel>{t('common.cancel') || 'Cancel'}</AlertDialogCancel>
|
||||
<AlertDialogCancel>{t('common.cancel')}</AlertDialogCancel>
|
||||
<AlertDialogAction variant="destructive" onClick={handleDelete}>
|
||||
{t('notes.delete') || 'Delete'}
|
||||
{t('notes.delete')}
|
||||
</AlertDialogAction>
|
||||
</AlertDialogFooter>
|
||||
</AlertDialogContent>
|
||||
|
||||
@@ -48,6 +48,7 @@ function fmtDate(date: Date | string, language: string): string {
|
||||
}
|
||||
|
||||
function VersionPreview({ entry, language }: { entry: NoteHistoryEntry; language: string }) {
|
||||
const { t } = useLanguage()
|
||||
const isMd = entry.type === 'markdown' || entry.isMarkdown
|
||||
const isCl = entry.type === 'checklist'
|
||||
const isRt = entry.type === 'richtext'
|
||||
@@ -56,15 +57,15 @@ function VersionPreview({ entry, language }: { entry: NoteHistoryEntry; language
|
||||
<div className="space-y-4">
|
||||
<div>
|
||||
<p className="text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1">
|
||||
{language === 'fr' ? 'Titre' : 'Title'}
|
||||
{t('noteHistory.title')}
|
||||
</p>
|
||||
<p className="text-sm text-foreground font-medium">
|
||||
{entry.title || (language === 'fr' ? 'Sans titre' : 'Untitled')}
|
||||
{entry.title || t('noteHistory.untitled')}
|
||||
</p>
|
||||
</div>
|
||||
<div>
|
||||
<p className="text-[11px] font-semibold uppercase tracking-wider text-muted-foreground mb-1">
|
||||
{language === 'fr' ? 'Contenu' : 'Content'}
|
||||
{t('noteHistory.content')}
|
||||
</p>
|
||||
<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 ? (
|
||||
|
||||
@@ -222,7 +222,7 @@ export function BillingPlans() {
|
||||
buttonClass: effectiveTier === 'ENTERPRISE'
|
||||
? 'bg-paper text-concrete cursor-default'
|
||||
: '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'; },
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
@@ -298,21 +298,21 @@ function SidebarCarnetItem({
|
||||
<button
|
||||
onClick={(e) => { e.stopPropagation(); onAddSubNotebook() }}
|
||||
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} />
|
||||
</button>
|
||||
<button
|
||||
onClick={(e) => { e.stopPropagation(); onRename() }}
|
||||
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} />
|
||||
</button>
|
||||
<button
|
||||
onClick={(e) => { e.stopPropagation(); onDelete() }}
|
||||
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} />
|
||||
</button>
|
||||
@@ -399,7 +399,7 @@ function SidebarCarnetItem({
|
||||
))}
|
||||
{isActive && notes.length === 0 && !hasChildren && (
|
||||
<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>
|
||||
)}
|
||||
</div>
|
||||
@@ -583,7 +583,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
try {
|
||||
await moveNotebookToParent(dragId, targetId)
|
||||
} 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)
|
||||
}
|
||||
}
|
||||
@@ -602,7 +602,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
try {
|
||||
await moveNotebookToParent(dragId, null)
|
||||
} 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)
|
||||
}
|
||||
}
|
||||
@@ -835,14 +835,14 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
<DropdownMenuItem asChild>
|
||||
<Link href="/settings/profile" className="flex items-center gap-2 cursor-pointer">
|
||||
<User className="h-4 w-4" />
|
||||
{t('sidebar.profile') || 'Profil'}
|
||||
{t('sidebar.profile')}
|
||||
</Link>
|
||||
</DropdownMenuItem>
|
||||
{(user as { role?: string } | undefined)?.role === 'ADMIN' && (
|
||||
<DropdownMenuItem asChild>
|
||||
<a href="/admin" className="flex items-center gap-2 cursor-pointer">
|
||||
<Shield className="h-4 w-4" />
|
||||
{t('nav.adminDashboard') || 'Administration'}
|
||||
{t('nav.adminDashboard')}
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
)}
|
||||
@@ -852,7 +852,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
onClick={() => signOut({ callbackUrl: '/login' })}
|
||||
>
|
||||
<LogOut className="h-4 w-4 me-2" />
|
||||
{t('sidebar.signOut') || 'Se déconnecter'}
|
||||
{t('sidebar.signOut')}
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
@@ -873,7 +873,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
<button
|
||||
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"
|
||||
title={t('nav.home') || 'Accueil'}
|
||||
title={t('nav.home')}
|
||||
>
|
||||
<Home size={14} />
|
||||
</button>
|
||||
@@ -1016,7 +1016,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
<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"
|
||||
>
|
||||
{t('sidebar.dropToRoot') || 'Drop here to move to root'}
|
||||
{t('sidebar.dropToRoot')}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
@@ -1034,7 +1034,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
</p>
|
||||
<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" />
|
||||
<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>
|
||||
</motion.div>
|
||||
) : 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'} />
|
||||
<span>{t('sidebar.sharedWithMe') || 'Shared'}</span>
|
||||
<span>{t('sidebar.sharedWithMe')}</span>
|
||||
</Link>
|
||||
|
||||
<Link
|
||||
@@ -1175,7 +1175,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<h3 className="text-sm font-semibold mb-4 font-memento-serif">
|
||||
{t('notebook.rename') || 'Rename notebook'}
|
||||
{t('notebook.rename')}
|
||||
</h3>
|
||||
<input
|
||||
autoFocus
|
||||
@@ -1183,7 +1183,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
onChange={(e) => setRenameValue(e.target.value)}
|
||||
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"
|
||||
placeholder={t('notebook.namePlaceholder') || 'Notebook name'}
|
||||
placeholder={t('notebook.namePlaceholder')}
|
||||
/>
|
||||
<div className="flex justify-end gap-2 mt-4">
|
||||
<button
|
||||
@@ -1191,14 +1191,14 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
disabled={isRenaming}
|
||||
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
|
||||
onClick={handleConfirmRename}
|
||||
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"
|
||||
>
|
||||
{isRenaming ? '...' : (t('common.confirm') || 'Rename')}
|
||||
{isRenaming ? '...' : t('notebook.confirmRename')}
|
||||
</button>
|
||||
</div>
|
||||
</motion.div>
|
||||
@@ -1228,7 +1228,7 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
<Trash2 size={16} className="text-red-500" />
|
||||
</div>
|
||||
<h3 className="text-sm font-semibold mb-1 font-memento-serif">
|
||||
{t('notebook.trashTitle') || 'Move to trash'}
|
||||
{t('notebook.trashTitle')}
|
||||
</h3>
|
||||
<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.`}
|
||||
@@ -1244,14 +1244,14 @@ export function Sidebar({ className, user }: { className?: string; user?: any })
|
||||
disabled={isDeleting}
|
||||
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
|
||||
onClick={handleConfirmDelete}
|
||||
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"
|
||||
>
|
||||
{isDeleting ? '...' : (t('notebook.moveToTrash') || 'Move to trash')}
|
||||
{isDeleting ? '...' : t('notebook.moveToTrash')}
|
||||
</button>
|
||||
</div>
|
||||
</motion.div>
|
||||
|
||||
@@ -188,7 +188,7 @@ export function UsageMeter({ className }: UsageMeterProps) {
|
||||
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"
|
||||
>
|
||||
{t('usageMeter.upgradePricing') || 'Passer à Pro'}
|
||||
{t('usageMeter.upgradePricing')}
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
|
||||
40
memento-note/hooks/use-cookie-consent.ts
Normal file
40
memento-note/hooks/use-cookie-consent.ts
Normal 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(),
|
||||
}
|
||||
}
|
||||
17
memento-note/lib/analytics/track.ts
Normal file
17
memento-note/lib/analytics/track.ts
Normal 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
|
||||
}
|
||||
112
memento-note/lib/consent/cookie-consent.ts
Normal file
112
memento-note/lib/consent/cookie-consent.ts
Normal 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))
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "الأقدم أولاً",
|
||||
"sortAlpha": "أ → ز",
|
||||
"accountMenu": "قائمة الحساب",
|
||||
"profile": "حساب تعريفي",
|
||||
"signOut": "تسجيل الخروج",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "ترتيب الترتيب",
|
||||
"freezePinnedNotebook": "تثبيت ترتيب الشريط الجانبي للكمبيوتر الدفتري",
|
||||
"unfreezePinnedNotebook": "قم بإزالة تثبيت ترتيب الشريط الجانبي للكمبيوتر الدفتري",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "إعادة تسمية",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "ترتيب حر",
|
||||
"moveFailed": "فشل نقل دفتر الملاحظات",
|
||||
"dropToRoot": "أفلت هنا للنقل إلى الجذر"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "الملاحظات",
|
||||
"newNote": "ملاحظة جديدة",
|
||||
"reorganize": "إعادة تنظيم الملاحظات",
|
||||
"untitled": "بدون عنوان",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "اكتب ملاحظة...",
|
||||
"markdownPlaceholder": "اكتب ملاحظة... (Markdown مدعوم)",
|
||||
"titlePlaceholder": "العنوان",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "إضافة",
|
||||
"adding": "جاري الإضافة...",
|
||||
"close": "إغلاق",
|
||||
"confirmDelete": "هل أنت متأكد أنك تريد حذف هذه الملاحظة؟",
|
||||
"confirmDelete": "Are you sure you want to delete this note?",
|
||||
"confirmLeaveShare": "هل أنت متأكد أنك تريد مغادرة هذه الملاحظة المشتركة؟",
|
||||
"sharedBy": "شاركها",
|
||||
"sharedShort": "مشترك",
|
||||
"leaveShare": "مغادرة",
|
||||
"delete": "حذف",
|
||||
"delete": "Delete",
|
||||
"archive": "أرشفة",
|
||||
"unarchive": "إلغاء الأرشفة",
|
||||
"pin": "تثبيت",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "نسخ",
|
||||
"share": "مشاركة",
|
||||
"showCollaborators": "إظهار المتعاونين",
|
||||
"pinned": "مثبتة",
|
||||
"pinned": "Note pinned",
|
||||
"others": "أخرى",
|
||||
"noNotes": "لا توجد ملاحظات",
|
||||
"noNotesFound": "لم يتم العثور على ملاحظات",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "الحديثة",
|
||||
"addNote": "إضافة ملاحظة",
|
||||
"readMore": "اقرأ المزيد",
|
||||
"remove": "إزالة",
|
||||
"dragToReorder": "اسحب لإعادة الترتيب",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "المزيد",
|
||||
"emptyState": "لا توجد ملاحظات",
|
||||
"metadataPanel": "تفاصيل",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "فشل التحسين",
|
||||
"transformFailed": "فشل التحويل",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "غير مثبت",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "إعادة (Ctrl+Y)",
|
||||
"undoShortcut": "تراجع (Ctrl+Z)",
|
||||
"reorderTabs": "إعادة ترتيب علامة التبويب",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "فشل التنزيل"
|
||||
},
|
||||
"nav": {
|
||||
"home": "الرئيسية",
|
||||
"home": "Home",
|
||||
"notes": "الملاحظات",
|
||||
"notebooks": "الدفاتر",
|
||||
"generalNotes": "الملاحظات العامة",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "إعدادات الذكاء الاصطناعي",
|
||||
"logout": "تسجيل الخروج",
|
||||
"login": "تسجيل الدخول",
|
||||
"adminDashboard": "لوحة تحكم المشرف",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "التشخيص",
|
||||
"trash": "المهملات",
|
||||
"support": "دعم Memento ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "خطة احترافية",
|
||||
"chat": "دردشة الذكاء الاصطناعي",
|
||||
"lab": "المختبر",
|
||||
"agents": "الوكلاء"
|
||||
"agents": "الوكلاء",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "الإعدادات",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "الأمان",
|
||||
"about": "حول",
|
||||
"version": "الإصدار",
|
||||
"settingsSaved": "تم حفظ الإعدادات",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "حجم الملاحظة",
|
||||
"cardSizeModeDescription": "اختر بين أحجام متغيرة أو حجم موحد",
|
||||
"selectCardSizeMode": "اختر وضع العرض",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "إنشاء متجهات لجميع الملاحظات لتفعيل البحث القائم على النية",
|
||||
"profile": "الملف الشخصي",
|
||||
"searchNoResults": "لم يتم العثور على إعدادات مطابقة",
|
||||
"languageAuto": "الكشف التلقائي",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "إشعارات البريد الإلكتروني",
|
||||
"emailNotificationsDesc": "تلقي إشعارات مهمة عبر البريد الإلكتروني",
|
||||
"desktopNotifications": "إشعارات سطح المكتب",
|
||||
"desktopNotificationsDesc": "تلقي إشعارات في المتصفح",
|
||||
"notificationsDesc": "إدارة تفضيلات الإشعارات",
|
||||
"autoSave": "الحفظ التلقائي",
|
||||
"autoSaveDesc": "حفظ التغييرات تلقائيًا أثناء الكتابة"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "الملف الشخصي",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "اللغة المفضلة",
|
||||
"selectLanguage": "اختر لغة",
|
||||
"languageDescription": "سيتم استخدام هذه اللغة لميزات الذكاء الاصطناعي وتحليل المحتوى ونص الواجهة.",
|
||||
"autoDetect": "الكشف التلقائي",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "تم تحديث الملف الشخصي",
|
||||
"updateFailed": "فشل في تحديث الملف الشخصي",
|
||||
"languageUpdateSuccess": "تم تحديث اللغة بنجاح",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "فشل في تحديث اللغة",
|
||||
"profileUpdated": "تم تحديث الملف الشخصي",
|
||||
"profileError": "خطأ في تحديث الملف الشخصي",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "جاري التحميل...",
|
||||
"save": "حفظ",
|
||||
"cancel": "إلغاء",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "إضافة",
|
||||
"edit": "تعديل",
|
||||
"confirm": "تأكيد",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "إنشاء دفتر جديد",
|
||||
"createDescription": "ابدأ مجموعة جديدة لتنظيم ملاحظاتك وأفكارك ومشاريعك بكفاءة.",
|
||||
"name": "اسم الدفتر",
|
||||
"namePlaceholder": "مثال: استراتيجية التسويق الربع سنوية",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "دفتري",
|
||||
"saving": "جاري الحفظ...",
|
||||
"selectIcon": "الأيقونة",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "جاري الإنشاء...",
|
||||
"edit": "تحرير الدفتر",
|
||||
"editDescription": "تغيير اسم الدفتر وأيقونته ولونه.",
|
||||
"delete": "حذف الدفتر",
|
||||
"delete": "Delete",
|
||||
"deleteWarning": "هل أنت متأكد أنك تريد حذف هذا الدفتر؟ سيتم نقل الملاحظات إلى الملاحظات العامة.",
|
||||
"deleteConfirm": "حذف",
|
||||
"summary": "ملخص الدفتر",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "دفتر ملاحظات مثبت — تم تجميد الطلب",
|
||||
"organizeNotebookWithAITooltip": "قم بتنظيم دفتر الملاحظات هذا باستخدام الذكاء الاصطناعي",
|
||||
"assistantRequiredForSummarize": "قم بتشغيل AI Assistant في الإعدادات للتلخيص",
|
||||
"createSubnotebook": "إضافة دفتر فرعي"
|
||||
"createSubnotebook": "إضافة دفتر فرعي",
|
||||
"createSubNotebook": "Add sub-notebook",
|
||||
"rename": "Rename",
|
||||
"moveToTrash": "Move to trash"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "النقل إلى {name}؟",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "المظهر",
|
||||
"description": "تخصيص مظهر التطبيق",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "اختر كيفية عرض الملاحظات على الصفحة الرئيسية وفي الدفاتر.",
|
||||
"notesViewLabel": "عرض الملاحظات",
|
||||
"notesViewTabs": "علامات تبويب (نمط OneNote)",
|
||||
"notesViewMasonry": "بطاقات (شبكة)",
|
||||
"notesViewList": "قائمة (مجلة)",
|
||||
"selectTheme": "اختر المظهر",
|
||||
"fontFamilyLabel": "عائلة الخطوط",
|
||||
"fontFamilyDescription": "اختر الخط المستخدم في جميع أنحاء التطبيق",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter مُحسّن لسهولة القراءة، النظام يستخدم الخط الأصلي لنظام التشغيل",
|
||||
"fontSystem": "الخط الافتراضي للنظام",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "سلة المحذوفات",
|
||||
"empty": "سلة المحذوفات فارغة",
|
||||
"emptyDescription": "ستظهر الملاحظات المحذوفة هنا",
|
||||
"restore": "استعادة",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "حذف نهائي",
|
||||
"noteTrashed": "تم نقل الملاحظة إلى سلة المحذوفات",
|
||||
"noteRestored": "تم استعادة الملاحظة",
|
||||
"notePermanentlyDeleted": "تم حذف الملاحظة نهائيًا",
|
||||
"emptyTrash": "إفراغ سلة المحذوفات",
|
||||
"emptyTrashConfirm": "حذف جميع الملاحظات في سلة المحذوفات نهائيًا؟",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "تم إفراغ سلة المحذوفات",
|
||||
"permanentDelete": "حذف نهائي",
|
||||
"permanentDeleteConfirm": "سيتم حذف هذه الملاحظة نهائيًا. لا يمكن التراجع عن هذا الإجراء."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "الخصوصية",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "الصينية",
|
||||
"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": {
|
||||
"unknown": "غير معروف",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "جاري التحميل...",
|
||||
"error": "خطأ",
|
||||
"success": "نجاح",
|
||||
"confirm": "تأكيد",
|
||||
"cancel": "إلغاء",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "إغلاق",
|
||||
"save": "حفظ",
|
||||
"delete": "حذف",
|
||||
"edit": "تعديل",
|
||||
"add": "إضافة",
|
||||
"remove": "إزالة",
|
||||
"search": "بحث",
|
||||
"noResults": "لا توجد نتائج",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "مطلوب",
|
||||
"optional": "اختياري"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "جاري البحث...",
|
||||
"noNotesFoundForContext": "لم يتم العثور على ملاحظات ذات صلة لهذا السؤال. أجب باستخدام معرفتك العامة.",
|
||||
"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": {
|
||||
"title": "المختبر",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "Älteste zuerst",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "Kontomenü",
|
||||
"profile": "Profil",
|
||||
"signOut": "Abmelden",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "Sortierreihenfolge",
|
||||
"freezePinnedNotebook": "Pin-Reihenfolge in der Seitenleiste des Notizbuchs",
|
||||
"unfreezePinnedNotebook": "Pinnwandreihenfolge in der Notizbuch-Seitenleiste aufheben",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "Umbenennen",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Freie Anordnung",
|
||||
"moveFailed": "Verschieben fehlgeschlagen",
|
||||
"dropToRoot": "Hier ablegen für Hauptebene"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notizen",
|
||||
"newNote": "Neue Notiz",
|
||||
"reorganize": "Notizen neu organisieren",
|
||||
"untitled": "Unbenannt",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "Notiz machen...",
|
||||
"markdownPlaceholder": "Notiz machen... (Markdown unterstützt)",
|
||||
"titlePlaceholder": "Titel",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "Hinzufügen",
|
||||
"adding": "Wird hinzugefügt...",
|
||||
"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?",
|
||||
"sharedBy": "Geteilt von",
|
||||
"sharedShort": "Geteilt",
|
||||
"leaveShare": "Verlassen",
|
||||
"delete": "Löschen",
|
||||
"delete": "Delete",
|
||||
"archive": "Archivieren",
|
||||
"unarchive": "Aus Archiv entfernen",
|
||||
"pin": "Anheften",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "Duplizieren",
|
||||
"share": "Teilen",
|
||||
"showCollaborators": "Mitarbeiter anzeigen",
|
||||
"pinned": "Angeheftet",
|
||||
"pinned": "Note pinned",
|
||||
"others": "Andere",
|
||||
"noNotes": "Keine Notizen",
|
||||
"noNotesFound": "Keine Notizen gefunden",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "Aktuell",
|
||||
"addNote": "Notiz hinzufügen",
|
||||
"readMore": "Weiterlesen",
|
||||
"remove": "Entfernen",
|
||||
"dragToReorder": "Ziehen zum Neuanordnen",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "Mehr",
|
||||
"emptyState": "Keine Notizen vorhanden",
|
||||
"metadataPanel": "Einzelheiten",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "Verbesserung fehlgeschlagen",
|
||||
"transformFailed": "Umwandlung fehlgeschlagen",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "Nicht angepinnt",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "Wiederholen (Strg+Y)",
|
||||
"undoShortcut": "Rückgängig (Strg+Z)",
|
||||
"reorderTabs": "Tab umsortieren",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "Der Download ist fehlgeschlagen"
|
||||
},
|
||||
"nav": {
|
||||
"home": "Startseite",
|
||||
"home": "Home",
|
||||
"notes": "Notizen",
|
||||
"notebooks": "Notizbücher",
|
||||
"generalNotes": "Allgemeine Notizen",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "KI-Einstellungen",
|
||||
"logout": "Abmelden",
|
||||
"login": "Anmelden",
|
||||
"adminDashboard": "Admin-Dashboard",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "Diagnose",
|
||||
"trash": "Papierkorb",
|
||||
"support": "Memento unterstützen ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "Pro Plan",
|
||||
"chat": "KI-Chat",
|
||||
"lab": "Das Labor",
|
||||
"agents": "Agenten"
|
||||
"agents": "Agenten",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Einstellungen",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "Sicherheit",
|
||||
"about": "Über",
|
||||
"version": "Version",
|
||||
"settingsSaved": "Einstellungen gespeichert",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
|
||||
"profile": "Profil",
|
||||
"searchNoResults": "Keine Ergebnisse gefunden",
|
||||
"languageAuto": "Automatisch",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "E-Mail-Benachrichtigungen",
|
||||
"emailNotificationsDesc": "Wichtige Benachrichtigungen per E-Mail erhalten",
|
||||
"desktopNotifications": "Desktop-Benachrichtigungen",
|
||||
"desktopNotificationsDesc": "Benachrichtigungen im Browser erhalten",
|
||||
"notificationsDesc": "Verwalten Sie Ihre Benachrichtigungseinstellungen",
|
||||
"autoSave": "Automatisch speichern",
|
||||
"autoSaveDesc": "Änderungen während der Eingabe automatisch speichern"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profil",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "Bevorzugte Sprache",
|
||||
"selectLanguage": "Sprache auswählen",
|
||||
"languageDescription": "Diese Sprache wird für KI-gesteuerte Funktionen, Inhaltsanalyse und Oberflächentext verwendet.",
|
||||
"autoDetect": "Automatische Erkennung",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "Profil aktualisiert",
|
||||
"updateFailed": "Fehler beim Aktualisieren des Profils",
|
||||
"languageUpdateSuccess": "Sprache erfolgreich aktualisiert",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "Fehler beim Aktualisieren der Sprache",
|
||||
"profileUpdated": "Profil aktualisiert",
|
||||
"profileError": "Fehler beim Aktualisieren des Profils",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "Wird geladen...",
|
||||
"save": "Speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "Hinzufügen",
|
||||
"edit": "Bearbeiten",
|
||||
"confirm": "Bestätigen",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "Neues Notizbuch erstellen",
|
||||
"createDescription": "Starten Sie eine neue Sammlung, um Ihre Notizen, Ideen und Projekte effizient zu organisieren.",
|
||||
"name": "Notizbuch-Name",
|
||||
"namePlaceholder": "z.B. Q4 Marketing-Strategie",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "Mein Notizbuch",
|
||||
"saving": "Speichern...",
|
||||
"selectIcon": "Symbol",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "Erstellen...",
|
||||
"edit": "Notizbuch bearbeiten",
|
||||
"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.",
|
||||
"deleteConfirm": "Löschen",
|
||||
"summary": "Notizbuch-Zusammenfassung",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "Angeheftetes Notizbuch – Bestellung eingefroren",
|
||||
"organizeNotebookWithAITooltip": "Organisieren Sie dieses Notizbuch mit KI",
|
||||
"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": {
|
||||
"title": "Nach {name} verschieben?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"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.",
|
||||
"notesViewLabel": "Notizen-Ansicht",
|
||||
"notesViewTabs": "Tabs (OneNote-Stil)",
|
||||
"notesViewMasonry": "Karten (Raster)",
|
||||
"notesViewList": "Liste (Magazin)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Schriftfamilie",
|
||||
"fontFamilyDescription": "Wählen Sie die im gesamten Programm verwendete Schriftart",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter ist für Lesbarkeit optimiert, System verwendet die native Schriftart Ihres Betriebssystems",
|
||||
"fontSystem": "Standardsystemschriftart",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Papierkorb",
|
||||
"empty": "Der Papierkorb ist leer",
|
||||
"emptyDescription": "Gelöschte Notizen werden hier angezeigt",
|
||||
"restore": "Wiederherstellen",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Dauerhaft löschen",
|
||||
"noteTrashed": "Notiz in den Papierkorb verschoben",
|
||||
"noteRestored": "Notiz wiederhergestellt",
|
||||
"notePermanentlyDeleted": "Notiz dauerhaft gelöscht",
|
||||
"emptyTrash": "Papierkorb leeren",
|
||||
"emptyTrashConfirm": "Alle Notizen im Papierkorb dauerhaft löschen?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Papierkorb geleert",
|
||||
"permanentDelete": "Dauerhaft löschen",
|
||||
"permanentDeleteConfirm": "Diese Notiz wird dauerhaft gelöscht. Diese Aktion kann nicht rückgängig gemacht werden."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Datenschutz",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "chinesisch",
|
||||
"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": {
|
||||
"unknown": "Unbekannt",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "Wird geladen...",
|
||||
"error": "Fehler",
|
||||
"success": "Erfolg",
|
||||
"confirm": "Bestätigen",
|
||||
"cancel": "Abbrechen",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "Schließen",
|
||||
"save": "Speichern",
|
||||
"delete": "Löschen",
|
||||
"edit": "Bearbeiten",
|
||||
"add": "Hinzufügen",
|
||||
"remove": "Entfernen",
|
||||
"search": "Suchen",
|
||||
"noResults": "Keine Ergebnisse",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Erforderlich",
|
||||
"optional": "Optional"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "Wird gesucht...",
|
||||
"noNotesFoundForContext": "Keine relevanten Notizen für diese Frage gefunden. Antworte mit deinem Allgemeinwissen.",
|
||||
"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": {
|
||||
"title": "Das Labor",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,7 +66,8 @@
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Custom order",
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root"
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notes",
|
||||
@@ -789,7 +790,8 @@
|
||||
"proPlan": "Pro Plan",
|
||||
"chat": "AI Chat",
|
||||
"lab": "The Workshop",
|
||||
"agents": "Agents"
|
||||
"agents": "Agents",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
@@ -891,7 +893,10 @@
|
||||
"showRecentNotesDescription": "Display recent notes (last 7 days) on the main page",
|
||||
"recentNotesUpdateSuccess": "Recent notes setting updated successfully",
|
||||
"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": {
|
||||
"title": "AI",
|
||||
@@ -988,7 +993,7 @@
|
||||
"createNew": "Create New Notebook",
|
||||
"createDescription": "Start a new collection to organize your notes, ideas, and projects efficiently.",
|
||||
"name": "Notebook Name",
|
||||
"namePlaceholder": "e.g. Q4 Marketing Strategy",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "My Notebook",
|
||||
"saving": "Saving...",
|
||||
"selectIcon": "Icon",
|
||||
@@ -997,7 +1002,7 @@
|
||||
"creating": "Creating...",
|
||||
"edit": "Edit 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.",
|
||||
"deleteConfirm": "Delete",
|
||||
"summary": "Notebook Summary",
|
||||
@@ -1016,7 +1021,10 @@
|
||||
"pinnedFrozenTooltip": "Pinned notebook — order frozen",
|
||||
"organizeNotebookWithAITooltip": "Organize this notebook with AI",
|
||||
"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": {
|
||||
"title": "Move to {name}?",
|
||||
@@ -1435,21 +1443,23 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Appearance",
|
||||
"description": "Customize how the app looks",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "Choose how notes are shown on home and in notebooks.",
|
||||
"notesViewLabel": "Notes layout",
|
||||
"notesViewTabs": "Tabs (OneNote-style)",
|
||||
"notesViewMasonry": "Cards (grid)",
|
||||
"notesViewList": "List (magazine)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Font Family",
|
||||
"fontFamilyDescription": "Choose the font used throughout the app",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter is optimized for readability, System uses your OS native font",
|
||||
"fontSystem": "System Default",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"tab": "Appearance"
|
||||
"tab": "Appearance",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"usageMeter": {
|
||||
"packName": "AI Discovery Pack",
|
||||
@@ -1507,18 +1517,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Trash",
|
||||
"empty": "The trash is empty",
|
||||
"emptyDescription": "Deleted notes will appear here",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Delete Permanently",
|
||||
"noteTrashed": "Note moved to trash",
|
||||
"noteRestored": "Note restored",
|
||||
"notePermanentlyDeleted": "Note permanently deleted",
|
||||
"emptyTrash": "Empty Trash",
|
||||
"emptyTrashConfirm": "Permanently delete all notes in the trash?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Trash emptied",
|
||||
"permanentDelete": "Delete Permanently",
|
||||
"permanentDeleteConfirm": "This note will be permanently deleted. This action cannot be undone."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Privacy",
|
||||
@@ -1613,7 +1631,23 @@
|
||||
"chinese": "Chinese",
|
||||
"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": {
|
||||
"unknown": "Unknown",
|
||||
@@ -1629,8 +1663,8 @@
|
||||
"edit": "Edit",
|
||||
"add": "Add",
|
||||
"remove": "Remove",
|
||||
"search": "Search",
|
||||
"noResults": "No results",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Required",
|
||||
"optional": "Optional"
|
||||
},
|
||||
@@ -2012,7 +2046,9 @@
|
||||
"searching": "Searching...",
|
||||
"noNotesFoundForContext": "No relevant notes found for this question. Answer with your general knowledge.",
|
||||
"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": {
|
||||
"title": "The Workshop",
|
||||
@@ -2562,5 +2598,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "El más viejo primero",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "Menú de cuenta",
|
||||
"profile": "Perfil",
|
||||
"signOut": "desconectar",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "orden de clasificación",
|
||||
"freezePinnedNotebook": "Orden de fijación de la barra lateral del cuaderno",
|
||||
"unfreezePinnedNotebook": "Desanclar el orden de la barra lateral del cuaderno",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "Rebautizar",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Orden libre",
|
||||
"moveFailed": "Error al mover el cuaderno",
|
||||
"dropToRoot": "Soltar aquí para mover a la raíz"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notas",
|
||||
"newNote": "Nueva nota",
|
||||
"reorganize": "Reorganizar notas",
|
||||
"untitled": "Sin título",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "Toma una nota...",
|
||||
"markdownPlaceholder": "Toma una nota... (Markdown compatible)",
|
||||
"titlePlaceholder": "Título",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "Agregar",
|
||||
"adding": "Agregando...",
|
||||
"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?",
|
||||
"sharedBy": "Compartido por",
|
||||
"sharedShort": "Compartido",
|
||||
"leaveShare": "Abandonar",
|
||||
"delete": "Eliminar",
|
||||
"delete": "Delete",
|
||||
"archive": "Archivar",
|
||||
"unarchive": "Desarchivar",
|
||||
"pin": "Fijar",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "Duplicar",
|
||||
"share": "Compartir",
|
||||
"showCollaborators": "Mostrar colaboradores",
|
||||
"pinned": "Fijadas",
|
||||
"pinned": "Note pinned",
|
||||
"others": "Otros",
|
||||
"noNotes": "Sin notas",
|
||||
"noNotesFound": "No se encontraron notas",
|
||||
@@ -160,7 +161,7 @@
|
||||
"addNote": "Agregar nota",
|
||||
"readMore": "Leer más",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Arrastra para reordenar",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "Más",
|
||||
"emptyState": "Sin notas",
|
||||
"metadataPanel": "Detalles",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "Error al mejorar",
|
||||
"transformFailed": "Error al transformar",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "Desfijadas",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "Rehacer (Ctrl+Y)",
|
||||
"undoShortcut": "Deshacer (Ctrl+Z)",
|
||||
"reorderTabs": "Reordenar pestaña",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "Descarga fallida"
|
||||
},
|
||||
"nav": {
|
||||
"home": "Inicio",
|
||||
"home": "Home",
|
||||
"notes": "Notas",
|
||||
"notebooks": "Cuadernos",
|
||||
"generalNotes": "Notas generales",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "Configuración IA",
|
||||
"logout": "Cerrar sesión",
|
||||
"login": "Iniciar sesión",
|
||||
"adminDashboard": "Panel de administración",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "Diagnósticos",
|
||||
"trash": "Papelera",
|
||||
"support": "Apoyar Memento ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "Plan Pro",
|
||||
"chat": "Chat IA",
|
||||
"lab": "El Laboratorio",
|
||||
"agents": "Agentes"
|
||||
"agents": "Agentes",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Configuración",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "Seguridad",
|
||||
"about": "Acerca de",
|
||||
"version": "Versión",
|
||||
"settingsSaved": "Configuración guardada",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
|
||||
"profile": "Perfil",
|
||||
"searchNoResults": "Sin resultados de búsqueda",
|
||||
"languageAuto": "Automático",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "Notificaciones por correo",
|
||||
"emailNotificationsDesc": "Recibir notificaciones importantes por correo",
|
||||
"desktopNotifications": "Notificaciones de escritorio",
|
||||
"desktopNotificationsDesc": "Recibir notificaciones en el navegador",
|
||||
"notificationsDesc": "Gestiona tus preferencias de notificaciones",
|
||||
"autoSave": "Guardar automáticamente",
|
||||
"autoSaveDesc": "Guarda automáticamente los cambios mientras escribes"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Perfil",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "Idioma preferido",
|
||||
"selectLanguage": "Selecciona un idioma",
|
||||
"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",
|
||||
"updateFailed": "Error al actualizar el perfil",
|
||||
"languageUpdateSuccess": "Idioma actualizado exitosamente",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "Error al actualizar el idioma",
|
||||
"profileUpdated": "Perfil actualizado",
|
||||
"profileError": "Error al actualizar el perfil",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "Cargando...",
|
||||
"save": "Guardar",
|
||||
"cancel": "Cancelar",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "Agregar",
|
||||
"edit": "Editar",
|
||||
"confirm": "Confirmar",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "Crear nuevo cuaderno",
|
||||
"createDescription": "Inicia una nueva colección para organizar tus notas, ideas y proyectos de manera eficiente.",
|
||||
"name": "Nombre del cuaderno",
|
||||
"namePlaceholder": "ej. Estrategia Marketing Q4",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "Mi cuaderno",
|
||||
"saving": "Guardando...",
|
||||
"selectIcon": "Icono",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "Creando...",
|
||||
"edit": "Editar 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.",
|
||||
"deleteConfirm": "Eliminar",
|
||||
"summary": "Resumen del cuaderno",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "Cuaderno fijado: pedido congelado",
|
||||
"organizeNotebookWithAITooltip": "Organiza este cuaderno con IA",
|
||||
"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": {
|
||||
"title": "¿Mover a {name}?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"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.",
|
||||
"notesViewLabel": "Vista de notas",
|
||||
"notesViewTabs": "Pestañas (estilo OneNote)",
|
||||
"notesViewMasonry": "Tarjetas (cuadrícula)",
|
||||
"notesViewList": "Lista (revista)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Familia de fuentes",
|
||||
"fontFamilyDescription": "Elige la fuente utilizada en toda la aplicación",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"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)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Papelera",
|
||||
"empty": "La papelera está vacía",
|
||||
"emptyDescription": "Las notas eliminadas aparecerán aquí",
|
||||
"restore": "Restaurar",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Eliminar permanentemente",
|
||||
"noteTrashed": "Nota movida a la papelera",
|
||||
"noteRestored": "Nota restaurada",
|
||||
"notePermanentlyDeleted": "Nota eliminada permanentemente",
|
||||
"emptyTrash": "Vaciar papelera",
|
||||
"emptyTrashConfirm": "¿Eliminar permanentemente todas las notas de la papelera?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Papelera vaciada",
|
||||
"permanentDelete": "Eliminar permanentemente",
|
||||
"permanentDeleteConfirm": "Esta nota se eliminará permanentemente. Esta acción no se puede deshacer."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Privacidad",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "Chino",
|
||||
"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": {
|
||||
"unknown": "Desconocido",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "Cargando",
|
||||
"error": "Error",
|
||||
"success": "Éxito",
|
||||
"confirm": "Confirmar",
|
||||
"cancel": "Cancelar",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "Cerrar",
|
||||
"save": "Guardar",
|
||||
"delete": "Eliminar",
|
||||
"edit": "Editar",
|
||||
"add": "Agregar",
|
||||
"remove": "Eliminar",
|
||||
"search": "Buscar",
|
||||
"noResults": "Sin resultados",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Requerido",
|
||||
"optional": "Opcional"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "Buscando...",
|
||||
"noNotesFoundForContext": "No se encontraron notas relevantes para esta pregunta. Responde con tu conocimiento general.",
|
||||
"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": {
|
||||
"title": "El Laboratorio",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "اول قدیمی ترین",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "منوی حساب",
|
||||
"profile": "نمایه",
|
||||
"signOut": "از سیستم خارج شوید",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "ترتیب مرتب سازی",
|
||||
"freezePinnedNotebook": "پین کردن سفارش نوار کناری نوت بوک",
|
||||
"unfreezePinnedNotebook": "پین کردن سفارش نوار کناری نوت بوک",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "تغییر نام دهید",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "ترتیب آزاد",
|
||||
"moveFailed": "انتقال دفترچه ناموفق بود",
|
||||
"dropToRoot": "برای انتقال به ریشه اینجا رها کنید"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "یادداشتها",
|
||||
"newNote": "یادداشت جدید",
|
||||
"reorganize": "سازماندهی مجدد یادداشت ها",
|
||||
"untitled": "بدون عنوان",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "یادداشت بگیرید...",
|
||||
"markdownPlaceholder": "یادداشت بگیرید... (Markdown پشتیبانی میشود)",
|
||||
"titlePlaceholder": "عنوان",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "افزودن",
|
||||
"adding": "در حال افزودن...",
|
||||
"close": "بستن",
|
||||
"confirmDelete": "آیا مطمئن هستید که میخواهید این یادداشت را حذف کنید؟",
|
||||
"confirmDelete": "Are you sure you want to delete this note?",
|
||||
"confirmLeaveShare": "آیا مطمئن هستید که میخواهید این یادداشت اشتراکی را ترک کنید؟",
|
||||
"sharedBy": "به اشتراک گذاشته توسط",
|
||||
"sharedShort": "به اشتراک گذاشته شده است",
|
||||
"leaveShare": "ترک",
|
||||
"delete": "حذف",
|
||||
"delete": "Delete",
|
||||
"archive": "بایگانی",
|
||||
"unarchive": "خروج از بایگانی",
|
||||
"pin": "سنجاق کردن",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "تکثیر",
|
||||
"share": "اشتراکگذاری",
|
||||
"showCollaborators": "مشاهده همکاران",
|
||||
"pinned": "سنجاق شده",
|
||||
"pinned": "Note pinned",
|
||||
"others": "سایر",
|
||||
"noNotes": "بدون عنوان",
|
||||
"noNotesFound": "یادداشتی یافت نشد",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "اخیر",
|
||||
"addNote": "افزودن یادداشت",
|
||||
"readMore": "ادامه مطلب",
|
||||
"remove": "حذف",
|
||||
"dragToReorder": "بکشید تا مرتب کنید",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "بیشتر",
|
||||
"emptyState": "یادداشتی نیست",
|
||||
"metadataPanel": "جزئیات",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "بهبود شکست خورد",
|
||||
"transformFailed": "تبدیل شکست خورد",
|
||||
"markdown": "مارکداون",
|
||||
"unpinned": "سنجاق نشده",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "انجام مجدد (Ctrl+Y)",
|
||||
"undoShortcut": "بازگردانی (Ctrl+Z)",
|
||||
"reorderTabs": "مرتبسازی زبانه",
|
||||
@@ -753,7 +754,7 @@
|
||||
"downloadFailed": "دانلود انجام نشد"
|
||||
},
|
||||
"nav": {
|
||||
"home": "خانه",
|
||||
"home": "Home",
|
||||
"notes": "یادداشتها",
|
||||
"notebooks": "دفترچهها",
|
||||
"generalNotes": "یادداشتهای عمومی",
|
||||
@@ -763,7 +764,7 @@
|
||||
"aiSettings": "تنظیمات هوش مصنوعی",
|
||||
"logout": "خروج",
|
||||
"login": "ورود",
|
||||
"adminDashboard": "داشبورد مدیریت",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "تشخیصها",
|
||||
"trash": "سطل زباله",
|
||||
"support": "پشتیبانی مامنتو ☕",
|
||||
@@ -788,7 +789,8 @@
|
||||
"proPlan": "پلن پرو",
|
||||
"chat": "چت هوش مصنوعی",
|
||||
"lab": "آزمایشگاه",
|
||||
"agents": "عاملها"
|
||||
"agents": "عاملها",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "تنظیمات",
|
||||
@@ -816,7 +818,7 @@
|
||||
"security": "امنیت",
|
||||
"about": "درباره",
|
||||
"version": "نسخه",
|
||||
"settingsSaved": "تنظیمات ذخیره شد",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "اندازه یادداشت",
|
||||
"cardSizeModeDescription": "انتخاب بین اندازه متغیر یا یکنواخت",
|
||||
"selectCardSizeMode": "انتخاب حالت نمایش",
|
||||
@@ -837,14 +839,14 @@
|
||||
"semanticIndexingDescription": "تولید بردارها برای همه یادداشتها جهت فعالسازی جستجوی مبتنی بر قصد",
|
||||
"profile": "پروفایل",
|
||||
"searchNoResults": "تنظیمات مطابق یافت نشد",
|
||||
"languageAuto": "تشخیص خودکار",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "اعلانهای ایمیل",
|
||||
"emailNotificationsDesc": "دریافت اعلانهای مهم از طریق ایمیل",
|
||||
"desktopNotifications": "اعلانهای مرورگر",
|
||||
"desktopNotificationsDesc": "دریافت اعلانها در مرورگر",
|
||||
"notificationsDesc": "مدیریت تنظیمات اعلان",
|
||||
"autoSave": "ذخیره خودکار",
|
||||
"autoSaveDesc": "هنگام تایپ کردن، تغییرات را به صورت خودکار ذخیره کنید"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "پروفایل",
|
||||
@@ -866,10 +868,10 @@
|
||||
"preferredLanguage": "زبان مورد نظر",
|
||||
"selectLanguage": "یک زبان انتخاب کنید",
|
||||
"languageDescription": "این زبان برای ویژگیهای هوش مصنوعی، تحلیل محتوا و متن رابط کاربری استفاده خواهد شد.",
|
||||
"autoDetect": "تشخیص خودکار",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "پروفایل بهروزرسانی شد",
|
||||
"updateFailed": "بهروزرسانی پروفایل شکست خورد",
|
||||
"languageUpdateSuccess": "زبان با موفقیت بهروزرسانی شد",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "بهروزرسانی زبان شکست خورد",
|
||||
"profileUpdated": "پروفایل بهروزرسانی شد",
|
||||
"profileError": "خطا در بهروزرسانی پروفایل",
|
||||
@@ -925,8 +927,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "در حال بارگذاری...",
|
||||
"save": "ذخیره",
|
||||
"cancel": "لغو",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "افزودن",
|
||||
"edit": "ویرایش",
|
||||
"confirm": "تأیید",
|
||||
@@ -987,7 +989,7 @@
|
||||
"createNew": "ایجاد دفترچه جدید",
|
||||
"createDescription": "یک مجموعه جدید برای سازماندهی یادداشتها، ایدهها و پروژههای خود به طور مؤثر شروع کنید.",
|
||||
"name": "نام دفترچه",
|
||||
"namePlaceholder": "مثلاً استراتژی بازاریابی سهماهه چهارم",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "دفترچه من",
|
||||
"saving": "در حال ذخیره...",
|
||||
"selectIcon": "آیکون",
|
||||
@@ -996,7 +998,7 @@
|
||||
"creating": "در حال ایجاد...",
|
||||
"edit": "ویرایش دفترچه",
|
||||
"editDescription": "نام، آیکون و رنگ دفترچه خود را تغییر دهید.",
|
||||
"delete": "حذف دفترچه",
|
||||
"delete": "Delete",
|
||||
"deleteWarning": "آیا مطمئن هستید که میخواهید این دفترچه را حذف کنید؟ یادداشتها به یادداشتهای عمومی منتقل میشوند.",
|
||||
"deleteConfirm": "حذف",
|
||||
"summary": "خلاصه دفترچه",
|
||||
@@ -1015,7 +1017,10 @@
|
||||
"pinnedFrozenTooltip": "نوت بوک پین شده - سفارش منجمد شده",
|
||||
"organizeNotebookWithAITooltip": "این نوت بوک را با هوش مصنوعی سازماندهی کنید",
|
||||
"assistantRequiredForSummarize": "برای خلاصه کردن، دستیار هوش مصنوعی را در تنظیمات روشن کنید",
|
||||
"createSubnotebook": "اضافه کردن نوت بوک فرعی"
|
||||
"createSubnotebook": "اضافه کردن نوت بوک فرعی",
|
||||
"createSubNotebook": "Add sub-notebook",
|
||||
"rename": "Rename",
|
||||
"moveToTrash": "Move to trash"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "انتقال به {name}؟",
|
||||
@@ -1434,21 +1439,23 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "ظاهر",
|
||||
"description": "سفارشیسازی ظاهر برنامه",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "نحوه نمایش یادداشتها در صفحه اصلی و دفترچهها را انتخاب کنید.",
|
||||
"notesViewLabel": "چیدمان یادداشتها",
|
||||
"notesViewTabs": "زبانهها (سبک OneNote)",
|
||||
"notesViewMasonry": "کارتها (شبکهای)",
|
||||
"notesViewList": "فهرست (مجله)",
|
||||
"selectTheme": "انتخاب تم",
|
||||
"fontFamilyLabel": "خانواده فونت",
|
||||
"fontFamilyDescription": "فونت استفاده شده در سراسر برنامه را انتخاب کنید",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter برای خوانایی بهینه شده است، سیستم از فونت بومی سیستمعامل شما استفاده میکند",
|
||||
"fontSystem": "فونت پیشفرض سیستم",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"tab": "ظاهر"
|
||||
"tab": "ظاهر",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "عمومی",
|
||||
@@ -1482,18 +1489,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "سطل زباله",
|
||||
"empty": "سطل زباله خالی است",
|
||||
"emptyDescription": "یادداشتهای حذف شده در اینجا نمایش داده میشوند",
|
||||
"restore": "بازیابی",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "حذف دائمی",
|
||||
"noteTrashed": "یادداشت به سطل زباله منتقل شد",
|
||||
"noteRestored": "یادداشت بازیابی شد",
|
||||
"notePermanentlyDeleted": "یادداشت برای همیشه حذف شد",
|
||||
"emptyTrash": "خالی کردن سطل زباله",
|
||||
"emptyTrashConfirm": "همه یادداشتهای سطل زباله برای همیشه حذف شوند؟",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "سطل زباله خالی شد",
|
||||
"permanentDelete": "حذف دائمی",
|
||||
"permanentDeleteConfirm": "این یادداشت برای همیشه حذف خواهد شد. این عمل قابل بازگشت نیست."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "حریم خصوصی",
|
||||
@@ -1588,7 +1603,23 @@
|
||||
"chinese": "چینی",
|
||||
"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": {
|
||||
"unknown": "نامشخص",
|
||||
@@ -1596,16 +1627,16 @@
|
||||
"loading": "در حال بارگذاری...",
|
||||
"error": "خطا",
|
||||
"success": "موفق",
|
||||
"confirm": "تأیید",
|
||||
"cancel": "لغو",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "بستن",
|
||||
"save": "ذخیره",
|
||||
"delete": "حذف",
|
||||
"edit": "ویرایش",
|
||||
"add": "افزودن",
|
||||
"remove": "حذف",
|
||||
"search": "جستجو",
|
||||
"noResults": "نتیجهای یافت نشد",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "الزامی",
|
||||
"optional": "اختیاری"
|
||||
},
|
||||
@@ -1987,7 +2018,9 @@
|
||||
"searching": "در حال جستجو...",
|
||||
"noNotesFoundForContext": "هیچ یادداشت مرتبطی برای این سوال یافت نشد. با دانش عمومی خود پاسخ دهید.",
|
||||
"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": {
|
||||
"title": "آزمایشگاه",
|
||||
@@ -2561,5 +2594,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,8 +65,9 @@
|
||||
"renameNotebook": "Renommer",
|
||||
"sharedNotebookBadge": "· partagé",
|
||||
"sortManual": "Ordre libre",
|
||||
"moveFailed": "Impossible de déplacer le carnet",
|
||||
"dropToRoot": "Déposer ici pour remonter à la racine"
|
||||
"moveFailed": "Échec du déplacement du carnet",
|
||||
"dropToRoot": "Déposez ici pour déplacer à la racine",
|
||||
"noReminders": "Aucun rappel actif."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notes",
|
||||
@@ -88,7 +89,7 @@
|
||||
"add": "Ajouter",
|
||||
"adding": "Ajout...",
|
||||
"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 ?",
|
||||
"sharedBy": "Partagé par",
|
||||
"sharedShort": "Partagé",
|
||||
@@ -770,7 +771,7 @@
|
||||
"aiSettings": "Paramètres IA",
|
||||
"logout": "Déconnexion",
|
||||
"login": "Connexion",
|
||||
"adminDashboard": "Tableau de bord Admin",
|
||||
"adminDashboard": "Administration",
|
||||
"diagnostics": "Diagnostics",
|
||||
"trash": "Corbeille",
|
||||
"support": "Soutenir Memento ☕",
|
||||
@@ -795,7 +796,8 @@
|
||||
"proPlan": "Plan Pro",
|
||||
"chat": "Chat IA",
|
||||
"lab": "L'Atelier",
|
||||
"agents": "Agents"
|
||||
"agents": "Agents",
|
||||
"sharedWithMe": "Partagé avec moi"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Paramètres",
|
||||
@@ -897,7 +899,10 @@
|
||||
"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",
|
||||
"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": {
|
||||
"title": "IA",
|
||||
@@ -994,7 +999,7 @@
|
||||
"createNew": "Créer un nouveau carnet",
|
||||
"createDescription": "Commencez une nouvelle collection pour organiser vos notes, idées et projets efficacement.",
|
||||
"name": "Nom du carnet",
|
||||
"namePlaceholder": "ex. Stratégie Marketing Q4",
|
||||
"namePlaceholder": "Nom du carnet",
|
||||
"myNotebook": "Mon carnet",
|
||||
"saving": "Enregistrement...",
|
||||
"selectIcon": "Icône",
|
||||
@@ -1003,7 +1008,7 @@
|
||||
"creating": "Création...",
|
||||
"edit": "Modifier le 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.",
|
||||
"deleteConfirm": "Supprimer",
|
||||
"summary": "Résumé du carnet",
|
||||
@@ -1022,7 +1027,10 @@
|
||||
"pinnedFrozenTooltip": "Carnet figé (ordre des sous-carnets verrouillé)",
|
||||
"organizeNotebookWithAITooltip": "Organiser ce carnet avec l'IA",
|
||||
"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": {
|
||||
"title": "Déplacer vers {name} ?",
|
||||
@@ -1441,21 +1449,23 @@
|
||||
},
|
||||
"appearance": {
|
||||
"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.",
|
||||
"notesViewLabel": "Affichage des notes",
|
||||
"notesViewTabs": "Onglets (type OneNote)",
|
||||
"notesViewMasonry": "Cartes (grille)",
|
||||
"notesViewList": "Liste (magazine)",
|
||||
"selectTheme": "Sélectionner le thème",
|
||||
"fontFamilyLabel": "Famille de polices",
|
||||
"fontFamilyDescription": "Choisissez la police utilisée dans toute l'application",
|
||||
"selectTheme": "Choisissez votre thème",
|
||||
"fontFamilyLabel": "Police",
|
||||
"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",
|
||||
"fontSystem": "Police système par défaut",
|
||||
"fontInterDefault": "Inter (défaut)",
|
||||
"fontSystem": "Système",
|
||||
"fontInterDefault": "Inter (par défaut)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"tab": "Apparence"
|
||||
"tab": "Apparence",
|
||||
"accentColorTitle": "Couleur d'activation",
|
||||
"accentColorDescription": "Définissez la couleur principale de votre espace de travail"
|
||||
},
|
||||
"usageMeter": {
|
||||
"packName": "Pack découverte IA",
|
||||
@@ -1514,17 +1524,25 @@
|
||||
"trash": {
|
||||
"title": "Corbeille",
|
||||
"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",
|
||||
"deletePermanently": "Supprimer définitivement",
|
||||
"noteTrashed": "Note déplacée dans la corbeille",
|
||||
"noteRestored": "Note restaurée",
|
||||
"notePermanentlyDeleted": "Note supprimée définitivement",
|
||||
"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",
|
||||
"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": {
|
||||
"privacy": "Confidentialité",
|
||||
@@ -1619,7 +1637,23 @@
|
||||
"chinese": "Chinois",
|
||||
"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": {
|
||||
"unknown": "Inconnu",
|
||||
@@ -1635,8 +1669,8 @@
|
||||
"edit": "Modifier",
|
||||
"add": "Ajouter",
|
||||
"remove": "Supprimer",
|
||||
"search": "Rechercher",
|
||||
"noResults": "Aucun résultat",
|
||||
"search": "Rechercher...",
|
||||
"noResults": "Aucune note trouvée",
|
||||
"required": "Requis",
|
||||
"optional": "Optionnel"
|
||||
},
|
||||
@@ -2018,7 +2052,9 @@
|
||||
"searching": "Recherche en cours...",
|
||||
"noNotesFoundForContext": "Aucune note pertinente trouvée pour cette question. Réponds avec tes connaissances générales.",
|
||||
"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": {
|
||||
"title": "L'Atelier",
|
||||
@@ -2568,5 +2604,13 @@
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "सबसे पुराना पहले",
|
||||
"sortAlpha": "ए → जेड",
|
||||
"accountMenu": "खाता मेनू",
|
||||
"profile": "प्रोफ़ाइल",
|
||||
"signOut": "साइन आउट",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "क्रमबद्ध करेन का आदेश",
|
||||
"freezePinnedNotebook": "पिन नोटबुक साइडबार ऑर्डर",
|
||||
"unfreezePinnedNotebook": "नोटबुक साइडबार ऑर्डर को अनपिन करें",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "नाम बदलें",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "कस्टम क्रम",
|
||||
"moveFailed": "नोटबुक ले जाने में विफल",
|
||||
"dropToRoot": "रूट में ले जाने के लिए यहाँ छोड़ें"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "नोट्स",
|
||||
"newNote": "नया नोट",
|
||||
"reorganize": "नोट्स को पुनर्व्यवस्थित करें",
|
||||
"untitled": "शीर्षकहीन",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "नोट लें...",
|
||||
"markdownPlaceholder": "नोट लें... (Markdown समर्थित)",
|
||||
"titlePlaceholder": "शीर्षक",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "जोड़ें",
|
||||
"adding": "जोड़ रहे हैं...",
|
||||
"close": "बंद करें",
|
||||
"confirmDelete": "क्या आप वाकई इस नोट को हटाना चाहते हैं?",
|
||||
"confirmDelete": "Are you sure you want to delete this note?",
|
||||
"confirmLeaveShare": "क्या आप वाकई इस साझा नोट को छोड़ना चाहते हैं?",
|
||||
"sharedBy": "द्वारा साझा किया गया",
|
||||
"sharedShort": "साझा",
|
||||
"leaveShare": "छोड़ें",
|
||||
"delete": "हटाएं",
|
||||
"delete": "Delete",
|
||||
"archive": "संग्रहित करें",
|
||||
"unarchive": "संग्रह से निकालें",
|
||||
"pin": "पिन करें",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "डुप्लिकेट",
|
||||
"share": "साझा करें",
|
||||
"showCollaborators": "सहयोगी दिखाएं",
|
||||
"pinned": "पिन किए गए",
|
||||
"pinned": "Note pinned",
|
||||
"others": "अन्य",
|
||||
"noNotes": "कोई नोट नहीं",
|
||||
"noNotesFound": "कोई नोट नहीं मिला",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "हालिया",
|
||||
"addNote": "नोट जोड़ें",
|
||||
"readMore": "और पढ़ें",
|
||||
"remove": "हटाएं",
|
||||
"dragToReorder": "पुनर्व्यवस्थित करने के लिए खींचें",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "अधिक",
|
||||
"emptyState": "कोई नोट नहीं",
|
||||
"metadataPanel": "विवरण",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "सुधारने में विफल",
|
||||
"transformFailed": "रूपांतरित करने में विफल",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "अनपिन किया गया",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "फिर से करें (Ctrl+Y)",
|
||||
"undoShortcut": "पूर्ववत करें (Ctrl+Z)",
|
||||
"reorderTabs": "टैब पुनर्व्यवस्थित करें",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "डाउनलोड विफल रहा"
|
||||
},
|
||||
"nav": {
|
||||
"home": "होम",
|
||||
"home": "Home",
|
||||
"notes": "नोट्स",
|
||||
"notebooks": "नोटबुक",
|
||||
"generalNotes": "सामान्य नोट्स",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "AI सेटिंग्स",
|
||||
"logout": "लॉग आउट",
|
||||
"login": "लॉग इन",
|
||||
"adminDashboard": "एडमिन डैशबोर्ड",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "निदान",
|
||||
"trash": "कचरा",
|
||||
"support": "Memento का समर्थन करें ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "प्रो योजना",
|
||||
"chat": "AI चैट",
|
||||
"lab": "लैब",
|
||||
"agents": "एजेंट"
|
||||
"agents": "एजेंट",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "सेटिंग्स",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "सुरक्षा",
|
||||
"about": "के बारे में",
|
||||
"version": "संस्करण",
|
||||
"settingsSaved": "सेटिंग्स सहेजी गई",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
|
||||
"profile": "प्रोफ़ाइल",
|
||||
"searchNoResults": "कोई मिलान सेटिंग्स नहीं मिली",
|
||||
"languageAuto": "स्वचालित पता लगाना",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "ईमेल सूचनाएं",
|
||||
"emailNotificationsDesc": "ईमेल द्वारा महत्वपूर्ण सूचनाएं प्राप्त करें",
|
||||
"desktopNotifications": "डेस्कटॉप सूचनाएं",
|
||||
"desktopNotificationsDesc": "ब्राउज़र में सूचनाएं प्राप्त करें",
|
||||
"notificationsDesc": "अपनी सूचना वरीयताएं प्रबंधित करें",
|
||||
"autoSave": "ऑटो को बचाने",
|
||||
"autoSaveDesc": "टाइप करते समय परिवर्तन स्वचालित रूप से सहेजें"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "प्रोफ़ाइल",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "पसंदीदा भाषा",
|
||||
"selectLanguage": "भाषा चुनें",
|
||||
"languageDescription": "यह भाषा AI-संचालित सुविधाओं, सामग्री विश्लेषण और इंटरफेस पाठ के लिए उपयोग की जाएगी।",
|
||||
"autoDetect": "स्वचालित पता लगाना",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "प्रोफ़ाइल अपडेट किया गया",
|
||||
"updateFailed": "प्रोफ़ाइल अपडेट करने में विफल",
|
||||
"languageUpdateSuccess": "भाषा सफलतापूर्वक अपडेट की गई",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "भाषा अपडेट करने में विफल",
|
||||
"profileUpdated": "प्रोफ़ाइल अपडेट किया गया",
|
||||
"profileError": "प्रोफ़ाइल अपडेट करने में त्रुटि",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "लोड हो रहा है...",
|
||||
"save": "सहेजें",
|
||||
"cancel": "रद्द करें",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "जोड़ें",
|
||||
"edit": "संपादित करें",
|
||||
"confirm": "पुष्टि करें",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "नया नोटबुक बनाएं",
|
||||
"createDescription": "अपने नोट्स, विचारों और परियोजनाओं को कुशलता से व्यवस्थित करने के लिए एक नया संग्रह शुरू करें।",
|
||||
"name": "नोटबुक नाम",
|
||||
"namePlaceholder": "उदा. Q4 मार्केटिंग रणनीति",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "मेरी नोटबुक",
|
||||
"saving": "सहेज रहा है...",
|
||||
"selectIcon": "आइकन",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "बना रहे हैं...",
|
||||
"edit": "नोटबुक संपादित करें",
|
||||
"editDescription": "नोटबुक का नाम, आइकन और रंग बदलें।",
|
||||
"delete": "नोटबुक हटाएं",
|
||||
"delete": "Delete",
|
||||
"deleteWarning": "क्या आप वाकई इस नोटबुक को हटाना चाहते हैं? नोट्स को सामान्य नोट्स में ले जाया जाएगा।",
|
||||
"deleteConfirm": "हटाएं",
|
||||
"summary": "नोटबुक सारांश",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "पिन की गई नोटबुक - ऑर्डर फ़्रीज़ किया गया",
|
||||
"organizeNotebookWithAITooltip": "इस नोटबुक को AI के साथ व्यवस्थित करें",
|
||||
"assistantRequiredForSummarize": "संक्षेप में बताने के लिए सेटिंग्स में AI Assistant चालू करें",
|
||||
"createSubnotebook": "उप-नोटबुक जोड़ें"
|
||||
"createSubnotebook": "उप-नोटबुक जोड़ें",
|
||||
"createSubNotebook": "Add sub-notebook",
|
||||
"rename": "Rename",
|
||||
"moveToTrash": "Move to trash"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "{name} में ले जाएं?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "दिखावट",
|
||||
"description": "ऐप के दिखने के तरीके को अनुकूलित करें",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "चुनें कि होम और नोटबुक में नोट्स कैसे दिखाए जाएं।",
|
||||
"notesViewLabel": "नोट्स दृश्य",
|
||||
"notesViewTabs": "टैब (OneNote-शैली)",
|
||||
"notesViewMasonry": "कार्ड (ग्रिड)",
|
||||
"notesViewList": "सूची (पत्रिका)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "फ़ॉन्ट परिवार",
|
||||
"fontFamilyDescription": "पूरे ऐप में उपयोग किए जाने वाले फ़ॉन्ट का चयन करें",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter पठनीयता के लिए अनुकूलित है, सिस्टम आपके OS के मूल फ़ॉन्ट का उपयोग करता है",
|
||||
"fontSystem": "सिस्टम डिफ़ॉल्ट",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "रीसायकल बिन",
|
||||
"empty": "रीसायकल बिन खाली है",
|
||||
"emptyDescription": "हटाई गई नोट्स यहां दिखाई देंगी",
|
||||
"restore": "पुनर्स्थापित करें",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "स्थायी रूप से हटाएं",
|
||||
"noteTrashed": "नोट रीसायकल बिन में ले जाया गया",
|
||||
"noteRestored": "नोट पुनर्स्थापित किया गया",
|
||||
"notePermanentlyDeleted": "नोट स्थायी रूप से हटाया गया",
|
||||
"emptyTrash": "रीसायकल बिन खाली करें",
|
||||
"emptyTrashConfirm": "रीसायकल बिन की सभी नोट्स स्थायी रूप से हटाएं?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "रीसायकल बिन खाली किया गया",
|
||||
"permanentDelete": "स्थायी रूप से हटाएं",
|
||||
"permanentDeleteConfirm": "यह नोट स्थायी रूप से हटा दी जाएगी। इसे पूर्ववत नहीं किया जा सकता।"
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "गोपनीयता",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "चीनी",
|
||||
"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": {
|
||||
"unknown": "अज्ञात",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "लोड हो रहा है...",
|
||||
"error": "त्रुटि",
|
||||
"success": "सफल",
|
||||
"confirm": "पुष्टि करें",
|
||||
"cancel": "रद्द करें",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "बंद करें",
|
||||
"save": "सहेजें",
|
||||
"delete": "हटाएं",
|
||||
"edit": "संपादित करें",
|
||||
"add": "जोड़ें",
|
||||
"remove": "हटाएं",
|
||||
"search": "खोजें",
|
||||
"noResults": "कोई परिणाम नहीं",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "आवश्यक",
|
||||
"optional": "वैकल्पिक"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "खोज रहे हैं...",
|
||||
"noNotesFoundForContext": "इस प्रश्न के लिए कोई प्रासंगिक नोट्स नहीं मिले। अपने सामान्य ज्ञान से उत्तर दें।",
|
||||
"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": {
|
||||
"title": "लैब",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "Prima il più vecchio",
|
||||
"sortAlpha": "A→Z",
|
||||
"accountMenu": "Menù conto",
|
||||
"profile": "Profilo",
|
||||
"signOut": "disconnessione",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "Ordinamento",
|
||||
"freezePinnedNotebook": "Blocca l'ordine della barra laterale del taccuino",
|
||||
"unfreezePinnedNotebook": "Sblocca l'ordine della barra laterale del notebook",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "Rinominare",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Ordine libero",
|
||||
"moveFailed": "Impossibile spostare il quaderno",
|
||||
"dropToRoot": "Rilascia qui per spostare alla radice"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Note",
|
||||
"newNote": "Nuova nota",
|
||||
"reorganize": "Riorganizzare le note",
|
||||
"untitled": "Senza titolo",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "Scrivi una nota...",
|
||||
"markdownPlaceholder": "Scrivi una nota... (Markdown supportato)",
|
||||
"titlePlaceholder": "Titolo",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "Aggiungi",
|
||||
"adding": "Aggiunta in corso...",
|
||||
"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?",
|
||||
"sharedBy": "Condivisa da",
|
||||
"sharedShort": "Condiviso",
|
||||
"leaveShare": "Abbandona",
|
||||
"delete": "Elimina",
|
||||
"delete": "Delete",
|
||||
"archive": "Archivia",
|
||||
"unarchive": "Rimuovi dall’archivio",
|
||||
"pin": "Fissa",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "Duplica",
|
||||
"share": "Condividi",
|
||||
"showCollaborators": "Mostra collaboratori",
|
||||
"pinned": "Fissate",
|
||||
"pinned": "Note pinned",
|
||||
"others": "Altre",
|
||||
"noNotes": "Nessuna nota",
|
||||
"noNotesFound": "Nessuna nota trovata",
|
||||
@@ -160,7 +161,7 @@
|
||||
"addNote": "Aggiungi nota",
|
||||
"readMore": "Leggi di più",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Trascina per riordinare",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "Altro",
|
||||
"emptyState": "Nessuna nota qui",
|
||||
"metadataPanel": "Dettagli",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "Miglioramento non riuscito",
|
||||
"transformFailed": "Trasformazione non riuscita",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "Non fissato",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "Ripeti (Ctrl+Y)",
|
||||
"undoShortcut": "Annulla (Ctrl+Z)",
|
||||
"reorderTabs": "Riordina scheda",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "Impostazioni AI",
|
||||
"logout": "Logout",
|
||||
"login": "Login",
|
||||
"adminDashboard": "Dashboard amministratore",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "Diagnostica",
|
||||
"trash": "Cestino",
|
||||
"support": "Supporta Memento ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "Piano Pro",
|
||||
"chat": "Chat IA",
|
||||
"lab": "Il Lab",
|
||||
"agents": "Agenti"
|
||||
"agents": "Agenti",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Settings",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Generate vectors for all notes to enable intent-based search",
|
||||
"profile": "Profilo",
|
||||
"searchNoResults": "Nessun risultato trovato",
|
||||
"languageAuto": "Automatico",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "Notifiche email",
|
||||
"emailNotificationsDesc": "Ricevi notifiche importanti via email",
|
||||
"desktopNotifications": "Notifiche desktop",
|
||||
"desktopNotificationsDesc": "Ricevi notifiche nel browser",
|
||||
"notificationsDesc": "Gestisci le preferenze di notifica",
|
||||
"autoSave": "Salvataggio automatico",
|
||||
"autoSaveDesc": "Salva automaticamente le modifiche durante la digitazione"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profilo",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "Lingua preferita",
|
||||
"selectLanguage": "Seleziona una lingua",
|
||||
"languageDescription": "Questa lingua sarà usata per le funzionalità AI, l’analisi dei contenuti e l’interfaccia.",
|
||||
"autoDetect": "Rilevamento automatico",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "Profilo aggiornato",
|
||||
"updateFailed": "Aggiornamento del profilo non riuscito",
|
||||
"languageUpdateSuccess": "Lingua aggiornata con successo",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "Aggiornamento della lingua non riuscito",
|
||||
"profileUpdated": "Profilo aggiornato",
|
||||
"profileError": "Errore nell’aggiornamento del profilo",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "Caricamento...",
|
||||
"save": "Salva",
|
||||
"cancel": "Annulla",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "Aggiungi",
|
||||
"edit": "Modifica",
|
||||
"confirm": "Conferma",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "Crea nuovo notebook",
|
||||
"createDescription": "Avvia una nuova raccolta per organizzare note, idee e progetti in modo efficiente.",
|
||||
"name": "Nome del notebook",
|
||||
"namePlaceholder": "es. Strategia Marketing Q4",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "Il mio quaderno",
|
||||
"saving": "Salvataggio...",
|
||||
"selectIcon": "Icona",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "Creazione...",
|
||||
"edit": "Modifica 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.",
|
||||
"deleteConfirm": "Elimina",
|
||||
"summary": "Riepilogo notebook",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "Taccuino appuntato: ordine congelato",
|
||||
"organizeNotebookWithAITooltip": "Organizza questo taccuino con l'intelligenza artificiale",
|
||||
"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": {
|
||||
"title": "Spostare in {name}?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Aspetto",
|
||||
"description": "Personalizza l'aspetto dell'app",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "Scegli come mostrare le note nella home e nei quaderni.",
|
||||
"notesViewLabel": "Vista note",
|
||||
"notesViewTabs": "Schede (stile OneNote)",
|
||||
"notesViewMasonry": "Schede (griglia)",
|
||||
"notesViewList": "Elenco (rivista)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Famiglia di caratteri",
|
||||
"fontFamilyDescription": "Scegli il carattere utilizzato in tutta l'app",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"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)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Cestino",
|
||||
"empty": "Il cestino è vuoto",
|
||||
"emptyDescription": "Le note eliminate appariranno qui",
|
||||
"restore": "Ripristina",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Elimina definitivamente",
|
||||
"noteTrashed": "Nota spostata nel cestino",
|
||||
"noteRestored": "Nota ripristinata",
|
||||
"notePermanentlyDeleted": "Nota eliminata definitivamente",
|
||||
"emptyTrash": "Svuota cestino",
|
||||
"emptyTrashConfirm": "Eliminare definitivamente tutte le note nel cestino?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Cestino svuotato",
|
||||
"permanentDelete": "Elimina definitivamente",
|
||||
"permanentDeleteConfirm": "Questa nota verrà eliminata definitivamente. Questa azione non può essere annullata."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Privacy",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "cinese",
|
||||
"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": {
|
||||
"unknown": "Sconosciuto",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "Caricamento...",
|
||||
"error": "Errore",
|
||||
"success": "Successo",
|
||||
"confirm": "Conferma",
|
||||
"cancel": "Annulla",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "Chiudi",
|
||||
"save": "Salva",
|
||||
"delete": "Elimina",
|
||||
"edit": "Modifica",
|
||||
"add": "Aggiungi",
|
||||
"remove": "Rimuovi",
|
||||
"search": "Cerca",
|
||||
"noResults": "Nessun risultato",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Obbligatorio",
|
||||
"optional": "Opzionale"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "Ricerca in corso...",
|
||||
"noNotesFoundForContext": "Nessuna nota rilevante trovata per questa domanda. Rispondi con la tua conoscenza generale.",
|
||||
"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": {
|
||||
"title": "Il Laboratorio",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "古い順",
|
||||
"sortAlpha": "A→Z",
|
||||
"accountMenu": "アカウントメニュー",
|
||||
"profile": "プロフィール",
|
||||
"signOut": "サインアウト",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "並べ替え順序",
|
||||
"freezePinnedNotebook": "ノートブックのサイドバーの順序を固定する",
|
||||
"unfreezePinnedNotebook": "ノートブックのサイドバーの順序の固定を解除する",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "名前の変更",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "自由な順序",
|
||||
"moveFailed": "ノートブックの移動に失敗しました",
|
||||
"dropToRoot": "ここにドロップでルートに移動"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "ノート",
|
||||
"newNote": "新しいノート",
|
||||
"reorganize": "メモを再整理する",
|
||||
"untitled": "無題",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "ノートを作成...",
|
||||
"markdownPlaceholder": "ノートを作成...(Markdown対応)",
|
||||
"titlePlaceholder": "タイトル",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "追加",
|
||||
"adding": "追加中...",
|
||||
"close": "閉じる",
|
||||
"confirmDelete": "このノートを削除してもよろしいですか?",
|
||||
"confirmDelete": "Are you sure you want to delete this note?",
|
||||
"confirmLeaveShare": "この共有ノートを退出してもよろしいですか?",
|
||||
"sharedBy": "共有者",
|
||||
"sharedShort": "共有",
|
||||
"leaveShare": "退出",
|
||||
"delete": "削除",
|
||||
"delete": "Delete",
|
||||
"archive": "アーカイブ",
|
||||
"unarchive": "アーカイブを解除",
|
||||
"pin": "ピン留め",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "複製",
|
||||
"share": "共有",
|
||||
"showCollaborators": "共同編集者を表示",
|
||||
"pinned": "ピン留め済み",
|
||||
"pinned": "Note pinned",
|
||||
"others": "その他",
|
||||
"noNotes": "ノートはありません",
|
||||
"noNotesFound": "ノートが見つかりませんでした",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "最近",
|
||||
"addNote": "ノートを追加",
|
||||
"readMore": "続きを読む",
|
||||
"remove": "削除",
|
||||
"dragToReorder": "ドラッグして並べ替え",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "もっと見る",
|
||||
"emptyState": "ノートがありません",
|
||||
"metadataPanel": "詳細",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "改善に失敗しました",
|
||||
"transformFailed": "変換に失敗しました",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "ピン留め解除",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "やり直し (Ctrl+Y)",
|
||||
"undoShortcut": "元に戻す (Ctrl+Z)",
|
||||
"reorderTabs": "タブを並べ替え",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "ダウンロードに失敗しました"
|
||||
},
|
||||
"nav": {
|
||||
"home": "ホーム",
|
||||
"home": "Home",
|
||||
"notes": "ノート",
|
||||
"notebooks": "ノートブック",
|
||||
"generalNotes": "一般ノート",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "AI設定",
|
||||
"logout": "ログアウト",
|
||||
"login": "ログイン",
|
||||
"adminDashboard": "管理ダッシュボード",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "診断",
|
||||
"trash": "ゴミ箱",
|
||||
"support": "Mementoをサポート ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "プロプラン",
|
||||
"chat": "AIチャット",
|
||||
"lab": "ラボ",
|
||||
"agents": "エージェント"
|
||||
"agents": "エージェント",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "設定",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "セキュリティ",
|
||||
"about": "について",
|
||||
"version": "バージョン",
|
||||
"settingsSaved": "設定を保存しました",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "すべてのノートのベクトルを生成して、意図に基づく検索を有効にします",
|
||||
"profile": "プロフィール",
|
||||
"searchNoResults": "一致する設定が見つかりません",
|
||||
"languageAuto": "自動検出",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "メール通知",
|
||||
"emailNotificationsDesc": "重要な通知をメールで受け取ります",
|
||||
"desktopNotifications": "デスクトップ通知",
|
||||
"desktopNotificationsDesc": "ブラウザで通知を受け取ります",
|
||||
"notificationsDesc": "通知設定を管理します",
|
||||
"autoSave": "自動保存",
|
||||
"autoSaveDesc": "入力中に変更を自動的に保存する"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "プロフィール",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "優先言語",
|
||||
"selectLanguage": "言語を選択",
|
||||
"languageDescription": "この言語はAI機能、コンテンツ分析、インターフェーステキストに使用されます。",
|
||||
"autoDetect": "自動検出",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "プロフィールを更新しました",
|
||||
"updateFailed": "プロフィールの更新に失敗しました",
|
||||
"languageUpdateSuccess": "言語を更新しました",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "言語の更新に失敗しました",
|
||||
"profileUpdated": "プロフィールを更新しました",
|
||||
"profileError": "プロフィールの更新エラー",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "読み込み中...",
|
||||
"save": "保存",
|
||||
"cancel": "キャンセル",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "追加",
|
||||
"edit": "編集",
|
||||
"confirm": "確認",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "新しいノートブックを作成",
|
||||
"createDescription": "新しいコレクションを開始して、ノート、アイデア、プロジェクトを効率的に整理しましょう。",
|
||||
"name": "ノートブック名",
|
||||
"namePlaceholder": "例:Q4マーケティング戦略",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "マイノートブック",
|
||||
"saving": "保存中...",
|
||||
"selectIcon": "アイコン",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "作成中...",
|
||||
"edit": "ノートブックを編集",
|
||||
"editDescription": "ノートブックの名前、アイコン、色を変更します。",
|
||||
"delete": "ノートブックを削除",
|
||||
"delete": "Delete",
|
||||
"deleteWarning": "このノートブックを削除してもよろしいですか?ノートは一般ノートに移動されます。",
|
||||
"deleteConfirm": "削除",
|
||||
"summary": "ノートブックの概要",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "固定されたノートブック — 注文は凍結されています",
|
||||
"organizeNotebookWithAITooltip": "このノートを AI で整理する",
|
||||
"assistantRequiredForSummarize": "設定で AI アシスタントをオンにして要約します",
|
||||
"createSubnotebook": "サブノートブックを追加する"
|
||||
"createSubnotebook": "サブノートブックを追加する",
|
||||
"createSubNotebook": "Add sub-notebook",
|
||||
"rename": "Rename",
|
||||
"moveToTrash": "Move to trash"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "{name}に移動しますか?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "外観",
|
||||
"description": "アプリの見た目をカスタマイズ",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "ホームとノートブックでノートを表示する方法を選択します。",
|
||||
"notesViewLabel": "ノートのレイアウト",
|
||||
"notesViewTabs": "タブ(OneNote風)",
|
||||
"notesViewMasonry": "カード(グリッド)",
|
||||
"notesViewList": "一覧(雑誌)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "フォントファミリー",
|
||||
"fontFamilyDescription": "アプリ全体で使用するフォントを選択してください",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter は読みやすさに最適化されています。システムはOSのネイティブフォントを使用します",
|
||||
"fontSystem": "システムデフォルト",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "ゴミ箱",
|
||||
"empty": "ゴミ箱は空です",
|
||||
"emptyDescription": "削除されたメモはここに表示されます",
|
||||
"restore": "復元",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "完全に削除",
|
||||
"noteTrashed": "メモをゴミ箱に移動しました",
|
||||
"noteRestored": "メモを復元しました",
|
||||
"notePermanentlyDeleted": "メモを完全に削除しました",
|
||||
"emptyTrash": "ゴミ箱を空にする",
|
||||
"emptyTrashConfirm": "ゴミ箱内のすべてのメモを完全に削除しますか?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "ゴミ箱を空にしました",
|
||||
"permanentDelete": "完全に削除",
|
||||
"permanentDeleteConfirm": "このメモは完全に削除されます。この操作は取り消せません。"
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "プライバシー",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "中国語",
|
||||
"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": {
|
||||
"unknown": "不明",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "読み込み中...",
|
||||
"error": "エラー",
|
||||
"success": "成功",
|
||||
"confirm": "確認",
|
||||
"cancel": "キャンセル",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "閉じる",
|
||||
"save": "保存",
|
||||
"delete": "削除",
|
||||
"edit": "編集",
|
||||
"add": "追加",
|
||||
"remove": "削除",
|
||||
"search": "検索",
|
||||
"noResults": "結果なし",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "必須",
|
||||
"optional": "任意"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "検索中...",
|
||||
"noNotesFoundForContext": "この質問に関連するノートが見つかりませんでした。一般的な知識でお答えください。",
|
||||
"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": {
|
||||
"title": "ラボ",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "오래된 것부터",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "계정 메뉴",
|
||||
"profile": "윤곽",
|
||||
"signOut": "로그아웃",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "정렬 순서",
|
||||
"freezePinnedNotebook": "노트북 사이드바 순서 고정",
|
||||
"unfreezePinnedNotebook": "노트북 사이드바 순서 고정 해제",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "이름 바꾸기",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "사용자 지정 순서",
|
||||
"moveFailed": "노트북 이동 실패",
|
||||
"dropToRoot": "여기에 놓아 루트로 이동"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "메모",
|
||||
"newNote": "새 메모",
|
||||
"reorganize": "메모 재구성",
|
||||
"untitled": "제목 없음",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "메모 작성...",
|
||||
"markdownPlaceholder": "메모 작성... (Markdown 지원)",
|
||||
"titlePlaceholder": "제목",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "추가",
|
||||
"adding": "추가 중...",
|
||||
"close": "닫기",
|
||||
"confirmDelete": "이 메모를 삭제하시겠습니까?",
|
||||
"confirmDelete": "Are you sure you want to delete this note?",
|
||||
"confirmLeaveShare": "이 공유 메모를 나가시겠습니까?",
|
||||
"sharedBy": "공유자",
|
||||
"sharedShort": "공유됨",
|
||||
"leaveShare": "나가기",
|
||||
"delete": "삭제",
|
||||
"delete": "Delete",
|
||||
"archive": "보관",
|
||||
"unarchive": "보관 취소",
|
||||
"pin": "고정",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "복제",
|
||||
"share": "공유",
|
||||
"showCollaborators": "공동 작업자 표시",
|
||||
"pinned": "고정됨",
|
||||
"pinned": "Note pinned",
|
||||
"others": "기타",
|
||||
"noNotes": "메모 없음",
|
||||
"noNotesFound": "메모를 찾을 수 없습니다",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "최근",
|
||||
"addNote": "메모 추가",
|
||||
"readMore": "더 읽기",
|
||||
"remove": "제거",
|
||||
"dragToReorder": "드래그하여 재정렬",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "더 보기",
|
||||
"emptyState": "메모가 없습니다",
|
||||
"metadataPanel": "세부",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "개선 실패",
|
||||
"transformFailed": "변환 실패",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "고정 해제됨",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "다시 실행 (Ctrl+Y)",
|
||||
"undoShortcut": "실행 취소 (Ctrl+Z)",
|
||||
"reorderTabs": "탭 재정렬",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "다운로드 실패"
|
||||
},
|
||||
"nav": {
|
||||
"home": "홈",
|
||||
"home": "Home",
|
||||
"notes": "메모",
|
||||
"notebooks": "노트북",
|
||||
"generalNotes": "일반 메모",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "AI 설정",
|
||||
"logout": "로그아웃",
|
||||
"login": "로그인",
|
||||
"adminDashboard": "관리자 대시보드",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "진단",
|
||||
"trash": "휴지통",
|
||||
"support": "Memento 지원하기 ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "프로 플랜",
|
||||
"chat": "AI 채팅",
|
||||
"lab": "랩",
|
||||
"agents": "에이전트"
|
||||
"agents": "에이전트",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "설정",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "보안",
|
||||
"about": "정보",
|
||||
"version": "버전",
|
||||
"settingsSaved": "설정이 저장되었습니다",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "의도 기반 검색을 활성화하기 위해 모든 노트의 벡터를 생성합니다",
|
||||
"profile": "프로필",
|
||||
"searchNoResults": "일치하는 설정을 찾을 수 없습니다",
|
||||
"languageAuto": "자동 감지",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "이메일 알림",
|
||||
"emailNotificationsDesc": "이메일로 중요한 알림을 받습니다",
|
||||
"desktopNotifications": "데스크톱 알림",
|
||||
"desktopNotificationsDesc": "브라우저에서 알림을 받습니다",
|
||||
"notificationsDesc": "알림 환경설정을 관리합니다",
|
||||
"autoSave": "자동 저장",
|
||||
"autoSaveDesc": "입력하는 동안 변경 사항을 자동으로 저장"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "프로필",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "선호 언어",
|
||||
"selectLanguage": "언어 선택",
|
||||
"languageDescription": "이 언어는 AI 기능, 콘텐츠 분석 및 인터페이스 텍스트에 사용됩니다.",
|
||||
"autoDetect": "자동 감지",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "프로필이 업데이트되었습니다",
|
||||
"updateFailed": "프로필 업데이트 실패",
|
||||
"languageUpdateSuccess": "언어가 업데이트되었습니다",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "언어 업데이트 실패",
|
||||
"profileUpdated": "프로필이 업데이트되었습니다",
|
||||
"profileError": "프로필 업데이트 오류",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "로딩 중...",
|
||||
"save": "저장",
|
||||
"cancel": "취소",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "추가",
|
||||
"edit": "편집",
|
||||
"confirm": "확인",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "새 노트북 만들기",
|
||||
"createDescription": "메모, 아이디어, 프로젝트를 효율적으로 정리할 새 컬렉션을 시작하세요.",
|
||||
"name": "노트북 이름",
|
||||
"namePlaceholder": "예: 4분기 마케팅 전략",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "내 노트북",
|
||||
"saving": "저장 중...",
|
||||
"selectIcon": "아이콘",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "생성 중...",
|
||||
"edit": "노트북 편집",
|
||||
"editDescription": "노트북의 이름, 아이콘, 색상을 변경합니다.",
|
||||
"delete": "노트북 삭제",
|
||||
"delete": "Delete",
|
||||
"deleteWarning": "이 노트북을 삭제하시겠습니까? 메모는 일반 메모로 이동됩니다.",
|
||||
"deleteConfirm": "삭제",
|
||||
"summary": "노트북 요약",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "고정된 노트북 - 주문이 동결됨",
|
||||
"organizeNotebookWithAITooltip": "AI로 이 노트북을 정리하세요",
|
||||
"assistantRequiredForSummarize": "요약하려면 설정에서 AI 도우미를 켜세요.",
|
||||
"createSubnotebook": "하위 노트북 추가"
|
||||
"createSubnotebook": "하위 노트북 추가",
|
||||
"createSubNotebook": "Add sub-notebook",
|
||||
"rename": "Rename",
|
||||
"moveToTrash": "Move to trash"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "{name}(으)로 이동하시겠습니까?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "모양",
|
||||
"description": "앱의 모양 사용자 지정",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "홈 및 노트북에서 메모가 표시되는 방식을 선택하세요.",
|
||||
"notesViewLabel": "메모 레이아웃",
|
||||
"notesViewTabs": "탭 (OneNote 스타일)",
|
||||
"notesViewMasonry": "카드 (그리드)",
|
||||
"notesViewList": "목록(잡지)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "글꼴 패밀리",
|
||||
"fontFamilyDescription": "앱 전체에서 사용할 글꼴을 선택하세요",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter는 가독성에 최적화되어 있으며, 시스템은 OS 기본 글꼴을 사용합니다",
|
||||
"fontSystem": "시스템 기본 글꼴",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "휴지통",
|
||||
"empty": "휴지통이 비어 있습니다",
|
||||
"emptyDescription": "삭제된 메모가 여기에 표시됩니다",
|
||||
"restore": "복원",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "영구 삭제",
|
||||
"noteTrashed": "메모가 휴지통으로 이동되었습니다",
|
||||
"noteRestored": "메모가 복원되었습니다",
|
||||
"notePermanentlyDeleted": "메모가 영구 삭제되었습니다",
|
||||
"emptyTrash": "휴지통 비우기",
|
||||
"emptyTrashConfirm": "휴지통의 모든 메모를 영구 삭제하시겠습니까?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "휴지통이 비워졌습니다",
|
||||
"permanentDelete": "영구 삭제",
|
||||
"permanentDeleteConfirm": "이 메모는 영구 삭제됩니다. 이 작업은 되돌릴 수 없습니다."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "개인정보",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "중국인",
|
||||
"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": {
|
||||
"unknown": "알 수 없음",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "로딩 중...",
|
||||
"error": "오류",
|
||||
"success": "성공",
|
||||
"confirm": "확인",
|
||||
"cancel": "취소",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "닫기",
|
||||
"save": "저장",
|
||||
"delete": "삭제",
|
||||
"edit": "편집",
|
||||
"add": "추가",
|
||||
"remove": "제거",
|
||||
"search": "검색",
|
||||
"noResults": "결과 없음",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "필수",
|
||||
"optional": "선택"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "검색 중...",
|
||||
"noNotesFoundForContext": "이 질문에 대한 관련 노트를 찾을 수 없습니다. 일반 지식으로 답변하세요.",
|
||||
"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": {
|
||||
"title": "랩",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "Oudste eerst",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "Accountmenu",
|
||||
"profile": "Profiel",
|
||||
"signOut": "Meld u af",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "Sorteervolgorde",
|
||||
"freezePinnedNotebook": "Zet de volgorde van de notitieboekjezijbalk vast",
|
||||
"unfreezePinnedNotebook": "Maak de volgorde van de notitieblokzijbalk los",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "Hernoemen",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Vrije volgorde",
|
||||
"moveFailed": "Kan notitieboek niet verplaatsen",
|
||||
"dropToRoot": "Hier loslaten om naar root te verplaatsen"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notities",
|
||||
"newNote": "Nieuwe notitie",
|
||||
"reorganize": "Notities reorganiseren",
|
||||
"untitled": "Naamloos",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "Maak een notitie...",
|
||||
"markdownPlaceholder": "Maak een notitie... (Markdown ondersteund)",
|
||||
"titlePlaceholder": "Titel",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "Toevoegen",
|
||||
"adding": "Toevoegen...",
|
||||
"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?",
|
||||
"sharedBy": "Gedeeld door",
|
||||
"sharedShort": "Gedeeld",
|
||||
"leaveShare": "Verlaten",
|
||||
"delete": "Verwijderen",
|
||||
"delete": "Delete",
|
||||
"archive": "Archiveren",
|
||||
"unarchive": "Dearchiveren",
|
||||
"pin": "Vastzetten",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "Dupliceren",
|
||||
"share": "Delen",
|
||||
"showCollaborators": "Medewerkers weergeven",
|
||||
"pinned": "Vastgezet",
|
||||
"pinned": "Note pinned",
|
||||
"others": "Overig",
|
||||
"noNotes": "Geen notities",
|
||||
"noNotesFound": "Geen notities gevonden",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "Recent",
|
||||
"addNote": "Notitie toevoegen",
|
||||
"readMore": "Lees meer",
|
||||
"remove": "Verwijderen",
|
||||
"dragToReorder": "Sleep om te herschikken",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "Meer",
|
||||
"emptyState": "Geen notities hier",
|
||||
"metadataPanel": "Details",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "Verbeteren mislukt",
|
||||
"transformFailed": "Transformeren mislukt",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "Losgemaakt",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "Opnieuw (Ctrl+Y)",
|
||||
"undoShortcut": "Ongedaan maken (Ctrl+Z)",
|
||||
"reorderTabs": "Tabblad herschikken",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "AI-instellingen",
|
||||
"logout": "Uitloggen",
|
||||
"login": "Inloggen",
|
||||
"adminDashboard": "Beheerdashboard",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "Diagnostiek",
|
||||
"trash": "Prullenbak",
|
||||
"support": "Memento ondersteunen ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "Pro Plan",
|
||||
"chat": "AI Chat",
|
||||
"lab": "Het Lab",
|
||||
"agents": "Agents"
|
||||
"agents": "Agents",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Instellingen",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "Beveiliging",
|
||||
"about": "Over",
|
||||
"version": "Versie",
|
||||
"settingsSaved": "Instellingen opgeslagen",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Genereer vectoren voor alle notities om intentiegericht zoeken mogelijk te maken",
|
||||
"profile": "Profiel",
|
||||
"searchNoResults": "Geen resultaten gevonden",
|
||||
"languageAuto": "Automatisch",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "E-mailmeldingen",
|
||||
"emailNotificationsDesc": "Ontvang belangrijke meldingen per e-mail",
|
||||
"desktopNotifications": "Bureaubladmeldingen",
|
||||
"desktopNotificationsDesc": "Ontvang meldingen in uw browser",
|
||||
"notificationsDesc": "Beheer uw meldingsvoorkeuren",
|
||||
"autoSave": "Automatisch opslaan",
|
||||
"autoSaveDesc": "Sla wijzigingen automatisch op tijdens het typen"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profiel",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "Voorkeurstaal",
|
||||
"selectLanguage": "Selecteer een taal",
|
||||
"languageDescription": "Deze taal wordt gebruikt voor AI-functies, inhoudsanalyse en interfacetekst.",
|
||||
"autoDetect": "Automatisch detecteren",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "Profiel bijgewerkt",
|
||||
"updateFailed": "Profiel bijwerken mislukt",
|
||||
"languageUpdateSuccess": "Taal succesvol bijgewerkt",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "Taal bijwerken mislukt",
|
||||
"profileUpdated": "Profiel bijgewerkt",
|
||||
"profileError": "Fout bij bijwerken profiel",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "Laden...",
|
||||
"save": "Opslaan",
|
||||
"cancel": "Annuleren",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "Toevoegen",
|
||||
"edit": "Bewerken",
|
||||
"confirm": "Bevestigen",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "Nieuw notitieboek maken",
|
||||
"createDescription": "Start een nieuwe verzameling om uw notities, ideeën en projecten efficiënt te organiseren.",
|
||||
"name": "Naam van notitieboek",
|
||||
"namePlaceholder": "bijv. Q4 Marketingstrategie",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "Mijn notitieboek",
|
||||
"saving": "Opslaan...",
|
||||
"selectIcon": "Icoon",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "Maken...",
|
||||
"edit": "Notitieboek bewerken",
|
||||
"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.",
|
||||
"deleteConfirm": "Verwijderen",
|
||||
"summary": "Samenvatting van notitieboek",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "Vastgezet notitieboekje — bestelling bevroren",
|
||||
"organizeNotebookWithAITooltip": "Organiseer dit notitieboekje met AI",
|
||||
"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": {
|
||||
"title": "Verplaatsen naar {name}?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"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.",
|
||||
"notesViewLabel": "Notities weergave",
|
||||
"notesViewTabs": "Tabbladen (OneNote-stijl)",
|
||||
"notesViewMasonry": "Kaarten (raster)",
|
||||
"notesViewList": "Lijst (tijdschrift)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Lettertypefamilie",
|
||||
"fontFamilyDescription": "Kies het lettertype dat in de hele app wordt gebruikt",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter is geoptimaliseerd voor leesbaarheid, Systeem gebruikt het native lettertype van uw besturingssysteem",
|
||||
"fontSystem": "Standaard systeemlettertype",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Prullenbak",
|
||||
"empty": "De prullenbak is leeg",
|
||||
"emptyDescription": "Verwijderde notities verschijnen hier",
|
||||
"restore": "Herstellen",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Definitief verwijderen",
|
||||
"noteTrashed": "Notitie naar prullenbak verplaatst",
|
||||
"noteRestored": "Notitie hersteld",
|
||||
"notePermanentlyDeleted": "Notitie definitief verwijderd",
|
||||
"emptyTrash": "Prullenbak legen",
|
||||
"emptyTrashConfirm": "Alle notities in de prullenbak definitief verwijderen?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Prullenbak geleegd",
|
||||
"permanentDelete": "Definitief verwijderen",
|
||||
"permanentDeleteConfirm": "Deze notitie wordt definitief verwijderd. Deze actie kan niet ongedaan worden gemaakt."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Privacy",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "Chinese",
|
||||
"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": {
|
||||
"unknown": "Onbekend",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "Laden...",
|
||||
"error": "Fout",
|
||||
"success": "Succes",
|
||||
"confirm": "Bevestigen",
|
||||
"cancel": "Annuleren",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "Sluiten",
|
||||
"save": "Opslaan",
|
||||
"delete": "Verwijderen",
|
||||
"edit": "Bewerken",
|
||||
"add": "Toevoegen",
|
||||
"remove": "Verwijderen",
|
||||
"search": "Zoeken",
|
||||
"noResults": "Geen resultaten",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Vereist",
|
||||
"optional": "Optioneel"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "Zoeken...",
|
||||
"noNotesFoundForContext": "Geen relevante notities gevonden voor deze vraag. Beantwoord met je algemene kennis.",
|
||||
"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": {
|
||||
"title": "Het Lab",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "Najpierw najstarszy",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "Menu konta",
|
||||
"profile": "Profil",
|
||||
"signOut": "Wyloguj się",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "Kolejność sortowania",
|
||||
"freezePinnedNotebook": "Przypnij kolejność paska bocznego notatnika",
|
||||
"unfreezePinnedNotebook": "Odepnij zamówienie na pasku bocznym notatnika",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "Przemianować",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Dowolna kolejność",
|
||||
"moveFailed": "Nie udało się przenieść notatnika",
|
||||
"dropToRoot": "Upuść tutaj, aby przenieść do roota"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notatki",
|
||||
"newNote": "Nowa notatka",
|
||||
"reorganize": "Reorganizuj notatki",
|
||||
"untitled": "Bez tytułu",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "Zrób notatkę...",
|
||||
"markdownPlaceholder": "Zrób notatkę... (Markdown obsługiwany)",
|
||||
"titlePlaceholder": "Tytuł",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "Dodaj",
|
||||
"adding": "Dodawanie...",
|
||||
"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ę?",
|
||||
"sharedBy": "Udostępnione przez",
|
||||
"sharedShort": "Wspólny",
|
||||
"leaveShare": "Opuść",
|
||||
"delete": "Usuń",
|
||||
"delete": "Delete",
|
||||
"archive": "Archiwizuj",
|
||||
"unarchive": "Przywróć z archiwum",
|
||||
"pin": "Przypnij",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "Duplikuj",
|
||||
"share": "Udostępnij",
|
||||
"showCollaborators": "Pokaż współpracowników",
|
||||
"pinned": "Przypięte",
|
||||
"pinned": "Note pinned",
|
||||
"others": "Inne",
|
||||
"noNotes": "Brak notatek",
|
||||
"noNotesFound": "Nie znaleziono notatek",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "Ostatnie",
|
||||
"addNote": "Dodaj notatkę",
|
||||
"readMore": "Czytaj więcej",
|
||||
"remove": "Usuń",
|
||||
"dragToReorder": "Przeciągnij, aby zmienić kolejność",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "Więcej",
|
||||
"emptyState": "Brak notatek tutaj",
|
||||
"metadataPanel": "Bliższe dane",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "Ulepszenie nie powiodło się",
|
||||
"transformFailed": "Przekształcenie nie powiodło się",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "Odepnięta",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "Ponów (Ctrl+Y)",
|
||||
"undoShortcut": "Cofnij (Ctrl+Z)",
|
||||
"reorderTabs": "Zmień kolejność kart",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "Pobieranie nie powiodło się"
|
||||
},
|
||||
"nav": {
|
||||
"home": "Strona główna",
|
||||
"home": "Home",
|
||||
"notes": "Notatki",
|
||||
"notebooks": "Notatniki",
|
||||
"generalNotes": "Notatki ogólne",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "Ustawienia AI",
|
||||
"logout": "Wyloguj",
|
||||
"login": "Zaloguj",
|
||||
"adminDashboard": "Panel administracyjny",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "Diagnostyka",
|
||||
"trash": "Kosz",
|
||||
"support": "Wspomóż Memento ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "Plan Pro",
|
||||
"chat": "Czat AI",
|
||||
"lab": "Laboratorium",
|
||||
"agents": "Agenci"
|
||||
"agents": "Agenci",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Ustawienia",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "Bezpieczeństwo",
|
||||
"about": "O aplikacji",
|
||||
"version": "Wersja",
|
||||
"settingsSaved": "Ustawienia zapisane",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Generuj wektory dla wszystkich notatek, aby umożliwić wyszukiwanie oparte na intencji",
|
||||
"profile": "Profil",
|
||||
"searchNoResults": "Nie znaleziono wyników",
|
||||
"languageAuto": "Automatyczny",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "Powiadomienia e-mail",
|
||||
"emailNotificationsDesc": "Otrzymuj ważne powiadomienia przez e-mail",
|
||||
"desktopNotifications": "Powiadomienia na pulpicie",
|
||||
"desktopNotificationsDesc": "Otrzymuj powiadomienia w przeglądarce",
|
||||
"notificationsDesc": "Zarządzaj swoimi preferencjami powiadomień",
|
||||
"autoSave": "Automatyczne zapisywanie",
|
||||
"autoSaveDesc": "Automatycznie zapisuj zmiany podczas pisania"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profil",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "Preferowany język",
|
||||
"selectLanguage": "Wybierz język",
|
||||
"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",
|
||||
"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",
|
||||
"profileUpdated": "Profil zaktualizowany",
|
||||
"profileError": "Błąd aktualizacji profilu",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "Ładowanie...",
|
||||
"save": "Zapisz",
|
||||
"cancel": "Anuluj",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "Dodaj",
|
||||
"edit": "Edytuj",
|
||||
"confirm": "Potwierdź",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "Utwórz nowy notatnik",
|
||||
"createDescription": "Rozpocznij nową kolekcję, aby efektywnie organizować swoje notatki, pomysły i projekty.",
|
||||
"name": "Nazwa notatnika",
|
||||
"namePlaceholder": "np. Strategia marketingowa Q4",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "Mój notatnik",
|
||||
"saving": "Zapisywanie...",
|
||||
"selectIcon": "Ikona",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "Tworzenie...",
|
||||
"edit": "Edytuj notatnik",
|
||||
"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.",
|
||||
"deleteConfirm": "Usuń",
|
||||
"summary": "Podsumowanie notatnika",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "Przypięty notatnik — zamówienie zamrożone",
|
||||
"organizeNotebookWithAITooltip": "Uporządkuj ten notatnik za pomocą sztucznej inteligencji",
|
||||
"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": {
|
||||
"title": "Przenieść do {name}?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"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.",
|
||||
"notesViewLabel": "Układ notatek",
|
||||
"notesViewTabs": "Karty (styl OneNote)",
|
||||
"notesViewMasonry": "Karty (siatka)",
|
||||
"notesViewList": "Lista (magazyn)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Rodzina czcionek",
|
||||
"fontFamilyDescription": "Wybierz czcionkę używaną w całej aplikacji",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"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)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Kosz",
|
||||
"empty": "Kosz jest pusty",
|
||||
"emptyDescription": "Usunięte notatki pojawią się tutaj",
|
||||
"restore": "Przywróć",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Usuń trwale",
|
||||
"noteTrashed": "Notatka przeniesiona do kosza",
|
||||
"noteRestored": "Notatka przywrócona",
|
||||
"notePermanentlyDeleted": "Notatka trwale usunięta",
|
||||
"emptyTrash": "Opróżnij kosz",
|
||||
"emptyTrashConfirm": "Trwale usunąć wszystkie notatki z kosza?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Kosz opróżniony",
|
||||
"permanentDelete": "Usuń trwale",
|
||||
"permanentDeleteConfirm": "Ta notatka zostanie trwale usunięta. Ta operacja jest nieodwracalna."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Prywatność",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "chiń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": {
|
||||
"unknown": "Nieznany",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "Ładowanie...",
|
||||
"error": "Błąd",
|
||||
"success": "Sukces",
|
||||
"confirm": "Potwierdź",
|
||||
"cancel": "Anuluj",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "Zamknij",
|
||||
"save": "Zapisz",
|
||||
"delete": "Usuń",
|
||||
"edit": "Edytuj",
|
||||
"add": "Dodaj",
|
||||
"remove": "Usuń",
|
||||
"search": "Szukaj",
|
||||
"noResults": "Brak wyników",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Wymagane",
|
||||
"optional": "Opcjonalne"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "Wyszukiwanie...",
|
||||
"noNotesFoundForContext": "Nie znaleziono odpowiednich notatek dla tego pytania. Odpowiedz używając ogólnej wiedzy.",
|
||||
"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": {
|
||||
"title": "Laboratorium",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "Mais antigo primeiro",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "Menu da conta",
|
||||
"profile": "Perfil",
|
||||
"signOut": "sair",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "Ordem de classificação",
|
||||
"freezePinnedNotebook": "Fixar ordem da barra lateral do notebook",
|
||||
"unfreezePinnedNotebook": "Liberar ordem da barra lateral do notebook",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "Renomear",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Ordem livre",
|
||||
"moveFailed": "Falha ao mover o caderno",
|
||||
"dropToRoot": "Solte aqui para mover para a raiz"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Notas",
|
||||
"newNote": "Nova nota",
|
||||
"reorganize": "Reorganizar notas",
|
||||
"untitled": "Sem título",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "Faça uma nota...",
|
||||
"markdownPlaceholder": "Faça uma nota... (Markdown suportado)",
|
||||
"titlePlaceholder": "Título",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "Adicionar",
|
||||
"adding": "Adicionando...",
|
||||
"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?",
|
||||
"sharedBy": "Compartilhado por",
|
||||
"sharedShort": "Compartilhado",
|
||||
"leaveShare": "Sair",
|
||||
"delete": "Excluir",
|
||||
"delete": "Delete",
|
||||
"archive": "Arquivar",
|
||||
"unarchive": "Desarquivar",
|
||||
"pin": "Fixar",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "Duplicar",
|
||||
"share": "Compartilhar",
|
||||
"showCollaborators": "Mostrar colaboradores",
|
||||
"pinned": "Fixadas",
|
||||
"pinned": "Note pinned",
|
||||
"others": "Outros",
|
||||
"noNotes": "Sem notas",
|
||||
"noNotesFound": "Nenhuma nota encontrada",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "Recentes",
|
||||
"addNote": "Adicionar nota",
|
||||
"readMore": "Ler mais",
|
||||
"remove": "Remover",
|
||||
"dragToReorder": "Arraste para reordenar",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "Mais",
|
||||
"emptyState": "Nenhuma nota aqui",
|
||||
"metadataPanel": "Detalhes",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "Falha ao melhorar",
|
||||
"transformFailed": "Falha ao transformar",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "Desafixado",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "Refazer (Ctrl+Y)",
|
||||
"undoShortcut": "Desfazer (Ctrl+Z)",
|
||||
"reorderTabs": "Reordenar aba",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "Falha no download"
|
||||
},
|
||||
"nav": {
|
||||
"home": "Início",
|
||||
"home": "Home",
|
||||
"notes": "Notas",
|
||||
"notebooks": "Cadernos",
|
||||
"generalNotes": "Notas gerais",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "Configurações de IA",
|
||||
"logout": "Sair",
|
||||
"login": "Entrar",
|
||||
"adminDashboard": "Painel de administração",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "Diagnósticos",
|
||||
"trash": "Lixeira",
|
||||
"support": "Apoie o Memento ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "Plano Pro",
|
||||
"chat": "Chat IA",
|
||||
"lab": "O Laboratório",
|
||||
"agents": "Agentes"
|
||||
"agents": "Agentes",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Configurações",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "Segurança",
|
||||
"about": "Sobre",
|
||||
"version": "Versão",
|
||||
"settingsSaved": "Configurações salvas",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Gere vetores para todas as notas para ativar a pesquisa baseada em intenção",
|
||||
"profile": "Perfil",
|
||||
"searchNoResults": "Nenhum resultado encontrado",
|
||||
"languageAuto": "Automático",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "Notificações por e-mail",
|
||||
"emailNotificationsDesc": "Receba notificações importantes por e-mail",
|
||||
"desktopNotifications": "Notificações na área de trabalho",
|
||||
"desktopNotificationsDesc": "Receba notificações no seu navegador",
|
||||
"notificationsDesc": "Gerencie suas preferências de notificação",
|
||||
"autoSave": "Salvar automaticamente",
|
||||
"autoSaveDesc": "Salvar alterações automaticamente enquanto digita"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Perfil",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "Idioma preferido",
|
||||
"selectLanguage": "Selecione um idioma",
|
||||
"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",
|
||||
"updateFailed": "Falha ao atualizar perfil",
|
||||
"languageUpdateSuccess": "Idioma atualizado com sucesso",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "Falha ao atualizar idioma",
|
||||
"profileUpdated": "Perfil atualizado",
|
||||
"profileError": "Erro ao atualizar perfil",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "Carregando...",
|
||||
"save": "Salvar",
|
||||
"cancel": "Cancelar",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "Adicionar",
|
||||
"edit": "Editar",
|
||||
"confirm": "Confirmar",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "Criar novo caderno",
|
||||
"createDescription": "Inicie uma nova coleção para organizar suas notas, ideias e projetos de forma eficiente.",
|
||||
"name": "Nome do caderno",
|
||||
"namePlaceholder": "ex. Estratégia de Marketing Q4",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "Meu Caderno",
|
||||
"saving": "Salvando...",
|
||||
"selectIcon": "Ícone",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "Criando...",
|
||||
"edit": "Editar 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.",
|
||||
"deleteConfirm": "Excluir",
|
||||
"summary": "Resumo do caderno",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "Caderno fixado – pedido congelado",
|
||||
"organizeNotebookWithAITooltip": "Organize este notebook com IA",
|
||||
"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": {
|
||||
"title": "Mover para {name}?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"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.",
|
||||
"notesViewLabel": "Layout das notas",
|
||||
"notesViewTabs": "Abas (estilo OneNote)",
|
||||
"notesViewMasonry": "Cartões (grade)",
|
||||
"notesViewList": "Lista (revista)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Família de fontes",
|
||||
"fontFamilyDescription": "Escolha a fonte usada em todo o aplicativo",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"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)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Lixeira",
|
||||
"empty": "A lixeira está vazia",
|
||||
"emptyDescription": "As notas excluídas aparecerão aqui",
|
||||
"restore": "Restaurar",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Excluir permanentemente",
|
||||
"noteTrashed": "Nota movida para a lixeira",
|
||||
"noteRestored": "Nota restaurada",
|
||||
"notePermanentlyDeleted": "Nota excluída permanentemente",
|
||||
"emptyTrash": "Esvaziar lixeira",
|
||||
"emptyTrashConfirm": "Excluir permanentemente todas as notas da lixeira?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Lixeira esvaziada",
|
||||
"permanentDelete": "Excluir permanentemente",
|
||||
"permanentDeleteConfirm": "Esta nota será excluída permanentemente. Esta ação não pode ser desfeita."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Privacidade",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "chinê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": {
|
||||
"unknown": "Desconhecido",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "Carregando...",
|
||||
"error": "Erro",
|
||||
"success": "Sucesso",
|
||||
"confirm": "Confirmar",
|
||||
"cancel": "Cancelar",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "Fechar",
|
||||
"save": "Salvar",
|
||||
"delete": "Excluir",
|
||||
"edit": "Editar",
|
||||
"add": "Adicionar",
|
||||
"remove": "Remover",
|
||||
"search": "Pesquisar",
|
||||
"noResults": "Sem resultados",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Obrigatório",
|
||||
"optional": "Opcional"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "Pesquisando...",
|
||||
"noNotesFoundForContext": "Nenhuma nota relevante encontrada para esta pergunta. Responda com seu conhecimento geral.",
|
||||
"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": {
|
||||
"title": "O Laboratório",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "Сначала самый старый",
|
||||
"sortAlpha": "А → Я",
|
||||
"accountMenu": "Меню аккаунта",
|
||||
"profile": "Профиль",
|
||||
"signOut": "выход",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "Порядок сортировки",
|
||||
"freezePinnedNotebook": "Закрепить порядок на боковой панели блокнота",
|
||||
"unfreezePinnedNotebook": "Открепить порядок боковой панели блокнота",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "Переименовать",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "Свободный порядок",
|
||||
"moveFailed": "Не удалось переместить блокнот",
|
||||
"dropToRoot": "Перетащите сюда для перемещения в корень"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "Заметки",
|
||||
"newNote": "Новая заметка",
|
||||
"reorganize": "Реорганизация заметок",
|
||||
"untitled": "Без названия",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "Сделайте заметку...",
|
||||
"markdownPlaceholder": "Сделайте заметку... (Поддерживается Markdown)",
|
||||
"titlePlaceholder": "Заголовок",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "Добавить",
|
||||
"adding": "Добавление...",
|
||||
"close": "Закрыть",
|
||||
"confirmDelete": "Вы уверены, что хотите удалить эту заметку?",
|
||||
"confirmDelete": "Are you sure you want to delete this note?",
|
||||
"confirmLeaveShare": "Вы уверены, что хотите покинуть эту общую заметку?",
|
||||
"sharedBy": "Поделился",
|
||||
"sharedShort": "Общий",
|
||||
"leaveShare": "Покинуть",
|
||||
"delete": "Удалить",
|
||||
"delete": "Delete",
|
||||
"archive": "Архивировать",
|
||||
"unarchive": "Разархивировать",
|
||||
"pin": "Закрепить",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "Дублировать",
|
||||
"share": "Поделиться",
|
||||
"showCollaborators": "Показать соавторов",
|
||||
"pinned": "Закреплённые",
|
||||
"pinned": "Note pinned",
|
||||
"others": "Другие",
|
||||
"noNotes": "Нет заметок",
|
||||
"noNotesFound": "Заметки не найдены",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "Недавние",
|
||||
"addNote": "Добавить заметку",
|
||||
"readMore": "Читать далее",
|
||||
"remove": "Удалить",
|
||||
"dragToReorder": "Перетащите для изменения порядка",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "Ещё",
|
||||
"emptyState": "Здесь нет заметок",
|
||||
"metadataPanel": "Подробности",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "Ошибка улучшения",
|
||||
"transformFailed": "Ошибка преобразования",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "Откреплённая",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "Повторить (Ctrl+Y)",
|
||||
"undoShortcut": "Отменить (Ctrl+Z)",
|
||||
"reorderTabs": "Изменить порядок вкладок",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "Загрузка не удалась"
|
||||
},
|
||||
"nav": {
|
||||
"home": "Главная",
|
||||
"home": "Home",
|
||||
"notes": "Заметки",
|
||||
"notebooks": "Блокноты",
|
||||
"generalNotes": "Общие заметки",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "Настройки ИИ",
|
||||
"logout": "Выйти",
|
||||
"login": "Войти",
|
||||
"adminDashboard": "Панель администратора",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "Диагностика",
|
||||
"trash": "Корзина",
|
||||
"support": "Поддержать Memento ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "Про-план",
|
||||
"chat": "ИИ-чат",
|
||||
"lab": "Лаборатория",
|
||||
"agents": "Агенты"
|
||||
"agents": "Агенты",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "Настройки",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "Безопасность",
|
||||
"about": "О программе",
|
||||
"version": "Версия",
|
||||
"settingsSaved": "Настройки сохранены",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "Создать векторы для всех заметок для поиска по смыслу",
|
||||
"profile": "Профиль",
|
||||
"searchNoResults": "Результаты не найдены",
|
||||
"languageAuto": "Автоматически",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "Email-уведомления",
|
||||
"emailNotificationsDesc": "Получать важные уведомления по email",
|
||||
"desktopNotifications": "Уведомления на рабочем столе",
|
||||
"desktopNotificationsDesc": "Получать уведомления в браузере",
|
||||
"notificationsDesc": "Управление настройками уведомлений",
|
||||
"autoSave": "Автосохранение",
|
||||
"autoSaveDesc": "Автоматически сохранять изменения во время ввода"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "Профиль",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "Предпочитаемый язык",
|
||||
"selectLanguage": "Выберите язык",
|
||||
"languageDescription": "Этот язык будет использоваться для функций на базе ИИ, анализа содержимого и текста интерфейса.",
|
||||
"autoDetect": "Автоопределение",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "Профиль обновлён",
|
||||
"updateFailed": "Не удалось обновить профиль",
|
||||
"languageUpdateSuccess": "Язык успешно обновлён",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "Не удалось обновить язык",
|
||||
"profileUpdated": "Профиль обновлён",
|
||||
"profileError": "Ошибка обновления профиля",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "Загрузка...",
|
||||
"save": "Сохранить",
|
||||
"cancel": "Отмена",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "Добавить",
|
||||
"edit": "Редактировать",
|
||||
"confirm": "Подтвердить",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "Создать новый блокнот",
|
||||
"createDescription": "Начните новую коллекцию для эффективной организации ваших заметок, идей и проектов.",
|
||||
"name": "Название блокнота",
|
||||
"namePlaceholder": "напр. Маркетинговая стратегия Q4",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "Мой блокнот",
|
||||
"saving": "Сохранение...",
|
||||
"selectIcon": "Значок",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "Создание...",
|
||||
"edit": "Редактировать блокнот",
|
||||
"editDescription": "Измените название, значок и цвет вашего блокнота.",
|
||||
"delete": "Удалить блокнот",
|
||||
"delete": "Delete",
|
||||
"deleteWarning": "Вы уверены, что хотите удалить этот блокнот? Заметки будут перемещены в Общие заметки.",
|
||||
"deleteConfirm": "Удалить",
|
||||
"summary": "Сводка блокнота",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "Прикрепленный блокнот — заказ заморожен",
|
||||
"organizeNotebookWithAITooltip": "Организуйте этот блокнот с помощью ИИ",
|
||||
"assistantRequiredForSummarize": "Включите AI Assistant в настройках, чтобы подводить итоги.",
|
||||
"createSubnotebook": "Добавить субноутбук"
|
||||
"createSubnotebook": "Добавить субноутбук",
|
||||
"createSubNotebook": "Add sub-notebook",
|
||||
"rename": "Rename",
|
||||
"moveToTrash": "Move to trash"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "Переместить в {name}?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "Внешний вид",
|
||||
"description": "Настройте внешний вид приложения",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "Выберите, как отображаются заметки на главной странице и в блокнотах.",
|
||||
"notesViewLabel": "Макет заметок",
|
||||
"notesViewTabs": "Вкладки (в стиле OneNote)",
|
||||
"notesViewMasonry": "Карточки (сетка)",
|
||||
"notesViewList": "Список (журнал)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "Семейство шрифтов",
|
||||
"fontFamilyDescription": "Выберите шрифт, используемый во всём приложении",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter оптимизирован для читаемости, Системный использует нативный шрифт вашей ОС",
|
||||
"fontSystem": "Системный шрифт по умолчанию",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "Корзина",
|
||||
"empty": "Корзина пуста",
|
||||
"emptyDescription": "Удалённые заметки появятся здесь",
|
||||
"restore": "Восстановить",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "Удалить навсегда",
|
||||
"noteTrashed": "Заметка перемещена в корзину",
|
||||
"noteRestored": "Заметка восстановлена",
|
||||
"notePermanentlyDeleted": "Заметка удалена навсегда",
|
||||
"emptyTrash": "Очистить корзину",
|
||||
"emptyTrashConfirm": "Удалить навсегда все заметки из корзины?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "Корзина очищена",
|
||||
"permanentDelete": "Удалить навсегда",
|
||||
"permanentDeleteConfirm": "Эта заметка будет удалена навсегда. Это действие нельзя отменить."
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "Конфиденциальность",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "китайский",
|
||||
"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": {
|
||||
"unknown": "Неизвестно",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "Загрузка...",
|
||||
"error": "Ошибка",
|
||||
"success": "Успешно",
|
||||
"confirm": "Подтвердить",
|
||||
"cancel": "Отмена",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "Закрыть",
|
||||
"save": "Сохранить",
|
||||
"delete": "Удалить",
|
||||
"edit": "Редактировать",
|
||||
"add": "Добавить",
|
||||
"remove": "Удалить",
|
||||
"search": "Поиск",
|
||||
"noResults": "Нет результатов",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "Обязательно",
|
||||
"optional": "Необязательно"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "Поиск...",
|
||||
"noNotesFoundForContext": "Не найдено заметок по этому вопросу. Ответьте, используя свои общие знания.",
|
||||
"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": {
|
||||
"title": "Лаборатория",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,8 +49,8 @@
|
||||
"sortOldest": "最老的在前",
|
||||
"sortAlpha": "A → Z",
|
||||
"accountMenu": "账户菜单",
|
||||
"profile": "轮廓",
|
||||
"signOut": "登出",
|
||||
"profile": "Profile",
|
||||
"signOut": "Sign out",
|
||||
"sortOrder": "排序顺序",
|
||||
"freezePinnedNotebook": "固定笔记本侧边栏顺序",
|
||||
"unfreezePinnedNotebook": "取消固定笔记本侧边栏顺序",
|
||||
@@ -58,14 +58,15 @@
|
||||
"renameNotebook": "重命名",
|
||||
"sharedNotebookBadge": "· Shared",
|
||||
"sortManual": "自定义顺序",
|
||||
"moveFailed": "移动笔记本失败",
|
||||
"dropToRoot": "拖放到此处移至根级别"
|
||||
"moveFailed": "Failed to move notebook",
|
||||
"dropToRoot": "Drop here to move to root",
|
||||
"noReminders": "No active reminders."
|
||||
},
|
||||
"notes": {
|
||||
"title": "笔记",
|
||||
"newNote": "新建笔记",
|
||||
"reorganize": "重新整理笔记",
|
||||
"untitled": "无标题",
|
||||
"untitled": "Untitled",
|
||||
"placeholder": "记笔记...",
|
||||
"markdownPlaceholder": "记笔记...(支持 Markdown)",
|
||||
"titlePlaceholder": "标题",
|
||||
@@ -81,12 +82,12 @@
|
||||
"add": "添加",
|
||||
"adding": "添加中...",
|
||||
"close": "关闭",
|
||||
"confirmDelete": "确定要删除这条笔记吗?",
|
||||
"confirmDelete": "Are you sure you want to delete this note?",
|
||||
"confirmLeaveShare": "确定要离开这条共享笔记吗?",
|
||||
"sharedBy": "共享者",
|
||||
"sharedShort": "共享",
|
||||
"leaveShare": "离开",
|
||||
"delete": "删除",
|
||||
"delete": "Delete",
|
||||
"archive": "归档",
|
||||
"unarchive": "取消归档",
|
||||
"pin": "置顶",
|
||||
@@ -127,7 +128,7 @@
|
||||
"duplicate": "复制",
|
||||
"share": "共享",
|
||||
"showCollaborators": "显示协作者",
|
||||
"pinned": "已置顶",
|
||||
"pinned": "Note pinned",
|
||||
"others": "其他",
|
||||
"noNotes": "无笔记",
|
||||
"noNotesFound": "未找到笔记",
|
||||
@@ -159,8 +160,8 @@
|
||||
"recent": "最近",
|
||||
"addNote": "添加笔记",
|
||||
"readMore": "阅读全文",
|
||||
"remove": "移除",
|
||||
"dragToReorder": "拖动以重新排序",
|
||||
"remove": "Remove",
|
||||
"dragToReorder": "Drag to reorder",
|
||||
"more": "更多",
|
||||
"emptyState": "暂无笔记",
|
||||
"metadataPanel": "细节",
|
||||
@@ -173,7 +174,7 @@
|
||||
"improveFailed": "改进失败",
|
||||
"transformFailed": "转换失败",
|
||||
"markdown": "Markdown",
|
||||
"unpinned": "未置顶",
|
||||
"unpinned": "Note unpinned",
|
||||
"redoShortcut": "重做 (Ctrl+Y)",
|
||||
"undoShortcut": "撤销 (Ctrl+Z)",
|
||||
"reorderTabs": "重新排序标签页",
|
||||
@@ -751,7 +752,7 @@
|
||||
"downloadFailed": "下载失败"
|
||||
},
|
||||
"nav": {
|
||||
"home": "主页",
|
||||
"home": "Home",
|
||||
"notes": "笔记",
|
||||
"notebooks": "笔记本",
|
||||
"generalNotes": "普通笔记",
|
||||
@@ -761,7 +762,7 @@
|
||||
"aiSettings": "AI 设置",
|
||||
"logout": "退出登录",
|
||||
"login": "登录",
|
||||
"adminDashboard": "管理后台",
|
||||
"adminDashboard": "Admin Dashboard",
|
||||
"diagnostics": "诊断",
|
||||
"trash": "回收站",
|
||||
"support": "支持 Memento ☕",
|
||||
@@ -786,7 +787,8 @@
|
||||
"proPlan": "专业版",
|
||||
"chat": "AI 聊天",
|
||||
"lab": "实验室",
|
||||
"agents": "代理"
|
||||
"agents": "代理",
|
||||
"sharedWithMe": "Shared with me"
|
||||
},
|
||||
"settings": {
|
||||
"title": "设置",
|
||||
@@ -814,7 +816,7 @@
|
||||
"security": "安全",
|
||||
"about": "关于",
|
||||
"version": "版本",
|
||||
"settingsSaved": "设置已保存",
|
||||
"settingsSaved": "Settings saved",
|
||||
"cardSizeMode": "Note Size",
|
||||
"cardSizeModeDescription": "Choose between variable sizes or uniform size",
|
||||
"selectCardSizeMode": "Select display mode",
|
||||
@@ -835,14 +837,14 @@
|
||||
"semanticIndexingDescription": "为所有笔记生成向量以启用基于意图的搜索",
|
||||
"profile": "个人资料",
|
||||
"searchNoResults": "未找到匹配的设置",
|
||||
"languageAuto": "自动检测",
|
||||
"languageAuto": "Language set to Auto",
|
||||
"emailNotifications": "电子邮件通知",
|
||||
"emailNotificationsDesc": "通过电子邮件接收重要通知",
|
||||
"desktopNotifications": "桌面通知",
|
||||
"desktopNotificationsDesc": "在浏览器中接收通知",
|
||||
"notificationsDesc": "管理您的通知偏好",
|
||||
"autoSave": "自动保存",
|
||||
"autoSaveDesc": "键入时自动保存更改"
|
||||
"autoSave": "Auto-save",
|
||||
"autoSaveDesc": "Automatically save changes while typing"
|
||||
},
|
||||
"profile": {
|
||||
"title": "个人资料",
|
||||
@@ -864,10 +866,10 @@
|
||||
"preferredLanguage": "首选语言",
|
||||
"selectLanguage": "选择语言",
|
||||
"languageDescription": "此语言将用于 AI 驱动的功能、内容分析和界面文本。",
|
||||
"autoDetect": "自动检测",
|
||||
"autoDetect": "Auto-detect",
|
||||
"updateSuccess": "个人资料已更新",
|
||||
"updateFailed": "更新个人资料失败",
|
||||
"languageUpdateSuccess": "语言更新成功",
|
||||
"languageUpdateSuccess": "Language updated successfully",
|
||||
"languageUpdateFailed": "更新语言失败",
|
||||
"profileUpdated": "个人资料已更新",
|
||||
"profileError": "更新个人资料时出错",
|
||||
@@ -922,8 +924,8 @@
|
||||
},
|
||||
"general": {
|
||||
"loading": "加载中...",
|
||||
"save": "保存",
|
||||
"cancel": "取消",
|
||||
"save": "Save",
|
||||
"cancel": "Cancel",
|
||||
"add": "添加",
|
||||
"edit": "编辑",
|
||||
"confirm": "确认",
|
||||
@@ -984,7 +986,7 @@
|
||||
"createNew": "创建新笔记本",
|
||||
"createDescription": "开始一个新的集合,高效地组织您的笔记、想法和项目。",
|
||||
"name": "笔记本名称",
|
||||
"namePlaceholder": "例如:第四季度营销策略",
|
||||
"namePlaceholder": "Notebook name",
|
||||
"myNotebook": "我的笔记本",
|
||||
"saving": "保存中...",
|
||||
"selectIcon": "图标",
|
||||
@@ -993,7 +995,7 @@
|
||||
"creating": "创建中...",
|
||||
"edit": "编辑笔记本",
|
||||
"editDescription": "更改笔记本的名称、图标和颜色。",
|
||||
"delete": "删除笔记本",
|
||||
"delete": "Delete",
|
||||
"deleteWarning": "确定要删除此笔记本吗?笔记将被移动到普通笔记。",
|
||||
"deleteConfirm": "删除",
|
||||
"summary": "笔记本摘要",
|
||||
@@ -1012,7 +1014,10 @@
|
||||
"pinnedFrozenTooltip": "固定笔记本 — 订单冻结",
|
||||
"organizeNotebookWithAITooltip": "用人工智能整理这个笔记本",
|
||||
"assistantRequiredForSummarize": "设置中开启AI助手进行总结",
|
||||
"createSubnotebook": "添加子笔记本"
|
||||
"createSubnotebook": "添加子笔记本",
|
||||
"createSubNotebook": "Add sub-notebook",
|
||||
"rename": "Rename",
|
||||
"moveToTrash": "Move to trash"
|
||||
},
|
||||
"notebookSuggestion": {
|
||||
"title": "移动到 {name}?",
|
||||
@@ -1430,20 +1435,22 @@
|
||||
},
|
||||
"appearance": {
|
||||
"title": "外观",
|
||||
"description": "自定义应用的外观",
|
||||
"description": "Customize the interface",
|
||||
"notesViewDescription": "选择笔记在主页和笔记本中的显示方式。",
|
||||
"notesViewLabel": "笔记布局",
|
||||
"notesViewTabs": "标签页(OneNote 风格)",
|
||||
"notesViewMasonry": "卡片(网格)",
|
||||
"notesViewList": "列表(杂志)",
|
||||
"selectTheme": "Select theme",
|
||||
"fontFamilyLabel": "字体系列",
|
||||
"fontFamilyDescription": "选择应用程序中使用的字体",
|
||||
"selectTheme": "Choose your preferred theme",
|
||||
"fontFamilyLabel": "Font",
|
||||
"fontFamilyDescription": "Choose the application's font",
|
||||
"selectFontFamily": "Inter 针对可读性进行了优化,系统使用您操作系统的原生字体",
|
||||
"fontSystem": "系统默认字体",
|
||||
"fontSystem": "System",
|
||||
"fontInterDefault": "Inter (default)",
|
||||
"fontPlayfairDisplay": "Playfair Display",
|
||||
"fontJetBrainsMono": "JetBrains Mono"
|
||||
"fontJetBrainsMono": "JetBrains Mono",
|
||||
"accentColorTitle": "Accent Color",
|
||||
"accentColorDescription": "Set the main color of your workspace"
|
||||
},
|
||||
"generalSettings": {
|
||||
"title": "General",
|
||||
@@ -1477,18 +1484,26 @@
|
||||
},
|
||||
"trash": {
|
||||
"title": "回收站",
|
||||
"empty": "回收站为空",
|
||||
"emptyDescription": "已删除的笔记将显示在这里",
|
||||
"restore": "恢复",
|
||||
"empty": "Trash is empty",
|
||||
"emptyDescription": "Deleted items will appear here. They are kept for 30 days before permanent deletion.",
|
||||
"restore": "Restore",
|
||||
"deletePermanently": "永久删除",
|
||||
"noteTrashed": "笔记已移至回收站",
|
||||
"noteRestored": "笔记已恢复",
|
||||
"notePermanentlyDeleted": "笔记已永久删除",
|
||||
"emptyTrash": "清空回收站",
|
||||
"emptyTrashConfirm": "确定永久删除回收站中的所有笔记?",
|
||||
"emptyTrashConfirm": "Empty trash? This is irreversible.",
|
||||
"emptyTrashSuccess": "回收站已清空",
|
||||
"permanentDelete": "永久删除",
|
||||
"permanentDeleteConfirm": "此笔记将被永久删除,此操作无法撤销。"
|
||||
"permanentDelete": "Delete permanently",
|
||||
"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": {
|
||||
"privacy": "隐私",
|
||||
@@ -1583,7 +1598,23 @@
|
||||
"chinese": "中国人",
|
||||
"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": {
|
||||
"unknown": "未知",
|
||||
@@ -1591,16 +1622,16 @@
|
||||
"loading": "加载中...",
|
||||
"error": "错误",
|
||||
"success": "成功",
|
||||
"confirm": "确认",
|
||||
"cancel": "取消",
|
||||
"confirm": "Confirm",
|
||||
"cancel": "Cancel",
|
||||
"close": "关闭",
|
||||
"save": "保存",
|
||||
"delete": "删除",
|
||||
"edit": "编辑",
|
||||
"add": "添加",
|
||||
"remove": "移除",
|
||||
"search": "搜索",
|
||||
"noResults": "无结果",
|
||||
"search": "Search...",
|
||||
"noResults": "No notes found",
|
||||
"required": "必填",
|
||||
"optional": "可选"
|
||||
},
|
||||
@@ -1982,7 +2013,9 @@
|
||||
"searching": "搜索中...",
|
||||
"noNotesFoundForContext": "未找到与此问题相关的笔记。请用你的常识回答。",
|
||||
"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": {
|
||||
"title": "实验室",
|
||||
@@ -2550,5 +2583,13 @@
|
||||
"link2Href": "#"
|
||||
}
|
||||
}
|
||||
},
|
||||
"noteHistory": {
|
||||
"title": "Title",
|
||||
"content": "Content",
|
||||
"untitled": "Untitled",
|
||||
"emptyState": "No versions available",
|
||||
"selectVersion": "Select a version to preview its content",
|
||||
"currentVersion": "current"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user