Add Italian to i18n

This commit is contained in:
Chris Veleris 2025-07-13 12:16:27 +03:00 committed by antanst
parent 056ff6e882
commit 6cd2b1ed4d
11 changed files with 909 additions and 35 deletions

View file

@ -25,6 +25,7 @@ import {
import TelegramIcon from '../Icons/TelegramIcon';
import { useToast } from '../Shared/ToastContext';
import { dispatchTelegramStatusChange } from '../../contexts/TelegramStatusContext';
import LanguageDropdown from '../Shared/LanguageDropdown';
interface ProfileSettingsProps {
currentUser: { id: number; email: string };
@ -845,31 +846,12 @@ const ProfileSettings: React.FC<ProfileSettingsProps> = ({
<label className="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2">
{t('profile.language')}
</label>
<select
name="language"
value={formData.language}
onChange={handleChange}
className="block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
>
<option value="en">
{t('profile.english')}
</option>
<option value="es">
{t('profile.spanish')}
</option>
<option value="el">
{t('profile.greek')}
</option>
<option value="jp">
{t('profile.japanese')}
</option>
<option value="ua">
{t('profile.ukrainian')}
</option>
<option value="de">
{t('profile.deutsch')}
</option>
</select>
<LanguageDropdown
value={formData.language || 'en'}
onChange={(languageCode) => {
setFormData(prev => ({ ...prev, language: languageCode }));
}}
/>
</div>
<div>

View file

@ -0,0 +1,108 @@
import React, { useState, useRef, useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { ChevronDownIcon } from '@heroicons/react/24/outline';
interface LanguageOption {
code: string;
name: string;
flag: string;
}
interface LanguageDropdownProps {
value: string;
onChange: (languageCode: string) => void;
className?: string;
}
const LanguageDropdown: React.FC<LanguageDropdownProps> = ({
value,
onChange,
className = '',
}) => {
const { t } = useTranslation();
const [isOpen, setIsOpen] = useState(false);
const dropdownRef = useRef<HTMLDivElement>(null);
const languages: LanguageOption[] = [
{ code: 'de', name: t('profile.deutsch'), flag: '🇩🇪' },
{ code: 'en', name: t('profile.english'), flag: '🇺🇸' },
{ code: 'el', name: t('profile.greek'), flag: '🇬🇷' },
{ code: 'it', name: t('profile.italian'), flag: '🇮🇹' },
{ code: 'jp', name: t('profile.japanese'), flag: '🇯🇵' },
{ code: 'es', name: t('profile.spanish'), flag: '🇪🇸' },
{ code: 'ua', name: t('profile.ukrainian'), flag: '🇺🇦' },
].sort((a, b) => a.name.localeCompare(b.name));
const selectedLanguage = languages.find(lang => lang.code === value) || languages[0];
useEffect(() => {
const handleClickOutside = (event: MouseEvent) => {
if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {
setIsOpen(false);
}
};
document.addEventListener('mousedown', handleClickOutside);
return () => document.removeEventListener('mousedown', handleClickOutside);
}, []);
const handleSelect = (languageCode: string) => {
onChange(languageCode);
setIsOpen(false);
};
return (
<div className={`relative ${className}`} ref={dropdownRef}>
<button
type="button"
onClick={() => setIsOpen(!isOpen)}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
setIsOpen(!isOpen);
}
}}
aria-expanded={isOpen}
aria-haspopup="listbox"
className="block w-full border border-gray-300 dark:border-gray-600 rounded-md shadow-sm px-3 py-2 bg-white dark:bg-gray-700 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-blue-500 focus:border-blue-500 text-left flex items-center justify-between"
>
<div className="flex items-center space-x-2">
<span className="text-lg">{selectedLanguage.flag}</span>
<span>{selectedLanguage.name}</span>
</div>
<ChevronDownIcon
className={`h-4 w-4 text-gray-500 transition-transform duration-200 ${
isOpen ? 'rotate-180' : ''
}`}
/>
</button>
{isOpen && (
<div
className="absolute z-50 mt-1 w-full bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md shadow-lg max-h-60 overflow-auto"
role="listbox"
>
{languages.map((language) => (
<button
key={language.code}
type="button"
onClick={() => handleSelect(language.code)}
role="option"
aria-selected={value === language.code}
className={`w-full px-3 py-2 text-left flex items-center space-x-2 hover:bg-gray-100 dark:hover:bg-gray-600 transition-colors duration-150 ${
value === language.code
? 'bg-blue-50 dark:bg-blue-900/20 text-blue-600 dark:text-blue-400'
: 'text-gray-900 dark:text-gray-100'
}`}
>
<span className="text-lg">{language.flag}</span>
<span>{language.name}</span>
</button>
))}
</div>
)}
</div>
);
};
export default LanguageDropdown;

View file

@ -42,7 +42,7 @@ i18nInstance
fallbackLng: 'en',
debug: false,
load: 'languageOnly',
supportedLngs: ['en', 'es', 'el', 'jp', 'ua', 'de'],
supportedLngs: ['en', 'es', 'el', 'jp', 'ua', 'de', 'it'],
nonExplicitSupportedLngs: true,
resources: devResources,
detection: {

View file

@ -187,7 +187,8 @@
"browseImage": "Bild durchsuchen",
"noNotes": "Keine Notizen für dieses Projekt.",
"deleteProject": "Projekt löschen",
"showCompleted": "Abgeschlossene anzeigen"
"showCompleted": "Abgeschlossene anzeigen",
"createSuccess": "Projekt erfolgreich erstellt!"
},
"profile": {
"title": "Profil-Einstellungen",
@ -200,6 +201,7 @@
"ukrainian": "Ukrainisch",
"deutsch": "Deutsch",
"japanese": "Japanisch",
"italian": "Italienisch",
"pollingNote": "Das Polling prüft regelmäßig neue Nachrichten von Telegram und fügt sie zu Ihrem Posteingang hinzu.",
"pollingDescription": "Das Polling prüft regelmäßig neue Nachrichten von Telegram und fügt sie zu Ihrem Posteingang hinzu.",
"startPolling": "Polling starten",
@ -333,6 +335,15 @@
"friday": "Fr",
"saturday": "Sa",
"sunday": "So"
},
"dateFormats": {
"long": "EEEE, d. MMMM yyyy",
"short": "d. MMM yyyy",
"monthYear": "MMMM yyyy",
"dayMonth": "d. MMMM",
"time": "HH:mm",
"dateTime": "d. MMM yyyy, HH:mm",
"todayHeader": "dddd, d. MMMM yyyy"
}
}

View file

@ -96,6 +96,7 @@
"japanese": "Ιαπωνικά",
"ukrainian": "Ουκρανικά",
"deutsch": "Γερμανικά",
"italian": "Ιταλικά",
"languagePreference": "Προτίμηση Γλώσσας",
"personalInfo": "Προσωπικές Πληροφορίες",
"notifications": "Ειδοποιήσεις",
@ -604,7 +605,8 @@
"browseImage": "Περιήγηση Εικόνας",
"noNotes": "Δεν υπάρχουν σημειώσεις για αυτό το έργο.",
"deleteProject": "Διαγραφή Έργου",
"showCompleted": "Εμφάνιση Ολοκληρωμένων"
"showCompleted": "Εμφάνιση Ολοκληρωμένων",
"createSuccess": "Το έργο δημιουργήθηκε με επιτυχία!"
},
"pomodoro": {
"play": "Αναπαραγωγή",
@ -664,5 +666,14 @@
"friday": "Παρ",
"saturday": "Σαβ",
"sunday": "Κυρ"
},
"dateFormats": {
"long": "EEEE, d MMMM yyyy",
"short": "d MMM yyyy",
"monthYear": "MMMM yyyy",
"dayMonth": "d MMMM",
"time": "HH:mm",
"dateTime": "d MMM yyyy, HH:mm",
"todayHeader": "dddd, d MMMM yyyy"
}
}

View file

@ -141,6 +141,7 @@
"japanese": "Japanese",
"ukrainian": "Ukrainian",
"deutsch": "German",
"italian": "Italian",
"title": "Profile Settings",
"appearance": "Appearance",
"lightMode": "Light Mode",
@ -434,7 +435,8 @@
"uploadImageHint": "Upload an image for your project (max 5MB)",
"browseImage": "Browse Image",
"noNotes": "No notes for this project.",
"deleteProject": "Delete Project"
"deleteProject": "Delete Project",
"createSuccess": "Project created successfully!"
},
"errors": {
"required": "This field is required",
@ -496,7 +498,8 @@
"monthYear": "MMMM yyyy",
"dayMonth": "MMMM d",
"time": "h:mm a",
"dateTime": "MMM d, yyyy h:mm a"
"dateTime": "MMM d, yyyy h:mm a",
"todayHeader": "dddd, MMMM do, yyyy"
},
"dateIndicators": {
"today": "TODAY",

View file

@ -98,6 +98,7 @@
"ukrainian": "Ucraniano",
"deutsch": "Alemán",
"japanese": "Japonés",
"italian": "Italiano",
"languagePreference": "Preferencia de Idioma",
"personalInfo": "Información Personal",
"notifications": "Notificaciones",
@ -347,7 +348,8 @@
"monthYear": "MMMM 'de' yyyy",
"dayMonth": "d 'de' MMMM",
"time": "H:mm",
"dateTime": "d MMM yyyy, H:mm"
"dateTime": "d MMM yyyy, H:mm",
"todayHeader": "dddd, d 'de' MMMM 'de' yyyy"
},
"taskViews": {
"project": {
@ -530,7 +532,8 @@
"browseImage": "Examinar Imagen",
"noNotes": "No hay notas para este proyecto.",
"deleteProject": "Eliminar Proyecto",
"showCompleted": "Mostrar Completados"
"showCompleted": "Mostrar Completados",
"createSuccess": "¡Proyecto creado exitosamente!"
},
"pomodoro": {
"play": "Reproducir",

View file

@ -0,0 +1,19 @@
{
"quotes": [
"Credi di poterlo fare e sei già a metà strada.",
"L'unico modo per fare un gran lavoro è amare quello che fai.",
"Il successo non è definitivo, il fallimento non è fatale: è il coraggio di continuare che conta.",
"Sembra sempre impossibile finché non viene fatto.",
"Il tuo tempo è limitato, non sprecarlo vivendo la vita di qualcun altro.",
"Il futuro appartiene a coloro che credono nella bellezza dei propri sogni.",
"Non guardare l'orologio; fai quello che fa lui. Continua ad andare.",
"La qualità non è un atto, è un'abitudine.",
"La vita è quello che ti succede mentre sei impegnato a fare altri progetti.",
"Il modo migliore per predire il futuro è crearlo.",
"Non aspettare il momento perfetto, prendi il momento e rendilo perfetto.",
"Il successo è camminare da fallimento in fallimento senza perdere il tuo entusiasmo.",
"Ogni grande sogno inizia con un sognatore.",
"Non puoi tornare indietro e cambiare l'inizio, ma puoi iniziare dove sei e cambiare il finale.",
"La motivazione ti fa iniziare. L'abitudine ti fa andare avanti."
]
}

View file

@ -0,0 +1,723 @@
{
"common": {
"save": "Salva",
"cancel": "Annulla",
"delete": "Elimina",
"edit": "Modifica",
"create": "Crea",
"submit": "Invia",
"close": "Chiudi",
"back": "Indietro",
"next": "Avanti",
"loading": "Caricamento...",
"appLoading": "Caricamento applicazione... Attendere prego.",
"completed": "Completato",
"error": "Errore",
"success": "Successo",
"area": "Area",
"status": "Stato",
"saving": "Salvataggio...",
"settings": "Impostazioni",
"none": "Nessuno"
},
"sidebar": {
"dashboard": "Dashboard",
"projects": "Progetti",
"tasks": "Attività",
"calendar": "Calendario",
"notes": "Note",
"settings": "Impostazioni",
"areas": "Aree",
"tags": "Tag",
"addAreaAriaLabel": "Aggiungi Area",
"addAreaTitle": "Aggiungi Area",
"addTagAriaLabel": "Aggiungi Tag",
"addTagTitle": "Aggiungi Tag",
"today": "Oggi",
"upcoming": "Prossimi",
"nextActions": "Prossime Azioni",
"inbox": "Inbox",
"completed": "Completati",
"allTasks": "Tutte le Attività"
},
"navigation": {
"home": "Home",
"dashboard": "Dashboard",
"profile": "Profilo",
"profileSettings": "Impostazioni Profilo",
"settings": "Impostazioni",
"about": "Informazioni",
"logout": "Disconnetti"
},
"settings": {
"todayPageSettings": "Impostazioni Pagina Oggi",
"showDailyQuote": "Mostra Citazione Giornaliera",
"showMetrics": "Mostra Metriche",
"showProductivity": "Mostra Insights di Produttività",
"showIntelligence": "Mostra Suggerimenti Intelligenti",
"showNextTaskSuggestion": "Suggerimento Prossima Attività",
"showSuggestions": "Mostra Suggeriti",
"showDueToday": "Mostra Attività in Scadenza Oggi",
"showCompleted": "Mostra Attività Completate"
},
"dashboard": {
"overview": "Panoramica",
"sameAsYesterday": "Come ieri",
"betterThanYesterday": "{{percentage}}% in più di ieri",
"worseThanYesterday": "{{percentage}}% in meno di ieri",
"sameAsAverage": "Come la media",
"betterThanAverage": "{{percentage}}% sopra la media",
"worseThanAverage": "{{percentage}}% sotto la media",
"metrics": "Metriche",
"showMetrics": "Mostra Metriche",
"hideMetrics": "Nascondi Metriche",
"insights": "Insights",
"showInsights": "Mostra Insights",
"hideInsights": "Nascondi Insights",
"intelligence": "Intelligenza",
"showIntelligence": "Mostra Suggerimenti Intelligenti",
"hideIntelligence": "Nascondi Suggerimenti Intelligenti",
"completed": "Completato",
"showCompleted": "Mostra Attività Completate",
"hideCompleted": "Nascondi Attività Completate"
},
"tasks": {
"title": "Attività",
"today": "Oggi",
"backlog": "Backlog",
"inProgress": "In Corso",
"dueToday": "In Scadenza Oggi",
"stale": "Obsolete",
"suggested": "Suggerite",
"completedToday": "Completate Oggi",
"weeklyCompletions": "Progresso Settimanale",
"taskCompleted": "attività completata",
"tasksCompleted": "attività completate",
"noTasksAvailable": "Nessuna attività disponibile.",
"searchPlaceholder": "Cerca attività...",
"addNewTask": "Aggiungi Nuova Attività",
"metrics": "Metriche",
"myPlanToday": "Il Mio Piano per Oggi",
"noPlanToday": "Nessuna attività pianificata per oggi",
"addToPlanHint": "Clicca sull'icona 🗓 'aggiungi al piano di oggi' a destra di qualsiasi attività per aggiungerla qui",
"blankSlateHint": "Inizia creando una nuova attività o cambiando i tuoi filtri.",
"addToToday": "Aggiungi al piano di oggi",
"removeFromToday": "Rimuovi dal piano di oggi",
"setInProgress": "Imposta in corso",
"setNotStarted": "Imposta come non iniziata"
},
"timeline": {
"activityTimeline": "Timeline delle Attività",
"showActivityTimeline": "Mostra Timeline delle Attività",
"hideActivityTimeline": "Nascondi Timeline delle Attività",
"hideTimeline": "Nascondi Timeline",
"failedToLoad": "Impossibile caricare la timeline",
"events": {
"taskCreated": "Attività creata",
"statusChanged": "Stato cambiato",
"priorityChanged": "Priorità cambiata",
"dueDateChanged": "Data di scadenza cambiata",
"nameUpdated": "Nome aggiornato",
"descriptionUpdated": "Descrizione aggiornata",
"noteUpdated": "Nota aggiornata",
"projectChanged": "Progetto cambiato",
"tagsUpdated": "Tag aggiornati",
"taskArchived": "Attività archiviata",
"todayFlagChanged": "Flag Oggi Cambiato",
"status": "Stato",
"priority": "Priorità",
"dueDate": "Data di scadenza",
"none": "Nessuno"
}
},
"profile": {
"settings": "Impostazioni Profilo",
"language": "Lingua",
"theme": "Tema",
"notifications": "Notifiche",
"english": "Inglese",
"spanish": "Spagnolo",
"greek": "Greco",
"japanese": "Giapponese",
"ukrainian": "Ucraino",
"deutsch": "Tedesco",
"italian": "Italiano",
"title": "Impostazioni Profilo",
"appearance": "Aspetto",
"lightMode": "Modalità Chiara",
"darkMode": "Modalità Scura",
"light": "Chiaro",
"dark": "Scuro",
"timezone": "Fuso Orario",
"saveChanges": "Salva Modifiche",
"successMessage": "Profilo aggiornato con successo!",
"languageChangedNote": "Le modifiche alla lingua vengono applicate immediatamente",
"languageChanging": "Cambio lingua...",
"languagePreference": "Preferenza Lingua",
"personalInfo": "Informazioni Personali",
"errorMessage": "Impossibile aggiornare il profilo",
"telegramIntegration": "Integrazione Telegram",
"telegramDescription": "Collega il tuo account tududi a un bot Telegram per aggiungere elementi alla tua inbox tramite messaggi Telegram.",
"telegramBotToken": "Token Bot Telegram",
"telegramTokenDescription": "Crea un bot con @BotFather su Telegram e incolla il token qui.",
"telegramConnected": "Il tuo account Telegram è connesso! Invia messaggi al tuo bot per aggiungere elementi alla tua inbox tududi.",
"setupTelegram": "Configura Telegram",
"setupTelegramLower": "configura telegram",
"settingUp": "Configurazione...",
"telegramSetupSuccess": "Bot Telegram \"{{botName}}\" configurato con successo!",
"telegramSetupFailed": "Impossibile configurare il bot Telegram.",
"invalidTelegramToken": "Formato token bot Telegram non valido.",
"telegramInstructions": "Vai su https://t.me/{{botUsername}} e inizia a chattare con il tuo bot per collegarlo al tuo account tududi.",
"botConfigured": "Bot configurato con successo!",
"botUsername": "Nome utente Bot:",
"pollingStatus": "Stato Polling:",
"pollingActive": "Attivo - Riceve messaggi",
"pollingInactive": "Inattivo - Non riceve messaggi",
"pollingNote": "Il polling controlla periodicamente i nuovi messaggi da Telegram e li aggiunge alla tua inbox.",
"pollingDescription": "Il polling controlla periodicamente i nuovi messaggi da Telegram e li aggiunge alla tua inbox.",
"startPolling": "Avvia Polling",
"stopPolling": "Ferma Polling",
"startPollingLower": "avvia polling",
"stopPollingLower": "ferma polling",
"pollingStarted": "Polling Telegram avviato",
"pollingStopped": "Polling Telegram fermato",
"pollingError": "Errore nella gestione del polling Telegram",
"startPollingFailed": "Impossibile avviare il polling",
"stopPollingFailed": "Impossibile fermare il polling",
"openTelegram": "Apri in Telegram",
"openInTelegram": "apri in telegram",
"testTelegramMessage": "Testa Telegram",
"testMessageSent": "Messaggio di test inviato con successo!",
"testMessageFailed": "Impossibile inviare il messaggio di test.",
"testMessageError": "Errore nell'invio del messaggio di test.",
"taskSummaryNotifications": "Notifiche Riassunto Attività",
"taskSummaryDescription": "Ricevi riassunti regolari delle tue attività tramite Telegram. Questa funzione richiede che l'integrazione Telegram sia configurata.",
"enableTaskSummaries": "Abilita Riassunti Attività",
"enableTaskSummary": "Abilita Riassunti Attività",
"summaryFrequency": "Frequenza riassunto",
"summaryFrequencyDescription": "Scegli quanto spesso vuoi ricevere i riassunti delle attività",
"sendTestSummary": "Invia riassunto di test",
"frequency": {
"1h": "1 ora",
"2h": "2 ore",
"4h": "4 ore",
"8h": "8 ore",
"12h": "12 ore",
"daily": "1 giorno",
"weekly": "1 settimana"
},
"frequencyHelp": "Scegli quanto spesso vuoi ricevere i riassunti delle attività",
"taskIntelligence": "Intelligenza Attività",
"taskIntelligenceDescription": "Ricevi suggerimenti utili per rendere i nomi delle tue attività più descrittivi e attuabili.",
"enableTaskIntelligence": "Abilita Assistente Intelligenza Attività",
"autoSuggestNextActions": "Suggerisci Automaticamente Prossime Azioni",
"autoSuggestNextActionsDescription": "Quando crei un progetto, suggerisci automaticamente la prossima azione fisica da intraprendere.",
"enableAutoSuggestNextActions": "Abilita Suggerimenti Prossima Azione",
"productivityFeatures": "Funzioni di Produttività",
"pomodoroDescription": "Abilita il timer Pomodoro nella barra di navigazione per sessioni di lavoro focalizzato.",
"enablePomodoro": "Abilita Timer Pomodoro",
"productivityAssistant": "Assistente di Produttività",
"productivityAssistantDescription": "Mostra insights di produttività che aiutano a identificare progetti bloccati, attività vaghe e miglioramenti del flusso di lavoro nella tua pagina Oggi.",
"enableProductivityAssistant": "Abilita Insights di Produttività",
"nextTaskSuggestion": "Suggerimento Prossima Attività",
"nextTaskSuggestionDescription": "Suggerisci automaticamente la prossima migliore attività su cui lavorare quando non hai nulla in corso, dando priorità alle attività in scadenza oggi, poi a quelle suggerite dalla tua pagina Oggi.",
"enableNextTaskSuggestion": "Abilita Suggerimenti Prossima Attività",
"nextActionPrompt": "Qual è la prossima azione fisica per questo progetto?",
"nextActionPlaceholder": "es. Chiamare il cliente per programmare un incontro, Ricercare concorrenti online, Creare cartella progetto...",
"addNextAction": "Aggiungi Prossima Azione",
"skipNextAction": "Salta per ora",
"nextActionHint": "Pensa al passo più piccolo e concreto che puoi fare ora per far avanzare questo progetto.",
"tabs": {
"general": "Generale",
"security": "Sicurezza",
"productivity": "Produttività",
"telegram": "Telegram",
"ai": "Funzioni AI"
},
"security": "Impostazioni Sicurezza",
"changePassword": "Cambia Password",
"currentPassword": "Password Attuale",
"newPassword": "Nuova Password",
"confirmPassword": "Conferma Nuova Password",
"enterCurrentPassword": "Inserisci la tua password attuale",
"enterNewPassword": "Inserisci la tua nuova password",
"confirmNewPassword": "Conferma la tua nuova password",
"currentPasswordRequired": "Password attuale richiesta",
"newPasswordRequired": "Nuova password richiesta",
"passwordTooShort": "La password deve essere di almeno 6 caratteri",
"passwordMismatch": "Le password non corrispondono",
"passwordChangeError": "Impossibile cambiare la password",
"passwordChangeSuccess": "Password cambiata con successo!",
"changingPassword": "Cambio password...",
"accountSettings": "Account e Preferenze",
"aiProductivityFeatures": "Funzioni AI e Produttività",
"botSetup": "Configurazione Bot",
"passwordChangeNote": "Le modifiche alla password verranno salvate quando clicchi \"Salva Modifiche\" in fondo al modulo.",
"passwordChangeOptional": "Lascia vuoti i campi password per aggiornare altre impostazioni senza cambiare la password."
},
"productivity": {
"stalledProjects": "Progetti Bloccati",
"stalledProjectsDesc": "Questi progetti non hanno attività o azioni",
"needsNextAction": "Progetti Necessitano Prossima Azione",
"needsNextActionDesc": "Questi progetti hanno attività completate ma nessuna prossima azione",
"tasksAreProjects": "Attività che Sembrano Progetti",
"tasksAreProjectsDesc": "Queste attività potrebbero dover essere suddivise",
"vagueTasks": "Attività Senza Azione Chiara",
"vagueTasksDesc": "Queste attività necessitano di verbi d'azione più chiari",
"staleTasks": "Attività Obsolete",
"staleTasksDesc": "Attività non aggiornate da {{days}} giorni",
"stuckProjects": "Progetti Bloccati",
"stuckProjectsDesc": "Progetti non aggiornati di recente",
"issuesFound": "Trovati {{count}} problema(i) di produttività che necessitano attenzione",
"reviewItems": "Clicca per rivedere e migliorare il tuo flusso di lavoro",
"suggestion": "Clicca su qualsiasi elemento sopra per aprirlo e apportare miglioramenti."
},
"nextTask": {
"suggestion": "Dato che non c'è nulla in corso, che ne dici di iniziare con",
"suggestionTodayPlan": "Dato che non c'è nulla in corso, che ne dici di iniziare con questa attività dal tuo piano di oggi",
"suggestionDueToday": "Dato che non c'è nulla in corso, che ne dici di iniziare con questa attività in scadenza oggi",
"suggestionSuggested": "Dato che non c'è nulla in corso, che ne dici di iniziare con questa attività suggerita",
"letsDoIt": "Sì, facciamolo!",
"starting": "Avvio...",
"startedSuccessfully": "Attività avviata con successo!",
"giveMeSomethingElse": "Dammi qualcos'altro"
},
"modals": {
"confirmDelete": "Sei sicuro di voler eliminare?",
"taskCreation": "Crea Nuova Attività",
"taskEdit": "Modifica Attività",
"deleteTask": {
"title": "Elimina Attività",
"confirmation": "Sei sicuro di voler eliminare questa attività? Questa azione non può essere annullata."
},
"noteCreation": "Crea Nuova Nota",
"noteEdit": "Modifica Nota",
"updateNote": "Aggiorna Nota",
"createNote": "Crea Nota",
"submitting": "Invio...",
"areaCreation": "Crea Nuova Area",
"areaEdit": "Modifica Area",
"updateArea": "Aggiorna Area",
"createArea": "Crea Area",
"updateTag": "Aggiorna Tag",
"createTag": "Crea Tag",
"createProject": "Crea Progetto",
"updateProject": "Aggiorna Progetto",
"deleteTag": {
"title": "Elimina Tag",
"message": "Sei sicuro di voler eliminare il tag \"{{tagName}}\"?"
},
"deleteArea": {
"title": "Elimina Area",
"message": "Sei sicuro di voler eliminare l'area \"{{areaName}}\"?"
},
"deleteNote": {
"title": "Elimina Nota",
"message": "Sei sicuro di voler eliminare la nota \"{{noteTitle}}\"?"
},
"deleteProject": {
"title": "Elimina Progetto",
"message": "Sei sicuro di voler eliminare il progetto \"{{projectName}}\"?"
}
},
"forms": {
"title": "Titolo",
"description": "Descrizione",
"dueDate": "Data di Scadenza",
"priority": "Priorità",
"status": "Stato",
"assignedTo": "Assegnato a",
"category": "Categoria",
"tags": "Tag",
"required": "Questo campo è obbligatorio",
"optional": "Opzionale",
"task": {
"namePlaceholder": "Aggiungi Nome Attività",
"statusAndOptions": "Stato e Opzioni",
"recurrence": "Ricorrenza",
"labels": {
"tags": "Tag",
"project": "Progetto",
"status": "Stato",
"priority": "Priorità",
"dueDate": "Data di Scadenza",
"note": "Nota",
"recurrenceType": "Ripeti",
"recurrenceInterval": "Ogni",
"weekday": "Nel giorno",
"monthDay": "Giorno del mese",
"weekOfMonth": "Settimana del mese",
"recurrenceEndDate": "Data di fine (opzionale)",
"completionBased": "Ripeti dopo il completamento"
},
"projectSearchPlaceholder": "Cerca o crea un progetto...",
"noMatchingProjects": "Nessun progetto corrispondente",
"creatingProject": "Creazione...",
"createProject": "+ Crea",
"recurrenceSettings": "Impostazioni Ricorrenza",
"completionBasedHelp": "Se selezionato, la prossima attività verrà creata basandosi sulla data di completamento invece che sulla data di scadenza",
"dueDatePlaceholder": "Seleziona data di scadenza",
"endDatePlaceholder": "Seleziona data di fine",
"nameHelper": {
"title": "Rendila più descrittiva!",
"suggestion": "Prova ad aggiungere più dettagli come \"Chiamare il dentista per programmare l'appuntamento per la pulizia\" invece di solo \"Chiamare il dentista\"",
"short": "Rendila più descrittiva!",
"noVerb": "Aggiungi un verbo d'azione!",
"vague": "Sii più specifico!"
},
"suggestions": {
"short": "Prova a essere più specifico su cosa deve essere fatto",
"noVerb": "Quale azione specifica devi intraprendere? Prova a iniziare con un verbo.",
"vague": "Prova a iniziare con un verbo d'azione come \"Chiamare\", \"Scrivere\", \"Programmare\", o \"Ricercare\""
}
},
"noteTitle": "Titolo Nota",
"noteContent": "Contenuto Nota",
"noteTitlePlaceholder": "Inserisci titolo nota",
"noteContentPlaceholder": "Inserisci contenuto nota",
"areaName": "Nome Area",
"areaDescription": "Descrizione Area",
"areaNamePlaceholder": "Inserisci nome area",
"areaDescriptionPlaceholder": "Inserisci descrizione area",
"tagName": "Nome Tag",
"tagNamePlaceholder": "Inserisci nome tag",
"tagInputPlaceholder": "Digita per aggiungere un tag",
"createTagOption": "+ Crea \"{{tagName}}\"",
"removeTagAriaLabel": "Rimuovi tag {{tagName}}"
},
"auth": {
"login": "Accedi",
"register": "Registrati",
"forgotPassword": "Password Dimenticata",
"email": "Email",
"password": "Password",
"confirmPassword": "Conferma Password",
"username": "Nome Utente",
"signup": "Iscriviti",
"signin": "Accedi",
"signout": "Disconnetti",
"resetPassword": "Reimposta Password",
"newPassword": "Nuova Password",
"rememberMe": "Ricordami",
"loginSuccess": "Accesso Riuscito",
"loginFailed": "Accesso Fallito",
"logoutSuccess": "Disconnessione Riuscita"
},
"dropdown": {
"createNew": "Crea Nuovo",
"task": "Attività",
"project": "Progetto",
"note": "Nota",
"area": "Area"
},
"sort": {
"due_date": "Data di Scadenza",
"name": "Nome",
"priority": "Priorità",
"status": "Stato",
"created_at": "Data di Creazione"
},
"priority": {
"low": "Bassa",
"medium": "Media",
"high": "Alta"
},
"status": {
"notStarted": "Non Iniziata",
"inProgress": "In Corso",
"done": "Completata",
"archived": "Archiviata",
"unknown": "Sconosciuto"
},
"project": {
"name": "Nome Progetto",
"projectImage": "Immagine Progetto",
"uploadImageHint": "Carica un'immagine per il tuo progetto (max 5MB)",
"browseImage": "Sfoglia Immagine",
"noNotes": "Nessuna nota per questo progetto.",
"deleteProject": "Elimina Progetto",
"createSuccess": "Progetto creato con successo!"
},
"errors": {
"required": "Questo campo è obbligatorio",
"invalidEmail": "Indirizzo email non valido",
"projectCreationFailed": "Creazione progetto fallita.",
"passwordMismatch": "Le password non corrispondono",
"minLength": "La lunghezza minima è {{length}} caratteri",
"maxLength": "La lunghezza massima è {{length}} caratteri",
"serverError": "Errore del server, riprova più tardi",
"networkError": "Errore di rete, controlla la tua connessione",
"somethingWentWrong": "Qualcosa è andato storto, riprova",
"taskFetch": "Impossibile recuperare le attività.",
"projectFetch": "Impossibile recuperare i progetti.",
"taskCreate": "Impossibile creare l'attività.",
"taskUpdate": "Impossibile aggiornare l'attività.",
"taskDelete": "Impossibile eliminare l'attività.",
"noteTitleRequired": "Il titolo della nota è obbligatorio.",
"failedToLoadTags": "Impossibile caricare i tag disponibili.",
"failedToSaveNote": "Impossibile salvare la nota.",
"areaNameRequired": "Il nome dell'area è obbligatorio.",
"failedToSaveArea": "Impossibile salvare l'area.",
"tagNameRequired": "Il nome del tag è obbligatorio.",
"failedToSaveTag": "Impossibile salvare il tag.",
"projectNameRequired": "Il nome del progetto è obbligatorio.",
"projectSaveFailed": "Impossibile salvare il progetto."
},
"inbox": {
"title": "Inbox",
"empty": "La tua inbox è vuota",
"emptyDescription": "Cattura pensieri e idee rapidamente usando l'icona ⚡ nella barra di navigazione superiore o il pulsante + nella barra laterale",
"description": "L'Inbox è dove si trovano tutte le attività non categorizzate. Le attività che non sono state assegnate a un progetto o non hanno una data di scadenza appariranno qui. Questa è la tua area di 'scarico mentale' dove puoi annotare rapidamente le attività e organizzarle in seguito.",
"captureThought": "Cattura il tuo pensiero...",
"saveToInbox": "Salva nell'Inbox",
"itemAdded": "Elemento aggiunto all'inbox",
"itemProcessed": "Elemento elaborato",
"itemDeleted": "Elemento eliminato",
"itemUpdated": "Elemento aggiornato",
"newTelegramItem": "Nuovo elemento da Telegram: {{content}}",
"newItem": "Nuovo elemento inbox aggiunto: {{content}}",
"multipleNewItems": "{{count}} altri nuovi elementi aggiunti",
"loadError": "Impossibile caricare gli elementi dell'inbox",
"addError": "Impossibile aggiungere l'elemento all'inbox",
"processError": "Impossibile elaborare l'elemento dell'inbox",
"deleteError": "Impossibile eliminare l'elemento dell'inbox",
"updateError": "Impossibile aggiornare l'elemento dell'inbox",
"contentRequired": "Il contenuto non può essere vuoto",
"createTask": "Crea attività",
"createProject": "Crea progetto",
"createNote": "Crea nota",
"convertTo": "Converti in",
"unprocessedItems": "Hai {{count}} elemento(i) nella tua inbox",
"processNow": "Elabora ora",
"deleteConfirmTitle": "Elimina Elemento",
"deleteConfirmMessage": "Sei sicuro di voler eliminare questo elemento dalla tua inbox? Questa azione non può essere annullata."
},
"dateFormats": {
"long": "EEEE, d MMMM yyyy",
"short": "d MMM yyyy",
"monthYear": "MMMM yyyy",
"dayMonth": "d MMMM",
"time": "HH:mm",
"dateTime": "d MMM yyyy HH:mm",
"todayHeader": "dddd, d MMMM yyyy"
},
"dateIndicators": {
"today": "OGGI",
"tomorrow": "DOMANI",
"yesterday": "IERI"
},
"taskViews": {
"project": {
"withName": "Stai attualmente visualizzando tutte le attività associate al progetto \"{{projectName}}\". Puoi organizzare le attività all'interno di questo progetto, impostare la loro priorità e tracciare il loro completamento. Usa questo spazio per concentrarti sulle attività che appartengono specificamente a questo progetto.",
"noName": "Stai visualizzando le attività per un progetto specifico. Usa questo spazio per gestire e tracciare le attività associate a questo progetto."
},
"today": "Queste sono le attività che scadono oggi o che hai programmato per l'attenzione immediata. Usa questa vista per concentrarti su ciò che deve essere completato oggi. Contrassegna le attività come completate, aggiorna il loro stato o regola le loro date di scadenza se necessario.",
"inbox": "L'inbox è dove vivono tutte le attività non categorizzate. Le attività che non sono state assegnate a un progetto o non hanno una data di scadenza appariranno qui. Questa è la tua area di \"scarico mentale\" dove puoi annotare rapidamente le attività e organizzarle in seguito.",
"next": "Questa vista mostra tutte le attività che sono attuabili nel prossimo futuro. Queste attività sono pronte per essere lavorate e non hanno scadenze a lungo termine. È un buon posto su cui concentrarsi quando stai cercando di fare progressi rapidi sulle attività.",
"upcoming": "Questa vista evidenzia le attività che sono programmate per la prossima settimana. Ti aiuta a prepararti e stare avanti alle scadenze dandoti una panoramica del lavoro che devi affrontare nel prossimo futuro. Le attività con date di scadenza entro i prossimi 7 giorni appariranno qui.",
"someday": "La vista \"Un giorno\" è per le attività che non sono urgenti e non hanno una data di scadenza specifica. Queste sono attività che potresti voler fare a un certo punto, ma non sono una priorità al momento. Usa questa sezione per tenere traccia di idee o obiettivi a lungo termine.",
"completed": "Qui puoi vedere tutte le attività che hai completato. È un ottimo modo per rivedere i tuoi risultati e riflettere sul lavoro che hai finito. Puoi anche trovare attività che potrebbero aver bisogno di essere ripristinate o referenziate in futuro.",
"allTasks": "Stai visualizzando tutte le attività. Questo include attività da diversi progetti, attività senza date di scadenza specifiche e attività con livelli di priorità diversi. Usa questa vista per una panoramica generale di tutto nella tua lista delle cose da fare."
},
"success": {
"noteUpdated": "Nota aggiornata con successo!",
"noteCreated": "Nota creata con successo!",
"areaUpdated": "Area aggiornata con successo!",
"areaCreated": "Area creata con successo!",
"tagUpdated": "Tag aggiornato con successo!",
"tagCreated": "Tag creato con successo!",
"projectCreated": "Progetto creato con successo!",
"projectDeleted": "Progetto eliminato con successo!",
"nextActionAdded": "Prossima azione aggiunta con successo!",
"taskCreated": "Attività creata con successo!",
"taskUpdated": "Attività aggiornata con successo!",
"taskDeleted": "Attività eliminata con successo!",
"noteDeleted": "Nota eliminata con successo!"
},
"note": {
"title": "Titolo",
"content": "Contenuto",
"titlePlaceholder": "Inserisci titolo nota",
"contentPlaceholder": "Inserisci contenuto nota",
"project": "Progetto Correlato (Opzionale)",
"createSuccess": "Nota creata con successo",
"createError": "Errore nella creazione della nota"
},
"task": {
"labels": {
"tags": "Tag",
"project": "Progetto",
"status": "Stato",
"priority": "Priorità",
"dueDate": "Data di Scadenza",
"note": "Nota"
},
"create": "Crea",
"addTaskName": "Aggiungi nome attività",
"createSuccess": "Attività creata con successo",
"createError": "Impossibile creare l'attività",
"saveAsTask": "Salva come Attività",
"updateSuccess": "Attività aggiornata con successo",
"updateError": "Impossibile aggiornare l'attività",
"deleteSuccess": "Attività eliminata con successo",
"deleteError": "Impossibile eliminare l'attività",
"startedSuccessfully": "Attività avviata con successo!",
"created": "Attività",
"createdSuccessfully": "creata con successo!",
"updated": "Attività",
"updatedSuccessfully": "aggiornata con successo!",
"deleted": "Attività",
"deletedSuccessfully": "eliminata con successo!",
"suggestions": {
"short": "Prova a essere più specifico su cosa deve essere fatto"
},
"nameHelper": {
"title": "Rendila più descrittiva!",
"suggestion": "Prova ad aggiungere più dettagli come \"Chiamare il dentista per programmare l'appuntamento per la pulizia\" invece di solo \"Chiamare il dentista\""
}
},
"projects": {
"loading": "Caricamento progetti...",
"error": "Errore nel caricamento dei progetti",
"searchPlaceholder": "Cerca progetti...",
"title": "Progetti",
"noProjectsFound": "Nessun progetto trovato",
"cardViewAriaLabel": "Vista a Carte",
"listViewAriaLabel": "Vista a Lista",
"active": "Attivo",
"inactive": "Inattivo",
"metrics": "Progetti",
"filters": {
"active": "Attivo",
"inactive": "Inattivo",
"all": "Tutti",
"allAreas": "Tutte le Aree"
}
},
"projectItem": {
"edit": "Modifica",
"delete": "Elimina",
"completion": "Completamento",
"completionPercentage": "{{percentage}}% completato",
"toggleDropdownMenu": "Attiva/disattiva menu a discesa",
"projectInitials": "Iniziali progetto"
},
"areas": {
"title": "Aree",
"noAreasFound": "Nessuna area trovata",
"editAreaAriaLabel": "Modifica area {{name}}",
"editAreaTitle": "Modifica area {{name}}",
"deleteAreaAriaLabel": "Elimina area {{name}}",
"deleteAreaTitle": "Elimina area {{name}}",
"addArea": "Aggiungi Area",
"loading": "Caricamento dettagli area...",
"error": "Errore nel caricamento dei dettagli dell'area.",
"notFound": "Area non trovata.",
"details": "Dettagli Area",
"viewProjects": "Visualizza Progetti in {{name}}"
},
"notes": {
"loading": "Caricamento note...",
"error": "Errore nel caricamento delle note",
"searchPlaceholder": "Cerca note...",
"noNotesFound": "Nessuna nota trovata",
"title": "Note",
"deleteNoteAriaLabel": "Elimina nota {{noteTitle}}",
"deleteNoteTitle": "Elimina nota {{noteTitle}}",
"editNoteAriaLabel": "Modifica nota {{noteTitle}}",
"editNoteTitle": "Modifica nota {{noteTitle}}"
},
"tags": {
"loading": "Caricamento tag...",
"searchPlaceholder": "Cerca tag...",
"title": "Tag",
"noTagsFound": "Nessun tag trovato",
"editTagAriaLabel": "Modifica tag {{tagName}}",
"editTagTitle": "Modifica tag {{tagName}}",
"deleteTagAriaLabel": "Elimina tag {{tagName}}",
"deleteTagTitle": "Elimina tag {{tagName}}",
"error": "Errore nel recupero del tag.",
"notFound": "Tag non trovato.",
"details": "Dettagli Tag",
"name": "Nome",
"status": "Stato",
"active": "Attivo",
"inactive": "Inattivo",
"viewTasksWithTag": "Visualizza attività con questo tag",
"typeToAdd": "Digita per aggiungere un tag",
"noItemsWithTag": "Nessun elemento trovato con questo tag"
},
"recurrence": {
"none": "Nessuna",
"daily": "Giornaliera",
"weekly": "Settimanale",
"monthly": "Mensile",
"monthlyWeekday": "Mensile nel giorno della settimana",
"monthlyLastDay": "Mensile nell'ultimo giorno",
"firstWeek": "Prima settimana",
"secondWeek": "Seconda settimana",
"thirdWeek": "Terza settimana",
"fourthWeek": "Quarta settimana",
"lastWeek": "Ultima settimana",
"days": "giorni"
},
"weekdays": {
"sunday": "Domenica",
"monday": "Lunedì",
"tuesday": "Martedì",
"wednesday": "Mercoledì",
"thursday": "Giovedì",
"friday": "Venerdì",
"saturday": "Sabato"
},
"pomodoro": {
"play": "Riproduci",
"pause": "Pausa",
"reset": "Reimposta",
"close": "Chiudi",
"complete": "Pomodoro Completato!",
"completeMessage": "Ottimo lavoro! È ora di una pausa.",
"done": "Fatto"
},
"calendar": {
"month": "Mese",
"week": "Settimana",
"day": "Giorno",
"today": "Oggi",
"addEvent": "Aggiungi Evento",
"weekView": "Vista Settimana",
"dayView": "Vista Giorno",
"loadingTasks": "Caricamento attività...",
"noEvents": "Nessun evento per questo giorno",
"moreEvents": "altro",
"googleIntegration": "Integrazione Google Calendar",
"googleDescription": "Collega il tuo Google Calendar per sincronizzare gli eventi e vederli insieme alle tue attività.",
"googleStatus": "Stato",
"notConnected": "Non Connesso",
"connected": "Connesso",
"connectGoogle": "Collega Google Calendar",
"disconnectGoogle": "Scollega Google Calendar",
"connecting": "Connessione...",
"connectionError": "Impossibile connettersi a Google Calendar. Riprova.",
"disconnectionError": "Impossibile scollegarsi da Google Calendar. Riprova.",
"taskDetails": "Dettagli Attività",
"editTask": "Modifica Attività",
"goToTasks": "Vai alle Attività",
"close": "Chiudi",
"title": "Titolo",
"status": "Stato",
"dueDate": "Data di Scadenza",
"priority": "Priorità",
"project": "Progetto",
"area": "Area",
"description": "Descrizione",
"created": "Creato",
"completed": "Completato",
"pending": "In Sospeso",
"high": "Alta",
"medium": "Media",
"low": "Bassa",
"time": "Ora",
"allDay": "Tutto il giorno"
}
}

View file

@ -117,6 +117,7 @@
"ukrainian": "ウクライナ語",
"deutsch": "ドイツ語",
"japanese": "日本語",
"italian": "イタリア語",
"pollingNote": "ポーリングはTelegramからの新しいメッセージを定期的にチェックし、受信トレイに追加します。",
"pollingDescription": "ポーリングはTelegramからの新しいメッセージを定期的にチェックし、受信トレイに追加します。",
"startPolling": "ポーリング開始",
@ -264,7 +265,8 @@
"monthYear": "MMMM yyyy",
"dayMonth": "MMMM d",
"time": "h:mm a",
"dateTime": "MMM d, yyyy h:mm a"
"dateTime": "MMM d, yyyy h:mm a",
"todayHeader": "dddd, yyyy年M月d日"
},
"taskViews": {
"project": {
@ -374,7 +376,8 @@
"browseImage": "画像を参照",
"noNotes": "このプロジェクトにはメモがありません。",
"deleteProject": "プロジェクトを削除",
"showCompleted": "完了済みを表示"
"showCompleted": "完了済みを表示",
"createSuccess": "プロジェクトが正常に作成されました!"
},
"profile": {
"taskIntelligence": "タスクインテリジェンス",

View file

@ -241,7 +241,8 @@
"browseImage": "Вибрати Зображення",
"noNotes": "Немає нотаток для цього проекту.",
"deleteProject": "Видалити Проект",
"showCompleted": "Показати Завершені"
"showCompleted": "Показати Завершені",
"createSuccess": "Проект успішно створено!"
},
"profile": {
"title": "Налаштування Профілю",
@ -254,6 +255,7 @@
"ukrainian": "Українська",
"deutsch": "Німецька",
"japanese": "Японська",
"italian": "Італійська",
"pollingNote": "Опитування періодично перевіряє нові повідомлення з Telegram і додає їх до вашої вхідної скриньки.",
"pollingDescription": "Опитування періодично перевіряє нові повідомлення з Telegram і додає їх до вашої вхідної скриньки.",
"startPolling": "Почати опитування",
@ -377,5 +379,14 @@
"friday": "Пт",
"saturday": "Сб",
"sunday": "Нд"
},
"dateFormats": {
"long": "EEEE, d MMMM yyyy",
"short": "d MMM yyyy",
"monthYear": "MMMM yyyy",
"dayMonth": "d MMMM",
"time": "HH:mm",
"dateTime": "d MMM yyyy, HH:mm",
"todayHeader": "dddd, d MMMM yyyy 'р.'"
}
}