From 5ab8649287fc371fdc6cfecb65724f28a0f223b2 Mon Sep 17 00:00:00 2001
From: Filippo Pisano
Date: Mon, 3 Nov 2025 11:37:52 +0100
Subject: [PATCH 1/4] Add support to italian language
---
frontend/app/src/i18n/it/activitiesView.json | 14 +++
frontend/app/src/i18n/it/activityItems.json | 43 +++++++++
frontend/app/src/i18n/it/activityView.json | 13 +++
.../activities/activitiesTableComponent.json | 12 +++
.../activityBellowMPillsComponent.json | 25 ++++++
.../activities/activityLapsComponent.json | 14 +++
.../activityMandAbovePillsComponent.json | 17 ++++
.../activities/activityMapComponent.json | 8 ++
.../activities/activitySummaryComponent.json | 31 +++++++
.../activityWorkoutStepsComponent.json | 20 +++++
.../addGearToActivityModalComponent.json | 6 ++
.../modals/editActivityModalComponent.json | 69 ++++++++++++++
.../followers/followersListComponent.json | 16 ++++
.../gearComponentAddEditModalComponent.json | 19 ++++
.../gears/gearComponentListComponent.json | 79 ++++++++++++++++
.../gears/gearsAddEditGearModalComponent.json | 29 ++++++
.../components/gears/gearsListComponent.json | 16 ++++
.../health/healthDashboardZoneComponent.json | 13 +++
.../health/healthSideBarComponent.json | 4 +
.../healthWeightAddEditModalComponent.json | 8 ++
.../healthWeightListComponent.json | 9 ++
.../health/healthWeightZoneComponent.json | 6 ++
.../navbar/navbarBottomMobileComponent.json | 7 ++
.../it/components/navbar/navbarComponent.json | 13 +++
.../it/components/noItemsFoundComponent.json | 4 +
...pApprovalRequestNotificationComponent.json | 4 +
.../navbarNotificationsComponent.json | 6 ++
...wAcceptedRequestNotificationComponent.json | 4 +
...plicateStartTimeNotificationComponent.json | 4 +
.../newActivityNotificationComponent.json | 4 +
...wFollowerRequestNotificationComponent.json | 4 +
.../settingsLanguageSwitcherComponent.json | 3 +
.../settingsThemeSwitcherComponent.json | 6 ++
.../settings/settingsImportZoneComponent.json | 18 ++++
.../garminConnectLoginModalComponent.json | 14 +++
.../settingsIntegrationsZoneComponent.json | 47 ++++++++++
.../settingsSecurityZoneComponent.json | 31 +++++++
.../settingsServerSettingsZoneComponent.json | 29 ++++++
.../settings/settingsSideBarComponent.json | 10 +++
.../settings/settingsUserGoals.json | 7 ++
.../goalsAddEditGoalModalComponent.json | 30 +++++++
.../goalsListComponent.json | 5 ++
.../settingsUserProfileZoneComponent.json | 89 +++++++++++++++++++
.../userSessionsListComponent.json | 5 ++
.../usersAddEditUserModalComponent.json | 52 +++++++++++
...usersChangeUserPasswordModalComponent.json | 10 +++
.../settingsUsersZone/usersListComponent.json | 22 +++++
.../usersPasswordRequirementsComponent.json | 7 ++
.../settings/settingsUsersZoneComponent.json | 10 +++
.../users/userDistanceStatsComponent.json | 4 +
.../users/userGoalsStatsComponent.json | 13 +++
.../src/i18n/it/emailVerificationView.json | 8 ++
frontend/app/src/i18n/it/gears/gearView.json | 31 +++++++
frontend/app/src/i18n/it/gears/gearsView.json | 13 +++
frontend/app/src/i18n/it/generalItems.json | 79 ++++++++++++++++
frontend/app/src/i18n/it/healthView.json | 5 ++
frontend/app/src/i18n/it/homeView.json | 18 ++++
frontend/app/src/i18n/it/loginView.json | 37 ++++++++
frontend/app/src/i18n/it/notFoundView.json | 5 ++
frontend/app/src/i18n/it/resetPassword.json | 11 +++
frontend/app/src/i18n/it/searchView.json | 37 ++++++++
frontend/app/src/i18n/it/settingsView.json | 3 +
frontend/app/src/i18n/it/signupView.json | 33 +++++++
.../i18n/it/strava/stravaCallbackView.json | 4 +
frontend/app/src/i18n/it/summaryView.json | 44 +++++++++
frontend/app/src/i18n/it/userView.json | 32 +++++++
66 files changed, 1293 insertions(+)
create mode 100644 frontend/app/src/i18n/it/activitiesView.json
create mode 100644 frontend/app/src/i18n/it/activityItems.json
create mode 100644 frontend/app/src/i18n/it/activityView.json
create mode 100644 frontend/app/src/i18n/it/components/activities/activitiesTableComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/activityBellowMPillsComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/activityLapsComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/activityMandAbovePillsComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/activityMapComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/activitySummaryComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/activityWorkoutStepsComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/modals/addGearToActivityModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/activities/modals/editActivityModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/followers/followersListComponent.json
create mode 100644 frontend/app/src/i18n/it/components/gears/gearComponentAddEditModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/gears/gearComponentListComponent.json
create mode 100644 frontend/app/src/i18n/it/components/gears/gearsAddEditGearModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/gears/gearsListComponent.json
create mode 100644 frontend/app/src/i18n/it/components/health/healthDashboardZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/health/healthSideBarComponent.json
create mode 100644 frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightAddEditModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightListComponent.json
create mode 100644 frontend/app/src/i18n/it/components/health/healthWeightZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/navbar/navbarBottomMobileComponent.json
create mode 100644 frontend/app/src/i18n/it/components/navbar/navbarComponent.json
create mode 100644 frontend/app/src/i18n/it/components/noItemsFoundComponent.json
create mode 100644 frontend/app/src/i18n/it/components/notifications/adminNewSignUpApprovalRequestNotificationComponent.json
create mode 100644 frontend/app/src/i18n/it/components/notifications/navbarNotificationsComponent.json
create mode 100644 frontend/app/src/i18n/it/components/notifications/newAcceptedRequestNotificationComponent.json
create mode 100644 frontend/app/src/i18n/it/components/notifications/newActivityDuplicateStartTimeNotificationComponent.json
create mode 100644 frontend/app/src/i18n/it/components/notifications/newActivityNotificationComponent.json
create mode 100644 frontend/app/src/i18n/it/components/notifications/newFollowerRequestNotificationComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsLanguageSwitcherComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsThemeSwitcherComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsImportZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsIntegrationsZone/garminConnectLoginModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsIntegrationsZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsSecurityZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsServerSettingsZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsSideBarComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUserGoals.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsAddEditGoalModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsListComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUserProfileZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUserSessionsZone/userSessionsListComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersAddEditUserModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersChangeUserPasswordModalComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersListComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersPasswordRequirementsComponent.json
create mode 100644 frontend/app/src/i18n/it/components/settings/settingsUsersZoneComponent.json
create mode 100644 frontend/app/src/i18n/it/components/users/userDistanceStatsComponent.json
create mode 100644 frontend/app/src/i18n/it/components/users/userGoalsStatsComponent.json
create mode 100644 frontend/app/src/i18n/it/emailVerificationView.json
create mode 100644 frontend/app/src/i18n/it/gears/gearView.json
create mode 100644 frontend/app/src/i18n/it/gears/gearsView.json
create mode 100644 frontend/app/src/i18n/it/generalItems.json
create mode 100644 frontend/app/src/i18n/it/healthView.json
create mode 100644 frontend/app/src/i18n/it/homeView.json
create mode 100644 frontend/app/src/i18n/it/loginView.json
create mode 100644 frontend/app/src/i18n/it/notFoundView.json
create mode 100644 frontend/app/src/i18n/it/resetPassword.json
create mode 100644 frontend/app/src/i18n/it/searchView.json
create mode 100644 frontend/app/src/i18n/it/settingsView.json
create mode 100644 frontend/app/src/i18n/it/signupView.json
create mode 100644 frontend/app/src/i18n/it/strava/stravaCallbackView.json
create mode 100644 frontend/app/src/i18n/it/summaryView.json
create mode 100644 frontend/app/src/i18n/it/userView.json
diff --git a/frontend/app/src/i18n/it/activitiesView.json b/frontend/app/src/i18n/it/activitiesView.json
new file mode 100644
index 000000000..2e0392958
--- /dev/null
+++ b/frontend/app/src/i18n/it/activitiesView.json
@@ -0,0 +1,14 @@
+{
+ "title": "Attività",
+ "filterLabelType": "Tipo",
+ "filterOptionAllTypes": "Tutti i tipi",
+ "filterLabelFromDate": "Data da",
+ "filterLabelToDate": "Data a",
+ "filterLabelNameLocation": "Nome o località",
+ "filterPlaceholderNameLocation": "es., Corsa mattutina",
+ "buttonClear": "Cancella",
+ "buttonApply": "Applica",
+ "errorFailedFetchActivityTypes": "Impossibile recuperare i tipi di attività",
+ "errorUpdatingActivities": "Impossibile aggiornare le attività",
+ "errorFetchingActivities": "Impossibile recuperare le attività utente"
+}
diff --git a/frontend/app/src/i18n/it/activityItems.json b/frontend/app/src/i18n/it/activityItems.json
new file mode 100644
index 000000000..c357ac116
--- /dev/null
+++ b/frontend/app/src/i18n/it/activityItems.json
@@ -0,0 +1,43 @@
+{
+ "run": "Corsa",
+ "trailRun": "Trail run",
+ "virtualRun": "Corsa virtuale",
+ "ride": "Ciclismo",
+ "gravelRide": "Gravel",
+ "mtbRide": "MTB",
+ "virtualRide": "Ciclismo virtuale",
+ "lapSwimming": "Nuoto in piscina",
+ "openWaterSwimming": "Nuoto in acque libere",
+ "workout": "Allenamento",
+ "walk": "Camminata",
+ "indoorWalk": "Camminata al coperto",
+ "hike": "Escursione",
+ "rowing": "Canottaggio",
+ "yoga": "Yoga",
+ "alpineSki": "Sci alpino",
+ "nordicSki": "Sci nordico",
+ "snowboard": "Snowboard",
+ "transition": "Transizione",
+ "strengthTraining": "Allenamento forza",
+ "crossfit": "CrossFit",
+ "tennis": "Tennis",
+ "tableTennis": "Ping pong",
+ "badminton": "Badminton",
+ "squash": "Squash",
+ "racquetball": "Racquetball",
+ "pickleball": "Pickleball",
+ "commutingRide": "Ciclismo pendolare",
+ "indoorRide": "Ciclismo al coperto",
+ "mixedSurfaceRide": "Ciclismo su terreno misto",
+ "windsurf": "Windsurf",
+ "standUpPaddling": "Stand up paddle",
+ "surf": "Surf",
+ "trackRun": "Corsa su pista",
+ "ebikeRide": "E-bike",
+ "ebikeMountainRide": "E-MTB",
+ "iceSkate": "Pattinaggio su ghiaccio",
+ "soccer": "Calcio",
+ "padel": "Padel",
+ "treadmillRun": "Corsa su tapis roulant",
+ "labelWorkout": " allenamento"
+}
diff --git a/frontend/app/src/i18n/it/activityView.json b/frontend/app/src/i18n/it/activityView.json
new file mode 100644
index 000000000..9512c23e1
--- /dev/null
+++ b/frontend/app/src/i18n/it/activityView.json
@@ -0,0 +1,13 @@
+{
+ "labelGear": "Attrezzatura",
+ "labelGearNotSet": "Non impostata",
+ "modalLabelDeleteGear": "Elimina attrezzatura dall'attività",
+ "modalLabelDeleteGearBody": "Sei sicuro di voler rimuovere l'attrezzatura dall'attività?",
+ "modalLabelDeleteGearButton": "Elimina attrezzatura",
+ "successMessageGearAdded": "Attrezzatura aggiunta all'attività",
+ "successMessageGearDeleted": "Attrezzatura eliminata dall'attività",
+ "errorMessageDeleteGear": "Errore nell'eliminazione dell'attrezzatura dall'attività",
+ "errorMessageActivityNotFound": "Attività non trovata",
+ "alertPrivacyMessage": "Hai nascosto informazioni in questa attività. Puoi vederle tu, ma gli altri no.",
+ "isHiddenMessage": "Questa attività è nascosta. Probabilmente perché è un duplicato o è stata nascosta dall'utente."
+}
diff --git a/frontend/app/src/i18n/it/components/activities/activitiesTableComponent.json b/frontend/app/src/i18n/it/components/activities/activitiesTableComponent.json
new file mode 100644
index 000000000..01a8751ad
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/activitiesTableComponent.json
@@ -0,0 +1,12 @@
+{
+ "headerType": "Tipo",
+ "headerName": "Nome",
+ "headerLocation": "Località",
+ "headerStartTime": "Ora di inizio",
+ "headerDuration": "Durata",
+ "headerDistance": "Distanza",
+ "headerPace": "Ritmo/Velocità",
+ "headerCalories": "Calorie",
+ "headerElevation": "Elevazione",
+ "headerAvgHr": "FC media"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/activityBellowMPillsComponent.json b/frontend/app/src/i18n/it/components/activities/activityBellowMPillsComponent.json
new file mode 100644
index 000000000..04b538fd4
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/activityBellowMPillsComponent.json
@@ -0,0 +1,25 @@
+{
+ "subTitlePace": "Ritmo",
+ "labelAvgPace": "Ritmo medio",
+ "labelMovingTime": "Tempo in movimento",
+ "labelElapsedTime": "Tempo trascorso",
+ "subTitleSpeed": "Velocità",
+ "labelAvgSpeed": "Velocità media",
+ "labelMaxSpeed": "Velocità massima",
+ "subTitleHeartRate": "Frequenza cardiaca",
+ "labelAvgHeartRate": "Frequenza cardiaca media",
+ "labelMaxHeartRate": "Frequenza cardiaca massima",
+ "subTitlePower": "Potenza",
+ "labelAvgPower": "Potenza media",
+ "labelMaxPower": "Potenza massima",
+ "labelNormalizedPower": "Potenza normalizzata",
+ "subTitleCadence": "Cadenza",
+ "labelAvgCadence": "Cadenza media",
+ "labelMaxCadence": "Cadenza massima",
+ "subTitleElevation": "Elevazione",
+ "labelElevationGain": "Dislivello positivo",
+ "labelElevationLoss": "Dislivello negativo",
+ "subTitleStrokeRate": "Frequenza di bracciata",
+ "labelAvgStrokeRate": "Frequenza di bracciata media",
+ "labelMaxStrokeRate": "Frequenza di bracciata massima"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/activityLapsComponent.json b/frontend/app/src/i18n/it/components/activities/activityLapsComponent.json
new file mode 100644
index 000000000..5ad5530d9
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/activityLapsComponent.json
@@ -0,0 +1,14 @@
+{
+ "labelLapNumber": "Giro",
+ "labelLapIntensity": "Intensità",
+ "labelLapDistance": "Distanza",
+ "labelLapTime": "Tempo",
+ "labelLapPace": "Ritmo",
+ "labelLapSpeed": "Velocità",
+ "labelLapElevation": "Elevazione",
+ "labelLapElev": "Elev",
+ "labelLapAvgHr": "Frequenza cardiaca media",
+ "labelLapHR": "FC",
+ "labelLapStrokeRate": "Frequenza di bracciata",
+ "labelLapSR": "FB"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/activityMandAbovePillsComponent.json b/frontend/app/src/i18n/it/components/activities/activityMandAbovePillsComponent.json
new file mode 100644
index 000000000..a26a5bc21
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/activityMandAbovePillsComponent.json
@@ -0,0 +1,17 @@
+{
+ "labelPillGraphs": "Grafici",
+ "labelPillLaps": "Giri",
+ "labelPillWorkoutSets": "Serie",
+ "labelGraph": "Grafici dati attività",
+ "labelGraphHR": "Frequenza cardiaca",
+ "labelHRZones": "Zone frequenza cardiaca",
+ "labelGraphPower": "Potenza",
+ "labelGraphCadence": "Cadenza",
+ "labelGraphElevation": "Elevazione",
+ "labelGraphVelocity": "Velocità",
+ "labelGraphPace": "Ritmo",
+ "labelGraphHRZone": "Zona",
+ "labelDownsampling": "Dati ridotti a ~200 punti",
+ "errorMessageProcessingActivityStreams": "Errore nell'elaborazione dei flussi di attività",
+ "labelGraphStrokeRate": "Frequenza di bracciata"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/activityMapComponent.json b/frontend/app/src/i18n/it/components/activities/activityMapComponent.json
new file mode 100644
index 000000000..ae16e0801
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/activityMapComponent.json
@@ -0,0 +1,8 @@
+{
+ "modalMediaDeleteTitle": "Elimina media",
+ "modalMediaDeleteBody1": "Sei sicuro di voler eliminare il media con ID ",
+ "modalMediaDeleteBody2": " e nome ",
+ "errorFetchingActivityStream": "Errore nel recupero dei dati del flusso attività",
+ "mediaDeletedSuccessfully": "Media eliminato con successo",
+ "errorDeletingMedia": "Errore nell'eliminazione del media"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/activitySummaryComponent.json b/frontend/app/src/i18n/it/components/activities/activitySummaryComponent.json
new file mode 100644
index 000000000..b570116af
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/activitySummaryComponent.json
@@ -0,0 +1,31 @@
+{
+ "userNameHidden": "Nascosto",
+ "visibilityPublic": "Pubblico",
+ "visibilityFollowers": "Follower",
+ "visibilityPrivate": "Privato",
+ "buttonDeleteActivity": "Elimina attività",
+ "buttonEditActivity": "Modifica attività",
+ "buttonAddActivityMedia": "Aggiungi media",
+ "modalDeleteBody1": "Sei sicuro di voler eliminare l'attività ",
+ "modalDeleteBody2": "Questa azione non può essere annullata.",
+ "modalAddMediaTitle": "Aggiungi media",
+ "modalAddMediaBody": "Carica file .png, .jpg o .jpeg",
+ "processingMediaUpload": "Elaborazione caricamento media...",
+ "successMediaUpload": "Media caricato con successo",
+ "errorMediaUpload": "Errore nel caricamento del media",
+ "labelVirtual": "(Virtuale) ",
+ "privateNotes": "Note private",
+ "activityDistance": "Distanza",
+ "activityTime": "Tempo",
+ "activityPace": "Ritmo",
+ "activityAvgHR": "FC media",
+ "activityMaxHR": "FC massima",
+ "activityAvgPower": "Potenza media",
+ "activityAvgSpeed": "Velocità media",
+ "activityEleGain": "Dislivello positivo",
+ "activityEleLoss": "Dislivello negativo",
+ "activityCalories": "Calorie",
+ "activityNoData": "Nessun dato",
+ "errorFetchingUserById": "Errore nel recupero dell'utente per ID",
+ "errorDeletingActivity": "Errore nell'eliminazione dell'attività"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/activityWorkoutStepsComponent.json b/frontend/app/src/i18n/it/components/activities/activityWorkoutStepsComponent.json
new file mode 100644
index 000000000..cf28f28f7
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/activityWorkoutStepsComponent.json
@@ -0,0 +1,20 @@
+{
+ "labelWorkoutStepType": "Tipo di passaggio",
+ "labelWorkoutStepTime": "Tempo passaggio",
+ "labelWorkoutStepReps": "Ripetizioni passaggio",
+ "labelWorkoutStepIntensity": "Intensità",
+ "labelWorkoutStepNotes": "Note",
+ "labelWorkoutStepExerciseName": "Nome passaggio",
+ "labelWorkoutStepExerciseWeight": "Peso",
+ "labelWorkoutStepSwimStroke": "Stile nuoto passaggio",
+ "labelWorkoutSetType": "Tipo di serie",
+ "labelWorkoutSetTime": "Tempo serie",
+ "labelWorkoutSetReps": "Ripetizioni serie",
+ "labelWorkoutSetExerciseName": "Nome serie",
+ "labelWorkoutSetExerciseWeight": "Peso serie",
+ "labelWorkoutSetTypeMobile": "Tipo",
+ "labelWorkoutSetTimeMobile": "Tempo",
+ "labelWorkoutSetRepsMobile": "Ripet.",
+ "labelWorkoutSetExerciseNameMobile": "Nome",
+ "labelWorkoutSetExerciseWeightMobile": "Peso"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/modals/addGearToActivityModalComponent.json b/frontend/app/src/i18n/it/components/activities/modals/addGearToActivityModalComponent.json
new file mode 100644
index 000000000..353dd4581
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/modals/addGearToActivityModalComponent.json
@@ -0,0 +1,6 @@
+{
+ "modalLabelAddGear": "Aggiungi attrezzatura all'attività",
+ "modalLabelSelectGear": "Seleziona attrezzatura",
+ "modalButtonAddGear": "Aggiungi attrezzatura",
+ "errorEditingGear": "Errore nella modifica dell'attrezzatura"
+}
diff --git a/frontend/app/src/i18n/it/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/it/components/activities/modals/editActivityModalComponent.json
new file mode 100644
index 000000000..500f77e23
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/activities/modals/editActivityModalComponent.json
@@ -0,0 +1,69 @@
+{
+ "modalEditActivityTitle": "Modifica attività",
+ "modalEditActivityDescriptionLabel": "Descrizione",
+ "modalEditActivityDescriptionPlaceholder": "Descrizione (max 2500 caratteri)",
+ "modalEditActivityPrivateNotesLabel": "Note private",
+ "modalEditActivityPrivateNotesPlaceholder": "Note private (max 2500 caratteri)",
+ "modalEditActivityNameLabel": "Nome",
+ "modalEditActivityNamePlaceholder": "Nome (max 250 caratteri)",
+ "modalEditActivityTypeLabel": "Tipo",
+ "modalEditActivityTypeOption1": "Corsa",
+ "modalEditActivityTypeOption2": "Trail run",
+ "modalEditActivityTypeOption3": "Corsa virtuale",
+ "modalEditActivityTypeOption4": "Ciclismo",
+ "modalEditActivityTypeOption5": "Gravel",
+ "modalEditActivityTypeOption6": "Mountain bike",
+ "modalEditActivityTypeOption7": "Ciclismo virtuale",
+ "modalEditActivityTypeOption8": "Nuoto",
+ "modalEditActivityTypeOption9": "Nuoto in acque libere",
+ "modalEditActivityTypeOption10": "Allenamento",
+ "modalEditActivityTypeOption11": "Camminata",
+ "modalEditActivityTypeOption12": "Escursione",
+ "modalEditActivityTypeOption13": "Canottaggio",
+ "modalEditActivityTypeOption14": "Yoga",
+ "modalEditActivityTypeOption15": "Sci alpino",
+ "modalEditActivityTypeOption16": "Sci nordico",
+ "modalEditActivityTypeOption17": "Snowboard",
+ "modalEditActivityTypeOption18": "Transizione",
+ "modalEditActivityTypeOption19": "Allenamento pesi",
+ "modalEditActivityTypeOption20": "Crossfit",
+ "modalEditActivityTypeOption21": "Tennis",
+ "modalEditActivityTypeOption22": "Ping pong",
+ "modalEditActivityTypeOption23": "Badminton",
+ "modalEditActivityTypeOption24": "Squash",
+ "modalEditActivityTypeOption25": "Racquetball",
+ "modalEditActivityTypeOption26": "Pickleball",
+ "modalEditActivityTypeOption27": "Ciclismo pendolare",
+ "modalEditActivityTypeOption28": "Ciclismo al coperto",
+ "modalEditActivityTypeOption29": "Ciclismo su terreno misto",
+ "modalEditActivityTypeOption30": "Windsurf",
+ "modalEditActivityTypeOption31": "Camminata al coperto",
+ "modalEditActivityTypeOption32": "Stand up paddle",
+ "modalEditActivityTypeOption33": "Surf",
+ "modalEditActivityTypeOption34": "Corsa su pista",
+ "modalEditActivityTypeOption35": "E-bike",
+ "modalEditActivityTypeOption36": "E-MTB",
+ "modalEditActivityTypeOption37": "Pattinaggio su ghiaccio",
+ "modalEditActivityTypeOption38": "Calcio",
+ "modalEditActivityTypeOption39": "Padel",
+ "modalEditActivityTypeOption40": "Corsa su tapis roulant",
+ "modalEditActivityVisibilityLabel": "Visibilità",
+ "modalEditActivityVisibilityOption0": "Pubblico",
+ "modalEditActivityVisibilityOption1": "Follower",
+ "modalEditActivityVisibilityOption2": "Privato",
+ "modalEditActivityIsHiddenLabel": "È nascosta",
+ "modalEditActivityHideStartTimeLabel": "Nascondi ora di inizio",
+ "modalEditActivityHideLocationLabel": "Nascondi località",
+ "modalEditActivityHideMapLabel": "Nascondi mappa",
+ "modalEditActivityHideHrLabel": "Nascondi frequenza cardiaca",
+ "modalEditActivityHidePowerLabel": "Nascondi potenza",
+ "modalEditActivityHideCadenceLabel": "Nascondi cadenza",
+ "modalEditActivityHideElevationLabel": "Nascondi elevazione",
+ "modalEditActivityHideSpeedLabel": "Nascondi velocità",
+ "modalEditActivityHidePaceLabel": "Nascondi ritmo",
+ "modalEditActivityHideLapsLabel": "Nascondi giri",
+ "modalEditActivityHideWorkoutSetsStepsLabel": "Nascondi serie/passaggi allenamento",
+ "modalEditActivityHideGearLabel": "Nascondi attrezzatura",
+ "successActivityEdit": "Attività modificata con successo",
+ "errorActivityEdit": "Errore nella modifica dell'attività"
+}
diff --git a/frontend/app/src/i18n/it/components/followers/followersListComponent.json b/frontend/app/src/i18n/it/components/followers/followersListComponent.json
new file mode 100644
index 000000000..d57f826a5
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/followers/followersListComponent.json
@@ -0,0 +1,16 @@
+{
+ "requestAccepted": "Accettato",
+ "requestPending": "Richiesta in sospeso",
+ "followingModalTitle": "Elimina seguito",
+ "followingModalBody": "Sei sicuro di voler eliminare l'utente seguito ",
+ "followerModalTitle": "Elimina follower",
+ "followerModalBody": "Sei sicuro di voler eliminare l'utente follower ",
+ "followerAcceptModalTitle": "Accetta richiesta utente",
+ "followerAcceptModalBody": "Sei sicuro di voler accettare la richiesta di seguito dall'utente ",
+ "followerDeclineModalTitle": "Rifiuta richiesta utente ",
+ "followerDeclineModalBody": "Sei sicuro di voler rifiutare la richiesta di seguito dall'utente ",
+ "errorDeleteFollowing": "Errore nell'eliminazione del seguito",
+ "errorDeleteFollower": "Errore nell'eliminazione del follower",
+ "errorUpdateFollower": "Errore nell'aggiornamento del follower",
+ "errorFetchingFollowersDetails": "Errore nel recupero dei dettagli dei follower"
+}
diff --git a/frontend/app/src/i18n/it/components/gears/gearComponentAddEditModalComponent.json b/frontend/app/src/i18n/it/components/gears/gearComponentAddEditModalComponent.json
new file mode 100644
index 000000000..12cee9580
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/gears/gearComponentAddEditModalComponent.json
@@ -0,0 +1,19 @@
+{
+ "addEditGearComponentModalAddTitle": "Aggiungi componente attrezzatura",
+ "addEditGearComponentModalEditTitle": "Modifica componente attrezzatura",
+ "addEditGearComponentModalAddEditTypeLabel": "Tipo",
+ "addEditGearComponentModalAddEditBrandLabel": "Marca",
+ "addEditGearComponentModalAddEditModelLabel": "Modello",
+ "addEditGearComponentModalAddEditPurchaseDateLabel": "Data di acquisto",
+ "addEditGearComponentModalAddEditExpectedDistanceLabel": "Distanza prevista",
+ "addEditGearComponentModalAddEditExpectedTimeLabel": "Tempo previsto",
+ "addEditGearComponentModalAddEditPurchaseValueLabel": "Valore d'acquisto",
+ "addEditGearComponentModalAddEditRetiredDateLabel": "Data di ritiro",
+ "addEditGearComponentModalAddEditIsActiveLabel": "È attivo",
+ "successGearComponentAdded": "Componente attrezzatura aggiunto con successo",
+ "successGearComponentEdited": "Componente attrezzatura modificato con successo",
+ "errorGearComponentAdd": "Errore nell'aggiunta del componente attrezzatura",
+ "gearComponentListGearEditSuccessMessage": "Componente attrezzatura modificato con successo",
+ "gearComponentListGearEditErrorMessage": "Errore nella modifica del componente attrezzatura",
+ "retiredDateAfterPurchaseDateError": "La data di ritiro deve essere successiva alla data d'acquisto"
+}
diff --git a/frontend/app/src/i18n/it/components/gears/gearComponentListComponent.json b/frontend/app/src/i18n/it/components/gears/gearComponentListComponent.json
new file mode 100644
index 000000000..9d76a0ffc
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/gears/gearComponentListComponent.json
@@ -0,0 +1,79 @@
+{
+ "gearComponentBackTire": "Pneumatico posteriore",
+ "gearComponentFrontTire": "Pneumatico anteriore",
+ "gearComponentBackTube": "Camera d'aria posteriore",
+ "gearComponentFrontTube": "Camera d'aria anteriore",
+ "gearComponentBackWheelValve": "Valvola posteriore",
+ "gearComponentFrontWheelValve": "Valvola anteriore",
+ "gearComponentBackTubelessSealant": "Sigillante tubeless posteriore",
+ "gearComponentBackTubelessRimTape": "Nastro cerchio tubeless posteriore",
+ "gearComponentFrontTubelessSealant": "Sigillante tubeless anteriore",
+ "gearComponentFrontTubelessRimTape": "Nastro cerchio tubeless anteriore",
+ "gearComponentBackWheel": "Ruota posteriore",
+ "gearComponentFrontWheel": "Ruota anteriore",
+ "gearComponentBackBreakRotor": "Disco freno posteriore",
+ "gearComponentFrontBreakRotor": "Disco freno anteriore",
+ "gearComponentBackBreakPads": "Pastiglie freno posteriori",
+ "gearComponentFrontBreakPads": "Pastiglie freno anteriori",
+ "gearComponentBackBreakOil": "Olio freno posteriore",
+ "gearComponentFrontBreakOil": "Olio freno anteriore",
+ "gearComponentCrankLeftPowerMeter": "Misuratore di potenza pedivella sinistra",
+ "gearComponentCrankRightPowerMeter": "Misuratore di potenza pedivella destra",
+ "gearComponentCranksetPowerMeter": "Misuratore di potenza guarnitura",
+ "gearComponentPedalsLeftPowerMeter": "Misuratore di potenza pedale sinistro",
+ "gearComponentPedalsRightPowerMeter": "Misuratore di potenza pedale destro",
+ "gearComponentPedalsPowerMeter": "Misuratore di potenza pedali",
+ "gearComponentPedals": "Pedali",
+ "gearComponentCrankset": "Guarnitura",
+ "gearComponentCassette": "Cassetta",
+ "gearComponentChain": "Catena",
+ "gearComponentFrontShifter": "Cambio anteriore",
+ "gearComponentFrontDerailleur": "Deragliatore anteriore",
+ "gearComponentRearShifter": "Cambio posteriore",
+ "gearComponentRearDerailleur": "Deragliatore posteriore",
+ "gearComponentBottomBracket": "Movimento centrale",
+ "gearComponentBottleCage": "Portaborraccia",
+ "gearComponentHandlebar": "Manubrio",
+ "gearComponentHeadset": "Serie sterzo",
+ "gearComponentComputerMount": "Supporto computer",
+ "gearComponentHandlebarTape": "Nastro manubrio",
+ "gearComponentGrips": "Manopole",
+ "gearComponentStem": "Attacco manubrio",
+ "gearComponentSeatpost": "Reggisella",
+ "gearComponentSaddle": "Sella",
+ "gearComponentFork": "Forcella",
+ "gearComponentFrame": "Telaio",
+ "gearComponentCleats": "Tacchetti",
+ "gearComponentInsoles": "Solette",
+ "gearComponentLaces": "Lacci",
+ "gearComponentBaseGrip": "Impugnatura di base",
+ "gearComponentBumpers": "Paraurti",
+ "gearComponentGrommets": "Occhielli",
+ "gearComponentOverGrip": "Overgrip",
+ "gearComponentStrings": "Corde",
+ "gearComponentSail": "Vela",
+ "gearComponentBoard": "Tavola",
+ "gearComponentMast": "Albero",
+ "gearComponentBoom": "Boma",
+ "gearComponentMastExtension": "Prolunga albero",
+ "gearComponentMastBase": "Base albero",
+ "gearComponentMastUniversalJoint": "Giunto universale albero",
+ "gearComponentFin": "Pinna",
+ "gearComponentFootstraps": "Cinghie piede",
+ "gearComponentHarnessLines": "Linee trapezio",
+ "gearComponentRiggingLines": "Linee sartiame",
+ "gearComponentFootpad": "Cuscinetto piede",
+ "gearComponentImpactVest": "Giubbotto protettivo",
+ "gearComponentLifeguardVest": "Giubbotto salvataggio",
+ "gearComponentHelmet": "Casco",
+ "gearComponentWing": "Ala",
+ "gearComponentFrontFoil": "Foil anteriore",
+ "gearComponentStabilizer": "Stabilizzatore",
+ "gearComponentFuselage": "Fusoliera",
+ "gearComponentOf": " di ",
+ "gearComponentListGearComponentIsInactiveBadge": "Inattivo",
+ "gearComponentListModalDeleteGearComponentTitle": "Elimina componente attrezzatura",
+ "gearComponentListModalDeleteGearComponentBody": "Sei sicuro di voler eliminare il componente attrezzatura ",
+ "gearComponentListGearDeleteSuccessMessage": "Componente attrezzatura eliminato con successo",
+ "gearComponentListGearDeleteErrorMessage": "Errore nell'eliminazione del componente attrezzatura"
+}
diff --git a/frontend/app/src/i18n/it/components/gears/gearsAddEditGearModalComponent.json b/frontend/app/src/i18n/it/components/gears/gearsAddEditGearModalComponent.json
new file mode 100644
index 000000000..75fd2b8c8
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/gears/gearsAddEditGearModalComponent.json
@@ -0,0 +1,29 @@
+{
+ "addEditGearModalEditTitle": "Modifica attrezzatura",
+ "addEditGearModalAddTitle": "Aggiungi attrezzatura",
+ "addEditGearModalAddBrandLabel": "Marca",
+ "addEditGearModalAddModelLabel": "Modello",
+ "addEditGearModalAddNicknameLabel": "Soprannome",
+ "addEditGearModalAddTypeLabel": "Tipo attrezzatura",
+ "addEditGearModalAddTypeOption1": "Bici",
+ "addEditGearModalAddTypeOption2": "Scarpe",
+ "addEditGearModalAddTypeOption3": "Muta",
+ "addEditGearModalAddTypeOption4": "Racchetta",
+ "addEditGearModalAddTypeOption5": "Sci",
+ "addEditGearModalAddTypeOption6": "Snowboard",
+ "addEditGearModalAddTypeOption7": "Windsurf",
+ "addEditGearModalAddTypeOption8": "Tavola per sport acquatici",
+ "addEditGearModalAddDateLabel": "Data di creazione",
+ "addEditGearModalAddIsActiveLabel": "È attiva",
+ "addEditGearModalAddIsActiveOption1": "Attiva",
+ "addEditGearModalAddIsActiveOption0": "Inattiva",
+ "addEditGearModalAddIsInitialKmsLabel": "Km iniziali",
+ "addEditGearModalAddIsInitialMilesLabel": "Miglia iniziali",
+ "addEditGearModalAddEditPurchaseValueLabel": "Valore d'acquisto",
+ "errorNicknameAlreadyExistsFeedback": "Il soprannome esiste già",
+ "errorNotPossibleToGetGearByNickname": "Non è stato possibile ottenere l'attrezzatura per soprannome per la validazione",
+ "successGearAdded": "Attrezzatura aggiunta con successo",
+ "errorGearAdd": "Errore nell'aggiunta dell'attrezzatura",
+ "successGearEdited": "Attrezzatura modificata con successo",
+ "errorGearEdit": "Errore nella modifica dell'attrezzatura"
+}
diff --git a/frontend/app/src/i18n/it/components/gears/gearsListComponent.json b/frontend/app/src/i18n/it/components/gears/gearsListComponent.json
new file mode 100644
index 000000000..c49ce1bc2
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/gears/gearsListComponent.json
@@ -0,0 +1,16 @@
+{
+ "gearListTypeLabel": "Tipo",
+ "gearListTypeOption1": "Bici",
+ "gearListTypeOption2": "Scarpe",
+ "gearListTypeOption3": "Muta",
+ "gearListTypeOption4": "Racchetta",
+ "gearListTypeOption5": "Sci",
+ "gearListTypeOption6": "Snowboard",
+ "gearListTypeOption7": "Windsurf",
+ "gearListTypeOption8": "Tavola per sport acquatici",
+ "gearListGearIsInactiveBadge": "Inattiva",
+ "gearListModalDeleteGearTitle": "Elimina attrezzatura",
+ "gearListModalDeleteGearBody": "Sei sicuro di voler eliminare l'attrezzatura ",
+ "gearListGearDeleteSuccessMessage": "Attrezzatura eliminata con successo",
+ "gearListGearDeleteErrorMessage": "Errore nell'eliminazione dell'attrezzatura"
+}
diff --git a/frontend/app/src/i18n/it/components/health/healthDashboardZoneComponent.json b/frontend/app/src/i18n/it/components/health/healthDashboardZoneComponent.json
new file mode 100644
index 000000000..6bf485bc8
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/health/healthDashboardZoneComponent.json
@@ -0,0 +1,13 @@
+{
+ "weight": "Peso",
+ "noWeightData": "Nessun dato sul peso",
+ "noWeightTarget": "Nessun obiettivo di peso",
+ "noHeightDefined": "Nessuna altezza definita per l'utente",
+ "bmi": "IMC",
+ "bmiUnderweight": "Sottopeso",
+ "bmiNormalWeight": "Peso normale",
+ "bmiOverweight": "Sovrappeso",
+ "bmiObesityClass1": "Obesità (Classe 1)",
+ "bmiObesityClass2": "Obesità (Classe 2)",
+ "bmiObesityClass3": "Obesità estrema (Classe 3)"
+}
diff --git a/frontend/app/src/i18n/it/components/health/healthSideBarComponent.json b/frontend/app/src/i18n/it/components/health/healthSideBarComponent.json
new file mode 100644
index 000000000..b3f7a9ee6
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/health/healthSideBarComponent.json
@@ -0,0 +1,4 @@
+{
+ "dashboardSection": "Dashboard",
+ "weightSection": "Peso"
+}
diff --git a/frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightAddEditModalComponent.json b/frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightAddEditModalComponent.json
new file mode 100644
index 000000000..63a317dcc
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightAddEditModalComponent.json
@@ -0,0 +1,8 @@
+{
+ "addWeightModalTitle": "Aggiungi peso",
+ "editWeightModalTitle": "Modifica peso",
+ "addWeightWeightLabel": "Peso",
+ "addWeightDateLabel": "Data",
+ "successAddWeight": "Peso aggiunto",
+ "errorAddWeight": "Errore nell'aggiunta del peso"
+}
diff --git a/frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightListComponent.json b/frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightListComponent.json
new file mode 100644
index 000000000..9e5ec4ce6
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/health/healthWeightZone/healthWeightListComponent.json
@@ -0,0 +1,9 @@
+{
+ "labelGarminConnect": "Garmin Connect",
+ "modalDeleteWeightTitle": "Elimina peso",
+ "modalDeleteWeightBody": "Sei sicuro di voler eliminare la voce di peso per ",
+ "successDeleteWeight": "Peso eliminato",
+ "errorDeleteWeight": "Non è stato possibile eliminare la voce di peso",
+ "successEditWeight": "Peso modificato",
+ "errorEditWeight": "Non è stato possibile modificare la voce di peso"
+}
diff --git a/frontend/app/src/i18n/it/components/health/healthWeightZoneComponent.json b/frontend/app/src/i18n/it/components/health/healthWeightZoneComponent.json
new file mode 100644
index 000000000..710a5b913
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/health/healthWeightZoneComponent.json
@@ -0,0 +1,6 @@
+{
+ "buttonAddWeight": "Aggiungi peso",
+ "labelNumberOfHealthDataWeight1": "C'è un totale di ",
+ "labelNumberOfHealthDataWeight2": " misurazioni di peso inserite (",
+ "labelNumberOfHealthDataWeight3": " caricate):"
+}
diff --git a/frontend/app/src/i18n/it/components/navbar/navbarBottomMobileComponent.json b/frontend/app/src/i18n/it/components/navbar/navbarBottomMobileComponent.json
new file mode 100644
index 000000000..ea59de3b5
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/navbar/navbarBottomMobileComponent.json
@@ -0,0 +1,7 @@
+{
+ "home": "Home",
+ "gear": "Attrezzatura",
+ "health": "Salute",
+ "alerts": "Avvisi",
+ "menu": "Menu"
+}
diff --git a/frontend/app/src/i18n/it/components/navbar/navbarComponent.json b/frontend/app/src/i18n/it/components/navbar/navbarComponent.json
new file mode 100644
index 000000000..08451fbab
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/navbar/navbarComponent.json
@@ -0,0 +1,13 @@
+{
+ "search": "Cerca",
+ "activities": "Attività",
+ "activitiesList": "Lista",
+ "summary": "Riepilogo",
+ "gear": "Attrezzatura",
+ "health": "Salute",
+ "profile": "Profilo",
+ "settings": "Impostazioni",
+ "login": "Accedi",
+ "logout": "Esci",
+ "errorLogout": "Errore durante la disconnessione"
+}
diff --git a/frontend/app/src/i18n/it/components/noItemsFoundComponent.json b/frontend/app/src/i18n/it/components/noItemsFoundComponent.json
new file mode 100644
index 000000000..58ea957eb
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/noItemsFoundComponent.json
@@ -0,0 +1,4 @@
+{
+ "title": "Ops...",
+ "subtitle": "Nessun record trovato"
+}
diff --git a/frontend/app/src/i18n/it/components/notifications/adminNewSignUpApprovalRequestNotificationComponent.json b/frontend/app/src/i18n/it/components/notifications/adminNewSignUpApprovalRequestNotificationComponent.json
new file mode 100644
index 000000000..78c84b9f8
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/notifications/adminNewSignUpApprovalRequestNotificationComponent.json
@@ -0,0 +1,4 @@
+{
+ "title": "Nuova richiesta di registrazione",
+ "subTitle": " ha richiesto la registrazione"
+}
diff --git a/frontend/app/src/i18n/it/components/notifications/navbarNotificationsComponent.json b/frontend/app/src/i18n/it/components/notifications/navbarNotificationsComponent.json
new file mode 100644
index 000000000..6f66266ff
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/notifications/navbarNotificationsComponent.json
@@ -0,0 +1,6 @@
+{
+ "errorFetchingNotificationsPagination": "Errore nel recupero delle notifiche con paginazione",
+ "errorFetchingNotificationsNumber": "Errore nel recupero del numero di notifiche",
+ "errorFetchingNotificationById": "Errore nel recupero della notifica per ID",
+ "errorFetchingMessageFromWebSocket": "Errore nel recupero del messaggio dal WebSocket"
+}
diff --git a/frontend/app/src/i18n/it/components/notifications/newAcceptedRequestNotificationComponent.json b/frontend/app/src/i18n/it/components/notifications/newAcceptedRequestNotificationComponent.json
new file mode 100644
index 000000000..b8ed3a086
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/notifications/newAcceptedRequestNotificationComponent.json
@@ -0,0 +1,4 @@
+{
+ "newAcceptedRequestTitle": "Nuova richiesta accettata",
+ "newAcceptedRequestSubTitle": " ha accettato la tua richiesta di seguito"
+}
diff --git a/frontend/app/src/i18n/it/components/notifications/newActivityDuplicateStartTimeNotificationComponent.json b/frontend/app/src/i18n/it/components/notifications/newActivityDuplicateStartTimeNotificationComponent.json
new file mode 100644
index 000000000..a29bc8b27
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/notifications/newActivityDuplicateStartTimeNotificationComponent.json
@@ -0,0 +1,4 @@
+{
+ "newActivityDuplicateStartTimeTitle": "Nuova attività con ora di inizio duplicata",
+ "newActivityDuplicateStartTimeSubTitle": "È stata aggiunta una nuova attività con un'ora di inizio che si sovrappone a un'attività esistente. Controlla per favore"
+}
diff --git a/frontend/app/src/i18n/it/components/notifications/newActivityNotificationComponent.json b/frontend/app/src/i18n/it/components/notifications/newActivityNotificationComponent.json
new file mode 100644
index 000000000..76b7f07c2
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/notifications/newActivityNotificationComponent.json
@@ -0,0 +1,4 @@
+{
+ "newActivityTitle": "Nuova attività",
+ "newActivitySubTitle": "Ottimo lavoro! È stata aggiunta una nuova attività!"
+}
diff --git a/frontend/app/src/i18n/it/components/notifications/newFollowerRequestNotificationComponent.json b/frontend/app/src/i18n/it/components/notifications/newFollowerRequestNotificationComponent.json
new file mode 100644
index 000000000..4b6a5b021
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/notifications/newFollowerRequestNotificationComponent.json
@@ -0,0 +1,4 @@
+{
+ "newFollowerRequestTitle": "Nuova richiesta di seguito",
+ "newFollowerRequestSubTitle": "Hai una nuova richiesta di seguito da "
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsLanguageSwitcherComponent.json b/frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsLanguageSwitcherComponent.json
new file mode 100644
index 000000000..e7f1ddc33
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsLanguageSwitcherComponent.json
@@ -0,0 +1,3 @@
+{
+ "formLabel": "Lingua"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsThemeSwitcherComponent.json b/frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsThemeSwitcherComponent.json
new file mode 100644
index 000000000..76325d76f
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsGeneralZone/settingsThemeSwitcherComponent.json
@@ -0,0 +1,6 @@
+{
+ "formLabel": "Tema",
+ "themeLight": "Chiaro",
+ "themeDark": "Scuro",
+ "themeAuto": "Automatico"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsImportZoneComponent.json b/frontend/app/src/i18n/it/components/settings/settingsImportZoneComponent.json
new file mode 100644
index 000000000..4c484ce67
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsImportZoneComponent.json
@@ -0,0 +1,18 @@
+{
+ "bulkImportIntegrationTitle": "Importazione massiva",
+ "bulkImportIntegrationBody": "Importa attività in massa da file (nella cartella data/activity_files/bulk_import)",
+ "buttonBulkImport": "Importa attività",
+ "loadingMessageBulkImport": "Importazione attività da file...",
+ "errorMessageUnableToImportActivities": "Si è verificato un errore durante l'importazione delle attività",
+ "importTitle": "Importa",
+ "stravaGearImportTitle": "Importazione attrezzatura Strava",
+ "stravaGearImportBody": "Importa attrezzatura da un'esportazione massiva Strava (nella cartella data/activity_files/bulk_import)",
+ "stravaGearImportbuttonBikes": "Importa bici Strava",
+ "loadingMessageStravaBikesImport": "Importazione bici Strava da file...",
+ "successMessageStravaBikesImport": "Bici Strava importate con successo",
+ "errorMessageUnableToImportBikes": "Si è verificato un errore durante l'importazione delle bici Strava",
+ "stravaImportbuttonShoes": "Importa scarpe Strava",
+ "loadingMessageStravaShoesImport": "Importazione scarpe Strava da file...",
+ "successMessageStravaShoesImport": "Scarpe Strava importate con successo",
+ "errorMessageUnableToImportShoes": "Si è verificato un errore durante l'importazione delle scarpe Strava"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsIntegrationsZone/garminConnectLoginModalComponent.json b/frontend/app/src/i18n/it/components/settings/settingsIntegrationsZone/garminConnectLoginModalComponent.json
new file mode 100644
index 000000000..777d14a6e
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsIntegrationsZone/garminConnectLoginModalComponent.json
@@ -0,0 +1,14 @@
+{
+ "garminConnectAuthModalTitle": "Collega account Garmin Connect",
+ "garminConnectAuthModalUsernameLabel": "Email Garmin Connect",
+ "garminConnectAuthModalUsernamePlaceholder": "Email Garmin Connect",
+ "garminConnectAuthModalPasswordLabel": "Password Garmin Connect",
+ "garminConnectAuthModalPasswordPlaceholder": "Password Garmin Connect",
+ "garminConnectAuthModalMfaCodeLabel": "Codice MFA",
+ "garminConnectAuthModalMfaCodePlaceholder": "Codice MFA",
+ "buttonSubmitMfaCode": "Invia codice MFA",
+ "garminConnectAuthModalLoginButton": "Accedi",
+ "processingMessageLinkGarminConnect": "Collegamento account Garmin Connect...",
+ "successMessageLinkGarminConnect": "Account Garmin Connect collegato",
+ "errorMessageUnableToLinkGarminConnect": "Impossibile collegare l'account Garmin Connect"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsIntegrationsZoneComponent.json b/frontend/app/src/i18n/it/components/settings/settingsIntegrationsZoneComponent.json
new file mode 100644
index 000000000..ad63484db
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsIntegrationsZoneComponent.json
@@ -0,0 +1,47 @@
+{
+ "stravaIntegrationTitle": "Strava",
+ "stravaIntegrationBody": "Strava è un servizio internet americano per il tracciamento dell'esercizio fisico che incorpora funzionalità di social network.",
+ "buttonConnect": "Connetti",
+ "buttonDropdownOptions": "Opzioni",
+ "modalRetrieveActivitiesByDaysTitle": "Recupera attività per giorni",
+ "modalRetrieveActivitiesByDateRangeTitle": "Recupera attività per intervallo di date",
+ "modalRetrieveActivitiesByDaysLabel": "Giorni",
+ "modalRetrieveActivitiesByDaysPlaceholder": "Giorni",
+ "modalRetrieveButton": "Recupera",
+ "buttonRetrieveGear": "Recupera attrezzatura",
+ "buttonRelink": "Ricollega",
+ "buttonUnlink": "Scollega",
+ "modalRetrieveClientIdTitle": "Connetti Strava",
+ "modalRetrieveClientIdLabel": "ID Client",
+ "modalRetrieveClientSecretLabel": "Secret client",
+ "errorMessageUnableToLinkStrava": "Impossibile collegare l'account Strava",
+ "errorMessageUnableToUnsetStravaClientSettings": "Impossibile rimuovere le impostazioni del client e dello stato Strava dopo l'errore di collegamento",
+ "successMessageStravaAccountLinked": "Account Strava collegato",
+ "errorMessageUnableToUnSetStravaState": "Impossibile rimuovere lo stato Strava",
+ "errorMessageUnableToGetStravaActivities": "Impossibile ottenere le attività Strava",
+ "errorMessageUnableToGetStravaGear": "Impossibile ottenere l'attrezzatura Strava",
+ "loadingMessageRetrievingStravaActivities": "Recupero attività Strava",
+ "loadingMessageRetrievingStravaGear": "Recupero attrezzatura Strava",
+ "processingMessageUnlinkStrava": "Scollegamento account Strava...",
+ "successMessageStravaUnlinked": "Account Strava scollegato",
+ "errorMessageUnableToUnlinkStrava": "Impossibile scollegare l'account Strava",
+ "modalUnlinkStravaTitle": "Scollega Strava",
+ "modalUnlinkStravaBody": "Sei sicuro di voler scollegare il tuo account Strava? Lo scollegamento rimuoverà tutte le attività e l'attrezzatura Strava da Endurain.",
+ "garminConnectIntegrationTitle": "Garmin Connect",
+ "garminConnectIntegrationBody": "Garmin Connect è una piattaforma per attività di salute e fitness per utenti di dispositivi Garmin",
+ "loadingMessageRetrievingGarminConnectActivities": "Recupero attività Garmin Connect",
+ "errorMessageUnableToGetGarminConnectActivitiesDays": "Impossibile ottenere le attività Garmin Connect per giorni",
+ "errorMessageUnableToGetGarminConnectActivitiesDataRange": "Impossibile ottenere le attività Garmin Connect usando l'intervallo di date",
+ "modalUnlinkGarminConnectTitle": "Scollega Garmin Connect",
+ "modalUnlinkGarminConnectBody": "Sei sicuro di voler scollegare il tuo account Garmin Connect?",
+ "processingMessageUnlinkGarminConnect": "Scollegamento account Garmin Connect...",
+ "successMessageGarminConnectUnlinked": "Account Garmin Connect scollegato",
+ "errorMessageUnableToUnlinkGarminConnect": "Impossibile scollegare l'account Garmin Connect",
+ "errorMessageUnableToGetGarminConnectGear": "Impossibile ottenere l'attrezzatura Garmin Connect",
+ "loadingMessageRetrievingGarminConnectGear": "Recupero attrezzatura Garmin Connect",
+ "modalRetrieveHealthDataByDaysTitle": "Recupera dati sulla salute per giorni",
+ "modalRetrieveHealthDataByDateRangeTitle": "Recupera dati sulla salute per intervallo di date",
+ "errorMessageUnableToGetGarminConnectHealthDataDays": "Impossibile ottenere i dati sulla salute Garmin Connect per giorni",
+ "errorMessageUnableToGetGarminConnectHealthDataDateRange": "Impossibile ottenere i dati sulla salute Garmin Connect usando l'intervallo di date",
+ "loadingMessageRetrievingGarminConnectHealthData": "Recupero dati sulla salute Garmin Connect"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsSecurityZoneComponent.json b/frontend/app/src/i18n/it/components/settings/settingsSecurityZoneComponent.json
new file mode 100644
index 000000000..be85b64a1
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsSecurityZoneComponent.json
@@ -0,0 +1,31 @@
+{
+ "subtitleChangePassword": "Cambia password",
+ "changeUserPasswordBodyLabel": "Cambia password per l'utente ",
+ "changeUserPasswordPasswordLabel": "Nuova password",
+ "changeUserPasswordPasswordConfirmationLabel": "Conferma nuova password",
+ "changeUserPasswordFeedbackLabel": "La password non soddisfa i requisiti",
+ "changeUserPasswordPasswordsDoNotMatchFeedbackLabel": "Le password non corrispondono",
+ "subtitleMFA": "Autenticazione a più fattori (MFA)",
+ "mfaDisabledDescription": "MFA è attualmente disabilitato. Abilitalo per aggiungere un ulteriore livello di sicurezza al tuo account.",
+ "mfaEnabledDescription": "MFA è attualmente abilitato. Il tuo account è protetto con l'autenticazione a due fattori.",
+ "enableMFAButton": "Abilita MFA",
+ "disableMFAButton": "Disabilita MFA",
+ "mfaSetupModalTitle": "Configura autenticazione a più fattori",
+ "mfaSetupInstructions": "Scansiona il codice QR qui sotto con la tua app di autenticazione (Google Authenticator, Authy, ecc.) o inserisci manualmente il segreto:",
+ "mfaSecretLabel": "Chiave segreta",
+ "mfaVerificationCodeLabel": "Codice di verifica",
+ "mfaVerificationCodePlaceholder": "Inserisci il codice a 6 cifre",
+ "mfaDisableModalTitle": "Disabilita autenticazione a più fattori",
+ "mfaDisableConfirmation": "Sei sicuro di voler disabilitare MFA? Questo ridurrà la sicurezza del tuo account.",
+ "mfaEnabledSuccess": "MFA abilitato con successo",
+ "mfaDisabledSuccess": "MFA disabilitato con successo",
+ "errorLoadMFAStatus": "Errore nel caricamento dello stato MFA",
+ "errorSetupMFA": "Errore nella configurazione di MFA",
+ "errorEnableMFA": "Errore nell'abilitazione di MFA",
+ "errorDisableMFA": "Errore nella disabilitazione di MFA",
+ "subtitleMySessions": "Le mie sessioni",
+ "userChangePasswordSuccessMessage": "Password cambiata con successo",
+ "userChangePasswordErrorMessage": "Errore nel cambio password",
+ "successDeleteSession": "Sessione eliminata con successo",
+ "errorDeleteSession": "Errore nell'eliminazione della sessione"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsServerSettingsZoneComponent.json b/frontend/app/src/i18n/it/components/settings/settingsServerSettingsZoneComponent.json
new file mode 100644
index 000000000..529a81553
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsServerSettingsZoneComponent.json
@@ -0,0 +1,29 @@
+{
+ "defaultsTitle": "Predefiniti",
+ "unitsLabel": "Unità predefinite",
+ "unitsMetric": "Metriche",
+ "unitsImperial": "Imperiali",
+ "currencyLabel": "Valuta predefinita",
+ "numRecordsLabel": "Numero di record per pagina",
+ "signupTitle": "Registrazione",
+ "adminApprovalLabel": "Approvazione amministratore",
+ "emailConfirmationLabel": "Conferma email",
+ "publicShareableLinksLabel": "Link condivisibili pubblici",
+ "enabledLabel": "Abilitato",
+ "serverSettingsPublicShareableLinksEnabledWarningAlert": "L'abilitazione renderà tutte le attività pubblicate visibili senza autenticazione.",
+ "publicShareableLinksShowUserInfoLabel": "Mostra info utente",
+ "serverSettingsPublicShareableLinksShowUserWarningAlert": "L'abilitazione visualizzerà le informazioni dell'utente su tutti i link pubblici",
+ "photosLabel": "Foto",
+ "loginPhotoLabel": "Foto di login",
+ "buttonAddPhoto": "Aggiungi foto",
+ "logonPhotoAddLabel": "Foto della pagina di login (.png) con dimensione di 1000x1000 pixel.",
+ "processingPhotoUpload": "Elaborazione caricamento foto",
+ "successPhotoUpload": "Foto caricata con successo",
+ "buttonDeleteLoginPhoto": "Elimina foto di login",
+ "modalDeleteLoginPhotoBody": "Sei sicuro di voler eliminare la foto di login?",
+ "processingPhotoDelete": "Elaborazione eliminazione foto",
+ "successPhotoDelete": "Foto eliminata con successo",
+ "successUpdateServerSettings": "Impostazioni server aggiornate con successo",
+ "errorUpdateServerSettings": "Errore nell'aggiornamento delle impostazioni server",
+ "errorFetchingServerSettings": "Errore nel recupero delle impostazioni server"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsSideBarComponent.json b/frontend/app/src/i18n/it/components/settings/settingsSideBarComponent.json
new file mode 100644
index 000000000..3cdcf5bfe
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsSideBarComponent.json
@@ -0,0 +1,10 @@
+{
+ "usersSection": "Utenti",
+ "serverSettingsSection": "Impostazioni server",
+ "generalSection": "Generale",
+ "myProfileSection": "Il mio profilo",
+ "myGoals": "I miei obiettivi",
+ "securitySection": "Sicurezza",
+ "integrationsSection": "Integrazioni",
+ "importSection": "Importa"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUserGoals.json b/frontend/app/src/i18n/it/components/settings/settingsUserGoals.json
new file mode 100644
index 000000000..aa8c37e07
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUserGoals.json
@@ -0,0 +1,7 @@
+{
+ "addNewGoal": "Aggiungi nuovo obiettivo",
+ "labelNumberOfGoals1": "Hai ",
+ "labelNumberOfGoals2": " obiettivo/i impostati:",
+ "successGoalDeleted": "Obiettivo eliminato con successo",
+ "errorFetchingGoals": "Errore nel recupero degli obiettivi"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsAddEditGoalModalComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsAddEditGoalModalComponent.json
new file mode 100644
index 000000000..ffe737c0b
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsAddEditGoalModalComponent.json
@@ -0,0 +1,30 @@
+{
+ "addEditGoalModalAddTitle": "Aggiungi obiettivo",
+ "addEditGoalModalEditTitle": "Modifica obiettivo",
+ "addEditGoalModalGoalIntervalLabel": "Intervallo",
+ "intervalOption1": "Giornaliero",
+ "intervalOption2": "Settimanale",
+ "intervalOption3": "Mensile",
+ "intervalOption4": "Annuale",
+ "addEditGoalModalGoalActivityTypeLabel": "Tipo di attività",
+ "activityTypeRun": "Corsa",
+ "activityTypeBike": "Ciclismo",
+ "activityTypeSwim": "Nuoto",
+ "activityTypeWalk": "Camminata",
+ "activityTypeStrength": "Forza",
+ "addEditGoalModalGoalTypeLabel": "Tipo",
+ "addEditGoalModalCaloriesLabel": "Calorie",
+ "addEditGoalModalCaloriesPlaceholder": "Calorie target",
+ "addEditGoalModalActivitiesNumberLabel": "Numero di attività",
+ "addEditGoalModalActivitiesNumberPlaceholder": "Numero di attività target",
+ "addEditGoalModalDistanceLabel": "Distanza",
+ "addEditGoalModalDistancePlaceholder": "Distanza target",
+ "addEditGoalModalElevationLabel": "Elevazione",
+ "addEditGoalModalElevationPlaceholder": "Elevazione target",
+ "addEditGoalModalDurationLabel": "Durata",
+ "addEditGoalModalDurationPlaceholder": "Durata target (es: 1.5 uguale 1h30m)",
+ "addEditGoalModalSuccessAddGoal": "Obiettivo aggiunto con successo",
+ "addEditGoalModalErrorAddGoal": "Errore nell'aggiunta dell'obiettivo",
+ "addEditGoalModalSuccessEditGoal": "Obiettivo modificato con successo",
+ "addEditGoalModalErrorEditGoal": "Errore nella modifica dell'obiettivo"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsListComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsListComponent.json
new file mode 100644
index 000000000..76965fcb7
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUserGoalsZone/goalsListComponent.json
@@ -0,0 +1,5 @@
+{
+ "modalDeleteGoalTitle": "Elimina obiettivo",
+ "modalDeleteGoalBody": "Sei sicuro di voler eliminare l'obiettivo con ID ",
+ "goalDeleteErrorMessage": "Errore nell'eliminazione dell'obiettivo"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUserProfileZoneComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUserProfileZoneComponent.json
new file mode 100644
index 000000000..c9ab62497
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUserProfileZoneComponent.json
@@ -0,0 +1,89 @@
+{
+ "titleProfileInfo": "Il mio profilo",
+ "buttonDeleteProfilePhoto": "Elimina",
+ "modalDeleteProfilePhotoBody": "Sei sicuro di voler eliminare la foto del profilo?",
+ "buttonEditProfile": "Profilo",
+ "usernameLabel": "Nome utente",
+ "emailLabel": "Email",
+ "cityLabel": "Città",
+ "birthdayLabel": "Data di nascita",
+ "genderLabel": "Genere",
+ "genderOption1": "Maschio",
+ "genderOption2": "Femmina",
+ "genderOption3": "Non specificato",
+ "unitsLabel": "Unità",
+ "unitsOption1": "Metriche",
+ "unitsOption2": "Imperiali",
+ "currencyLabel": "Valuta",
+ "heightLabel": "Altezza",
+ "preferredLanguageLabel": "Lingua preferita",
+ "firstDayOfWeekLabel": "Primo giorno della settimana",
+ "accessTypeLabel": "Tipo di accesso",
+ "accessTypeOption1": "Utente normale",
+ "accessTypeOption2": "Amministratore",
+ "userPhotoDeleteSuccess": "Foto profilo eliminata con successo",
+ "userPhotoDeleteError": "Errore nell'eliminazione della foto profilo",
+ "titleDefaultGear": "Attrezzatura predefinita",
+ "subTitleShoeActivities": "Attività con scarpe",
+ "subTitleRun": "Corsa",
+ "subTitleTrailRun": "Trail run",
+ "subTitleVirtualRun": "Corsa virtuale",
+ "subTitleWalk": "Camminata",
+ "subTitleHike": "Escursione",
+ "subTitleBikeActivities": "Attività ciclismo",
+ "subTitleBike": "Bici",
+ "subTitleMTBBike": "MTB",
+ "subTitleGravelBike": "Gravel",
+ "subTitleVirtualBike": "Ciclismo virtuale",
+ "subTitleWaterActivities": "Attività acquatiche",
+ "subTitleSwim": "Nuoto in acque libere",
+ "subTitleWindsurf": "Windsurf",
+ "subTitleRacquetActivities": "Attività con racchetta",
+ "subTitleTennis": "Tennis",
+ "subTitleSnowActivities": "Attività sulla neve",
+ "subTitleAlpineSki": "Sci alpino",
+ "subTitleNordicSki": "Sci nordico",
+ "subTitleSnowboard": "Snowboard",
+ "selectOptionNotDefined": "Non definito",
+ "titlePrivacy": "Privacy",
+ "defaultActivityVisibility": "Visibilità attività predefinita",
+ "privacyOption1": "Pubblico",
+ "privacyOption2": "Follower",
+ "privacyOption3": "Privato",
+ "defaultActivityStartTime": "Nascondi ora di inizio attività",
+ "defaultActivityLocation": "Nascondi località attività",
+ "defaultActivityMap": "Nascondi mappa attività",
+ "defaultActivityHeartRate": "Nascondi frequenza cardiaca attività",
+ "defaultActivityPower": "Nascondi potenza attività",
+ "defaultActivityCadence": "Nascondi cadenza attività",
+ "defaultActivityElevation": "Nascondi elevazione attività",
+ "defaultActivitySpeed": "Nascondi velocità attività",
+ "defaultActivityPace": "Nascondi ritmo attività",
+ "defaultActivityLaps": "Nascondi giri attività",
+ "defaultActivitySetsSteps": "Nascondi serie/passaggi attività",
+ "defaultActivityGear": "Nascondi attrezzatura attività",
+ "buttonChangeDefaultActivityVisibility": "Cambia visibilità predefinita",
+ "buttonChangeUserActivitiesVisibility": "Cambia visibilità attività",
+ "changeUserActivitiesVisibilityModalVisibilityLabel": "Visibilità",
+ "changeUserActivitiesVisibilityModalButton": "Cambia",
+ "successUpdateUserActivitiesVisibility": "Visibilità attività aggiornata con successo",
+ "errorUpdateUserActivitiesVisibility": "Errore nell'aggiornamento della visibilità attività",
+ "errorUnableToGetGear": "Impossibile ottenere l'attrezzatura",
+ "errorUnableToGetDefaultGear": "Impossibile ottenere l'attrezzatura predefinita",
+ "successUpdateDefaultGear": "Attrezzatura predefinita aggiornata con successo",
+ "errorUpdateDefaultGear": "Errore nell'aggiornamento dell'attrezzatura predefinita",
+ "successUpdateUserPrivacySettings": "Impostazioni privacy utente aggiornate con successo",
+ "errorUpdateUserPrivacySettings": "Errore nell'aggiornamento delle impostazioni privacy utente",
+ "titleExportData": "Esporta e importa dati",
+ "labelPasswordDisclaimer": "La password utente non è inclusa nel processo di import/export. Dopo l'importazione, aggiorna la tua password nella sezione sicurezza.",
+ "buttonExportData": "Esporta dati",
+ "buttonImportData": "Importa dati",
+ "modalImportTitle": "Importa file di backup",
+ "modalImportBody": "Seleziona il file .zip che hai precedentemente esportato per ripristinare i tuoi dati.",
+ "exportLoading": "Esportazione dati in corso, potrebbe richiedere alcuni minuti...",
+ "exportSuccess": "Esportazione completata con successo",
+ "exportError": "Errore nell'esportazione dei dati",
+ "importLoading": "Importazione dati in corso, potrebbe richiedere alcuni minuti...",
+ "importSuccess": "Importazione completata",
+ "importError": "Errore nell'importazione dei dati"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUserSessionsZone/userSessionsListComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUserSessionsZone/userSessionsListComponent.json
new file mode 100644
index 000000000..828baeb4a
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUserSessionsZone/userSessionsListComponent.json
@@ -0,0 +1,5 @@
+{
+ "badgeCurrentSession": "Sessione corrente",
+ "modalDeleteSessionTitle": "Elimina sessione",
+ "modalDeleteSessionBody": "Sei sicuro di voler eliminare la sessione "
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersAddEditUserModalComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersAddEditUserModalComponent.json
new file mode 100644
index 000000000..70e6a9d49
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersAddEditUserModalComponent.json
@@ -0,0 +1,52 @@
+{
+ "addEditUserModalAddTitle": "Aggiungi utente",
+ "addEditUserModalEditTitle": "Modifica utente",
+ "addEditUserModalEditProfileTitle": "Modifica profilo",
+ "addEditUserModalDeleteUserPhotoButton": "Elimina foto",
+ "addEditUserModalUserPhotoLabel": "Foto utente",
+ "addEditUserModalUsernameLabel": "Nome utente",
+ "addEditUserModalUsernamePlaceholder": "Nome utente (max 45 caratteri)",
+ "addEditUserModalErrorUsernameExists": "Il nome utente esiste già",
+ "addEditUserModalNameLabel": "Nome",
+ "addEditUserModalNamePlaceholder": "Nome (max 45 caratteri)",
+ "addEditUserModalEmailLabel": "Email",
+ "addEditUserModalEmailPlaceholder": "Email (max 45 caratteri)",
+ "addEditUserModalErrorEmailInvalid": "L'email non è valida",
+ "addEditUserModalErrorEmailExists": "L'email esiste già",
+ "addEditUserModalPasswordLabel": "Password",
+ "addEditUserModalPasswordPlaceholder": "Password",
+ "addEditUserModalErrorPasswordInvalid": "La password non soddisfa i requisiti",
+ "addEditUserModalCityLabel": "Città",
+ "addEditUserModalCityPlaceholder": "Città (max 45 caratteri)",
+ "addEditUserModalBirthdayLabel": "Data di nascita",
+ "addEditUserModalGenderLabel": "Genere",
+ "addEditUserModalUnitsLabel": "Unità",
+ "addEditUserModalUnitsOption1": "Metriche",
+ "addEditUserModalUnitsOption2": "Imperiali",
+ "addEditUserModalCurrencyLabel": "Valuta",
+ "addEditUserModalHeightLabel": "Altezza",
+ "addEditUserModalHeightPlaceholder": "Altezza",
+ "addEditUserModalFeetValidationLabel": "Altezza non valida. Inserisci un'altezza valida in piedi.",
+ "addEditUserModalInchesValidationLabel": "Altezza non valida. Inserisci un'altezza valida in pollici.",
+ "addEditUserModalUserPreferredLanguageLabel": "Lingua preferita",
+ "addEditUserModalUserFirstDayOfWeekLabel": "Primo giorno della settimana",
+ "addEditUserModalUserTypeLabel": "Tipo di accesso",
+ "addEditUserModalUserTypeOption1": "Utente normale",
+ "addEditUserModalUserTypeOption2": "Amministratore",
+ "addEditUserModalIsActiveLabel": "È attivo",
+ "addEditUserModalIsActiveOption1": "Sì",
+ "addEditUserModalIsActiveOption2": "No",
+ "addEditUserModalDefaultActivityVisibilityLabel": "Visibilità attività predefinita",
+ "addEditUserModalDefaultActivityVisibilityOption1": "Pubblico",
+ "addEditUserModalDefaultActivityVisibilityOption2": "Follower",
+ "addEditUserModalDefaultActivityVisibilityOption3": "Privato",
+ "addEditUserModalErrorFetchingUserByUsername": "Errore nel recupero dell'utente per nome utente",
+ "addEditUserModalErrorFetchingUserByEmail": "Errore nel recupero dell'utente per email",
+ "addEditUserModalSuccessDeleteUserPhoto": "Foto utente eliminata con successo",
+ "addEditUserModalErrorDeleteUserPhoto": "Errore nell'eliminazione della foto utente",
+ "addEditUserModalErrorUploadingUserPhoto": "Errore nel caricamento della foto utente",
+ "addEditUserModalSuccessAddUser": "Utente aggiunto con successo",
+ "addEditUserModalErrorAddUser": "Errore nell'aggiunta dell'utente",
+ "addEditUserModalSuccessEditUser": "Utente modificato con successo",
+ "addEditUserModalErrorEditUser": "Errore nella modifica dell'utente"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersChangeUserPasswordModalComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersChangeUserPasswordModalComponent.json
new file mode 100644
index 000000000..c4dc76391
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersChangeUserPasswordModalComponent.json
@@ -0,0 +1,10 @@
+{
+ "modalChangeUserPasswordTitle": "Cambia password utente",
+ "modalChangeUserPasswordBodyLabel": "Cambia password per l'utente ",
+ "modalChangeUserPasswordPasswordLabel": "Nuova password",
+ "modalChangeUserPasswordPasswordConfirmationLabel": "Conferma nuova password",
+ "modalChangeUserPasswordFeedbackLabel": "La password non soddisfa i requisiti",
+ "modalChangeUserPasswordPasswordsDoNotMatchFeedbackLabel": "Le password non corrispondono",
+ "userChangePasswordSuccessMessage": "Password cambiata con successo",
+ "userChangePasswordErrorMessage": "Errore nel cambio password"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersListComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersListComponent.json
new file mode 100644
index 000000000..57273aa4f
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersListComponent.json
@@ -0,0 +1,22 @@
+{
+ "userListAccessTypeOption1": "Utente normale",
+ "userListAccessTypeOption2": "Amministratore",
+ "userListUserIsMeBadge": "Io",
+ "userListUserIsAdminBadge": "Admin",
+ "userListUserIsInactiveBadge": "Inattivo",
+ "userListUserHasUnverifiedEmailBadge": "Email non verificata",
+ "modalApproveSignUpTitle": "Approva registrazione utente",
+ "modalApproveSignUpBody": "Sei sicuro di voler approvare l'utente ",
+ "processingApproval": "Elaborazione approvazione...",
+ "userApproveSuccessMessage": "Utente approvato con successo.",
+ "userApproveErrorMessage": "Errore nell'approvazione dell'utente",
+ "modalRejectSignUpTitle": "Rifiuta registrazione utente",
+ "modalRejectSignUpBody1": "Sei sicuro di voler rifiutare l'utente ",
+ "modalRejectSignUpBody2": "L'utente verrà eliminato, questa azione non può essere annullata.",
+ "userEditErrorMessage": "Errore nella modifica dell'utente",
+ "modalDeleteUserTitle": "Elimina utente",
+ "modalDeleteUserBody": "Sei sicuro di voler eliminare l'utente ",
+ "userListUserSessionsTitle": "Sessioni utente",
+ "userSessionDeleteSuccessMessage": "Sessione eliminata con successo",
+ "userSessionDeleteErrorMessage": "Errore nell'eliminazione della sessione"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersPasswordRequirementsComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersPasswordRequirementsComponent.json
new file mode 100644
index 000000000..29a6737b6
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUsersZone/usersPasswordRequirementsComponent.json
@@ -0,0 +1,7 @@
+{
+ "passwordRequirementsTitle": "I requisiti della password includono:",
+ "passwordCharacters": "- 8 caratteri;",
+ "passwordCapitalLetters": "- 1 lettera maiuscola;",
+ "passwordNumbers": "- 1 numero;",
+ "passwordSpecialCharacters": "- 1 carattere speciale;"
+}
diff --git a/frontend/app/src/i18n/it/components/settings/settingsUsersZoneComponent.json b/frontend/app/src/i18n/it/components/settings/settingsUsersZoneComponent.json
new file mode 100644
index 000000000..6df44419c
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/settings/settingsUsersZoneComponent.json
@@ -0,0 +1,10 @@
+{
+ "buttonAddUser": "Aggiungi utente",
+ "labelSearchUsersByUsername": "Cerca utenti per nome utente",
+ "labelNumberOfUsers1": "C'è un totale di ",
+ "labelNumberOfUsers2": " utente/i (",
+ "labelNumberOfUsers3": " caricati):",
+ "successUserAdded": "Utente aggiunto con successo",
+ "successUserDeleted": "Utente eliminato con successo",
+ "errorFetchingUsers": "Errore nel recupero degli utenti"
+}
diff --git a/frontend/app/src/i18n/it/components/users/userDistanceStatsComponent.json b/frontend/app/src/i18n/it/components/users/userDistanceStatsComponent.json
new file mode 100644
index 000000000..111e2d733
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/users/userDistanceStatsComponent.json
@@ -0,0 +1,4 @@
+{
+ "thisWeekDistancesTitle": "Top 3 della settimana",
+ "thisMonthDistancesTitle": "Top 3 del mese"
+}
diff --git a/frontend/app/src/i18n/it/components/users/userGoalsStatsComponent.json b/frontend/app/src/i18n/it/components/users/userGoalsStatsComponent.json
new file mode 100644
index 000000000..abaf0aca6
--- /dev/null
+++ b/frontend/app/src/i18n/it/components/users/userGoalsStatsComponent.json
@@ -0,0 +1,13 @@
+{
+ "title": "Obiettivi",
+ "activityTypeRun": "Corsa",
+ "activityTypeBike": "Ciclismo",
+ "activityTypeSwim": "Nuoto",
+ "activityTypeWalk": "Camminata",
+ "activityTypeStrength": "Forza",
+ "intervalOption1": "Giornaliero",
+ "intervalOption2": "Settimanale",
+ "intervalOption3": "Mensile",
+ "intervalOption4": "Annuale",
+ "activities": "attività"
+}
diff --git a/frontend/app/src/i18n/it/emailVerificationView.json b/frontend/app/src/i18n/it/emailVerificationView.json
new file mode 100644
index 000000000..cc526d4ea
--- /dev/null
+++ b/frontend/app/src/i18n/it/emailVerificationView.json
@@ -0,0 +1,8 @@
+{
+ "title1": "Verifica email in corso",
+ "title2": "Attendi mentre la tua email viene verificata. Non aggiornare questa pagina.",
+ "emailVerified": "Email verificata con successo!",
+ "tokenNotFound": "Token non trovato",
+ "tokenExpired": "Token scaduto",
+ "verificationFailed": "Verifica email fallita"
+}
diff --git a/frontend/app/src/i18n/it/gears/gearView.json b/frontend/app/src/i18n/it/gears/gearView.json
new file mode 100644
index 000000000..a0a752d0a
--- /dev/null
+++ b/frontend/app/src/i18n/it/gears/gearView.json
@@ -0,0 +1,31 @@
+{
+ "buttonAddComponent": "Aggiungi componente",
+ "buttonEditGear": "Modifica attrezzatura",
+ "buttonDeleteGear": "Elimina attrezzatura",
+ "modalDeleteGearBody1": "Sei sicuro di voler eliminare l'attrezzatura",
+ "modalDeleteGearBody2": "Questa azione non può essere annullata.",
+ "gearIsActiveBadge": "Attiva",
+ "gearIsInactiveBadge": "Inattiva",
+ "gearTypeOption1": "Bici",
+ "gearTypeOption2": "Scarpe",
+ "gearTypeOption3": "Muta",
+ "gearTypeOption4": "Racchetta",
+ "gearTypeOption5": "Sci",
+ "gearTypeOption6": "Snowboard",
+ "gearTypeOption7": "Windsurf",
+ "gearTypeOption8": "Tavola per sport acquatici",
+ "gearFromStrava": "Strava",
+ "gearFromGarminConnect": "Garmin Connect",
+ "labelBrand": "Marca",
+ "labelModel": "Modello",
+ "labelPurchaseValue": "Valore d'acquisto",
+ "labelTotalCost": "Costo totale",
+ "labelDistance": "Distanza",
+ "labelTime": "Tempo",
+ "titleComponents": "Componenti",
+ "showInactiveComponents": "Mostra inattivi",
+ "title": "Attività",
+ "successGearEdited": "Attrezzatura modificata con successo",
+ "errorGearDelete": "Errore nell'eliminazione dell'attrezzatura",
+ "errorFetchingGears": "Errore nel recupero dell'attrezzatura"
+}
diff --git a/frontend/app/src/i18n/it/gears/gearsView.json b/frontend/app/src/i18n/it/gears/gearsView.json
new file mode 100644
index 000000000..a37597b82
--- /dev/null
+++ b/frontend/app/src/i18n/it/gears/gearsView.json
@@ -0,0 +1,13 @@
+{
+ "title": "Attrezzatura",
+ "buttonAddGear": "Aggiungi attrezzatura",
+ "subTitleSearchGearByNickname": "Cerca attrezzatura per soprannome",
+ "placeholderSearchGearByNickname": "Soprannome",
+ "buttonSearchGear": "Cerca attrezzatura",
+ "displayUserNumberOfGears1": "C'è un totale di ",
+ "displayUserNumberOfGears2": " attrezzatura/e (",
+ "displayUserNumberOfGears3": " caricate):",
+ "successGearDeleted": "Attrezzatura eliminata con successo",
+ "errorGearNotFound": "Attrezzatura non trovata",
+ "errorFetchingGears": "Errore nel recupero dell'attrezzatura"
+}
diff --git a/frontend/app/src/i18n/it/generalItems.json b/frontend/app/src/i18n/it/generalItems.json
new file mode 100644
index 000000000..d2686b721
--- /dev/null
+++ b/frontend/app/src/i18n/it/generalItems.json
@@ -0,0 +1,79 @@
+{
+ "buttonBack": "Indietro",
+ "buttonClose": "Chiudi",
+ "true": "Vero",
+ "false": "Falso",
+ "yes": "Sì",
+ "no": "No",
+ "ofWithSpaces": " di ",
+ "languageOption1": "Inglese (US)",
+ "languageOption2": "Catalano (CA)",
+ "languageOption3": "Portoghese (PT)",
+ "languageOption4": "Tedesco (DE)",
+ "languageOption5": "Francese (FR)",
+ "languageOption6": "Olandese (NL)",
+ "languageOption7": "Spagnolo (ES)",
+ "languageOption8": "Cinese (Semplificato)",
+ "languageOption9": "Cinese (Tradizionale)",
+ "languageOption10": "Galiziano (GL)",
+ "languageOption11": "Italiano (IT)",
+ "firstDayOfWeekOption0": "Domenica",
+ "firstDayOfWeekOption1": "Lunedì",
+ "firstDayOfWeekOption2": "Martedì",
+ "firstDayOfWeekOption3": "Mercoledì",
+ "firstDayOfWeekOption4": "Giovedì",
+ "firstDayOfWeekOption5": "Venerdì",
+ "firstDayOfWeekOption6": "Sabato",
+ "buttonlistAll": "Elenca tutto",
+ "requiredField": "Campi obbligatori",
+ "labelNotApplicable": "N/D",
+ "labelNoData": "Nessun dato",
+ "unitsCm": "cm",
+ "unitsCms": "cms",
+ "unitsM": "m",
+ "unitsKm": "km",
+ "unitsKmH": "km/h",
+ "unitsKg": "kg",
+ "labelWeightInKg": "Peso in kg",
+ "unitsInches": "pollici",
+ "unitsFeet": "piedi",
+ "unitsFeetShort": "ft",
+ "unitsFeetInches": "piedi, pollici",
+ "unitsMiles": "mi",
+ "unitsYards": "yd",
+ "unitsMph": "mph",
+ "unitsLbs": "lbs",
+ "labelWeightInLbs": "Peso in lbs",
+ "unitsCalories": "kcal",
+ "unitsBpm": "bpm",
+ "labelHRinBpm": "Frequenza cardiaca in bpm",
+ "unitsWattsShort": "W",
+ "labelPowerInWatts": "Potenza in watt",
+ "labelCadenceInRpm": "Cadenza in rpm",
+ "unitsSpm": "spm",
+ "labelElevationInMeters": "Elevazione in metri",
+ "labelElevationInFeet": "Elevazione in piedi",
+ "labelVelocityInKmH": "Velocità in km/h",
+ "labelVelocityInMph": "Velocità in mph",
+ "labelPaceInMinKm": "Ritmo in min/km",
+ "labelPaceInMin100m": "Ritmo in min/100m",
+ "labelPaceInMinMile": "Ritmo in min/miglio",
+ "labelPaceInMin100yd": "Ritmo in min/100yd",
+ "labelLaps": "Giri",
+ "labelRest": "Riposo",
+ "labelStrokeRateInSpm": "Frequenza di bracciata in spm",
+ "startDateLabel": "Data di inizio",
+ "endDateLabel": "Data di fine",
+ "cancel": "Annulla",
+ "loading": "Caricamento",
+ "betaTag": " (Beta)",
+ "currencyEuro": "Euro",
+ "currencyEuroSymbol": "€",
+ "currencyDollar": "Dollaro USA",
+ "currencyDollarSymbol": "$",
+ "currencyPound": "Sterlina britannica",
+ "currencyPoundSymbol": "£",
+ "genderMale": "Maschio",
+ "genderFemale": "Femmina",
+ "genderUnspecified": "Non specificato"
+}
diff --git a/frontend/app/src/i18n/it/healthView.json b/frontend/app/src/i18n/it/healthView.json
new file mode 100644
index 000000000..f1050541a
--- /dev/null
+++ b/frontend/app/src/i18n/it/healthView.json
@@ -0,0 +1,5 @@
+{
+ "title": "Salute",
+ "errorFetchingHealthData": "Errore nel recupero dei dati sulla salute",
+ "errorFetchingHealthTargets": "Errore nel recupero degli obiettivi di salute"
+}
diff --git a/frontend/app/src/i18n/it/homeView.json b/frontend/app/src/i18n/it/homeView.json
new file mode 100644
index 000000000..4a127b940
--- /dev/null
+++ b/frontend/app/src/i18n/it/homeView.json
@@ -0,0 +1,18 @@
+{
+ "title": "Endurain",
+ "buttonAddActivity": "Aggiungi attività",
+ "fieldLabelUploadFileType": "Carica file .gpx, .fit, .tcx o .gz",
+ "radioUserActivities": "Le mie attività",
+ "radioFollowerActivities": "Attività dei follower",
+ "pillIsHidden": "Nascosto",
+ "successActivityAdded": "Attività aggiunta con successo",
+ "errorActivityAdded": "Errore nell'aggiunta dell'attività",
+ "refreshingActivities": "Aggiornamento attività dai servizi collegati",
+ "successActivitiesRefreshed": "Attività aggiornate con successo",
+ "errorActivityNotFound": "Attività non trovata",
+ "processingActivity": "Elaborazione attività",
+ "successActivityDeleted": "Attività eliminata con successo",
+ "errorFetchingUserStats": "Errore nel recupero delle statistiche utente",
+ "errorFetchingUserActivities": "Errore nel recupero delle attività utente",
+ "errorFetchingMedia": "Errore nel recupero dei media per l'attività"
+}
diff --git a/frontend/app/src/i18n/it/loginView.json b/frontend/app/src/i18n/it/loginView.json
new file mode 100644
index 000000000..c8723168a
--- /dev/null
+++ b/frontend/app/src/i18n/it/loginView.json
@@ -0,0 +1,37 @@
+{
+ "sessionExpired": "Sessione utente scaduta",
+ "logoutSuccess": "Disconnessione avvenuta con successo",
+ "error401": "Nome utente o password non validi",
+ "error403": "Non hai i permessi per accedere a questa risorsa",
+ "error500": "Non è stato possibile connettersi al server. Riprova più tardi",
+ "errorUndefined": "Non è stato possibile connettersi al server. Riprova più tardi",
+ "subtitle": "Accedi qui sotto",
+ "username": "Nome utente",
+ "password": "Password",
+ "mfaCode": "Codice MFA",
+ "mfaRequired": "Autenticazione a più fattori richiesta. Inserisci il tuo codice a 6 cifre.",
+ "verifyMFAButton": "Verifica MFA",
+ "invalidMFACode": "Codice MFA non valido. Riprova.",
+ "neverExpires": "Ricordami (non selezionare se stai usando un computer condiviso)",
+ "signInButton": "Accedi",
+ "signUpText": "Vuoi registrarti?",
+ "signUpButton": "Registrati",
+ "errorPublicActivityNotFound": "Attività pubblica non trovata",
+ "errorPublic_shareable_links": "I link condivisibili pubblici non sono consentiti. Per visualizzare questa attività, devi essere autenticato",
+ "forgotPassword": "Hai dimenticato la password?",
+ "passwordResetInvalidLink": "Nessun token di ripristino password fornito",
+ "passwordResetSuccess": "La tua password è stata ripristinata con successo",
+ "forgotPasswordModalTitle": "Password dimenticata",
+ "forgotPasswordModalEmailLabel": "Indirizzo email",
+ "forgotPasswordModalEmailHelp": "Inserisci l'indirizzo email associato al tuo account. Verrà inviata un'email con un link per ripristinare la password.",
+ "forgotPasswordModalSubmitButton": "Invia link di ripristino",
+ "forgotPasswordModalEmailRequired": "L'indirizzo email è obbligatorio",
+ "forgotPasswordModalRequestSuccess": "Se l'email esiste nel sistema, verrà inviato un link di ripristino password all'indirizzo email fornito",
+ "forgotPasswordModalRequestError": "Impossibile elaborare la richiesta di ripristino password",
+ "forgotPasswordModalEmailNotConfigured": "Il servizio email non è configurato. Contatta l'amministratore",
+ "forgotPasswordModalUnableToSendEmail": "Impossibile inviare l'email. Riprova più tardi o contatta l'amministratore",
+ "signUpLink": "Non hai un account? Registrati",
+ "emailVerificationSent": "Controlla la tua email per le istruzioni di verifica",
+ "adminApprovalRequired": "Il tuo account è in attesa di approvazione dell'amministratore",
+ "verifyEmailInvalidLink": "Link di verifica email non valido"
+}
diff --git a/frontend/app/src/i18n/it/notFoundView.json b/frontend/app/src/i18n/it/notFoundView.json
new file mode 100644
index 000000000..5b2c1c4c9
--- /dev/null
+++ b/frontend/app/src/i18n/it/notFoundView.json
@@ -0,0 +1,5 @@
+{
+ "title": "Oops! Pagina non trovata",
+ "subTitle": "La pagina che stai cercando non esiste o è stata modificata.",
+ "backToHomeButton": "Torna alla home"
+}
diff --git a/frontend/app/src/i18n/it/resetPassword.json b/frontend/app/src/i18n/it/resetPassword.json
new file mode 100644
index 000000000..053bfba2e
--- /dev/null
+++ b/frontend/app/src/i18n/it/resetPassword.json
@@ -0,0 +1,11 @@
+{
+ "title": "Ripristina password",
+ "newPasswordLabel": "Nuova password",
+ "confirmPasswordLabel": "Conferma nuova password",
+ "submitButton": "Ripristina password",
+ "backToLogin": "Torna al login",
+ "passwordComplexityError": "La password deve contenere almeno 8 caratteri, includere una lettera maiuscola, un numero e un carattere speciale",
+ "passwordMismatchError": "Le password non corrispondono",
+ "resetError": "Impossibile ripristinare la password",
+ "invalidOrExpiredToken": "Token di ripristino password non valido o scaduto"
+}
diff --git a/frontend/app/src/i18n/it/searchView.json b/frontend/app/src/i18n/it/searchView.json
new file mode 100644
index 000000000..564c489ae
--- /dev/null
+++ b/frontend/app/src/i18n/it/searchView.json
@@ -0,0 +1,37 @@
+{
+ "searchSelectLabel": "Cerca",
+ "searchSelectOptionActivity": "Attività",
+ "searchSelectOptionUser": "Utente",
+ "searchSelectOptionGear": "Attrezzatura",
+ "searchSelectActivityType0": "Tutti",
+ "searchSelectActivityType1": "Corsa",
+ "searchSelectActivityType2": "Ciclismo",
+ "searchSelectActivityType3": "Nuoto",
+ "searchSelectActivityType4": "Allenamento",
+ "searchSelectActivityType5": "Camminata",
+ "searchSelectActivityType6": "Escursione",
+ "searchSelectActivityType7": "Canottaggio",
+ "searchSelectActivityType8": "Yoga",
+ "searchSelectActivityType9": "Sci",
+ "searchSelectActivityType10": "Snowboard",
+ "searchSelectActivityType11": "Sport con racchetta",
+ "searchSelectActivityType12": "Windsurf",
+ "searchSelectActivityType13": "Stand up paddle",
+ "searchSelectActivityType14": "Surf",
+ "searchSelectActivityType15": "Pattinaggio su ghiaccio",
+ "searchSelectActivityType16": "Calcio",
+ "searchSelectGearType0": "Tutti",
+ "searchSelectGearType1": "Bici",
+ "searchSelectGearType2": "Scarpe",
+ "searchSelectGearType3": "Muta",
+ "searchSelectGearType4": "Racchetta",
+ "searchSelectGearType5": "Sci",
+ "searchSelectGearType6": "Snowboard",
+ "searchSelectGearType7": "Windsurf",
+ "searchSelectGearType8": "Tavola per sport acquatici",
+ "resultIsInactiveBadge": "Inattivo",
+ "searchInputPlaceholder": "Testo di ricerca",
+ "errorFetchingUserWithUsernameContains": "Errore nel recupero dell'utente con nome utente contenente",
+ "errorFetchingActivityWithNameContains": "Errore nel recupero dell'attività con nome contenente",
+ "errorFetchingGearWithNicknameContains": "Errore nel recupero dell'attrezzatura con soprannome contenente"
+}
diff --git a/frontend/app/src/i18n/it/settingsView.json b/frontend/app/src/i18n/it/settingsView.json
new file mode 100644
index 000000000..f69c8f0fc
--- /dev/null
+++ b/frontend/app/src/i18n/it/settingsView.json
@@ -0,0 +1,3 @@
+{
+ "title": "Impostazioni"
+}
diff --git a/frontend/app/src/i18n/it/signupView.json b/frontend/app/src/i18n/it/signupView.json
new file mode 100644
index 000000000..330b60f7d
--- /dev/null
+++ b/frontend/app/src/i18n/it/signupView.json
@@ -0,0 +1,33 @@
+{
+ "title": "Registrati",
+ "subtitle": "Crea il tuo account qui sotto",
+ "name": "Nome completo",
+ "username": "Nome utente",
+ "email": "Indirizzo email",
+ "password": "Password",
+ "optionalFields": " Campi opzionali",
+ "preferredLanguage": "Lingua preferita",
+ "city": "Città",
+ "birthdate": "Data di nascita",
+ "gender": "Genere",
+ "units": "Unità di misura",
+ "metric": "Metriche",
+ "imperial": "Imperiali",
+ "height": "Altezza",
+ "firstDayOfWeek": "Primo giorno della settimana",
+ "currency": "Valuta",
+ "signUpButton": "Crea account",
+ "alreadyHaveAccount": "Hai già un account? Accedi",
+ "success": "Registrazione completata con successo",
+ "errorNameRequired": "Il nome completo è obbligatorio",
+ "errorUsernameRequired": "Il nome utente è obbligatorio",
+ "errorEmailRequired": "L'indirizzo email è obbligatorio",
+ "errorEmailInvalid": "Inserisci un indirizzo email valido",
+ "errorPasswordRequired": "La password è obbligatoria",
+ "errorPasswordTooShort": "La password deve contenere almeno 8 caratteri",
+ "errorUserExists": "Esiste già un utente con questa email o nome utente",
+ "errorSignupDisabled": "La registrazione non è abilitata su questo server",
+ "errorValidation": "Controlla i dati inseriti e riprova",
+ "errorGeneral": "Si è verificato un errore durante la registrazione",
+ "signupDisabled": "La registrazione utente non è abilitata su questo server"
+}
diff --git a/frontend/app/src/i18n/it/strava/stravaCallbackView.json b/frontend/app/src/i18n/it/strava/stravaCallbackView.json
new file mode 100644
index 000000000..0dd5b8450
--- /dev/null
+++ b/frontend/app/src/i18n/it/strava/stravaCallbackView.json
@@ -0,0 +1,4 @@
+{
+ "stravaCallbackViewTitle1": "Gestione callback Strava",
+ "stravaCallbackViewTitle2": "Attendi mentre Strava viene collegato al tuo account. Non aggiornare questa pagina."
+}
diff --git a/frontend/app/src/i18n/it/summaryView.json b/frontend/app/src/i18n/it/summaryView.json
new file mode 100644
index 000000000..c97943efb
--- /dev/null
+++ b/frontend/app/src/i18n/it/summaryView.json
@@ -0,0 +1,44 @@
+{
+ "title": "Riepilogo attività",
+ "filterLabelActivityType": "Tipo",
+ "filterOptionAllTypes": "Tutti i tipi",
+ "labelViewType": "Visualizza per",
+ "optionDaily": "Giornaliero",
+ "optionWeekly": "Settimanale",
+ "optionMonthly": "Mensile",
+ "optionYearly": "Annuale",
+ "optionLifetime": "Totale",
+ "labelSelectWeek": "Settimana",
+ "labelSelectMonth": "Mese",
+ "labelSelectYear": "Anno",
+ "labelSelectPeriod": "Periodo",
+ "buttonPreviousPeriod": "Precedente",
+ "buttonNextPeriod": "Successivo",
+ "headerSummaryFor": "Riepilogo per {period}",
+ "headerBreakdown": "Dettagli",
+ "headerActivitiesInPeriod": "Attività nel periodo",
+ "errorLoadingActivityTypes": "Errore nel caricamento dei tipi di attività",
+ "errorLoadingSummary": "Errore nel caricamento del riepilogo",
+ "errorLoadingSummaryLoad": "Errore nel caricamento del riepilogo all'avvio della pagina",
+ "errorFetchingActivities": "Errore nel recupero delle attività",
+ "noDataForPeriod": "Nessun dato per questo periodo.",
+ "colDay": "Giorno",
+ "colWeekNum": "Settimana n.",
+ "colMonth": "Mese",
+ "colDistance": "Distanza",
+ "colDuration": "Durata",
+ "colElevation": "Elevazione",
+ "colCalories": "Calorie",
+ "colActivities": "Attività",
+ "metricTotalDistance": "Distanza totale",
+ "metricTotalDuration": "Durata totale",
+ "metricTotalElevation": "Elevazione totale",
+ "metricTotalCalories": "Calorie totali",
+ "metricTotalActivities": "Attività totali",
+ "invalidYearSelected": "Anno selezionato non valido",
+ "headerTypeBreakdown": "Dettagli per tipo",
+ "colActivityType": "Tipo",
+ "headerYear": "Anno {year}",
+ "headerWeekStarting": "Settimana del {date}",
+ "colYear": "Anno"
+}
diff --git a/frontend/app/src/i18n/it/userView.json b/frontend/app/src/i18n/it/userView.json
new file mode 100644
index 000000000..4023755b3
--- /dev/null
+++ b/frontend/app/src/i18n/it/userView.json
@@ -0,0 +1,32 @@
+{
+ "thisMonthActivitiesNumber": "Attività di questo mese",
+ "userFollowing": "Seguiti",
+ "userFollowers": "Follower",
+ "navigationActivities": "Attività",
+ "navigationFollowing": "Seguiti",
+ "navigationFollowers": "Follower",
+ "navigationUserSettings": "Impostazioni utente",
+ "navigationFollow": "Segui",
+ "modalFollowUserTitle": "Segui utente",
+ "modalFollowUserBody": "Sei sicuro di voler seguire l'utente ",
+ "errorUnableToSendFollow": "Impossibile inviare la richiesta di seguito all'utente",
+ "successFollowRequestSent": "Richiesta di seguito inviata",
+ "navigationRequestSent": "Richiesta inviata",
+ "modalCancelFollowRequestTitle": "Annulla richiesta di seguito",
+ "modalCancelFollowRequestBody": "Sei sicuro di voler annullare la richiesta di seguito per l'utente ",
+ "errorUnableToCancelFollowRequest": "Impossibile annullare la richiesta di seguito per l'utente",
+ "successFollowRequestCancelled": "Richiesta di seguito annullata",
+ "navigationUnfollow": "Smetti di seguire",
+ "modalUnfollowUserTitle": "Smetti di seguire l'utente",
+ "modalUnfollowUserBody": "Sei sicuro di voler smettere di seguire l'utente ",
+ "errorUnableToUnfollow": "Impossibile smettere di seguire l'utente",
+ "successUserUnfollowed": "Hai smesso di seguire l'utente",
+ "activitiesPaginationWeek0": "Questa settimana",
+ "activitiesPaginationWeek51": "Un anno fa",
+ "successFollowingDeleted": "Seguito eliminato",
+ "successFollowerDeleted": "Follower eliminato",
+ "successFollowerAccepted": "Follower accettato",
+ "errorFetchingUserStats": "Errore nel recupero delle statistiche utente",
+ "errorFetchingUserFollowers": "Errore nel recupero dei follower dell'utente",
+ "errorFetchingUserActivities": "Errore nel recupero delle attività utente"
+}
From c39291ef70ec3c61800a7eecdbe53e00dd4c504b Mon Sep 17 00:00:00 2001
From: Filippo Pisano
Date: Mon, 3 Nov 2025 11:38:11 +0100
Subject: [PATCH 2/4] Add Italian language
---
.../components/Navbar/NavbarLanguageSwitcherComponent.vue | 1 +
.../SettingsLanguageSwitcherComponent.vue | 1 +
.../app/src/components/Settings/SettingsUserProfileZone.vue | 3 +++
.../SettingsUsersZone/UsersAddEditUserModalComponent.vue | 1 +
frontend/app/src/i18n/ca/generalItems.json | 1 +
frontend/app/src/i18n/cn/generalItems.json | 1 +
frontend/app/src/i18n/de/generalItems.json | 1 +
frontend/app/src/i18n/es/generalItems.json | 1 +
frontend/app/src/i18n/fr/generalItems.json | 1 +
frontend/app/src/i18n/gl/generalItems.json | 1 +
frontend/app/src/i18n/index.js | 6 +++---
frontend/app/src/i18n/nl/generalItems.json | 1 +
frontend/app/src/i18n/pt/generalItems.json | 1 +
frontend/app/src/i18n/tw/generalItems.json | 1 +
frontend/app/src/i18n/us/generalItems.json | 1 +
frontend/app/src/views/SignUpView.vue | 1 +
16 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/frontend/app/src/components/Navbar/NavbarLanguageSwitcherComponent.vue b/frontend/app/src/components/Navbar/NavbarLanguageSwitcherComponent.vue
index f7e969167..c57e9f10d 100644
--- a/frontend/app/src/components/Navbar/NavbarLanguageSwitcherComponent.vue
+++ b/frontend/app/src/components/Navbar/NavbarLanguageSwitcherComponent.vue
@@ -45,6 +45,7 @@ const languages = computed(() => [
{ value: 'de', label: t('generalItems.languageOption4') },
{ value: 'fr', label: t('generalItems.languageOption5') },
{ value: 'gl', label: t('generalItems.languageOption10') },
+ { value: 'it', label: t('generalItems.languageOption11') },
{ value: 'nl', label: t('generalItems.languageOption6') },
{ value: 'pt', label: t('generalItems.languageOption3') },
{ value: 'es', label: t('generalItems.languageOption7') },
diff --git a/frontend/app/src/components/Settings/SettingsGeneralZone/SettingsLanguageSwitcherComponent.vue b/frontend/app/src/components/Settings/SettingsGeneralZone/SettingsLanguageSwitcherComponent.vue
index 9d0d67663..31e4270bd 100644
--- a/frontend/app/src/components/Settings/SettingsGeneralZone/SettingsLanguageSwitcherComponent.vue
+++ b/frontend/app/src/components/Settings/SettingsGeneralZone/SettingsLanguageSwitcherComponent.vue
@@ -31,6 +31,7 @@ export default {
{ value: 'de', label: t('generalItems.languageOption4') },
{ value: 'fr', label: t('generalItems.languageOption5') },
{ value: 'gl', label: t('generalItems.languageOption10') },
+ { value: 'it', label: t('generalItems.languageOption11') },
{ value: 'nl', label: t('generalItems.languageOption6') },
{ value: 'pt', label: t('generalItems.languageOption3') },
{ value: 'es', label: t('generalItems.languageOption7') },
diff --git a/frontend/app/src/components/Settings/SettingsUserProfileZone.vue b/frontend/app/src/components/Settings/SettingsUserProfileZone.vue
index 709e2cb84..445de03fa 100644
--- a/frontend/app/src/components/Settings/SettingsUserProfileZone.vue
+++ b/frontend/app/src/components/Settings/SettingsUserProfileZone.vue
@@ -164,6 +164,9 @@
{{
$t('generalItems.languageOption10')
}}
+ {{
+ $t('generalItems.languageOption11')
+ }}
{{
$t('generalItems.languageOption6')
}}
diff --git a/frontend/app/src/components/Settings/SettingsUsersZone/UsersAddEditUserModalComponent.vue b/frontend/app/src/components/Settings/SettingsUsersZone/UsersAddEditUserModalComponent.vue
index afbf7c350..f7ed51ad4 100644
--- a/frontend/app/src/components/Settings/SettingsUsersZone/UsersAddEditUserModalComponent.vue
+++ b/frontend/app/src/components/Settings/SettingsUsersZone/UsersAddEditUserModalComponent.vue
@@ -331,6 +331,7 @@
+
diff --git a/frontend/app/src/i18n/ca/generalItems.json b/frontend/app/src/i18n/ca/generalItems.json
index 966d16579..97a3fbc41 100644
--- a/frontend/app/src/i18n/ca/generalItems.json
+++ b/frontend/app/src/i18n/ca/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Xinès (Simplificat)",
"languageOption9": "Xinès (Tradicional)",
"languageOption10": "Gallec (GL)",
+ "languageOption11": "Italià (IT)",
"firstDayOfWeekOption0": "Diumenge",
"firstDayOfWeekOption1": "Dilluns",
"firstDayOfWeekOption2": "Dimarts",
diff --git a/frontend/app/src/i18n/cn/generalItems.json b/frontend/app/src/i18n/cn/generalItems.json
index 70f2d872c..8f6468b94 100644
--- a/frontend/app/src/i18n/cn/generalItems.json
+++ b/frontend/app/src/i18n/cn/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinese (Simplified)",
"languageOption9": "Chinese (Traditional)",
"languageOption10": "Galician (GL)",
+ "languageOption11": "Italian (IT)",
"firstDayOfWeekOption0": "Sunday",
"firstDayOfWeekOption1": "Monday",
"firstDayOfWeekOption2": "Tuesday",
diff --git a/frontend/app/src/i18n/de/generalItems.json b/frontend/app/src/i18n/de/generalItems.json
index 03f4a301f..af3c29f7c 100644
--- a/frontend/app/src/i18n/de/generalItems.json
+++ b/frontend/app/src/i18n/de/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinese (Simplified)",
"languageOption9": "Chinese (Traditional)",
"languageOption10": "Galician (GL)",
+ "languageOption11": "Italienisch (IT)",
"firstDayOfWeekOption0": "Sonntag",
"firstDayOfWeekOption1": "Montag",
"firstDayOfWeekOption2": "Dienstag",
diff --git a/frontend/app/src/i18n/es/generalItems.json b/frontend/app/src/i18n/es/generalItems.json
index 01e67f453..a9c76d170 100644
--- a/frontend/app/src/i18n/es/generalItems.json
+++ b/frontend/app/src/i18n/es/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinese (Simplified)",
"languageOption9": "Chinese (Traditional)",
"languageOption10": "Galician (GL)",
+ "languageOption11": "Italiano (IT)",
"firstDayOfWeekOption0": "Domingo",
"firstDayOfWeekOption1": "Lunes",
"firstDayOfWeekOption2": "Martes",
diff --git a/frontend/app/src/i18n/fr/generalItems.json b/frontend/app/src/i18n/fr/generalItems.json
index 90d0cf1ac..d5d24dad1 100644
--- a/frontend/app/src/i18n/fr/generalItems.json
+++ b/frontend/app/src/i18n/fr/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinese (Simplified)",
"languageOption9": "Chinese (Traditional)",
"languageOption10": "Galician (GL)",
+ "languageOption11": "Italien (IT)",
"firstDayOfWeekOption0": "dimanche",
"firstDayOfWeekOption1": "lundi",
"firstDayOfWeekOption2": "mardi",
diff --git a/frontend/app/src/i18n/gl/generalItems.json b/frontend/app/src/i18n/gl/generalItems.json
index 08dd87a6c..475c19876 100644
--- a/frontend/app/src/i18n/gl/generalItems.json
+++ b/frontend/app/src/i18n/gl/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinés (Simplificado)",
"languageOption9": "Chinés (Tradicional)",
"languageOption10": "Galego (GL)",
+ "languageOption11": "Italiano (IT)",
"firstDayOfWeekOption0": "Domingo",
"firstDayOfWeekOption1": "Luns",
"firstDayOfWeekOption2": "Martes",
diff --git a/frontend/app/src/i18n/index.js b/frontend/app/src/i18n/index.js
index 675ee1f4b..0117a054e 100644
--- a/frontend/app/src/i18n/index.js
+++ b/frontend/app/src/i18n/index.js
@@ -2,12 +2,12 @@ import { createI18n } from 'vue-i18n'
// Bundle only locale JSON files (root + nested), eagerly so they're in dist
const translationModules = {
- ...import.meta.glob('./{ca,de,es,fr,gl,nl,pt,us,cn,tw}/*.json', { eager: true }),
- ...import.meta.glob('./{ca,de,es,fr,gl,nl,pt,us,cn,tw}/**/*.json', { eager: true })
+ ...import.meta.glob('./{ca,de,es,fr,gl,it,nl,pt,us,cn,tw}/*.json', { eager: true }),
+ ...import.meta.glob('./{ca,de,es,fr,gl,it,nl,pt,us,cn,tw}/**/*.json', { eager: true })
}
// Define available locales
-const locales = ['ca', 'de', 'es', 'fr', 'gl', 'nl', 'pt', 'us', 'cn', 'tw']
+const locales = ['ca', 'de', 'es', 'fr', 'gl', 'it', 'nl', 'pt', 'us', 'cn', 'tw']
// Define all component paths
const componentPaths = {
diff --git a/frontend/app/src/i18n/nl/generalItems.json b/frontend/app/src/i18n/nl/generalItems.json
index f357181aa..71cea2e08 100644
--- a/frontend/app/src/i18n/nl/generalItems.json
+++ b/frontend/app/src/i18n/nl/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinese (Simplified)",
"languageOption9": "Chinese (Traditional)",
"languageOption10": "Galician (GL)",
+ "languageOption11": "Italiaans (IT)",
"firstDayOfWeekOption0": "Sunday",
"firstDayOfWeekOption1": "Monday",
"firstDayOfWeekOption2": "Tuesday",
diff --git a/frontend/app/src/i18n/pt/generalItems.json b/frontend/app/src/i18n/pt/generalItems.json
index e7d14768c..8c3318697 100644
--- a/frontend/app/src/i18n/pt/generalItems.json
+++ b/frontend/app/src/i18n/pt/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinês (Simplificado)",
"languageOption9": "Chinês (Tradicional)",
"languageOption10": "Galego (GL)",
+ "languageOption11": "Italiano (IT)",
"firstDayOfWeekOption0": "Domingo",
"firstDayOfWeekOption1": "Segunda",
"firstDayOfWeekOption2": "Terça",
diff --git a/frontend/app/src/i18n/tw/generalItems.json b/frontend/app/src/i18n/tw/generalItems.json
index 70f2d872c..8f6468b94 100644
--- a/frontend/app/src/i18n/tw/generalItems.json
+++ b/frontend/app/src/i18n/tw/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinese (Simplified)",
"languageOption9": "Chinese (Traditional)",
"languageOption10": "Galician (GL)",
+ "languageOption11": "Italian (IT)",
"firstDayOfWeekOption0": "Sunday",
"firstDayOfWeekOption1": "Monday",
"firstDayOfWeekOption2": "Tuesday",
diff --git a/frontend/app/src/i18n/us/generalItems.json b/frontend/app/src/i18n/us/generalItems.json
index 70f2d872c..8f6468b94 100644
--- a/frontend/app/src/i18n/us/generalItems.json
+++ b/frontend/app/src/i18n/us/generalItems.json
@@ -16,6 +16,7 @@
"languageOption8": "Chinese (Simplified)",
"languageOption9": "Chinese (Traditional)",
"languageOption10": "Galician (GL)",
+ "languageOption11": "Italian (IT)",
"firstDayOfWeekOption0": "Sunday",
"firstDayOfWeekOption1": "Monday",
"firstDayOfWeekOption2": "Tuesday",
diff --git a/frontend/app/src/views/SignUpView.vue b/frontend/app/src/views/SignUpView.vue
index 4980d407c..cf451ecc9 100644
--- a/frontend/app/src/views/SignUpView.vue
+++ b/frontend/app/src/views/SignUpView.vue
@@ -126,6 +126,7 @@
+
From 016120266659087f254c6247919326d76b54beb8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Vit=C3=B3ria=20Silva?=
Date: Mon, 3 Nov 2025 11:21:51 +0000
Subject: [PATCH 3/4] Squashed commit of the following:
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
commit 4ffbbeac6d77f7544a9d531f76fd06a3a259f1b1
Author: João Vitória Silva
Date: Fri Oct 31 16:58:35 2025 +0000
New translations usergoalsstatscomponent.json (Catalan)
commit 40969032a5e530069d2d8b3c9e7381f9fd7780ab
Author: João Vitória Silva
Date: Fri Oct 31 16:58:34 2025 +0000
New translations activityitems.json (Catalan)
commit eaae246fcb8f139b37c8c16dc467df0367f10e05
Author: João Vitória Silva
Date: Fri Oct 31 16:58:33 2025 +0000
New translations searchview.json (Catalan)
commit 3bc94a50fdc0b838300a9f5bb30c1edd9619ed31
Author: João Vitória Silva
Date: Fri Oct 31 16:58:32 2025 +0000
New translations settingsuserprofilezonecomponent.json (Catalan)
commit 4639c8a14c2731b1d5c4bd4e684f67cc7a14994f
Author: João Vitória Silva
Date: Fri Oct 31 16:58:31 2025 +0000
New translations editactivitymodalcomponent.json (Catalan)
commit baf157b7c0c3539f6ba1384284fddc223796e7bc
Author: João Vitória Silva
Date: Fri Oct 31 13:52:29 2025 +0000
New translations settingsimportzonecomponent.json (Portuguese)
commit 87da2580eabb514cee587577ed4d8bf9d5a99ed1
Author: João Vitória Silva
Date: Fri Oct 31 13:52:28 2025 +0000
New translations activityitems.json (Portuguese)
commit 06164ce1174ddbcd608f0d1241fbeb8384122be4
Author: João Vitória Silva
Date: Fri Oct 31 13:52:27 2025 +0000
New translations editactivitymodalcomponent.json (Portuguese)
commit 0f7c480dd531fa44bbdd533338d0c0ff44dee9aa
Author: João Vitória Silva
Date: Fri Oct 31 12:00:54 2025 +0000
New translations activityitems.json (Galician)
commit 2895aa9185912278c5fcb314d6bf139aaea14f23
Author: João Vitória Silva
Date: Fri Oct 31 12:00:53 2025 +0000
New translations editactivitymodalcomponent.json (Galician)
commit 1b98b78506776c7e685d411748917c84dbfe9785
Author: João Vitória Silva
Date: Fri Oct 31 12:00:51 2025 +0000
New translations activityitems.json (Chinese Traditional)
commit b13ada8ce0d9ed4fc434aef67444815e0b3e0ef7
Author: João Vitória Silva
Date: Fri Oct 31 12:00:50 2025 +0000
New translations activityitems.json (Chinese Simplified)
commit 2f1b2ec59130378164aa32018b0af1a32826159f
Author: João Vitória Silva
Date: Fri Oct 31 12:00:49 2025 +0000
New translations editactivitymodalcomponent.json (Chinese Traditional)
commit ccd9a6dac56618f1eb3ec916ad5d5bce30cf28c2
Author: João Vitória Silva
Date: Fri Oct 31 12:00:48 2025 +0000
New translations editactivitymodalcomponent.json (Chinese Simplified)
commit 474402aa76e4f499030e24376bc1e17536a417f8
Author: João Vitória Silva
Date: Fri Oct 31 12:00:47 2025 +0000
New translations activityitems.json (Portuguese)
commit d6510ff3af62f7296300751f35a7647fc9f27667
Author: João Vitória Silva
Date: Fri Oct 31 12:00:45 2025 +0000
New translations activityitems.json (Dutch)
commit 8f9f86c34c6015b438da2729586a5f0302e00e9c
Author: João Vitória Silva
Date: Fri Oct 31 12:00:44 2025 +0000
New translations activityitems.json (German)
commit 5cae1dfd23d1d7f26bb932c08b7bd1ecf74bbaa3
Author: João Vitória Silva
Date: Fri Oct 31 12:00:43 2025 +0000
New translations activityitems.json (Catalan)
commit 717dba6251847837c0a8b1b8f47c41c9e5dbcd0c
Author: João Vitória Silva
Date: Fri Oct 31 12:00:42 2025 +0000
New translations activityitems.json (Spanish)
commit a9bdd58cb48373627eb6275a5747ea0f4e208dfb
Author: João Vitória Silva
Date: Fri Oct 31 12:00:41 2025 +0000
New translations activityitems.json (French)
commit 72799dffbb730d6b7d8136e39d486aef558269ce
Author: João Vitória Silva
Date: Fri Oct 31 12:00:39 2025 +0000
New translations editactivitymodalcomponent.json (Portuguese)
commit 9713dedfdb60e05d390de0ba12769f302a7d0afd
Author: João Vitória Silva
Date: Fri Oct 31 12:00:38 2025 +0000
New translations editactivitymodalcomponent.json (Dutch)
commit 214881566fc89269d710cb6abbc67f2dfbdcff6b
Author: João Vitória Silva
Date: Fri Oct 31 12:00:37 2025 +0000
New translations editactivitymodalcomponent.json (German)
commit 7bb59ce7a13f093095d1aca187a0eb2e56e70c0c
Author: João Vitória Silva
Date: Fri Oct 31 12:00:36 2025 +0000
New translations editactivitymodalcomponent.json (Catalan)
commit 279e1359871589b8fbb301f6c8738b8742070c7b
Author: João Vitória Silva
Date: Fri Oct 31 12:00:34 2025 +0000
New translations editactivitymodalcomponent.json (Spanish)
commit f8b72c35eb8f07aa084ec793772e99c4d56c1a2c
Author: João Vitória Silva
Date: Fri Oct 31 12:00:33 2025 +0000
New translations editactivitymodalcomponent.json (French)
---
frontend/app/src/i18n/ca/activityItems.json | 5 +++--
.../activities/modals/editActivityModalComponent.json | 5 +++--
.../settings/settingsUserProfileZoneComponent.json | 2 +-
.../ca/components/users/userGoalsStatsComponent.json | 2 +-
frontend/app/src/i18n/ca/searchView.json | 2 +-
frontend/app/src/i18n/cn/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
frontend/app/src/i18n/de/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
frontend/app/src/i18n/es/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
frontend/app/src/i18n/fr/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
frontend/app/src/i18n/gl/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
frontend/app/src/i18n/nl/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
frontend/app/src/i18n/pt/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
.../settings/settingsImportZoneComponent.json | 10 +++++-----
frontend/app/src/i18n/tw/activityItems.json | 3 ++-
.../activities/modals/editActivityModalComponent.json | 3 ++-
22 files changed, 46 insertions(+), 28 deletions(-)
diff --git a/frontend/app/src/i18n/ca/activityItems.json b/frontend/app/src/i18n/ca/activityItems.json
index bee54f3ca..49fc85539 100644
--- a/frontend/app/src/i18n/ca/activityItems.json
+++ b/frontend/app/src/i18n/ca/activityItems.json
@@ -1,5 +1,5 @@
{
- "run": "Córrer",
+ "run": "Correr",
"trailRun": "Trail Run",
"virtualRun": "Cursa virtual",
"ride": "Muntar",
@@ -38,5 +38,6 @@
"iceSkate": "Patinatge sobre gel",
"soccer": "Futbol",
"padel": "Pàdel",
+ "treadmillRun": "Correr en cinta",
"labelWorkout": " entrenament"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/ca/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/ca/components/activities/modals/editActivityModalComponent.json
index 8742f61a4..dd4af9f5a 100644
--- a/frontend/app/src/i18n/ca/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/ca/components/activities/modals/editActivityModalComponent.json
@@ -7,7 +7,7 @@
"modalEditActivityNameLabel": "Nom",
"modalEditActivityNamePlaceholder": "Nom (màx 250 caràcters)",
"modalEditActivityTypeLabel": "Tipus",
- "modalEditActivityTypeOption1": "Córrer",
+ "modalEditActivityTypeOption1": "Correr",
"modalEditActivityTypeOption2": "Cursa de muntanya",
"modalEditActivityTypeOption3": "Cursa virtual",
"modalEditActivityTypeOption4": "Muntar",
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Patinatge sobre gel",
"modalEditActivityTypeOption38": "Futbol",
"modalEditActivityTypeOption39": "Pàdel",
+ "modalEditActivityTypeOption40": "Correr en cinta",
"modalEditActivityVisibilityLabel": "Visibilitat",
"modalEditActivityVisibilityOption0": "Públic",
"modalEditActivityVisibilityOption1": "Seguidors",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Amaga equipament",
"successActivityEdit": "Activitat editada correctament",
"errorActivityEdit": "Error editant activitat"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/ca/components/settings/settingsUserProfileZoneComponent.json b/frontend/app/src/i18n/ca/components/settings/settingsUserProfileZoneComponent.json
index d8499f96c..d95072952 100644
--- a/frontend/app/src/i18n/ca/components/settings/settingsUserProfileZoneComponent.json
+++ b/frontend/app/src/i18n/ca/components/settings/settingsUserProfileZoneComponent.json
@@ -25,7 +25,7 @@
"userPhotoDeleteError": "Error esborrant foto de perfil",
"titleDefaultGear": "Equipament per defecte",
"subTitleShoeActivities": "Activitats de calçat",
- "subTitleRun": "Córrer",
+ "subTitleRun": "Correr",
"subTitleTrailRun": "Cursa de muntanya",
"subTitleVirtualRun": "Cursa virtual",
"subTitleWalk": "Caminar",
diff --git a/frontend/app/src/i18n/ca/components/users/userGoalsStatsComponent.json b/frontend/app/src/i18n/ca/components/users/userGoalsStatsComponent.json
index 036a4f7ab..214312742 100644
--- a/frontend/app/src/i18n/ca/components/users/userGoalsStatsComponent.json
+++ b/frontend/app/src/i18n/ca/components/users/userGoalsStatsComponent.json
@@ -1,6 +1,6 @@
{
"title": "Objectius",
- "activityTypeRun": "Córrer",
+ "activityTypeRun": "Correr",
"activityTypeBike": "Bici",
"activityTypeSwim": "Natació",
"activityTypeWalk": "Caminar",
diff --git a/frontend/app/src/i18n/ca/searchView.json b/frontend/app/src/i18n/ca/searchView.json
index 450230312..9bc286403 100644
--- a/frontend/app/src/i18n/ca/searchView.json
+++ b/frontend/app/src/i18n/ca/searchView.json
@@ -4,7 +4,7 @@
"searchSelectOptionUser": "Usuari",
"searchSelectOptionGear": "Equipament",
"searchSelectActivityType0": "Tot",
- "searchSelectActivityType1": "Córrer",
+ "searchSelectActivityType1": "Correr",
"searchSelectActivityType2": "Muntar",
"searchSelectActivityType3": "Natació",
"searchSelectActivityType4": "Entrenament",
diff --git a/frontend/app/src/i18n/cn/activityItems.json b/frontend/app/src/i18n/cn/activityItems.json
index e52546670..e71b9a3e9 100644
--- a/frontend/app/src/i18n/cn/activityItems.json
+++ b/frontend/app/src/i18n/cn/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "滑冰",
"soccer": "足球",
"padel": "配斗球",
+ "treadmillRun": "Treadmill run",
"labelWorkout": " 运动"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/cn/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/cn/components/activities/modals/editActivityModalComponent.json
index 7f188eadb..7d4588fa0 100644
--- a/frontend/app/src/i18n/cn/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/cn/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "滑冰",
"modalEditActivityTypeOption38": "足球",
"modalEditActivityTypeOption39": "配斗球",
+ "modalEditActivityTypeOption40": "Treadmill run",
"modalEditActivityVisibilityLabel": "可见性",
"modalEditActivityVisibilityOption0": "公开",
"modalEditActivityVisibilityOption1": "粉丝",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "隐藏装备",
"successActivityEdit": "活动编辑成功",
"errorActivityEdit": "活动编辑失败"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/de/activityItems.json b/frontend/app/src/i18n/de/activityItems.json
index 6625f57f7..46db4bbb8 100644
--- a/frontend/app/src/i18n/de/activityItems.json
+++ b/frontend/app/src/i18n/de/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "Ice skate",
"soccer": "Soccer",
"padel": "Padel",
+ "treadmillRun": "Treadmill run",
"labelWorkout": " Workout"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/de/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/de/components/activities/modals/editActivityModalComponent.json
index 7dd6ecb95..c91a11737 100644
--- a/frontend/app/src/i18n/de/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/de/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Ice skate",
"modalEditActivityTypeOption38": "Soccer",
"modalEditActivityTypeOption39": "Padel",
+ "modalEditActivityTypeOption40": "Treadmill run",
"modalEditActivityVisibilityLabel": "Sichtbarkeit",
"modalEditActivityVisibilityOption0": "Öffentlich",
"modalEditActivityVisibilityOption1": "Follower",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Ausrüstung ausblenden",
"successActivityEdit": "Aktivität erfolgreich bearbeitet",
"errorActivityEdit": "Fehler beim Bearbeiten der Aktivität"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/es/activityItems.json b/frontend/app/src/i18n/es/activityItems.json
index 99a7b4d9f..d28abd021 100644
--- a/frontend/app/src/i18n/es/activityItems.json
+++ b/frontend/app/src/i18n/es/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "Ice skate",
"soccer": "Soccer",
"padel": "Padel",
+ "treadmillRun": "Treadmill run",
"labelWorkout": " entrenamiento"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/es/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/es/components/activities/modals/editActivityModalComponent.json
index 1456f40d7..2c7e4c85d 100644
--- a/frontend/app/src/i18n/es/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/es/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Ice skate",
"modalEditActivityTypeOption38": "Soccer",
"modalEditActivityTypeOption39": "Padel",
+ "modalEditActivityTypeOption40": "Treadmill run",
"modalEditActivityVisibilityLabel": "Visibilidad",
"modalEditActivityVisibilityOption0": "Público",
"modalEditActivityVisibilityOption1": "Seguidores",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Ocultar equipo",
"successActivityEdit": "Actividad editada correctamente",
"errorActivityEdit": "Error al editar actividad"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/fr/activityItems.json b/frontend/app/src/i18n/fr/activityItems.json
index 0bf315638..38c023bc6 100644
--- a/frontend/app/src/i18n/fr/activityItems.json
+++ b/frontend/app/src/i18n/fr/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "Ice skate",
"soccer": "Soccer",
"padel": "Padel",
+ "treadmillRun": "Treadmill run",
"labelWorkout": " workout"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/fr/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/fr/components/activities/modals/editActivityModalComponent.json
index 0fcb8f194..ed500d550 100644
--- a/frontend/app/src/i18n/fr/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/fr/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Ice skate",
"modalEditActivityTypeOption38": "Soccer",
"modalEditActivityTypeOption39": "Padel",
+ "modalEditActivityTypeOption40": "Treadmill run",
"modalEditActivityVisibilityLabel": "Visibilité",
"modalEditActivityVisibilityOption0": "Publique",
"modalEditActivityVisibilityOption1": "Abonnés",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Masquer l'équipement",
"successActivityEdit": "L'activité a bien été modifiée",
"errorActivityEdit": "Erreur lors de la modification de l'activité"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/gl/activityItems.json b/frontend/app/src/i18n/gl/activityItems.json
index 73f3778e7..534513350 100644
--- a/frontend/app/src/i18n/gl/activityItems.json
+++ b/frontend/app/src/i18n/gl/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "Patinaxe sobre xeo",
"soccer": "Fútbol",
"padel": "Pádel",
+ "treadmillRun": "Treadmill run",
"labelWorkout": " adestramento"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/gl/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/gl/components/activities/modals/editActivityModalComponent.json
index 718facc3a..61fe250f6 100644
--- a/frontend/app/src/i18n/gl/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/gl/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Patinar sobre xeo",
"modalEditActivityTypeOption38": "Fútbol",
"modalEditActivityTypeOption39": "Pádel",
+ "modalEditActivityTypeOption40": "Treadmill run",
"modalEditActivityVisibilityLabel": "Visibilidade",
"modalEditActivityVisibilityOption0": "Pública",
"modalEditActivityVisibilityOption1": "Para seguidoras",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Ocultar equipamento",
"successActivityEdit": "Actividade editada correctamente",
"errorActivityEdit": "Erro ao editar a actividade"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/nl/activityItems.json b/frontend/app/src/i18n/nl/activityItems.json
index 0bf315638..38c023bc6 100644
--- a/frontend/app/src/i18n/nl/activityItems.json
+++ b/frontend/app/src/i18n/nl/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "Ice skate",
"soccer": "Soccer",
"padel": "Padel",
+ "treadmillRun": "Treadmill run",
"labelWorkout": " workout"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/nl/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/nl/components/activities/modals/editActivityModalComponent.json
index b370bb22b..c4fa7016e 100644
--- a/frontend/app/src/i18n/nl/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/nl/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Ice skate",
"modalEditActivityTypeOption38": "Soccer",
"modalEditActivityTypeOption39": "Padel",
+ "modalEditActivityTypeOption40": "Treadmill run",
"modalEditActivityVisibilityLabel": "Zichtbaarheid",
"modalEditActivityVisibilityOption0": "Openbaar",
"modalEditActivityVisibilityOption1": "Volgers",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Verberg uitrusting",
"successActivityEdit": "Activiteit succesvol bewerkt",
"errorActivityEdit": "Fout bij bewerken activiteit"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/pt/activityItems.json b/frontend/app/src/i18n/pt/activityItems.json
index 606dec559..8a33e0ad1 100644
--- a/frontend/app/src/i18n/pt/activityItems.json
+++ b/frontend/app/src/i18n/pt/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "Patinagem no gelo",
"soccer": "Futebol",
"padel": "Padel",
+ "treadmillRun": "Corrida de passadeira",
"labelWorkout": " treino"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/pt/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/pt/components/activities/modals/editActivityModalComponent.json
index 39ad472fa..06f7228d8 100644
--- a/frontend/app/src/i18n/pt/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/pt/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Patinagem no gelo",
"modalEditActivityTypeOption38": "Futebol",
"modalEditActivityTypeOption39": "Padel",
+ "modalEditActivityTypeOption40": "Corrida de passadeira",
"modalEditActivityVisibilityLabel": "Visibilidade",
"modalEditActivityVisibilityOption0": "Público",
"modalEditActivityVisibilityOption1": "Seguidores",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Ocultar equipamento",
"successActivityEdit": "Atividade editada com sucesso",
"errorActivityEdit": "Erro ao editar atividade"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/pt/components/settings/settingsImportZoneComponent.json b/frontend/app/src/i18n/pt/components/settings/settingsImportZoneComponent.json
index ae8e5fe48..06f371972 100644
--- a/frontend/app/src/i18n/pt/components/settings/settingsImportZoneComponent.json
+++ b/frontend/app/src/i18n/pt/components/settings/settingsImportZoneComponent.json
@@ -4,15 +4,15 @@
"buttonBulkImport": "Importar atividades",
"loadingMessageBulkImport": "A importar atividades de ficheiros...",
"errorMessageUnableToImportActivities": "Ocorreu um erro ao importar as atividades",
- "importTitle": "Import",
+ "importTitle": "Importar",
"stravaGearImportTitle": "Importar equipamento do Strava",
"stravaGearImportBody": "Importar equipamento de um Strava takeout (guardados na diretoria data/activity_files/bulk_import)",
"stravaGearImportbuttonBikes": "Importar bicicletas do Strava",
"loadingMessageStravaBikesImport": "A importar bicicletas do Strava...",
"successMessageStravaBikesImport": "Bicicletas importadas do Strava com sucesso",
"errorMessageUnableToImportBikes": "Ocorreu um erro ao importar as bicicletas do Strava",
- "stravaImportbuttonShoes": "Import Strava shoes",
- "loadingMessageStravaShoesImport": "Importing Strava shoes from file...",
- "successMessageStravaShoesImport": "Strava shoes imported successfully",
- "errorMessageUnableToImportShoes": "An error occurred while importing Strava shoes"
+ "stravaImportbuttonShoes": "Importar calçado do Strava",
+ "loadingMessageStravaShoesImport": "A importar calçado do Strava...",
+ "successMessageStravaShoesImport": "Calçado importado do Strava com sucesso",
+ "errorMessageUnableToImportShoes": "Ocorreu um erro ao importar o calçado do Strava"
}
diff --git a/frontend/app/src/i18n/tw/activityItems.json b/frontend/app/src/i18n/tw/activityItems.json
index 0bf315638..38c023bc6 100644
--- a/frontend/app/src/i18n/tw/activityItems.json
+++ b/frontend/app/src/i18n/tw/activityItems.json
@@ -38,5 +38,6 @@
"iceSkate": "Ice skate",
"soccer": "Soccer",
"padel": "Padel",
+ "treadmillRun": "Treadmill run",
"labelWorkout": " workout"
-}
+}
\ No newline at end of file
diff --git a/frontend/app/src/i18n/tw/components/activities/modals/editActivityModalComponent.json b/frontend/app/src/i18n/tw/components/activities/modals/editActivityModalComponent.json
index e5f929c94..49ea4a727 100644
--- a/frontend/app/src/i18n/tw/components/activities/modals/editActivityModalComponent.json
+++ b/frontend/app/src/i18n/tw/components/activities/modals/editActivityModalComponent.json
@@ -46,6 +46,7 @@
"modalEditActivityTypeOption37": "Ice skate",
"modalEditActivityTypeOption38": "Soccer",
"modalEditActivityTypeOption39": "Padel",
+ "modalEditActivityTypeOption40": "Treadmill run",
"modalEditActivityVisibilityLabel": "Visibility",
"modalEditActivityVisibilityOption0": "Public",
"modalEditActivityVisibilityOption1": "Followers",
@@ -65,4 +66,4 @@
"modalEditActivityHideGearLabel": "Hide gear",
"successActivityEdit": "Activity edited successfully",
"errorActivityEdit": "Error editing activity"
-}
+}
\ No newline at end of file
From d193011793a92b82eb4fd5f7e9b1d7d8ef3c2bbc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jo=C3=A3o=20Vit=C3=B3ria=20Silva?=
Date: Mon, 3 Nov 2025 11:27:27 +0000
Subject: [PATCH 4/4] Bump version to v0.15.6
---
backend/app/core/config.py | 2 +-
backend/pyproject.toml | 2 +-
frontend/app/package-lock.json | 4 ++--
frontend/app/package.json | 2 +-
frontend/app/src/components/FooterComponent.vue | 2 +-
5 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/backend/app/core/config.py b/backend/app/core/config.py
index 845ba8b13..7a3d65cc8 100644
--- a/backend/app/core/config.py
+++ b/backend/app/core/config.py
@@ -7,7 +7,7 @@ from cryptography.fernet import Fernet
import core.logger as core_logger
# Constant related to version
-API_VERSION = "v0.15.5"
+API_VERSION = "v0.15.6"
LICENSE_NAME = "GNU Affero General Public License v3.0 or later"
LICENSE_IDENTIFIER = "AGPL-3.0-or-later"
LICENSE_URL = "https://spdx.org/licenses/AGPL-3.0-or-later.html"
diff --git a/backend/pyproject.toml b/backend/pyproject.toml
index 86f59d3c4..1476ccf20 100644
--- a/backend/pyproject.toml
+++ b/backend/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "endurain"
-version = "0.15.5"
+version = "0.15.6"
description = "Endurain API for the Endurain app"
authors = ["João Vitória Silva <8648976+joaovitoriasilva@users.noreply.github.com>"]
readme = "README.md"
diff --git a/frontend/app/package-lock.json b/frontend/app/package-lock.json
index b5bce3f9f..4c3ca7bc8 100644
--- a/frontend/app/package-lock.json
+++ b/frontend/app/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "endurain",
- "version": "0.15.5",
+ "version": "0.15.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "endurain",
- "version": "0.15.5",
+ "version": "0.15.6",
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.7.1",
"@fortawesome/free-brands-svg-icons": "^6.7.1",
diff --git a/frontend/app/package.json b/frontend/app/package.json
index b89a56297..c9511c145 100644
--- a/frontend/app/package.json
+++ b/frontend/app/package.json
@@ -1,6 +1,6 @@
{
"name": "endurain",
- "version": "0.15.5",
+ "version": "0.15.6",
"private": true,
"type": "module",
"scripts": {
diff --git a/frontend/app/src/components/FooterComponent.vue b/frontend/app/src/components/FooterComponent.vue
index af317b2dd..2e3fbe5e4 100644
--- a/frontend/app/src/components/FooterComponent.vue
+++ b/frontend/app/src/components/FooterComponent.vue
@@ -23,7 +23,7 @@
- • v0.15.5
+ • v0.15.6
![]()