Merge pull request #618 from LucaFontanot/i18n-ita

i18n: Add italian
This commit is contained in:
Sid
2026-05-20 20:37:48 -07:00
committed by GitHub
11 changed files with 552 additions and 18 deletions
+28 -8
View File
@@ -9,10 +9,14 @@ import commonEs from "../src/i18n/locales/es/common.json";
import dialogsEs from "../src/i18n/locales/es/dialogs.json";
import commonFr from "../src/i18n/locales/fr/common.json";
import dialogsFr from "../src/i18n/locales/fr/dialogs.json";
import commonIt from "../src/i18n/locales/it/common.json";
import dialogsIt from "../src/i18n/locales/it/dialogs.json";
import commonJa from "../src/i18n/locales/ja-JP/common.json";
import dialogsJa from "../src/i18n/locales/ja-JP/dialogs.json";
import commonKo from "../src/i18n/locales/ko-KR/common.json";
import dialogsKo from "../src/i18n/locales/ko-KR/dialogs.json";
import commonRu from "../src/i18n/locales/ru/common.json";
import dialogsRu from "../src/i18n/locales/ru/dialogs.json";
import commonTr from "../src/i18n/locales/tr/common.json";
import dialogsTr from "../src/i18n/locales/tr/dialogs.json";
import commonVi from "../src/i18n/locales/vi/common.json";
@@ -22,21 +26,35 @@ import dialogsZh from "../src/i18n/locales/zh-CN/dialogs.json";
import commonZhTw from "../src/i18n/locales/zh-TW/common.json";
import dialogsZhTw from "../src/i18n/locales/zh-TW/dialogs.json";
type Locale = "en" | "zh-CN" | "zh-TW" | "es" | "fr" | "ja-JP" | "ko-KR" | "tr" | "ar" | "vi";
type Locale =
| "en"
| "ar"
| "es"
| "fr"
| "it"
| "ja-JP"
| "ko-KR"
| "ru"
| "tr"
| "vi"
| "zh-CN"
| "zh-TW";
type Namespace = "common" | "dialogs";
type MessageMap = Record<string, unknown>;
const messages: Record<Locale, Record<Namespace, MessageMap>> = {
en: { common: commonEn, dialogs: dialogsEn },
"zh-CN": { common: commonZh, dialogs: dialogsZh },
"zh-TW": { common: commonZhTw, dialogs: dialogsZhTw },
ar: { common: commonAr, dialogs: dialogsAr },
es: { common: commonEs, dialogs: dialogsEs },
fr: { common: commonFr, dialogs: dialogsFr },
it: { common: commonIt, dialogs: dialogsIt },
"ja-JP": { common: commonJa, dialogs: dialogsJa },
"ko-KR": { common: commonKo, dialogs: dialogsKo },
ru: { common: commonRu, dialogs: dialogsRu },
tr: { common: commonTr, dialogs: dialogsTr },
ar: { common: commonAr, dialogs: dialogsAr },
vi: { common: commonVi, dialogs: dialogsVi },
"zh-CN": { common: commonZh, dialogs: dialogsZh },
"zh-TW": { common: commonZhTw, dialogs: dialogsZhTw },
};
let currentLocale: Locale = "en";
@@ -44,15 +62,17 @@ let currentLocale: Locale = "en";
export function setMainLocale(locale: string) {
if (
locale === "en" ||
locale === "zh-CN" ||
locale === "zh-TW" ||
locale === "ar" ||
locale === "es" ||
locale === "fr" ||
locale === "it" ||
locale === "ja-JP" ||
locale === "ko-KR" ||
locale === "ru" ||
locale === "tr" ||
locale === "ar" ||
locale === "vi"
locale === "vi" ||
locale === "zh-CN" ||
locale === "zh-TW"
) {
currentLocale = locale;
}
+1
View File
@@ -112,6 +112,7 @@ export function I18nProvider({ children }: { children: ReactNode }) {
useEffect(() => {
document.documentElement.lang = locale;
window.electronAPI?.setLocale?.(locale);
}, [locale]);
useEffect(() => {
@@ -4,6 +4,7 @@ import arDialogs from "@/i18n/locales/ar/dialogs.json";
import enDialogs from "@/i18n/locales/en/dialogs.json";
import esDialogs from "@/i18n/locales/es/dialogs.json";
import frDialogs from "@/i18n/locales/fr/dialogs.json";
import itDialogs from "@/i18n/locales/it/dialogs.json";
import jaJPDialogs from "@/i18n/locales/ja-JP/dialogs.json";
import koKRDialogs from "@/i18n/locales/ko-KR/dialogs.json";
import ruDialogs from "@/i18n/locales/ru/dialogs.json";
@@ -39,16 +40,17 @@ const keysThatMayBeEmpty = new Set<(typeof tutorialHelpKeys)[number]>(["step1Des
const dialogsByLocale = {
en: enDialogs,
"zh-CN": zhCNDialogs,
"zh-TW": zhTWDialogs,
ar: arDialogs,
es: esDialogs,
fr: frDialogs,
tr: trDialogs,
it: itDialogs,
"ja-JP": jaJPDialogs,
"ko-KR": koKRDialogs,
ru: ruDialogs,
"ja-JP": jaJPDialogs,
ar: arDialogs,
tr: trDialogs,
vi: viDialogs,
"zh-CN": zhCNDialogs,
"zh-TW": zhTWDialogs,
} satisfies Record<Locale, { tutorial: Record<string, unknown> }>;
describe("TutorialHelp translations", () => {
+6 -5
View File
@@ -1,16 +1,17 @@
export const DEFAULT_LOCALE = "en" as const;
export const SUPPORTED_LOCALES = [
"en",
"zh-CN",
"zh-TW",
"ar",
"es",
"fr",
"tr",
"ko-KR",
"it",
"ja-JP",
"ar",
"ko-KR",
"ru",
"tr",
"vi",
"zh-CN",
"zh-TW",
] as const;
export const I18N_NAMESPACES = [
"common",
+50
View File
@@ -0,0 +1,50 @@
{
"actions": {
"cancel": "Annulla",
"save": "Salva",
"delete": "Elimina",
"close": "Chiudi",
"share": "Condividi",
"done": "Fatto",
"open": "Apri",
"upload": "Carica",
"export": "Esporta",
"showInFolder": "Mostra nella cartella",
"file": "File",
"edit": "Modifica",
"view": "Visualizza",
"window": "Finestra",
"quit": "Esci",
"stopRecording": "Interrompi registrazione",
"undo": "Annulla",
"redo": "Ripeti",
"cut": "Taglia",
"copy": "Copia",
"paste": "Incolla",
"selectAll": "Seleziona tutto",
"minimize": "Riduci a icona",
"reload": "Ricarica",
"forceReload": "Forza ricarica",
"toggleDevTools": "Attiva/disattiva strumenti sviluppatore",
"actualSize": "Dimensione effettiva",
"zoomIn": "Ingrandisci",
"zoomOut": "Riduci",
"toggleFullScreen": "Attiva/disattiva schermo intero",
"recordingStatus": "Registrazione: {{source}}",
"about": "Info su OpenScreen",
"services": "Servizi",
"hide": "Nascondi OpenScreen",
"hideOthers": "Nascondi gli altri",
"unhide": "Mostra tutto"
},
"playback": {
"play": "Riproduci",
"pause": "Pausa",
"fullscreen": "Schermo intero",
"exitFullscreen": "Esci dallo schermo intero"
},
"locale": {
"name": "Italiano",
"short": "IT"
}
}
+70
View File
@@ -0,0 +1,70 @@
{
"export": {
"complete": "Esportazione completata",
"yourFormatReady": "Il tuo {{format}} è pronto",
"showInFolder": "Mostra nella cartella",
"finalizingVideo": "Finalizzazione esportazione video...",
"compilingGifProgress": "Compilazione GIF... {{progress}}%",
"compilingGifWait": "Compilazione GIF... Potrebbe richiedere del tempo",
"takeMoment": "Ci potrebbe impiegare un momento...",
"failed": "Esportazione fallita",
"tryAgain": "Riprova",
"finalizingVideoTitle": "Finalizzazione video",
"compilingGif": "Compilazione GIF",
"exportingFormat": "Esportazione {{format}}",
"compiling": "Compilazione",
"renderingFrames": "Rendering fotogrammi",
"processing": "Elaborazione...",
"finalizing": "Finalizzazione...",
"compilingStatus": "Compilazione...",
"status": "Stato",
"format": "Formato",
"frames": "Fotogrammi",
"cancelExport": "Annulla esportazione",
"savedSuccessfully": "{{format}} salvato con successo!"
},
"tutorial": {
"triggerLabel": "Come funziona il taglio",
"title": "Come funziona il taglio",
"description": "Capire come eliminare le parti indesiderate del tuo video.",
"explanationBefore": "Lo strumento Taglia funziona definendo i segmenti che vuoi",
"remove": "rimuovere",
"explanationMiddle": " — tutto ciò",
"covered": "coperto",
"explanationAfter": "da un segmento rosso verrà eliminato durante l'esportazione.",
"visualExample": "Esempio visivo",
"removed": "RIMOSSO",
"kept": "Mantenuto",
"part1": "Parte 1",
"part2": "Parte 2",
"part3": "Parte 3",
"finalVideo": "Video finale",
"step1Title": "1. Aggiungi taglio",
"step1DescriptionBefore": "Premi ",
"step1DescriptionAfter": " o clicca sull'icona delle forbici per contrassegnare una sezione da rimuovere.",
"step2Title": "2. Regolazione",
"step2Description": "Trascina i bordi della regione rossa per coprire esattamente ciò che vuoi eliminare."
},
"unsavedChanges": {
"title": "Modifiche non salvate",
"message": "Hai delle modifiche non salvate.",
"detail": "Vuoi salvare il progetto prima di chiudere?",
"saveAndClose": "Salva e chiudi",
"discardAndClose": "Scarta e chiudi",
"loadProject": "Carica progetto…",
"saveProject": "Salva progetto…",
"saveProjectAs": "Salva progetto come…"
},
"fileDialogs": {
"saveGif": "Salva GIF esportata",
"saveVideo": "Salva video esportato",
"selectVideo": "Seleziona file video",
"saveProject": "Salva progetto OpenScreen",
"openProject": "Apri progetto OpenScreen",
"gifImage": "Immagine GIF",
"mp4Video": "Video MP4",
"videoFiles": "File video",
"openscreenProject": "Progetto OpenScreen",
"allFiles": "Tutti i file"
}
}
+46
View File
@@ -0,0 +1,46 @@
{
"newRecording": {
"title": "Torna al registratore",
"description": "La sessione corrente è stata salvata.",
"cancel": "Annulla",
"confirm": "Conferma"
},
"loadingVideo": "Caricamento video...",
"errors": {
"noVideoLoaded": "Nessun video caricato",
"videoNotReady": "Video non pronto",
"unableToDetermineSourcePath": "Impossibile determinare il percorso del video sorgente",
"failedToSaveGif": "Impossibile salvare la GIF",
"gifExportFailed": "Esportazione GIF fallita",
"failedToSaveVideo": "Impossibile salvare il video",
"exportFailed": "Esportazione fallita",
"exportFailedWithError": "Esportazione fallita: {{error}}",
"exportBackgroundLoadFailed": "Esportazione fallita: impossibile caricare l'immagine di sfondo ({{url}})",
"failedToSaveExport": "Impossibile salvare l'esportazione",
"failedToSaveExportedVideo": "Impossibile salvare il video esportato",
"failedToRevealInFolder": "Errore durante la visualizzazione nella cartella: {{error}}"
},
"export": {
"canceled": "Esportazione annullata",
"exportedSuccessfully": "{{format}} esportato con successo"
},
"project": {
"saveCanceled": "Salvataggio progetto annullato",
"failedToSave": "Impossibile salvare il progetto",
"savedTo": "Progetto salvato in {{path}}",
"failedToLoad": "Impossibile caricare il progetto",
"invalidFormat": "Formato file progetto non valido",
"loadedFrom": "Progetto caricato da {{path}}"
},
"recording": {
"failedCameraAccess": "Impossibile richiedere l'accesso alla fotocamera.",
"cameraBlocked": "L'accesso alla fotocamera è bloccato. Abilita nelle impostazioni di sistema l'utilizzo della webcam.",
"systemAudioUnavailable": "Audio di sistema non disponibile. Registrazione senza audio di sistema.",
"microphoneDenied": "Accesso al microfono negato. La registrazione continuerà senza audio.",
"cameraDenied": "Accesso alla fotocamera negato. La registrazione continuerà senza webcam.",
"cameraDisconnected": "Webcam disconnessa.",
"cameraNotFound": "Fotocamera non trovata.",
"permissionDenied": "Autorizzazione di registrazione negata. Consenti la registrazione dello schermo.",
"accessibilityAllowAndRetry": "Consenti l'accesso all'accessibilità per OpenScreen, poi premi di nuovo registra per avviare il conto alla rovescia."
}
}
+47
View File
@@ -0,0 +1,47 @@
{
"tooltips": {
"hideHUD": "Nascondi",
"closeApp": "Chiudi app",
"restartRecording": "Riavvia registrazione",
"cancelRecording": "Annulla registrazione",
"pauseRecording": "Metti in pausa registrazione",
"resumeRecording": "Riprendi registrazione",
"openVideoFile": "Apri file video",
"openProject": "Apri progetto"
},
"audio": {
"enableSystemAudio": "Abilita audio di sistema",
"disableSystemAudio": "Disabilita audio di sistema",
"enableMicrophone": "Abilita microfono",
"disableMicrophone": "Disabilita microfono",
"defaultMicrophone": "Microfono predefinito"
},
"webcam": {
"enableWebcam": "Abilita webcam",
"disableWebcam": "Disabilita webcam",
"defaultCamera": "Fotocamera predefinita",
"searching": "Ricerca in corso...",
"noneFound": "Nessuna fotocamera trovata",
"unavailable": "Fotocamera non disponibile"
},
"cursor": {
"useEditableCursor": "Usa cursore modificabile",
"useSystemCursor": "Usa cursore di sistema"
},
"sourceSelector": {
"loading": "Caricamento sorgenti...",
"screens": "Schermi ({{count}})",
"windows": "Finestre ({{count}})",
"defaultSourceName": "Schermo"
},
"recording": {
"selectSource": "Seleziona una sorgente da registrare"
},
"language": "Lingua",
"systemLanguagePrompt": {
"title": "Usare la lingua del sistema?",
"description": "Abbiamo rilevato {{language}} come lingua del sistema. Vuoi passare OpenScreen a {{language}}?",
"switch": "Passa a {{language}}",
"keepDefault": "Mantieni la lingua corrente"
}
}
+205
View File
@@ -0,0 +1,205 @@
{
"zoom": {
"level": "Livello zoom",
"customScale": "Zoom personalizzato",
"selectRegion": "Seleziona una regione zoom da regolare",
"deleteZoom": "Elimina zoom",
"focusMode": {
"title": "Modalità messa a fuoco",
"manual": "Manuale",
"auto": "Automatico",
"autoDescription": "La fotocamera segue la posizione del cursore registrato"
},
"threeD": {
"title": "Rotazione 3D",
"preset": {
"iso": "Iso",
"left": "Sinistra",
"right": "Destra"
}
},
"position": {
"title": "Posizione messa a fuoco",
"x": "X (%)",
"y": "Y (%)",
"hint": "0 = più a sinistra / in alto, 100 = più a destra / in basso"
}
},
"speed": {
"playbackSpeed": "Velocità di riproduzione",
"selectRegion": "Seleziona una regione velocità da regolare",
"deleteRegion": "Elimina regione velocità",
"customPlaybackSpeed": "Velocità di riproduzione personalizzata",
"maxSpeedError": "La velocità non può superare 16×"
},
"trim": {
"deleteRegion": "Elimina regione taglio"
},
"layout": {
"title": "Layout",
"preset": "Predefinito",
"selectPreset": "Seleziona predefinito",
"pictureInPicture": "Immagine nell'immagine",
"verticalStack": "Pila verticale",
"dualFrame": "Doppio frame",
"noWebcam": "Nessuna webcam",
"webcamShape": "Forma fotocamera",
"webcamSize": "Dimensione webcam"
},
"effects": {
"title": "Effetti video",
"blurBg": "Sfuma sfondo",
"motionBlur": "Sfocatura movimento",
"off": "spento",
"on": "acceso",
"shadow": "Ombra",
"roundness": "Arrotondamento",
"padding": "Spaziatura"
},
"background": {
"title": "Sfondo",
"image": "Immagine",
"color": "Colore",
"gradient": "Sfumatura",
"uploadCustom": "Carica personalizzato",
"gradientLabel": "Sfumatura {{index}}",
"colorWheel": "Ruota dei colori",
"colorPalette": "Tavolozza dei colori"
},
"crop": {
"title": "Ritaglia",
"cropVideo": "Ritaglia video",
"dragInstruction": "Trascina su ogni lato per regolare l'area di ritaglio",
"ratio": "Proporzioni",
"free": "Libero",
"done": "Fatto",
"lockAspectRatio": "Blocca proporzioni",
"unlockAspectRatio": "Sblocca proporzioni"
},
"exportFormat": {
"mp4": "MP4",
"gif": "GIF",
"mp4Video": "Video MP4",
"mp4Description": "File video di alta qualità",
"gifAnimation": "Animazione GIF",
"gifDescription": "Immagine animata per la condivisione"
},
"exportQuality": {
"title": "Risoluzione esportazione",
"low": "720p",
"medium": "1080p",
"high": "Originale"
},
"gifSettings": {
"frameRate": "Frequenza fotogrammi GIF",
"size": "Dimensione GIF",
"loop": "GIF in loop"
},
"project": {
"save": "Salva progetto",
"load": "Carica progetto"
},
"export": {
"videoButton": "Esporta video",
"gifButton": "Esporta GIF",
"chooseSaveLocation": "Scegli posizione di salvataggio"
},
"links": {
"reportBug": "Segnala bug",
"starOnGithub": "Metti stella su GitHub"
},
"imageUpload": {
"invalidFileType": "Tipo di file non valido",
"jpgOnly": "Carica un file immagine JPG o JPEG.",
"uploadSuccess": "Immagine personalizzata caricata con successo!",
"failedToUpload": "Impossibile caricare l'immagine",
"errorReading": "Si è verificato un errore durante la lettura del file."
},
"annotation": {
"title": "Impostazioni annotazione",
"active": "Attivo",
"typeText": "Testo",
"typeImage": "Immagine",
"typeArrow": "Freccia",
"typeBlur": "Sfocatura",
"textContent": "Contenuto testo",
"textPlaceholder": "Inserisci il tuo testo...",
"fontStyle": "Stile carattere",
"selectStyle": "Seleziona stile",
"size": "Dimensione",
"customFonts": "Caratteri personalizzati",
"textColor": "Colore testo",
"background": "Sfondo",
"none": "Nessuno",
"color": "Colore",
"colorWheel": "Ruota dei colori",
"colorPalette": "Tavolozza dei colori",
"clearBackground": "Rimuovi sfondo",
"uploadImage": "Carica immagine",
"supportedFormats": "Formati supportati: JPG, PNG, GIF, WebP",
"arrowDirection": "Direzione freccia",
"strokeWidth": "Larghezza tratto: {{width}}px",
"arrowColor": "Colore freccia",
"blurType": "Tipo sfocatura",
"blurTypeBlur": "Sfocatura",
"blurTypeMosaic": "Sfocatura mosaico",
"blurColor": "Colore sfocatura",
"blurColorWhite": "Bianco",
"blurColorBlack": "Nero",
"blurShape": "Forma sfocatura",
"blurIntensity": "Intensità sfocatura",
"mosaicBlockSize": "Dimensione blocco mosaico",
"blurShapeRectangle": "Rettangolo",
"blurShapeOval": "Ovale",
"blurShapeFreehand": "A mano libera",
"deleteAnnotation": "Elimina annotazione",
"shortcutsAndTips": "Scorciatoie e suggerimenti",
"tipMovePlayhead": "Sposta la testina di riproduzione sulla sezione di annotazione sovrapposta e seleziona un elemento.",
"tipTabCycle": "Usa Tab per scorrere gli elementi sovrapposti.",
"tipShiftTabCycle": "Usa Maiusc+Tab per scorrere all'indietro.",
"invalidImageType": "Tipo di file non valido",
"imageFormatsOnly": "Carica un file immagine JPG, PNG, GIF o WebP.",
"imageUploadSuccess": "Immagine caricata con successo!",
"failedImageUpload": "Impossibile caricare l'immagine"
},
"fontStyles": {
"classic": "Classico",
"editor": "Editor",
"strong": "Forte",
"typewriter": "Macchina da scrivere",
"deco": "Deco",
"simple": "Semplice",
"modern": "Moderno",
"clean": "Pulito"
},
"customFont": {
"dialogTitle": "Aggiungi font Google",
"urlLabel": "URL importazione Google Fonts",
"urlPlaceholder": "https://fonts.googleapis.com/css2?family=Roboto&display=swap",
"urlHelp": "Ottieni questo da Google Fonts: Seleziona un font → Clicca \"Ottieni font\" → Copia l'URL @import",
"nameLabel": "Nome visualizzato",
"namePlaceholder": "Il mio font personalizzato",
"nameHelp": "Così apparirà il font nel selettore",
"addButton": "Aggiungi font",
"addingButton": "Aggiunta in corso...",
"errorEmptyUrl": "Inserisci un URL di importazione Google Fonts",
"errorInvalidUrl": "Inserisci un URL Google Fonts valido",
"errorEmptyName": "Inserisci un nome per il font",
"errorExtractFailed": "Impossibile estrarre la famiglia di font dall'URL",
"successMessage": "Font \"{{fontName}}\" aggiunto con successo",
"failedToAdd": "Impossibile aggiungere il font",
"errorTimeout": "Il font ha impiegato troppo tempo a caricarsi. Controlla l'URL e riprova.",
"errorLoadFailed": "Impossibile caricare il font. Verifica che l'URL di Google Fonts sia corretto."
},
"cursor": {
"show": "Mostra cursore",
"size": "Dimensione",
"smoothing": "Smussatura",
"motionBlur": "Sfocatura movimento",
"clickBounce": "Rimbalzo clic",
"clipToBounds": "Ritaglia al canvas"
},
"language": {
"title": "Lingua"
}
}
+37
View File
@@ -0,0 +1,37 @@
{
"title": "Scorciatoie tastiera",
"customize": "Personalizza",
"configurable": "Configurabile",
"fixed": "Fisso",
"pressKey": "Premi un tasto…",
"clickToChange": "Clicca per cambiare",
"pressEscToCancel": "Premi Esc per annullare",
"helpText": "Clicca una scorciatoia e premi la nuova combinazione di tasti. Premi Esc per annullare.",
"resetToDefaults": "Ripristina predefiniti",
"alreadyUsedBy": "Già utilizzata da {{action}}",
"swap": "Scambia",
"reservedShortcut": "Questa scorciatoia è riservata a \"{{label}}\" e non può essere riassegnata.",
"savedToast": "Scorciatoie tastiera salvate",
"resetToast": "Ripristino alle scorciatoie predefinite — clicca Salva per applicare",
"actions": {
"addZoom": "Aggiungi zoom",
"addTrim": "Aggiungi taglio",
"addSpeed": "Aggiungi velocità",
"addAnnotation": "Aggiungi annotazione",
"addBlur": "Aggiungi sfocatura",
"addKeyframe": "Aggiungi fotogramma chiave",
"deleteSelected": "Elimina selezionato",
"playPause": "Riproduci / Pausa"
},
"fixedActions": {
"undo": "Annulla",
"redo": "Ripeti",
"cycleAnnotationsForward": "Scorri annotazioni in avanti",
"cycleAnnotationsBackward": "Scorri annotazioni indietro",
"deleteSelectedAlt": "Elimina selezionato (alt)",
"panTimeline": "Panoramica timeline",
"zoomTimeline": "Zoom timeline",
"frameBack": "Fotogramma indietro",
"frameForward": "Fotogramma avanti"
}
}
+55
View File
@@ -0,0 +1,55 @@
{
"buttons": {
"addZoom": "Aggiungi zoom (Z)",
"suggestZooms": "Suggerisci zoom dal cursore",
"addTrim": "Aggiungi taglio (T)",
"addAnnotation": "Aggiungi annotazione (A)",
"addBlur": "Aggiungi sfocatura (B)",
"addSpeed": "Aggiungi velocità (S)"
},
"hints": {
"pressZoom": "Premi Z per aggiungere zoom",
"pressTrim": "Premi T per aggiungere taglio",
"pressAnnotation": "Premi A per aggiungere annotazione",
"pressBlur": "Premi B per aggiungere regione sfocatura",
"pressSpeed": "Premi S per aggiungere velocità"
},
"labels": {
"pan": "Panoramica",
"zoom": "Zoom",
"trim": "Taglio",
"speed": "Velocità",
"zoomItem": "Zoom {{index}}",
"trimItem": "Taglio {{index}}",
"speedItem": "Velocità {{index}}",
"annotationItem": "Annotazione",
"blurItem": "Sfocatura {{index}}",
"imageItem": "Immagine",
"emptyText": "Testo vuoto"
},
"emptyState": {
"noVideo": "Nessun video caricato",
"dragAndDrop": "Trascina e rilascia un video per iniziare a modificare"
},
"errors": {
"cannotPlaceZoom": "Impossibile posizionare lo zoom qui",
"zoomExistsAtLocation": "Lo zoom esiste già in questa posizione o non c'è spazio sufficiente.",
"zoomSuggestionUnavailable": "Gestore suggerimenti zoom non disponibile",
"noCursorTelemetry": "Nessuna telemetria del cursore disponibile",
"noCursorTelemetryDescription": "Registra prima uno screencast per generare suggerimenti basati sul cursore.",
"noUsableTelemetry": "Nessuna telemetria del cursore utilizzabile",
"noUsableTelemetryDescription": "La registrazione non include dati sufficienti sul movimento del cursore.",
"noDwellMoments": "Nessun momento di sosta del cursore trovato",
"noDwellMomentsDescription": "Prova una registrazione con pause del cursore più lente sulle azioni importanti.",
"noAutoZoomSlots": "Nessuno slot di zoom automatico disponibile",
"noAutoZoomSlotsDescription": "I punti di sosta rilevati si sovrappongono alle regioni zoom esistenti.",
"cannotPlaceTrim": "Impossibile posizionare il taglio qui",
"trimExistsAtLocation": "Il taglio esiste già in questa posizione o non c'è spazio sufficiente.",
"cannotPlaceSpeed": "Impossibile posizionare la velocità qui",
"speedExistsAtLocation": "La regione velocità esiste già in questa posizione o non c'è spazio sufficiente."
},
"success": {
"addedZoomSuggestions": "Aggiunto {{count}} suggerimento zoom basato sul cursore",
"addedZoomSuggestionsPlural": "Aggiunti {{count}} suggerimenti zoom basati sul cursore"
}
}