1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
|
/**
* Italian — translated from locales/en.js.
*
* Register: formal (forma di cortesia, "Lei").
* `hub`, `node` and `GEK` are left in English: they name the CLI
* (`meshbay-node`), node.toml and the docs, which are English throughout.
* Grammatical gender chosen here: l'hub (m.), il node (m.), la GEK → "la chiave".
*/
export default {
// Nav
'nav.toggle_menu': 'Mostra il menu',
'nav.light_mode': 'Tema chiaro',
'nav.dark_mode': 'Tema scuro',
'nav.logout': 'Esci',
'nav.login': 'Accedi',
// Sidebar
'sidebar.my_groups': 'I miei gruppi',
'sidebar.no_groups': 'Ancora nessun gruppo',
'sidebar.discover': 'Esplora',
'sidebar.public_groups': 'Gruppi pubblici',
// Login
'login.title': 'Accedi',
'login.username': 'Nome utente',
'login.password': 'Password',
'login.submit': 'Accedi',
'login.loading': 'Accesso in corso...',
'login.no_account': 'Non ha ancora un account?',
'login.register_link': 'Crea un account',
// Register
'register.title': 'Crea un account',
'register.username': 'Nome utente',
'register.email': 'Indirizzo e-mail',
'register.password': 'Passphrase (almeno 12 caratteri)',
'register.confirm': 'Conferma la password',
'register.submit': "Crea l'account",
'register.loading': "Creazione dell'account...",
'register.has_account': 'Ha già un account?',
'register.login_link': 'Accedi',
'register.success_title': 'Account creato',
'register.success_msg': 'Ora può accedere con le sue credenziali.',
'register.go_login': "Vai all'accesso",
'register.err_mismatch': 'Le password non coincidono',
'register.err_min_len': {
one: 'Usi almeno {n} carattere',
other: 'Usi almeno {n} caratteri',
},
'register.err_too_weak': 'Troppo facile da indovinare. La passphrase è ciò che '
+ 'protegge le sue chiavi là dove sono conservate — qualche parola senza alcun '
+ 'legame tra loro funziona bene.',
'register.strength': 'Robustezza: circa {bits} bit. Protegge la copia delle sue '
+ 'chiavi conservata sui node a cui aderisce, quindi vale la pena sceglierla con cura.',
// Home
'home.welcome': 'Benvenuto in MeshBay',
'home.no_groups': 'Non fa ancora parte di nessun gruppo.',
'home.browse_prefix': 'Dia un’occhiata ai ',
'home.browse_link': 'gruppi pubblici',
'home.browse_suffix': " oppure chieda a un amministratore di gruppo di invitarla.",
'home.my_groups': 'I miei gruppi',
// Explore
'explore.title': 'Gruppi pubblici',
'explore.search': 'Cerca gruppi...',
'explore.loading': 'Caricamento...',
'explore.empty': 'Nessun gruppo pubblico disponibile.',
'explore.create_group': 'Crea un gruppo',
'explore.join': 'Partecipa',
'explore.member': 'Iscritto',
'explore.disabled': "This hub does not have public groups.",
// Group page
'group.default_name': 'Gruppo',
'group.tab_files': 'File',
'group.tab_chat': 'Chat',
'group.tab_video': 'Video',
'group.tab_music': 'Musica',
'group.tab_photos': 'Foto',
'group.tab_members': 'Membri',
'group.tab_settings': "Impostazioni",
'members.danger_leave_hint': "Perderai l’accesso ai file e alla chat di questo gruppo.",
'members.uploads_title': "Caricamenti",
'members.uploads_on': "I membri possono aggiungere file",
'members.uploads_off': "Solo tu puoi aggiungere file",
'members.uploads_disable': "Disattiva",
'members.uploads_enable': "Attiva",
'members.uploads_hint': "Vale per tutti tranne te. È il nodo a rifiutare il caricamento: non si tratta di nascondere un pulsante.",
'members.apps_title': "Applicazioni",
'members.apps_hint': "Quali parti di questo gruppo vedono i membri. Almeno una deve restare attiva.",
'members.apps_need_one': "Almeno un'applicazione deve restare attiva.",
'members.danger_delete_hint': "Il gruppo scompare per tutti i membri. Non è reversibile.",
'group.filter': 'Filtra i file...',
'group.col_name': 'Nome',
'group.col_size': 'Dimensione',
'group.col_type': 'Tipo',
'group.col_date': 'Data',
'group.empty_filter': 'Nessun file corrisponde al filtro',
'group.empty_dir': 'Questa cartella è vuota',
'group.download': 'Scarica',
'group.play': 'Riproduci',
'group.offline_title': 'Al momento nessun node è online per questo gruppo.',
'group.offline_hint': 'I file compariranno quando si collegherà un node che ospita '
+ 'questo gruppo.',
'group.upload': 'Carica',
'group.mkdir': 'Nuova cartella',
'group.mkdir_prompt': 'Nome della nuova cartella:',
'device.add_title': 'This browser is not linked to this node yet',
'device.add_hint': 'Your account is known here, but this browser holds a different key. Approve it from a device already linked — no operator needed.',
'device.add_btn': 'Get a linking code',
'device.add_show': 'Type this code into a device already linked to this node, within the hour:',
'device.mine_title': 'Your devices on this node',
'device.mine_hint': 'Each browser or client you use here holds its own key. They are separate from your devices on other nodes.',
'device.mine_empty': 'No device is linked here yet.',
'device.this_one': 'this one',
'device.revoke': 'Remove',
'device.revoke_confirm': 'Remove this device? It will lose access to this node until it is linked again.',
'device.approve_hint': 'Linking a new device? Enter the code it is showing.',
'device.approve_btn': 'Approve',
'device.approved': 'Device linked.',
'group.root_unavailable': '(non disponibile — l’unità è scollegata)',
'group.view': 'Visualizza',
'group.delete': 'Elimina',
'group.delete_confirm': 'Eliminare {name}?',
'group.delete_group': 'Elimina il gruppo',
'group.delete_group_confirm': 'Eliminare definitivamente «{name}» e rimuovere tutti '
+ 'i membri? I file presenti sul node vengono conservati.',
'group.err_transport': 'Modulo di trasporto non caricato',
// Status
'status.idle': 'Inattivo',
'status.discovering': 'Ricerca dei node...',
'status.connecting': 'Connessione tramite WebRTC...',
'status.connecting_short': 'Connessione…',
'status.fetching': "Recupero dell'indice...",
'status.files': {
one: '{n} file',
other: '{n} file',
},
'status.offline': 'Nessun node online',
'status.error': 'Connessione non riuscita',
// Chat
'chat.empty': 'Ancora nessun messaggio. Inizi la conversazione!',
'chat.placeholder': 'Scriva un messaggio...',
'chat.send': 'Invia',
'chat.attach': 'Allega un file',
// Video player
'video.loading': 'Caricamento di {name}...',
'video.buffering': 'Buffering in corso...',
'video.resumed_at': "Ripreso da {time}",
'video.from_start': "Riparti dall'inizio",
'video.close': 'Chiudi (Esc)',
'preview.pdf_fallback': 'Questo browser non mostrerà il PDF nella pagina. Lo scarichi '
+ 'invece — in ogni caso è stato decifrato qui.',
'group.upload_indexing': 'indicizzazione…',
'video.err_transport': 'Trasporto non connesso',
'video.err_mse': 'Codec non supportato per lo streaming: {codec}',
'video.mode_poster': 'Locandine',
'video.mode_flat': 'Elenco semplice',
'video.filter_all': 'All',
'video.filter_movies': 'Movies',
'video.filter_series': 'Series',
'video.empty': 'Nessun video trovato.',
'video.no_root_configured': 'Per questo gruppo non è ancora impostata una cartella radice di Video — un operatore può sceglierne una nelle Impostazioni.',
'music.no_root_configured': 'Per questo gruppo non è ancora impostata una cartella radice di Musica — un operatore può sceglierne una nelle Impostazioni.',
'video.director': 'Regista',
'video.specials': 'Speciali',
'video.season_n': 'Stagione {n}',
'video.episode_n': 'Episodio {n}',
'video.n_episodes': {
one: '{n} episodio',
other: '{n} episodi',
},
'video.fix_match': 'Correggi corrispondenza…',
'video.search_title': 'Correggi la corrispondenza TMDB',
'video.search_placeholder': 'Cerca su TMDB…',
'video.search_button': 'Cerca',
'video.search_no_results': 'Nessuna corrispondenza trovata.',
'video.search_apply_hint': 'Si applica a tutti i file attualmente raggruppati sotto questo titolo.',
'video.search_apply_hint_movie': 'Si applica solo a questo file.',
'video.source_file': 'File: {name}',
'video.no_match': 'Nessuna corrispondenza TMDB affidabile — mostrato il nome del file.',
'video.versions': '{n} versioni',
'video.rematch_one': 'Riassocia',
// Musica
'music.mode_grid': 'Album',
'music.mode_flat': 'Elenco semplice',
'music.empty': 'Nessuna musica trovata.',
'music.unknown_album': 'Album sconosciuto',
'music.various': 'Vari',
'music.play_all': 'Riproduci tutto',
'music.n_tracks': {
one: '{n} traccia',
other: '{n} tracce',
},
'music.err_transport': 'Trasporto non connesso',
'music.err_playback': 'Errore di riproduzione',
'music.err_transcode': 'Conversione del formato non riuscita',
'music.player_play': 'Riproduci',
'music.player_pause': 'Pausa',
'music.player_prev': 'Precedente',
'music.player_next': 'Successivo',
'music.player_shuffle': 'Riproduzione casuale',
'music.player_repeat_off': 'Ripetizione disattivata',
'music.player_repeat_all': 'Ripeti tutto',
'music.player_repeat_one': 'Ripeti brano',
'music.player_volume': 'Volume',
'music.player_close': 'Chiudi lettore',
'music.player_queue': 'Coda attuale',
'music.queue_title': 'In riproduzione',
// Photos
'photo.empty': 'Nessuna foto trovata.',
'photo.no_roots_configured': 'Per questo gruppo non sono ancora impostate cartelle radice di Foto — un operatore può sceglierne alcune nelle Impostazioni.',
'photo.root_album': '(livello superiore)',
'photo.n_photos': {
one: '{n} foto',
other: '{n} foto',
},
'photo.back': 'Indietro',
'photo.prev': 'Precedente (←)',
'photo.next': 'Successiva (→)',
'photo.zip_album': "Scarica l'album come zip",
'photo.zoom_in': 'Ingrandisci',
'photo.zoom_out': 'Riduci',
'photo.zoom_fit_title': 'Adatta alla finestra',
'photo.zoom_fit_label': 'Adatta',
'photo.zoom_100': 'Dimensione reale (100%)',
// LAN cast
'cast.start': 'Trasmetti al dispositivo',
'cast.stop': 'Interrompi trasmissione',
'cast.copy_url': 'Copia URL dello stream',
'cast.copied': 'URL copiato',
'cast.scanning': 'Ricerca dispositivi…',
'cast.no_devices': 'Nessun dispositivo trovato',
// Settings
'settings.title': 'Impostazioni',
'settings.coming_soon': 'Prossimamente.',
'settings.downloads': 'Download',
'settings.dl_auto': 'Salva automaticamente',
'settings.dl_auto_hint': 'I file finiscono direttamente nella cartella che sceglie '
+ 'qui sotto, senza alcuna finestra. Scaricare venti file ne deposita venti.',
'settings.dl_ask': 'Chiedi ogni volta',
'settings.dl_ask_hint': 'Una finestra «Salva con nome» per ciascun file — una per '
+ 'file, anche quando scarica una selezione.',
'settings.dl_folder': 'Cartella: {name}',
'settings.dl_no_folder': 'Nessuna cartella scelta — i download finiscono dove li '
+ 'colloca il browser',
'settings.dl_choose': 'Scegli una cartella',
'settings.dl_change': 'Cambia',
'settings.dl_forget': 'Dimentica',
'settings.profile': 'Profilo',
'settings.username': 'Nome utente',
'settings.email': 'Email',
'settings.email_save': 'Save',
'settings.email_saved': 'Email updated',
'settings.notif_global_disable': 'Disable all notifications',
'settings.notif_global_hint': 'When enabled, no notifications are created for any group.',
'settings.defaults': 'Valori predefiniti',
'settings.default_tab': 'Default tab',
'settings.default_tab_hint': 'Which tab opens first when you enter a group.',
'settings.music_keep_screen_on': 'Keep screen on during music playback',
'settings.music_keep_screen_on_hint': 'Prevents the phone from locking on its own while a track is playing. Off by default — most people want their phone to lock normally while listening, like Spotify or Deezer.',
'settings.node_pins': 'Identità dei node',
'settings.node_pins_hint': "La chiave d'identità di ogni node viene memorizzata alla "
+ 'prima connessione. Se cambia, la connessione viene rifiutata — cosa che ci si '
+ 'aspetta solo quando un operatore reinstalla un node. Verifichi con lui prima di '
+ 'cancellarla.',
'settings.node_pins_count': {
one: '{n} fissata',
other: '{n} fissate',
},
'settings.node_pins_clear': 'Cancella le identità fissate',
'settings.danger': "Elimina l'account",
'settings.delete_hint': "Rimuove il suo account, le sue adesioni ai gruppi e le sue "
+ "notifiche dall'hub, e libera il suo nome utente. Non arriva a ciò che si trova "
+ 'sui node: i file che ha caricato restano dove il loro operatore li conserva, e '
+ 'ogni node mantiene l’identità che ha fissato per lei finché il suo operatore non '
+ 'la rimuove. I registri di connessione sono conservati per un anno, come impone '
+ 'la legge.',
'settings.delete_account': 'Elimina il mio account',
'settings.delete_confirm': 'Inserisca la sua passphrase per confermare. '
+ "L'operazione non può essere annullata.",
'settings.delete_confirm_btn': 'Elimina definitivamente',
'settings.cancel': 'Annulla',
'settings.appearance': 'Aspetto',
'settings.theme': 'Tema',
'settings.theme_light': 'Chiaro',
'settings.theme_dark': 'Scuro',
'settings.theme_system': 'Sistema',
'settings.language': 'Lingua',
'settings.about': 'Informazioni',
'firstrun.title': 'Which hub?',
'firstrun.hint': 'A hub holds your account and introduces you to nodes. It never sees your files, your messages or your keys.',
'firstrun.btn': 'Continue',
'firstrun.checking': 'Checking…',
'firstrun.note': 'There is no default on purpose: this application only trusts a hub for its API, never for the interface, which ships with the application itself.',
'device.this_device': 'This device',
'settings.keys_heading': 'Keys on this device',
'settings.hub_heading': 'Hub',
'settings.hub_current': 'Currently',
'settings.hub_hint': 'Changing this signs you out and restarts the window. A hub on your own machine is usually http, not https.',
'settings.hub_change': 'Change',
'settings.keys_where': 'Protected by',
'settings.keys_unprotected': 'No system keyring is running, so your keys are encrypted with a key that is not a secret. Anyone who can read this machine’s files can read them. Start a keyring, or treat this device as untrusted.',
'settings.keys_unavailable': 'This system offers no key storage at all, so this device cannot be remembered — you will be asked for your passphrase each time. That is the safe outcome: nothing was stored unprotected.',
'settings.version': 'Versione',
'settings.protocol': 'Protocollo',
'settings.role': 'Ruolo',
'settings.groups': 'Notifiche dei gruppi',
'settings.notifications': 'Notifiche',
'settings.node_key': 'Collega un node',
'settings.node_key_desc': 'Se gestisce un node MeshBay, incolli qui la sua chiave '
+ 'pubblica Ed25519 per collegarlo al suo account. Trova questa chiave nel '
+ 'pannello di amministrazione del suo node.',
'settings.node_key_placeholder': 'Incolli la chiave pubblica Ed25519 del node (base64)',
'settings.node_key_submit': 'Collega il node',
'settings.node_key_success': 'Node collegato correttamente',
'settings.node_key_current': 'Chiave del node collegato',
// Sidebar
'sidebar.create_group': 'Crea un gruppo',
'sidebar.settings': 'Impostazioni',
'sidebar.admin': 'Amministrazione',
// User menu
'usermenu.language': 'Lingua',
'usermenu.settings': 'Impostazioni',
'usermenu.theme_light': 'Tema chiaro',
'usermenu.theme_dark': 'Tema scuro',
'usermenu.logout': 'Esci',
// Admin panel
'admin.title': 'Amministrazione',
'admin.tab_stats': 'Statistiche',
'admin.tab_users': 'Utenti',
'admin.tab_groups': 'Gruppi',
'admin.tab_nodes': 'Node',
'admin.tab_logs': 'Registri',
'admin.col_observed_ip': 'Visto da',
'admin.col_hint': 'Indirizzo dichiarato',
'admin.col_last_seen': 'Ultimo annuncio',
'admin.node_online': 'online',
'admin.node_offline': 'offline',
'admin.no_nodes': 'Nessun node registrato',
'admin.nodes_hint': '«Visto da» è l’indirizzo dal quale l’annuncio è effettivamente '
+ 'arrivato, in una richiesta firmata con la chiave del node — è quello su cui '
+ 'basarsi per rispondere a una richiesta formale. L’indirizzo dichiarato è quello '
+ 'che il node crede essere il proprio, appreso da un server STUN e inviato a noi; '
+ 'serve a raggiungere il node e non prova nulla.',
'admin.tab_blocklist': 'Elenco dei blocchi',
'admin.tab_general': "General",
'admin.general_groups_heading': "Groups",
'admin.allow_public_groups_label': "Allow members to create public groups",
'admin.allow_public_groups_hint': "When off, new groups can only be private and invite-only. Existing public groups are left as they are — suspend them one by one from the Groups tab.",
'admin.settings_readonly': "Only an admin can change these settings.",
// Admin stats
'admin.stat_users': 'Utenti',
'admin.stat_groups': 'Gruppi',
'admin.stat_nodes': 'Node',
'admin.stat_online': 'Node online',
// Admin users
'admin.users_search': 'Cerca utenti...',
'admin.col_username': 'Nome utente',
'admin.col_role': 'Ruolo',
'admin.col_status': 'Stato',
'admin.col_created': 'Creazione',
'admin.col_actions': 'Azioni',
'admin.col_email': 'E-mail',
'admin.col_groups': 'Gruppi',
'admin.no_users': 'Nessun utente trovato',
'admin.btn_suspend': 'Sospendi',
'admin.btn_unsuspend': 'Riattiva',
'admin.btn_revoke': "Revoke",
'admin.revoke_group_confirm': "Revoke the group \"{group}\"? This pushes a signed revocation to every node hosting it and cannot be undone from here. Suspend it instead if you only need to pause it.",
'admin.btn_details': 'Dettagli',
'admin.btn_delete': 'Elimina',
'admin.delete_confirm': 'Eliminare l’account «{user}»? L’operazione non può essere '
+ 'annullata. I file che ha caricato restano sui node che li ospitano, e ogni node '
+ 'mantiene l’identità che ha fissato finché il suo operatore non la rimuove. La '
+ 'sospensione è l’opzione reversibile.',
'admin.user_detail': "Dettagli dell'utente",
'admin.btn_close': 'Chiudi',
'admin.self_note': '(lei)',
// Admin groups
'admin.col_name': 'Nome',
'admin.col_visibility': 'Visibilità',
'admin.col_members': 'Membri',
'admin.no_groups': 'Nessun gruppo trovato',
// Admin logs
'admin.col_time': 'Ora',
'admin.col_event': 'Evento',
'admin.col_user': 'Utente',
'admin.col_ip': 'IP',
'admin.col_detail': 'Dettaglio',
'admin.filter_all': 'Tutti gli eventi',
'admin.no_logs': 'Nessun registro trovato',
'admin.btn_load_more': 'Carica altri',
// Admin blocklist
'admin.col_hash': 'Hash',
'admin.col_reason': 'Motivo',
'admin.col_date': 'Data',
'admin.col_added_by': 'Aggiunto da',
'admin.no_blocked': 'Nessun hash bloccato',
'admin.add_hash': "Aggiungi un hash all'elenco dei blocchi",
'admin.hash_placeholder': 'hash blake3 (64 caratteri esadecimali)',
'admin.reason_placeholder': 'Motivo',
'admin.btn_block': 'Blocca',
'admin.btn_unblock': 'Sblocca',
// Notifications
// Create group
'create_group.title': 'Crea un gruppo',
'create_group.name': 'Nome del gruppo',
'create_group.name_placeholder': 'es. Foto di famiglia, File del progetto...',
'create_group.join_policy': 'Modalità di adesione',
'create_group.invite': 'Solo su invito',
'create_group.invite_desc': "I membri devono essere invitati da un amministratore. Il gruppo non è elencato pubblicamente.",
'create_group.open': 'Aperto (chiunque può partecipare)',
'create_group.open_desc': "Elencato tra i gruppi pubblici: chiunque può trovarlo e unirsi senza approvazione.",
'create_group.description': 'Descrizione',
'create_group.description_hint': 'Di cosa si occupa questo gruppo? (facoltativo)',
'create_group.submit': 'Crea',
'create_group.hint': 'Un gruppo ha bisogno di un node che ospiti i file. Può creare '
+ 'il gruppo ora e collegare un node più avanti.',
'create_group.creating': 'Creazione in corso...',
// Members
'members.col_role': 'Ruolo',
'members.group_role': 'Ruolo nel gruppo',
'members.admin': 'Amministratore',
'members.group_admin': 'Amministratore del gruppo',
'members.owner': 'Proprietario',
'members.member': 'Membro',
'members.invite_title': 'Invita un membro',
'members.username_placeholder': 'Nome utente',
'members.invite_btn': 'Invita',
'members.invite_needs_pairing': 'Gli inviti sono firmati con la chiave che questo '
+ 'node ha fissato per il suo browser: lo associ qui sotto prima di invitare '
+ 'chiunque.',
'members.invite_ask_operator': 'Solo l’operatore del node che ospita questo gruppo '
+ 'può invitare, da un browser associato a esso.',
'members.remove': 'Rimuovi',
'members.remove_confirm': 'Rimuovere {user} da questo gruppo? Il suo account, gli '
+ 'altri gruppi e i file che ha caricato non vengono toccati.',
'members.remove_hint': 'Rimuovere qualcuno gli toglie l’adesione e impedisce al node '
+ 'di consegnargli la chiave del gruppo. Non elimina il suo account e non recupera '
+ 'la chiave che già possiede — la ruoti sul node (meshbay-node gek-init) se la '
+ 'cosa è importante.',
'members.pair_title': 'Associ questo browser al suo node',
'members.pair_hint': 'Il suo node accetta le azioni da operatore — inviti, '
+ 'eliminazione di file — solo da un browser a cui è stato associato. Esegua '
+ '`meshbay-node operator pair` sul node e digiti qui il codice. Il codice non '
+ 'passa mai per l’hub.',
'members.pair_btn': 'Associa',
'members.pair_success': 'Questo browser è ora associato al node.',
'members.invite_code_ready': 'Codice di invito per {user} — glielo mandi con il '
+ 'mezzo che usate di solito. Funziona una volta sola e non passa mai per l’hub.',
'members.invite_code_hint': 'Lo inserirà la prima volta che aprirà questo gruppo. '
+ 'Non è necessario che lei sia online in quel momento.',
'transfers.title': 'Trasferimenti',
'transfers.clear': 'Rimuovi i completati',
'transfers.cancel': 'Annulla',
'transfers.open': 'Apri',
'transfers.done': 'Completato',
'transfers.cancelled': 'Annullato',
'transfers.failed': 'Non riuscito',
'group.select': 'Seleziona',
'group.select_done': 'Fine',
'group.actions': 'Azioni ({n})',
'group.download_n': 'Scarica ({n})',
'group.download_zip_n': 'Scarica le cartelle in zip ({n})',
'group.delete_n': 'Elimina ({n})',
'group.delete_n_confirm': {
one: 'Eliminare {n} elemento? {names}',
other: 'Eliminare {n} elementi? {names}',
},
'group.download_zip': {
one: 'Scarica in zip ({n} file)',
other: 'Scarica in zip ({n} file)',
},
'group.zip_empty': 'Quella cartella non contiene nulla da scaricare.',
'group.zip_no_stream': 'Questo browser non sa scrivere un download direttamente su '
+ 'disco, quindi {name} ({size}) deve prima essere costruito in memoria. Con un '
+ 'archivio grande l’operazione può fallire. Continuare?',
'group.rmdir': 'Elimina la cartella',
'group.rmdir_confirm': 'Eliminare la cartella «{name}»? Deve essere vuota.',
'group.rmdir_not_empty': 'Quella cartella non è vuota. Elimini prima ciò che '
+ 'contiene — qui nulla cancella file che lei non vede.',
'group.desc_edit': 'Modifica la descrizione',
'group.desc_add': 'Aggiungi una descrizione',
'group.desc_save': 'Salva',
'group.desc_cancel': 'Annulla',
'group.desc_placeholder': 'A cosa serve questo gruppo — i membri lo vedono sulla '
+ 'loro pagina iniziale.',
'group.join_code_title': 'Questo node deve riconoscerla',
'group.join_code_hint': 'Chieda il codice monouso a chi l’ha invitata e lo inserisca '
+ 'qui. Dopodiché questo browser è riconosciuto e non le verrà più chiesto.',
'group.join_code_btn': 'Partecipa',
'notif.purge': 'Cancella tutto',
'notif.title': 'Notifiche',
'notif.empty': 'Nessuna notifica',
'notif.mark_all_read': 'Segna tutto come letto',
// Sidebar
'sidebar.search': 'Cerca file',
// Status
// Search
'search.title': 'Cerca file',
'search.placeholder': 'Cerca in tutti i gruppi...',
'search.no_results': 'Nessun file corrisponde alla sua ricerca.',
'search.col_group': 'Gruppo',
'search.result_count': {
one: '{n} file trovato',
other: '{n} file trovati',
},
'search.hint': 'Digita un termine per cercare in tutti i tuoi gruppi.',
'search.indexing': 'Indicizzazione di {done} / {total} gruppi…',
'search.unreachable': { one: '{n} gruppo non raggiungibile', other: '{n} gruppi non raggiungibili' },
'search.view_files': 'File',
'search.view_videos': 'Video',
'search.view_music': 'Musica',
'search.view_photos': 'Foto',
'search.connecting': 'Connessione ai gruppi…',
// Presence, chat paging, leaving a group, the profile page
'presence.online': 'Un node che ospita questo gruppo è online',
'presence.offline': 'Nessun node raggiungibile per questo gruppo',
'presence.unknown': 'Non ancora verificato',
'presence.indexing': 'Indicizzazione in corso — {pct}%',
'chat.load_older': 'Carica {n} messaggi precedenti',
'chat.start_of_history': 'Inizio della conversazione',
'chat.today': 'Oggi',
'chat.yesterday': 'Ieri',
'chat.unread': 'Nuovi messaggi',
'chat.jump_latest': 'Vai ai più recenti',
'chat.jump_new': 'Nuovi messaggi',
'group.leave': 'Esci dal gruppo',
'group.leave_confirm': 'Uscire da «{name}»? Perderà l’accesso ai suoi file e alla chat. I file che ha caricato restano sul node, e il node mantiene l’identità che ha fissato per lei finché il suo operatore non la rimuove.',
'group.mute': 'Mute notifications',
'group.unmute': 'Unmute notifications',
'profile.title': 'Profilo',
'usermenu.profile': 'Profilo',
// First-run setup wizard
'setup.welcome_title': 'Benvenuto su MeshBay',
'setup.welcome_message': 'Il suo node ospita i suoi file — cifrati, sulla sua macchina. Avviamolo e creiamo il suo primo gruppo.',
'setup.node_detected': 'Node locale rilevato e in funzione.',
'setup.node_not_running': 'Il suo node è installato ma non è in esecuzione.',
'setup.node_start': 'Avvia node',
'setup.node_starting': 'Avvio del node…',
'setup.node_started': 'Node avviato.',
'setup.node_not_installed': 'meshbay-node non è installato su questa macchina.',
'setup.node_install_hint': 'Lo installi con il suo gestore di pacchetti, poi torni qui.',
'setup.skip': 'Salta — crea un gruppo senza node locale',
'setup.create_group': 'Crea il suo primo gruppo',
'setup.dismiss': 'Salta la configurazione',
// Group misc
'group.retry': 'Riprova',
// Sidebar
'sidebar.node': 'Node',
// Node admin
'node.title': 'Node',
'node.service_checking': 'Verifica del servizio del nodo…',
'node.service_not_installed': 'Non installato come servizio',
'node.service_state_active': 'In esecuzione',
'node.service_state_inactive': 'Arrestato',
'node.service_state_failed': 'Non riuscito',
'node.service_state_activating': 'Avvio…',
'node.service_state_deactivating': 'Arresto…',
'node.service_state_unknown': 'Sconosciuto',
'node.service_start': 'Avvia',
'node.service_starting': 'Avvio…',
'node.service_stop': 'Arresta',
'node.service_stopping': 'Arresto…',
'node.service_restart': 'Riavvia',
'node.service_restarting': 'Riavvio…',
'node.not_operator': 'Impossibile raggiungere il suo node. Si assicuri che sia in esecuzione.',
'node.offline': 'Node non in linea',
'node.retry': 'Riprova',
'node.pair_needed': "Nessun operatore associato. Inserisci un codice di associazione per abilitare le operazioni di amministrazione (inviti, eliminazione file).",
'node.pair_code_placeholder': 'Codice di associazione',
'node.pair_button': 'Associa questo browser',
'node.pair_success': 'Associazione riuscita.',
'node.reload': 'Ricarica configurazione',
'node.reloaded': 'Configurazione ricaricata. Le modifiche alle directory dei gruppi esistenti sono ora attive.',
'node.restart_needed': "Dopo l'aggiunta: inizializzi la chiave di gruppo (meshbay-node gek-init --group <nome>).",
'node.no_groups': 'Nessun gruppo configurato su questo node.',
'node.stale': 'non presente sul hub',
'node.settings': 'Node settings',
'node.settings_edit_hint': 'Changes are applied immediately and saved to node.toml.',
'node.settings_save': 'Save',
'node.settings_saving': 'Saving…',
'node.settings_saved': 'Settings saved.',
'node.setting_invite_ttl': 'Invitation TTL',
'node.setting_pair_ttl': 'Pairing code TTL',
'node.setting_device_ttl': 'Device request TTL',
'node.setting_max_streams': 'Max concurrent streams',
'node.setting_transcode': 'Transcode incompatible video',
'node.setting_unit_hours': 'hours',
'node.setting_unit_minutes': 'min',
'node.setting_on': 'On',
'node.setting_off': 'Off',
'node.unavailable': 'non disponibile',
'node.files': {
one: '1 file',
other: '{n} file',
},
'node.peers': {
one: '1 peer',
other: '{n} peer',
},
'node.roots': 'Directory',
'node.add_root': 'Aggiungi directory',
'node.remove_root': 'Rimuovi',
'node.root_added': 'Directory aggiunta.',
'node.root_remove_confirm': 'Rimuovere «{name}» da questo gruppo?',
'node.root_removed': "Directory rimossa. Si consiglia un riavvio per aggiornare l'indice.",
'node.upload_root': 'caricamenti',
'node.attach_group': 'Aggiungi gruppo',
'node.attach_pick': 'Gruppo da ospitare',
'node.attach_dir': 'Directory condivisa',
'node.attach_upload_dir': 'Directory di caricamento',
'node.attach_upload_label': 'Directory di caricamento (per file caricati e allegati della chat)',
'node.attached': 'Gruppo aggiunto e caricato. Esegua meshbay-node gek-init --group {name} se non lo ha già fatto.',
'node.detach_group': 'Rimuovi gruppo',
'node.detach_confirm': 'Rimuovere «{name}» da questo node?',
'node.detached': 'Gruppo rimosso.',
'node.gek': 'Chiave di gruppo',
'node.no_gek': 'Nessuna chiave di gruppo',
'node.gek_init_hint': 'Nessuna chiave di gruppo ancora. Esegua GEK init dalla riga di comando per configurarla.',
'node.gek_public_hint': 'La rotazione delle chiavi non è disponibile per i gruppi pubblici.',
'node.gek_rotate': 'Ruota chiave di gruppo',
'node.gek_rotate_confirm': 'Ruotare la chiave di gruppo? I membri connessi riceveranno la nuova chiave automaticamente. I contenuti già scaricati non saranno interessati.',
'node.gek_rotated': 'Chiave di gruppo ruotata.',
'node.roster': 'Roster',
'node.roster_load': 'Carica roster',
'node.roster_empty': 'Nessun membro fissato ancora.',
'node.roster_user': 'Utente',
'node.roster_role': 'Ruolo',
'node.roster_status': 'Stato',
'node.roster_via': 'Fissato tramite',
'node.roster_invites': {
one: '1 invito in sospeso',
other: '{n} inviti in sospeso',
},
'node.unpin': 'Rimuovi identità',
'node.unpin_confirm': "Rimuovere l'identità di «{name}»? Dovrà effettuare di nuovo il pairing.",
'node.unpin_done': 'Identità rimossa.',
'node.denylist': 'Lista di blocco',
'node.denylist_load': 'Carica lista di blocco',
'node.denylist_empty': 'La lista di blocco è vuota.',
'node.denylist_count': {
one: '1 voce',
other: '{n} voci',
},
'node.denylist_remove': 'Rimuovi',
'node.denylist_clear_all': 'Cancella tutto',
'node.denylist_clear_confirm': 'Rimuovere «{subject}» dalla lista di blocco?',
'node.denylist_cleared': 'Voce della lista di blocco rimossa.',
// Settings — node
'settings_node.detach_failed_continue': 'Impossibile scollegare il gruppo dal node. Eliminare comunque dal hub?',
'settings_node.roots': 'Directory condivise',
'settings_node.scan_title': 'Scansione',
'settings_node.scan_hint': 'Con quale frequenza il node ricontrolla le sue directory per cambiamenti che potrebbe aver perso, e quanto tempo attende dopo una modifica prima di indicizzare un file.',
'settings_node.scan_reconcile_label': 'Intervallo di ricontrollo (minuti)',
'settings_node.scan_debounce_label': 'Attesa dopo una modifica (secondi)',
'settings_node.scan_save': 'Salva',
'settings_node.scan_saving': 'Salvataggio…',
'settings_node.scan_saved': 'Salvato.',
'settings_node.tmdb_title': 'Metadati TMDB',
'settings_node.tmdb_hint': "Permette all'app Video di mostrare locandine, trame e cast da TMDB. Disattivato significa solo miniature, senza alcuna richiesta verso terzi.",
'settings_node.tmdb_enabled': 'Attivato',
'settings_node.tmdb_disabled': 'Disattivato',
'settings_node.tmdb_token_label': 'Token API personalizzato (facoltativo)',
'settings_node.tmdb_token_placeholder': 'Lascia vuoto per usare il token predefinito',
'settings_node.tmdb_token_customized': 'È impostato un token personalizzato.',
'settings_node.tmdb_token_default': 'In uso il token predefinito.',
'settings_node.tmdb_save': 'Salva',
'settings_node.tmdb_language_label': 'Lingua',
'settings_node.tmdb_language_hint': 'Vale per tutti — una cache condivisa, non una richiesta per spettatore.',
'settings_node.video_root_title': 'Cartella radice di Video',
'settings_node.video_root_hint': "Quale cartella (o sottocartella) l'app Video considera come punto di ingresso per questo gruppo. In Video non viene mostrato nulla, e non viene eseguita alcuna ricerca TMDB, finché non ne viene scelta una.",
'settings_node.video_root_none': '— nessuna scelta —',
'settings_node.musicbrainz_title': 'Metadati MusicBrainz',
'settings_node.musicbrainz_hint': "Permette all'app Musica di mostrare copertine e nomi canonici da MusicBrainz quando una traccia non ha una copertina incorporata utilizzabile. Disattivato significa navigazione basata solo su tag/nome file, senza richieste a terzi.",
'settings_node.musicbrainz_enabled': 'Attivato',
'settings_node.musicbrainz_disabled': 'Disattivato',
'settings_node.video_root_save': 'Salva',
'settings_node.video_root_change_confirm': 'Cambiare la radice di Video sostituisce ciò che ogni membro vede nella scheda Video. Continuare?',
'settings_node.audio_root_title': 'Cartella radice di Musica',
'settings_node.audio_root_hint': 'Quale cartella (o sottocartella) l\'app Musica considera come punto di ingresso per questo gruppo. In Musica non viene mostrato nulla, e non viene letto alcun tag/copertina, finché non ne viene scelta una.',
'settings_node.audio_root_none': '— nessuna scelta —',
'settings_node.audio_root_save': 'Salva',
'settings_node.audio_root_change_confirm': 'Cambiare la radice di Musica sostituisce ciò che ogni membro vede nella scheda Musica. Continuare?',
'settings_node.photo_roots_title': 'Cartelle radice di Foto',
'settings_node.photo_roots_hint': "Quali cartelle l'app Foto considera come punti di ingresso per questo gruppo — una libreria fotografica è spesso distribuita su più cartelle, quindi se ne possono scegliere diverse. In Foto non viene mostrato nulla finché non ne viene aggiunta almeno una.",
'settings_node.photo_roots_none': '— nessuna scelta —',
'settings_node.photo_roots_add_placeholder': 'Aggiungi una cartella…',
'settings_node.photo_roots_add': 'Aggiungi',
'settings_node.photo_roots_remove': 'Rimuovi',
'settings_node.photo_roots_save': 'Salva',
'settings_node.directories_title': 'Directory',
'settings_node.directories_hint': 'Cartelle condivise, e quale di esse le app Video, Musica e Foto usano come proprio/i punto/i di ingresso.',
// Create-group wizard
'wizard.title': 'Crea gruppo',
'wizard.detecting': 'Rilevamento del node locale…',
'wizard.node_not_found': 'Nessun node locale rilevato. Si assicuri che meshbay-node sia in esecuzione.',
'wizard.node_offline_warning': 'Il node non è in esecuzione. Il gruppo sarà creato solo sul hub. Potrà collegare il node in seguito dalla pagina Node.',
'wizard.retry': 'Riprova',
'wizard.wrong_account': 'Il node è in esecuzione, ma il nome utente configurato non corrisponde al suo account. Verifichi hub.username in node.toml.',
'wizard.skip_node': 'Continua senza node',
'wizard.directories': 'Directory condivise',
'wizard.directories_hint': 'Scelga le directory che questo gruppo condividerà. Ne serve almeno una.',
'wizard.add_directory': 'Aggiungi directory',
'wizard.remove': 'Rimuovi',
'wizard.set_upload': 'Imposta come destinazione di caricamento',
'wizard.upload_target': 'destinazione di caricamento',
'wizard.create_and_setup': 'Crea e configura',
'wizard.create_hub_only': 'Crea solo sul hub',
'wizard.setting_up': 'Configurazione del gruppo…',
'wizard.step_create_hub': 'Creazione del gruppo sul hub',
'wizard.step_attach': 'Collegamento al node',
'wizard.step_apps': 'Scelta delle applicazioni',
'wizard.step_add_roots': 'Aggiunta delle directory',
'wizard.step_gek': 'Inizializzazione della chiave di cifratura',
'wizard.step_pair': 'Configurazione del pairing',
'wizard.step_index': 'Indicizzazione dei file',
'wizard.indexing_progress': 'Indicizzazione… {pct}%',
'wizard.indexing_current_dir': 'Scansione: {dir}',
'wizard.done_title': 'Gruppo creato',
'wizard.done_message': 'Il suo gruppo è pronto. Il suo node lo ospita e la cifratura è configurata.',
'wizard.go_to_group': 'Vai al gruppo',
'wizard.finish_later': 'Completa la configurazione in seguito',
};
|