Skip to content

Commit

Permalink
feat(i18n): add Italian language support (#407)
Browse files Browse the repository at this point in the history
* feat(i18n): add Italian language support

Added Italian translations to the application, including localization for app content, common phrases, external resources, language settings, and shortcuts.

* Update en.json

* Update ja.json

* Update zh-CN.json

* fix: import format

* feat: support lang/*.json

* feat: Merge dev to i18n/add-it

---------

Co-authored-by: Innei <[email protected]>
  • Loading branch information
upupnoah and Innei committed Sep 19, 2024
1 parent 9ea05b9 commit 79006a2
Show file tree
Hide file tree
Showing 21 changed files with 621 additions and 2 deletions.
1 change: 1 addition & 0 deletions apps/renderer/src/@types/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export const dayjsLocaleImportMap = {
en: ["en", () => import("dayjs/locale/en")],
["zh-CN"]: ["zh-cn", () => import("dayjs/locale/zh-cn")],
["ja"]: ["ja", () => import("dayjs/locale/ja")],
["it"]: ["it", () => import("dayjs/locale/it")],
["ar-DZ"]: ["ar-dz", () => import("dayjs/locale/ar-dz")],
["ar-SA"]: ["ar-sa", () => import("dayjs/locale/ar-sa")],
["ar-MA"]: ["ar-ma", () => import("dayjs/locale/ar-ma")],
Expand Down
3 changes: 3 additions & 0 deletions apps/renderer/src/@types/default-resource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import common_arsa from "../../../../locales/common/ar-SA.json"
import common_en from "../../../../locales/common/en.json"
import common_es from "../../../../locales/common/es.json"
import common_fr from "../../../../locales/common/fr.json"
import common_it from "../../../../locales/common/it.json"
import common_ja from "../../../../locales/common/ja.json"
import common_pt from "../../../../locales/common/pt.json"
import common_zhCN from "../../../../locales/common/zh-CN.json"
Expand All @@ -17,6 +18,7 @@ import lang_arsa from "../../../../locales/lang/ar-SA.json"
import lang_en from "../../../../locales/lang/en.json"
import lang_es from "../../../../locales/lang/es.json"
import lang_fr from "../../../../locales/lang/fr.json"
import lang_it from "../../../../locales/lang/it.json"
import lang_ja from "../../../../locales/lang/ja.json"
import lang_pt from "../../../../locales/lang/pt.json"
import lang_zhCN from "../../../../locales/lang/zh-CN.json"
Expand Down Expand Up @@ -48,6 +50,7 @@ export const defaultResources = {
lang: lang_ja,
common: common_ja,
},
it: { lang: lang_it, common: common_it },
"ar-DZ": { lang: lang_ardz, common: common_ardz },
"ar-SA": { lang: lang_arsa, common: common_arsa },
"ar-MA": { lang: lang_arma, common: common_arma },
Expand Down
207 changes: 207 additions & 0 deletions locales/app/it.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
{
"ai_daily.title": "Top News - {{title}}",
"ai_daily.tooltip.content": "Qui ci sono notizie selezionate dall'IA dalla tua timeline (<From /> - <To />) che potrebbero essere importanti per te.",
"ai_daily.tooltip.update_schedule": "Aggiornato ogni giorno alle 8 AM e alle 8 PM.",
"app.app_name": "NOME_APP",
"app.copy_logo_svg": "Copia Logo SVG",
"app.toggle_sidebar": "Mostra/Nascondi Sidebar",
"discover.any_url_or_keyword": "Qualsiasi URL o Parola Chiave",
"discover.default_option": " (predefinito)",
"discover.feed_description": "La descrizione di questo feed è la seguente, e puoi compilare il modulo dei parametri con le informazioni pertinenti.",
"discover.feed_maintainers": "Questo feed è fornito da RSSHub, con il credito a <maintainers />",
"discover.import.click_to_upload": "Clicca per caricare il file OPML",
"discover.popular": "Popolare",
"discover.preview": "Anteprima",
"discover.rss_hub_route": "Percorso RSSHub",
"discover.rss_url": "URL RSS",
"discover.select_placeholder": "Seleziona",
"early_access": "Accesso Anticipato",
"entry_actions.copy_link": "Copia link",
"entry_actions.failed_to_save_to_eagle": "Salvataggio su Eagle non riuscito.",
"entry_actions.failed_to_save_to_instapaper": "Salvataggio su Instapaper non riuscito.",
"entry_actions.failed_to_save_to_readwise": "Salvataggio su Readwise non riuscito.",
"entry_actions.link_copied": "Link copiato negli appunti.",
"entry_actions.mark_as_read": "Segna come letto",
"entry_actions.mark_as_unread": "Segna come non letto",
"entry_actions.open_in_browser": "Apri nel browser",
"entry_actions.save_media_to_eagle": "Salva media su Eagle",
"entry_actions.save_to_instapaper": "Salva su Instapaper",
"entry_actions.save_to_readwise": "Salva su Readwise",
"entry_actions.saved_to_eagle": "Salvato su Eagle.",
"entry_actions.saved_to_instapaper": "Salvato su Instapaper.",
"entry_actions.saved_to_readwise": "Salvato su Readwise.",
"entry_actions.share": "Condividi",
"entry_actions.star": "Aggiungi ai preferiti",
"entry_actions.starred": "Aggiunto ai preferiti.",
"entry_actions.tip": "Dona",
"entry_actions.unstar": "Rimuovi dai preferiti",
"entry_actions.unstarred": "Rimosso dai preferiti.",
"entry_column.refreshing": "Aggiornamento nuove voci...",
"entry_content.ai_summary": "Riassunto IA",
"entry_content.fetching_content": "Recupero del contenuto originale e elaborazione...",
"entry_content.header.play_tts": "Riproduci TTS",
"entry_content.header.readability": "Leggibilità",
"entry_content.no_content": "Nessun contenuto",
"entry_content.readability_notice": "Questo contenuto è fornito da Readability. Se trovi anomalie tipografiche, vai al sito sorgente per visualizzare il contenuto originale.",
"entry_content.render_error": "Errore di rendering:",
"entry_content.report_issue": "Segnala problema",
"entry_content.web_app_notice": "Forse l'app web non supporta questo tipo di contenuto. Puoi comunque scaricare l'app desktop.",
"entry_list.zero_unread": "Zero Non Letti",
"entry_list_header.daily_report": "Rapporto Giornaliero",
"entry_list_header.hide_no_image_items": "Nascondi voci senza immagini",
"entry_list_header.items": "elementi",
"entry_list_header.new_entries_available": "Nuove voci disponibili",
"entry_list_header.refetch": "Ricarica",
"entry_list_header.refresh": "Aggiorna",
"entry_list_header.show_all": "Mostra tutto",
"entry_list_header.show_all_items": "Mostra tutte le voci",
"entry_list_header.show_unread_only": "Mostra solo non letti",
"entry_list_header.switch_to_grid": "Passa alla griglia",
"entry_list_header.switch_to_masonry": "Passa a Masonry",
"entry_list_header.unread": "non letto",
"feed_claim_modal.choose_verification_method": "Ci sono tre modi tra cui scegliere, puoi sceglierne uno per verificare.",
"feed_claim_modal.claim_button": "Reclama",
"feed_claim_modal.content_instructions": "Copia il contenuto qui sotto e postalo nel tuo ultimo feed RSS.",
"feed_claim_modal.description_current": "Descrizione attuale:",
"feed_claim_modal.description_instructions": "Copia il seguente contenuto e incollalo nel campo <code /> del tuo feed RSS.",
"feed_claim_modal.failed_to_load": "Caricamento del messaggio di reclamo non riuscito",
"feed_claim_modal.rss_format_choice": "I generatori RSS generalmente hanno due formati tra cui scegliere. Copia i formati XML e JSON qui sotto come necessario.",
"feed_claim_modal.rss_instructions": "Copia il codice qui sotto e incollalo nel tuo generatore di feed RSS.",
"feed_claim_modal.rss_json_format": "Formato JSON",
"feed_claim_modal.rss_xml_format": "Formato XML",
"feed_claim_modal.rsshub_notice": "Questo feed è fornito da RSSHub con una cache di 1 ora. Permetti fino a un'ora affinché le modifiche siano visibili dopo la pubblicazione del contenuto.",
"feed_claim_modal.tab_content": "Contenuto",
"feed_claim_modal.tab_description": "Descrizione",
"feed_claim_modal.tab_rss": "Tag RSS",
"feed_claim_modal.verify_ownership": "Per reclamare questo feed come tuo, devi verificare la proprietà.",
"feed_form.add_follow": "Aggiungi ai seguiti",
"feed_form.category": "Categoria",
"feed_form.category_description": "Per impostazione predefinita, i tuoi seguiti verranno raggruppati per sito web.",
"feed_form.error_fetching_feed": "Errore nel recupero del feed.",
"feed_form.feed_not_found": "Feed non trovato.",
"feed_form.feedback": "Feedback",
"feed_form.follow": "Segui",
"feed_form.followed": "🎉 Seguito.",
"feed_form.private_follow": "Seguito Privato",
"feed_form.private_follow_description": "Questo seguito è visibile pubblicamente sulla tua pagina profilo?",
"feed_form.retry": "Riprova",
"feed_form.title": "Titolo",
"feed_form.title_description": "Titolo personalizzato per questo Feed. Lascia vuoto per usare quello predefinito.",
"feed_form.unfollow": "Smetti di seguire",
"feed_form.update": "Aggiorna",
"feed_form.update_follow": "Aggiorna seguiti",
"feed_form.updated": "🎉 Aggiornato.",
"feed_form.view": "Visualizza",
"feed_item.claimed_by_owner": "Questo feed è rivendicato da",
"feed_item.claimed_by_unknown": "il suo proprietario.",
"feed_item.claimed_by_you": "Reclamato da te",
"feed_item.claimed_feed": "Feed Reclamato",
"feed_item.error_since": "Errore da",
"feed_item.not_publicly_visible": "Non visibile pubblicamente sulla tua pagina profilo",
"feed_view_type.articles": "Articoli",
"feed_view_type.audios": "Audio",
"feed_view_type.notifications": "Notifiche",
"feed_view_type.pictures": "Immagini",
"feed_view_type.social_media": "Social Media",
"feed_view_type.videos": "Video",
"mark_all_read_button.auto_confirm_info": "Sarà confermato automaticamente dopo 3s.",
"mark_all_read_button.confirm": "Conferma",
"mark_all_read_button.confirm_mark_all": "Segna {{which}} come letto?",
"mark_all_read_button.confirm_mark_all_info": "Confermi di segnare tutto come letto?",
"mark_all_read_button.mark_all_as_read": "Segna tutto come letto",
"mark_all_read_button.mark_as_read": "Segna {{which}} come letto",
"mark_all_read_button.undo": "Annulla",
"player.back_10s": "Indietro di 10s",
"player.close": "Chiudi",
"player.download": "Scarica",
"player.exit_full_screen": "Esci da schermo intero",
"player.forward_10s": "Avanti di 10s",
"player.full_screen": "Schermo intero",
"player.mute": "Muto",
"player.open_entry": "Apri Voce",
"player.pause": "Pausa",
"player.play": "Riproduci",
"player.playback_rate": "Velocità di riproduzione",
"player.unmute": "Riattiva audio",
"player.volume": "Volume",
"search.empty.no_results": "Nessun risultato trovato.",
"search.group.entries": "Voci",
"search.group.feeds": "Feed",
"search.options.all": "Tutto",
"search.options.entries": "Voci",
"search.options.feeds": "Feed",
"search.options.search_type": "Tipo di ricerca",
"search.placeholder": "Cerca...",
"search.result_count_local_mode": "(Modalità locale)",
"search.tooltip.local_search": "Questa ricerca copre i dati disponibili localmente. Prova a Ricaricare per includere i dati più recenti.",
"shortcuts.guide.title": "Guida ai tasti rapidi",
"sidebar.category_remove_dialog.cancel": "Annulla",
"sidebar.category_remove_dialog.continue": "Continua",
"sidebar.category_remove_dialog.description": "Questa operazione eliminerà la tua categoria, ma i feed che contiene saranno mantenuti e raggruppati per sito web.",
"sidebar.category_remove_dialog.title": "Rimuovi categoria",
"sidebar.feed_actions.claim": "Reclama",
"sidebar.feed_actions.claim_feed": "Reclama feed",
"sidebar.feed_actions.copy_feed_id": "Copia ID feed",
"sidebar.feed_actions.copy_feed_url": "Copia URL feed",
"sidebar.feed_actions.edit": "Modifica",
"sidebar.feed_actions.edit_feed": "Modifica feed",
"sidebar.feed_actions.feed_owned_by_you": "Questo feed è di tua proprietà",
"sidebar.feed_actions.mark_all_as_read": "Segna tutto come letto",
"sidebar.feed_actions.navigate_to_feed": "Vai al feed",
"sidebar.feed_actions.open_feed_in_browser": "Apri feed nel browser",
"sidebar.feed_actions.open_site_in_browser": "Apri sito nel browser",
"sidebar.feed_actions.unfollow": "Smetti di seguire",
"sidebar.feed_actions.unfollow_feed": "Smetti di seguire feed",
"sidebar.feed_column.context_menu.change_to_other_view": "Cambia ad altra visualizzazione",
"sidebar.feed_column.context_menu.delete_category": "Elimina categoria",
"sidebar.feed_column.context_menu.delete_category_confirmation": "Eliminare la categoria {{folderName}}?",
"sidebar.feed_column.context_menu.mark_as_read": "Segna come letto",
"sidebar.feed_column.context_menu.rename_category": "Rinomina categoria",
"sidebar.select_sort_method": "Seleziona un metodo di ordinamento",
"signin.continue_with_github": "Continua con GitHub",
"signin.continue_with_google": "Continua con Google",
"signin.sign_in_to": "Accedi a",
"sync_indicator.disabled": "Per ragioni di sicurezza, la sincronizzazione è disabilitata.",
"sync_indicator.offline": "Offline",
"sync_indicator.synced": "Sincronizzato con il server",
"tip_modal.amount": "Quantità",
"tip_modal.claim_feed": "Reclama questo feed",
"tip_modal.create_wallet": "Crea gratuitamente",
"tip_modal.feed_owner": "Proprietario del feed",
"tip_modal.low_balance": "Il tuo saldo non è sufficiente per coprire questa mancia. Per favore, regola l'importo.",
"tip_modal.no_wallet": "Non hai ancora un portafoglio. Creane uno per dare mance.",
"tip_modal.tip_amount_sent": "è stato inviato all'autore.",
"tip_modal.tip_now": "Dai una mancia ora",
"tip_modal.tip_sent": "Mancia inviata con successo! Grazie per il tuo supporto.",
"tip_modal.tip_support": "⭐ Dai una mancia per mostrare il tuo supporto!",
"tip_modal.unclaimed_feed": "Nessuno ha ancora reclamato questo feed. Il Power ricevuto sarà conservato in modo sicuro nel contratto blockchain fino a quando non verrà reclamato.",
"user_button.account": "Account",
"user_button.download_desktop_app": "Scarica l'app desktop",
"user_button.log_out": "Esci",
"user_button.power": "Power",
"user_button.preferences": "Preferenze",
"user_button.profile": "Profilo",
"user_profile.close": "Chiudi",
"user_profile.edit": "Modifica",
"user_profile.loading": "Caricamento in corso",
"user_profile.share": "Condividi",
"user_profile.toggle_item_style": "Cambia stile dell'elemento",
"words.add": "Aggiungi",
"words.confirm": "Conferma",
"words.discover": "Scopri",
"words.email": "Email",
"words.import": "Importa",
"words.items": "Elementi",
"words.language": "Lingua",
"words.load_archived_entries": "Carica voci archiviate",
"words.login": "Accedi",
"words.rss": "RSS",
"words.rss3": "RSS3",
"words.rsshub": "RSSHub",
"words.search": "Cerca",
"words.starred": "Preferiti",
"words.unread": "Non letti",
"words.user": "Utente",
"words.which.all": "tutti",
"words.zero_items": "Zero elementi"
}
28 changes: 28 additions & 0 deletions locales/common/it.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
{
"app.copied_to_clipboard": "Copiato negli appunti",
"cancel": "Annulla",
"confirm": "Conferma",
"ok": "OK",
"quantifier.piece": "",
"time.last_night": "Ieri sera",
"time.the_night_before_last": "L'altra sera",
"time.today": "Oggi",
"time.yesterday": "Ieri",
"tips.load-lng-error": "Errore nel caricamento del pacchetto linguistico",
"words.back": "Indietro",
"words.copy": "Copia",
"words.edit": "Modifica",
"words.entry": "Voce",
"words.id": "ID",
"words.items_one": "Elemento",
"words.items_other": "Elementi",
"words.local": "locale",
"words.record": "record",
"words.record_one": "record",
"words.record_other": "record",
"words.result": "risultato",
"words.result_one": "risultato",
"words.result_other": "risultati",
"words.space": " ",
"words.which.all": "Tutti"
}
42 changes: 42 additions & 0 deletions locales/external/it.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"feed": {
"follow_one": "segui",
"follow_other": "seguono",
"followsAndReads": "{{subscriptionCount}} {{subscriptionNoun}} con {{readCount}} {{readNoun}} su {{appName}}",
"read_one": "letto",
"read_other": "letti"
},
"header": {
"app": "App",
"download": "Scarica"
},
"invitation": {
"activate": "Attiva",
"codeOptions": {
"1": "Cerca qualsiasi utente alpha test per invitarti.",
"2": "Unisciti al nostro server Discord per partecipare a estrazioni occasionali.",
"3": "Segui il nostro account X per partecipare a estrazioni occasionali."
},
"earlyAccess": "Follow è attualmente in accesso anticipato e richiede un codice di invito per essere utilizzato.",
"earlyAccessMessage": "😰 Ci dispiace, Follow è attualmente in accesso anticipato e richiede un codice di invito per essere utilizzato.",
"generateButton": "Genera nuovo codice",
"generateCost": "Puoi spendere {{INVITATION_PRICE}} Power per generare un codice di invito per i tuoi amici.",
"getCodeMessage": "Puoi ottenere un codice di invito nei seguenti modi:",
"title": "Codice di Invito"
},
"login": {
"backToWebApp": "Torna all'App Web",
"continueWithGitHub": "Continua con GitHub",
"continueWithGoogle": "Continua con Google",
"logInTo": "Accedi a",
"openApp": "Apri App",
"redirecting": "Reindirizzamento in corso",
"welcomeTo": "Benvenuto su"
},
"redirect": {
"continueInBrowser": "Continua nel Browser",
"instruction": "Ora è il momento di aprire {{APP_NAME}} e chiudere in sicurezza questa pagina.",
"openApp": "Apri {{APP_NAME}}",
"successMessage": "Ti sei connesso con successo all'account {{APP_NAME}}."
}
}
15 changes: 15 additions & 0 deletions locales/lang/ar-dz.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"langs.ar-DZ": "العربية (الجزائر)",
"langs.ar-MA": "العربية (المغرب)",
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (الجزائر)"
}
15 changes: 15 additions & 0 deletions locales/lang/ar-ma.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"langs.ar-DZ": "العربية (الجزائر)",
"langs.ar-MA": "العربية (المغرب)",
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (المغرب)"
}
15 changes: 15 additions & 0 deletions locales/lang/ar-sa.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"langs.ar-DZ": "العربية (الجزائر)",
"langs.ar-MA": "العربية (المغرب)",
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "العربية (السعودية)"
}
1 change: 1 addition & 0 deletions locales/lang/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
Expand Down
1 change: 1 addition & 0 deletions locales/lang/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
Expand Down
1 change: 1 addition & 0 deletions locales/lang/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
Expand Down
15 changes: 15 additions & 0 deletions locales/lang/it.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"langs.ar-DZ": "العربية (الجزائر)",
"langs.ar-MA": "العربية (المغرب)",
"langs.ar-SA": "العربية (السعودية)",
"langs.en": "English",
"langs.es": "Español",
"langs.fr": "Français",
"langs.it": "Italiano",
"langs.ja": "日本語",
"langs.pt": "Português",
"langs.zh-CN": "简体中文",
"langs.zh-HK": "繁體中文(香港)",
"langs.zh-TW": "繁體中文(台灣)",
"name": "Italiano"
}
Loading

0 comments on commit 79006a2

Please sign in to comment.