diff --git a/README.md b/README.md index e8307a3a..f7cbf0bf 100644 --- a/README.md +++ b/README.md @@ -198,7 +198,7 @@ Lemmy is free, open-source software, meaning no advertising, monetizing, or vent If you'd like to add translations, take a look a look at the [English translation file](ui/src/translations/en.ts). -- Languages supported: English (`en`), Chinese (`zh`), Dutch (`nl`), Esperanto (`eo`), French (`fr`), Spanish (`es`), Swedish (`sv`), German (`de`), Russian (`ru`). +- Languages supported: English (`en`), Chinese (`zh`), Dutch (`nl`), Esperanto (`eo`), French (`fr`), Spanish (`es`), Swedish (`sv`), German (`de`), Russian (`ru`), Italian (`it`). lang | done | missing --- | --- | --- @@ -206,6 +206,7 @@ de | 81% | cross_posts,cross_post,users,number_of_communities,preview,upload_ima eo | 90% | number_of_communities,preview,upload_image,formatting_help,view_source,sticky,unsticky,stickied,delete_account,delete_account_confirm,banned,creator,number_online,replies,mentions,theme,are_you_sure,yes,no es | 99% | replies,mentions fr | 99% | replies,mentions +it | 100% | nl | 92% | preview,upload_image,formatting_help,view_source,sticky,unsticky,stickied,delete_account,delete_account_confirm,banned,creator,number_online,replies,mentions,theme ru | 86% | cross_posts,cross_post,number_of_communities,preview,upload_image,formatting_help,view_source,sticky,unsticky,stickied,delete_account,delete_account_confirm,banned,creator,number_online,replies,mentions,recent_comments,theme,monero,by,to,transfer_community,transfer_site,are_you_sure,yes,no sv | 99% | replies,mentions diff --git a/ui/src/i18next.ts b/ui/src/i18next.ts index bfe720ff..3dd152a4 100644 --- a/ui/src/i18next.ts +++ b/ui/src/i18next.ts @@ -9,6 +9,7 @@ import { sv } from './translations/sv'; import { ru } from './translations/ru'; import { zh } from './translations/zh'; import { nl } from './translations/nl'; +import { it } from './translations/it'; // https://github.com/nimbusec-oss/inferno-i18next/blob/master/tests/T.test.js#L66 const resources = { @@ -21,6 +22,7 @@ const resources = { sv, ru, nl, + it, }; function format(value: any, format: any, lng: any) { diff --git a/ui/src/translations/it.ts b/ui/src/translations/it.ts new file mode 100644 index 00000000..db22eeb4 --- /dev/null +++ b/ui/src/translations/it.ts @@ -0,0 +1,191 @@ +export const it = { + translation: { + post: 'post', + remove_post: 'Rimuovi Post', + no_posts: 'Nessun Post.', + create_a_post: 'Crea un post', + create_post: 'Crea Post', + number_of_posts: '{{count}} Posts', + posts: 'Posts', + related_posts: 'Questi post potrebbero essere correlati', + cross_posts: 'Questo link è stato postato anche in:', + cross_post: 'cross-post', + comments: 'Commenti', + number_of_comments: '{{count}} Commenti', + remove_comment: 'Rimuovi Commento', + communities: 'Comunità', + users: 'Utenti', + create_a_community: 'Crea una Comunità', + create_community: 'Crea Comunità', + remove_community: 'Rimuovi Comunità', + subscribed_to_communities: 'Iscritto alle <1>comunità', + trending_communities: '<1>Comunità in crescita', + list_of_communities: 'Lista di comunità', + number_of_communities: '{{count}} Comunità', + community_reqs: 'minuscole, trattini bassi e nessuno spazio.', + edit: 'modifica', + reply: 'rispondi', + cancel: 'Annulla', + preview: 'Anteprima', + upload_image: 'carica immagine', + formatting_help: 'aiuto formattazione', + view_source: 'visualizza sorgente', + unlock: 'sblocca', + lock: 'blocca', + sticky: 'evidenzia', + unsticky: 'rimuovi evidenza', + link: 'link', + mod: 'moderatore', + mods: 'moderatori', + moderates: 'Moderatore di', + settings: 'Impostazioni', + remove_as_mod: 'rimuovi come moderatore', + appoint_as_mod: 'nomina come moderatore', + modlog: 'Registro di moderazione', + admin: 'amministratore', + admins: 'amministratori', + remove_as_admin: 'rimuovi come amministratore', + appoint_as_admin: 'nomina come amministratore', + remove: 'rimuovi', + removed: 'rimosso', + locked: 'bloccato', + stickied: 'evidenziato', + reason: 'Ragione', + mark_as_read: 'segna come letto', + mark_as_unread: 'segna come non letto', + delete: 'cancella', + deleted: 'cancellato', + delete_account: 'Cancella Account', + delete_account_confirm: 'Attenzione: stai per cancellare permanentemente tutti i tuoi dati. Sei sicuro?', + restore: 'ripristina', + ban: 'ban', + ban_from_site: 'banna dal sito', + unban: 'rimuovi ban', + unban_from_site: 'rimuove il ban dal sito', + banned: 'bannato', + save: 'salva', + unsave: 'rimuovi', + create: 'crea', + creator: 'autore', + username: 'Username', + email_or_username: 'Email o Username', + number_of_users: '{{count}} Utenti', + number_of_subscribers: '{{count}} Iscritti', + number_of_points: '{{count}} Punti', + number_online: '{{count}} Utenti Online', + name: 'Nome', + title: 'Titolo', + category: 'Categoria', + subscribers: 'Iscritti', + both: 'Entrambi', + saved: 'Salvato', + unsubscribe: 'Disiscriviti', + subscribe: 'Iscriviti', + subscribed: 'Iscritto', + prev: 'Precedente', + next: 'Prossima', + sidebar: 'Barra laterale', + sort_type: 'Ordina per', + hot: 'Popolari', + new: 'Nuovi', + top_day: 'Migliori della giornata', + week: 'Settimana', + month: 'Mese', + year: 'Anno', + all: 'Tutti', + top: 'Migliori', + api: 'API', + inbox: 'Posta in arrivo', + inbox_for: 'Posta di <1>{{user}}', + mark_all_as_read: 'segna tutti come letti', + type: 'Tipo', + unread: 'Non letti', + replies: 'Risposte', + mentions: 'Menzioni', + reply_sent: 'Risposta inviata', + search: 'Cerca', + overview: 'Panoramica', + view: 'Visualizza', + logout: 'Logout', + login_sign_up: 'Login / Iscriviti', + login: 'Login', + sign_up: 'Iscriviti', + notifications_error: 'Le notifiche desktop non sono supportate sul tuo browser. Prova Firefox o Chrome.', + unread_messages: 'Messaggi Non Letti', + password: 'Password', + verify_password: 'Verifica Password', + email: 'Email', + optional: 'Opzionale', + expires: 'Scade', + url: 'URL', + body: 'Contenuto', + copy_suggested_title: 'copia titolo suggerito: {{title}}', + community: 'Comunità', + expand_here: 'Visualizza qui', + subscribe_to_communities: 'Iscriviti ad una <1>comunità.', + chat: 'Chat', + recent_comments: 'Commenti Recenti', + no_results: 'Nessun risultato.', + setup: 'Setup', + lemmy_instance_setup: 'Setup dell\'istanza di Lemmy', + setup_admin: 'Imposta Amministratore del Sito', + your_site: 'il tuo sito', + modified: 'modificato', + nsfw: 'NSFW', + show_nsfw: 'Mostra contenuto NSFW', + theme: 'Tema', + sponsors: 'Sponsors', + sponsors_of_lemmy: 'Sponsors di Lemmy', + sponsor_message: 'Lemmy è un software gratuito e <1>open-source, il che significa nessuna pubblicità, monetizzazione o investitori esterni, per sempre. Le tue donazioni supportano direttamente lo sviluppo full-time del progetto. Si ringraziano le seguenti persone:', + support_on_patreon: 'Supporta su Patreon', + general_sponsors: 'I "General Sponsors" sono quelli che hanno investito dai 10$ ai 39$ su Lemmy.', + crypto: 'Crypto', + bitcoin: 'Bitcoin', + ethereum: 'Ethereum', + monero: 'Monero', + code: 'Code', + joined: 'Iscritto da', + by: 'di', + to: 'su', + transfer_community: 'trasferisci comunità', + transfer_site: 'trasferisci sito', + are_you_sure: 'sei sicuro?', + yes: 'si', + no: 'no', + powered_by: 'Powered by', + landing_0: 'Lemmy è un <1>aggregatore di link / alternativa a reddit, creato per integrarsi con il <2>fediverse. <3>È self-hosted, i commenti sono aggiornati in tempo reale ed è molto piccolo (<4>~80kB). La Federazione con la rete ActivityPub sarà implementata nel futuro. <5>Questa versione è una <6>beta molto giovane e molte funzionalità sono incomplete o mancanti. <7>Suggerisci nuove funzionalità o segnala errori a <8>questa pagina.<9>Sviluppato con <10>Rust, <11>Actix, <12>Inferno, <13>Typescript.', + not_logged_in: 'Non hai effettuato l\'accesso.', + community_ban: 'Sei stato bannato da questa comunità.', + site_ban: 'Sei stato bannato dal sito', + couldnt_create_comment: 'Impossibile creare il commento.', + couldnt_like_comment: 'Impossibile mettere \'Mi piace\' al commento.', + couldnt_update_comment: 'Impossibile aggiornare il commento.', + couldnt_save_comment: 'Impossibile salvare il commento.', + no_comment_edit_allowed: 'Non sei autorizzato a modificare il commento.', + no_post_edit_allowed: 'Non sei autorizzato a modificare il post.', + no_community_edit_allowed: 'Non sei autorizzato a modificare la comunità.', + couldnt_find_community: 'Impossibile trovare la comunità.', + couldnt_update_community: 'Impossibile aggiornare la comunità.', + community_already_exists: 'La comunità esiste già.', + community_moderator_already_exists: 'Questo utente è già moderatore della comunità.', + community_follower_already_exists: 'Questo utente è già moderatore della comunità.', + community_user_already_banned: 'L\'utente della comunità è già stato bannato.', + couldnt_create_post: 'Impossibile creare il post.', + couldnt_like_post: 'Impossibile mettere \'Mi piace\' post.', + couldnt_find_post: 'Impossibile trovare il post.', + couldnt_get_posts: 'Impossibile recuperare i post', + couldnt_update_post: 'Impossibile aggiornare il post', + couldnt_save_post: 'Impossibile salvare il post.', + no_slurs: 'Niente offese.', + not_an_admin: 'Non un amministratore.', + site_already_exists: 'Il sito esiste già.', + couldnt_update_site: 'Impossibile aggiornare il sito.', + couldnt_find_that_username_or_email: 'L\'username o la email non sono stati trovati.', + password_incorrect: 'Password non corretta.', + passwords_dont_match: 'Le password non corrispondono.', + admin_already_created: 'Spiacente, esiste già un amministratore.', + user_already_exists: 'L\'utente esiste già.', + couldnt_update_user: 'Impossibile aggiornare l\'utente.', + system_err_login: 'Si è verificato un errore. Prova ad effettuare nuovamente il login.', + }, +} diff --git a/ui/src/utils.ts b/ui/src/utils.ts index 867ff91e..b6e4aafa 100644 --- a/ui/src/utils.ts +++ b/ui/src/utils.ts @@ -6,6 +6,7 @@ import 'moment/locale/fr'; import 'moment/locale/sv'; import 'moment/locale/ru'; import 'moment/locale/nl'; +import 'moment/locale/it'; import { UserOperation, @@ -263,6 +264,8 @@ export function getMomentLanguage(): string { lang = 'eo'; } else if (lang.startsWith('nl')) { lang = 'nl'; + } else if (lang.startsWith('it')) { + lang = 'it'; } else { lang = 'en'; } diff --git a/ui/translation_report.ts b/ui/translation_report.ts index 8e579f27..da4cd3aa 100644 --- a/ui/translation_report.ts +++ b/ui/translation_report.ts @@ -7,16 +7,18 @@ import { fr } from './src/translations/fr'; import { sv } from './src/translations/sv'; import { ru } from './src/translations/ru'; import { nl } from './src/translations/nl'; +import { it } from './src/translations/it'; let files = [ - {t: de, n: 'de'}, - {t: eo, n: 'eo'}, - {t: es, n: 'es'}, - {t: fr, n: 'fr'}, - {t: nl, n: 'nl'}, - {t: ru, n: 'ru'}, - {t: sv, n: 'sv'}, - {t: zh, n: 'zh'}, + {t: de, n: 'de'}, + {t: eo, n: 'eo'}, + {t: es, n: 'es'}, + {t: fr, n: 'fr'}, + {t: it, n: 'it'}, + {t: nl, n: 'nl'}, + {t: ru, n: 'ru'}, + {t: sv, n: 'sv'}, + {t: zh, n: 'zh'}, ]; let masterKeys = Object.keys(en.translation);