@jjlmoya/utils-creative 1.26.0 → 1.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/category/i18n/de.ts +2 -2
- package/src/category/i18n/en.ts +2 -2
- package/src/category/i18n/es.ts +2 -2
- package/src/category/i18n/fr.ts +2 -2
- package/src/category/i18n/id.ts +2 -2
- package/src/category/i18n/it.ts +2 -2
- package/src/category/i18n/ja.ts +2 -2
- package/src/category/i18n/ko.ts +2 -2
- package/src/category/i18n/nl.ts +2 -2
- package/src/category/i18n/pl.ts +2 -2
- package/src/category/i18n/pt.ts +2 -2
- package/src/category/i18n/ru.ts +2 -2
- package/src/category/i18n/sv.ts +2 -2
- package/src/category/i18n/tr.ts +2 -2
- package/src/category/i18n/zh.ts +2 -2
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/env.d.ts +1 -1
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +74 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/seo_parity.test.ts +2 -2
- package/src/tests/seo_translation_completeness.test.ts +75 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +17 -17
- package/src/tool/bead-pattern-generator/bibliography.astro +8 -8
- package/src/tool/bead-pattern-generator/i18n/de.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/en.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/es.ts +104 -104
- package/src/tool/bead-pattern-generator/i18n/fr.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/id.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/it.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ja.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ko.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/nl.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/pl.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/pt.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/ru.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/sv.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/tr.ts +111 -111
- package/src/tool/bead-pattern-generator/i18n/zh.ts +111 -111
- package/src/tool/bead-pattern-generator/seo.astro +19 -19
- package/src/tool/dice-roller/bibliography.astro +8 -8
- package/src/tool/dice-roller/i18n/de.ts +134 -134
- package/src/tool/dice-roller/i18n/en.ts +134 -134
- package/src/tool/dice-roller/i18n/es.ts +125 -125
- package/src/tool/dice-roller/i18n/fr.ts +134 -134
- package/src/tool/dice-roller/i18n/id.ts +134 -134
- package/src/tool/dice-roller/i18n/it.ts +134 -134
- package/src/tool/dice-roller/i18n/ja.ts +134 -134
- package/src/tool/dice-roller/i18n/ko.ts +134 -134
- package/src/tool/dice-roller/i18n/nl.ts +134 -134
- package/src/tool/dice-roller/i18n/pl.ts +134 -134
- package/src/tool/dice-roller/i18n/pt.ts +134 -134
- package/src/tool/dice-roller/i18n/ru.ts +134 -134
- package/src/tool/dice-roller/i18n/sv.ts +134 -134
- package/src/tool/dice-roller/i18n/tr.ts +134 -134
- package/src/tool/dice-roller/i18n/zh.ts +134 -134
- package/src/tool/dice-roller/seo.astro +15 -15
- package/src/tool/excuse-generator/bibliography.astro +8 -8
- package/src/tool/excuse-generator/i18n/de.ts +120 -120
- package/src/tool/excuse-generator/i18n/en.ts +120 -120
- package/src/tool/excuse-generator/i18n/es.ts +118 -118
- package/src/tool/excuse-generator/i18n/fr.ts +120 -120
- package/src/tool/excuse-generator/i18n/id.ts +120 -120
- package/src/tool/excuse-generator/i18n/it.ts +120 -120
- package/src/tool/excuse-generator/i18n/ja.ts +120 -120
- package/src/tool/excuse-generator/i18n/ko.ts +120 -120
- package/src/tool/excuse-generator/i18n/nl.ts +120 -120
- package/src/tool/excuse-generator/i18n/pl.ts +120 -120
- package/src/tool/excuse-generator/i18n/pt.ts +120 -120
- package/src/tool/excuse-generator/i18n/ru.ts +120 -120
- package/src/tool/excuse-generator/i18n/sv.ts +120 -120
- package/src/tool/excuse-generator/i18n/tr.ts +120 -120
- package/src/tool/excuse-generator/i18n/zh.ts +120 -120
- package/src/tool/excuse-generator/seo.astro +15 -15
- package/src/tool/fortune-cookie/bibliography.astro +8 -8
- package/src/tool/fortune-cookie/i18n/de.ts +124 -124
- package/src/tool/fortune-cookie/i18n/en.ts +124 -124
- package/src/tool/fortune-cookie/i18n/es.ts +125 -125
- package/src/tool/fortune-cookie/i18n/fr.ts +124 -124
- package/src/tool/fortune-cookie/i18n/id.ts +124 -124
- package/src/tool/fortune-cookie/i18n/it.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ja.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ko.ts +124 -124
- package/src/tool/fortune-cookie/i18n/nl.ts +124 -124
- package/src/tool/fortune-cookie/i18n/pl.ts +124 -124
- package/src/tool/fortune-cookie/i18n/pt.ts +124 -124
- package/src/tool/fortune-cookie/i18n/ru.ts +124 -124
- package/src/tool/fortune-cookie/i18n/sv.ts +124 -124
- package/src/tool/fortune-cookie/i18n/tr.ts +124 -124
- package/src/tool/fortune-cookie/i18n/zh.ts +124 -124
- package/src/tool/fortune-cookie/seo.astro +15 -15
- package/src/tool/synesthesia-painter/bibliography.astro +8 -8
- package/src/tool/synesthesia-painter/i18n/de.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/en.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/es.ts +110 -110
- package/src/tool/synesthesia-painter/i18n/fr.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/id.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/it.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ja.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ko.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/nl.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/pl.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/pt.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/ru.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/sv.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/tr.ts +118 -118
- package/src/tool/synesthesia-painter/i18n/zh.ts +118 -118
- package/src/tool/synesthesia-painter/seo.astro +15 -15
- package/src/tool/zalgo-generator/bibliography.astro +8 -8
- package/src/tool/zalgo-generator/i18n/de.ts +109 -109
- package/src/tool/zalgo-generator/i18n/en.ts +109 -109
- package/src/tool/zalgo-generator/i18n/es.ts +109 -109
- package/src/tool/zalgo-generator/i18n/fr.ts +109 -109
- package/src/tool/zalgo-generator/i18n/id.ts +109 -109
- package/src/tool/zalgo-generator/i18n/it.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ja.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ko.ts +109 -109
- package/src/tool/zalgo-generator/i18n/nl.ts +109 -109
- package/src/tool/zalgo-generator/i18n/pl.ts +109 -109
- package/src/tool/zalgo-generator/i18n/pt.ts +109 -109
- package/src/tool/zalgo-generator/i18n/ru.ts +109 -109
- package/src/tool/zalgo-generator/i18n/sv.ts +109 -109
- package/src/tool/zalgo-generator/i18n/tr.ts +109 -109
- package/src/tool/zalgo-generator/i18n/zh.ts +109 -109
- package/src/tool/zalgo-generator/seo.astro +15 -15
- package/src/types.ts +1 -1
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import { bibliography } from '../bibliography';
|
|
3
|
-
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'smoezen-generator';
|
|
6
|
-
const title = 'Smoezen Generator';
|
|
7
|
-
const description = 'Semantische gokmachine om stijlvol van je verplichtingen af te komen. Genereer direct surreële en onweerlegbare smoezen.';
|
|
8
|
-
|
|
9
|
-
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Kan deze generator mijn huwelijk redden?',
|
|
12
|
-
answer: 'Hoewel we geen therapeuten zijn, kan het vermijden van dat etentje met je schoonfamilie door een plausibele technische noodsituatie de spanning aanzienlijk verminderen. Gebruik met mate.'
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'Waarom zulke surreële zinnen?',
|
|
16
|
-
answer: 'De strategie is gebaseerd op cognitieve dissonantie. Als je iets saais zegt, is het controleerbaar. Als je iets absurds zegt, blokkeert de verrassing het vermogen om boos te worden.'
|
|
17
|
-
}
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
21
|
-
{ name: 'Genereer', text: 'Klik op de genereerknop om een nieuwe smoes te maken.' },
|
|
22
|
-
{ name: 'Kopieer', text: 'Klik op de kopieerknop om de smoes naar je klembord te kopiëren.' }
|
|
23
|
-
];
|
|
24
|
-
|
|
25
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
-
'@context': 'https://schema.org',
|
|
27
|
-
'@type': 'FAQPage',
|
|
28
|
-
mainEntity: faq.map((item) => ({
|
|
29
|
-
'@type': 'Question',
|
|
30
|
-
name: item.question,
|
|
31
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
32
|
-
})),
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
const howToSchema: WithContext<HowTo> = {
|
|
36
|
-
'@context': 'https://schema.org',
|
|
37
|
-
'@type': 'HowTo',
|
|
38
|
-
name: title,
|
|
39
|
-
description,
|
|
40
|
-
step: howTo.map((step) => ({
|
|
41
|
-
'@type': 'HowToStep',
|
|
42
|
-
name: step.name,
|
|
43
|
-
text: step.text,
|
|
44
|
-
})),
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
48
|
-
'@context': 'https://schema.org',
|
|
49
|
-
'@type': 'SoftwareApplication',
|
|
50
|
-
name: title,
|
|
51
|
-
description,
|
|
52
|
-
applicationCategory: 'UtilitiesApplication',
|
|
53
|
-
operatingSystem: 'Web',
|
|
54
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
55
|
-
inLanguage: 'nl',
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
export const content: ExcuseGeneratorLocaleContent = {
|
|
59
|
-
slug,
|
|
60
|
-
title,
|
|
61
|
-
description,
|
|
62
|
-
faqTitle: 'Veelgestelde Vragen',
|
|
63
|
-
ui: {
|
|
64
|
-
title: 'Surreële Smoezen Generator',
|
|
65
|
-
description: 'De alibi-calculator van de volgende generatie.',
|
|
66
|
-
subjectLabel: 'Onderwerp',
|
|
67
|
-
actionLabel: 'Actie',
|
|
68
|
-
victimLabel: 'Slachtoffer',
|
|
69
|
-
generateBtn: 'GENEREER SMOES',
|
|
70
|
-
copyBtn: 'Kopieer deze waanzin',
|
|
71
|
-
copied: 'Gekopieerd!',
|
|
72
|
-
starts: JSON.stringify([
|
|
73
|
-
"Mijn kat", "Mijn grootmoeder", "De president", "Een alien", "Mijn buurman van de 5e verdieping",
|
|
74
|
-
"De wifi", "Mijn horoscoop", "Een tijdreiziger", "De wasmachine", "Mijn koelkast",
|
|
75
|
-
"De geest van Kerstmis", "Mijn schaduw", "Een ninja", "De veganistische politie", "Siri",
|
|
76
|
-
"Mijn vleesetende plant", "De Amazon-bezorger", "Mijn boosaardige kloon", "Een tovenaar", "Godzilla"
|
|
77
|
-
]),
|
|
78
|
-
middles: JSON.stringify([
|
|
79
|
-
"heeft de oorlog verklaard aan", "heeft gegeten", "heeft ontvoerd", "heeft in brand gestoken",
|
|
80
|
-
"organiseert een feest in", "heeft overgegeven op", "weigert te vertrekken uit",
|
|
81
|
-
"heeft gehackt", "heeft gestolen", "is verliefd geworden op", "mediteert over",
|
|
82
|
-
"heeft een spreuk uitgesproken over", "protesteert tegen", "heeft een sekte opgericht in",
|
|
83
|
-
"danst samba in", "heeft een demon opgeroepen in", "heeft de toegang geblokkeerd tot",
|
|
84
|
-
"is in goud veranderd", "probeert te verkopen", "heeft een boek geschreven over"
|
|
85
|
-
]),
|
|
86
|
-
ends: JSON.stringify([
|
|
87
|
-
"mijn huissleutels.", "mijn wil om te leven.", "de garagedeur.",
|
|
88
|
-
"mijn lievelingsbroek.", "de router in de woonkamer.", "mijn enige paar schoenen.",
|
|
89
|
-
"de wetten van de fysica.", "mijn waardigheid.", "de lift van het gebouw.",
|
|
90
|
-
"mijn Netflix-account.", "mijn tandenborstel.", "mijn eigendomsbewijzen.",
|
|
91
|
-
"mijn verzameling pogs.", "de handrem van de auto.", "mijn verlangen om te socialiseren.",
|
|
92
|
-
"mijn koffievoorraad.", "de toiletbril.", "de afstandsbediening van de tv.",
|
|
93
|
-
"mijn gelukssokken.", "de westerse beschaving."
|
|
94
|
-
]),
|
|
95
|
-
faqTitle: 'FAQ',
|
|
96
|
-
bibliographyTitle: 'Referenties'
|
|
97
|
-
},
|
|
98
|
-
seo: [
|
|
99
|
-
{ type: 'title', text: 'De wetenschappelijke kunst van de perfecte smoes', level: 2 },
|
|
100
|
-
{ type: 'paragraph', html: 'We leven in de tijd van hyperconnectiviteit. Je telefoon trilt, je horloge geeft meldingen en je sociale agenda ziet eruit als een spelletje Tetris dat op het punt staat te verliezen. De druk om op alles "ja" te zeggen heeft een epidemie van sociale uitputting veroorzaakt.' },
|
|
101
|
-
{ type: 'title', text: 'De Renaissance van JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
-
{ type: 'paragraph', html: 'Waar FOMO (Fear of Missing Out) het afgelopen decennium domineerde, pleiten digitale welzijnsexperts nu voor <strong>JOMO: de vreugde van het missen</strong>. Het gaat niet om isolatie, maar om intentionaliteit.' },
|
|
103
|
-
{ type: 'tip', title: 'De formule voor het onweerlegbare alibi', html: '<strong>Het gedissocieerde onderwerp:</strong> jij bent nooit de dader. Het is "de wifi", "mijn kat", "het universum". Verplaats de schuld naar een externe entiteit.<br><strong>De hyperbolische actie:</strong> de situatie moet absurd of technisch genoeg zijn zodat niemand naar details vraagt.<br><strong>De fysieke blokkade:</strong> de uiteindelijke uitkomst moet binair zijn: of ik ga, of ik blijf thuis.' },
|
|
104
|
-
{ type: 'title', text: 'Een korte geschiedenis van de smoes', level: 3 },
|
|
105
|
-
{ type: 'list', items: [
|
|
106
|
-
'<strong>Middeleeuwen:</strong> "Mijn paard is een hoefijzer verloren" (een tijdloze klassieker).',
|
|
107
|
-
'<strong>Industriële Revolutie:</strong> "De stoommachine is oververhit".',
|
|
108
|
-
'<strong>Digitale Tijdperk:</strong> "Mijn internet viel uit midden in een update".',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'proscons', items: [
|
|
111
|
-
{ pro: 'Verlicht direct de sociale druk', con: 'Overmatig gebruik schaadt het vertrouwen' },
|
|
112
|
-
{ pro: 'Beschermt je energie en grenzen', con: 'Kan schuldgevoel opwekken bij onzorgvuldig gebruik' },
|
|
113
|
-
{ pro: 'Creatieve en humoristische toon neemt de spanning weg', con: 'Niet geschikt voor formele of professionele contexten' },
|
|
114
|
-
]},
|
|
115
|
-
],
|
|
116
|
-
faq,
|
|
117
|
-
bibliography,
|
|
118
|
-
howTo,
|
|
119
|
-
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
120
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'smoezen-generator';
|
|
6
|
+
const title = 'Smoezen Generator';
|
|
7
|
+
const description = 'Semantische gokmachine om stijlvol van je verplichtingen af te komen. Genereer direct surreële en onweerlegbare smoezen.';
|
|
8
|
+
|
|
9
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Kan deze generator mijn huwelijk redden?',
|
|
12
|
+
answer: 'Hoewel we geen therapeuten zijn, kan het vermijden van dat etentje met je schoonfamilie door een plausibele technische noodsituatie de spanning aanzienlijk verminderen. Gebruik met mate.'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Waarom zulke surreële zinnen?',
|
|
16
|
+
answer: 'De strategie is gebaseerd op cognitieve dissonantie. Als je iets saais zegt, is het controleerbaar. Als je iets absurds zegt, blokkeert de verrassing het vermogen om boos te worden.'
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
21
|
+
{ name: 'Genereer', text: 'Klik op de genereerknop om een nieuwe smoes te maken.' },
|
|
22
|
+
{ name: 'Kopieer', text: 'Klik op de kopieerknop om de smoes naar je klembord te kopiëren.' }
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
+
'@context': 'https://schema.org',
|
|
27
|
+
'@type': 'FAQPage',
|
|
28
|
+
mainEntity: faq.map((item) => ({
|
|
29
|
+
'@type': 'Question',
|
|
30
|
+
name: item.question,
|
|
31
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
32
|
+
})),
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const howToSchema: WithContext<HowTo> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'HowTo',
|
|
38
|
+
name: title,
|
|
39
|
+
description,
|
|
40
|
+
step: howTo.map((step) => ({
|
|
41
|
+
'@type': 'HowToStep',
|
|
42
|
+
name: step.name,
|
|
43
|
+
text: step.text,
|
|
44
|
+
})),
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'SoftwareApplication',
|
|
50
|
+
name: title,
|
|
51
|
+
description,
|
|
52
|
+
applicationCategory: 'UtilitiesApplication',
|
|
53
|
+
operatingSystem: 'Web',
|
|
54
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
55
|
+
inLanguage: 'nl',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
59
|
+
slug,
|
|
60
|
+
title,
|
|
61
|
+
description,
|
|
62
|
+
faqTitle: 'Veelgestelde Vragen',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Surreële Smoezen Generator',
|
|
65
|
+
description: 'De alibi-calculator van de volgende generatie.',
|
|
66
|
+
subjectLabel: 'Onderwerp',
|
|
67
|
+
actionLabel: 'Actie',
|
|
68
|
+
victimLabel: 'Slachtoffer',
|
|
69
|
+
generateBtn: 'GENEREER SMOES',
|
|
70
|
+
copyBtn: 'Kopieer deze waanzin',
|
|
71
|
+
copied: 'Gekopieerd!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Mijn kat", "Mijn grootmoeder", "De president", "Een alien", "Mijn buurman van de 5e verdieping",
|
|
74
|
+
"De wifi", "Mijn horoscoop", "Een tijdreiziger", "De wasmachine", "Mijn koelkast",
|
|
75
|
+
"De geest van Kerstmis", "Mijn schaduw", "Een ninja", "De veganistische politie", "Siri",
|
|
76
|
+
"Mijn vleesetende plant", "De Amazon-bezorger", "Mijn boosaardige kloon", "Een tovenaar", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"heeft de oorlog verklaard aan", "heeft gegeten", "heeft ontvoerd", "heeft in brand gestoken",
|
|
80
|
+
"organiseert een feest in", "heeft overgegeven op", "weigert te vertrekken uit",
|
|
81
|
+
"heeft gehackt", "heeft gestolen", "is verliefd geworden op", "mediteert over",
|
|
82
|
+
"heeft een spreuk uitgesproken over", "protesteert tegen", "heeft een sekte opgericht in",
|
|
83
|
+
"danst samba in", "heeft een demon opgeroepen in", "heeft de toegang geblokkeerd tot",
|
|
84
|
+
"is in goud veranderd", "probeert te verkopen", "heeft een boek geschreven over"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"mijn huissleutels.", "mijn wil om te leven.", "de garagedeur.",
|
|
88
|
+
"mijn lievelingsbroek.", "de router in de woonkamer.", "mijn enige paar schoenen.",
|
|
89
|
+
"de wetten van de fysica.", "mijn waardigheid.", "de lift van het gebouw.",
|
|
90
|
+
"mijn Netflix-account.", "mijn tandenborstel.", "mijn eigendomsbewijzen.",
|
|
91
|
+
"mijn verzameling pogs.", "de handrem van de auto.", "mijn verlangen om te socialiseren.",
|
|
92
|
+
"mijn koffievoorraad.", "de toiletbril.", "de afstandsbediening van de tv.",
|
|
93
|
+
"mijn gelukssokken.", "de westerse beschaving."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Referenties'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'De wetenschappelijke kunst van de perfecte smoes', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'We leven in de tijd van hyperconnectiviteit. Je telefoon trilt, je horloge geeft meldingen en je sociale agenda ziet eruit als een spelletje Tetris dat op het punt staat te verliezen. De druk om op alles "ja" te zeggen heeft een epidemie van sociale uitputting veroorzaakt.' },
|
|
101
|
+
{ type: 'title', text: 'De Renaissance van JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Waar FOMO (Fear of Missing Out) het afgelopen decennium domineerde, pleiten digitale welzijnsexperts nu voor <strong>JOMO: de vreugde van het missen</strong>. Het gaat niet om isolatie, maar om intentionaliteit.' },
|
|
103
|
+
{ type: 'tip', title: 'De formule voor het onweerlegbare alibi', html: '<strong>Het gedissocieerde onderwerp:</strong> jij bent nooit de dader. Het is "de wifi", "mijn kat", "het universum". Verplaats de schuld naar een externe entiteit.<br><strong>De hyperbolische actie:</strong> de situatie moet absurd of technisch genoeg zijn zodat niemand naar details vraagt.<br><strong>De fysieke blokkade:</strong> de uiteindelijke uitkomst moet binair zijn: of ik ga, of ik blijf thuis.' },
|
|
104
|
+
{ type: 'title', text: 'Een korte geschiedenis van de smoes', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Middeleeuwen:</strong> "Mijn paard is een hoefijzer verloren" (een tijdloze klassieker).',
|
|
107
|
+
'<strong>Industriële Revolutie:</strong> "De stoommachine is oververhit".',
|
|
108
|
+
'<strong>Digitale Tijdperk:</strong> "Mijn internet viel uit midden in een update".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Verlicht direct de sociale druk', con: 'Overmatig gebruik schaadt het vertrouwen' },
|
|
112
|
+
{ pro: 'Beschermt je energie en grenzen', con: 'Kan schuldgevoel opwekken bij onzorgvuldig gebruik' },
|
|
113
|
+
{ pro: 'Creatieve en humoristische toon neemt de spanning weg', con: 'Niet geschikt voor formele of professionele contexten' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography,
|
|
118
|
+
howTo,
|
|
119
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
120
|
+
};
|
|
@@ -1,120 +1,120 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import { bibliography } from '../bibliography';
|
|
3
|
-
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
4
|
-
|
|
5
|
-
const slug = 'generator-wymowek';
|
|
6
|
-
const title = 'Generator Wymówek';
|
|
7
|
-
const description = 'Semantyczna maszyna losująca, która pozwoli Ci stylowo wymigać się od zobowiązań. Błyskawicznie generuj surrealistyczne i niepodważalne wymówki.';
|
|
8
|
-
|
|
9
|
-
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
10
|
-
{
|
|
11
|
-
question: 'Czy ten generator może uratować moje małżeństwo?',
|
|
12
|
-
answer: 'Choć nie jesteśmy terapeutami, uniknięcie obiadu z teściami dzięki wiarygodnej awarii technicznej może znacząco obniżyć napięcie. Używaj odpowiedzialnie.'
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
question: 'Dlaczego zdania są tak surrealistyczne?',
|
|
16
|
-
answer: 'Strategia opiera się na dysonansie poznawczym. Jeśli powiesz coś nudnego, można to zweryfikować. Jeśli powiesz coś absurdalnego, zdziwienie blokuje zdolność do gniewu.'
|
|
17
|
-
}
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
21
|
-
{ name: 'Generuj', text: 'Kliknij przycisk generowania, aby stworzyć nową wymówkę.' },
|
|
22
|
-
{ name: 'Kopiuj', text: 'Kliknij przycisk kopiowania, aby przenieść wymówkę do schowka.' }
|
|
23
|
-
];
|
|
24
|
-
|
|
25
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
-
'@context': 'https://schema.org',
|
|
27
|
-
'@type': 'FAQPage',
|
|
28
|
-
mainEntity: faq.map((item) => ({
|
|
29
|
-
'@type': 'Question',
|
|
30
|
-
name: item.question,
|
|
31
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
32
|
-
})),
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
const howToSchema: WithContext<HowTo> = {
|
|
36
|
-
'@context': 'https://schema.org',
|
|
37
|
-
'@type': 'HowTo',
|
|
38
|
-
name: title,
|
|
39
|
-
description,
|
|
40
|
-
step: howTo.map((step) => ({
|
|
41
|
-
'@type': 'HowToStep',
|
|
42
|
-
name: step.name,
|
|
43
|
-
text: step.text,
|
|
44
|
-
})),
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
48
|
-
'@context': 'https://schema.org',
|
|
49
|
-
'@type': 'SoftwareApplication',
|
|
50
|
-
name: title,
|
|
51
|
-
description,
|
|
52
|
-
applicationCategory: 'UtilitiesApplication',
|
|
53
|
-
operatingSystem: 'Web',
|
|
54
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
55
|
-
inLanguage: 'pl',
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
export const content: ExcuseGeneratorLocaleContent = {
|
|
59
|
-
slug,
|
|
60
|
-
title,
|
|
61
|
-
description,
|
|
62
|
-
faqTitle: 'Najczęściej Zadawane Pytania',
|
|
63
|
-
ui: {
|
|
64
|
-
title: 'Surrealistyczny Generator Wymówek',
|
|
65
|
-
description: 'Kalkulator alibi nowej generacji.',
|
|
66
|
-
subjectLabel: 'Podmiot',
|
|
67
|
-
actionLabel: 'Akcja',
|
|
68
|
-
victimLabel: 'Ofiara',
|
|
69
|
-
generateBtn: 'GENERUJ WYMÓWKĘ',
|
|
70
|
-
copyBtn: 'Skopiuj to szaleństwo',
|
|
71
|
-
copied: 'Skopiowano!',
|
|
72
|
-
starts: JSON.stringify([
|
|
73
|
-
"Mój kot", "Moja babcia", "Prezydent", "Obcy", "Mój sąsiad z 5. piętra",
|
|
74
|
-
"Wifi", "Mój horoskop", "Podróżnik w czasie", "Pralka", "Moja lodówka",
|
|
75
|
-
"Duch Świąt", "Mój cień", "Ninja", "Policja wegańska", "Siri",
|
|
76
|
-
"Moja roślina mięsożerna", "Kurier Amazona", "Mój zły klon", "Czarodziej", "Godzilla"
|
|
77
|
-
]),
|
|
78
|
-
middles: JSON.stringify([
|
|
79
|
-
"wypowiedział wojnę", "zjadł", "porwał", "podpalił",
|
|
80
|
-
"organizuje imprezę w", "zwymiotował na", "odmawia opuszczenia",
|
|
81
|
-
"zhakował", "ukradł", "zakochał się w", "medytuje nad",
|
|
82
|
-
"rzucił zaklęcie na", "protestuje przeciwko", "założył kult w",
|
|
83
|
-
"tańczy sambę w", "przywołał demona w", "zablokował dostęp do",
|
|
84
|
-
"zamienił się w złoto", "próbuje sprzedać", "napisał książkę o"
|
|
85
|
-
]),
|
|
86
|
-
ends: JSON.stringify([
|
|
87
|
-
"moich kluczach do domu.", "mojej woli życia.", "bramie garażowej.",
|
|
88
|
-
"moich ulubionych spodniach.", "ruterze w salonie.", "mojej jedynej parze butów.",
|
|
89
|
-
"prawach fizyki.", "mojej godności.", "windzie w budynku.",
|
|
90
|
-
"moim koncie Netflix.", "mojej szczoteczce do zębów.", "akcie własności domu.",
|
|
91
|
-
"mojej kolekcji kapsli.", "hamulcu ręcznym w aucie.", "mojej chęci socjalizacji.",
|
|
92
|
-
"zapasach kawy.", "desce sedesowej.", "pilocie do TV.",
|
|
93
|
-
"moich szczęśliwych skarpetkach.", "cywilizacji zachodniej."
|
|
94
|
-
]),
|
|
95
|
-
faqTitle: 'FAQ',
|
|
96
|
-
bibliographyTitle: 'Źródła'
|
|
97
|
-
},
|
|
98
|
-
seo: [
|
|
99
|
-
{ type: 'title', text: 'Naukowa sztuka wymówki doskonałej', level: 2 },
|
|
100
|
-
{ type: 'paragraph', html: 'Żyjemy w erze hiperłączności. Twój telefon wibruje, zegarek wysyła powiadomienia, a Twój kalendarz towarzyski wygląda jak partia Tetrisa tuż przed przegraną. Presja, by na wszystko mówić \"tak\", stworzyła epidemię wyczerpania społecznego.' },
|
|
101
|
-
{ type: 'title', text: 'Renesans JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
-
{ type: 'paragraph', html: 'Podczas gdy FOMO (Fear of Missing Out) dominowało w ostatniej dekadzie, eksperci od cyfrowego dobrostanu promują teraz <strong>JOMO: Radość z tego, że coś nas omija</strong>. Nie chodzi o izolację, ale o intencjonalność.' },
|
|
103
|
-
{ type: 'tip', title: 'Formuła alibi nie do podważenia', html: '<strong>Podmiot zdystansowany:</strong> Nigdy nie Ty jesteś winny. To \"wifi\", \"mój kot\", \"wszechświat\". Przerzuć winę na byt zewnętrzny.<br><strong>Hiperboliczna akcja:</strong> Sytuacja musi być wystarczająco absurdalna lub techniczna, by nikt nie dopytywał o szczegóły.<br><strong>Blokada fizyczna:</strong> Wynik końcowy musi być binarny: albo idę, albo zostaję w domu.' },
|
|
104
|
-
{ type: 'title', text: 'Krótka historia wymówki', level: 3 },
|
|
105
|
-
{ type: 'list', items: [
|
|
106
|
-
'<strong>Średniowiecze:</strong> \"Mój koń zgubił podkowę\" (ponadczasowa klasyka).',
|
|
107
|
-
'<strong>Rewolucja przemysłowa:</strong> \"Maszyna parowa się przegrzała\".',
|
|
108
|
-
'<strong>Era cyfrowa:</strong> \"Internet padł mi w samym środku aktualizacji\".',
|
|
109
|
-
]},
|
|
110
|
-
{ type: 'proscons', items: [
|
|
111
|
-
{ pro: 'Błyskawicznie łagodzi presję społeczną', con: 'Nadużywanie niszczy zaufanie' },
|
|
112
|
-
{ pro: 'Chroni Twoją energię i granice', con: 'Może budzić poczucie winy, jeśli jest używane bezmyślnie' },
|
|
113
|
-
{ pro: 'Kreatywny i humorystyczny ton rozładowuje napięcie', con: 'Nie nadaje się do kontekstów formalnych lub zawodowych' },
|
|
114
|
-
]},
|
|
115
|
-
],
|
|
116
|
-
faq,
|
|
117
|
-
bibliography,
|
|
118
|
-
howTo,
|
|
119
|
-
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
120
|
-
};
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import { bibliography } from '../bibliography';
|
|
3
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
4
|
+
|
|
5
|
+
const slug = 'generator-wymowek';
|
|
6
|
+
const title = 'Generator Wymówek';
|
|
7
|
+
const description = 'Semantyczna maszyna losująca, która pozwoli Ci stylowo wymigać się od zobowiązań. Błyskawicznie generuj surrealistyczne i niepodważalne wymówki.';
|
|
8
|
+
|
|
9
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Czy ten generator może uratować moje małżeństwo?',
|
|
12
|
+
answer: 'Choć nie jesteśmy terapeutami, uniknięcie obiadu z teściami dzięki wiarygodnej awarii technicznej może znacząco obniżyć napięcie. Używaj odpowiedzialnie.'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Dlaczego zdania są tak surrealistyczne?',
|
|
16
|
+
answer: 'Strategia opiera się na dysonansie poznawczym. Jeśli powiesz coś nudnego, można to zweryfikować. Jeśli powiesz coś absurdalnego, zdziwienie blokuje zdolność do gniewu.'
|
|
17
|
+
}
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
21
|
+
{ name: 'Generuj', text: 'Kliknij przycisk generowania, aby stworzyć nową wymówkę.' },
|
|
22
|
+
{ name: 'Kopiuj', text: 'Kliknij przycisk kopiowania, aby przenieść wymówkę do schowka.' }
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
26
|
+
'@context': 'https://schema.org',
|
|
27
|
+
'@type': 'FAQPage',
|
|
28
|
+
mainEntity: faq.map((item) => ({
|
|
29
|
+
'@type': 'Question',
|
|
30
|
+
name: item.question,
|
|
31
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
32
|
+
})),
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const howToSchema: WithContext<HowTo> = {
|
|
36
|
+
'@context': 'https://schema.org',
|
|
37
|
+
'@type': 'HowTo',
|
|
38
|
+
name: title,
|
|
39
|
+
description,
|
|
40
|
+
step: howTo.map((step) => ({
|
|
41
|
+
'@type': 'HowToStep',
|
|
42
|
+
name: step.name,
|
|
43
|
+
text: step.text,
|
|
44
|
+
})),
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
48
|
+
'@context': 'https://schema.org',
|
|
49
|
+
'@type': 'SoftwareApplication',
|
|
50
|
+
name: title,
|
|
51
|
+
description,
|
|
52
|
+
applicationCategory: 'UtilitiesApplication',
|
|
53
|
+
operatingSystem: 'Web',
|
|
54
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
55
|
+
inLanguage: 'pl',
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
59
|
+
slug,
|
|
60
|
+
title,
|
|
61
|
+
description,
|
|
62
|
+
faqTitle: 'Najczęściej Zadawane Pytania',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Surrealistyczny Generator Wymówek',
|
|
65
|
+
description: 'Kalkulator alibi nowej generacji.',
|
|
66
|
+
subjectLabel: 'Podmiot',
|
|
67
|
+
actionLabel: 'Akcja',
|
|
68
|
+
victimLabel: 'Ofiara',
|
|
69
|
+
generateBtn: 'GENERUJ WYMÓWKĘ',
|
|
70
|
+
copyBtn: 'Skopiuj to szaleństwo',
|
|
71
|
+
copied: 'Skopiowano!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Mój kot", "Moja babcia", "Prezydent", "Obcy", "Mój sąsiad z 5. piętra",
|
|
74
|
+
"Wifi", "Mój horoskop", "Podróżnik w czasie", "Pralka", "Moja lodówka",
|
|
75
|
+
"Duch Świąt", "Mój cień", "Ninja", "Policja wegańska", "Siri",
|
|
76
|
+
"Moja roślina mięsożerna", "Kurier Amazona", "Mój zły klon", "Czarodziej", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"wypowiedział wojnę", "zjadł", "porwał", "podpalił",
|
|
80
|
+
"organizuje imprezę w", "zwymiotował na", "odmawia opuszczenia",
|
|
81
|
+
"zhakował", "ukradł", "zakochał się w", "medytuje nad",
|
|
82
|
+
"rzucił zaklęcie na", "protestuje przeciwko", "założył kult w",
|
|
83
|
+
"tańczy sambę w", "przywołał demona w", "zablokował dostęp do",
|
|
84
|
+
"zamienił się w złoto", "próbuje sprzedać", "napisał książkę o"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"moich kluczach do domu.", "mojej woli życia.", "bramie garażowej.",
|
|
88
|
+
"moich ulubionych spodniach.", "ruterze w salonie.", "mojej jedynej parze butów.",
|
|
89
|
+
"prawach fizyki.", "mojej godności.", "windzie w budynku.",
|
|
90
|
+
"moim koncie Netflix.", "mojej szczoteczce do zębów.", "akcie własności domu.",
|
|
91
|
+
"mojej kolekcji kapsli.", "hamulcu ręcznym w aucie.", "mojej chęci socjalizacji.",
|
|
92
|
+
"zapasach kawy.", "desce sedesowej.", "pilocie do TV.",
|
|
93
|
+
"moich szczęśliwych skarpetkach.", "cywilizacji zachodniej."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Źródła'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'Naukowa sztuka wymówki doskonałej', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Żyjemy w erze hiperłączności. Twój telefon wibruje, zegarek wysyła powiadomienia, a Twój kalendarz towarzyski wygląda jak partia Tetrisa tuż przed przegraną. Presja, by na wszystko mówić \"tak\", stworzyła epidemię wyczerpania społecznego.' },
|
|
101
|
+
{ type: 'title', text: 'Renesans JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Podczas gdy FOMO (Fear of Missing Out) dominowało w ostatniej dekadzie, eksperci od cyfrowego dobrostanu promują teraz <strong>JOMO: Radość z tego, że coś nas omija</strong>. Nie chodzi o izolację, ale o intencjonalność.' },
|
|
103
|
+
{ type: 'tip', title: 'Formuła alibi nie do podważenia', html: '<strong>Podmiot zdystansowany:</strong> Nigdy nie Ty jesteś winny. To \"wifi\", \"mój kot\", \"wszechświat\". Przerzuć winę na byt zewnętrzny.<br><strong>Hiperboliczna akcja:</strong> Sytuacja musi być wystarczająco absurdalna lub techniczna, by nikt nie dopytywał o szczegóły.<br><strong>Blokada fizyczna:</strong> Wynik końcowy musi być binarny: albo idę, albo zostaję w domu.' },
|
|
104
|
+
{ type: 'title', text: 'Krótka historia wymówki', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Średniowiecze:</strong> \"Mój koń zgubił podkowę\" (ponadczasowa klasyka).',
|
|
107
|
+
'<strong>Rewolucja przemysłowa:</strong> \"Maszyna parowa się przegrzała\".',
|
|
108
|
+
'<strong>Era cyfrowa:</strong> \"Internet padł mi w samym środku aktualizacji\".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Błyskawicznie łagodzi presję społeczną', con: 'Nadużywanie niszczy zaufanie' },
|
|
112
|
+
{ pro: 'Chroni Twoją energię i granice', con: 'Może budzić poczucie winy, jeśli jest używane bezmyślnie' },
|
|
113
|
+
{ pro: 'Kreatywny i humorystyczny ton rozładowuje napięcie', con: 'Nie nadaje się do kontekstów formalnych lub zawodowych' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography,
|
|
118
|
+
howTo,
|
|
119
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
120
|
+
};
|