feat: support Italian language

This commit is contained in:
Tom Fong 2022-05-28 00:02:43 +08:00
parent 461086e37f
commit 8edcce5ebb
5 changed files with 330 additions and 21 deletions

View file

@ -63,6 +63,7 @@ By using the app, you can
* Simplified Chinese 简体中文 (zh-CN)
* German Deutsch (de)
* French Français (fr)
* Italian Italiano (it)
You are welcomed to help translate the app into more languages (refer to this <a href="#how-to-help-translate">section</a>)

View file

@ -163,15 +163,17 @@ export class HistoryPage {
return moment(date).format("YYYY年M月D日 HH:mm:ss");
}
} else {
const momentObj = moment(date);
momentObj.locale(this.env.language);
switch (source) {
case 'create':
return this.translate.instant("CREATED") + ' at ' + moment(date).format("YYYY-MMM-DD HH:mm:ss");
return this.translate.instant("CREATED") + ' at ' + momentObj.format("DD MMM YYYY HH:mm:ss");
case 'view':
return this.translate.instant("VIEWED") + ' at ' + moment(date).format("YYYY-MMM-DD HH:mm:ss");
return this.translate.instant("VIEWED") + ' at ' + momentObj.format("DD MMM YYYY HH:mm:ss");
case 'scan':
return this.translate.instant("SCANNED") + ' at ' + moment(date).format("YYYY-MMM-DD HH:mm:ss");
return this.translate.instant("SCANNED") + ' at ' + momentObj.format("DD MMM YYYY HH:mm:ss");
default:
return moment(date).format("YYYY-MMM-DD HH:mm:ss");
return momentObj.format("DD MMM YYYY HH:mm:ss");
}
}
}

View file

@ -59,6 +59,18 @@
[color]="'primary'">
</ion-radio>
</ion-item>
<ion-item class="ion-no-padding ripple-parent" detail="false" lines="none">
<ion-label class="ion-padding-start">
<p class="ion-padding pre-line">
<ion-text [color]="env.colorTheme === 'light'? 'dark' : 'light'" style="font-size: large;">
Italiano (it)
</ion-text>
</p>
</ion-label>
<ion-radio class="ion-margin-end" slot="end" [value]="'it'"
[color]="'primary'">
</ion-radio>
</ion-item>
<ion-item class="ion-no-padding ripple-parent" detail="false" lines="none">
<ion-label class="ion-padding-start">
<p class="ion-padding pre-line">

View file

@ -23,9 +23,9 @@ export class EnvService {
public startPage: "/tabs/scan" | "/tabs/generate" | "/tabs/import-image" | "/tabs/history" | "/tabs/setting" = "/tabs/scan";
public historyPageStartSegment: 'history' | 'bookmarks' = 'history';
public startPageHeader: 'on' | 'off' = 'on';
public languages: string[] = ['en', 'zh-HK', 'zh-CN', 'de', 'fr'];
public language: 'en' | 'zh-HK' | 'zh-CN' | 'de' | 'fr' = 'en';
public selectedLanguage: 'default' | 'en' | 'zh-HK' | 'zh-CN' | 'de' | 'fr' = 'default';
public languages: string[] = ['en', 'zh-HK', 'zh-CN', 'de', 'fr', 'it'];
public language: 'en' | 'zh-HK' | 'zh-CN' | 'de' | 'fr' | 'it' = 'en';
public selectedLanguage: 'default' | 'en' | 'zh-HK' | 'zh-CN' | 'de' | 'fr' | 'it' = 'default';
public colorTheme: 'light' | 'dark' | 'black' = 'light';
public selectedColorTheme: 'default' | 'light' | 'dark' | 'black' = 'default';
public scanRecordLogging: 'on' | 'off' = 'on';
@ -54,7 +54,7 @@ export class EnvService {
public showSendMessageButton: 'on' | 'off' = 'on';
public showSendEmailButton: 'on' | 'off' = 'on';
public debugMode: 'on' | 'off' = 'off';
public autoExitAppMin: 1 | 3 | 5 | -1 = -1;
public autoExitAppMin: 1 | 3 | 5 | -1 = -1;
public readonly APP_FOLDER_NAME: string = 'SimpleQR';
public readonly GOOGLE_SEARCH_URL: string = "https://www.google.com/search?q=";
@ -754,22 +754,40 @@ export class EnvService {
if (this.selectedLanguage === 'default') {
let language = 'en';
const browserLang = this.translate.getBrowserCultureLang();
if (browserLang.includes("zh", 0)) {
if (browserLang === 'zh-CN' || browserLang === 'zh-SG') language = 'zh-CN';
else language = "zh-HK";
} else if (browserLang.includes("de", 0)) {
language = "de";
} else if (browserLang.includes("fr", 0)) {
language = "fr";
} else if (browserLang.includes("yue", 0)) {
language = "zh-HK";
} else if (this.languages.includes(browserLang)) {
language = browserLang as 'en' | 'zh-HK' | 'zh-CN' | 'de' | 'fr';
} else {
if (browserLang == null) {
language = 'en';
} else {
const lang = browserLang.slice(0, 2);
switch (lang) {
case "de":
language = "de";
break;
case "en":
language = "en"
break;
case "fr":
language = "fr"
break;
case "it":
language = "it"
break;
case "zh":
if (browserLang === 'zh-CN' || browserLang === 'zh-SG') {
language = 'zh-CN';
} else {
language = "zh-HK";
}
break;
default:
if (browserLang.slice(0, 3) === "yue") {
language = "zh-HK";
} else {
language = 'en';
}
}
}
this.translate.use(language);
this.language = language as 'en' | 'zh-HK' | 'zh-CN' | 'de' | 'fr';
this.language = language as 'en' | 'zh-HK' | 'zh-CN' | 'de' | 'fr' | 'it';
} else {
this.translate.use(this.selectedLanguage);
this.language = this.selectedLanguage;

276
src/assets/i18n/it.json Normal file
View file

@ -0,0 +1,276 @@
{
"49_DIGIT": "49-digit",
"ABOUT": "Informazioni",
"ABOUT_SIMPLE_QR": "Informazioni su Simple QR",
"ADD": "Aggiungi",
"ADD_BCC": "Aggiungi BCC",
"ADD_CC": "Aggiungi CC",
"ADD_CONTACT": "Aggiungi Contatto",
"ADD_RECIPIENT": "Aggiungi Destinatario",
"APPEARANCE_AND_EFFECTS": "Aspetto e Effetti",
"APP_INITIAL_PAGE": "Pagina iniziale",
"APP_VERSION": "Versione",
"AT_LEAST_1_MINUTE_LATER": "Almeno 1 minuto dopo",
"AT_LEAST_3_MINUTES_LATER": "Almeno 3 minuti dopo",
"AT_LEAST_5_MINUTES_LATER": "Almeno 5 minuti dopo",
"AUTO_KILL_BACKGROUND": "Eliminazione background automatica",
"AUTO_LOGGING": "Logging automatico",
"AUTO_MAX_BRIGHTNESS": "Luminosità massima automatica",
"AUTO_QR_CODE_POPUP": "Codice QR Pop-up automatico",
"BACKING_UP": "Eseguendo il backup",
"BACKUP": "Backup",
"BASE64": "Base64",
"BASE64_DECODED": "Base64 Decoded",
"BASE64_ENCODED": "Base64 Encoded",
"BCC": "BCC",
"BLACK": "Black",
"BOOKMARK": "Segnalibro",
"BOOKMARKED": "Aggiunto ai preferiti",
"BOOKMARKED_TEXTS": "Testi preferiti",
"BOOKMARKS": "Segnalibri",
"BROWSE": "Naviga",
"BROWSE_WEBSITE": "Sfoglia il sito web",
"CALL": "Chiama",
"CANCEL": "Cancella",
"CC": "CC",
"CITY": "Città",
"CLEAR": "Pulisci",
"CLOSE": "Chiudi",
"COLOR_THEME": "Tema colore",
"CONTACT_METHOD": "Metodi di contatto",
"CONTACT_NAME": "Nome",
"CONTENT": "Contenuto",
"CONTENT_TYPE": "Tipo di contenuto",
"COPIED": "Copiato",
"COPY": "Copia",
"COPY_SECRET_AND_SAVE_BACKUP": "Copia dato segreto e Salva un backup",
"COPY_TEXT": "Copia testo",
"COUNTRY": "Paese",
"CREATE": "Crea",
"CREATED": "Creato",
"CREATE_QR_CODE": "Crea Codice QR",
"DARK": "Scuro",
"DATE_OF_BIRTH": "Data di nascita",
"DEBUG_MODE": "Modalità di debug",
"DECODING": "Decodifica",
"DECRYPTING": "Decifra",
"DETAILED": "Dettagli",
"DONE": "Completato",
"DUCK_DUCK_GO": "DuckDuckGo",
"EDIT": "Modifica",
"EMAIL_ADDRESS": "Email",
"EMAIL_BODY": "Corpo della mail",
"EMAIL_NTT_DOCOMO": "Email (NTT Docomo)",
"EMAIL_RECIPIENT": "Destinatario email",
"EMAIL_SUBJECT": "Soggetto email",
"EMAIL_TO": "Invia una mail a",
"EMAIL_W3C_STANDARD": "Email (W3C Standard)",
"ENCRYPTING": "Crittografa",
"ERROR_CORRECTION_LEVEL": "Errore di correttezza",
"EXIT": "Esci",
"EXIT_APP": "Esci dall'app",
"FAX_NUMBER": "Numero fax",
"FEMALE": "Donna",
"FIRST_NAME": "Nome",
"FOLLOW_SYSTEM_SETTINGS": "Segui le impostazioni di sistema",
"FREE_TEXT": "Testo",
"FULL_RESET": "Reset",
"FUNCTIONS": "Opzioni",
"GENDER": "Sesso",
"GOOGLE_SEARCH": "Ricerca con Google",
"HAPTIC_FEEDBACK_ONLY": "Feedback disponibile solo tramite Haptic",
"HIDDEN_NETWORK_?": "Rete nascosta?",
"HOME_ADDRESS": "Indirizzo di casa",
"HOME_PHONE_NUMBER": "Numero di telefono di casa",
"ICON_ONLY": "Disponibile solo icona",
"IMPORT": "Importa",
"IMPORT_IMAGE": "Importa immagine",
"INITIAL_SEGMENT": "Segmento iniziale",
"JOB_TITLE": "Titolo di lavoro",
"LANGUAGE": "Lingua",
"LAST_NAME": "Cognome",
"LEARN_MORE": "Scopri di più",
"LEVEL_H": "Livello H",
"LEVEL_L": "Livello L",
"LEVEL_M": "Livello M",
"LEVEL_Q": "Livello Q",
"LIGHT": "Chiaro",
"LOADING_DATA": "Caricamento dati",
"LOCK_LANDSCAPE": "Blocca vista orizzontale",
"LOCK_PORTRAIT": "Blocca vista verticale",
"LOG": "Log",
"LOG_BACKUP_AND_RESTORE": "Logga, Esegui backup & Ripristina",
"MALE": "Uomo",
"MESSAGE": "Messaggio",
"MESSAGE_CONTENT": "Contenuto del messaggio",
"MICROSOFT_BING": "Microsoft Bing",
"MOBILE_PHONE_NUMBER": "Numero di telefono cellulare",
"NAME": "Nome",
"NO": "No",
"NONE": "Nessuno",
"NOT_AVAILABLE": "Non disponibile",
"NOT_PROVIDED": "Non fornito",
"NOT_TO_DISCLOSE": "Non divulgare",
"OK": "OK",
"ONLY_DELETE_DATA": "Elimina esclusivamente i dati",
"ONLY_RESET_SETTING": "Reset delle impostazioni",
"ORGANIZATION": "Organizzazione",
"ORIGINAL": "Orginale",
"OTHERS": "Altri",
"PASSWORD": "Password",
"PATCH_NOTES": "Note di Patch",
"PERMISSION_REQUIRED": "Permesso Richiesto",
"PERSONAL": "Personale",
"PHONE_NO": "Numero di telefono",
"PHONE_NUMBER": "Numero di telefono",
"PLEASE_WAIT": "Attendere",
"POSTAL_CODE": "Codice postale",
"PREPARING": "In preparazione",
"PRIVACY_POLICY": "Politica sulla riservatezza",
"QR_CODE": "Codice QR",
"QR_CODE_AND_DECODED_RESULT": "Codice QR e risultato decodificato",
"QR_CODE_CONTENT": "Contenuto QR code",
"RATE_THE_APP": "Valuta App",
"REMOVE_ALL": "Elimina tutti",
"REMOVE_BCC": "Elimina BCC",
"REMOVE_CC": "Elimina CC",
"REMOVE_RECIPIENT": "Elimina destinatario",
"REPORT_ISSUE": "Segnala un problema",
"RESET_APP": "Reset App",
"RESTORE": "Ripristina",
"RESULT": "Risultato",
"SCAN": "Scannerizza",
"SCANNED": "Scannerizzato",
"SCANNING_FEEDBACK_ONLY": "Scansione esclusivamente del feedback",
"SCAN_BY_CAMERA": "Scansione utilizzando la fotocamera",
"SCREEN_ORIENTATION": "Orientamento schermo",
"SEARCH": "Ricerca",
"SEARCH_ENGINE": "Motore di ricerca",
"SECRET": "Segreto",
"SEND": "Invia",
"SEND_EMAIL": "Invia Email",
"SEND_MESSAGE": "Invia Messaggio",
"SETTING": "Impostazione",
"SETTINGS": "Impostazioni",
"SHARE": "Condividi",
"SHARING": "Condividendo",
"SHOW": "Mostra",
"SHOW_QR_CODE": "Mostra il Codice QR",
"SIMPLE_QR": "Simple QR",
"STATE": "Stato",
"STREET": "Strada",
"SUCCESS": "Successo",
"SUPPORTED_BARCODE_TYPE": "Tipi di codice a barra supportati",
"SUPPORTED_TYPE": "Tipi supportati",
"SYSTEM_DEFAULT": "Sistema Predefinito",
"TASK": "Operazione",
"TASK_BUTTON_LAYOUT": "Disposizione Pulsante Operazione",
"TURN_OFF": "Spegni",
"TURN_ON": "Accendi",
"TUTORIAL": "Guida",
"UNDO": "Annulla",
"UNKNOWN": "Sconosciuto",
"UPDATE_SUCCESSFULLY": "Aggiornamento completato con successo",
"URL": "URL",
"VCARD_CONTACT": "Contatto vCard",
"VIBRATION": "Vibrazione",
"VIEWED": "Visualizzati",
"VIEW_BOOKMARK": "Visualizza segnalibri",
"VIEW_LOG": "Visualizza Log",
"VIEW_STORE_AND_SOURCE_CODE": "Visualizza Store & Codice Sorgente",
"WEBSITE": "Sito Web",
"WIFI": "WiFi",
"WIFI_ENCRYPTION": "Crittografia WiFi",
"WIFI_SSID": "WiFi SSID",
"WORK": "Lavoro",
"WORK_PHONE_NUMBER": "Numero di telefono di lavoro",
"YAHOO_SEARCH": "Yahoo! Search",
"YANDEX": "Yandex",
"YES": "SI",
"MSG": {
"ALREADY_BOOKMARKED": "Errore! Segnalibro già salvato",
"AUTO_KILL_BACKGROUND_EXPLAIN": "<p>Per salvare risorse e batteria, setta automaticamente la durata massima per killare l'app automaticamente quando viene eseguita in background.</p><br><p>Se selezioni <b>Segui le impostazioni di sistema</b>, l'app verrà controllata dal sistema e non sarà possibile killarla in autonomia.</p><br><p>Considera che in alcune situazioni, il sistema potrebbe interrompere l'app in anticipo..</p>",
"AUTO_LOGGING_EXPLAIN": "Qualsiasi contenuto dei codici QR e a barre vengono loggate e salvate automaticamente in seguito alla scannerizzazione, creazione o successiva visualizzazione. Puoi rivederla nella pagina di Log.",
"AUTO_MAX_BRIGHTNESS_EXPLAIN": "La luminosità dello schermo è settata automaticamente al massimo quando si visualizza un codice QR.",
"AUTO_SHOW_QR_EXPLAIN": "Visualizza automaticamente il codice QR nella pagina dei risultati dopo le seguenti azioni.",
"BACKUP_EXPLAIN": "È possibile eseguire il backup di tutti i record e i segnalibri localmente. Ti verrà fornita una serie di chiavi segrete dopo il backup. Salvale in modo sicuro, altrimenti non sarà possibile ripristinare il backup. Si prega di notare che Simple QR non supporta il backup e il ripristino multipiattaforma.",
"BACKUP_FAILED": "Tentativo di backup fallito",
"BACKUP_FAILED_2": "Tentativo di backup fallito. Assicurati che l'autorizzazione di archiviazione sia stata concessa.",
"BACKUP_SUCCESSFULLY": "<p>Backup riuscito. Si prega di salvare il file di backup e salvare la seguente chiave segreta in modo sicuro</p><p>{secret}</p>",
"BARCODE_TYPE": "Scannerizzazione<ul><li>Codice QR</li><li>Codice a barre 1D</li><li>Codice Aztec</li><li>Matrice di Dati</li><li>PDF417</li></ul>Importa Immagine<ul><li>Codice QR</li></ul>Crea<ul><li>Codice QR</li></ul>",
"BOOKMARKED": "Segnalibro salvato con successo",
"BOOKMARK_TUTORIAL_SWIPE_RIGHT": "Scorri verso destra per modificare il tag del segnalibro corrispondente.",
"BUTTON_DISPLAY_EXPLAIN": "Mostra o nascondi il pulsante operazione.",
"BUTTON_STYLE_EXPLAIN": "Scegli lo stile del pulsante operazione.",
"CAMERA_PERMISSION": "Per abilitare la scansione, è necessario concedere l'autorizzazione Fotocamera.",
"CONTACT_PERMISSION": "È necessario concedere l'autorizzazione Contatto per il salvataggio del contatto.",
"COPIED_SECRET": "Chiave segreta copiata",
"COPY_TEXT": "Quale contenuto vuoi copiare?",
"CREATE_QRCODE_MAX_LENGTH": "Massimo di 1817 caratteri",
"CREATE_QRCODE_MAX_LENGTH_EXPLAIN": "La lunghezza del contenuto del codice QR generato non deve superare i 1817 caratteri.",
"DEBUG_MODE_ON": "Modalità di debug abilitata con successo",
"EMAIL_MAX_LENGTH": "Massimo 254 caratteri",
"EMAIL_SUBJECT_MAX_LENGTH": "Massimo 78 caratteri",
"ERROR_CORRECTION_LEVEL_EXPLAIN": "<p>Il codice QR ha la capacità di correzione degli errori per ripristinare i dati anche se il codice è danneggiato.</p><br><p>Sono disponibili 4 livelli::</p><p>Il Livello L recupera il 7% di byte di dati.</p><p>Il Livello M recupera il 15% dei byte di dati.</p><p>Il Livello Q recupera il 25% di byte di dati.</p><p>Il Livello H recupera il 30% di byte di dati.</p><br><p>Si ricorda che l'innalzamento del livello può migliorare la capacità di correzione degli errori, ma aumenta anche la dimensione del codice QR. Pertanto, per i casi generali, si raccomanda il livello M.</p>",
"EXIT_APP": "<p>Sei sicuro di voler uscire?</p><p>Se ti piace Simple QR, valutala sullo store</p>",
"FAILED_SAVING_CONTACT": "Salvataggio dei dati fallito",
"FAIL_PREPARE_SMS": "Impossibile inviare il messaggio",
"INPUT_TAG": "Si prega di dare un tag al segnalibro",
"INVALID_BK_FILE": "Backup non valido.",
"NOT_BASE64_DE": "I dati non possono essere decodificati in Base64",
"NOT_BASE64_EN": "I dati non possono essere decodificati in Base64",
"NOT_BASE64_EN_DE": "I dati non possono essere decodificati in Base64",
"NO_QR_CODE": "Impossibile leggere il Codice QR",
"ONLY_VCARD_3_0": "Soltanto le vCard 3.0 sono supportate",
"PLEASE_INPUT_VALID_SECRET": "Inserisci un codice valido",
"PORTRAIT_ONLY": "Modalità verticale bloccata",
"PREPARE_SMS": "Preparazione messaggio",
"PREVIOUS_RECORDS": "Record precedenti dalla scansione, creazione o visualizzazione",
"QR_CODE_VALUE_NOT_EMPTY": "Il valore del Codice QR non può essere vuoto",
"READ_IMAGE_PERMISSION": "È necessario concedere l'autorizzazione archiviazione per la scansione dell'immagine.",
"REMOVE_ALL_BOOKMARKS": "Sei sicuro di voler eliminare tutti i segnalibri testuali? <b>Questa operazione è irreversibile.</b>",
"REMOVE_ALL_RECORD": "Sei sicuro di voler rimuovere tutti i record? <b>Questa operazione è irriversibile.</b>",
"RESET_APP": "Are you sure to reset this app and delete all data? <b>Questa operazione è irriversibile.</b>",
"RESTORE_EXPLAIN": "È possibile ripristinare un backup precedente di record e segnalibri. Gli elementi del backup verranno uniti ai record esistenti. Il tipo di file di backup deve essere TFSQBK.",
"RESTORE_EXPLAIN_IOS": "È possibile ripristinare un backup precedente di record e segnalibri. Gli elementi del backup verranno uniti ai record esistenti. Il tipo di file di backup deve essere ISQBK.",
"RESTORE_FAILED": "Impossibile ripristinare",
"RESTORE_SECRET": "Inserisci la chiave segrete per ripristinare i record",
"RESTORE_SUCCESSFUL": "Ripristinato con successo",
"RESTORE_WRONG_SECRET": "Codice non corretto",
"SAVED_CONTACT": "Contatto salvato",
"SAVING_CONTACT": "Salvataggio contatto",
"SCAN_QR_FROM_IMAGE": "Simple QR utilizza il modulo \"cozmo/jsQR\" per scansionare il codice QR da una immagine. Per eseguire correttamente la scansione,",
"SCAN_QR_FROM_IMAGE_R1": "Autorizza l'app ad accedere a Archiviazione o Libreria foto.",
"SCAN_QR_FROM_IMAGE_R2": "Assicurarsi che lo sfondo dell'immagine selezionata non sia trasparente. Si consiglia di scegliere un'immagine che non viene acquisita dalla fotocamera.",
"SCAN_QR_FROM_IMAGE_R3": "Si prega di annullare il fotoritocco se si desidera eseguire la scansione dell'immagine completa. (se applicabile)",
"SEARCH": "Quali contenuti vuoi cercare?",
"SEARCH_ENGINE_EXPLAIN": "Scegli il motore di ricerca per fare ricerche sul web dopo aver ottenuto il risultato.",
"SHARE_QR": "Basta scansionarlo!\n\nCondiviso da Simple QR",
"SMS_MAX_LENGTH": "Massimo 160 caratteri",
"SSID_MAX_LENGTH": "Massimo 32 caratteri",
"START_PAGE_EXPLAIN": "Seleziona la pagina iniziale dell'app.",
"START_PAGE_HEADER_EXPLAIN": "Mostra l'intestazione Simple QR nella pagina iniziale.",
"TAG_MAX_LENGTH": "Massimo 30 caratteri",
"TAG_MAX_LENGTH_EXPLAIN": "La lunghezza del tag non deve superare i 30 caratteri.",
"TUTORIAL_NOT_SHOW_AGAIN": "Non mostrare di nuovo",
"TUTORIAL_SWIPE_LEFT": "Scorri verso sinistra per eliminare il record corrispondente.",
"TUTORIAL_SWIPE_RIGHT": "Scorri verso destra per aggiungere ai segnalibri il testo del record corrispondente.",
"UNDO_DELETE": "È possibile annullare l'eliminazione",
"VIBRATION_EXPLAIN": "Fornire vibrazioni o feedback tattile. Tieni presente che non tutti i dispositivi supportano questa funzione."
},
"BARCODE_TYPE": {
"1D": "Codice a barre 1D ",
"AZTEC": "Codice Aztec ",
"DATA_MATRIX": "Matrice di Dati ",
"EAN": "Numero di articolo europeo ",
"MAXICODE": "MaxiCode ",
"PDF_417": "PDF417 ",
"QR_CODE": "Codice QR ",
"RSS": "Barra Dati GS1 ",
"UPC": "Codice Prodotto Universale "
},
"UPDATE": {
"UPDATE_NOTES_ANDROID": "<p>Simple QR è un'applicazione open-source. Se ti piace e ti piace usarlo, votalo sullo store e supporta lo sviluppatore.</p><p>Pending</p>",
"UPDATE_NOTES_IOS": "<p>Simple QR è un'applicazione open-source. Se ti piace e ti piace usarlo, votalo sullo store e supporta lo sviluppatore.</p><p>Pending</p>"
}
}