Merge pull request #157 from covidpass-org/dev
Romanian translation and minor fixes
This commit is contained in:
commit
68387b1eae
|
@ -1,41 +1,28 @@
|
||||||
interface ButtonProps {
|
interface ButtonProps {
|
||||||
text?: string,
|
text?: string,
|
||||||
icon?: string,
|
icon?: string,
|
||||||
onClick?: () => void,
|
|
||||||
loading?: boolean,
|
loading?: boolean,
|
||||||
type?: ButtonType,
|
onClick: () => void,
|
||||||
}
|
|
||||||
|
|
||||||
export enum ButtonType {
|
|
||||||
submit = 'submit',
|
|
||||||
button = 'button',
|
|
||||||
}
|
|
||||||
|
|
||||||
Button.defaultProps = {
|
|
||||||
loading: false,
|
|
||||||
type: ButtonType.button,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Button(props: ButtonProps): JSX.Element {
|
function Button(props: ButtonProps): JSX.Element {
|
||||||
|
|
||||||
|
function handleTouchEnd(event: React.TouchEvent<HTMLButtonElement>) {
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
props.onClick();
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
type={props.type}
|
type="button"
|
||||||
onClick={props.onClick}
|
onClick={props.onClick}
|
||||||
className={`${props.type == ButtonType.submit ? "bg-green-600 hover:bg-green-700" : "bg-gray-400 dark:bg-gray-600 hover:bg-gray-500"} relative focus:outline-none h-20 text-white font-semibold rounded-md items-center flex justify-center`}>
|
onTouchEnd={handleTouchEnd}
|
||||||
|
className="bg-gray-400 dark:bg-gray-600 hover:bg-gray-500 relative focus:outline-none h-20 text-white font-semibold rounded-md items-center flex justify-center">
|
||||||
{
|
{
|
||||||
props.icon && <img src={props.icon} className="w-12 h-12 mr-2 -ml-4" />
|
props.icon && <img src={props.icon} className="w-12 h-12 mr-2 -ml-4" />
|
||||||
}
|
}
|
||||||
{
|
|
||||||
props.type == ButtonType.submit &&
|
|
||||||
<div id="spin" className={`${props.loading ? undefined : "hidden"} absolute left-2`}>
|
|
||||||
<svg className="animate-spin h-5 w-5 ml-4" viewBox="0 0 24 24">
|
|
||||||
<circle className="opacity-0" cx="12" cy="12" r="10" stroke="currentColor"
|
|
||||||
strokeWidth="4"/>
|
|
||||||
<path className="opacity-80" fill="currentColor"
|
|
||||||
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
{props.text}
|
{props.text}
|
||||||
</button>
|
</button>
|
||||||
)
|
)
|
||||||
|
|
|
@ -13,7 +13,7 @@ import {getPayloadBodyFromFile, getPayloadBodyFromQR} from "../src/process";
|
||||||
import {PassData} from "../src/pass";
|
import {PassData} from "../src/pass";
|
||||||
import {COLORS} from "../src/colors";
|
import {COLORS} from "../src/colors";
|
||||||
import Colors from './Colors';
|
import Colors from './Colors';
|
||||||
import Button, { ButtonType } from './Button';
|
import Button from './Button';
|
||||||
|
|
||||||
function Form(): JSX.Element {
|
function Form(): JSX.Element {
|
||||||
const {t} = useTranslation(['index', 'errors', 'common']);
|
const {t} = useTranslation(['index', 'errors', 'common']);
|
||||||
|
@ -278,7 +278,19 @@ function Form(): JSX.Element {
|
||||||
</p>
|
</p>
|
||||||
</label>
|
</label>
|
||||||
<div className="grid grid-cols-1">
|
<div className="grid grid-cols-1">
|
||||||
<Button type={ButtonType.submit} text={t('index:addToWallet')} loading={loading} />
|
<button
|
||||||
|
type="submit"
|
||||||
|
className="bg-green-600 hover:bg-green-700 relative focus:outline-none h-20 text-white font-semibold rounded-md items-center flex justify-center">
|
||||||
|
<div id="spin" className={`${loading ? undefined : "hidden"} absolute left-2`}>
|
||||||
|
<svg className="animate-spin h-5 w-5 ml-4" viewBox="0 0 24 24">
|
||||||
|
<circle className="opacity-0" cx="12" cy="12" r="10" stroke="currentColor"
|
||||||
|
strokeWidth="4"/>
|
||||||
|
<path className="opacity-80" fill="currentColor"
|
||||||
|
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
{t('index:addToWallet')}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}/>
|
}/>
|
||||||
|
|
|
@ -12,7 +12,8 @@ module.exports = {
|
||||||
'es', 'es-ES',
|
'es', 'es-ES',
|
||||||
'no', 'no-NO',
|
'no', 'no-NO',
|
||||||
'nb', 'nb-NO',
|
'nb', 'nb-NO',
|
||||||
'sv', 'sv-SE', 'sv-FI'
|
'sv', 'sv-SE', 'sv-FI',
|
||||||
|
'ro', 'ro-RO', 'ro-MD'
|
||||||
],
|
],
|
||||||
localeExtension: 'yml',
|
localeExtension: 'yml',
|
||||||
},
|
},
|
||||||
|
|
|
@ -2,4 +2,12 @@ const {i18n} = require('./next-i18next.config');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
i18n,
|
i18n,
|
||||||
|
async rewrites() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
source: '/pass/note',
|
||||||
|
destination: '/pass'
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
};
|
};
|
|
@ -12,7 +12,11 @@ function Imprint(): JSX.Element {
|
||||||
<Card step="§" heading={t('common:imprint')} content={
|
<Card step="§" heading={t('common:imprint')} content={
|
||||||
<div className="space-y-3">
|
<div className="space-y-3">
|
||||||
<p className="font-bold">{t('imprint:heading')}</p>
|
<p className="font-bold">{t('imprint:heading')}</p>
|
||||||
<p>Marvin Sextro</p>
|
<p>
|
||||||
|
Marvin Sextro<br />
|
||||||
|
Kopenhagener Straße 45<br />
|
||||||
|
10437 Berlin
|
||||||
|
</p>
|
||||||
<p className="font-bold">{t('imprint:contact')}</p>
|
<p className="font-bold">{t('imprint:contact')}</p>
|
||||||
<p>
|
<p>
|
||||||
<a href="mailto:covidpass@marvinsextro.de" className="underline">covidpass@marvinsextro.de</a>
|
<a href="mailto:covidpass@marvinsextro.de" className="underline">covidpass@marvinsextro.de</a>
|
||||||
|
|
|
@ -1,47 +1,55 @@
|
||||||
|
import {useTranslation} from 'next-i18next';
|
||||||
import {serverSideTranslations} from 'next-i18next/serverSideTranslations';
|
import {serverSideTranslations} from 'next-i18next/serverSideTranslations';
|
||||||
|
|
||||||
import React, {useEffect, useState} from "react";
|
import React, {useEffect, useState} from "react";
|
||||||
import QRCode from "react-qr-code";
|
import QRCode from "react-qr-code";
|
||||||
|
|
||||||
|
import Alert from '../components/Alert';
|
||||||
import Card from '../components/Card';
|
import Card from '../components/Card';
|
||||||
import Logo from "../components/Logo";
|
import Logo from "../components/Logo";
|
||||||
|
|
||||||
function Pass(): JSX.Element {
|
function Pass(): JSX.Element {
|
||||||
const [fragment, setFragment] = useState<string>(undefined);
|
const { t } = useTranslation(['common', 'index']);
|
||||||
|
|
||||||
function closeViewer() {
|
const [fragment, setFragment] = useState<string>(undefined);
|
||||||
setFragment(undefined);
|
const [view, setView] = useState<boolean>(true);
|
||||||
window.location.replace('/');
|
|
||||||
}
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const rawFragment = window.location.hash.substring(1);
|
const rawFragment = window.location.hash.substring(1);
|
||||||
const decodedFragment = Buffer.from(rawFragment, 'base64').toString();
|
|
||||||
setFragment(decodedFragment);
|
|
||||||
|
|
||||||
document.addEventListener('visibilitychange', () => {
|
if (!rawFragment) {
|
||||||
if (document.hidden) {
|
setView(false);
|
||||||
closeViewer();
|
}
|
||||||
|
|
||||||
|
const resizeTimeout = window.setTimeout(() => {
|
||||||
|
if (rawFragment) {
|
||||||
|
window.location.replace('/pass/note');
|
||||||
}
|
}
|
||||||
});
|
}, 200);
|
||||||
|
|
||||||
window.addEventListener('blur', closeViewer);
|
window.addEventListener('resize', () => {
|
||||||
window.addEventListener('beforeunload', closeViewer);
|
clearTimeout(resizeTimeout);
|
||||||
window.addEventListener('pagehide', closeViewer);
|
const decodedFragment = Buffer.from(rawFragment, 'base64').toString();
|
||||||
|
setFragment(decodedFragment);
|
||||||
|
});
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="py-6 flex flex-col space-y-5 items-center">
|
<div className="py-5 flex flex-col space-y-5 md:w-2/3 xl:w-2/5 md:mx-auto items-center justify-center px-5">
|
||||||
<Logo/>
|
<Logo/>
|
||||||
<div className="flex flex-row items-center">
|
<div className="flex flex-row items-center">
|
||||||
{
|
{
|
||||||
fragment &&
|
fragment &&
|
||||||
<Card content={
|
<Card content={
|
||||||
<div className="p-2 bg-white rounded-md">
|
<div className="p-2 bg-white rounded-md">
|
||||||
<QRCode value={fragment} size={280} level="L" />
|
<QRCode value={fragment} size={280} level="L" />
|
||||||
</div>
|
</div>
|
||||||
} />
|
} />
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
!view &&
|
||||||
|
<Alert isWarning={true} message={t('index:viewerNote')} onClose={undefined} />
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
@ -50,7 +58,7 @@ function Pass(): JSX.Element {
|
||||||
export async function getStaticProps({ locale }) {
|
export async function getStaticProps({ locale }) {
|
||||||
return {
|
return {
|
||||||
props: {
|
props: {
|
||||||
...(await serverSideTranslations(locale, ['common'])),
|
...(await serverSideTranslations(locale, ['index', 'common'])),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,4 +25,5 @@ privacyPolicy: Datenschutzerklärung
|
||||||
createdOnDevice: Auf Deinem Gerät erstellt
|
createdOnDevice: Auf Deinem Gerät erstellt
|
||||||
openSourceTransparent: Open Source und transparent
|
openSourceTransparent: Open Source und transparent
|
||||||
hostedInEU: In der EU gehostet
|
hostedInEU: In der EU gehostet
|
||||||
share: Weiterempfehlen
|
share: Weiterempfehlen
|
||||||
|
viewerNote: Bitte drücke und halte den Link auf der Rückseite des Passes, um den QR Code unter iOS vergrößert anzuzeigen.
|
|
@ -25,4 +25,5 @@ privacyPolicy: Privacy Policy
|
||||||
createdOnDevice: Created on your device
|
createdOnDevice: Created on your device
|
||||||
openSourceTransparent: Open source and transparent
|
openSourceTransparent: Open source and transparent
|
||||||
hostedInEU: Hosted in the EU
|
hostedInEU: Hosted in the EU
|
||||||
share: Share
|
share: Share
|
||||||
|
viewerNote: Please press and hold the link on the back of the pass in order to enlarge the QR code on iOS.
|
|
@ -0,0 +1 @@
|
||||||
|
ro
|
|
@ -0,0 +1 @@
|
||||||
|
ro
|
|
@ -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
|
|
@ -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.
|
|
@ -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)
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,3 @@
|
||||||
|
User-agent: *
|
||||||
|
Disallow: /pass
|
||||||
|
Disallow: /pass/note
|
|
@ -142,7 +142,7 @@ export class Payload {
|
||||||
{
|
{
|
||||||
key: "enlarge",
|
key: "enlarge",
|
||||||
label: "Enlarging the QR Code",
|
label: "Enlarging the QR Code",
|
||||||
value: `Inside the Wallet app on iOS, press and hold or open the link below. This does not work when accessing the Wallet by double-clicking the side button.\n<a href='${url}/pass#${encodedData}'>Enlarge QR Code</a>`
|
value: `Inside the Wallet app on iOS, press and hold the link below. This does not work when accessing the Wallet by double-clicking the side button.\n<a href='${url}/pass#${encodedData}'>Enlarge QR Code</a>`
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
key: "uvci",
|
key: "uvci",
|
||||||
|
|
Loading…
Reference in New Issue