Merge pull request #60 from FraWolf/dev

Added full Italian translation
This commit is contained in:
Marvin Sextro 2021-07-27 01:40:24 +02:00 committed by GitHub
commit 161e836654
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 204 additions and 46 deletions

View File

@ -25,7 +25,7 @@ function Page(props: PageProps): JSX.Element {
<footer>
<nav className="nav flex pt-4 flex-row space-x-4 justify-center text-md font-bold flex-wrap">
<a href="https://www.paypal.com/paypalme/msextro" className="hover:underline">{t('common:donate')}</a>
<a href="https://ko-fi.com/marvinsxtr" className="hover:underline">{t('common:donate')}</a>
<a href="https://github.com/marvinsxtr/covidpass" className="hover:underline">{t('common:gitHub')}</a>
<Link href="/privacy"><a className="hover:underline">{t('common:privacyPolicy')}</a></Link>
<Link href="/imprint"><a className="hover:underline">{t('common:imprint')}</a></Link>

View File

@ -7,7 +7,8 @@ module.exports = {
'fr', 'fr-BE', 'fr-CH', 'fr-FR', 'fr-LU', 'fr-MC',
'nl', 'nl-NL', 'nl-BE',
'fi', 'fi-FI',
'el', 'el-GR', 'el-CY'
'el', 'el-GR', 'el-CY',
'it'
],
localeExtension: 'yml',
},

View File

@ -0,0 +1,6 @@
title: CovidPass
subtitle: Aggiungi i tuoi certificati digitali europei COVID alle tue app Wallet preferite.
privacyPolicy: Politica sulla Riservatezza
donate: Donazione
gitHub: GitHub
imprint: Menzioni legali

View File

@ -0,0 +1,20 @@
noFileOrQrCode: Perfavore scannerizza un Codice QR, o seleziona un file
signatureFailed: Errore durante la firma del pass sul server
decodingFailed: Impossibile decodificare il payload del Codice QR
invalidColor: Colore non valido
certificateData: Impossibile leggere i dati del certificato
nameMissing: Impossibile leggere il nome
dobMissing: Impossibile leggere la data di nascita
invalidMedicalProduct: Prodotto medico non valido
invalidCountryCode: Codice paese non valido
invalidManufacturer: Produttore non valido
invalidFileType: Tipo di file non valido
couldNotDecode: Impossibile decodificare il Codice QR dal file
couldNotFindQrCode: Impossibile trovare il Codice QR nel Codice QR fornito dal file
invalidQrCode: Codice QR non valido
certificateType: Nessun tipo di certificato valido trovato
invalidTestResult: Risultato del test non valido
invalidTestType: Tipo di test non valido
noCameraAccess: Impossibile accedere alla fotocamera. Controlla le autorizzazioni in Impostazioni > Safari > Fotocamera.
noCameraFound: Impossibile trovare la fotocamera.
safariSupportOnly: Su iOS, usa il browser Safari.

View File

@ -0,0 +1,27 @@
heading: Informativa ai sensi dell'articolo 5 TMG
contact: Contatto
euDisputeResolution: Risoluzione delle controversie dell'UE
euDisputeResolutionParagraph: |
La Commissione Europea fornisce una piattaforma per la risoluzione delle controversie online (OS) https://ec.europa.eu/consumers/odr.
Troverai il nostro indirizzo email nelle menzioni sopra.
consumerDisputeResolution: Risoluzione delle controversie in materia di consumo / collegio arbitrale universale
consumerDisputeResolutionParagraph: Non siamo disposti o obbligati a partecipare a procedimenti di risoluzione delle controversie dinanzi a un collegio arbitrale dei consumatori.
liabilityForContents: Responsabilità per i contenuti
liabilityForContentsParagraph: |
In qualità di fornitore di servizi, siamo responsabili dei nostri contenuti su queste pagine ai sensi dell'articolo 7 capoverso 1 TMG secondo le leggi generali.
In conformità con le sezioni da 8 a 10 TMG, non abbiamo alcun obbligo di monitorare le informazioni trasmesse o archiviate o di indagare su circostanze che indicano un'attività illegale.
Gli obblighi di rimuovere o bloccare l'uso delle informazioni ai sensi delle leggi generali rimangono inalterati.
Tuttavia, la responsabilità in questo senso è possibile solo quando viene a conoscenza di una concreta violazione della legge.
Se veniamo a conoscenza di tali violazioni, rimuoveremo immediatamente il relativo contenuto.
liabilityForLinks: Responsabilità per i link
liabilityForLinksParagraph: |
La nostra offerta contiene link a siti web esterni di terzi, sui cui contenuti non abbiamo alcuna influenza.
Pertanto, non possiamo assumerci alcuna responsabilità per questi contenuti esterni.
Il rispettivo fornitore o gestore dei siti è sempre responsabile del contenuto dei siti collegati.
Le pagine collegate sono state controllate per possibili violazioni legali al momento del collegamento.
I contenuti illegali non erano riconoscibili al momento del collegamento.
Tuttavia, un controllo permanente dei contenuti delle pagine collegate non è ragionevole senza prove concrete di una violazione della legge.
Se veniamo a conoscenza di eventuali violazioni, rimuoveremo immediatamente tali collegamenti.
credits: Crediti
creditsSource: Con estratti da https://www.e-recht24.de/impressum-generator.html
creditsTranslation: Tradotto con https://www.DeepL.com/Translator (versione gratuita)

View File

@ -0,0 +1,26 @@
iosHint: Su iOS, si prega di utilizzare il browser Safari.
errorClose: Chiudi
selectCertificate: Seleziona il certificato
selectCertificateDescription: |
Scannerizza il codice QR sul tuo certificato o seleziona uno screenshot o una pagina PDF con il codice QR.
Nota che la selezione di un file direttamente dalla fotocamera non è supportata.
stopCamera: Blocca Fotocamera
startCamera: Avvia Fotocamera
openFile: Selezionare File
foundQrCode: Codice QR trovato!
pickColor: Seleziona un colore
pickColorDescription: Seleziona un colore di sfondo per il certificato.
colorWhite: bianco
colorBlack: nero
colorGrey: grigio
colorGreen: verde
colorIndigo: indaco
colorBlue: blu
colorPurple: viola
colorTeal: verde acqua
addToWallet: Aggiungi a Wallet
dataPrivacyDescription: |
La riservatezza dei dati è di particolare importanza quando si elaborano dati relativi alla salute.
Per poter prendere una decisione informata, si prega di leggere il
iAcceptThe: Accetto il
privacyPolicy: Politica sulla Riservatezza

View File

@ -0,0 +1,57 @@
gdprNotice: |
La nostra Politica sulla Riservatezza si basa sui termini utilizzati dal legislatore europeo
per l'adozione del Regolamento generale sulla protezione dei dati (GDPR).
generalInfo: Informazione Generale
generalInfoProcess: |
L'intero processo di generazione del file pass avviene localmente nel tuo browser.
Per la fase di firma, al server viene inviata solo una rappresentazione con hash dei tuoi dati.
generalInfoStoring: I tuoi dati non vengono memorizzati oltre la sessione del browser attiva e il sito non utilizza cookie.
generalInfoThirdParties: Nessun dato viene inviato a terzi.
generalInfoHttps: Trasmettiamo i tuoi dati in modo sicuro su https.
generalInfoLocation: Il nostro server è ospitato a Norimberga, in Germania.
generalInfoGitHub: Il codice sorgente di questo sito è disponibile su
generalInfoLockScreen: Per impostazione predefinita, gli abbonamenti Apple Wallet sono accessibili dalla schermata di blocco. Questo può essere modificato in
settings: impostazioni
generalInfoProvider: |
Il provider del server elabora i dati per fornire questo sito.
Per capire meglio quali misure adottano per proteggere i tuoi dati, leggi anche il loro
privacyPolicy: politica sulla riservatezza
andThe: e il
dataPrivacyFaq: domande frequenti sulla privacy dei dati
contact: Contatti
email: Email
website: Sito Web
process: Spiegazione semplificata del processo
processFirst: Innanzitutto, i seguenti passaggi vengono eseguiti localmente nel tuo browser
processSecond: In secondo luogo, i seguenti passaggi avvengono sul nostro server
processThird: Infine, i seguenti passaggi vengono eseguiti localmente nel tuo browser
processRecognizing: Riconoscimento ed estrazione dei dati del codice QR dal certificato selezionato
processDecoding: Decodifica i tuoi dati personali e relativi alla salute dal payload del codice QR
processAssembling: Assemblaggio di un file di pass incompleto dai tuoi dati
processGenerating: Generazione di un file contenente hash dei dati memorizzati nel file pass
processSending: Invio al nostro server solo del file contenente gli hash
processReceiving: Ricezione e controllo degli hash generati localmente
processSigning: Firmare il file contenente gli hash
processSendingBack: Restituire la firma
processCompleting: Assemblaggio del file pass firmato dal file incompleto generato localmente e dalla firma
processSaving: Salvare il file sul tuo dispositivo
locallyProcessedData: Dati elaborati localmente
the: Lo
schema: Schema digitale del Certificato COVID
specification: contiene una specifica dettagliata di quali dati possono essere contenuti nel codice QR e verranno elaborati nel browser.
serverProvider: Fornitore del server
serverProviderIs: Il nostro fornitore di server è
logFiles: I seguenti dati possono essere raccolti e archiviati nei file di registro del server
logFilesBrowser: I tipi e le versioni di browser utilizzati
logFilesOs: Il sistema operativo utilizzato dal sistema di accesso
logFilesReferrer: Il sito web dal quale un sistema di accesso raggiunge il nostro sito web (c.d. referente)
logFilesTime: La data e l'ora di accesso
logFilesIpAddress: Gli indirizzi IP pseudonimizzati
rights: I tuoi diritti
rightsGranted: In conformità con il GDPR hai i seguenti diritti
rightsAccess: Diritto di accesso ai tuoi dati; Hai il diritto di sapere quali dati sono stati raccolti su di te e come sono stati elaborati.
rightsErasure: Diritto all'oblio; Cancellazione dei tuoi dati personali.
rightsRectification: Diritto di rettifica; Hai il diritto di correggere i dati inesatti.
rightsPortability: Diritto alla portabilità dei dati; Hai il diritto di trasferire i tuoi dati da un sistema di elaborazione a un altro.
thirdParties: Terze parti collegate
appleSync: Apple potrebbe sincronizzare i tuoi pass tramite iCloud

View File

@ -63,12 +63,16 @@ export class Payload {
throw new Error('certificateData');
}
// Get name information
// Get name and date of birth information
const nameInformation = covidCertificate['nam'];
const dateOfBirth = covidCertificate['dob'];
if (nameInformation == undefined) {
throw new Error('nameMissing');
}
if (dateOfBirth == undefined) {
throw new Error('dobMissing');
}
const firstName = nameInformation['gn'];
const lastName = nameInformation['fn'];
@ -106,10 +110,17 @@ export class Payload {
throw new Error('certificateType')
}
// Get identifier and issuer
// Get country, identifier and issuer
const countryCode = properties['co'];
const uvci = properties['ci'];
const certificateIssuer = properties['is'];
if (!(countryCode in valueSets.countryCodes)) {
throw new Error('invalidCountryCode');
}
const country = valueSets.countryCodes[countryCode].display;
const generic: PassDictionary = {
headerFields: [
{
@ -151,19 +162,10 @@ export class Payload {
this.img2x = dark ? Constants.img2xWhite : Constants.img2xBlack
this.dark = dark;
this.generic = Payload.fillPassData(this.certificateType, generic, properties, valueSets);
this.generic = Payload.fillPassData(this.certificateType, generic, properties, valueSets, country, dateOfBirth);
}
static fillPassData(type: CertificateType, data: PassDictionary, properties: Object, valueSets: ValueSets): PassDictionary {
// Get country name
const countryCode = properties['co'];
if (!(countryCode in valueSets.countryCodes)) {
throw new Error('invalidCountryCode');
}
const country = valueSets.countryCodes[countryCode].display;
static fillPassData(type: CertificateType, data: PassDictionary, properties: Object, valueSets: ValueSets, country: string, dateOfBirth: string): PassDictionary {
switch (type) {
case CertificateType.Vaccine:
const dose = `${properties['dn']}/${properties['sd']}`;
@ -201,13 +203,18 @@ export class Payload {
value: vaccineName
},
{
key: "cov",
label: "Country of Vaccination",
value: country,
key: "dob",
label: "Date of Birth",
value: dateOfBirth,
textAlignment: TextAlignment.right
}
]);
data.backFields.push(...[
{
key: "cov",
label: "Country of Vaccination",
value: country
},
{
key: "manufacturer",
label: "Manufacturer",
@ -216,7 +223,7 @@ export class Payload {
{
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is only valid in combination with the ID card of the certificate holder and expires one year + 14 days after the last dose. The validity of this certificate was not checked by CovidPass."
value: "This certificate is not a travel document. It is only valid in combination with the ID card of the certificate holder and may expire one year + 14 days after the last dose. The validity of this certificate was not checked by CovidPass."
}
]);
break;
@ -253,15 +260,15 @@ export class Payload {
}
]);
data.auxiliaryFields.push(...[
{
key: "test",
label: "Test Type",
value: testType
},
{
key: "time",
label: "Time of Test",
value: testTime,
value: testTime
},
{
key: "dob",
label: "Date of Birth",
value: dateOfBirth,
textAlignment: TextAlignment.right
},
]);
@ -276,11 +283,18 @@ export class Payload {
label: "Testing Centre",
value: testingCentre
});
data.backFields.push({
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is only valid in combination with the ID card of the certificate holder and may expire 24h after the test. The validity of this certificate was not checked by CovidPass."
});
data.backFields.push(...[
{
key: "test",
label: "Test Type",
value: testType
},
{
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is not a travel document. It is only valid in combination with the ID card of the certificate holder and may expire 24h after the test. The validity of this certificate was not checked by CovidPass."
}
]);
break;
case CertificateType.Recovery:
const firstPositiveTestDate = properties['fr'];
@ -289,12 +303,12 @@ export class Payload {
data.secondaryFields.push(...[
{
key: "from",
label: "Valid From",
value: validFrom,
key: "until",
label: "Valid Until",
value: validUntil,
},
{
key: "dov",
key: "dot",
label: "Date of positive Test",
value: firstPositiveTestDate,
textAlignment: TextAlignment.right
@ -302,22 +316,29 @@ export class Payload {
]);
data.auxiliaryFields.push(...[
{
key: "until",
label: "Valid Until",
value: validUntil,
key: "from",
label: "Valid From",
value: validFrom,
},
{
key: "cov",
label: "Country of Test",
value: country,
key: "dob",
label: "Date of Birth",
value: dateOfBirth,
textAlignment: TextAlignment.right
},
}
]);
data.backFields.push(...[
{
key: "cot",
label: "Country of Test",
value: country
},
{
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is not a travel document. It is only valid in combination with the ID card of the certificate holder. The validity of this certificate was not checked by CovidPass."
}
]);
data.backFields.push({
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is only valid in combination with the ID card of the certificate holder. The validity of this certificate was not checked by CovidPass."
});
break;
default:
throw new Error('certificateType');