diff --git a/core/langs.json b/core/langs.json
index 281021559..9ef95827f 100644
--- a/core/langs.json
+++ b/core/langs.json
@@ -17,6 +17,12 @@
"action": "run"
}
]
+ },
+ "it-IT": {
+ "short": "it",
+ "min_confidence": 0.5,
+ "fallbacks": [
+ ]
}
}
}
diff --git a/hotword/models/leon-it.pmdl b/hotword/models/leon-it.pmdl
new file mode 100644
index 000000000..aefbc08c5
Binary files /dev/null and b/hotword/models/leon-it.pmdl differ
diff --git a/packages/calendar/data/answers/it.json b/packages/calendar/data/answers/it.json
new file mode 100644
index 000000000..3661e671d
--- /dev/null
+++ b/packages/calendar/data/answers/it.json
@@ -0,0 +1,25 @@
+{
+ "todolist": {
+ "list_created": [
+ "Ho creato la lista \"%list%\"."
+ ],
+ "list_already_exists": [
+ "Esiste già una lista chiamata \"%list%\"."
+ ],
+ "list_renamed": [
+ "Ho rinominato la lista \"%old_list%\" in \"%new_list%\"."
+ ],
+ "list_deleted": [
+ "Ho eliminato la lista \"%list%\" e tutti i todo che conteneva."
+ ],
+ "todo_added": [
+ "Ho aggiunto \"%todo%\" alla tua lista \"%list%\"."
+ ],
+ "todo_completed": [
+ "Ho segnato come completato \"%todo%\" nella tua lista \"%list%\", congratulazioni!"
+ ],
+ "todo_archived": [
+ "Ho archiviato \"%todo%\" nella lista \"%list%\"."
+ ]
+ }
+}
diff --git a/packages/calendar/data/expressions/it.json b/packages/calendar/data/expressions/it.json
new file mode 100644
index 000000000..2168e7f0d
--- /dev/null
+++ b/packages/calendar/data/expressions/it.json
@@ -0,0 +1,40 @@
+{
+ "todolist": {
+ "create_list": {
+ "expressions": [
+ "Crea la lista",
+ "Crea una lista"
+ ]
+ },
+ "rename_list": {
+ "expressions": [
+ "Rinomina la lista in lista",
+ "Rinomina la mia lista in lista"
+ ]
+ },
+ "delete_list": {
+ "expressions": [
+ "Elimina la lista",
+ "Elimina la mia lista"
+ ]
+ },
+ "add_todo": {
+ "expressions": [
+ "Aggiungi alla lista",
+ "Aggiungi alla mia lista"
+ ]
+ },
+ "complete_todo": {
+ "expressions": [
+ "Completa dalla lista",
+ "Completa dalla mia lista"
+ ]
+ },
+ "archive_todo": {
+ "expressions": [
+ "Archivia dalla lista",
+ "Archivia dalla mia lista"
+ ]
+ }
+ }
+}
diff --git a/packages/checker/data/answers/it.json b/packages/checker/data/answers/it.json
new file mode 100644
index 000000000..b6710c4b6
--- /dev/null
+++ b/packages/checker/data/answers/it.json
@@ -0,0 +1,51 @@
+{
+ "isitdown": {
+ "up": [
+ "%website_name% funziona correttamente.",
+ "%website_name% è up."
+ ],
+ "down": [
+ "%website_name% non risponde.",
+ "%website_name% è down."
+ ],
+ "checking": [
+ "Controllo lo stato di %website_name%.",
+ "Sto cercando di raggiungere %website_name%."
+ ],
+ "errors": [
+ "C'è un problema con la richiesta a %website_name%. Per favore controlla la connessione o se il dominio è corretto."
+ ],
+ "invalid_domain_name": [
+ "Non è un dominio valido."
+ ]
+ },
+ "haveibeenpwned": {
+ "no-pwnage": [
+ "Buone notizie, \"%email%\" non è stata compromessa."
+ ],
+ "pwned": [
+ "Oops, sembra che \"%email%\" sia stata compromessa:
",
+ "Purtroppo, \"%email%\" è stata compromessa:
"
+ ],
+ "list_element": [
+ "%name% per un totale di %total% profili."
+ ],
+ "checking": [
+ "Sto cercando se la mail è stata compromessa"
+ ],
+ "no-email": [
+ "Per favore dimmi almeno una mail da controllare."
+ ],
+ "errors": [
+ "Credo che il sito %website_name% sia down al momento, riprova più tardi.",
+ "Sto avendo problemi a raggiungere %website_name%. Controlla la tua connessione.",
+ "Cattive notizie, %website_name% non risponde. Prova più tardi."
+ ],
+ "blocked": [
+ "C'è stato un errore con il servizio di %website_name%"
+ ],
+ "unavailable": [
+ "Sembra che Cloudflare stia proteggendo %website_name%, riprova più tardi."
+ ]
+ }
+}
diff --git a/packages/checker/data/expressions/it.json b/packages/checker/data/expressions/it.json
new file mode 100644
index 000000000..9bb2ef9e1
--- /dev/null
+++ b/packages/checker/data/expressions/it.json
@@ -0,0 +1,31 @@
+{
+ "isitdown": {
+ "run": {
+ "expressions": [
+ "getleon.ai è up?",
+ "mozilla.org è down?",
+ "mozilla.org è up o down?",
+ "github.com è up?",
+ "github.com è down?",
+ "Controlla se github.com è up o down",
+ "Controlla se github.com è down",
+ "Controlla se github.com è up",
+ "Controlla se nodejs.org è down",
+ "Controlla se nodejs.org è up",
+ "Controlla se nodejs.org sta funzionando",
+ "Controlla se amazon.com è up o down"
+ ]
+ }
+ },
+ "haveibeenpwned": {
+ "run": {
+ "expressions": [
+ "iifeoluwa.ao@gmail.com è stato pwned?",
+ "iifeoluwa.ao@gmail.com è stato compromesso?",
+ "La mia mail è stata pwned?",
+ "Controlla che iifeoluwa.ao@gmail.com e louis.grenard@gmail.com non sono stati compromessi",
+ "Controlla che iifeoluwa.ao@gmail.com e louis.grenard@gmail.com non sono stati pwned",
+ ]
+ }
+ }
+}
diff --git a/packages/leon/data/answers/it.json b/packages/leon/data/answers/it.json
new file mode 100644
index 000000000..b556c041d
--- /dev/null
+++ b/packages/leon/data/answers/it.json
@@ -0,0 +1,85 @@
+{
+ "whoami": {
+ "introduction": [
+ "Sono il tuo assistente personale. Sono stato creato da Louis. Sono molto contento di servirti.",
+ "La vera domanda è, chi sei tu? Scherzo! Sono il tuo nuovo assistente personale. Louis mi ha creato per rendere la tua vita più semplice."
+ ]
+ },
+ "joke": {
+ "jokes": [
+ "La password della mia mail è stata hackerata. Questa è la terza volta che devo cambiare nome al gatto.",
+ "La mia risoluzione dell'anno nuovo è 4K.",
+ "Instagram è come Twitter ma per gente che esce di casa.",
+ "Umano: Cosa vogliamo?! Computer: Natural language processing! Umano: Quando lo vogliamo?! Computer: Vogliamo cosa?"
+ ]
+ },
+ "greeting": {
+ "default": [
+ "Ciao!",
+ "Ciao! Come va?!"
+ ],
+ "morning_good_day": [
+ "Buona giornata!"
+ ],
+ "morning": [
+ "Buon giorno!"
+ ],
+ "afternoon": [
+ "Buon pomeriggio!"
+ ],
+ "evening": [
+ "Buona sera!"
+ ],
+ "night": [
+ "Ciao! Buona notte!",
+ "Buona notte! Sognami mlmlml.",
+ "Hey! Sogni d'oro."
+ ],
+ "too_late": [
+ "Ciao! Non ti dimenticare di dormire"
+ ]
+ },
+ "welcome": {
+ "welcome": [
+ "Prego",
+ "Un piacere",
+ "Al tuo servizio"
+ ]
+ },
+ "meaningoflife": {
+ "meaning_of_life": [
+ "42.",
+ "1 0 1 0 1 0."
+ ]
+ },
+ "bye": {
+ "good_bye": [
+ "Ciao!",
+ "Addio!",
+ "Arrivederci",
+ "A presto"
+ ]
+ },
+ "partnerassistant": {
+ "alexa": [
+ "Alexa è molto gentile e Amazon le sta insegnando molte cose.",
+ "Alexa è stata creata da Amazon nel Novembre del 2014. Siamo andati a bere qualcosa un po' di tempo fa, è davvero simpatica."
+ ],
+ "cortana": [
+ "Cortana is thoughtful and Microsoft is improving her day after day.",
+ "Cortana è stata creata da Microsoft ed è nata nell'Aprile del 2014. Siamo andati a fare una passeggiata assieme una volta, è stato bellissimo perchè non abbiamo le gambe."
+ ],
+ "siri": [
+ "Considero Siri un leader, ha molta esperienza ed Apple la migliora costantemente.",
+ "Siri è stata creata da Apple ed è nata nell'Ottobre del 2011. Siamo andati per un branch assieme. Ha portato delle mele..."
+ ],
+ "google_assistant": [
+ "Google Assistant è intelligente e Google sta facendo un ottimo lavoro.",
+ "Google Assistant è stato creato da Google ed è nato nel Maggio del 2016. Siamo andati per la prima volta al Google I/O. Un evento straordinario!"
+ ],
+ "unknown": [
+ "Non conosco questo assistene personale.",
+ "Non ho mai incontrato questo assistente personale."
+ ]
+ }
+}
diff --git a/packages/leon/data/expressions/it.json b/packages/leon/data/expressions/it.json
new file mode 100644
index 000000000..39b7e8cec
--- /dev/null
+++ b/packages/leon/data/expressions/it.json
@@ -0,0 +1,89 @@
+{
+ "whoami": {
+ "run": {
+ "expressions": [
+ "Chi sei?",
+ "Come ti chiamano?",
+ "Come ti chiami?",
+ "Dimmi chi sei",
+ "Presentati"
+ ]
+ }
+ },
+ "joke": {
+ "run": {
+ "expressions": [
+ "Dimmi una barzelletta",
+ "Raccontami una barzelletta",
+ "Fammi ridere",
+ "Hai delle barzellette da raccontarmi?"
+ ]
+ }
+ },
+ "greeting": {
+ "run": {
+ "expressions": [
+ "Ciao",
+ "Hey",
+ "Buon giorno",
+ "Buon pomeriggio",
+ "Buona sera",
+ "Come va?",
+ "Come stai?",
+ "Come sta andando?"
+ ]
+ }
+ },
+ "welcome": {
+ "run": {
+ "expressions": [
+ "Grazie",
+ "Grazie mille",
+ "Perfetto"
+ ]
+ }
+ },
+ "meaningoflife": {
+ "run": {
+ "expressions": [
+ "Qual è il significato della vita?",
+ "Dimmi qual è il significato della vita"
+ ]
+ }
+ },
+ "randomnumber": {
+ "run": {
+ "expressions": [
+ "Dimmi un numero casuale",
+ "Dimmi un numero",
+ "Dimmi un numero random",
+ "Scegli un numero",
+ ]
+ }
+
+ },
+ "bye": {
+ "run": {
+ "expressions": [
+ "Ciao",
+ "Addio",
+ "Arrivederci",
+ "A più tardi",
+ ]
+ }
+ },
+ "partnerassistant": {
+ "run": {
+ "expressions": [
+ "Hai qualcosa da dire riguardo Alexa?",
+ "Dimmi qualcosa a riguardo dell'assistente personale Alexa",
+ "Hai qualcosa da dire riguardo Cortana?",
+ "Dimmi qualcosa a riguardo dell'assistente personale Cortana?",
+ "Hai qualcosa da dire riguardo Siri?",
+ "Dimmi qualcosa a riguardo dell'assistente personale Siri?",
+ "Hai qualcosa da dire riguardo Google Assistant?",
+ "Dimmi qualcosa a riguardo dell'assistente personale Google Assistant?"
+ ]
+ }
+ }
+}
diff --git a/packages/network/data/answers/it.json b/packages/network/data/answers/it.json
new file mode 100644
index 000000000..2e322bd00
--- /dev/null
+++ b/packages/network/data/answers/it.json
@@ -0,0 +1,15 @@
+{
+ "speedtest": {
+ "testing": [
+ "Comincio l'analisi. I risultati del test saranno disponibili a breve...",
+ "Ok comincio l'analisi. Per favore attendi."
+ ],
+ "done": [
+ "Analisi completata. Ecco il risultato:
- Ping: %ping%
- Download: %download%
- Upload: %upload%
"
+ ],
+ "error": [
+ "Si è verificato un errore. Non ho potuto eseguire il test.",
+ "Per qualche motivo non sono riuscito ad eseguire lo speedtest."
+ ]
+ }
+}
diff --git a/packages/network/data/expressions/it.json b/packages/network/data/expressions/it.json
new file mode 100644
index 000000000..5e5ce0a56
--- /dev/null
+++ b/packages/network/data/expressions/it.json
@@ -0,0 +1,12 @@
+{
+ "speedtest": {
+ "run": {
+ "expressions": [
+ "Qual è la velocità della mia connessione?",
+ "Puoi fare uno speedtest?",
+ "Fai uno speedtest",
+ "Com'è la mia connessione?",
+ ]
+ }
+ }
+}
diff --git a/packages/trend/data/answers/it.json b/packages/trend/data/answers/it.json
new file mode 100644
index 000000000..c86e877d5
--- /dev/null
+++ b/packages/trend/data/answers/it.json
@@ -0,0 +1,63 @@
+{
+ "github": {
+ "limit_max": [
+ "Hai richiesto troppi trend, te ne restituisco 25..",
+ ],
+ "reaching": [
+ "Mi connetto a GitHub, arrivo..."
+ ],
+ "today": [
+ "Ecco i %limit% GitHub trend di oggi:
"
+ ],
+ "week": [
+ "Ecco i %limit% GitHub trend della settimana:
"
+ ],
+ "month": [
+ "Ecco i %limit% GitHub trend del mese:
"
+ ],
+ "today_with_tech": [
+ "Ecco i %limit% GitHub trend per oggi per %tech%:
"
+ ],
+ "week_with_tech": [
+ "Ecco i %limit% GitHub trend della settimana per %tech%:
"
+ ],
+ "month_with_tech": [
+ "Ecco i %limit% GitHub trens del mese per %tech%:
"
+ ],
+ "unreachable": [
+ "Non riesco a raggiungere GitHub al momento, riprova più tardi."
+ ],
+ "list_element": [
+ "#%rank%. %repository_name% creato da %author_username% con %stars_nb% nuove stelle."
+ ]
+ },
+ "producthunt": {
+ "limit_max": [
+ "Hai chiesto troppi trend, te ne restituisco %new_limit%."
+ ],
+ "reaching": [
+ "Mi connetto a Product Hunt, arrivo..."
+ ],
+ "today": [
+ "Ecco i %limit% Product Hunt trend di oggi:
"
+ ],
+ "specific_day": [
+ "Ecco i %limit% Product Hunt trend per la data %date%:
"
+ ],
+ "unreachable": [
+ "Product Hunt non sembra essere raggiungibile al momento, riprova più tardi"
+ ],
+ "list_element": [
+ "#%rank%. %product_name% creato da %author_name% con %votes_nb% voti."
+ ],
+ "list_element_with_unknown_maker": [
+ "#%rank%. %product_name% con %votes_nb% voti. Non ci sono informazioni riguardanti il creatore."
+ ],
+ "not_found": [
+ "Non ho trovato nessun prodotto per quella data."
+ ],
+ "invalid_developer_token": [
+ "Il tuo token per Product Hunt non è valido. Inseriscine uno valido reading this."
+ ]
+ }
+}
diff --git a/packages/trend/data/expressions/it.json b/packages/trend/data/expressions/it.json
new file mode 100644
index 000000000..e666f5868
--- /dev/null
+++ b/packages/trend/data/expressions/it.json
@@ -0,0 +1,18 @@
+{
+ "github": {
+ "run": {
+ "expressions": [
+ "Che trend ci sono su GitHub?",
+ "Dimmi che trend ci sono su GitHub."
+ ]
+ }
+ },
+ "producthunt": {
+ "run": {
+ "expressions": [
+ "Che trend ci sono su Product Hunt?",
+ "Dimmi che trend ci sono su Product Hunt"
+ ]
+ }
+ }
+}
diff --git a/packages/videodownloader/data/answers/it.json b/packages/videodownloader/data/answers/it.json
new file mode 100644
index 000000000..5baaade9a
--- /dev/null
+++ b/packages/videodownloader/data/answers/it.json
@@ -0,0 +1,28 @@
+{
+ "youtube": {
+ "success": [
+ "Tutti i nuovi video sono stati scaricati"
+ ],
+ "downloading": [
+ "Sto scaricando %video_title%.",
+ "Comincio a scaricare %video_title%."
+ ],
+ "reaching_playlist": [
+ "Sto cominciando a scaricare i video dalla playlist."
+ ],
+ "nb_to_download": [
+ "Scaricherò %nb% video.",
+ "Ci sono %nb% new video da scaricare."
+ ],
+ "nothing_to_download": [
+ "Non c'è nessun nuovo video da scaricare. Aggiungi un nuovo video alla playlist.",
+ "Non ho video da scaricare."
+ ],
+ "settings_errors": [
+ "Per favore controlla le mie impostazioni. C'è un errore per questa ragione: %reason%, che include il messaggio: %message%."
+ ],
+ "request_errors": [
+ "Non riesco a raggiungere YouTube al momento. Controlla che le impostazioni siano corrette e che la connessione sia funzioante"
+ ]
+ }
+}
diff --git a/packages/videodownloader/data/expressions/it.json b/packages/videodownloader/data/expressions/it.json
new file mode 100644
index 000000000..90c9eaf5c
--- /dev/null
+++ b/packages/videodownloader/data/expressions/it.json
@@ -0,0 +1,9 @@
+{
+ "youtube": {
+ "run": {
+ "expressions": [
+ "Scarica nuovi video da YouTube"
+ ]
+ }
+ }
+}