diff --git a/pass/lang/da/admin.json b/pass/lang/da/admin.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..d8885aa0136ac190aa66bccd8f22c9f9332c5af0 100644
--- a/pass/lang/da/admin.json
+++ b/pass/lang/da/admin.json
@@ -1 +1,78 @@
-{}
\ No newline at end of file
+{
+    "index": {
+        "heading": "MetaGer Key Admin",
+        "actions": {
+            "cash-payment": "Registrer kontant betaling",
+            "heading": "Handlinger:",
+            "receipt": "Opret faktura",
+            "keymanagement": "Administrer nøgler"
+        }
+    },
+    "breadcrumps": {
+        "overview": "Oversigt",
+        "payments-cash": "Indtast kontant betaling",
+        "receipt": "Opret faktura",
+        "key-management": "Nøglehåndtering"
+    },
+    "cash-payment": {
+        "info": "Indtast modtagne kontantbetalinger her for at bogføre de tilknyttede indkøbsordrer.",
+        "price": {
+            "placeholder": "10,00",
+            "label": "Beløb i euro",
+            "calculate": "Beregn den aktuelle valutakurs"
+        },
+        "payment_reference": {
+            "label": "Betalings ID:",
+            "placeholder": "123456789"
+        },
+        "converted-price": {
+            "label": "Modtaget beløb",
+            "placeholder": "10,00"
+        },
+        "submit": "Bestil en bog",
+        "success": "Ordren med nummeret {{orderid}} blev booket med succes."
+    },
+    "receipt": {
+        "orderid": {
+            "label": "Bestillingsnummer ({{orderdate}}):",
+            "placeholder": "Indtast ordrenummer…",
+            "submit": "Indlæs ordre"
+        },
+        "name": {
+            "label": "Fuldt navn:"
+        },
+        "company": {
+            "label": "Virksomhed:"
+        },
+        "email": {
+            "label": "E-mail"
+        },
+        "address": {
+            "label": "Adresse"
+        },
+        "submit-userdata": "Overtag fakturadata"
+    },
+    "key": {
+        "key-input": {
+            "label": "Enter-tast",
+            "submit": "Indsend"
+        },
+        "key-overview": {
+            "charge": "Kredit: {{token}}",
+            "charge-success": "Opladning lykkedes",
+            "delete": "Slet",
+            "expiration": "Gyldig indtil {{expiration}}",
+            "charge-form": {
+                "heading": "Manuel opladning",
+                "hint": "Der indbetales ikke for en manuel optankning. Kreditten krediteres simpelthen uden nogen betaling til gengæld. Brug den med omtanke!",
+                "amount": {
+                    "label": "Antal"
+                },
+                "price": {
+                    "label": "Beløb (€)"
+                },
+                "submit": "Lad nu!"
+            }
+        }
+    }
+}
diff --git a/pass/lang/da/agb.json b/pass/lang/da/agb.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..2f234eeacd93dae9997cfab982aa69c984ed3b4f 100644
--- a/pass/lang/da/agb.json
+++ b/pass/lang/da/agb.json
@@ -1 +1,133 @@
-{}
\ No newline at end of file
+{
+    "paragraphs": [
+        {
+            "heading": "§1 Anvendelsesområde for iværksættere og definitioner af begreber",
+            "paragraphs": [
+                "(1) For alle leverancer mellem os og en forbruger gælder følgende generelle forretningsbetingelser i den version, der er gældende på bestillingstidspunktet.",
+                "En forbruger er enhver fysisk person, der indgår en retshandel til formål, der overvejende hverken kan tilskrives hans kommercielle eller hans uafhængige professionelle aktivitet (§ 13 BGB)."
+            ]
+        },
+        {
+            "paragraphs": [
+                "(1) For bestillinger via vores internetbutik https://metager.org gælder følgende bestemmelser om kontraktindgåelse.",
+                "(2) I tilfælde af indgåelse af kontrakten, indgås kontrakten med følgende enhed:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nRegistreringsnummer VR200033\nRegistreringsdomstol Amtsret Hannover",
+                "(3) Præsentationen af varerne i vores internetbutik udgør ikke et juridisk bindende tilbud om kontrakt fra vores side, men er kun en ikke-bindende invitation til forbrugeren om at bestille varer. Ved at bestille de ønskede varer afgiver forbrugeren et bindende tilbud om at indgå en købskontrakt.",
+                "(4) Ved modtagelse af en ordre i vores internetbutik gælder følgende bestemmelser: Forbrugeren afgiver et bindende tilbud om at indgå en kontrakt ved at gennemføre bestillingsproceduren i vores internetbutik.",
+                "Bestillingen foretages i følgende trin:",
+                [
+                    "Valg af det ønskede antal søgninger",
+                    "Valg af den ønskede betalingsmetode",
+                    "Bekræftelse af det bindende køb ved at gennemføre betalingen"
+                ],
+                "Før den bindende afgivelse af ordren kan forbrugeren, ved at trykke på \"tilbage\"-knappen i den internetbrowser, han bruger, efter at have kontrolleret sine oplysninger, vende tilbage til den internetside, hvor kundens oplysninger er registreret, og rette indtastningsfejl eller annullere bestillingsprocessen ved at lukke internetbrowseren. Vi bekræfter modtagelsen af ordren med det samme med et resumé af ordren og muligheden for at downloade en ordrebekræftelse."
+            ],
+            "heading": "§2 Indgåelse af en kontrakt, opbevaring af kontraktteksten"
+        },
+        {
+            "heading": "§3 Priser, forsendelsesomkostninger, betaling, forfaldsdato",
+            "paragraphs": [
+                "(1) De angivne priser inkluderer den lovpligtige merværdiafgift og andre priskomponenter.",
+                "(2) Forbrugeren har mulighed for at betale med kontanter, Giropay, Sofort, Przelewy24, Bancontact, Blik, Eps, Ideal, Mybank, PayPal, kreditkort (Visa, Mastercard, American Express).",
+                "(3) Hvis forbrugeren har valgt forudbetaling, forpligter han sig til at betale købesummen straks efter aftalens indgåelse."
+            ]
+        },
+        {
+            "heading": "§4 Levering",
+            "paragraphs": [
+                "(1) Medmindre vi tydeligt har angivet andet i produktbeskrivelsen, er alle varer, der tilbydes af os, klar til øjeblikkelig forsendelse. Da dette er en service, er ingen forsendelse nødvendig og vil blive leveret med det samme.",
+                "(2) Det købte produkt leveres af os i en periode på 2 år fra købsdatoen. Efter udløbet af denne periode er yderligere brug ikke mulig."
+            ]
+        },
+        {
+            "heading": "§5 Forbehold for ejendomsret",
+            "paragraphs": [
+                "Vi forbeholder os ejendomsretten til varerne indtil fuld betaling af købsprisen."
+            ]
+        },
+        {
+            "paragraphs": [
+                "Uafhængigt af den lovbestemte fortrydelsesret (se §7) giver vi en frivillig 30-dages pengene-tilbage-garanti. Perioden er 30 dage fra salgsdatoen.",
+                "For at gøre brug af 30-dages pengene-tilbage-garantien, skal du informere SUMA-EV om din beslutning ved hjælp af en refusionsanmodning. Du kan finde refusionsanmodningen i ordreoversigten på din konto. Fristen er overholdt, hvis vi modtager refusionsanmodningen, inden de 30 dage er udløbet. 30-dages pengene-tilbage-garantien gælder ikke for betalingsmetoden \"kontant betaling\". Tilbagebetalingen af din betaling vil ske i henhold til fortrydelsesretten.",
+                "Der kan kun kræves refusion for ubrugte poletter. Hvis du allerede har opbrugt en polet fra dit køb, giver vi en forholdsmæssig refusion af købsbeløbet.",
+                "Den lovbestemte fortrydelsesret er ikke begrænset af den frivillige forlængelse til 30 dage."
+            ],
+            "heading": "§6 Indløsningsbetingelser"
+        },
+        {
+            "heading": "§7 Kundens fortrydelsesret som forbruger",
+            "revocation": {
+                "heading": "Fortrydelsesret for forbrugere",
+                "text": "Forbrugere har fortrydelsesret i overensstemmelse med følgende bestemmelser, hvor en forbruger er enhver fysisk person, der indgår en retshandel med formål, der overvejende hverken kan henføres til vedkommendes erhvervsmæssige eller til vedkommendes selvstændige faglige virksomhed",
+                "notice": {
+                    "heading": "Afbestillingsregler",
+                    "content": {
+                        "right": {
+                            "heading": "Fortrydelsesret",
+                            "texts": [
+                                "Du har ret til at trække dig ud af denne kontrakt inden for fjorten dage uden at angive nogen grund. Fortrydelsesfristen er tredive dage fra datoen for indgåelse af kontrakten.",
+                                "For at udøve din fortrydelsesret skal du informere os om din beslutning om at trække dig ud af denne kontrakt ved hjælp af en klar erklæring (f.eks. et brev sendt med post, fax eller e-mail). Du kan bruge det vedlagte eksempel på en fortrydelsesformular til dette formål, hvilket dog ikke er obligatorisk.",
+                                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nE-mail https://metager.org/kontakt",
+                                "For at overholde fortrydelsesfristen er det tilstrækkeligt, at du sender meddelelsen om udøvelse af fortrydelsesretten inden fortrydelsesfristens udløb."
+                            ]
+                        },
+                        "consequences": {
+                            "heading": "Konsekvenser af tilbagekaldelse",
+                            "texts": [
+                                "Hvis du fortryder denne aftale, skal vi straks og senest 30 dage efter den dag, hvor vi har modtaget meddelelse om din beslutning om at fortryde denne aftale, tilbagebetale alle betalinger, som vi har modtaget fra dig. Til denne tilbagebetaling anvender vi samme betalingsmiddel, som du benyttede ved den oprindelige transaktion, medmindre andet udtrykkeligt er aftalt med dig; du vil under ingen omstændigheder blive opkrævet gebyrer i forbindelse med denne tilbagebetaling.",
+                                "Hvis du har anmodet om, at tjenesterne påbegyndes i fortrydelsesperioden, skal du betale os et rimeligt beløb svarende til andelen af de tjenester, der allerede er leveret op til det tidspunkt, hvor du underretter os om udøvelsen af fortrydelsesretten med hensyn til denne kontrakt sammenlignet med det samlede omfang af de tjenester, der er fastsat i kontrakten."
+                            ]
+                        },
+                        "extinction": {
+                            "heading": "Ã…rsager til aflysning",
+                            "texts": [
+                                "Fortrydelsesretten bortfalder i tilfælde af en aftale om levering af digitalt indhold, der ikke findes på et fysisk medium, hvis den erhvervsdrivende har påbegyndt opfyldelsen af aftalen, efter at forbrugeren har",
+                                [
+                                    "udtrykkeligt har givet sit samtykke til, at leverandøren påbegynder udførelsen af kontrakten inden fortrydelsesfristens udløb, og",
+                                    "har bekræftet sin viden om, at han ved sit samtykke mister sin fortrydelsesret ved begyndelsen af udførelsen af kontrakten."
+                                ]
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        {
+            "heading": "§8 Fortrydelsesformular",
+            "subheading": "Eksempel på afbestillingsformular",
+            "texts": [
+                "Hvis du ønsker at annullere kontrakten, bedes du udfylde denne formular og sende den tilbage til:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nE-mail https://metager.org/kontakt",
+                "Jeg/vi (*) fortryder herved den af mig/os (*) indgåede aftale om køb af følgende varer (*)/levering af følgende tjenesteydelse (*)",
+                "Betalings ID",
+                "Bestilt den (*)/modtaget den (*)",
+                "Navn på forbruger(e)",
+                "Adresse på forbruger(e)",
+                "Forbrugerens underskrift (kun i tilfælde af anmeldelse på papir)",
+                "Dato",
+                "(*) Slet det, der ikke er relevant."
+            ]
+        },
+        {
+            "heading": "§9 Garanti",
+            "texts": [
+                "De lovpligtige garantibestemmelser gælder."
+            ]
+        },
+        {
+            "heading": "§10 Kontraktsprog",
+            "texts": [
+                "Kun tysk og engelsk er tilgængelige som kontraktsprog."
+            ]
+        },
+        {
+            "heading": "§11 Kundeservice",
+            "texts": [
+                "Vores kundeservice for spørgsmål, klager og reklamationer er tilgængelig på hverdage fra kl. 9.00 til 16.00 på følgende muligheder:",
+                "Telefon: +4951134000070\nFax: 0511 34 00 10 23\nE-mail: https://metager.org/kontakt"
+            ]
+        }
+    ],
+    "heading": "Generelle vilkår og betingelser for foreningen SuMa-eV - Foreningen for Fri Adgang til Viden",
+    "date": "Status for GTC"
+}
diff --git a/pass/lang/da/checkout.json b/pass/lang/da/checkout.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..ca4319fc67fb2b8b1115f925e527ca2b620e29d5 100644
--- a/pass/lang/da/checkout.json
+++ b/pass/lang/da/checkout.json
@@ -1 +1,64 @@
-{}
\ No newline at end of file
+{
+    "payments": {
+        "cash": {
+            "note": "Bemærk venligst følgende:",
+            "name": "Kontanter",
+            "description": "Du kan også opkræve kontanter for din nøgle. For at gøre det skal du blot sende os følgende ordrenummer via mail sammen med det ønskede beløb. Bemærk venligst, at ordrenummeret skal være læseligt for at kunne behandles af os.",
+            "no-large-values": "For din egen sikkerheds skyld må du ikke sende os mere end 100 € med posten. Vi påtager os ikke noget ansvar for transportruten. Du er selv ansvarlig for, at brevet når frem til os.",
+            "no-coins": "Vi accepterer kun pengesedler. Send ikke mønter!",
+            "accepted-currencies": "Vi accepterer kun følgende valutaer: EUR, USD, CAD, GBP.",
+            "currency-translation": "Vi opkræver altid beløb i EUR. Hvis du sender os en anden valuta, omregnes det sendte beløb til dagskursen.",
+            "no-refund": "På grund af gældende love om hvidvaskning af penge er det desværre ikke muligt at refundere eller returnere. Men når vi har bogført opkrævningen, kan du indtaste det sendte betalings-ID under \"Ordrer\" for at få en ordreoversigt og/eller anmode om en faktura.",
+            "order-id-heading": "Dit betalings-ID",
+            "order-id-copy": "Kopi af betalings-ID",
+            "order-address-heading": "Send brevet til følgende adresse, og noter betalingsnummeret til din egen dokumentation",
+            "order-address": "SUMA-EV\nRöselerstraße 3\n30159 Hannover\nTyskland",
+            "order-expiration": "BetalingsID'et er gyldigt indtil {{order_expiration}}. Efter denne dato kan det ikke længere bruges til en opladning.",
+            "order-unique": "Brug kun betalings-ID'et til en enkelt opladning. Du vil modtage et nyt, hver gang du besøger denne side!",
+            "error": "Noget gik galt under oprettelsen af din ordre. Prøv venligst igen senere.",
+            "generate": "Generer betalings-ID"
+        },
+        "prepay": {
+            "name": "Bankoverførsel",
+            "email": {
+                "label": "E-mail-adresse",
+                "description": "Til denne adresse vil du få tilsendt engangsoplysninger om vores bankoplysninger og en meddelelse, når betalingen er gennemført."
+            }
+        },
+        "sofort": {
+            "name": "Bankoverførsel"
+        }
+    },
+    "charge": {
+        "includes-vat": "inkl. 7% moms",
+        "heading": "Vælg betalingsmetode",
+        "amount": "Vælg, hvor mange token du vil købe.",
+        "month_one": "{{count}} MÃ¥ned",
+        "month_other": "{{count}} MÃ¥ned",
+        "not-available": "Beklager, den valgte betalingsmetode er ikke tilgængelig i din region.",
+        "anonymous-payment": "Anonym betaling",
+        "paypal-privacy": "Betalingsmetoder i denne gruppe kræver normalt ikke en PayPal-konto, men behandles der. Mere om <a href=\"https://www.paypal.com/us/legalhub/privacy-full\" target=\"_blank\">privatliv på PayPal</a>."
+    },
+    "micropayment": {
+        "submit": "Foretag betaling",
+        "privacy": "Ved at klikke på \"Foretag betaling\" vil du blive omdirigeret til vores betalingstjenesteudbyder <a href=\"https://micropayment.de\" target=\"_blank\">MicroPayment</a> for at gennemføre købet. Mere om <a href=\"{{link}}\" target=\"_blank\">privatliv på {{link_text}}</a>."
+    },
+    "paypal": {
+        "heading": "Foretag betaling",
+        "errors": {
+            "failed": "Betaling mislykkedes",
+            "invalid-card": "Dette kort understøttes desværre ikke",
+            "expired-card": "Dette kort er udløbet",
+            "rejected": "Din betaling er blevet afvist af banken.",
+            "3D": "3D-godkendelse mislykkedes"
+        },
+        "card": {
+            "number": "Kortnummer",
+            "expiration": "Gyldig indtil",
+            "cvv": "CVV",
+            "label": "Kredit-/debetkort"
+        },
+        "submit": "Foretag betaling",
+        "loading": "Betalingsmetode er indlæst"
+    }
+}
diff --git a/pass/lang/da/cost.json b/pass/lang/da/cost.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0d334dc569ef1561091db317c8a8fd61425f176d 100644
--- a/pass/lang/da/cost.json
+++ b/pass/lang/da/cost.json
@@ -1 +1,45 @@
-{}
\ No newline at end of file
+{
+    "headings": [
+        "Dette er, hvad din MetaGer-nøgle koster",
+        "Den vigtigste opsummering"
+    ],
+    "months_one": "{{count}} MÃ¥ned",
+    "months_other": "{{count}} MÃ¥neder",
+    "short-info": [
+        {
+            "heading": "Tokens er gyldige i 2 år",
+            "text": "Dine købte token er designet til at forblive gyldige, indtil de er brugt op. Der er ingen stående ordre."
+        },
+        {
+            "heading": "30 dages pengene-tilbage-garanti",
+            "text": "Hvis du er utilfreds med din nøgle, har du 30 dage efter købet til at returnere den ubrugte kredit."
+        },
+        {
+            "heading": "Nøglen oprettes og bruges automatisk i browseren.",
+            "text": "Du behøver ikke at gøre andet for at bruge din MetaGer-nøgle i søgningen. Når du har opladet den, bliver den automatisk sat op i din browser, og du vil modtage information om, hvordan du nemt sætter den op på flere enheder."
+        },
+        {
+            "heading": "Lige så anonymt som en søgning uden nøgle",
+            "text": "Brug vores <a href=\"#\">Android-app</a>, eller snart vores udvidelse, og vær beviseligt lige så anonym på vejen med <a href=\"{{linktokens}}\">anonym token</a> som uden en nøgle."
+        }
+    ],
+    "payment-methods": {
+        "heading": "Betalingsmetoder",
+        "texts": [
+            "MetaGer-nøgler er designet af os på en sådan måde, at de ikke kræver nogen personlige data. Ikke desto mindre kræves der normalt nogle data senest under udførelsen af en betaling. Det kan være IBAN-nummeret på den betalende konto eller e-mail-adressen på den anvendte PayPal-konto. SUMA-EV behandler ikke selv disse data og gemmer dem ikke. Men afhængigt af betalingsmetoden gør udbyderen af betalingstjenesten det.",
+            "Derfor er vores betalingsmetoder konfigureret på en sådan måde, at så lidt som muligt, og i nogle tilfælde slet ingen brugerdata, behøver at blive indsamlet."
+        ],
+        "anonymous": "Anonyme betalingsmetoder",
+        "more": "Andre betalingsmetoder"
+    },
+    "texts": [
+        "For hver annoncefri websøgning på MetaGer vil du blive opkrævet <b>1 token</b>. Du kan til enhver tid fylde din nøgle op med en af disse token-pakker."
+    ],
+    "pricing": {
+        "heading": "SÃ¥dan er vores priser sammensat",
+        "texts": [
+            "Størstedelen af vores indtægter går direkte videre til de søgetjenester, du søger på. Vi ønsker at tilbyde et bæredygtigt koncept, som indebærer, at de søgemaskiner, der forespørges på, ikke lider nogen økonomisk skade ved at levere anonyme og reklamefri søgeresultater til MetaGer. Derudover er der en andel til at dække vores personale- og serveromkostninger, og selvfølgelig er gebyrerne til betalingstjenesteudbydere og skatter inkluderet i priserne.",
+            "Ved at vælge de søgetjenester, der skal forespørges på, kan du således ikke kun fastsætte dine egne omkostninger, men også samtidig beslutte, hvilke projekter du vil støtte. Derfor også den token-baserede fakturering."
+        ]
+    }
+}
diff --git a/pass/lang/da/help.json b/pass/lang/da/help.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..3ee956cf0a54f88cb7e30f5c6be827636f2e597f 100644
--- a/pass/lang/da/help.json
+++ b/pass/lang/da/help.json
@@ -1 +1,93 @@
-{}
\ No newline at end of file
+{
+    "anonymous-token": {
+        "heading": "Anonyme tokens",
+        "description": {
+            "heading": "Hvad er anonyme tokens?",
+            "text": "Hvis du bruger en MetaGer-nøgle, vil du modtage en tilfældigt genereret adgangskode, som din browser sender til os med hver søgeforespørgsel, så vi kan aktivere annoncefri søgning. Hvis du bruger vores <a href=\"{{linkAndroidApp}}\" target=\"_blank\">Android-app</a>, eller vores webudvidelse til <a href=\"#\" target=\"_blank\" rel=\"noopener\">Chrome</a> og <a href=\"#\" target=\"_blank\" rel=\"noopener\">Firefox</a>, sender din browser os i stedet for adgangskoden en tilfældigt genereret adgangskode (anonymt token) med hver søgeanmodning til godkendelse, som genereres lokalt. Dette sikrer, at hver adgangskode er unik og ikke har nogen forbindelse med den faktiske MetaGer-nøgle eller mellem de enkelte adgangskoder."
+        },
+        "problem": {
+            "heading": "Hvilket problem er det meningen, at anonyme tokens skal løse?",
+            "text": "Hvis din browser altid sender os det samme password ved hver søgning, ville vi i det mindste teoretisk have mulighed for at etablere en sammenhæng mellem alle søgninger, der er udført med den samme nøgle. Selv hvis vi ikke gør det, vil tillid selvfølgelig stadig være nødvendig for at være sikker på din anonyme søgning. For at vi ikke kun skal love den anonyme søgning, men også kan bevise den, har vi introduceret de anonyme tokens."
+        },
+        "general-function": {
+            "heading": "Hvordan fungerer det?",
+            "texts": [
+                "Så vi vil gerne have engangsadgangskoder genereret direkte fra din slutenhed, som du så sender til os til godkendelse under dine søgninger. Men for hvert anonymt token på din slutenhed skal vi sørge for, at et almindeligt token er blevet trukket fra din MetaGer-nøgle for det, uden (og det er det afgørende) at fortælle os, hvilken MetaGer-nøgle der blev brugt til at generere det anonyme token.",
+                "Traditionelt ville vi bruge en eller anden form for kryptografisk signatur til dette formål. I dette tilfælde ville vi underskrive det genererede anonyme token. Når du så sender os det anonyme token sammen med signaturen på et senere tidspunkt, kan vi være sikre på, at det anonyme token er gyldigt. Men for at få signaturen skulle du have sendt os det anonyme token sammen med din rigtige nøgle, hvilket ville ophæve anonymiteten.",
+                "Derfor bruger vi i stedet en modificeret form for kryptografisk signatur, den såkaldte <a href=\"https://en.wikipedia.org/wiki/Blind_signature\" target=\"_blank\">blind signature</a>. For at skabe en analogi til det virkelige liv, er det som at sende os dit anonyme token i en kuvert af karbonpapir. I dette eksempel ville vi ikke være i stand til at åbne kuverten, men vi ville være i stand til at underskrive udefra, så vores underskrift ville blive overført til det anonyme token indeni. Når du får konvolutten tilbage, kan du fjerne den og sende os adgangskoden og underskriften tilbage senere. Så kan vi bekræfte, at det rent faktisk er vores underskrift.",
+                "Faktisk er denne analogi en smule misvisende, for i den faktiske proces, i det øjeblik du sender os det anonyme token og signaturen, har vi ikke kun aldrig set det anonyme token før, men heller aldrig set selve signaturen. Og alligevel kan vi verificere, at signaturen er genereret af os."
+            ]
+        },
+        "meaning": {
+            "heading": "Hvad betyder det for dine autentificerede søgninger?",
+            "texts": [
+                "Ved at bruge den beskrevne algoritme kan både du og vi sikre, at der hver gang bruges en ny tilfældig adgangskode, der ikke er relateret til din MetaGer-nøgle, til dine godkendte søgninger.",
+                "Det særlige ved denne algoritme er, at alle komponenter, der sikrer anonymitet, eksekveres lokalt på din enhed. Denne eksekverede kildekode kan ses og verificeres af enhver til enhver tid.",
+                "Det bedste af det hele er, at du ikke behøver at konfigurere noget for at bruge anonyme tokens. Det er nok at installere/bruge vores browserudvidelse/Android-app for at få din enhed til at bruge anonyme tokens til alle søgninger."
+            ]
+        },
+        "technical-function": {
+            "heading": "Algoritmen bag den:",
+            "texts": [
+                "I en klassisk RSA-signatur ville vi tage det anonyme token <code>m</code>, den hemmelige eksponent <code>d</code>, og den offentlige modulus <code>N</code> af vores private nøgle og oprette signaturen ved hjælp af <code>m^d (mod N)</code>. Vi ønsker dog, at <code>m</code> skal forblive hemmelig.",
+                "Derfor opretter din terminal et tilfældigt tal <code>r</code> ved hjælp af en tilfældig talgenerator, som ikke er divisor-relateret til <code>N</code>. Så den største fælles divisor for <code>r</code> og <code>N</code> må være <code>1</code>.",
+                "Da <code>r</code> er et tilfældigt tal, følger det, at <code>m'</code> ikke afslører nogen information om det lokalt lagrede anonyme token <code>m</code>.",
+                "Vores server modtager nu det obfuskerede anonyme token <code>m'</code> fra din slutenhed sammen med den MetaGer-nøgle, der skal bruges. Vi trækker et token fra nøglen og sender den også obfuskerede signatur <code>s'&Congruent; (m')^d (mod N)</code> tilbage til din slutenhed.",
+                "Din terminal kan nu beregne den faktiske gyldige RSA-signatur <code>s</code> for det ukrypterede anonyme token: <code>s&Congruent; s' r^-1 (mod N)</code>. Det virker, fordi for RSA-nøgler gælder <code>r^(e*d)&Congruent; r (mod N)</code>. Og derfor også: <code>s &Congruent; s' * r^-1 &Congruent; (m')^d*r^-1 &Congruent; m^d*r^(e*d)*r^-1 &Congruent; m^d*r*r^-1 &Congruent; m^d (mod N)</code>.",
+                "Din slutenhed sender os nu det ukrypterede anonyme token sammen med den tilknyttede signatur til godkendelse under en søgning. Selve nøglen bliver ikke længere sendt til os under søgningen."
+            ]
+        }
+    },
+    "faq": {
+        "faqs": [
+            {
+                "summary": "Hvordan fungerer MetaGer-nøglen?",
+                "description": "Med en MetaGer-nøgle søger du reklamefrit. Du modtager tokens, hvorfra der trækkes en søgning pr. søgning. Når du bruger en MetaGer-nøgle, er alle funktioner, der beskytter MetaGer mod automatiserede opkald, deaktiveret. Det betyder, at du ikke vil se captcha-anmodninger, og at din IP-adresse ikke vil blive gemt i en begrænset periode. Kort sagt, det vil gøre MetaGer hurtigere, mere pålidelig og mere sikker."
+            },
+            {
+                "summary": "Hvordan fungerer det anonyme token?",
+                "description": "Du kan bruge det anonyme token med vores browserudvidelse (under udvikling) eller app. Det vil give dig mulighed for at søge endnu mere sikkert med MetaGer. Når du bruger anonym token, gemmes en del af din kredit, i form af tilfældige adgangskoder, på din enhed. Gennem en <a href=\"{{tokenlink}}\">kompleks kryptografisk proces</a> bliver det umuligt selv for os at forbinde dine udførte søgninger med hinanden eller med din nøgle."
+            },
+            {
+                "summary": "Hvordan bruger jeg MetaGer-nøglen?",
+                "description": "MetaGer-nøglen oprettes og bruges automatisk i browseren. Så du behøver ikke at gøre noget andet. Hvis du vil bruge MetaGer-nøglen på flere enheder, er der flere måder at konfigurere MetaGer-nøglen på:",
+                "steps": [
+                    {
+                        "heading": "Kopier URL",
+                        "description": "Når du er på MetaGer-nøgleadministrationssiden, er der mulighed for at kopiere en URL. Med denne URL kan alle indstillinger for MetaGer samt MetaGer-nøglen gemmes på en anden enhed."
+                    },
+                    {
+                        "heading": "Gem fil",
+                        "description": "Når du er på siden til administration af MetaGer-nøgler, er der mulighed for at gemme en fil. Dette gemmer din MetaGer-nøgle som en fil. Du kan derefter bruge denne fil på en anden enhed til at logge ind der med din nøgle."
+                    },
+                    {
+                        "heading": "Scan QR-kode",
+                        "description": "Alternativt kan du også scanne QR-koden, der vises på administrationssiden, for at logge ind på en anden enhed."
+                    },
+                    {
+                        "heading": "Indtast MetaGer-nøglen manuelt",
+                        "description": "Du kan selvfølgelig også indtaste nøglen manuelt på en anden enhed."
+                    }
+                ]
+            },
+            {
+                "summary": "Jeg er utilfreds med MetaGer-nøglen. Hvad kan jeg gøre?",
+                "description": "I dette tilfælde kan du anmode om refusion for ubrugte tokens inden for 30 dage efter købet. For at gøre dette skal du bruge dit betalings-ID. For at anmode om en refusion skal du åbne MetaGers nøgleadministrationsside. Der skal du klikke på menupunktet \"Ordrer\" og indtaste dit betalings-ID. Derefter kan du klikke på knappen \"Anmod om refusion\" og sende refusionsanmodningen."
+            },
+            {
+                "summary": "Hvordan søger jeg helt anonymt?",
+                "description": "Dit privatliv og din anonymitet er meget vigtige for os. Det er derfor, vi tilbyder anonyme betalingsmetoder (kontanter). Vi tilbyder også brugen af <a href=\"{{tokenlink}}\">anonymous tokens</a>, som de endda kan bruge til at søge verificerbart anonymt."
+            },
+            {
+                "summary": "Jeg har brug for en faktura. Hvordan får jeg den?",
+                "description": "Til dette har du kun brug for dit betalings-ID. For at anmode om fakturaen skal du åbne MetaGer-nøgleadministrationssiden. Her klikker du på menupunktet \"Ordrer\" og indtaster dit betalings-ID. Nu kan du klikke på knappen \"Request invoice\" og starte fakturaanmodningen. Til fakturaen har vi brug for dit fulde navn, din e-mailadresse og din adresse."
+            },
+            {
+                "summary": "Jeg vil gerne oplade min MetaGer-nøgle automatisk. Hvordan gør jeg det?",
+                "description": "For vores medlemmer bliver den nøgle, der er inkluderet i medlemskabet, automatisk fyldt op hver måned. Mængden af token her afhænger af det betalte medlemsgebyr."
+            }
+        ],
+        "heading": "Hvordan fungerer MetaGer-nøglen?",
+        "more-questions": "Har du yderligere spørgsmål? Så er du velkommen til at bruge vores <a href=\"{{contactlink}}\" target=\"_blank\">kontaktformular</a>."
+    }
+}
diff --git a/pass/lang/da/index.json b/pass/lang/da/index.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..9e68654b8c51e84f4c23013c207bb53973ab2334 100644
--- a/pass/lang/da/index.json
+++ b/pass/lang/da/index.json
@@ -1 +1,55 @@
-{}
\ No newline at end of file
+{
+    "advantages": {
+        "compromise": {
+            "compromise": "Kompromiser",
+            "heading": "Uden kompromis",
+            "description": "Der er ingen brugerkonti hos MetaGer. Du vil modtage en tilfældigt genereret nøgle fra os. Ingen kontaktoplysninger er påkrævet. Med vores <a href=\"{{linkPaymentMethods}}\">betalingsmetoder</a>, indsamler vi kun de data, der er nødvendige for betalingsbehandling. Hvis du bruger vores <a href=\"/app\">Android-app</a>, eller snart vores browserudvidelse, bruger du også <a href=\"{{linktoken}}\"> anonym token</a> beviseligt så anonym som uden en nøgle."
+        },
+        "ads": {
+            "heading": "Uden reklamer",
+            "description": "Reklamer og privatliv går som regel ikke godt i spænd. Selvom vi altid forsøger at gøre det bedste for dig ved at gøre vores annoncer så privatlivsvenlige som muligt, er vi også nødt til at <a href='{{privacylink}}' target='_blank'>sænke vores ambitioner</a>. Den annoncefri søgning er et fornuftigt alternativ, så vi kan leve op til vores høje standarder uden at gå på kompromis.",
+            "ads": "Reklame",
+            "tracking": "Sporing af links"
+        },
+        "logging": {
+            "heading": "Uden logning",
+            "description": "Dine søgninger på internettet genererer automatisk en masse data. Den smule data, som vi traditionelt skal logge, bruges til at bekæmpe spam. Men en MetaGer-nøgle gør også det unødvendigt. Du vil heller ikke længere støde på captchas.",
+            "logging": "Logning"
+        },
+        "efficiency": {
+            "heading": "Søg mere effektivt",
+            "description": "Find det, du leder efter, endnu hurtigere. Hvis det er nødvendigt, integrerer vi overskuelige dybe links, relevante nyheder og videoer i søgeresultaterne. Vores billedsøgning er også forbedret med yderligere kilder."
+        }
+    },
+    "hero": {
+        "title": "Din adgang til det bedste privatliv for websøgning",
+        "description": "Med en MetaGer-nøgle kan du nyde internetsøgning, som det altid har været:",
+        "advantages": {
+            "ads": "Uden reklame",
+            "tracking": "Uden sporingslinks",
+            "logging": "Uden logning",
+            "compromise": "Uden kompromis"
+        },
+        "searchbarplaceholder": "Anonym på internettet",
+        "calltoaction": "SÃ¥dan fungerer det"
+    },
+    "howitworks": {
+        "heading": "SÃ¥dan fungerer det",
+        "steps": [
+            {
+                "heading": "Opret MetaGer-nøgle",
+                "description": "Din nøgle er det eneste, du behøver for at bruge den reklamefri søgning. Den bliver genereret automatisk til dig. Vi har ikke brug for nogen kontaktoplysninger."
+            },
+            {
+                "heading": "Opladningstoken",
+                "description": "Din nøgle aktiveres ved en engangsbetaling på <a href=\"{{linkCost}}\" target=\"_blank\"></a> . Den vil blive brugt automatisk bagefter. Al reklame på MetaGer er nu fjernet, og du har adgang til resultater fra alle tilgængelige kilder. En kredit på 500 tokens (5€) er normalt nok til næsten 2 måneder."
+            },
+            {
+                "heading": "Brug din nøgle på så mange enheder, som du vil",
+                "description": "Din nøgle kan bruges på så mange enheder, som du vil. Du kan også dele den med venner og familie. Bare gå ind på <a href=\"https://metager.de\" target=\"_blank\">MetaGer</a> på din enhed, indtast din nøgle ved at klikke på nøgleikonet ved siden af søgefeltet, og du er klar til at gå i gang."
+            }
+        ],
+        "start": "Opret MetaGer-nøgle nu!",
+        "login": "Jeg har allerede en nøgle"
+    }
+}
diff --git a/pass/lang/da/invoice.json b/pass/lang/da/invoice.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..5f4048cb9c36a202ef4b634d6949d2b159c3badb 100644
--- a/pass/lang/da/invoice.json
+++ b/pass/lang/da/invoice.json
@@ -1 +1,53 @@
-{}
\ No newline at end of file
+{
+    "count": "Antal",
+    "form": {
+        "storage": "Vi er lovmæssigt forpligtet til at opbevare en gang udstedte fakturaer <span class=\"bold\">10 år</span> længe. Da en faktura skal udstedes til dig personligt, indeholder den nødvendigvis personlige data (navn, adresse, e-mail).",
+        "heading": "Faktura",
+        "breadcrumps": {
+            "orders": "Bestillinger",
+            "receipt": "Faktura"
+        },
+        "description": "Hvis du har brug for en faktura, bedes du indtaste dine faktureringsoplysninger i formularen nedenfor. Vi har brug for dit fulde navn, postadresse og e-mailadresse for at kunne sende dig fakturaen.",
+        "company": {
+            "label": "Firmanavn (valgfrit)",
+            "placeholder": "Enhver virksomhed"
+        },
+        "name": {
+            "label": "Fuldt navn",
+            "placeholder": "John Sample"
+        },
+        "mail": {
+            "label": "E-mail"
+        },
+        "address": {
+            "label": "Adresse",
+            "placeholder": "Enhver gade 3&#10;3015 Enhver by&#10;Tyskland"
+        },
+        "submit": "Anmodning om faktura",
+        "success": "Din besked er blevet leveret til os. Vi vil behandle anmodningen så hurtigt som muligt og svare på den e-mailadresse, vi har registreret."
+    },
+    "title_order": "Orden {{orderid}}",
+    "title_invoice": "Kvittering {{orderid}}",
+    "author": "SUMA-EV - Foreningen for Fri Adgang til Viden",
+    "subject": "MetaGer-nøgle: token (x{amount}})",
+    "invoice": "Faktura",
+    "payment_reference_id": "Betalings ID",
+    "order-confirmation": "Ordrebekræftelse",
+    "order": "Bestillingsnummer",
+    "phone": "Telefon",
+    "mail-address": "support+46521@metager.de",
+    "domain": "metager.org",
+    "vatid": "Ust-ID",
+    "invoice_date": "Fakturadato",
+    "product": "MetaGer Key: Token",
+    "purchase_date": "Dato for service",
+    "details": "Bestillingsoplysninger",
+    "vat": "MOMS ({{vat}}%)",
+    "total": "Samlet beløb",
+    "price": "Pris",
+    "currency-exchange": "Valutakurs",
+    "payment-received": "Fakturabeløb modtaget med tak!",
+    "board": "Bestyrelse",
+    "registrar": "Tinglysningsretten",
+    "registered-at": "Den lokale domstol i Hannover"
+}
diff --git a/pass/lang/da/key.json b/pass/lang/da/key.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..c492346a23e4cf15bb8803117e9c1d34b73de433 100644
--- a/pass/lang/da/key.json
+++ b/pass/lang/da/key.json
@@ -1 +1,32 @@
-{}
\ No newline at end of file
+{
+    "charge": {
+        "full": "Din nøgle er allerede fuldt opladet. Du kan foretage en ny opladning, når nogle søgninger er opbrugt."
+    },
+    "key": {
+        "copy-url": "Kopier URL",
+        "transfer-key": "Generer login-kode",
+        "share": {
+            "title": "MetaGer-nøgle",
+            "share": "Del"
+        },
+        "transfer": {
+            "title": "Overfør MetaGer-nøglen til andre enheder",
+            "description": "Nedenfor får du vist en kort engangskode, som du kan bruge på andre enheder til login. For at gøre dette skal du bruge den almindelige loginformular, som du kan nå via nøgleikonet ved siden af søgefeltet, og indtaste denne kode der i stedet for nøglen.",
+            "close": "Luk"
+        },
+        "store": "Gem til fil",
+        "tokens": "Token",
+        "fill": "Opladning",
+        "orders": "Bestillinger",
+        "valid_until": "gyldig indtil",
+        "new": {
+            "heading": "Sådan fortsætter det",
+            "text": "Din MetaGer-nøgle er blevet oprettet og konfigureret. Den skal bare oplades. Sørg for, at du på forhånd har gemt nøglen, så du kan indtaste den, hvis indstillingen i din browser slettes. Til dette har du brug for enten selve nøglen, ovenstående URL eller QR-koden som en fil.",
+            "charge": "Oplad nøglen nu"
+        },
+        "startpagelinks": {
+            "adfree": "Til den reklamefri søgning",
+            "regular": "Til MetaGer-søgning"
+        }
+    }
+}
diff --git a/pass/lang/da/login.json b/pass/lang/da/login.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..325afad70346894681a6784cbb9fff48569cebb3 100644
--- a/pass/lang/da/login.json
+++ b/pass/lang/da/login.json
@@ -1 +1,17 @@
-{}
\ No newline at end of file
+{
+    "heading": "Enter-tast",
+    "key-input": {
+        "placeholder": "Enter-tast"
+    },
+    "or": "eller",
+    "upload-file": "Upload backup-fil",
+    "scan-qr": {
+        "button": "Scan QR-kode",
+        "no-camera": "Intet kamera tilgængeligt",
+        "invalid-qr": "QR-koden indeholder ikke gyldige data.",
+        "close": "Luk"
+    },
+    "submit": "Indsend",
+    "create": "Opsæt annoncefri søgning",
+    "error": "Der kræves en gyldig nøgle eller en gyldig backup-fil."
+}
diff --git a/pass/lang/da/order.json b/pass/lang/da/order.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..8f02996d9e582fa686d64de39d9974794d6dbe90 100644
--- a/pass/lang/da/order.json
+++ b/pass/lang/da/order.json
@@ -1 +1,70 @@
-{}
\ No newline at end of file
+{
+    "product": {
+        "name": "MetaGer-nøgle",
+        "description": "MetaGer-nøgle til reklamefri brug af MetaGer-søgemaskinen",
+        "itemname_one": "{{count}} MetaGer Token",
+        "itemname_other": "{{count}} MetaGer Token"
+    },
+    "breadcrumps": {
+        "orders": "Bestillinger"
+    },
+    "summary": {
+        "thankyou": "Tak for dit køb!",
+        "actions": {
+            "order-confirmation": "Download ordrebekræftelse",
+            "receipt": "Anmodning om kvittering",
+            "download-receipt": "Download kvittering",
+            "refund": "Anmod om refusion"
+        },
+        "receipt": "Har du brug for en faktura? Så er det nu, du skal anmode om en. Alternativt kan du genkalde denne oversigt på et senere tidspunkt ved at indtaste dit betalings-ID ({{payment_reference_id}})."
+    },
+    "details": {
+        "header": {
+            "details": "Ordrenummer ({{order_id}}) fra {{order_date}} UTC",
+            "count": "Antal",
+            "price": "Pris"
+        },
+        "item": "MetaGer Key: Token",
+        "vat": "MOMS ({{vat}}%)",
+        "total": "Samlet beløb",
+        "exchangerate": "Valutakurs"
+    },
+    "orders": {
+        "description": "Indtast venligst betalings-ID'et for en af dine ordrer nedenfor for at se detaljer om den.",
+        "placeholder": "Betalings ID",
+        "submit": "Indlæs ordrer",
+        "400": "Ugyldigt betalings-ID",
+        "404": "Betalings ID ikke fundet"
+    },
+    "revocation": {
+        "input": {
+            "label": "Jeg accepterer udtrykkeligt udførelsen af kontrakten inden udløbet af tilbagekaldelsesperioden. Jeg forstår, at <a href=\"{{revocation_link}}\" target=\"_blank\">fortrydelsesret</a> udløber ved påbegyndelse af udførelsen af kontrakten. I stedet giver vi dig en frivillig <a href=\"{{refundlink}}\" target=\"_blank\">30-dages returret</a>.",
+            "error": "Dette felt er påkrævet"
+        }
+    },
+    "agb": {
+        "text": "Ved at fortsætte dit køb accepterer du vores <a href=\"{{agblink}}\" target=\"_blank\">Vilkår og betingelser</a>."
+    },
+    "refund": {
+        "breadcrumps": {
+            "orders": "Bestillinger",
+            "refund": "Tilbagebetaling"
+        },
+        "success": "Din anmodning er blevet sendt til os. Vi vil behandle den så hurtigt som muligt. Afhængigt af betalingsmetoden kan det tage et par dage, før en refusion er synlig i dit salg.",
+        "errors": {
+            "already_refunded": "Der er allerede anmodet om refusion for denne ordre.",
+            "generic": "Fejl ved afsendelse af din besked. Prøv venligst igen senere."
+        },
+        "headings": [
+            "Din tilbagebetaling"
+        ],
+        "texts": [
+            "Er du utilfreds med din nøgle? Det er vi meget kede af at høre! Selvfølgelig refunderer vi fakturabeløbet i dette tilfælde. En refundering sker altid til den samme konto, som blev brugt til den oprindelige betaling. Vi er også glade for at modtage din kritik.",
+            "Bemærk: En del af din købte kredit er allerede blevet brugt. Derfor kan vi kun refundere dig <span class=\"bold\">{{count}}/{payment_count}}</span> søgninger."
+        ],
+        "message": {
+            "placeholder": "Din besked (valgfri)"
+        },
+        "submit": "Anmod om refusion"
+    }
+}
diff --git a/pass/lang/da/pageheader.json b/pass/lang/da/pageheader.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..5ce32d78bdce49c99d3368205b310a1eda1d6de3 100644
--- a/pass/lang/da/pageheader.json
+++ b/pass/lang/da/pageheader.json
@@ -1 +1,22 @@
-{}
\ No newline at end of file
+{
+    "title": "MetaGer-nøgle",
+    "leftnav": {
+        "informations": "Information",
+        "price": "Pris",
+        "help": "Hjælp"
+    },
+    "rightnav": {
+        "manage": "Administrer nøgle",
+        "logout": "Log ud",
+        "enter": "Enter-tast",
+        "start": "Start"
+    },
+    "footer": {
+        "impress": "Aftryk",
+        "privacy": "Privatlivets fred"
+    },
+    "chat": {
+        "title": "Chat med os!",
+        "button": "Har du spørgsmål? Vi er glade for at hjælpe!"
+    }
+}
diff --git a/pass/lang/fi/admin.json b/pass/lang/fi/admin.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..fbbdb1b6df95e2573996fc4f64f852ff4738b4e4 100644
--- a/pass/lang/fi/admin.json
+++ b/pass/lang/fi/admin.json
@@ -1 +1,78 @@
-{}
\ No newline at end of file
+{
+    "index": {
+        "heading": "MetaGer Key Admin",
+        "actions": {
+            "cash-payment": "Käteismaksun kirjaaminen",
+            "heading": "Toimet:",
+            "receipt": "Luo lasku",
+            "keymanagement": "Hallitse avaimia"
+        }
+    },
+    "breadcrumps": {
+        "overview": "Yleiskatsaus",
+        "payments-cash": "Syötä käteismaksu",
+        "receipt": "Luo lasku",
+        "key-management": "Avainten hallinta"
+    },
+    "cash-payment": {
+        "info": "Kirjoita saadut käteismaksut tähän, jotta niihin liittyvät ostotilaukset voidaan kirjata.",
+        "price": {
+            "placeholder": "10,00",
+            "label": "Määrä euroina",
+            "calculate": "Laske nykyinen valuuttakurssi"
+        },
+        "payment_reference": {
+            "label": "Maksutunnus:",
+            "placeholder": "123456789"
+        },
+        "converted-price": {
+            "label": "Saatu määrä",
+            "placeholder": "10,00"
+        },
+        "submit": "Kirjan tilaus",
+        "success": "Tilaus numerolla {{orderid}} on onnistuneesti varattu."
+    },
+    "receipt": {
+        "orderid": {
+            "label": "Tilausnumero ({{orderdate}}):",
+            "placeholder": "Syötä tilausnumero…",
+            "submit": "Kuormausjärjestys"
+        },
+        "name": {
+            "label": "Koko nimi:"
+        },
+        "company": {
+            "label": "Yritys:"
+        },
+        "email": {
+            "label": "Sähköposti"
+        },
+        "address": {
+            "label": "Osoite"
+        },
+        "submit-userdata": "Ota haltuun laskutiedot"
+    },
+    "key": {
+        "key-input": {
+            "label": "Enter-näppäin",
+            "submit": "Lähetä"
+        },
+        "key-overview": {
+            "charge": "Luotto: {{token}}",
+            "charge-success": "Lataus onnistui",
+            "delete": "Poista",
+            "expiration": "Voimassa asti {{expiration}}",
+            "charge-form": {
+                "heading": "Manuaalinen lataus",
+                "hint": "Manuaalisesta täydennyksestä ei suoriteta maksua. Luotto yksinkertaisesti hyvitetään ilman vastiketta. Käytä varovasti!",
+                "amount": {
+                    "label": "Määrä"
+                },
+                "price": {
+                    "label": "Määrä (€)"
+                },
+                "submit": "Lataa nyt!"
+            }
+        }
+    }
+}
diff --git a/pass/lang/fi/agb.json b/pass/lang/fi/agb.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..8d2c688c07c54707c51ca3bae5edac60aa237e3a 100644
--- a/pass/lang/fi/agb.json
+++ b/pass/lang/fi/agb.json
@@ -1 +1,133 @@
-{}
\ No newline at end of file
+{
+    "heading": "SuMa-eV - Association for Free Access to Knowledge ry:n yleiset säännöt ja ehdot",
+    "date": "GTC:n tila",
+    "paragraphs": [
+        {
+            "heading": "§1 Soveltaminen yrittäjiin ja termien määritelmät",
+            "paragraphs": [
+                "(1) Seuraavia yleisiä sopimusehtoja sovelletaan kaikkiin meidän ja kuluttajan välisiin toimituksiin tilaushetkellä voimassa olevassa muodossa.",
+                "Kuluttaja on luonnollinen henkilö, joka tekee oikeustoimen tarkoituksessa, joka ei pääasiallisesti liity hänen kaupalliseen tai itsenäiseen ammatilliseen toimintaansa (BGB:n 13 §)."
+            ]
+        },
+        {
+            "heading": "2 § Sopimuksen tekeminen, sopimustekstin tallentaminen",
+            "paragraphs": [
+                "(1) Seuraavat sopimuksen tekemistä koskevat säännöt koskevat tilauksia, jotka tehdään verkkokaupan https://metager.org kautta.",
+                "(2) Jos sopimus tehdään, sopimus tehdään seuraavan tahon kanssa:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nRekisterinumero VR200033\nRekisterituomioistuin Hannoverin lääninoikeus",
+                "(3) Tavaroiden esittely verkkokaupassamme ei ole oikeudellisesti sitova sopimustarjous, vaan ainoastaan kuluttajaa sitomaton kehotus tilata tavaroita. Tilaamalla haluamansa tavarat kuluttaja tekee sitovan tarjouksen ostosopimuksen tekemisestä.",
+                "(4) Kun tilaus vastaanotetaan verkkokaupassamme, sovelletaan seuraavia määräyksiä: Kuluttaja tekee sitovan tarjouksen sopimuksen tekemisestä suorittamalla onnistuneesti Internet-kaupassamme tarjotun tilausmenettelyn.",
+                "Tilaus tehdään seuraavissa vaiheissa:",
+                [
+                    "Halutun hakujen lukumäärän valinta",
+                    "Halutun maksutavan valinta",
+                    "Sitovan oston vahvistaminen suorittamalla maksu loppuun"
+                ],
+                "Ennen tilauksen sitovaa tekemistä kuluttaja voi tietojensa tarkistamisen jälkeen palata Internet-sivulle, jolle hänen tietonsa on tallennettu, ja korjata syöttövirheet tai peruuttaa tilausprosessin sulkemalla Internet-selaimen painamalla hänen käyttämänsä Internet-selaimen \"takaisin\"-painiketta. Vahvistamme tilauksen vastaanottamisen välittömästi tilauksen yhteenvedolla ja mahdollisuudella ladata tilausvahvistus."
+            ]
+        },
+        {
+            "heading": "§3 Hinnat, toimituskulut, maksu, eräpäivä",
+            "paragraphs": [
+                "(1) Ilmoitetut hinnat sisältävät lakisääteisen arvonlisäveron ja muut hintakomponentit.",
+                "(2) Kuluttajalla on mahdollisuus maksaa käteisellä, Giropay, Sofort, Przelewy24, Bancontact, Blik, Eps, Ideal, Mybank, PayPal, luottokortti (Visa, Mastercard, American Express).",
+                "(3) Jos kuluttaja on valinnut ennakkomaksun, hän sitoutuu maksamaan kauppahinnan välittömästi sopimuksen tekemisen jälkeen."
+            ]
+        },
+        {
+            "heading": "§4 Toimitus",
+            "paragraphs": [
+                "(1) Ellei tuotekuvauksessa ole selvästi toisin mainittu, kaikki tarjoamamme tuotteet ovat valmiita välittömään toimitukseen. Koska kyseessä on palvelu, lähetystä ei tarvita ja se toimitetaan välittömästi.",
+                "(2) Tarjoamme ostetun tuotteen 2 vuoden ajan ostopäivästä. Tämän ajanjakson päätyttyä jatkokäyttö ei ole mahdollista."
+            ]
+        },
+        {
+            "heading": "§5 Omistusoikeuden säilyttäminen",
+            "paragraphs": [
+                "Pidätämme tavaroiden omistusoikeuden, kunnes ostohinta on maksettu kokonaisuudessaan."
+            ]
+        },
+        {
+            "heading": "§6 Lunastusehdot",
+            "paragraphs": [
+                "Riippumatta laillisesta peruuttamisoikeudesta (ks. 7 §) myönnämme vapaaehtoisen 30 päivän rahanpalautustakuun. Määräaika on 30 päivää myyntipäivästä.",
+                "Jos haluat käyttää 30 päivän rahanpalautustakuuta, sinun on ilmoitettava päätöksestäsi SUMA-EV:lle palautuspyynnöllä. Löydät palautuspyynnön tilisi tilauskatsauksesta. Määräaika täyttyy, jos saamme palautuspyynnön ennen kuin 30 päivää on kulunut. 30 päivän rahanpalautustakuuta ei myönnetä maksutavalle \"käteismaksu\". Maksun palautus tehdään peruuttamisoikeuden mukaisesti.",
+                "Palautusta voi hakea vain käyttämättömistä kuponkikorteista. Jos olet jo käyttänyt kupongin ostoksestasi, palautamme ostosumman suhteessa.",
+                "Lakisääteistä peruuttamisoikeutta ei rajoiteta vapaaehtoisella 30 päivän pidennyksellä."
+            ]
+        },
+        {
+            "revocation": {
+                "notice": {
+                    "content": {
+                        "right": {
+                            "heading": "Peruuttamisoikeus",
+                            "texts": [
+                                "Sinulla on oikeus peruuttaa tämä sopimus neljäntoista päivän kuluessa ilman mitään syytä. Peruuttamisaika on kolmekymmentä päivää sopimuksen tekopäivästä.",
+                                "Peruuttamisoikeuden käyttämiseksi sinun on ilmoitettava meille päätöksestäsi peruuttaa sopimus selkeällä ilmoituksella (esim. postitse, faksilla tai sähköpostitse lähetetyllä kirjeellä). Voit käyttää tähän tarkoitukseen oheista peruuttamislomakkeen mallia, joka ei kuitenkaan ole pakollinen.",
+                                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nE-Mail https://metager.org/kontakt",
+                                "Peruuttamisajan noudattamiseksi riittää, että lähetät ilmoituksen peruuttamisoikeuden käyttämisestä ennen peruuttamisajan päättymistä."
+                            ]
+                        },
+                        "consequences": {
+                            "heading": "Peruuttamisen seuraukset",
+                            "texts": [
+                                "Jos peruutat tämän sopimuksen, meidän on palautettava kaikki sinulta saamamme maksut välittömästi ja viimeistään kolmenkymmenen päivän kuluessa siitä päivästä, jona saimme ilmoituksen sopimuksen peruuttamisesta. Tässä palautuksessa käytämme samaa maksuvälinettä, jota käytit alkuperäisessä maksutapahtumassa, ellei kanssasi ole nimenomaisesti toisin sovittu; palautuksesta ei missään tapauksessa peritä sinulta mitään maksuja.",
+                                "Jos olet pyytänyt, että palvelut aloitetaan peruuttamisaikana, sinun on maksettava meille kohtuullinen määrä, joka vastaa siihen mennessä, kun ilmoitat meille peruuttamisoikeuden käyttämisestä tämän sopimuksen osalta, jo suoritettujen palvelujen osuutta sopimuksessa määrättyjen palvelujen kokonaislaajuudesta."
+                            ]
+                        },
+                        "extinction": {
+                            "heading": "Peruutuksen syyt",
+                            "texts": [
+                                "Peruuttamisoikeus raukeaa, kun kyseessä on sopimus, joka koskee muun kuin aineellisena välineenä olevan digitaalisen sisällön toimittamista, jos elinkeinonharjoittaja on aloittanut sopimuksen täyttämisen sen jälkeen, kun kuluttaja on",
+                                [
+                                    "on antanut nimenomaisen suostumuksensa siihen, että toimeksisaaja aloittaa sopimuksen täyttämisen ennen peruuttamisajan päättymistä, ja",
+                                    "on vahvistanut tietävänsä, että suostumuksellaan hän menettää peruuttamisoikeutensa sopimuksen täytäntöönpanon alussa."
+                                ]
+                            ]
+                        }
+                    },
+                    "heading": "Peruutusehdot"
+                },
+                "heading": "Kuluttajien peruuttamisoikeus",
+                "text": "Kuluttajilla on oikeus peruuttaa sopimus seuraavien säännösten mukaisesti: kuluttaja on luonnollinen henkilö, joka tekee oikeustoimen tarkoituksiin, jotka eivät pääasiallisesti liity hänen kaupalliseen tai itsenäiseen ammatilliseen toimintaansa."
+            },
+            "heading": "§7 Asiakkaan peruuttamisoikeus kuluttajana"
+        },
+        {
+            "texts": [
+                "Jos haluat peruuttaa sopimuksen, täytä tämä lomake ja lähetä se takaisin osoitteeseen:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nE-Mail https://metager.org/kontakt",
+                "Minä/me (*) peruutan/peruutamme (*) sopimuksen, jonka olen/me (*) tehnyt seuraavien tavaroiden ostamisesta (*)/jäljempänä mainitun palvelun tarjoamisesta (*).",
+                "Maksun tunnus",
+                "Tilattu (*)/vastaanotettu (*)",
+                "Kuluttajan (kuluttajien) nimi",
+                "Kuluttajan (kuluttajien) osoite",
+                "Kuluttajan (kuluttajien) allekirjoitus (vain paperilla tehdyn ilmoituksen tapauksessa).",
+                "Päivämäärä",
+                "(*) Tarpeeton yliviivataan."
+            ],
+            "heading": "§8 Peruutuslomake",
+            "subheading": "Näyte peruutuslomakkeesta"
+        },
+        {
+            "heading": "§9 Takuu",
+            "texts": [
+                "Sovelletaan lakisääteisiä takuusäännöksiä."
+            ]
+        },
+        {
+            "heading": "§10 Sopimuskieli",
+            "texts": [
+                "Sopimuskielinä ovat vain saksa ja englanti."
+            ]
+        },
+        {
+            "heading": "§11 Asiakaspalvelu",
+            "texts": [
+                "Asiakaspalvelumme on käytettävissä kysymyksiä, valituksia ja korvausvaatimuksia varten arkisin klo 9:00-16:00 seuraavissa osoitteissa:",
+                "Puhelin: +4951134000070\nFaksi: 0511 34 00 10 23\nSähköposti: https://metager.org/kontakt"
+            ]
+        }
+    ]
+}
diff --git a/pass/lang/fi/checkout.json b/pass/lang/fi/checkout.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..5b5bd7ab0991c8eec8c44157360ed8db46b8479b 100644
--- a/pass/lang/fi/checkout.json
+++ b/pass/lang/fi/checkout.json
@@ -1 +1,64 @@
-{}
\ No newline at end of file
+{
+    "payments": {
+        "cash": {
+            "name": "Käteinen",
+            "description": "Voit myös ladata avaimesi käteisellä. Lähetä meille postitse seuraava tilausnumero ja haluamasi rahasumma. Huomaa, että tilausnumeron on oltava luettavissa, jotta voimme käsitellä sen.",
+            "note": "Huomaa seuraavat seikat:",
+            "no-large-values": "Oman turvallisuutesi vuoksi älä lähetä meille postitse yli 100€. Emme ota mitään vastuuta kuljetusreitistä. Olet itse vastuussa siitä, että kirje saapuu meille.",
+            "no-coins": "Hyväksymme vain seteleitä. Älä lähetä kolikoita!",
+            "accepted-currencies": "Hyväksymme vain seuraavat valuutat: EUR, USD, CAD, GBP.",
+            "currency-translation": "Veloitamme aina euroina. Jos lähetät meille jonkin muun valuutan, lähetetty summa muunnetaan päivittäisen valuuttakurssin mukaan.",
+            "no-refund": "Sovellettavien rahanpesulakien vuoksi palautus tai palautus ei valitettavasti ole mahdollista. Kun olemme kuitenkin lähettäneet maksun, voit syöttää lähetetyn maksutunnuksen \"Tilaukset\"-kohdassa saadaksesi yleiskatsauksen tilauksesta ja/tai pyytää laskun.",
+            "order-id-heading": "Maksutunnuksesi",
+            "order-id-copy": "Kopioi maksutunnus",
+            "order-address-heading": "Lähetä kirje seuraavaan osoitteeseen ja merkitse maksun tunniste muistiin omia tietojasi varten.",
+            "order-address": "SUMA-EV\nRöselerstraße 3\n30159 Hannover\nSaksa",
+            "order-expiration": "Maksutunnus on voimassa osoitteeseen {{order_expiration}} asti. Tämän päivämäärän jälkeen sitä ei voi enää käyttää lataukseen.",
+            "order-unique": "Käytä maksutunnusta vain yhtä latausta varten. Saat uuden tunnuksen joka kerta, kun käyt tällä sivulla!",
+            "error": "Jokin meni pieleen tilausta luodessasi. Yritä myöhemmin uudelleen.",
+            "generate": "Luo maksutunnus"
+        },
+        "prepay": {
+            "name": "Pankkisiirto",
+            "email": {
+                "label": "Sähköpostiosoite",
+                "description": "Tähän osoitteeseen lähetetään kertaluonteisesti tiedot pankkitiedoistamme ja ilmoitus, kun maksu on suoritettu."
+            }
+        },
+        "sofort": {
+            "name": "Pankkisiirto"
+        }
+    },
+    "charge": {
+        "includes-vat": "sis. alv 7%",
+        "heading": "Valitse maksutapa",
+        "amount": "Valitse, kuinka monta merkkiä haluat ostaa.",
+        "month_one": "{{count}} Kuukausi",
+        "month_other": "{{count}} Kuukausi",
+        "not-available": "Valitettavasti valittu maksutapa ei ole käytettävissä alueellasi.",
+        "anonymous-payment": "Anonyymi maksu",
+        "paypal-privacy": "Tämän ryhmän maksutavat eivät yleensä vaadi PayPal-tiliä, mutta ne käsitellään siellä. Lisätietoja <a href=\"https://www.paypal.com/us/legalhub/privacy-full\" target=\"_blank\">tietosuojasta osoitteessa PayPal</a>."
+    },
+    "micropayment": {
+        "privacy": "Klikkaamalla \"Suorita maksu\" sinut ohjataan maksupalveluntarjoajallemme <a href=\"https://micropayment.de\" target=\"_blank\">MicroPayment</a> ostoksen suorittamista varten. Lisätietoja <a href=\"{{link}}\" target=\"_blank\">tietosuojasta osoitteessa {{link_text}}</a>.",
+        "submit": "Suorita maksu"
+    },
+    "paypal": {
+        "heading": "Suorita maksu",
+        "errors": {
+            "failed": "Maksu epäonnistui",
+            "invalid-card": "Tätä korttia ei valitettavasti tueta",
+            "expired-card": "Tämä kortti on vanhentunut",
+            "rejected": "Pankki on hylännyt maksusi.",
+            "3D": "3D-todennus epäonnistui"
+        },
+        "card": {
+            "number": "Kortin numero",
+            "expiration": "Voimassa asti",
+            "cvv": "CVV",
+            "label": "Luotto- / pankkikortti"
+        },
+        "submit": "Suorita maksu",
+        "loading": "Maksutapa on ladattu"
+    }
+}
diff --git a/pass/lang/fi/cost.json b/pass/lang/fi/cost.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..df58b26d509150ca580bda7fba726ae6bc8ee904 100644
--- a/pass/lang/fi/cost.json
+++ b/pass/lang/fi/cost.json
@@ -1 +1,45 @@
-{}
\ No newline at end of file
+{
+    "headings": [
+        "MetaGer-avain maksaa näin paljon",
+        "Tärkein yhteenveto"
+    ],
+    "texts": [
+        "Jokaisesta mainoksettomasta verkkohausta MetaGerissä veloitetaan <b>1 merkki</b>. Voit milloin tahansa täydentää avaimesi jollakin näistä token-paketeista."
+    ],
+    "months_one": "{{count}} Kuukausi",
+    "months_other": "{{count}} Kuukaudet",
+    "short-info": [
+        {
+            "heading": "Kortit ovat voimassa 2 vuotta",
+            "text": "Ostamasi merkit on suunniteltu pysymään voimassa, kunnes ne on käytetty loppuun. Kestotilausta ei ole."
+        },
+        {
+            "heading": "30 päivän rahat takaisin -takuu",
+            "text": "Jos olet tyytymätön avaimeen, sinulla on 30 päivää ostopäivästä aikaa palauttaa käyttämätön hyvitys."
+        },
+        {
+            "heading": "Avain asetetaan automaattisesti ja sitä käytetään selaimessa.",
+            "text": "Sinun ei tarvitse tehdä mitään muuta, jotta voit käyttää MetaGer-avainta haussa. Kun olet ladannut sen, se otetaan automaattisesti käyttöön selaimessasi, ja saat tietoa siitä, miten se voidaan helposti ottaa käyttöön lisälaitteissa."
+        },
+        {
+            "heading": "Yhtä anonyymi kuin haku ilman avainta.",
+            "text": "Käytä <a href=\"#\">Android-sovellustamme</a>, tai pian laajennustamme ja ole todistettavasti yhtä anonyymi tien päällä käyttämällä <a href=\"{{linktokens}}\">anonyymiä tunnusta</a> kuin ilman avainta."
+        }
+    ],
+    "pricing": {
+        "heading": "Hintamme muodostuvat seuraavasti",
+        "texts": [
+            "Suurin osa tuloistamme virtaa suoraan hakupalveluihin, joita kysyt. Haluamme tarjota kestävän konseptin, mikä tarkoittaa, että hakupalveluille ei aiheudu taloudellista vahinkoa siitä, että ne tarjoavat nimettömiä ja mainoksettomia hakutuloksia MetaGerille. Lisäksi on olemassa osuus, jolla katetaan henkilöstö- ja palvelinkustannuksiamme, ja tietysti maksupalveluntarjoajien maksut ja verot sisältyvät hintoihin.",
+            "Valitsemalla hakupalvelut, joita haetaan, voit siis paitsi määrittää omat kustannuksesi myös päättää samalla, mitä hankkeita haluat tukea. Siksi myös token-pohjainen laskutus."
+        ]
+    },
+    "payment-methods": {
+        "heading": "Maksutavat",
+        "texts": [
+            "MetaGer-avaimet on suunniteltu siten, että ne eivät vaadi henkilötietoja. Viimeistään maksun suorittamisen yhteydessä tarvitaan kuitenkin yleensä joitakin tietoja. Olkoon se sitten maksutilin IBAN-tili tai käytetyn PayPal-tilin sähköpostiosoite. SUMA-EV ei käsittele näitä tietoja itse eikä tallenna niitä. Maksutavan mukaan maksupalveluntarjoaja kuitenkin tekee niin.",
+            "Tämän vuoksi maksutapamme on määritetty siten, että käyttäjätietoja on kerättävä mahdollisimman vähän ja joissakin tapauksissa niitä ei tarvitse kerätä lainkaan."
+        ],
+        "anonymous": "Anonyymit maksutavat",
+        "more": "Muut maksutavat"
+    }
+}
diff --git a/pass/lang/fi/help.json b/pass/lang/fi/help.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0e883ad371a3b13defc215c6514e0142f084cc0c 100644
--- a/pass/lang/fi/help.json
+++ b/pass/lang/fi/help.json
@@ -1 +1,93 @@
-{}
\ No newline at end of file
+{
+    "anonymous-token": {
+        "heading": "Anonyymit merkit",
+        "description": {
+            "heading": "Mitä ovat anonyymit merkit?",
+            "text": "Jos käytät MetaGer-avainta, saat satunnaisesti generoidun salasanan, jonka selaimesi lähettää meille jokaisen hakukyselyn yhteydessä, jotta voimme mahdollistaa mainoksetonta hakua. Jos käytät <a href=\"{{linkAndroidApp}}\" target=\"_blank\">Android-sovellustamme</a> tai verkkolaajennustamme <a href=\"#\" target=\"_blank\" rel=\"noopener\">Chromeen</a> ja <a href=\"#\" target=\"_blank\" rel=\"noopener\">Firefoxiin</a>, selaimesi lähettää meille salasanan sijasta satunnaisesti generoidun salasanan (anonyymin tunnisteen) jokaisen hakupyynnön yhteydessä tunnistautumista varten, joka luodaan paikallisesti. Näin varmistetaan, että jokainen salasana on yksilöllinen eikä sillä ole yhteyttä varsinaiseen MetaGer-avaimeen eikä yksittäisten salasanojen välillä."
+        },
+        "problem": {
+            "heading": "Mikä ongelma nimettömillä tunnuksilla on tarkoitus ratkaista?",
+            "text": "Jos selaimesi lähettää meille aina saman salasanan jokaisen hakukyselyn yhteydessä, meillä olisi ainakin teoriassa mahdollisuus luoda korrelaatio kaikkien samalla avaimella tehtyjen hakujen välille. Vaikka emme tekisikään niin, luottamus olisi tietysti silti tarpeen, jotta voisimme olla varmoja anonyymistä hausta. Jotta meidän ei tarvitsisi vain luvata anonyymiä hakua, vaan voisimme myös todistaa sen, olemme ottaneet käyttöön anonyymit tunnukset."
+        },
+        "general-function": {
+            "heading": "Miten se toimii?",
+            "texts": [
+                "Haluamme siis, että kertakäyttösalasanat luodaan suoraan päätelaitteestasi, jonka sitten lähetät meille todennusta varten hakujen aikana. Jokaisen päätelaitteessasi olevan anonyymin tunnuksen osalta meidän on kuitenkin varmistettava, että MetaGer-avaimestasi on vähennetty tavallinen tunnus, ilman että (ja tämä on asian ydin) meille kerrotaan, mitä MetaGer-avainta käytettiin anonyymin tunnuksen tuottamiseen.",
+                "Perinteisesti käytämme tähän tarkoitukseen jonkinlaista kryptografista allekirjoitusta. Tässä tapauksessa allekirjoittaisimme luodun anonyymin tunnisteen. Kun lähetät meille myöhemmin nimettömän tunnisteen ja allekirjoituksen, voimme olla varmoja, että nimettömät tunnisteet ovat voimassa. Allekirjoituksen saamiseksi olisit kuitenkin lähettänyt meille nimettömän merkin yhdessä oikean avaimesi kanssa, mikä tekisi nimettömyyden tyhjäksi.",
+                "Sen vuoksi käytämme sen sijaan muunnettua salakirjoituksen muotoa, niin sanottua <a href=\"https://en.wikipedia.org/wiki/Blind_signature\" target=\"_blank\">sokeaa allekirjoitusta</a>. Todellisen elämän analogian luomiseksi se on kuin lähettäisi meille nimettömän merkkisi hiilipaperikuoressa. Tässä esimerkissä emme pystyisi avaamaan kirjekuorta, mutta voisimme allekirjoittaa sen ulkopuolelta, jolloin allekirjoituksemme siirtyisi sisällä olevaan anonyymiin merkkiin. Kun saat kirjekuoren takaisin, voit poistaa sen ja lähettää meille salasanan ja allekirjoituksen takaisin myöhemmin. Voisimme sitten vahvistaa, että kyseessä on todellakin meidän allekirjoituksemme.",
+                "Itse asiassa tämä vertaus on hieman harhaanjohtava, koska todellisessa prosessissa, kun lähetät meille nimettömän tunnisteen ja allekirjoituksen, emme ole koskaan nähneet nimettömiä tunnuksia emmekä myöskään itse allekirjoitusta. Silti voimme varmistaa, että allekirjoitus on meidän tuottamamme."
+            ]
+        },
+        "meaning": {
+            "heading": "Mitä tämä tarkoittaa todennettujen hakujen kannalta?",
+            "texts": [
+                "Käyttämällä kuvattua algoritmia me ja sinä voimme varmistaa, että joka kerta todennetuissa hauissa käytetään uutta satunnaista salasanaa, joka ei liity MetaGer-avaimeesi.",
+                "Erityistä tässä algoritmissa on se, että kaikki anonymiteetin varmistavat osat suoritetaan paikallisesti laitteessasi. Kuka tahansa voi milloin tahansa tarkastella ja tarkistaa tämän suoritetun lähdekoodin.",
+                "Mikä parasta, sinun ei tarvitse määrittää mitään anonyymien tunnisteiden käyttöä varten. Pelkkä selainlaajennuksemme tai Android-sovelluksemme asentaminen/käyttö riittää, jotta laitteesi käyttää anonyymejä tunnuksia kaikissa hauissa."
+            ]
+        },
+        "technical-function": {
+            "heading": "Algoritmi sen takana:",
+            "texts": [
+                "Klassisessa RSA-allekirjoituksessa otamme anonyymin tunnuksen <code>m</code>, salaisen eksponentin <code>d</code> ja julkisen moduulin <code>N</code> yksityisestä avaimestamme ja luomme allekirjoituksen käyttäen <code>m^d (mod N)</code>. Haluamme kuitenkin, että <code>m</code> pysyy salassa.",
+                "Siksi päätelaitteesi luo satunnaislukugeneraattorilla satunnaisluvun <code>r</code>, joka on jakajasta riippumaton suhteessa <code>N</code>. <code>r</code> ja <code>N</code> suurimman yhteisen jakajan on siis oltava <code>1</code>.",
+                "Koska <code>r</code> on satunnaisluku, seuraa, että <code>m'</code> ei paljasta mitään tietoa paikallisesti tallennetusta nimettömästä tunnuksesta <code>m</code>.",
+                "Palvelimemme vastaanottaa nyt päätelaitteeltasi peitetyn anonyymin tunnisteen <code>m'</code> sekä käytettävän MetaGer-avaimen. Vähennämme avaimesta merkin ja lähetämme myös peitetyn allekirjoituksen <code>s'&Congruent; (m')^d (mod N)</code> takaisin päätelaitteellesi.",
+                "Päätelaitteesi voi nyt laskea todellisen kelvollisen RSA-allekirjoituksen <code>s</code> salaamattomalle nimettömälle tunnukselle: <code>s&Congruent; s' r^-1 (mod N)</code>. Tämä toimii, koska RSA-avaimilla <code>r^(e*d)&Congruent; r (mod N)</code>. Ja siis myös: <code>s &Congruent; s' * r^-1 &Congruent; (m')^d*r^-1 &Congruent; m^d*r^(e*d)*r^-1 &Congruent; m^d*r*r^-1 &Congruent; m^d (mod N)</code>.",
+                "Loppulaitteesi lähettää meille nyt salaamattoman anonyymin tunnisteen ja siihen liittyvän allekirjoituksen hakua varten. Itse avainta ei enää lähetetä meille haun aikana."
+            ]
+        }
+    },
+    "faq": {
+        "faqs": [
+            {
+                "summary": "Miten MetaGer-avain toimii?",
+                "description": "MetaGer-avaimella haet ilman mainoksia. Saat merkkejä, joista vähennetään yksi haku per haku. Kun käytät MetaGer-avainta, kaikki ominaisuudet, jotka suojaavat MetaGeria automaattisilta puheluilta, poistetaan käytöstä. Tämä tarkoittaa, että et näe captcha-pyyntöjä eikä IP-osoitettasi säilytetä rajoitetun ajan. Yksinkertaisesti sanottuna tämä tekee MetaGeristä nopeamman, luotettavamman ja turvallisemman."
+            },
+            {
+                "summary": "Miten anonyymi merkki toimii?",
+                "description": "Voit käyttää anonyymiä tunnusta selainlaajennuksellamme (tekeillä) tai sovelluksellamme. Näin voit tehdä hakuja entistäkin turvallisemmin MetaGerillä. Kun käytät anonyymiä tokenia, osa luottotiedoistasi satunnaisten salasanojen muodossa tallennetaan laitteeseesi. Monimutkaisen salausprosessin <a href=\"{{tokenlink}}\"></a> avulla edes meidän on mahdotonta yhdistää suoritettuja hakuja toisiinsa tai avaimeesi."
+            },
+            {
+                "steps": [
+                    {
+                        "description": "Kun olet MetaGerin avainten hallintasivulla, siellä on mahdollisuus kopioida URL-osoite. Tämän URL-osoitteen avulla kaikki MetaGerin asetukset sekä MetaGer-avain voidaan tallentaa toiseen laitteeseen.",
+                        "heading": "Kopioi URL-osoite"
+                    },
+                    {
+                        "heading": "Tallenna tiedosto",
+                        "description": "Kun olet MetaGerin avainten hallintasivulla, siellä on mahdollisuus tallentaa tiedosto. Tämä tallentaa MetaGer-avaimesi tiedostoksi. Voit sitten käyttää tätä tiedostoa toisessa laitteessa kirjautuaksesi sinne avaimellasi."
+                    },
+                    {
+                        "heading": "Skannaa QR-koodi",
+                        "description": "Vaihtoehtoisesti voit myös skannata hallintasivulla näkyvän QR-koodin kirjautuaksesi sisään toisella laitteella."
+                    },
+                    {
+                        "heading": "Syötä MetaGer-avain manuaalisesti",
+                        "description": "Voit tietysti syöttää avaimen myös manuaalisesti toisella laitteella."
+                    }
+                ],
+                "summary": "Miten käytän MetaGer-avainta?",
+                "description": "MetaGer-avain otetaan automaattisesti käyttöön ja sitä käytetään selaimessa. Sinun ei siis tarvitse tehdä mitään muuta. Jos haluat käyttää MetaGer-avainta muissa laitteissa, on useita tapoja määrittää MetaGer-avain:"
+            },
+            {
+                "summary": "Olen tyytymätön MetaGer-avaimeen. Mitä voin tehdä?",
+                "description": "Tässä tapauksessa voit pyytää hyvitystä käyttämättömistä poleteista 30 päivän kuluessa ostopäivästä. Tätä varten tarvitset maksutunnuksesi. Voit pyytää hyvitystä avaamalla MetaGerin avainten hallintasivun. Napsauta siellä \"Tilaukset\"-valikkokohtaa ja syötä maksutunnuksesi. Sen jälkeen voit napsauttaa painiketta \"Pyydä hyvitystä\" ja lähettää hyvityspyynnön."
+            },
+            {
+                "summary": "Miten voin tehdä hakuja täysin anonyymisti?",
+                "description": "Yksityisyytesi ja nimettömyytesi ovat meille erittäin tärkeitä. Siksi tarjoamme nimettömiä maksutapoja (käteinen). Tarjoamme myös <a href=\"{{tokenlink}}\">anonyymien polettien</a> käyttöä, joita he voivat käyttää jopa hakuun todennettavasti anonyymisti."
+            },
+            {
+                "summary": "Tarvitsen laskun. Miten saan sen?",
+                "description": "Tätä varten tarvitset vain maksutunnuksesi. Voit pyytää laskua avaamalla MetaGer-avaimen hallintasivun. Siellä napsautat \"Tilaukset\"-valikkokohtaa ja syötät maksutunnuksesi. Nyt voit napsauttaa painiketta \"Pyydä lasku\" ja käynnistää laskupyynnön. Laskua varten tarvitsemme koko nimesi, sähköpostiosoitteesi ja osoitteesi."
+            },
+            {
+                "summary": "Haluaisin ladata MetaGer-avaimeni automaattisesti. Miten se tehdään?",
+                "description": "Jäsenillemme jäsenyyteen sisältyvä avain täydennetään automaattisesti kuukausittain. Avaimen määrä riippuu tässä tapauksessa maksetusta jäsenmaksusta."
+            }
+        ],
+        "heading": "Miten MetaGer-avain toimii?",
+        "more-questions": "Onko teillä muita kysymyksiä? Käytä sitten rohkeasti <a href=\"{{contactlink}}\" target=\"_blank\">yhteydenottolomakettamme</a>."
+    }
+}
diff --git a/pass/lang/fi/index.json b/pass/lang/fi/index.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..fbfb8c4146d2d2941811081127bd4002c671861e 100644
--- a/pass/lang/fi/index.json
+++ b/pass/lang/fi/index.json
@@ -1 +1,55 @@
-{}
\ No newline at end of file
+{
+    "hero": {
+        "title": "Pääset parhaaseen yksityisyyden suojaan verkkohaussa",
+        "description": "MetaGer-avaimen avulla voit nauttia Internet-hakemisesta niin kuin sen pitäisi aina olla:",
+        "advantages": {
+            "ads": "Ilman mainontaa",
+            "tracking": "Ilman seurantalinkkejä",
+            "logging": "Ilman kirjaamista",
+            "compromise": "Ilman kompromisseja"
+        },
+        "searchbarplaceholder": "Anonyymi Internetissä",
+        "calltoaction": "Miten se toimii"
+    },
+    "advantages": {
+        "ads": {
+            "heading": "Ilman mainoksia",
+            "description": "Mainokset ja yksityisyys eivät yleensä sovi yhteen. Vaikka pyrimme aina saamaan sinulle parhaan mahdollisen hyödyn tekemällä mainoksistamme mahdollisimman yksityisyydensuojaystävällisiä, meidän on myös <a href='{{privacylink}}' target='_blank'>laskettava tavoitteitamme</a>. Mainokseton haku tarjoaa järkevän vaihtoehdon, jotta voimme täyttää korkeat vaatimuksemme ilman kompromisseja.",
+            "ads": "Mainonta",
+            "tracking": "Seurantalinkit"
+        },
+        "logging": {
+            "heading": "Ilman kirjaamista",
+            "description": "Internet-hakusi tuottavat automaattisesti paljon tietoa. Niitä vähäisiä tietoja, jotka perinteisesti joudumme kirjaamaan, käytetään roskapostin torjuntaan. MetaGer-avain tekee siitäkin tarpeetonta. Et myöskään enää kohtaa captchoja.",
+            "logging": "Kirjaaminen"
+        },
+        "compromise": {
+            "heading": "Ilman kompromisseja",
+            "description": "MetaGerissä ei ole käyttäjätilejä. Saat meiltä satunnaisesti luodun avaimen. Yhteystietoja ei tarvita. Maksutapojemme <a href=\"{{linkPaymentMethods}}\"></a> avulla keräämme vain maksujen käsittelyyn tarvittavat tiedot. Jos käytät <a href=\"/app\">Android-sovellustamme</a> tai pian selainlaajennustamme, käytät myös <a href=\"{{linktoken}}\"> anonyymiä tunnusta</a>, joka on todistettavasti yhtä anonyymi kuin ilman avainta.",
+            "compromise": "Kompromissit"
+        },
+        "efficiency": {
+            "heading": "Tehokkaampi haku",
+            "description": "Löydät etsimäsi entistä nopeammin. Tarvittaessa integroimme hakutuloksiin selkeästi järjestettyjä syvälinkkejä, asiaankuuluvia uutisia ja videoita. Kuvahakuamme on myös parannettu lisälähteillä."
+        }
+    },
+    "howitworks": {
+        "heading": "Miten se toimii",
+        "steps": [
+            {
+                "heading": "Luo MetaGer-avain",
+                "description": "Avaimesi on ainoa asia, jota tarvitset mainoksetonta hakua varten. Se luodaan sinulle automaattisesti. Emme vaadi mitään yhteystietoja."
+            },
+            {
+                "heading": "Latausmerkki",
+                "description": "Avaimesi aktivoidaan kertamaksulla <a href=\"{{linkCost}}\" target=\"_blank\"></a> . Sen jälkeen sitä käytetään automaattisesti. MetaGeristä on nyt poistettu kaikki mainonta, ja saat käyttöösi tulokset kaikista saatavilla olevista lähteistä. 500 poletin (5 €) luotto riittää yleensä lähes 2 kuukaudeksi."
+            },
+            {
+                "heading": "Käytä avainta niin monessa laitteessa kuin haluat.",
+                "description": "Avainta voi käyttää niin monessa laitteessa kuin haluat. Voit myös jakaa sen ystävien/sukulaisten kanssa. Mene vain laitteellasi osoitteeseen <a href=\"https://metager.de\" target=\"_blank\">MetaGer</a>, syötä avaimesi napsauttamalla hakupalkin vieressä olevaa avainkuvaketta ja olet valmis käyttämään sitä."
+            }
+        ],
+        "start": "Luo MetaGer-avain nyt!",
+        "login": "Minulla on jo avain"
+    }
+}
diff --git a/pass/lang/fi/invoice.json b/pass/lang/fi/invoice.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..c6f8154e6c156a77c0296b5d7d79e1569add7d96 100644
--- a/pass/lang/fi/invoice.json
+++ b/pass/lang/fi/invoice.json
@@ -1 +1,53 @@
-{}
\ No newline at end of file
+{
+    "order": "Tilausnumero",
+    "phone": "Puhelin",
+    "mail-address": "support+46521@metager.de",
+    "domain": "metager.org",
+    "vatid": "Ust-ID",
+    "invoice_date": "Laskun päivämäärä",
+    "product": "MetaGer Key: Token",
+    "purchase_date": "Palvelupäivä",
+    "count": "Määrä",
+    "details": "Tilauksen tiedot",
+    "vat": "ALV ({{vat}}%)",
+    "total": "Kokonaismäärä",
+    "price": "Hinta",
+    "currency-exchange": "Valuuttakurssi",
+    "payment-received": "Laskun summa vastaanotettu kiitoksin!",
+    "board": "Hallitus",
+    "registrar": "Kirjaamo",
+    "registered-at": "Hanoverin paikallistuomioistuin",
+    "form": {
+        "heading": "Lasku",
+        "breadcrumps": {
+            "orders": "Tilaukset",
+            "receipt": "Lasku"
+        },
+        "description": "Jos tarvitset laskun, anna laskutustietosi alla olevalla lomakkeella. Tarvitsemme koko nimesi, postiosoitteesi ja sähköpostiosoitteesi, jotta voimme lähettää sinulle laskun.",
+        "company": {
+            "label": "Yrityksen nimi (vapaaehtoinen)",
+            "placeholder": "Mikä tahansa yritys"
+        },
+        "name": {
+            "label": "Koko nimi",
+            "placeholder": "John Sample"
+        },
+        "mail": {
+            "label": "Sähköposti"
+        },
+        "address": {
+            "label": "Osoite",
+            "placeholder": "Mikä tahansa katu 3&#10;3015 Mikä tahansa kaupunki&#10;Saksassa"
+        },
+        "submit": "Laskupyyntö",
+        "storage": "Meillä on lakisääteinen velvollisuus säilyttää kerran laaditut laskut <span class=\"bold\">10 vuotta</span>. Koska lasku on osoitettava sinulle henkilökohtaisesti, se sisältää välttämättä henkilötietoja (nimi, osoite, sähköpostiosoite).",
+        "success": "Viestisi on toimitettu meille. Käsittelemme pyynnön mahdollisimman pian ja vastaamme tiedostossa olevaan sähköpostiosoitteeseen."
+    },
+    "title_order": "Tilaa {{orderid}}",
+    "title_invoice": "Kuitti {{orderid}}",
+    "author": "SUMA-EV - Association for Free Access to Knowledge - yhdistys tiedon vapaasta saatavuudesta",
+    "subject": "MetaGer-avain: token (x{amount}})",
+    "invoice": "Lasku",
+    "payment_reference_id": "Maksun tunnus",
+    "order-confirmation": "Tilausvahvistus"
+}
diff --git a/pass/lang/fi/key.json b/pass/lang/fi/key.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..644a1882611998192927d434dd57d577da24eee2 100644
--- a/pass/lang/fi/key.json
+++ b/pass/lang/fi/key.json
@@ -1 +1,32 @@
-{}
\ No newline at end of file
+{
+    "charge": {
+        "full": "Avaimesi on jo ladattu täyteen. Voit tehdä uuden latauksen, kun joitakin hakuja on käytetty."
+    },
+    "key": {
+        "copy-url": "Kopioi URL-osoite",
+        "transfer-key": "Luo kirjautumiskoodi",
+        "share": {
+            "title": "MetaGer-avain",
+            "share": "Jaa"
+        },
+        "transfer": {
+            "title": "MetaGer-avaimen siirtäminen muihin laitteisiin",
+            "description": "Alla näytetään lyhyt kertakäyttösalasana, jota voit käyttää muissa laitteissa kirjautumiseen. Käytä tätä varten tavallista kirjautumislomaketta, johon pääset hakukentän vieressä olevan avainkuvakkeen kautta, ja syötä tämä koodi sinne avaimen sijasta.",
+            "close": "Sulje"
+        },
+        "store": "Tallenna tiedostoon",
+        "tokens": "Merkki",
+        "fill": "Lataus",
+        "orders": "Tilaukset",
+        "valid_until": "voimassa kunnes",
+        "new": {
+            "heading": "Näin se jatkuu",
+            "text": "MetaGer-avaimesi on luotu ja määritetty. Se on vain ladattava. Varmista etukäteen, että olet tallentanut avaimen, jotta voit syöttää sen, jos selaimesi asetus poistetaan. Tätä varten tarvitset joko itse avaimen, yllä olevan URL-osoitteen tai QR-koodin tiedostona.",
+            "charge": "Lataa avain nyt"
+        },
+        "startpagelinks": {
+            "adfree": "Mainokseton haku",
+            "regular": "MetaGer-hakuun"
+        }
+    }
+}
diff --git a/pass/lang/fi/login.json b/pass/lang/fi/login.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..6cb75af2ae4b2c58214ad5837ac815cde5cf6ffd 100644
--- a/pass/lang/fi/login.json
+++ b/pass/lang/fi/login.json
@@ -1 +1,17 @@
-{}
\ No newline at end of file
+{
+    "key-input": {
+        "placeholder": "Enter-näppäin"
+    },
+    "or": "tai",
+    "heading": "Enter-näppäin",
+    "upload-file": "Lataa varmuuskopiotiedosto",
+    "scan-qr": {
+        "button": "Skannaa QR-koodi",
+        "no-camera": "Kameraa ei ole käytettävissä",
+        "invalid-qr": "QR-koodi ei sisällä kelvollisia tietoja.",
+        "close": "Sulje"
+    },
+    "submit": "Lähetä",
+    "create": "Aseta mainokseton haku",
+    "error": "Tarvitaan voimassa oleva avain tai voimassa oleva varmuuskopiotiedosto."
+}
diff --git a/pass/lang/fi/order.json b/pass/lang/fi/order.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..8d5c6d09b5c485282cdf85b6d3333371bc756486 100644
--- a/pass/lang/fi/order.json
+++ b/pass/lang/fi/order.json
@@ -1 +1,70 @@
-{}
\ No newline at end of file
+{
+    "product": {
+        "itemname_one": "{{count}} MetaGer Token",
+        "itemname_other": "{{count}} MetaGer Token",
+        "name": "MetaGer avain",
+        "description": "MetaGer Key MetaGer-hakukoneen mainoksetonta käyttöä varten."
+    },
+    "breadcrumps": {
+        "orders": "Tilaukset"
+    },
+    "summary": {
+        "thankyou": "Kiitos ostoksestasi!",
+        "actions": {
+            "order-confirmation": "Lataa tilausvahvistus",
+            "receipt": "Vastaanottopyyntö",
+            "download-receipt": "Lataa kuitti",
+            "refund": "Pyydä palautusta"
+        },
+        "receipt": "Tarvitsetko laskun? Nyt on paras aika pyytää sellainen. Vaihtoehtoisesti voit palauttaa tämän yleiskatsauksen myöhemmin syöttämällä maksutunnuksesi ({{payment_reference_id}})."
+    },
+    "details": {
+        "header": {
+            "details": "Tilausnumero ({{order_id}}) alkaen {{order_date}} UTC",
+            "count": "Määrä",
+            "price": "Hinta"
+        },
+        "item": "MetaGer Key: Token",
+        "vat": "ALV ({{vat}}%)",
+        "total": "Kokonaismäärä",
+        "exchangerate": "Valuuttakurssi"
+    },
+    "orders": {
+        "description": "Kirjoita jonkin tilauksesi maksutunnus alla olevaan kenttään nähdäksesi sen tiedot.",
+        "placeholder": "Maksun tunnus",
+        "submit": "Kuormatilaukset",
+        "400": "Virheellinen maksutunnus",
+        "404": "Maksutunnusta ei löydy"
+    },
+    "revocation": {
+        "input": {
+            "label": "Suostun nimenomaisesti siihen, että sopimus pannaan täytäntöön ennen peruuttamisajan päättymistä. Ymmärrän, että <a href=\"{{revocation_link}}\" target=\"_blank\">peruuttamisoikeus</a> päättyy, kun sopimuksen toteuttaminen aloitetaan. Sen sijaan myönnämme sinulle vapaaehtoisen <a href=\"{{refundlink}}\" target=\"_blank\">30 päivän palautusoikeuden</a>.",
+            "error": "Tämä kenttä on pakollinen"
+        }
+    },
+    "agb": {
+        "text": "Jatkaessasi ostamista hyväksyt <a href=\"{{agblink}}\" target=\"_blank\">käyttöehdot</a>."
+    },
+    "refund": {
+        "breadcrumps": {
+            "orders": "Tilaukset",
+            "refund": "Palautus"
+        },
+        "success": "Pyyntösi on lähetetty meille onnistuneesti. Käsittelemme sen mahdollisimman pian. Maksutavasta riippuen voi kestää muutaman päivän ennen kuin hyvitys näkyy myynnissäsi.",
+        "errors": {
+            "already_refunded": "Tästä tilauksesta on jo pyydetty hyvitystä.",
+            "generic": "Virhe viestin lähettämisessä. Yritä myöhemmin uudelleen."
+        },
+        "headings": [
+            "Tukesi"
+        ],
+        "texts": [
+            "Oletko tyytymätön avaimeesi? Olemme hyvin pahoillamme siitä! Tietenkin hyvitämme laskun summan tässä tapauksessa. Palautus tehdään aina samalle tilille, jota käytettiin alkuperäisessä maksussa. Otamme mielellämme vastaan myös kritiikkisi.",
+            "Huomaa: Osa ostamastasi hyvityksestä on jo käytetty. Siksi voimme hyvittää sinulle vain <span class=\"bold\">{{count}}/{payment_count}}</span> hakuja."
+        ],
+        "message": {
+            "placeholder": "Viestisi (vapaaehtoinen)"
+        },
+        "submit": "Pyydä palautusta"
+    }
+}
diff --git a/pass/lang/fi/pageheader.json b/pass/lang/fi/pageheader.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..0b9dd7db72baa41db23926178b6159eeb0cb4b56 100644
--- a/pass/lang/fi/pageheader.json
+++ b/pass/lang/fi/pageheader.json
@@ -1 +1,22 @@
-{}
\ No newline at end of file
+{
+    "chat": {
+        "button": "Kysymyksiä? Autamme mielellämme!",
+        "title": "Keskustele kanssamme!"
+    },
+    "title": "MetaGer avain",
+    "leftnav": {
+        "informations": "Tiedot",
+        "price": "Hinta",
+        "help": "Apua"
+    },
+    "rightnav": {
+        "manage": "Hallitse avainta",
+        "logout": "Kirjaudu ulos",
+        "enter": "Enter-näppäin",
+        "start": "Aloita"
+    },
+    "footer": {
+        "impress": "Jälki",
+        "privacy": "Yksityisyys"
+    }
+}
diff --git a/pass/lang/pl/admin.json b/pass/lang/pl/admin.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..c37167803d05dba6a18c61418b410392f8c28cdc 100644
--- a/pass/lang/pl/admin.json
+++ b/pass/lang/pl/admin.json
@@ -1 +1,78 @@
-{}
\ No newline at end of file
+{
+    "breadcrumps": {
+        "key-management": "ZarzÄ…dzanie kluczami",
+        "overview": "PrzeglÄ…d",
+        "payments-cash": "Wprowadź płatność gotówką",
+        "receipt": "Tworzenie faktury"
+    },
+    "cash-payment": {
+        "payment_reference": {
+            "placeholder": "123456789",
+            "label": "Identyfikator płatności:"
+        },
+        "converted-price": {
+            "label": "Otrzymana kwota",
+            "placeholder": "10,00"
+        },
+        "info": "Wprowadź tutaj otrzymane płatności gotówkowe, aby zaksięgować powiązane zlecenia zakupu.",
+        "price": {
+            "placeholder": "10,00",
+            "label": "Kwota w euro",
+            "calculate": "Obliczanie bieżącego kursu wymiany"
+        },
+        "submit": "Zamówienie książki",
+        "success": "Zamówienie o numerze {{orderid}} zostało pomyślnie zaksięgowane."
+    },
+    "receipt": {
+        "name": {
+            "label": "Pełna nazwa:"
+        },
+        "orderid": {
+            "label": "Numer zamówienia ({{orderdate}}):",
+            "placeholder": "Wprowadź numer zamówienia…",
+            "submit": "Kolejność ładowania"
+        },
+        "company": {
+            "label": "Firma:"
+        },
+        "email": {
+            "label": "E-mail"
+        },
+        "address": {
+            "label": "Adres"
+        },
+        "submit-userdata": "Przejęcie danych faktury"
+    },
+    "index": {
+        "heading": "MetaGer Key Admin",
+        "actions": {
+            "cash-payment": "Rejestrowanie płatności gotówkowych",
+            "heading": "Działania:",
+            "receipt": "Tworzenie faktury",
+            "keymanagement": "ZarzÄ…dzanie kluczami"
+        }
+    },
+    "key": {
+        "key-input": {
+            "label": "Klawisz Enter",
+            "submit": "Prześlij"
+        },
+        "key-overview": {
+            "charge": "Kredyt: {{token}}",
+            "charge-success": "Ładowanie zakończone sukcesem",
+            "delete": "Usuń",
+            "expiration": "Ważne do {{expiration}}",
+            "charge-form": {
+                "heading": "Ładowanie ręczne",
+                "hint": "Ręczne doładowanie nie wymaga wpłaty. Kredyt jest po prostu przyznawany bez żadnych płatności w zamian. Używaj ostrożnie!",
+                "amount": {
+                    "label": "Ilość"
+                },
+                "price": {
+                    "label": "Kwota (€)"
+                },
+                "submit": "Naładuj teraz!"
+            }
+        }
+    }
+}
diff --git a/pass/lang/pl/agb.json b/pass/lang/pl/agb.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..7272ae037f509a6c92ec968b5b20ae37b402a6e3 100644
--- a/pass/lang/pl/agb.json
+++ b/pass/lang/pl/agb.json
@@ -1 +1,133 @@
-{}
\ No newline at end of file
+{
+    "heading": "Ogólne Warunki Stowarzyszenia SuMa-eV - Stowarzyszenie na rzecz Wolnego Dostępu do Wiedzy",
+    "date": "Status GTC",
+    "paragraphs": [
+        {
+            "heading": "§1 Zastosowanie do przedsiębiorców i definicje pojęć",
+            "paragraphs": [
+                "(1) Poniższe Ogólne Warunki Handlowe mają zastosowanie do wszystkich dostaw między nami a konsumentem w wersji obowiązującej w momencie składania zamówienia.",
+                "Konsumentem jest każda osoba fizyczna, która dokonuje czynności prawnej w celach, które w przeważającej mierze nie mogą być przypisane ani do jej działalności gospodarczej, ani do jej niezależnej działalności zawodowej (§ 13 BGB)."
+            ]
+        },
+        {
+            "heading": "§2 Zawarcie umowy, przechowywanie tekstu umowy",
+            "paragraphs": [
+                "(1) Poniższe przepisy dotyczące zawarcia umowy mają zastosowanie do zamówień składanych za pośrednictwem naszego sklepu internetowego https://metager.org.",
+                "(2) W przypadku zawarcia umowy, umowa jest zawierana z następującym podmiotem:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hanower\nNumer rejestracyjny VR200033\nSąd rejestrowy Sąd okręgowy w Hanowerze",
+                "(3) Prezentacja towarów w naszym sklepie internetowym nie stanowi prawnie wiążącej oferty umowy z naszej strony, ale jest jedynie niewiążącym zaproszeniem konsumenta do zamówienia towarów. Zamawiając pożądane towary, konsument składa wiążącą ofertę zawarcia umowy kupna.",
+                "(4) Po otrzymaniu zamówienia w naszym sklepie internetowym obowiązują następujące postanowienia: Konsument składa wiążącą ofertę zawarcia umowy poprzez pomyślne zakończenie procedury zamówienia przewidzianej w naszym sklepie internetowym.",
+                "Zamówienie jest składane w następujących krokach:",
+                [
+                    "Wybór żądanej liczby wyszukiwań",
+                    "Wybór żądanej metody płatności",
+                    "Potwierdzenie wiążącego zakupu poprzez dokonanie płatności"
+                ],
+                "Przed wiążącym złożeniem zamówienia konsument może, naciskając przycisk \"wstecz\" znajdujący się w używanej przez niego przeglądarce internetowej, po sprawdzeniu swoich danych, powrócić do strony internetowej, na której zapisane są dane klienta i poprawić wprowadzone błędy lub anulować proces składania zamówienia poprzez zamknięcie przeglądarki internetowej. Otrzymanie zamówienia potwierdzamy niezwłocznie poprzez podsumowanie zamówienia i możliwość pobrania potwierdzenia zamówienia."
+            ]
+        },
+        {
+            "heading": "§3 Ceny, koszty wysyłki, płatności, termin płatności",
+            "paragraphs": [
+                "(1) Podane ceny zawierają ustawowy podatek od towarów i usług oraz inne składniki ceny.",
+                "(2) Konsument ma możliwość płatności gotówką, Giropay, Sofort, Przelewy24, Bancontact, Blik, Eps, Ideal, Mybank, PayPal, kartą kredytową (Visa, Mastercard, American Express).",
+                "(3) Jeśli konsument wybrał płatność z góry, zobowiązuje się zapłacić cenę zakupu natychmiast po zawarciu umowy."
+            ]
+        },
+        {
+            "heading": "§4 Dostawa",
+            "paragraphs": [
+                "(1) O ile w opisie produktu nie zaznaczono wyraźnie inaczej, wszystkie oferowane przez nas produkty są gotowe do natychmiastowej wysyłki. Ponieważ jest to usługa, wysyłka nie jest konieczna i zostanie zrealizowana natychmiast.",
+                "(2) Zakupiony produkt jest dostarczany przez nas przez okres 2 lat od daty zakupu. Po upływie tego okresu dalsze użytkowanie nie jest możliwe."
+            ]
+        },
+        {
+            "heading": "§5 Zachowanie tytułu własności",
+            "paragraphs": [
+                "Zachowujemy prawo własności do towarów do momentu pełnej zapłaty ceny zakupu."
+            ]
+        },
+        {
+            "heading": "§6 Warunki wykupu",
+            "paragraphs": [
+                "Niezależnie od ustawowego prawa do odstąpienia od umowy (patrz §7), udzielamy dobrowolnej 30-dniowej gwarancji zwrotu pieniędzy. Okres ten wynosi 30 dni od daty sprzedaży.",
+                "Aby skorzystać z 30-dniowej gwarancji zwrotu pieniędzy, należy poinformować SUMA-EV o swojej decyzji za pomocą wniosku o zwrot pieniędzy. Żądanie zwrotu można znaleźć w przeglądzie zamówień na koncie. Termin jest dotrzymany, jeśli otrzymamy wniosek o zwrot pieniędzy przed upływem 30 dni. 30-dniowa gwarancja zwrotu pieniędzy nie jest udzielana w przypadku metody płatności \"płatność gotówką\". Zwrot płatności zostanie dokonany zgodnie z prawem do odstąpienia od umowy.",
+                "Zwrotu można żądać wyłącznie za niewykorzystane tokeny. Jeśli token został już wykorzystany, przyznamy proporcjonalny zwrot kwoty zakupu.",
+                "Ustawowe prawo do odstąpienia od umowy nie jest ograniczone przez dobrowolne przedłużenie do 30 dni."
+            ]
+        },
+        {
+            "revocation": {
+                "notice": {
+                    "content": {
+                        "extinction": {
+                            "heading": "Przyczyny anulowania",
+                            "texts": [
+                                "Prawo odstąpienia wygasa w przypadku umowy o dostarczanie treści cyfrowych, które nie są zapisane na nośniku materialnym, jeżeli przedsiębiorca rozpoczął wykonywanie umowy po tym, jak konsument",
+                                [
+                                    "wyraził wyraźną zgodę na rozpoczęcie przez Wykonawcę wykonywania umowy przed upływem terminu do odstąpienia, oraz",
+                                    "potwierdził swoją wiedzę o tym, że poprzez wyrażenie zgody traci prawo do odstąpienia od umowy na początku jej wykonywania."
+                                ]
+                            ]
+                        },
+                        "right": {
+                            "heading": "Prawo do odstÄ…pienia od umowy",
+                            "texts": [
+                                "Użytkownik ma prawo odstąpić od niniejszej umowy w ciągu czternastu dni bez podania przyczyny. Okres odstąpienia wynosi trzydzieści dni od daty zawarcia umowy.",
+                                "Aby skorzystać z prawa do odstąpienia od umowy, należy poinformować nas o swojej decyzji o odstąpieniu od niniejszej umowy w drodze jednoznacznego oświadczenia (np. pisma wysłanego pocztą, faksem lub pocztą elektroniczną). W tym celu można skorzystać z załączonego przykładowego formularza odstąpienia od umowy, co jednak nie jest obowiązkowe.",
+                                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hanower\nE-mail https://metager.org/kontakt",
+                                "Aby zachować termin do odstąpienia od umowy, wystarczy wysłać powiadomienie o skorzystaniu z prawa do odstąpienia od umowy przed upływem terminu do odstąpienia od umowy."
+                            ]
+                        },
+                        "consequences": {
+                            "heading": "Konsekwencje cofnięcia zezwolenia",
+                            "texts": [
+                                "W przypadku odstąpienia od niniejszej umowy przez użytkownika, musimy zwrócić wszystkie otrzymane od niego płatności niezwłocznie, a najpóźniej w ciągu trzydziestu dni od dnia, w którym otrzymaliśmy powiadomienie o odstąpieniu od niniejszej umowy. Do zwrotu użyjemy tych samych środków płatności, które zostały użyte w pierwotnej transakcji, chyba że wyraźnie uzgodniono inaczej; w żadnym wypadku użytkownik nie zostanie obciążony żadnymi opłatami z tytułu tego zwrotu.",
+                                "Jeśli użytkownik zażądał rozpoczęcia świadczenia usług w okresie odstąpienia od umowy, zapłaci nam rozsądną kwotę odpowiadającą proporcji usług już wykonanych do chwili poinformowania nas o skorzystaniu z prawa odstąpienia od umowy w odniesieniu do niniejszej umowy w stosunku do całkowitego zakresu usług przewidzianych w umowie."
+                            ]
+                        }
+                    },
+                    "heading": "Polityka anulowania"
+                },
+                "heading": "Prawo konsumentów do odstąpienia od umowy",
+                "text": "Konsumentom przysługuje prawo do odstąpienia od umowy zgodnie z poniższymi przepisami, przy czym konsumentem jest każda osoba fizyczna, która dokonuje czynności prawnej w celach, które w przeważającej mierze nie mogą być przypisane ani jej działalności gospodarczej, ani niezależnej działalności zawodowej."
+            },
+            "heading": "§7 Prawo odstąpienia od umowy przez klienta będącego konsumentem"
+        },
+        {
+            "texts": [
+                "Jeśli chcesz anulować umowę, wypełnij ten formularz i odeślij go na adres:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hanower\nE-mail https://metager.org/kontakt",
+                "Ja/My (*) niniejszym odstępuję/odstępujemy (*) od zawartej przeze mnie/nas (*) umowy zakupu następujących towarów (*)/świadczenia następującej usługi (*)",
+                "Identyfikator płatności",
+                "Zamówione w dniu (*)/otrzymane w dniu (*)",
+                "Imię i nazwisko konsumenta(-ów)",
+                "Adres konsumenta(-ów)",
+                "Podpis konsumenta(-ów) (tylko w przypadku powiadomienia na papierze)",
+                "Data",
+                "(*) Niepotrzebne skreślić."
+            ],
+            "heading": "§8 Formularz anulowania",
+            "subheading": "Przykładowy formularz anulowania"
+        },
+        {
+            "heading": "§9 Gwarancja",
+            "texts": [
+                "Zastosowanie majÄ… ustawowe przepisy dotyczÄ…ce gwarancji."
+            ]
+        },
+        {
+            "heading": "§10 Język umowy",
+            "texts": [
+                "Jako język umowy dostępny jest tylko niemiecki i angielski."
+            ]
+        },
+        {
+            "heading": "§11 Obsługa klienta",
+            "texts": [
+                "Nasza obsługa klienta w zakresie pytań, skarg i roszczeń jest dostępna w dni powszednie w godzinach od 9:00 do 16:00 pod następującymi adresami:",
+                "Telefon: +4951134000070\nFaks: 0511 34 00 10 23\nE-mail: https://metager.org/kontakt"
+            ]
+        }
+    ]
+}
diff --git a/pass/lang/pl/checkout.json b/pass/lang/pl/checkout.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..212d7989067fe2ff071a39b933b91d70d51c90ae 100644
--- a/pass/lang/pl/checkout.json
+++ b/pass/lang/pl/checkout.json
@@ -1 +1,65 @@
-{}
\ No newline at end of file
+{
+    "payments": {
+        "cash": {
+            "name": "Gotówka",
+            "description": "Możesz również doładować swój klucz za gotówkę. W tym celu wystarczy przesłać nam pocztą poniższy numer zamówienia wraz z żądaną kwotą pieniędzy. Należy pamiętać, że numer zamówienia musi być czytelny, aby mógł zostać przez nas przetworzony.",
+            "note": "Należy pamiętać o następujących kwestiach:",
+            "no-large-values": "Dla własnego bezpieczeństwa nie wysyłaj nam więcej niż 100 € pocztą. Nie ponosimy żadnej odpowiedzialności za trasę transportu. Użytkownik jest odpowiedzialny za zapewnienie, że list do nas dotrze.",
+            "no-coins": "Akceptujemy tylko banknoty. Nie wysyłaj monet!",
+            "accepted-currencies": "Akceptujemy tylko następujące waluty: EUR, USD, CAD, GBP.",
+            "currency-translation": "Zawsze pobieramy opłaty w EUR. Jeśli wyślesz nam inną walutę, wysłana kwota zostanie przeliczona po dziennym kursie wymiany",
+            "no-refund": "Ze względu na obowiązujące przepisy dotyczące prania brudnych pieniędzy, zwrot pieniędzy nie jest niestety możliwy. Jednak po zaksięgowaniu przez nas opłaty można wprowadzić wysłany identyfikator płatności w sekcji \"Zamówienia\", aby uzyskać przegląd zamówienia i/lub poprosić o fakturę.",
+            "order-id-heading": "Identyfikator płatności",
+            "order-id-copy": "Kopia identyfikatora płatności",
+            "order-address-heading": "Wyślij pismo na poniższy adres i zanotuj identyfikator płatności do własnych akt",
+            "order-address": "SUMA-EV\nRöselerstraße 3\n30159 Hanower\nNiemcy",
+            "order-expiration": "Identyfikator płatności jest ważny do {{order_expiration}}. Po tym terminie nie będzie można go użyć do doładowania.",
+            "order-unique": "Użyj identyfikatora płatności tylko do jednego doładowania. Otrzymasz nowy za każdym razem, gdy odwiedzisz tę stronę!",
+            "error": "Coś poszło nie tak podczas tworzenia zamówienia. Spróbuj ponownie później.",
+            "generate": "Generowanie identyfikatora płatności"
+        },
+        "prepay": {
+            "name": "Przelew bankowy",
+            "email": {
+                "label": "Adres e-mail",
+                "description": "Na ten adres zostanie wysłana jednorazowa informacja o naszych danych bankowych oraz powiadomienie o zakończeniu płatności."
+            }
+        },
+        "sofort": {
+            "name": "Przelew bankowy"
+        }
+    },
+    "charge": {
+        "includes-vat": "w tym 7% VAT",
+        "heading": "Wybierz metodę płatności",
+        "amount": "Wybierz liczbę żetonów, które chcesz kupić.",
+        "month_one": "{{count}} MiesiÄ…c",
+        "month_few": "",
+        "month_many": "{{count}} MiesiÄ…c",
+        "not-available": "Przepraszamy, wybrana metoda płatności nie jest dostępna w Twoim regionie.",
+        "anonymous-payment": "Płatność anonimowa",
+        "paypal-privacy": "Metody płatności w tej grupie zwykle nie wymagają konta PayPal, ale są tam przetwarzane. Więcej informacji na temat <a href=\"https://www.paypal.com/us/legalhub/privacy-full\" target=\"_blank\">prywatności w PayPal</a>."
+    },
+    "micropayment": {
+        "privacy": "Kliknięcie przycisku \"Dokonaj płatności\" spowoduje przekierowanie do naszego dostawcy usług płatniczych <a href=\"https://micropayment.de\" target=\"_blank\">MicroPayment</a> w celu sfinalizowania zakupu. Więcej o prywatności <a href=\"{{link}}\" target=\"_blank\">na {{link_text}}</a>.",
+        "submit": "Dokonaj płatności"
+    },
+    "paypal": {
+        "heading": "Dokonaj płatności",
+        "errors": {
+            "failed": "Płatność nie powiodła się",
+            "invalid-card": "Ta karta niestety nie jest obsługiwana",
+            "expired-card": "Ta karta straciła ważność",
+            "rejected": "Płatność została odrzucona przez bank.",
+            "3D": "Uwierzytelnianie 3D nie powiodło się"
+        },
+        "card": {
+            "number": "Numer karty",
+            "expiration": "Ważne do",
+            "cvv": "CVV",
+            "label": "Karta kredytowa / debetowa"
+        },
+        "submit": "Dokonaj płatności",
+        "loading": "Metoda płatności jest załadowana"
+    }
+}
diff --git a/pass/lang/pl/cost.json b/pass/lang/pl/cost.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..9cfaa6ece6b237d42808d421fba28c048387433c 100644
--- a/pass/lang/pl/cost.json
+++ b/pass/lang/pl/cost.json
@@ -1 +1,46 @@
-{}
\ No newline at end of file
+{
+    "headings": [
+        "Oto ile kosztuje klucz MetaGer",
+        "Najważniejsze podsumowanie"
+    ],
+    "texts": [
+        "Za każde wyszukiwanie bez reklam w MetaGer zostanie naliczona opłata <b>1 token</b>. Możesz doładować swój klucz jednym z tych pakietów tokenów w dowolnym momencie."
+    ],
+    "months_one": "{{count}} MiesiÄ…c",
+    "months_few": "",
+    "months_many": "{{count}} MiesiÄ…ce",
+    "short-info": [
+        {
+            "heading": "Tokeny zachowują ważność przez 2 lata",
+            "text": "Zakupione tokeny zachowują ważność do momentu ich wykorzystania. Nie ma stałego zlecenia."
+        },
+        {
+            "heading": "30-dniowa gwarancja zwrotu pieniędzy",
+            "text": "W przypadku niezadowolenia z klucza, użytkownik ma 30 dni od daty zakupu na zwrot niewykorzystanego kredytu."
+        },
+        {
+            "heading": "Klucz jest automatycznie konfigurowany i używany w przeglądarce",
+            "text": "Nie musisz robić nic więcej, aby korzystać z klucza MetaGer w wyszukiwarce. Po naładowaniu zostanie on automatycznie skonfigurowany w przeglądarce, a użytkownik otrzyma informacje o tym, jak łatwo skonfigurować go na dodatkowych urządzeniach."
+        },
+        {
+            "heading": "Tak samo anonimowe jak wyszukiwanie bez klucza",
+            "text": "Skorzystaj z naszej aplikacji <a href=\"#\">na Androida</a> lub wkrótce z naszego rozszerzenia i zachowaj anonimowość w podróży, używając anonimowego tokena <a href=\"{{linktokens}}\"></a> tak samo, jak bez klucza."
+        }
+    ],
+    "pricing": {
+        "heading": "Oto jak kształtują się nasze ceny",
+        "texts": [
+            "Większość naszych przychodów trafia bezpośrednio do wyszukiwarek. Chcemy oferować zrównoważoną koncepcję, co oznacza, że wyszukiwarki nie ponoszą żadnych strat finansowych, dostarczając anonimowe i wolne od reklam wyniki wyszukiwania dla MetaGer. Ponadto, istnieje udział w pokryciu naszych kosztów osobowych i serwerowych, i oczywiście opłaty dla dostawców usług płatniczych i podatki są wliczone w ceny.",
+            "W ten sposób, wybierając usługi wyszukiwania, które mają być przeszukiwane, możesz nie tylko ustawić własne koszty, ale także zdecydować, które projekty chcesz wspierać. Stąd też rozliczenia oparte na tokenach."
+        ]
+    },
+    "payment-methods": {
+        "heading": "Metody płatności",
+        "texts": [
+            "Klucze MetaGer zostały zaprojektowane przez nas w taki sposób, aby nie wymagały żadnych danych osobowych. Niemniej jednak, najpóźniej podczas realizacji płatności, niektóre dane są zwykle wymagane. Może to być IBAN konta płatniczego lub adres e-mail używanego konta PayPal. SUMA-EV sama nie przetwarza tych danych i nie przechowuje ich. Jednak w zależności od metody płatności robi to dostawca usług płatniczych.",
+            "Dlatego nasze metody płatności są skonfigurowane w taki sposób, aby gromadzić jak najmniej danych użytkownika, a w niektórych przypadkach nawet wcale."
+        ],
+        "anonymous": "Anonimowe metody płatności",
+        "more": "Inne metody płatności"
+    }
+}
diff --git a/pass/lang/pl/help.json b/pass/lang/pl/help.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..482175c345a57e12a26e0ac8c253b7e5019ab019 100644
--- a/pass/lang/pl/help.json
+++ b/pass/lang/pl/help.json
@@ -1 +1,93 @@
-{}
\ No newline at end of file
+{
+    "anonymous-token": {
+        "heading": "Anonimowe tokeny",
+        "description": {
+            "heading": "Czym sÄ… anonimowe tokeny?",
+            "text": "Jeśli korzystasz z klucza MetaGer, otrzymasz losowo wygenerowane hasło, które Twoja przeglądarka wysyła do nas przy każdym zapytaniu wyszukiwania, abyśmy mogli włączyć wyszukiwanie bez reklam. Jeśli korzystasz z naszej aplikacji <a href=\"{{linkAndroidApp}}\" target=\"_blank\">na Androida</a> lub naszego rozszerzenia internetowego dla <a href=\"#\" target=\"_blank\" rel=\"noopener\">Chrome</a> i <a href=\"#\" target=\"_blank\" rel=\"noopener\">Firefox</a>, zamiast hasła Twoja przeglądarka wysyła nam losowo wygenerowane hasło (anonimowy token) przy każdym żądaniu wyszukiwania w celu uwierzytelnienia, które jest generowane lokalnie. Gwarantuje to, że każde hasło jest unikalne i nie ma związku z rzeczywistym kluczem MetaGer ani między poszczególnymi hasłami."
+        },
+        "problem": {
+            "heading": "Jaki problem mają rozwiązać anonimowe tokeny?",
+            "text": "Gdyby przeglądarka zawsze wysyłała nam to samo hasło przy każdym zapytaniu, przynajmniej teoretycznie mielibyśmy możliwość ustalenia korelacji między wszystkimi wyszukiwaniami wykonanymi przy użyciu tego samego klucza. Nawet jeśli tego nie zrobimy, zaufanie nadal będzie konieczne, aby mieć pewność anonimowego wyszukiwania. Abyśmy nie tylko musieli obiecać anonimowe wyszukiwanie, ale także mogli je udowodnić, wprowadziliśmy anonimowe tokeny."
+        },
+        "general-function": {
+            "heading": "Jak to działa?",
+            "texts": [
+                "Chcemy więc, aby jednorazowe hasła były generowane bezpośrednio z urządzenia końcowego, a następnie wysyłane do nas w celu uwierzytelnienia podczas wyszukiwania. Jednak dla każdego anonimowego tokena na urządzeniu końcowym musimy upewnić się, że zwykły token został odjęty od klucza MetaGer dla niego, bez (i to jest sedno) informowania nas, który klucz MetaGer został użyty do wygenerowania anonimowego tokena.",
+                "Tradycyjnie użylibyśmy w tym celu jakiejś formy podpisu kryptograficznego. W takim przypadku podpisujemy wygenerowany anonimowy token. Następnie, gdy wyślesz nam anonimowy token wraz z podpisem w późniejszym czasie, możemy być pewni, że anonimowy token jest ważny. Jednak aby uzyskać podpis, musiałbyś wysłać nam anonimowy token wraz z prawdziwym kluczem, co unieważniłoby anonimowość.",
+                "Dlatego zamiast tego używamy zmodyfikowanej formy podpisu kryptograficznego, tak zwanego podpisu ślepego <a href=\"https://en.wikipedia.org/wiki/Blind_signature\" target=\"_blank\"></a> . Aby stworzyć rzeczywistą analogię, to tak, jakby wysłać nam swój anonimowy token w kopercie z kalki. W tym przykładzie nie bylibyśmy w stanie otworzyć koperty, ale bylibyśmy w stanie podpisać się z zewnątrz, więc nasz podpis zostałby przeniesiony na anonimowy token znajdujący się w środku. Kiedy otrzymasz kopertę z powrotem, możesz ją usunąć i odesłać nam hasło i podpis później. Moglibyśmy wtedy potwierdzić, że to rzeczywiście nasz podpis.",
+                "W rzeczywistości ta analogia jest nieco myląca, ponieważ w rzeczywistym procesie, w momencie wysłania nam anonimowego tokena i podpisu, nie tylko nigdy wcześniej nie widzieliśmy anonimowego tokena, ale także nigdy nie widzieliśmy samego podpisu. A jednak możemy zweryfikować, że podpis został wygenerowany przez nas."
+            ]
+        },
+        "meaning": {
+            "texts": [
+                "Korzystając z opisanego algorytmu, zarówno my, jak i użytkownik możemy zapewnić, że nowe losowe hasło niezwiązane z kluczem MetaGer jest używane za każdym razem do uwierzytelnionych wyszukiwań.",
+                "Szczególną cechą tego algorytmu jest to, że wszystkie komponenty zapewniające anonimowość są wykonywane lokalnie na urządzeniu użytkownika. Wykonany kod źródłowy może być przeglądany i weryfikowany przez każdego w dowolnym momencie.",
+                "Co najlepsze, nie trzeba niczego konfigurować, aby korzystać z anonimowych tokenów. Wystarczy zainstalować/używać naszego rozszerzenia do przeglądarki/aplikacji na Androida, aby urządzenie używało anonimowych tokenów do wszystkich wyszukiwań."
+            ],
+            "heading": "Co to oznacza dla uwierzytelnionych wyszukiwań?"
+        },
+        "technical-function": {
+            "heading": "Algorytm, który za tym stoi:",
+            "texts": [
+                "W klasycznym podpisie RSA, wzięlibyśmy anonimowy token <code>m</code>, tajny wykładnik <code>d</code> oraz publiczny moduł <code>N</code> naszego klucza prywatnego i utworzylibyśmy podpis używając <code>m^d (mod N)</code>. Chcemy jednak, aby <code>m</code> pozostało tajne.",
+                "Dlatego terminal tworzy liczbę losową <code>r</code> przy użyciu generatora liczb losowych, która jest niezwiązana z dzielnikiem <code>N</code>. Zatem największy wspólny dzielnik <code>r</code> i <code>N</code> musi wynosić <code>1</code>.",
+                "Ponieważ <code>r</code> jest liczbą losową, wynika z tego, że <code>m'</code> nie ujawnia żadnych informacji o lokalnie przechowywanym anonimowym tokenie <code>m</code>.",
+                "Nasz serwer otrzymuje teraz zaciemniony anonimowy token <code>m'</code> z urządzenia końcowego wraz z kluczem MetaGer, który ma zostać użyty. Odejmujemy token od klucza i wysyłamy również zaciemniony podpis <code>s'&Congruent; (m')^d (mod N)</code> z powrotem do urządzenia końcowego.",
+                "Terminal może teraz obliczyć rzeczywisty prawidłowy podpis RSA <code>s</code> dla niezaszyfrowanego anonimowego tokena: <code>s&Congruent; s' r^-1 (mod N)</code>. Działa to, ponieważ dla kluczy RSA, <code>r^(e*d)&Congruent; r (mod N)</code>. A zatem również: <code>s &Congruent; s' * r^-1 &Congruent; (m')^d*r^-1 &Congruent; m^d*r^(e*d)*r^-1 &Congruent; m^d*r*r^-1 &Congruent; m^d (mod N)</code>.",
+                "Urządzenie końcowe użytkownika wysyła nam teraz niezaszyfrowany anonimowy token wraz z powiązanym podpisem w celu autoryzacji podczas wyszukiwania. Sam klucz nie jest już wysyłany do nas podczas wyszukiwania."
+            ]
+        }
+    },
+    "faq": {
+        "heading": "Jak działa klucz MetaGer?",
+        "faqs": [
+            {
+                "summary": "Jak działa klucz MetaGer?",
+                "description": "Klucz MetaGer umożliwia wyszukiwanie bez reklam. Otrzymujesz tokeny, od których odejmowane jest jedno wyszukiwanie. Podczas korzystania z klucza MetaGer wszystkie funkcje chroniące MetaGer przed automatycznymi połączeniami są wyłączone. Oznacza to, że nie zobaczysz żądań captcha, a Twój adres IP nie będzie przechowywany przez ograniczony czas. Mówiąc prościej, sprawi to, że MetaGer będzie szybszy, bardziej niezawodny i bezpieczniejszy."
+            },
+            {
+                "summary": "Jak działa anonimowy token?",
+                "description": "Możesz użyć anonimowego tokena z naszym rozszerzeniem przeglądarki (w toku) lub aplikacją. Pozwoli to na jeszcze bezpieczniejsze wyszukiwanie w MetaGer. Podczas korzystania z anonimowego tokena, część Twoich danych, w postaci losowych haseł, będzie przechowywana na Twoim urządzeniu. Dzięki złożonemu procesowi kryptograficznemu <a href=\"{{tokenlink}}\"></a> , niemożliwe staje się nawet dla nas powiązanie Twoich wyszukiwań ze sobą lub z Twoim kluczem."
+            },
+            {
+                "summary": "Jak używać klucza MetaGer?",
+                "description": "Klucz MetaGer jest automatycznie konfigurowany i używany w przeglądarce. Nie trzeba więc robić nic więcej. Jeśli chcesz używać klucza MetaGer na dodatkowych urządzeniach, istnieje kilka sposobów jego skonfigurowania:",
+                "steps": [
+                    {
+                        "heading": "Kopiuj adres URL",
+                        "description": "Na stronie zarządzania kluczami MetaGer dostępna jest opcja skopiowania adresu URL. Za pomocą tego adresu URL wszystkie ustawienia MetaGer, a także klucz MetaGer można zapisać na innym urządzeniu."
+                    },
+                    {
+                        "heading": "Zapisz plik",
+                        "description": "Na stronie zarządzania kluczami MetaGer dostępna jest opcja zapisania pliku. Spowoduje to zapisanie klucza MetaGer jako pliku. Możesz następnie użyć tego pliku na innym urządzeniu, aby zalogować się tam za pomocą swojego klucza."
+                    },
+                    {
+                        "heading": "Skanowanie kodu QR",
+                        "description": "Alternatywnie można również zeskanować kod QR wyświetlany na stronie administracyjnej, aby zalogować się na innym urządzeniu."
+                    },
+                    {
+                        "heading": "Wprowadź ręcznie klucz MetaGer",
+                        "description": "Oczywiście można również wprowadzić klucz ręcznie na innym urządzeniu."
+                    }
+                ]
+            },
+            {
+                "summary": "Jestem niezadowolony z klucza MetaGer. Co mogę zrobić?",
+                "description": "W takim przypadku możesz poprosić o zwrot pieniędzy za niewykorzystane tokeny w ciągu 30 dni od zakupu. Aby to zrobić, będziesz potrzebować swojego identyfikatora płatności. Aby zażądać zwrotu, otwórz stronę zarządzania kluczami MetaGer. Tam kliknij pozycję menu \"Zamówienia\" i wprowadź swój identyfikator płatności. Następnie kliknij przycisk \"Żądanie zwrotu\" i wyślij żądanie zwrotu."
+            },
+            {
+                "summary": "Jak wyszukiwać całkowicie anonimowo?",
+                "description": "Twoja prywatność i anonimowość są dla nas bardzo ważne. Dlatego oferujemy anonimowe metody płatności (gotówka). Oferujemy również korzystanie z anonimowych tokenów <a href=\"{{tokenlink}}\"></a> , których można nawet używać do anonimowego wyszukiwania."
+            },
+            {
+                "summary": "Potrzebuję faktury. Jak mogę ją otrzymać?",
+                "description": "Do tego potrzebny jest tylko identyfikator płatności. Aby poprosić o fakturę, otwórz stronę administracyjną klucza MetaGer. Tutaj kliknij pozycję menu \"Zamówienia\" i wprowadź swój identyfikator płatności. Teraz możesz kliknąć przycisk \"Poproś o fakturę\" i rozpocząć żądanie faktury. Do wystawienia faktury potrzebujemy Twojego imienia i nazwiska, adresu e-mail i adresu."
+            },
+            {
+                "summary": "Chciałbym automatycznie naładować mój klucz MetaGer. Jak to zrobić?",
+                "description": "W przypadku naszych członków klucz zawarty w członkostwie jest automatycznie doładowywany co miesiąc. Ilość tokenów zależy od wysokości opłaty członkowskiej."
+            }
+        ],
+        "more-questions": "Masz dodatkowe pytania? Zapraszamy do skorzystania z naszego formularza kontaktowego <a href=\"{{contactlink}}\" target=\"_blank\"></a> ."
+    }
+}
diff --git a/pass/lang/pl/index.json b/pass/lang/pl/index.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..ca814cd99f778a9c243044f1dc1f282f7a689922 100644
--- a/pass/lang/pl/index.json
+++ b/pass/lang/pl/index.json
@@ -1 +1,55 @@
-{}
\ No newline at end of file
+{
+    "hero": {
+        "title": "Dostęp do najlepszej prywatności wyszukiwania w sieci",
+        "description": "Dzięki kluczowi MetaGer możesz cieszyć się wyszukiwaniem w Internecie w sposób, w jaki zawsze powinieneś:",
+        "advantages": {
+            "ads": "Bez reklam",
+            "tracking": "Bez linków śledzących",
+            "logging": "Bez rejestrowania",
+            "compromise": "Bez kompromisów"
+        },
+        "searchbarplaceholder": "Anonimowość w Internecie",
+        "calltoaction": "Jak to działa"
+    },
+    "advantages": {
+        "ads": {
+            "heading": "Bez reklam",
+            "description": "Reklamy i prywatność zwykle nie idą w parze. Mimo że zawsze staramy się zapewnić Ci to, co najlepsze, czyniąc nasze reklamy tak przyjaznymi dla prywatności, jak to tylko możliwe, musimy również <a href='{{privacylink}}' target='_blank'>obniżyć nasze cele</a>. Wyszukiwanie bez reklam oferuje rozsądną alternatywę, dzięki której możemy spełnić nasze wysokie standardy bez kompromisów.",
+            "ads": "Reklama",
+            "tracking": "Śledzenie linków"
+        },
+        "logging": {
+            "heading": "Bez rejestrowania",
+            "description": "Wyszukiwanie w Internecie automatycznie generuje wiele danych. Niewielka ilość danych, które tradycyjnie musimy rejestrować, jest wykorzystywana do zwalczania spamu. Ale klucz MetaGer sprawia, że jest to zbędne. Nie napotkasz już również captcha.",
+            "logging": "Rejestrowanie"
+        },
+        "compromise": {
+            "heading": "Bez kompromisów",
+            "description": "W MetaGer nie ma kont użytkowników. Otrzymasz od nas losowo wygenerowany klucz. Nie są wymagane żadne informacje kontaktowe. Dzięki naszym metodom płatności <a href=\"{{linkPaymentMethods}}\"></a> zbieramy tylko dane niezbędne do przetwarzania płatności. Jeśli korzystasz z naszej aplikacji <a href=\"/app\">na Androida</a> lub wkrótce z naszego rozszerzenia przeglądarki, używasz również anonimowego tokena <a href=\"{{linktoken}}\"></a> , który jest tak samo anonimowy jak bez klucza.",
+            "compromise": "Kompromisy"
+        },
+        "efficiency": {
+            "heading": "Wydajniejsze wyszukiwanie",
+            "description": "Znajdź to, czego szukasz jeszcze szybciej. W razie potrzeby zintegrujemy w wynikach wyszukiwania przejrzyście rozmieszczone głębokie linki, odpowiednie wiadomości i filmy. Nasze wyszukiwanie obrazów jest również wzbogacone o dodatkowe źródła."
+        }
+    },
+    "howitworks": {
+        "heading": "Jak to działa",
+        "steps": [
+            {
+                "heading": "Utwórz klucz MetaGer",
+                "description": "Klucz jest jedyną rzeczą potrzebną do korzystania z wyszukiwania bez reklam. Zostanie on wygenerowany automatycznie. Nie wymagamy podawania żadnych danych kontaktowych."
+            },
+            {
+                "heading": "Żeton doładowania",
+                "description": "Klucz jest aktywowany jednorazową płatnością <a href=\"{{linkCost}}\" target=\"_blank\"></a> . Później będzie on używany automatycznie. Wszystkie reklamy na MetaGer zostały usunięte i masz dostęp do wyników ze wszystkich dostępnych źródeł. Kredyt w wysokości 500 tokenów (5€) zwykle wystarcza na prawie 2 miesiące."
+            },
+            {
+                "heading": "Używaj klucza na dowolnej liczbie urządzeń",
+                "description": "Klucza można używać na dowolnej liczbie urządzeń. Można go również udostępniać znajomym/bliskim. Wystarczy wejść na stronę <a href=\"https://metager.de\" target=\"_blank\">MetaGer</a> na swoim urządzeniu, wprowadzić klucz, klikając ikonę klucza obok paska wyszukiwania i gotowe."
+            }
+        ],
+        "start": "Utwórz klucz MetaGer już teraz!",
+        "login": "Mam już klucz"
+    }
+}
diff --git a/pass/lang/pl/invoice.json b/pass/lang/pl/invoice.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..03cfd8e688fd3c9a66cf2ba09d4d4abccef950e6 100644
--- a/pass/lang/pl/invoice.json
+++ b/pass/lang/pl/invoice.json
@@ -1 +1,53 @@
-{}
\ No newline at end of file
+{
+    "title_order": "Zamówienie {{orderid}}",
+    "title_invoice": "Pokwitowanie {{orderid}}",
+    "author": "SUMA-EV - Stowarzyszenie na rzecz Wolnego Dostępu do Wiedzy",
+    "subject": "Klucz MetaGer: token (x{amount}})",
+    "invoice": "Faktura",
+    "payment_reference_id": "Identyfikator płatności",
+    "order-confirmation": "Potwierdzenie zamówienia",
+    "order": "Numer zamówienia",
+    "phone": "Telefon",
+    "mail-address": "support+46521@metager.de",
+    "domain": "metager.org",
+    "vatid": "Ust-ID",
+    "invoice_date": "Data faktury",
+    "product": "MetaGer Key: Token",
+    "purchase_date": "Data usługi",
+    "count": "Ilość",
+    "details": "Szczegóły zamówienia",
+    "vat": "VAT ({{vat}}%)",
+    "total": "Całkowita kwota",
+    "price": "Cena",
+    "currency-exchange": "Kurs wymiany",
+    "payment-received": "Kwota faktury otrzymana z podziękowaniami!",
+    "board": "ZarzÄ…d",
+    "registrar": "SÄ…d Rejestrowy",
+    "registered-at": "SÄ…d lokalny w Hanowerze",
+    "form": {
+        "heading": "Faktura",
+        "breadcrumps": {
+            "orders": "Zamówienia",
+            "receipt": "Faktura"
+        },
+        "description": "Jeśli potrzebujesz faktury, wprowadź swoje dane rozliczeniowe w poniższym formularzu. Potrzebujemy Twojego imienia i nazwiska, adresu pocztowego i adresu e-mail, aby wysłać Ci fakturę.",
+        "company": {
+            "label": "Nazwa firmy (opcjonalnie)",
+            "placeholder": "Dowolna firma"
+        },
+        "name": {
+            "label": "ImiÄ™ i nazwisko",
+            "placeholder": "John Sample"
+        },
+        "mail": {
+            "label": "E-mail"
+        },
+        "address": {
+            "label": "Adres",
+            "placeholder": "Dowolna ulica 3&#10;3015 Dowolne miasto&#10; Niemcy"
+        },
+        "submit": "Żądanie faktury",
+        "storage": "Jesteśmy prawnie zobowiązani do przechowywania raz wystawionych faktur <span class=\"bold\">10 lat</span> długo. Ponieważ faktura musi być wystawiona osobiście na użytkownika, z konieczności zawiera dane osobowe (imię i nazwisko, adres, adres e-mail).",
+        "success": "Twoja wiadomość została do nas dostarczona. Przetworzymy żądanie tak szybko, jak to możliwe i odpowiemy na adres e-mail zapisany w pliku."
+    }
+}
diff --git a/pass/lang/pl/key.json b/pass/lang/pl/key.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..86b8a22d7e49983b58afe95523f83b9698953a9e 100644
--- a/pass/lang/pl/key.json
+++ b/pass/lang/pl/key.json
@@ -1 +1,32 @@
-{}
\ No newline at end of file
+{
+    "charge": {
+        "full": "Klucz jest już w pełni naładowany. Możesz dokonać kolejnego doładowania po wykorzystaniu niektórych wyszukiwań."
+    },
+    "key": {
+        "copy-url": "Kopiuj adres URL",
+        "transfer-key": "Generowanie kodu logowania",
+        "share": {
+            "title": "Klucz MetaGer",
+            "share": "Udział"
+        },
+        "transfer": {
+            "title": "Przesyłanie klucza MetaGer do dodatkowych urządzeń",
+            "description": "Poniżej zostanie wyświetlone krótkie jednorazowe hasło, którego można użyć na innych urządzeniach do logowania. Aby to zrobić, użyj zwykłego formularza logowania, do którego można przejść za pomocą ikony klucza obok pola wyszukiwania, i wprowadź ten kod zamiast klucza.",
+            "close": "Zamknij"
+        },
+        "store": "Zapisz do pliku",
+        "tokens": "Token",
+        "fill": "Opłata",
+        "orders": "Zamówienia",
+        "valid_until": "ważny do",
+        "new": {
+            "heading": "Tak to wyglÄ…da dalej",
+            "text": "Twój klucz MetaGer został utworzony i skonfigurowany. Należy go tylko naładować. Upewnij się wcześniej, że zapisałeś klucz, abyś mógł go wprowadzić, jeśli ustawienie w przeglądarce zostanie usunięte. W tym celu potrzebny jest sam klucz, powyższy adres URL lub kod QR w postaci pliku.",
+            "charge": "Naładuj klucz teraz"
+        },
+        "startpagelinks": {
+            "adfree": "Wyszukiwanie bez reklam",
+            "regular": "Do wyszukiwania MetaGer"
+        }
+    }
+}
diff --git a/pass/lang/pl/login.json b/pass/lang/pl/login.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..33498cae0d3bd7d98a374cb66b3d81b5634349e3 100644
--- a/pass/lang/pl/login.json
+++ b/pass/lang/pl/login.json
@@ -1 +1,17 @@
-{}
\ No newline at end of file
+{
+    "heading": "Klawisz Enter",
+    "key-input": {
+        "placeholder": "Klawisz Enter"
+    },
+    "or": "lub",
+    "upload-file": "Prześlij plik kopii zapasowej",
+    "scan-qr": {
+        "button": "Skanowanie kodu QR",
+        "no-camera": "Brak dostępnej kamery",
+        "invalid-qr": "Kod QR nie zawiera prawidłowych danych.",
+        "close": "Zamknij"
+    },
+    "submit": "Prześlij",
+    "create": "Skonfiguruj wyszukiwanie bez reklam",
+    "error": "Wymagany jest prawidłowy klucz lub prawidłowy plik kopii zapasowej."
+}
diff --git a/pass/lang/pl/order.json b/pass/lang/pl/order.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..2e8eb025b168e8642b258599d9d62ba8c54e4afa 100644
--- a/pass/lang/pl/order.json
+++ b/pass/lang/pl/order.json
@@ -1 +1,71 @@
-{}
\ No newline at end of file
+{
+    "orders": {
+        "404": "Nie znaleziono identyfikatora płatności",
+        "description": "Wprowadź poniżej identyfikator płatności dla jednego ze swoich zamówień, aby wyświetlić szczegółowe informacje na jego temat.",
+        "placeholder": "Identyfikator płatności",
+        "submit": "Zlecenia obciążenia",
+        "400": "Nieprawidłowy identyfikator płatności"
+    },
+    "details": {
+        "item": "MetaGer Key: Token",
+        "vat": "VAT ({{vat}}%)",
+        "total": "Całkowita kwota",
+        "exchangerate": "Kurs wymiany",
+        "header": {
+            "details": "Numer zamówienia ({{order_id}}) od {{order_date}} UTC",
+            "count": "Ilość",
+            "price": "Cena"
+        }
+    },
+    "product": {
+        "name": "MetaGer Key",
+        "description": "MetaGer Key do korzystania z wyszukiwarki MetaGer bez reklam",
+        "itemname_one": "{{count}} Token MetaGer",
+        "itemname_few": "",
+        "itemname_many": "{{count}} Token MetaGer"
+    },
+    "breadcrumps": {
+        "orders": "Zamówienia"
+    },
+    "summary": {
+        "thankyou": "Dziękujemy za zakup!",
+        "actions": {
+            "order-confirmation": "Pobierz potwierdzenie zamówienia",
+            "receipt": "Żądanie pokwitowania",
+            "download-receipt": "Pobieranie paragonu",
+            "refund": "Żądanie zwrotu pieniędzy"
+        },
+        "receipt": "Potrzebujesz faktury? W takim razie teraz jest najlepszy czas, aby o nią poprosić. Alternatywnie, możesz przywołać ten przegląd w późniejszym czasie, wprowadzając swój identyfikator płatności ({{payment_reference_id}})."
+    },
+    "revocation": {
+        "input": {
+            "label": "Wyrażam wyraźną zgodę na wykonanie umowy przed upływem terminu do odstąpienia od umowy. Rozumiem, że prawo do odstąpienia od umowy <a href=\"{{revocation_link}}\" target=\"_blank\"></a> wygasa z chwilą rozpoczęcia wykonywania umowy. Zamiast tego przyznajemy Ci dobrowolne <a href=\"{{refundlink}}\" target=\"_blank\">30-dniowe prawo zwrotu</a>.",
+            "error": "To pole jest wymagane"
+        }
+    },
+    "agb": {
+        "text": "Kontynuując zakup, użytkownik wyraża zgodę na nasze Warunki <a href=\"{{agblink}}\" target=\"_blank\"></a> ."
+    },
+    "refund": {
+        "breadcrumps": {
+            "orders": "Zamówienia",
+            "refund": "Zwrot kosztów"
+        },
+        "success": "Twoje zgłoszenie zostało do nas pomyślnie wysłane. Przetworzymy je tak szybko, jak to możliwe. W zależności od metody płatności może minąć kilka dni, zanim zwrot będzie widoczny w sprzedaży.",
+        "errors": {
+            "already_refunded": "Zażądano już zwrotu pieniędzy za to zamówienie.",
+            "generic": "Błąd wysyłania wiadomości. Spróbuj ponownie później."
+        },
+        "headings": [
+            "Zwrot pieniędzy"
+        ],
+        "texts": [
+            "Jesteś niezadowolony ze swojego klucza? Bardzo nam przykro to słyszeć! Oczywiście w takim przypadku zwrócimy kwotę faktury. Zwrot jest zawsze dokonywany na to samo konto, które zostało użyte do pierwotnej płatności. Cieszymy się również z krytyki.",
+            "Uwaga: Część zakupionych środków została już wykorzystana. W związku z tym możemy zwrócić tylko <span class=\"bold\">{{count}}/{payment_count}}</span> wyszukiwania."
+        ],
+        "message": {
+            "placeholder": "Twoja wiadomość (opcjonalnie)"
+        },
+        "submit": "Żądanie zwrotu pieniędzy"
+    }
+}
diff --git a/pass/lang/pl/pageheader.json b/pass/lang/pl/pageheader.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..305d846e50e3961177c61cca9c95364dbb1bb2f3 100644
--- a/pass/lang/pl/pageheader.json
+++ b/pass/lang/pl/pageheader.json
@@ -1 +1,22 @@
-{}
\ No newline at end of file
+{
+    "rightnav": {
+        "manage": "ZarzÄ…dzaj kluczem",
+        "logout": "Wylogowanie",
+        "enter": "Klawisz Enter",
+        "start": "Start"
+    },
+    "footer": {
+        "impress": "Nadruk",
+        "privacy": "Prywatność"
+    },
+    "chat": {
+        "title": "Czatuj z nami!",
+        "button": "Pytania? Chętnie pomożemy!"
+    },
+    "title": "MetaGer Key",
+    "leftnav": {
+        "informations": "Informacje",
+        "price": "Cena",
+        "help": "Pomoc"
+    }
+}
diff --git a/pass/lang/sv/admin.json b/pass/lang/sv/admin.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..c99f794e863a8a71cdcbf775645e9d25059e3c3d 100644
--- a/pass/lang/sv/admin.json
+++ b/pass/lang/sv/admin.json
@@ -1 +1,78 @@
-{}
\ No newline at end of file
+{
+    "index": {
+        "heading": "MetaGer nyckeladministratör",
+        "actions": {
+            "cash-payment": "Registrera kontant betalning",
+            "heading": "Åtgärder:",
+            "receipt": "Skapa faktura",
+            "keymanagement": "Hantera nycklar"
+        }
+    },
+    "breadcrumps": {
+        "receipt": "Skapa faktura",
+        "key-management": "Nyckelhantering",
+        "overview": "Översikt",
+        "payments-cash": "Ange kontant betalning"
+    },
+    "cash-payment": {
+        "converted-price": {
+            "label": "Erhållet belopp",
+            "placeholder": "10,00"
+        },
+        "info": "Ange mottagna kontantbetalningar här för att bokföra tillhörande inköpsorder",
+        "price": {
+            "placeholder": "10,00",
+            "label": "Belopp i euro",
+            "calculate": "Beräkna aktuell växelkurs"
+        },
+        "payment_reference": {
+            "label": "Betalnings-ID:",
+            "placeholder": "123456789"
+        },
+        "submit": "Bokbeställning",
+        "success": "Beställningen med numret {{orderid}} bokades framgångsrikt."
+    },
+    "key": {
+        "key-overview": {
+            "charge-form": {
+                "price": {
+                    "label": "Belopp (€)"
+                },
+                "submit": "Ladda nu!",
+                "heading": "Manuell laddning",
+                "hint": "Ingen betalning sätts in för en manuell påfyllning. Krediten krediteras helt enkelt utan någon betalning i gengäld. Använd med försiktighet!",
+                "amount": {
+                    "label": "Antal"
+                }
+            },
+            "charge": "Kredit: {{token}}",
+            "charge-success": "Laddning framgångsrik",
+            "delete": "Radera",
+            "expiration": "Giltig till {{expiration}}"
+        },
+        "key-input": {
+            "label": "Enter-tangent",
+            "submit": "Skicka in"
+        }
+    },
+    "receipt": {
+        "orderid": {
+            "label": "Beställningsnummer ({{orderdate}}):",
+            "placeholder": "Ange ordernummer…",
+            "submit": "Beställning av last"
+        },
+        "name": {
+            "label": "Fullständigt namn:"
+        },
+        "company": {
+            "label": "Företag:"
+        },
+        "email": {
+            "label": "E-post"
+        },
+        "address": {
+            "label": "Adress"
+        },
+        "submit-userdata": "Ta över fakturadata"
+    }
+}
diff --git a/pass/lang/sv/agb.json b/pass/lang/sv/agb.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..31b1fbb8500f1ac42d37c188d548589c8c415edb 100644
--- a/pass/lang/sv/agb.json
+++ b/pass/lang/sv/agb.json
@@ -1 +1,133 @@
-{}
\ No newline at end of file
+{
+    "heading": "Allmänna villkor för föreningen SuMa-eV - Föreningen för fri tillgång till kunskap",
+    "date": "Status för GTC",
+    "paragraphs": [
+        {
+            "heading": "§1 Tillämplighet på entreprenörer och definitioner av termer",
+            "paragraphs": [
+                "(1) Följande allmänna villkor gäller för alla leveranser mellan oss och en konsument i den version som gäller vid tidpunkten för beställningen.",
+                "En konsument är en fysisk person som ingår en rättshandling för ändamål som huvudsakligen varken kan hänföras till hans näringsverksamhet eller till hans självständiga yrkesverksamhet (§ 13 BGB)."
+            ]
+        },
+        {
+            "heading": "§2 Ingående av avtal, lagring av avtalstexten",
+            "paragraphs": [
+                "(1) Följande bestämmelser om ingående av avtal gäller för beställningar som görs via vår Internetbutik https://metager.org.",
+                "(2) Vid ingående av avtalet ingås avtalet med följande enhet:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nRegistreringsnummer VR200033\nRegistreringsdomstol Länsrätt Hannover",
+                "(3) Presentationen av varorna i vår internetbutik utgör inte ett juridiskt bindande avtalserbjudande från vår sida, utan är endast en icke-bindande inbjudan till konsumenten att beställa varor. Genom att beställa de önskade varorna gör konsumenten ett bindande erbjudande om att ingå ett köpeavtal.",
+                "(4) Vid mottagande av en beställning i vår Internetbutik gäller följande bestämmelser: Konsumenten lämnar ett bindande erbjudande om att ingå ett avtal genom att framgångsrikt slutföra det beställningsförfarande som tillhandahålls i vår Internetbutik.",
+                "Beställningen görs i följande steg:",
+                [
+                    "Val av önskat antal sökningar",
+                    "Val av önskad betalningsmetod",
+                    "Bekräfta det bindande köpet genom att slutföra betalningen"
+                ],
+                "Innan beställningen skickas kan konsumenten, genom att trycka på \"tillbaka\"-knappen i den webbläsare som han eller hon använder, efter att ha kontrollerat sina uppgifter gå tillbaka till den webbsida där kundens uppgifter finns registrerade och korrigera inmatningsfel eller avbryta beställningsprocessen genom att stänga webbläsaren. Vi bekräftar mottagandet av beställningen omedelbart genom en sammanfattning av beställningen och möjligheten att ladda ner en orderbekräftelse."
+            ]
+        },
+        {
+            "heading": "§3 Priser, fraktkostnader, betalning, förfallodag",
+            "paragraphs": [
+                "(1) De angivna priserna inkluderar lagstadgad mervärdesskatt och andra priskomponenter.",
+                "(2) Konsumenten har möjlighet att betala med kontanter, Giropay, Sofort, Przelewy24, Bancontact, Blik, Eps, Ideal, Mybank, PayPal, kreditkort (Visa, Mastercard, American Express).",
+                "(3) Om konsumenten har valt förskottsbetalning förbinder han sig att betala köpeskillingen omedelbart efter det att avtalet har ingåtts."
+            ]
+        },
+        {
+            "heading": "§4 Leverans",
+            "paragraphs": [
+                "(1) Om vi inte tydligt har angett något annat i produktbeskrivningen är alla artiklar som erbjuds av oss redo för omedelbar leverans. Eftersom detta är en tjänst är ingen frakt nödvändig och kommer att tillhandahållas omedelbart.",
+                "(2) Den köpta produkten tillhandahålls av oss under en period av 2 år från inköpsdatumet. Efter utgången av denna period är ytterligare användning inte möjlig."
+            ]
+        },
+        {
+            "heading": "§5 Bevarande av titel",
+            "paragraphs": [
+                "Vi behåller äganderätten till varorna tills hela köpeskillingen har betalats."
+            ]
+        },
+        {
+            "heading": "§6 Villkor för inlösen",
+            "paragraphs": [
+                "Oberoende av den lagstadgade ångerrätten (se §7) lämnar vi en frivillig 30-dagars pengarna-tillbaka-garanti. Perioden är 30 dagar från försäljningsdatumet.",
+                "För att utnyttja 30-dagars pengarna-tillbaka-garantin måste du informera SUMA-EV om ditt beslut med hjälp av en begäran om återbetalning. Du hittar återbetalningsbegäran i orderöversikten på ditt konto. Tidsfristen är uppfylld om vi mottar begäran om återbetalning innan de 30 dagarna har löpt ut. 30-dagars pengarna-tillbaka-garantin beviljas inte för betalningsmetoden \"kontantbetalning\". Återbetalningen av din betalning kommer att göras i enlighet med ångerrätten.",
+                "En återbetalning kan endast begäras för oanvända polletter. Om du redan har använt en pollett från ditt köp kommer vi att ge en proportionell återbetalning av köpbeloppet.",
+                "Den lagstadgade ångerrätten begränsas inte av den frivilliga förlängningen till 30 dagar."
+            ]
+        },
+        {
+            "heading": "§7 Kundens ångerrätt som konsument",
+            "revocation": {
+                "heading": "Ångerrätt för konsumenter",
+                "text": "Konsumenter ska ha rätt att ångra sig i enlighet med följande bestämmelser, varvid en konsument ska vara en fysisk person som ingår en rättslig transaktion för ändamål som huvudsakligen varken kan hänföras till hans kommersiella eller hans oberoende yrkesverksamhet",
+                "notice": {
+                    "heading": "Avbokningsregler",
+                    "content": {
+                        "right": {
+                            "heading": "Ångerrätt",
+                            "texts": [
+                                "Du har rätt att frånträda detta avtal inom fjorton dagar utan att ange något skäl. Ångerfristen är trettio dagar från den dag då avtalet ingicks.",
+                                "För att utöva din ångerrätt måste du informera oss om ditt beslut att frånträda detta avtal genom en tydlig förklaring (t.ex. ett brev som skickas per post, fax eller e-post). Du kan använda det bifogade exemplet på ångerblankett för detta ändamål, vilket dock inte är obligatoriskt.",
+                                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nE-post https://metager.org/kontakt",
+                                "För att ångerfristen ska iakttas är det tillräckligt att du skickar meddelandet om utövandet av ångerrätten innan ångerfristen löper ut."
+                            ]
+                        },
+                        "consequences": {
+                            "heading": "Konsekvenser av återkallelse",
+                            "texts": [
+                                "Om du återkallar detta avtal måste vi återbetala alla betalningar som vi har mottagit från dig omedelbart och senast inom trettio dagar från den dag då vi mottog meddelandet om din återkallelse av detta avtal. För denna återbetalning kommer vi att använda samma betalningsmedel som du använde för den ursprungliga transaktionen, om inte annat uttryckligen överenskommits med dig; under inga omständigheter kommer du att debiteras några avgifter på grund av denna återbetalning.",
+                                "Om du har begärt att tjänsterna ska påbörjas under ångerfristen, ska du betala oss ett skäligt belopp som motsvarar andelen av de tjänster som redan har tillhandahållits fram till den tidpunkt då du meddelar oss om utövandet av ångerrätten avseende detta avtal jämfört med den totala omfattningen av de tjänster som anges i avtalet."
+                            ]
+                        },
+                        "extinction": {
+                            "heading": "Skäl till avbokning",
+                            "texts": [
+                                "Ångerrätten ska upphöra att gälla vid ett avtal om tillhandahållande av digitalt innehåll som inte finns på ett fysiskt medium, om näringsidkaren har börjat fullgöra avtalet efter det att konsumenten har",
+                                [
+                                    "uttryckligen har samtyckt till att uppdragstagaren börjar fullgöra avtalet innan ångerfristen löpt ut, och",
+                                    "har bekräftat sin vetskap om att han genom sitt samtycke förlorar sin ångerrätt i början av avtalets fullgörande."
+                                ]
+                            ]
+                        }
+                    }
+                }
+            }
+        },
+        {
+            "heading": "§8 Formulär för annullering",
+            "subheading": "Exempel på annulleringsformulär",
+            "texts": [
+                "Om du vill häva avtalet ska du fylla i detta formulär och skicka det till:",
+                "SUMA-EV\nDominik Hebeler\nRöseler Str. 3\nD-30159 Hannover\nE-post https://metager.org/kontakt",
+                "Jag/vi (*) återkallar härmed det avtal som ingåtts av mig/oss (*) om köp av följande varor (*)/tillhandahållande av följande tjänster (*)",
+                "ID för betalning",
+                "Beställd den (*)/ mottagen den (*)",
+                "Konsumentens/konsumenternas namn",
+                "Konsumentens/konsumenternas adress",
+                "Konsumentens (konsumenternas) underskrift (endast vid anmälan på papper)",
+                "Datum",
+                "(*) Stryk det som inte är tillämpligt."
+            ]
+        },
+        {
+            "heading": "§9 Garanti",
+            "texts": [
+                "De lagstadgade garantibestämmelserna gäller."
+            ]
+        },
+        {
+            "heading": "§10 Avtalsspråk",
+            "texts": [
+                "Endast tyska och engelska är tillgängliga som avtalsspråk."
+            ]
+        },
+        {
+            "texts": [
+                "Vår kundtjänst för frågor, klagomål och reklamationer är tillgänglig på vardagar från 9:00 till 16:00 på följande alternativ:",
+                "Telefon: +4951134000070\nFax: 0511 34 00 10 23\nE-post: https://metager.org/kontakt"
+            ],
+            "heading": "§11 Kundservice"
+        }
+    ]
+}
diff --git a/pass/lang/sv/checkout.json b/pass/lang/sv/checkout.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..2e28143b38a174117ec03c49f776fa3d2f6d13e5 100644
--- a/pass/lang/sv/checkout.json
+++ b/pass/lang/sv/checkout.json
@@ -1 +1,64 @@
-{}
\ No newline at end of file
+{
+    "micropayment": {
+        "privacy": "Genom att klicka på \"Gör betalning\" kommer du att omdirigeras till vår betaltjänstleverantör <a href=\"https://micropayment.de\" target=\"_blank\">MicroPayment</a> för att slutföra köpet. Mer om <a href=\"{{link}}\" target=\"_blank\">integritet på {{link_text}}</a>.",
+        "submit": "Göra betalning"
+    },
+    "paypal": {
+        "heading": "Göra betalning",
+        "errors": {
+            "failed": "Betalningen misslyckades",
+            "invalid-card": "Detta kort stöds tyvärr inte",
+            "expired-card": "Detta kort har upphört att gälla",
+            "rejected": "Din betalning har avvisats av banken.",
+            "3D": "3D-autentisering misslyckades"
+        },
+        "card": {
+            "number": "Kortnummer",
+            "expiration": "Giltig till",
+            "cvv": "CVV",
+            "label": "Kredit- eller betalkort"
+        },
+        "submit": "Göra betalning",
+        "loading": "Betalningsmetod är laddad"
+    },
+    "payments": {
+        "cash": {
+            "name": "Kontanter",
+            "description": "Du kan också ladda din nyckel mot kontanter. Skicka då följande ordernummer till oss per post tillsammans med önskad summa pengar. Observera att ordernumret måste vara läsbart för att vi ska kunna behandla det.",
+            "note": "Vänligen observera följande:",
+            "no-large-values": "För din egen säkerhets skull bör du inte skicka mer än 100 euro per post till oss. Vi tar inget ansvar för transportvägen. Du ansvarar själv för att brevet kommer fram till oss.",
+            "no-coins": "Vi tar endast emot sedlar. Skicka inte mynt!",
+            "accepted-currencies": "Vi accepterar endast följande valutor: EUR, USD, CAD, GBP.",
+            "currency-translation": "Vi debiterar alltid belopp i EUR. Om du skickar oss en annan valuta, kommer det skickade beloppet att konverteras till den dagliga växelkursen",
+            "no-refund": "På grund av gällande lagar om penningtvätt är en återbetalning eller retur tyvärr inte möjlig. När avgiften har bokförts av oss kan du dock ange det skickade betalnings-ID:t under \"Beställningar\" för att få en orderöversikt och/eller begära en faktura.",
+            "order-id-heading": "Ditt betalnings-ID",
+            "order-id-copy": "Kopia av betalnings-ID",
+            "order-address-heading": "Skicka brevet till följande adress och notera betalningsnumret för dina egna handlingar",
+            "order-address": "SUMA-EV\nRöselerstraße 3\n30159 Hannover\nTyskland",
+            "order-expiration": "Betalnings-ID:t är giltigt fram till {{order_expiration}}. Efter detta datum kan det inte längre användas för en laddning.",
+            "order-unique": "Använd betalnings-ID endast för en enda laddning. Du kommer att få ett nytt varje gång du besöker denna sida!",
+            "error": "Något gick fel när vi skapade din beställning. Vänligen försök igen senare.",
+            "generate": "Skapa betalnings-ID"
+        },
+        "prepay": {
+            "name": "Banköverföring",
+            "email": {
+                "label": "E-postadress",
+                "description": "Till denna adress kommer du att få engångsinformation om våra bankuppgifter och ett meddelande när betalningen är slutförd."
+            }
+        },
+        "sofort": {
+            "name": "Banköverföring"
+        }
+    },
+    "charge": {
+        "includes-vat": "inkl. 7% moms",
+        "heading": "Välj betalningsmetod",
+        "amount": "Välj hur många token du vill köpa.",
+        "month_one": "{{count}} MÃ¥nad",
+        "month_other": "{{count}} MÃ¥nad",
+        "not-available": "Tyvärr är den valda betalningsmetoden inte tillgänglig i din region.",
+        "anonymous-payment": "Anonym betalning",
+        "paypal-privacy": "Betalningsmetoder i denna grupp kräver vanligtvis inte ett PayPal-konto, men behandlas där. Mer om <a href=\"https://www.paypal.com/us/legalhub/privacy-full\" target=\"_blank\">integritet på PayPal</a>."
+    }
+}
diff --git a/pass/lang/sv/cost.json b/pass/lang/sv/cost.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..61d8177b7c70ace3a6f7d4d57ab18b6726bc65db 100644
--- a/pass/lang/sv/cost.json
+++ b/pass/lang/sv/cost.json
@@ -1 +1,45 @@
-{}
\ No newline at end of file
+{
+    "headings": [
+        "Detta är vad din MetaGer-nyckel kostar",
+        "Den viktigaste sammanfattningen"
+    ],
+    "texts": [
+        "För varje annonsfri webbsökning på MetaGer debiteras du <b>1 token</b>. Du kan när som helst fylla på din nyckel med ett av dessa tokenpaket."
+    ],
+    "months_one": "{{count}} MÃ¥nad",
+    "months_other": "{{count}} månader",
+    "short-info": [
+        {
+            "heading": "Tokens är giltiga i 2 år",
+            "text": "Dina köpta token är utformade för att vara giltiga tills de är förbrukade. Det finns ingen stående order."
+        },
+        {
+            "heading": "30 dagars pengarna-tillbaka-garanti",
+            "text": "Om du inte är nöjd med din nyckel har du 30 dagar på dig efter köpet att returnera den oanvända krediten."
+        },
+        {
+            "heading": "Nyckeln installeras automatiskt och används i webbläsaren",
+            "text": "Du behöver inte göra något annat för att använda din MetaGer-nyckel i sökningen. När du har laddat den konfigureras den automatiskt i din webbläsare och du får information om hur du enkelt konfigurerar den på ytterligare enheter."
+        },
+        {
+            "heading": "Lika anonym som en sökning utan nyckel",
+            "text": "Använd vår <a href=\"#\">Android-app</a>, eller snart vårt tillägg och var bevisligen lika anonym på vägen med <a href=\"{{linktokens}}\">anonym token</a> som utan nyckel."
+        }
+    ],
+    "payment-methods": {
+        "heading": "Betalningsmetoder",
+        "texts": [
+            "MetaGer-nycklar har utformats av oss på ett sådant sätt att de inte kräver några personuppgifter. Ändå, senast under genomförandet av en betalning, krävs vanligtvis vissa uppgifter. Det kan vara IBAN för det betalande kontot eller e-postadressen till det PayPal-konto som används. SUMA-EV behandlar inte dessa uppgifter själv och lagrar dem inte. Beroende på betalningsmetod gör dock betaltjänstleverantören det.",
+            "Därför är våra betalningsmetoder konfigurerade på ett sådant sätt att så lite som möjligt, och i vissa fall till och med inga användaruppgifter alls, behöver samlas in."
+        ],
+        "anonymous": "Anonyma betalningsmetoder",
+        "more": "Andra betalningsmetoder"
+    },
+    "pricing": {
+        "heading": "Så här är våra priser sammansatta",
+        "texts": [
+            "Merparten av våra intäkter går direkt till de söktjänster som du använder. Vi vill erbjuda ett hållbart koncept, vilket innebär att de efterfrågade sökmotorerna inte lider någon ekonomisk skada genom att tillhandahålla anonyma och annonsfria sökresultat för MetaGer. Dessutom tillkommer en andel för att täcka våra personal- och serverkostnader, och naturligtvis ingår avgifterna för betaltjänstleverantörer och skatter i priserna.",
+            "Genom att välja vilka söktjänster som ska efterfrågas kan du alltså inte bara fastställa dina egna kostnader, utan också samtidigt bestämma vilka projekt du vill stödja. Därav också den tokenbaserade faktureringen."
+        ]
+    }
+}
diff --git a/pass/lang/sv/help.json b/pass/lang/sv/help.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..a51ae828130efd30e865fecd8b6fc63ae1298451 100644
--- a/pass/lang/sv/help.json
+++ b/pass/lang/sv/help.json
@@ -1 +1,93 @@
-{}
\ No newline at end of file
+{
+    "anonymous-token": {
+        "heading": "Anonyma tokens",
+        "description": {
+            "heading": "Vad är anonyma tokens?",
+            "text": "Om du använder en MetaGer-nyckel får du ett slumpmässigt genererat lösenord som din webbläsare skickar till oss med varje sökfråga så att vi kan aktivera annonsfri sökning. Om du använder vår <a href=\"{{linkAndroidApp}}\" target=\"_blank\">Android-app</a>, eller vårt webbtillägg för <a href=\"#\" target=\"_blank\" rel=\"noopener\">Chrome</a> och <a href=\"#\" target=\"_blank\" rel=\"noopener\">Firefox</a>, istället för lösenordet, skickar din webbläsare ett slumpmässigt genererat lösenord (anonym token) till oss med varje sökbegäran för autentisering, som genereras lokalt. Detta säkerställer att varje lösenord är unikt och inte har någon koppling till den faktiska MetaGer-nyckeln eller mellan de enskilda lösenorden."
+        },
+        "problem": {
+            "heading": "Vilket problem är anonyma tokens tänkta att lösa?",
+            "text": "Om din webbläsare alltid skickar samma lösenord till oss vid varje sökning, skulle vi åtminstone teoretiskt ha möjlighet att fastställa ett samband mellan alla sökningar som utförs med samma nyckel. Även om vi inte gör det, skulle förtroende naturligtvis fortfarande vara nödvändigt för att vara säker på din anonyma sökning. För att vi inte bara ska behöva lova den anonyma sökningen, utan också kunna bevisa den, har vi infört de anonyma tokens."
+        },
+        "general-function": {
+            "heading": "Hur fungerar den?",
+            "texts": [
+                "Så vi vill ha engångslösenord som genereras direkt från din endpoint-enhet, som du sedan skickar till oss för autentisering under dina sökningar. För varje anonym token på din slutenhet måste vi dock se till att en vanlig token har subtraherats från din MetaGer-nyckel för den, utan att (och detta är kruxet) berätta för oss vilken MetaGer-nyckel som användes för att generera den anonyma token.",
+                "Traditionellt skulle vi använda någon form av kryptografisk signatur för detta ändamål. I det här fallet skulle vi signera den genererade anonyma token. När du sedan skickar oss den anonyma token tillsammans med signaturen vid ett senare tillfälle kan vi vara säkra på att den anonyma token är giltig. För att få signaturen skulle du dock ha skickat oss den anonyma token tillsammans med din riktiga nyckel, vilket skulle upphäva anonymiteten.",
+                "Därför använder vi istället en modifierad form av kryptografisk signatur, den så kallade <a href=\"https://en.wikipedia.org/wiki/Blind_signature\" target=\"_blank\">blinda signaturen</a>. För att skapa en verklighetstrogen analogi är det som att skicka oss din anonyma token i ett kuvert av karbonpapper. I det här exemplet skulle vi inte kunna öppna kuvertet, men vi skulle kunna skriva under från utsidan, så att vår signatur skulle överföras till den anonyma token inuti. När du får tillbaka kuvertet kan du ta bort det och skicka tillbaka lösenordet och underskriften senare. Vi kan då bekräfta att det verkligen är vår signatur.",
+                "I själva verket är denna analogi lite missvisande, eftersom vi i den faktiska processen, i det ögonblick du skickar oss den anonyma token och signaturen, inte bara aldrig har sett den anonyma token tidigare, utan heller aldrig har sett själva signaturen. Ändå kan vi verifiera att signaturen har genererats av oss."
+            ]
+        },
+        "meaning": {
+            "heading": "Vad innebär detta för dina autentiserade sökningar?",
+            "texts": [
+                "Genom att använda den beskrivna algoritmen kan vi och du se till att ett nytt slumpmässigt lösenord som inte är relaterat till din MetaGer-nyckel används varje gång för dina autentiserade sökningar.",
+                "Det speciella med denna algoritm är att alla komponenter som säkerställer anonymitet exekveras lokalt på din enhet. Den exekverade källkoden kan visas och verifieras av vem som helst när som helst.",
+                "Det bästa av allt är att du inte behöver konfigurera något för att använda anonyma tokens. Det räcker med att installera/använda vårt webbläsartillägg/Android-app för att din enhet ska använda anonyma tokens för alla sökningar."
+            ]
+        },
+        "technical-function": {
+            "heading": "Den bakomliggande algoritmen:",
+            "texts": [
+                "I en klassisk RSA-signatur skulle vi ta den anonyma token <code>m</code>, den hemliga exponenten <code>d</code> och den offentliga modulen <code>N</code> för vår privata nyckel och skapa signaturen med <code>m^d (mod N)</code>. Vi vill dock att <code>m</code> ska förbli hemlig.",
+                "Därför skapar terminalen ett slumptal <code>r</code> med hjälp av en slumptalsgenerator, som inte är divisorrelaterat till <code>N</code>. Därför måste den största gemensamma divisorn för <code>r</code> och <code>N</code> vara <code>1</code>.",
+                "Eftersom <code>r</code> är ett slumptal följer att <code>m'</code> inte avslöjar någon information om den lokalt lagrade anonyma token <code>m</code>.",
+                "Vår server tar nu emot den obfuskerade anonyma token <code>m'</code> från din slutenhet tillsammans med den MetaGer-nyckel som ska användas. Vi subtraherar en token från nyckeln och skickar den också obfuskerade signaturen <code>s'&Congruent; (m')^d (mod N)</code> tillbaka till din slutenhet.",
+                "Din terminal kan nu beräkna den faktiska giltiga RSA-signaturen <code>s</code> för den okrypterade anonyma token: <code>s&Congruent; s' r^-1 (mod N)</code>. Detta fungerar eftersom för RSA-nycklar <code>r^(e*d)&Congruent; r (mod N)</code>. Och därför också: <code>s &Congruent; s' * r^-1 &Congruent; (m')^d*r^-1 &Congruent; m^d*r^(e*d)*r^-1 &Congruent; m^d*r*r^-1 &Congruent; m^d (mod N)</code>.",
+                "Din slutenhet skickar nu den okrypterade anonyma token tillsammans med den tillhörande signaturen till oss för auktorisering under en sökning. Själva nyckeln skickas inte längre till oss under sökningen."
+            ]
+        }
+    },
+    "faq": {
+        "faqs": [
+            {
+                "summary": "Hur fungerar MetaGer-nyckeln?",
+                "description": "Med en MetaGer-nyckel söker du annonsfritt. Du får tokens från vilka en sökning dras av per sökning. När du använder en MetaGer-nyckel inaktiveras alla funktioner som skyddar MetaGer från automatiserade samtal. Detta innebär att du inte kommer att se captcha-förfrågningar och att din IP-adress inte kommer att sparas under en begränsad tid. Enkelt uttryckt kommer detta att göra MetaGer snabbare, mer tillförlitlig och säkrare."
+            },
+            {
+                "summary": "Hur fungerar den anonyma token?",
+                "description": "Du kan använda den anonyma token med vårt webbläsartillägg (under utveckling) eller vår app. Detta gör att du kan söka ännu säkrare med MetaGer. När du använder anonym token kommer en del av din kredit, i form av slumpmässiga lösenord, att lagras på din enhet. Genom en <a href=\"{{tokenlink}}\">komplex kryptografisk process</a> blir det omöjligt även för oss att associera dina utförda sökningar med varandra eller med din nyckel."
+            },
+            {
+                "steps": [
+                    {
+                        "heading": "Kopiera URL",
+                        "description": "När du är på MetaGer-nyckelhanteringssidan finns det ett alternativ att kopiera en URL. Med denna URL kan alla inställningar för MetaGer samt MetaGer-nyckeln sparas på en annan enhet."
+                    },
+                    {
+                        "heading": "Spara fil",
+                        "description": "När du är på MetaGer-nyckelhanteringssidan finns det ett alternativ för att spara en fil. Då sparas din MetaGer-nyckel som en fil. Du kan sedan använda den här filen på en annan enhet för att logga in där med din nyckel."
+                    },
+                    {
+                        "heading": "Skanna QR-kod",
+                        "description": "Alternativt kan du också skanna QR-koden som visas på administrationssidan för att logga in på en annan enhet."
+                    },
+                    {
+                        "description": "Naturligtvis kan du också ange nyckeln manuellt på en annan enhet.",
+                        "heading": "Ange MetaGer-nyckel manuellt"
+                    }
+                ],
+                "summary": "Hur använder jag MetaGer-nyckeln?",
+                "description": "MetaGer-nyckeln installeras och används automatiskt i webbläsaren. Du behöver alltså inte göra något annat. Om du vill använda MetaGer-nyckeln på fler enheter finns det flera sätt att konfigurera MetaGer-nyckeln:"
+            },
+            {
+                "summary": "Jag är missnöjd med MetaGer-nyckeln. Vad kan jag göra åt det?",
+                "description": "I så fall kan du begära återbetalning för oanvända tokens inom 30 dagar efter köpet. För att göra detta behöver du ditt betalnings-ID. För att begära en återbetalning, öppna MetaGers nyckelhanteringssida. Där klickar du på menyalternativet \"Beställningar\" och anger ditt betalnings-ID. Därefter kan du klicka på knappen \"Begär återbetalning\" och skicka återbetalningsbegäran."
+            },
+            {
+                "summary": "Hur söker jag helt anonymt?",
+                "description": "Din integritet och anonymitet är mycket viktiga för oss. Därför erbjuder vi anonyma betalningsmetoder (kontanter). Vi erbjuder också användning av <a href=\"{{tokenlink}}\">anonyma tokens</a>, som de till och med kan använda för att söka verifierbart anonymt."
+            },
+            {
+                "summary": "Jag behöver en faktura. Hur får jag tag på den?",
+                "description": "För detta behöver du bara ditt betalnings-ID. För att begära fakturan, öppna MetaGer-nyckelns administrationssida. Här klickar du på menyalternativet \"Beställningar\" och anger ditt betalnings-ID. Nu kan du klicka på knappen \"Begär faktura\" och starta fakturaförfrågan. För fakturan behöver vi ditt fullständiga namn, din e-postadress och din adress."
+            },
+            {
+                "summary": "Jag skulle vilja ladda min MetaGer-nyckel automatiskt. Hur går det till?",
+                "description": "För våra medlemmar fylls den nyckel som ingår i medlemskapet automatiskt på månadsvis. Mängden token här beror på den betalda medlemsavgiften."
+            }
+        ],
+        "heading": "Hur fungerar MetaGer-nyckeln?",
+        "more-questions": "Har du ytterligare frågor? Då är du välkommen att använda vårt kontaktformulär <a href=\"{{contactlink}}\" target=\"_blank\"></a> ."
+    }
+}
diff --git a/pass/lang/sv/index.json b/pass/lang/sv/index.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..a2f6a1cb013b591bf89f2cdd8de7cff5182f647e 100644
--- a/pass/lang/sv/index.json
+++ b/pass/lang/sv/index.json
@@ -1 +1,55 @@
-{}
\ No newline at end of file
+{
+    "hero": {
+        "title": "Din tillgång till den bästa sekretessen för webbsökning",
+        "description": "Med en MetaGer-nyckel kan du njuta av Internetsökning på det sätt som det alltid borde vara:",
+        "advantages": {
+            "ads": "Utan reklam",
+            "tracking": "Utan spårningslänkar",
+            "logging": "Utan loggning",
+            "compromise": "Utan kompromisser"
+        },
+        "searchbarplaceholder": "Anonym på Internet",
+        "calltoaction": "Hur det fungerar"
+    },
+    "advantages": {
+        "ads": {
+            "heading": "Utan annonser",
+            "description": "Annonser och integritet går oftast inte bra ihop. Även om vi alltid försöker göra det bästa för dig genom att göra våra annonser så integritetsvänliga som möjligt, måste vi också <a href='{{privacylink}}' target='_blank'>sänka våra ambitioner</a>. Den annonsfria sökningen erbjuder ett förnuftigt alternativ så att vi kan uppfylla våra höga krav utan kompromisser.",
+            "ads": "Reklam",
+            "tracking": "Spårning av länkar"
+        },
+        "logging": {
+            "heading": "Utan loggning",
+            "description": "Dina sökningar på Internet genererar automatiskt en stor mängd data. Den lilla mängd data som vi traditionellt måste logga används för att bekämpa skräppost. Men en MetaGer-nyckel gör även detta onödigt. Du kommer inte heller längre att stöta på captchas.",
+            "logging": "Loggning"
+        },
+        "compromise": {
+            "heading": "Utan kompromisser",
+            "description": "Det finns inga användarkonton hos MetaGer. Du kommer att få en slumpmässigt genererad nyckel från oss. Ingen kontaktinformation krävs. Med våra <a href=\"{{linkPaymentMethods}}\">betalningsmetoder</a>, samlar vi bara in de uppgifter som krävs för betalningsbehandling. Om du använder vår <a href=\"/app\">Android-app</a>, eller snart vårt webbläsartillägg, använder du också <a href=\"{{linktoken}}\"> anonym token</a> bevisligen lika anonym som utan en nyckel.",
+            "compromise": "Kompromisser"
+        },
+        "efficiency": {
+            "heading": "Sök mer effektivt",
+            "description": "Hitta det du letar efter ännu snabbare. Vid behov integrerar vi tydliga djuplänkar, relevanta nyheter och videor i sökresultaten. Vår bildsökning är också förbättrad med ytterligare källor."
+        }
+    },
+    "howitworks": {
+        "heading": "Hur det fungerar",
+        "steps": [
+            {
+                "heading": "Skapa MetaGer-nyckel",
+                "description": "Din nyckel är det enda du behöver för att använda den annonsfria sökningen. Den genereras automatiskt åt dig. Vi behöver ingen kontaktinformation."
+            },
+            {
+                "heading": "Laddning av symbol",
+                "description": "Din nyckel aktiveras genom en engångsbetalning <a href=\"{{linkCost}}\" target=\"_blank\"></a> . Den kommer att användas automatiskt efteråt. All reklam på MetaGer är nu borttagen och du har tillgång till resultat från alla tillgängliga källor. En kredit på 500 tokens (5€) räcker vanligtvis för nästan 2 månader."
+            },
+            {
+                "heading": "Använd din nyckel på så många enheter som du vill",
+                "description": "Din nyckel kan användas på så många enheter som du vill. Du kan också dela den med vänner/släktingar. Gå bara till <a href=\"https://metager.de\" target=\"_blank\">MetaGer</a> på din enhet, ange din nyckel genom att klicka på nyckelikonen bredvid sökfältet och du är redo att gå."
+            }
+        ],
+        "start": "Skapa MetaGer-nyckel nu!",
+        "login": "Jag har redan en nyckel"
+    }
+}
diff --git a/pass/lang/sv/invoice.json b/pass/lang/sv/invoice.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..e73c027fa44e3e4ff2ea4dc21ccdf2ce61762022 100644
--- a/pass/lang/sv/invoice.json
+++ b/pass/lang/sv/invoice.json
@@ -1 +1,53 @@
-{}
\ No newline at end of file
+{
+    "currency-exchange": "Växelkurs",
+    "purchase_date": "Datum för tjänstgöring",
+    "count": "Antal",
+    "details": "Beställningsuppgifter",
+    "vat": "MOMS ({{vat}}%)",
+    "title_order": "Order {{orderid}}",
+    "title_invoice": "Kvitto {{orderid}}",
+    "author": "SUMA-EV - Föreningen för fri tillgång till kunskap",
+    "subject": "MetaGer-nyckel: token (x{amount}})",
+    "invoice": "Faktura",
+    "payment_reference_id": "ID för betalning",
+    "order-confirmation": "Bekräftelse av beställning",
+    "order": "Beställningsnummer",
+    "phone": "Telefon",
+    "mail-address": "stöd+46521@metager.de",
+    "domain": "metager.org",
+    "vatid": "Ust-ID",
+    "invoice_date": "Faktureringsdatum",
+    "product": "MetaGer Key: Token",
+    "total": "Totalt belopp",
+    "price": "Pris",
+    "payment-received": "Fakturabeloppet mottaget med tack!",
+    "board": "Styrelse",
+    "registrar": "Registreringsdomstol",
+    "registered-at": "Hanover lokal domstol",
+    "form": {
+        "heading": "Faktura",
+        "breadcrumps": {
+            "orders": "Beställningar",
+            "receipt": "Faktura"
+        },
+        "description": "Om du behöver en faktura, vänligen ange dina faktureringsuppgifter i formuläret nedan. Vi behöver ditt fullständiga namn, postadress och e-postadress för att kunna skicka fakturan till dig.",
+        "company": {
+            "label": "Företagets namn (valfritt)",
+            "placeholder": "Alla företag"
+        },
+        "name": {
+            "label": "Fullständigt namn",
+            "placeholder": "John Sample"
+        },
+        "mail": {
+            "label": "E-post"
+        },
+        "address": {
+            "label": "Adress",
+            "placeholder": "Vilken gata som helst 3&#10;3015 Vilken stad som helst&#10;Tyskland"
+        },
+        "submit": "Begäran om faktura",
+        "storage": "Vi är enligt lag skyldiga att spara en gång utfärdade fakturor <span class=\"bold\">10 år</span> länge. Eftersom en faktura måste utfärdas till dig personligen, innehåller den nödvändigtvis personuppgifter (namn, adress, e-post).",
+        "success": "Ditt meddelande har skickats till oss. Vi kommer att behandla din förfrågan så snart som möjligt och skicka ett svar till den e-postadress vi har registrerat."
+    }
+}
diff --git a/pass/lang/sv/key.json b/pass/lang/sv/key.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..91d9cf329ff032f393953ca6c31941d47ac901a5 100644
--- a/pass/lang/sv/key.json
+++ b/pass/lang/sv/key.json
@@ -1 +1,32 @@
-{}
\ No newline at end of file
+{
+    "charge": {
+        "full": "Din nyckel är redan fulladdad. Du kan göra en ny laddning när vissa sökningar har förbrukats."
+    },
+    "key": {
+        "copy-url": "Kopiera URL",
+        "transfer-key": "Generera inloggningskod",
+        "share": {
+            "title": "MetaGer-nyckel",
+            "share": "Andel"
+        },
+        "transfer": {
+            "title": "Överför MetaGer-nyckeln till ytterligare enheter",
+            "description": "Nedan visas ett kort engångslösenord som du kan använda på andra enheter för inloggning. För att göra detta använder du det vanliga inloggningsformuläret, som du når via nyckelikonen bredvid sökfältet, och anger denna kod där istället för nyckeln.",
+            "close": "Nära"
+        },
+        "store": "Spara till fil",
+        "tokens": "Token",
+        "fill": "Avgift",
+        "orders": "Beställningar",
+        "valid_until": "giltig till",
+        "new": {
+            "heading": "Så här fortsätter det",
+            "charge": "Ladda nyckeln nu",
+            "text": "Din MetaGer-nyckel har skapats och konfigurerats. Den behöver bara laddas. Se till att du i förväg har sparat nyckeln så att du kan ange den om inställningen i din webbläsare raderas. För detta behöver du antingen själva nyckeln, ovanstående URL eller QR-koden som en fil."
+        },
+        "startpagelinks": {
+            "adfree": "Till den annonsfria sökningen",
+            "regular": "Till MetaGer-sökning"
+        }
+    }
+}
diff --git a/pass/lang/sv/login.json b/pass/lang/sv/login.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..691b5c2193dca91b5b5c485cbee2856f4d0965db 100644
--- a/pass/lang/sv/login.json
+++ b/pass/lang/sv/login.json
@@ -1 +1,17 @@
-{}
\ No newline at end of file
+{
+    "heading": "Enter-tangent",
+    "key-input": {
+        "placeholder": "Enter-tangent"
+    },
+    "or": "eller",
+    "upload-file": "Ladda upp säkerhetskopia",
+    "scan-qr": {
+        "button": "Skanna QR-kod",
+        "no-camera": "Ingen kamera tillgänglig",
+        "invalid-qr": "QR-koden innehåller inte giltiga data.",
+        "close": "Nära"
+    },
+    "submit": "Skicka in",
+    "create": "Skapa annonsfri sökning",
+    "error": "En giltig nyckel eller en giltig säkerhetskopia krävs."
+}
diff --git a/pass/lang/sv/order.json b/pass/lang/sv/order.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..9b219cac2f148e67bdc1d29c14e0b786fa30d43c 100644
--- a/pass/lang/sv/order.json
+++ b/pass/lang/sv/order.json
@@ -1 +1,70 @@
-{}
\ No newline at end of file
+{
+    "product": {
+        "name": "MetaGer Nyckel",
+        "description": "MetaGer-nyckel för annonsfri användning av MetaGer-sökmotorn",
+        "itemname_one": "{{count}} MetaGer Token",
+        "itemname_other": "{{count}} MetaGer Token"
+    },
+    "breadcrumps": {
+        "orders": "Beställningar"
+    },
+    "summary": {
+        "thankyou": "Tack för ditt köp!",
+        "actions": {
+            "order-confirmation": "Ladda ner orderbekräftelse",
+            "receipt": "Begäran om mottagningsbevis",
+            "download-receipt": "Hämta kvitto",
+            "refund": "Begär återbetalning"
+        },
+        "receipt": "Behöver du en faktura? Då är det bästa tillfället att begära en nu. Alternativt kan du återkalla denna översikt vid ett senare tillfälle genom att ange ditt betalnings-ID ({{payment_reference_id}})."
+    },
+    "details": {
+        "header": {
+            "details": "Ordningsnummer ({{order_id}}) från {{order_date}} UTC",
+            "count": "Antal",
+            "price": "Pris"
+        },
+        "item": "MetaGer Key: Token",
+        "vat": "MOMS ({{vat}}%)",
+        "total": "Totalt belopp",
+        "exchangerate": "Växelkurs"
+    },
+    "orders": {
+        "description": "Ange betalnings-ID för en av dina beställningar nedan för att se detaljer om den.",
+        "placeholder": "ID för betalning",
+        "submit": "Lasta order",
+        "400": "Ogiltigt betalnings-ID",
+        "404": "Betalnings-ID hittades inte"
+    },
+    "revocation": {
+        "input": {
+            "label": "Jag samtycker uttryckligen till att avtalet genomförs innan ångerfristen löpt ut. Jag förstår att <a href=\"{{revocation_link}}\" target=\"_blank\">rätten till återkallelse</a> löper ut när genomförandet av avtalet påbörjas. Istället ger vi dig en frivillig <a href=\"{{refundlink}}\" target=\"_blank\">30-dagars returrätt</a>.",
+            "error": "Detta fält är obligatoriskt"
+        }
+    },
+    "agb": {
+        "text": "Genom att fortsätta ditt köp godkänner du våra <a href=\"{{agblink}}\" target=\"_blank\">Villkor och bestämmelser</a>."
+    },
+    "refund": {
+        "breadcrumps": {
+            "orders": "Beställningar",
+            "refund": "Ã…terbetalning"
+        },
+        "success": "Din förfrågan har skickats till oss. Vi kommer att behandla den så snart som möjligt. Beroende på betalningsmetod kan det ta några dagar innan en återbetalning syns i din försäljning.",
+        "errors": {
+            "already_refunded": "En återbetalning har redan begärts för denna beställning.",
+            "generic": "Fel vid sändning av ditt meddelande. Vänligen försök igen senare."
+        },
+        "headings": [
+            "Din återbetalning"
+        ],
+        "texts": [
+            "Är du missnöjd med din nyckel? Det var tråkigt att höra! Naturligtvis kommer vi att återbetala fakturabeloppet i detta fall. En återbetalning görs alltid till samma konto som användes för den ursprungliga betalningen. Vi tar också gärna emot din kritik.",
+            "Observera: En del av din köpta kredit har redan använts. Därför kan vi endast återbetala <span class=\"bold\">{{count}}/{payment_count}}</span> sökningar."
+        ],
+        "message": {
+            "placeholder": "Ditt meddelande (valfritt)"
+        },
+        "submit": "Begär återbetalning"
+    }
+}
diff --git a/pass/lang/sv/pageheader.json b/pass/lang/sv/pageheader.json
index 9e26dfeeb6e641a33dae4961196235bdb965b21b..77a60358a6e7717935cfe83f4da48c13d2139348 100644
--- a/pass/lang/sv/pageheader.json
+++ b/pass/lang/sv/pageheader.json
@@ -1 +1,22 @@
-{}
\ No newline at end of file
+{
+    "title": "MetaGer Nyckel",
+    "leftnav": {
+        "informations": "Information",
+        "price": "Pris",
+        "help": "Hjälp"
+    },
+    "rightnav": {
+        "manage": "Hantera nyckel",
+        "logout": "Logga ut",
+        "enter": "Enter-tangent",
+        "start": "Start"
+    },
+    "footer": {
+        "impress": "Tryck",
+        "privacy": "Integritet"
+    },
+    "chat": {
+        "title": "Chatta med oss!",
+        "button": "Har du några frågor? Vi hjälper gärna till!"
+    }
+}