From 87a990e14610cb75d506c7f113481fd914cf59fd Mon Sep 17 00:00:00 2001 From: po Date: Thu, 6 Jan 2022 01:08:22 +0200 Subject: [PATCH 1/6] Added RO locale --- public/locales/ro/common.yml | 6 ++++ public/locales/ro/errors.yml | 20 ++++++++++++ public/locales/ro/imprint.yml | 27 +++++++++++++++++ public/locales/ro/index.yml | 28 +++++++++++++++++ public/locales/ro/privacy.yml | 57 +++++++++++++++++++++++++++++++++++ 5 files changed, 138 insertions(+) create mode 100644 public/locales/ro/common.yml create mode 100644 public/locales/ro/errors.yml create mode 100644 public/locales/ro/imprint.yml create mode 100644 public/locales/ro/index.yml create mode 100644 public/locales/ro/privacy.yml diff --git a/public/locales/ro/common.yml b/public/locales/ro/common.yml new file mode 100644 index 0000000..3b0cab7 --- /dev/null +++ b/public/locales/ro/common.yml @@ -0,0 +1,6 @@ +title: CovidPass +subtitle: Adaugă-ți Certificatul UE Covid in aplicația ta preferată de wallet. +privacyPolicy: Politica de Confidențialitate +donate: Donează +gitHub: GitHub +imprint: Mențiuni Legale \ No newline at end of file diff --git a/public/locales/ro/errors.yml b/public/locales/ro/errors.yml new file mode 100644 index 0000000..9e40e51 --- /dev/null +++ b/public/locales/ro/errors.yml @@ -0,0 +1,20 @@ +noFileOrQrCode: Te rog scaneaza un cod QR, sau alege un fisier +signatureFailed: Eroare in timpul semnarii certificatului pe server +decodingFailed: Imposibil de decodat continutul codului QR +invalidColor: Culoare Invalida +certificateData: Eroare in citirea datelor certificatului +nameMissing: Eroare in citirea numelui +dobMissing: Eroare in citirea datei de nastere +invalidMedicalProduct: Produs medical (Vaccin) invalid +invalidCountryCode: Codul tarii este invalid +invalidManufacturer: Fabricant invalid +invalidFileType: Tipul fisierului invalid +couldNotDecode: Eroare in decodarea codului QR din fisier +couldNotFindQrCode: Nu s-a gasit niciun cod QR valid in fisierul selectat +invalidQrCode: Cod QR invalid +certificateType: Tipul certificatului este invalid +invalidTestResult: Rezultatul testului este invalid +invalidTestType: Tipul testului este invalid +noCameraAccess: Nu s-a putut accesa camera. Schimbati permisiunile in Setari > Safari > Camera. +noCameraFound: Nu s-a putut accesa camera. +safariSupportOnly: in iOS, va rog sa folositi doar browser-ul safari. \ No newline at end of file diff --git a/public/locales/ro/imprint.yml b/public/locales/ro/imprint.yml new file mode 100644 index 0000000..41d5088 --- /dev/null +++ b/public/locales/ro/imprint.yml @@ -0,0 +1,27 @@ +heading: Informații conform articolului 5 TMG +contact: Contact +euDisputeResolution: Soluționarea Disputelor UE +euDisputeResolutionParagraph: | + Comisia Europeana dispune de o platforma pentru soluționarea disputelor online (OS) https://ec.europa.eu/consumers/odr. + Ne puteți găsi adresa de email in datele de mai sus. +consumerDisputeResolution: Rezolvarea litigiilor consumatorilor / comisia universală de arbitraj +consumerDisputeResolutionParagraph: Nu suntem dispuși sau obligați să participăm la procedurile de soluționare a litigiilor în fața unei comisii de arbitraj pentru consumatori. +liabilityForContents: Raspunderea pentru continut +liabilityForContentsParagraph: | + În calitate de furnizori de servicii, suntem responsabili pentru conținutul propriu în conformitate cu articolul 7 paragraful 1 TMG în conformitate cu legile generale. + Conform secțiunilor 8 până la 10, nu suntem obligați să monitorizăm informațiile transmise sau stocate sau să investigăm circumstanțe care indică o activitate ilegală. + Obligațiile de a elimina sau de a bloca utilizarea informațiilor conform legilor generale rămân neafectate. + Cu toate acestea, răspunderea în această privința este posibilă numai din momentul în care devine cunoscută o încălcare concretă a legii. + Dacă aflăm de existența unor asemenea încălcări, vom elimina imediat conținutul relevant. +liabilityForLinks: Raspunderea pentru linkuri +liabilityForLinksParagraph: | + Oferta noastră conține link-uri către site-uri externe ale terților, asupra cărora nu avem nicio influență. + Prin urmare, nu ne putem asuma nicio răspundere pentru aceste conținuturi externe. + Furnizorul sau operatorul respectiv al site-urilor este întotdeauna responsabil pentru conținutul site-urilor mentionate. + Paginile conectate au fost verificate pentru posibile încălcări legale la momentul punerii link-ului. + Conținuturile ilegale nu erau recunoscute în momentul punerii link-urilor. + Cu toate acestea, un control permanent al conținutului paginilor linkate nu este rezonabil fără dovezi concrete ale unei încălcări a legii. + Dacă aflăm că există încălcări, vom elimina imediat astfel de legături. +credits: Credite +creditsSource: Cu extrase din https://www.e-recht24.de/impressum-generator.html +creditsTranslation: Tradus cu https://www.DeepL.com/Translator (free version) \ No newline at end of file diff --git a/public/locales/ro/index.yml b/public/locales/ro/index.yml new file mode 100644 index 0000000..6724fa6 --- /dev/null +++ b/public/locales/ro/index.yml @@ -0,0 +1,28 @@ +iosHint: In iOS, te rog foloseste browser-ul Safari. +errorClose: Inchide +selectCertificate: Alege certificatul +selectCertificateDescription: Te rog scaneaza codul QR de pe certificatul tau sau alege un screenshot/PDF cu codul QR +stopCamera: Opreste Camera +startCamera: Porneste Camera +openFile: Selecteaza fisierul +foundQrCode: Cod QR detectat! +pickColor: Alege o culoare +pickColorDescription: Alege o culoare de fundal pentru certificatul tau. +colorWhite: alb +colorBlack: negru +colorGrey: gri +colorGreen: verde +colorIndigo: indigo +colorBlue: albastru +colorPurple: mov +colorTeal: teal +addToWallet: Adauga in Wallet +dataPrivacyDescription: | + Confidentialitatea datelor este de o importanta speciala cand vine vorba de date medicale. + Pentru a face o alegere informata, va rugam cititi +iAcceptThe: Sunt de acord cu +privacyPolicy: Politica de Confidentialitate +createdOnDevice: Creat pe dispozitivul tau +openSourceTransparent: Open source si transparent +hostedInEU: Gazduit in UE +share: Distribuie \ No newline at end of file diff --git a/public/locales/ro/privacy.yml b/public/locales/ro/privacy.yml new file mode 100644 index 0000000..1ec51c7 --- /dev/null +++ b/public/locales/ro/privacy.yml @@ -0,0 +1,57 @@ +gdprNotice: | + Politica noastră de confidențialitate se bazează pe termenii folosiți de legiuitorul european + pentru adoptarea Regulamentului general privind protecția datelor (GDPR). +generalInfo: Informații Generale +generalInfoProcess: | + Întregul proces de generare a fișierului de Wallet are loc local în browserul dvs. + Pentru pasul de semnare (certificare), doar o reprezentare hashed (codata ireversibil) a datelor dvs. este trimisă către server. +generalInfoStoring: Datele dumneavoastră nu sunt stocate dincolo de sesiunea activă a browserului, iar site-ul nu utilizează cookie-uri. +generalInfoThirdParties: Nu sunt trimise date catre părți terțe. +generalInfoHttps: Datele sunt transmise în mod securizat prin https. +generalInfoLocation: Serverele noastre sunt găzduite in Nuremberg, Germania. +generalInfoGitHub: Codul sursă al acestui site este accesibil pe +generalInfoLockScreen: În mod normal, cardurile din Apple Wallet sunt accesibile de pe lock screen. Puteți schimba acest lucru in +settings: setări +generalInfoProvider: | + Furnizorul de server prelucrează date pentru a furniza acest site. + Pentru a înțelege mai bine ce măsuri iau aceștia pentru a vă proteja datele, vă rugăm să citiți și pe partea lor +privacyPolicy: Politica de Confidențialitate +andThe: și +dataPrivacyFaq: Întrebari puse des despre confidențialitate +contact: Contact +email: Email +website: Website +process: Explicație simplificata a procesului +processFirst: În primul rând, următorii pași au loc local în browserul dvs +processSecond: În al doilea rând, următorii pași au loc pe serverul nostru +processThird: În cele din urmă, următorii pași au loc local în browserul dvs +processRecognizing: Recunoașterea și extragerea datelor codului QR din certificatul selectat +processDecoding: Decodificarea datelor dvs. personale și medicale din încărcarea codului QR +processAssembling: Asamblarea unui fișier de Wallet incomplet din datele dvs +processGenerating: Generarea unui fișier care conține hash-uri ale datelor stocate în fișierul wallet +processSending: Trimiterea doar fișierul care conține hash-urile către serverul nostru +processReceiving: Primirea și verificarea hashurilor care au fost generate local +processSigning: Semnarea fișierului care conține hashurile +processSendingBack: Trimiterea semnăturii înapoi +processCompleting: Asamblarea fișierului wallet semnat din fișierul incomplet generat local și semnătura +processSaving: Salvarea fisierului pe dispozitiv +locallyProcessedData: Date procesate local +the: +schema: Schema Certificatului Digital Covid +specification: contine o schema complete cu datele care sunt continute de codul QR al certificatului covid si care vor fi procesate in browser. +serverProvider: Furnizorul de Servere +serverProviderIs: Furnizorul nostru de servere este +logFiles: Următoarele date pot fi colectate și stocate în fișierele jurnal ale serverului +logFilesBrowser: Tipurile și versiunile de browser utilizate +logFilesOs: Sistemul de operare utilizat de sistemul de accesare +logFilesReferrer: Site-ul web de pe care un sistem de accesare ajunge pe site-ul nostru web (așa-numiții recomandanți) +logFilesTime: Data și ora accesului +logFilesIpAddress: Adresele IP pseudonimizate +rights: Drepturile tale +rightsGranted: În conformitate cu GDPR, aveți următoarele drepturi +rightsAccess: Dreptul de acces la datele dumneavoastră; Ai dreptul să știi ce date au fost colectate despre tine și cum au fost prelucrate. +rightsErasure: Dreptul de a fi uitat; Ștergerea datelor dumneavoastră personale. +rightsRectification: Dreptul de rectificare; Aveți dreptul de a corecta datele eronate. +rightsPortability: Dreptul la portabilitatea datelor; Aveți dreptul să vă transferați datele dintr-un sistem de procesare în altul. +thirdParties: Părți terțe +appleSync: Este posibil ca Apple să vă sincronizeze cardurile wallet prin iCloud \ No newline at end of file From 2a9bdd86d7da1b6529218eb64e84615b5b26df76 Mon Sep 17 00:00:00 2001 From: Marvin Sextro Date: Mon, 10 Jan 2022 03:10:40 +0100 Subject: [PATCH 2/6] Improve QR code viewer and try to fix buttons --- components/Button.tsx | 3 ++- next.config.js | 8 +++++++ pages/imprint.tsx | 6 +++++- pages/pass.tsx | 42 ++++++++++++++++++++++--------------- public/locales/de/index.yml | 3 ++- public/locales/en/index.yml | 3 ++- public/robots.txt | 3 +++ src/payload.ts | 2 +- 8 files changed, 48 insertions(+), 22 deletions(-) create mode 100644 public/robots.txt diff --git a/components/Button.tsx b/components/Button.tsx index b8326d4..2520186 100644 --- a/components/Button.tsx +++ b/components/Button.tsx @@ -20,7 +20,8 @@ function Button(props: ButtonProps): JSX.Element { return ( ) diff --git a/components/Form.tsx b/components/Form.tsx index 7cb9937..0261e64 100644 --- a/components/Form.tsx +++ b/components/Form.tsx @@ -13,7 +13,7 @@ import {getPayloadBodyFromFile, getPayloadBodyFromQR} from "../src/process"; import {PassData} from "../src/pass"; import {COLORS} from "../src/colors"; import Colors from './Colors'; -import Button, { ButtonType } from './Button'; +import Button from './Button'; function Form(): JSX.Element { const {t} = useTranslation(['index', 'errors', 'common']); @@ -278,7 +278,19 @@ function Form(): JSX.Element {

-
}/> From 7d930105d2e853c9a3c3aa847415532986598795 Mon Sep 17 00:00:00 2001 From: Marvin Sextro Date: Mon, 10 Jan 2022 04:19:41 +0100 Subject: [PATCH 5/6] Try to fix QR code viewer --- pages/pass.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pages/pass.tsx b/pages/pass.tsx index 4da4de4..f17645a 100644 --- a/pages/pass.tsx +++ b/pages/pass.tsx @@ -13,6 +13,7 @@ function Pass(): JSX.Element { const [fragment, setFragment] = useState(undefined); const [view, setView] = useState(true); + const [resized, setResized] = useState(false); useEffect(() => { const rawFragment = window.location.hash.substring(1); @@ -22,12 +23,13 @@ function Pass(): JSX.Element { } const resizeTimeout = window.setTimeout(() => { - if (rawFragment) { + if (!resized && rawFragment) { window.location.replace('/pass/note'); } }, 100); window.addEventListener('resize', () => { + setResized(true); clearTimeout(resizeTimeout); const decodedFragment = Buffer.from(rawFragment, 'base64').toString(); setFragment(decodedFragment); From 685bbcb19b1b14d3e70f30ea9046c3b982673a70 Mon Sep 17 00:00:00 2001 From: Marvin Sextro Date: Mon, 10 Jan 2022 04:29:20 +0100 Subject: [PATCH 6/6] Increase timeout --- pages/pass.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pages/pass.tsx b/pages/pass.tsx index f17645a..3f393cc 100644 --- a/pages/pass.tsx +++ b/pages/pass.tsx @@ -13,7 +13,6 @@ function Pass(): JSX.Element { const [fragment, setFragment] = useState(undefined); const [view, setView] = useState(true); - const [resized, setResized] = useState(false); useEffect(() => { const rawFragment = window.location.hash.substring(1); @@ -23,13 +22,12 @@ function Pass(): JSX.Element { } const resizeTimeout = window.setTimeout(() => { - if (!resized && rawFragment) { + if (rawFragment) { window.location.replace('/pass/note'); } - }, 100); + }, 200); window.addEventListener('resize', () => { - setResized(true); clearTimeout(resizeTimeout); const decodedFragment = Buffer.from(rawFragment, 'base64').toString(); setFragment(decodedFragment);