From 7cdab9c68b5a1d03f6c4dffc77a6f4674298598f Mon Sep 17 00:00:00 2001 From: Max Richter Date: Wed, 29 Nov 2023 15:59:16 +0100 Subject: [PATCH] feat: translate the page --- .vscode/extensions.json | 5 + messages/de.json | 52 +++++ messages/en.json | 52 +++++ package.json | 2 + pnpm-lock.yaml | 207 +++++++++++++++++- project.inlang.json | 19 ++ src/lib/components/InputRange.svelte | 5 +- src/lib/components/ParaglideAdapter.svelte | 81 +++++++ src/lib/components/Questions.svelte | 105 +++++---- src/lib/components/maskenball.svelte | 3 +- src/routes/+layout.server.ts | 27 +++ src/routes/+layout.svelte | 5 +- src/routes/{ => [[lang]]}/+page.svelte | 9 +- .../{ => [[lang]]}/gallery/+page.server.ts | 0 .../{ => [[lang]]}/gallery/+page.svelte | 3 +- src/routes/load.ts | 3 + svelte.config.js | 7 +- tsconfig.json | 31 +-- vite.config.ts | 14 +- 19 files changed, 542 insertions(+), 88 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 messages/de.json create mode 100644 messages/en.json create mode 100644 project.inlang.json create mode 100644 src/lib/components/ParaglideAdapter.svelte create mode 100644 src/routes/+layout.server.ts rename src/routes/{ => [[lang]]}/+page.svelte (87%) rename src/routes/{ => [[lang]]}/gallery/+page.server.ts (100%) rename src/routes/{ => [[lang]]}/gallery/+page.svelte (96%) create mode 100644 src/routes/load.ts diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..116d685 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "inlang.vs-code-extension" + ] +} \ No newline at end of file diff --git a/messages/de.json b/messages/de.json new file mode 100644 index 0000000..6171b10 --- /dev/null +++ b/messages/de.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "invite": "Wir laden dich herzlich ein, an unserer exklusiven Silvesterparty teilzunehmen, die dieses Jahr im magischen Ambiente eines Maskenballs stattfindet. Tauche ein in eine Nacht voller Geheimnisse, Eleganz und festlichem Glanz.", + "welcome": "Willkommen zum Maskenball", + "acceptInvite": "Einladung annehmen", + "nameTooLong": "Wir bitten um Entschuldigung, aber dieser Name ist zu lang. (maximal 100 Zeichen)", + "createNameWith": "Wir werden {name} mit", + "wantAlternativePersonality": "Möchtet Ihr, dass wir eine alternative Persönlichkeit für Euch erschaffen?", + "wantNobleName": "Möchtet Ihr einen würdigen Adelsnamen für Euch in Erwägung ziehen?", + "yourNobleName": "Euer Adelsname", + "nobleName":"Adelstitel", + "name": "Name", + "titleTooLong": "Wir bitten um Entschuldigung, aber dieser Titel ist zu lang. (maximal 100 Zeichen)", + "hundredChars": "/100 Zeichen", + "accept": "akzeptieren", + "newSuggestions": "neue vorschläge", + "titleSuggestions": "Adelsname Vorschläge", + "shouldCreatePortrait": "Sollten unsere begabten Künstler ein majestätisches Porträt von Euch anfertigen?", + "skinVeryBright": "sehr heller", + "skinBright": "heller", + "skinMedium": "medium", + "skinDark": "dunkler", + "skinVeryDark": "sehr dunkler", + "skinAnd": "Haut und", + "hairTypeStraight": "glatten", + "hairTypeCurly": "lockigen", + "hairTypeWavy": "welligen", + "hairLengthLong": "langen", + "hairLengthMedium": "medium-langen", + "hairLengthShort": "kurzen", + "hairColorRed": "roten", + "hairColorBlack": "schwarzen", + "hairColorBlond": "blonden", + "hairColorBrown": "braunen", + "hairDrawing": "Haaren zeichnen", + "paintPortrait": "porträt malen (~15 Sekunden)", + "portraitIsBeingDrawn": "Euer edles Antlitz wird gemalt", + "acceptPortrait": "Porträt annehmen", + "requestNewPortrait": "Neues Porträt anfordern", + "invitationIsBeingSend": "Einladung wird abgeschickt", + "sendInvitation": "Einladung versenden", + "guestGallery": "Gallerie der Gäste", + "howSureAppearing": "Wie sicher dürfen wir mit Eurem glanzvollen Erscheinen rechnen?", + "howName": "Wie lauten Euer Vor- und Nachname, edler Gast?", + "saveName": "Name speichern", + "notAtAll": "gar nicht", + "very": "sehr", + "yes": "Ja", + "no": "Nein", + "alreadyHaveOne": "ich habe bereits einen", + "nobleTitlesAreWritten": "Adelsnamen werden geschrieben" +} diff --git a/messages/en.json b/messages/en.json new file mode 100644 index 0000000..dfc5e1f --- /dev/null +++ b/messages/en.json @@ -0,0 +1,52 @@ +{ + "$schema": "https://inlang.com/schema/inlang-message-format", + "invite": "We cordially invite you to take part in our exclusive New Year's Eve party, which this year will take place in the magical ambience of a masked ball. Immerse yourself in a night full of mystery, elegance and festive splendor.", + "welcome": "Welcome to the Masquerade Ball", + "acceptInvite": "Accept invite", + "nameTooLong": "We apologize, but this name is too long. (maximum 100 characters)", + "createNameWith": "We will draw {name} with", + "wantAlternativePersonality": "Would you like us to create an alternative personality for you?", + "wantNobleName": "Would you like to consider a worthy noble name for yourself?", + "yourNobleName": "Your noble name", + "nobleName":"Noble Title", + "name": "Surname", + "titleTooLong": "We apologize, but this title is too long. (maximum 100 characters)", + "hundredChars": "/100 characters", + "accept": "accept", + "newSuggestions": "new suggestions", + "titleSuggestions": "Noble name suggestions", + "shouldCreatePortrait": "Should our talented artists create a majestic portrait of you?", + "skinVeryBright": "very brighter", + "skinBright": "brighter", + "skinMedium": "medium", + "skinDark": "darker", + "skinVeryDark": "very darker", + "skinAnd": "skin and", + "hairTypeStraight": "straight", + "hairTypeCurly": "curly", + "hairTypeWavy": "wavy", + "hairLengthLong": "long", + "hairLengthMedium": "medium-long", + "hairLengthShort": "short", + "hairColorRed": "red", + "hairColorBlack": "black", + "hairColorBlond": "blond", + "hairColorBrown": "brown", + "hairDrawing": "hair", + "paintPortrait": "paint portrait (~15 seconds)", + "portraitIsBeingDrawn": "Your noble face will be painted", + "acceptPortrait": "Accept portrait", + "requestNewPortrait": "Request a new portrait", + "invitationIsBeingSend": "Invitation is sent", + "sendInvitation": "Send invitation", + "guestGallery": "Gallery of guests", + "howSureAppearing": "How confident can we be of your brilliant appearance?", + "howName": "What are your first and last names, noble guest?", + "saveName": "Save name", + "notAtAll": "not at all", + "very": "very", + "yes": "Yes", + "no": "No", + "alreadyHaveOne": "I already have one", + "nobleTitlesAreWritten": "Noble names are written" +} diff --git a/package.json b/package.json index 3ef92d2..9bec5f5 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "compress-s3": "bun ./bin/compress_s3.ts" }, "devDependencies": { + "@inlang/paraglide-js": "1.0.0-prerelease.12", + "@inlang/paraglide-js-adapter-vite": "1.0.0-prerelease.2", "@sveltejs/adapter-node": "^1.3.1", "@sveltejs/kit": "^1.27.5", "@typescript-eslint/eslint-plugin": "^6.10.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 63f6637..5936424 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + dependencies: googleapis: specifier: ^128.0.0 @@ -18,6 +22,12 @@ dependencies: version: 0.32.6 devDependencies: + '@inlang/paraglide-js': + specifier: 1.0.0-prerelease.12 + version: 1.0.0-prerelease.12 + '@inlang/paraglide-js-adapter-vite': + specifier: 1.0.0-prerelease.2 + version: 1.0.0-prerelease.2 '@sveltejs/adapter-node': specifier: ^1.3.1 version: 1.3.1(@sveltejs/kit@1.27.5) @@ -339,6 +349,138 @@ packages: resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} dev: true + /@inlang/json-types@1.1.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-n6vS6AqETsCFbV4TdBvR/EH57waVXzKsMqeUQ+eH2Q6NUATfKhfLabgNms2A+QV3aedH/hLtb1pRmjl2ykBVZg==} + peerDependencies: + '@sinclair/typebox': ^0.31.0 + dependencies: + '@sinclair/typebox': 0.31.28 + dev: true + + /@inlang/language-tag@1.2.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-AwKNPYPgJrhM9ebEYQvcG5PGM4v79jMPlsv2bUYEhEZzMpwIJKQo4t7P7EekMhO086sXOmeTu410Lm8abX/2Yw==} + peerDependencies: + '@sinclair/typebox': ^0.31.0 + dependencies: + '@sinclair/typebox': 0.31.28 + dev: true + + /@inlang/message-lint-rule@1.4.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-imOvpxKFP2ESaWTI5W5aQiW1ukvXMvGa4KhVknssfA1ZkCkVu2EDM4aGxw11U5Rli4QQ70bxztUvfLVhd3J84A==} + peerDependencies: + '@sinclair/typebox': ^0.31.17 + dependencies: + '@inlang/json-types': 1.1.0(@sinclair/typebox@0.31.28) + '@inlang/language-tag': 1.2.0(@sinclair/typebox@0.31.28) + '@inlang/message': 2.0.0(@sinclair/typebox@0.31.28) + '@inlang/project-settings': 2.2.0(@sinclair/typebox@0.31.28) + '@inlang/translatable': 1.2.0(@sinclair/typebox@0.31.28) + '@sinclair/typebox': 0.31.28 + dev: true + + /@inlang/message@2.0.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-RPFcbega2Cnxi78d08O7SbuXyuhEqsB819QjgloNTXWtlBFwVDkF87xAMIZN37hpM6JZzMaYv2O1ipyncU3Ccg==} + peerDependencies: + '@sinclair/typebox': ^0.31.0 + dependencies: + '@inlang/language-tag': 1.2.0(@sinclair/typebox@0.31.28) + '@sinclair/typebox': 0.31.28 + dev: true + + /@inlang/module@1.2.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-Z91zJUgliX+ddfRK+Ce4aZYlMjeNwZJOMmJ2dEUgg2cfqIFRB+gDsC5gLEY5LTkZspf/XUHoECTpK8ErVVYF5w==} + peerDependencies: + '@sinclair/typebox': ^0.31.17 + dependencies: + '@inlang/message-lint-rule': 1.4.0(@sinclair/typebox@0.31.28) + '@inlang/plugin': 2.4.0(@sinclair/typebox@0.31.28) + '@sinclair/typebox': 0.31.28 + dev: true + + /@inlang/paraglide-js-adapter-unplugin@1.0.0-prerelease.2: + resolution: {integrity: sha512-Z2AGwc5zLkZyhDjlD/W17uASttlxalgnMUfT8gcsjBOEHr4h1KV6zJfo8mha0/YQRpSveBPbRhruY+4EQ6CNvA==} + dependencies: + '@inlang/paraglide-js': 1.0.0-prerelease.12 + '@inlang/sdk': 0.18.0 + kleur: 4.1.5 + unplugin: 1.5.1 + transitivePeerDependencies: + - babel-plugin-macros + dev: true + + /@inlang/paraglide-js-adapter-vite@1.0.0-prerelease.2: + resolution: {integrity: sha512-M1Za1FUlR7wKUnA8wIJkLO+Z0gEr/WU7EJ1KZsmPzJFE7NUuKqYTqgTqumEWGo23p1XJ/cAQOzXNLKYzbqK3Ug==} + dependencies: + '@inlang/paraglide-js-adapter-unplugin': 1.0.0-prerelease.2 + transitivePeerDependencies: + - babel-plugin-macros + dev: true + + /@inlang/paraglide-js@1.0.0-prerelease.12: + resolution: {integrity: sha512-YOXpLYfG8XgdinF6ZSEB0TQPtvXGQzLTbhxJY7aGBJzt+zmAtqaXpxresw7Hp++7EBd/2DMmMiiuKz6ch3OzrA==} + hasBin: true + dev: true + + /@inlang/plugin@2.4.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-4+T7ZfuqcW4GFp3G+Vb+RTlYF8kKPY/BH0BcvOV2HX5B9UzgyC+dpXiI3TRQTUj7vz0yqp4K+onsaehPb2NGvw==} + peerDependencies: + '@sinclair/typebox': ^0.31.17 + dependencies: + '@inlang/json-types': 1.1.0(@sinclair/typebox@0.31.28) + '@inlang/language-tag': 1.2.0(@sinclair/typebox@0.31.28) + '@inlang/message': 2.0.0(@sinclair/typebox@0.31.28) + '@inlang/project-settings': 2.2.0(@sinclair/typebox@0.31.28) + '@inlang/translatable': 1.2.0(@sinclair/typebox@0.31.28) + '@lix-js/fs': 0.4.0 + '@sinclair/typebox': 0.31.28 + dev: true + + /@inlang/project-settings@2.2.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-M1D150KYiYoyiHhQp627zhvo/w/M1B11ROEu2u7Jn9005mKEWZS1DDlEOsLuNRl5doHSPHfkGa9qItMtrqr0dA==} + peerDependencies: + '@sinclair/typebox': ^0.31.0 + dependencies: + '@inlang/json-types': 1.1.0(@sinclair/typebox@0.31.28) + '@inlang/language-tag': 1.2.0(@sinclair/typebox@0.31.28) + '@sinclair/typebox': 0.31.28 + dev: true + + /@inlang/result@1.1.0: + resolution: {integrity: sha512-zLGroi9EUiHuOjUOaglUVTFO7EWdo2OARMJLBO1Q5Ga/xJmSQb6XS1lhqEXBFAjgFarfEMX5YEJWWALogYV3wA==} + dev: true + + /@inlang/sdk@0.18.0: + resolution: {integrity: sha512-HLZhR+w3gxoSs5sTUFIaSVjX7XPkTCzOzd1/QzdMVlRXucSTXViztJ6UJZ3aULAkuixfnkMSS1WfjE9TA1SOeA==} + engines: {node: '>=18.0.0'} + dependencies: + '@inlang/json-types': 1.1.0(@sinclair/typebox@0.31.28) + '@inlang/language-tag': 1.2.0(@sinclair/typebox@0.31.28) + '@inlang/message': 2.0.0(@sinclair/typebox@0.31.28) + '@inlang/message-lint-rule': 1.4.0(@sinclair/typebox@0.31.28) + '@inlang/module': 1.2.0(@sinclair/typebox@0.31.28) + '@inlang/plugin': 2.4.0(@sinclair/typebox@0.31.28) + '@inlang/project-settings': 2.2.0(@sinclair/typebox@0.31.28) + '@inlang/result': 1.1.0 + '@inlang/translatable': 1.2.0(@sinclair/typebox@0.31.28) + '@lix-js/fs': 0.4.0 + '@sinclair/typebox': 0.31.28 + dedent: 1.5.1 + deepmerge-ts: 5.1.0 + solid-js: 1.6.12 + throttle-debounce: 5.0.0 + transitivePeerDependencies: + - babel-plugin-macros + dev: true + + /@inlang/translatable@1.2.0(@sinclair/typebox@0.31.28): + resolution: {integrity: sha512-Od/nBm3qigfSpYJKu/Isg0rb34ohZApNk+fOtmZ0vBZXsTBzKaYFW0SeBVqwociRCr1tj40N659Ky+RoyLcv8A==} + peerDependencies: + '@sinclair/typebox': ^0.31.0 + dependencies: + '@inlang/language-tag': 1.2.0(@sinclair/typebox@0.31.28) + '@sinclair/typebox': 0.31.28 + dev: true + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -369,6 +511,12 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /@lix-js/fs@0.4.0: + resolution: {integrity: sha512-IOno98FwY+TPinwXzg5dx6xkCwyBCvkv6DMAQjI1Us4rvI9zObfjXd4E2VIGyT7vfUhpXIs4KXmne+onkCDzsg==} + dependencies: + js-base64: 3.7.5 + dev: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -458,6 +606,10 @@ packages: rollup: 3.29.4 dev: true + /@sinclair/typebox@0.31.28: + resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==} + dev: true + /@sveltejs/adapter-node@1.3.1(@sveltejs/kit@1.27.5): resolution: {integrity: sha512-A0VgRQDCDPzdLNoiAbcOxGw4zT1Mc+n1LwT1OmO350R7WxrEqdMUChPPOd1iMfIDWlP4ie6E2d/WQf5es2d4Zw==} peerDependencies: @@ -1019,6 +1171,10 @@ packages: hasBin: true dev: true + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -1042,6 +1198,15 @@ packages: mimic-response: 3.1.0 dev: false + /dedent@1.5.1: + resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: true + /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} @@ -1051,6 +1216,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true + /deepmerge-ts@5.1.0: + resolution: {integrity: sha512-eS8dRJOckyo9maw9Tu5O5RUi/4inFLrnoLkBe3cPfDMx3WZioXtmOew4TXQaxq7Rhl4xjDtR7c6x8nNTxOvbFw==} + engines: {node: '>=16.0.0'} + dev: true + /deepmerge@4.3.1: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} @@ -1819,6 +1989,10 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true + /js-base64@3.7.5: + resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} + dev: true + /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2506,6 +2680,12 @@ packages: engines: {node: '>=8'} dev: true + /solid-js@1.6.12: + resolution: {integrity: sha512-JFqRobfG3q5r1l4RYVOAukk6+FWtHpXGIjgh/GEsHKweN/kK+iHOtzUALE6+P5t/jIcSNeGiVitX8gmJg+cYvQ==} + dependencies: + csstype: 3.1.2 + dev: true + /sorcery@0.11.0: resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} hasBin: true @@ -2744,6 +2924,11 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true + /throttle-debounce@5.0.0: + resolution: {integrity: sha512-2iQTSgkkc1Zyk0MeVrt/3BvuOXYPl/R8Z0U2xxo9rjwNciaHDG3R+Lm6dh4EeUci49DanvBnuqI6jshoQQRGEg==} + engines: {node: '>=12.22'} + dev: true + /through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} dependencies: @@ -2821,6 +3006,15 @@ packages: '@fastify/busboy': 2.0.0 dev: true + /unplugin@1.5.1: + resolution: {integrity: sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==} + dependencies: + acorn: 8.11.2 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.1 + dev: true + /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: @@ -2917,6 +3111,15 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false + /webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: true + + /webpack-virtual-modules@0.6.1: + resolution: {integrity: sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==} + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -2975,7 +3178,3 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} dev: true - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false diff --git a/project.inlang.json b/project.inlang.json new file mode 100644 index 0000000..f476817 --- /dev/null +++ b/project.inlang.json @@ -0,0 +1,19 @@ +{ + "$schema": "https://inlang.com/schema/project-settings", + "sourceLanguageTag": "de", + "languageTags": [ + "en", + "de" + ], + "modules": [ + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-empty-pattern@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-identical-pattern@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-missing-translation@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/message-lint-rule-without-source@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/plugin-message-format@latest/dist/index.js", + "https://cdn.jsdelivr.net/npm/@inlang/plugin-m-function-matcher@latest/dist/index.js" + ], + "plugin.inlang.messageFormat": { + "pathPattern": "./messages/{languageTag}.json" + } +} diff --git a/src/lib/components/InputRange.svelte b/src/lib/components/InputRange.svelte index 46c06c6..968c5a2 100644 --- a/src/lib/components/InputRange.svelte +++ b/src/lib/components/InputRange.svelte @@ -1,4 +1,5 @@ + + diff --git a/src/lib/components/Questions.svelte b/src/lib/components/Questions.svelte index 6544198..9d7f0de 100644 --- a/src/lib/components/Questions.svelte +++ b/src/lib/components/Questions.svelte @@ -7,6 +7,7 @@ import InputRange from './InputRange.svelte'; import { goto } from '$app/navigation'; import Loader from './Loader.svelte'; + import * as m from '$paraglide/messages'; let data = persisted<{ name: string; @@ -104,32 +105,29 @@
- + {#if $data.name.length > 99}

- Wir bitten um Entschuldigung, aber dieser Name ist zu lang. (maximal 100 Zeichen) + {m.nameTooLong()}

{:else if $data.showNameLengthError} -

{$data.name.length}/100 Zeichen

+

{$data.name.length}{m.hundredChars()}

{/if} {#if !$data.nameAccepted} {m.saveName()} {/if}
{#if ($data.name && $data.nameAccepted) || $data.confidence !== undefined}
- +
@@ -145,19 +143,17 @@ {#if $data.confidence !== undefined && $data.confidenceAccepted && $data.createPersonality === undefined}
- +
{m.yes()} {m.no()}
{#if $data.adelsTitel} @@ -169,7 +165,7 @@ {#if $data.createPersonality === true}
{#if $data.provideAdelsTitel === undefined} - +
{/if} @@ -201,34 +197,34 @@ {#if loadingAdelsTitel}
-

Adelsnamen werden geschrieben

+

{m.nobleTitlesAreWritten()}

{:else if typeof $data.adelsTitel === 'string'} - - + + {#if $data.adelsTitel.length > 98}

- Wir bitten um Entschuldigung, aber dieser Titel ist zu lang. (maximal 100 Zeichen) + {m.titleTooLong()}

{:else if $data.showAdelsTitelLengthError} -

{$data.adelsTitel.length}/100 Zeichen

+

{$data.adelsTitel.length}{m.hundredChars()}

{/if} {#if !$data.adelsTitelAccepted} {m.accept()} {m.newSuggestions()} {/if} {:else if $data.adelsTitelSuggestions?.length} -

Adelsname Vorschläge

+

{m.titleSuggestions()}


{#each $data.adelsTitelSuggestions as suggestion} {m.newSuggestions()} {/if}
@@ -250,56 +246,55 @@ {#if $data.adelsTitel && $data.adelsTitelAccepted && $data.providePortrait !== false}
{#if $data.providePortrait === undefined} - +
{m.yes()} {m.no()}
{/if} {#if $data.providePortrait && !loadingPortrait && !$data.portraitUrl}

- Wir werden {$data.adelsTitel || $data.name} mit + {m.createNameWith({ name: $data.adelsTitel || $data.name })} - Haut und + {m.skinAnd()} , Haaren zeichnen + + + + + + {m.hairDrawing()}

- + {:else if loadingPortrait}
-

Euer edles Antlitz wird gemalt

+

{m.portraitIsBeingDrawn()}

{:else if $data.portraitUrl}
@@ -309,12 +304,12 @@ {m.acceptPortrait()} {m.requestNewPortrait()} {/if}
@@ -327,12 +322,12 @@
-

Einladung wird abgeschickt

+

{m.invitationIsBeingSend()}

{:else}
- +
{/if} {/if} diff --git a/src/lib/components/maskenball.svelte b/src/lib/components/maskenball.svelte index 32048cf..9e282e7 100644 --- a/src/lib/components/maskenball.svelte +++ b/src/lib/components/maskenball.svelte @@ -1,7 +1,8 @@ -

Willkommen zum Maskenball

+

{m.welcome()}