@jjlmoya/utils-creative 1.7.0 → 1.8.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 -1
- package/src/category/i18n/de.ts +9 -0
- package/src/category/i18n/id.ts +9 -0
- package/src/category/i18n/it.ts +9 -0
- package/src/category/i18n/ja.ts +9 -0
- package/src/category/i18n/ko.ts +9 -0
- package/src/category/i18n/nl.ts +9 -0
- package/src/category/i18n/pl.ts +9 -0
- package/src/category/i18n/pt.ts +9 -0
- package/src/category/i18n/ru.ts +9 -0
- package/src/category/i18n/sv.ts +9 -0
- package/src/category/i18n/tr.ts +9 -0
- package/src/category/i18n/zh.ts +9 -0
- package/src/category/index.ts +12 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/title_quality.test.ts +3 -3
- package/src/tool/bead-pattern-generator/i18n/de.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/en.ts +1 -1
- package/src/tool/bead-pattern-generator/i18n/es.ts +1 -1
- package/src/tool/bead-pattern-generator/i18n/fr.ts +1 -1
- package/src/tool/bead-pattern-generator/i18n/id.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/it.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/ja.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/ko.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/nl.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/pl.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/pt.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/ru.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/sv.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/tr.ts +115 -0
- package/src/tool/bead-pattern-generator/i18n/zh.ts +115 -0
- package/src/tool/bead-pattern-generator/index.ts +12 -0
- package/src/tool/dice-roller/i18n/de.ts +138 -0
- package/src/tool/dice-roller/i18n/id.ts +138 -0
- package/src/tool/dice-roller/i18n/it.ts +138 -0
- package/src/tool/dice-roller/i18n/ja.ts +138 -0
- package/src/tool/dice-roller/i18n/ko.ts +138 -0
- package/src/tool/dice-roller/i18n/nl.ts +138 -0
- package/src/tool/dice-roller/i18n/pl.ts +138 -0
- package/src/tool/dice-roller/i18n/pt.ts +138 -0
- package/src/tool/dice-roller/i18n/ru.ts +138 -0
- package/src/tool/dice-roller/i18n/sv.ts +138 -0
- package/src/tool/dice-roller/i18n/tr.ts +138 -0
- package/src/tool/dice-roller/i18n/zh.ts +138 -0
- package/src/tool/dice-roller/index.ts +12 -0
- package/src/tool/excuse-generator/i18n/de.ts +122 -0
- package/src/tool/excuse-generator/i18n/id.ts +122 -0
- package/src/tool/excuse-generator/i18n/it.ts +122 -0
- package/src/tool/excuse-generator/i18n/ja.ts +122 -0
- package/src/tool/excuse-generator/i18n/ko.ts +122 -0
- package/src/tool/excuse-generator/i18n/nl.ts +122 -0
- package/src/tool/excuse-generator/i18n/pl.ts +122 -0
- package/src/tool/excuse-generator/i18n/pt.ts +122 -0
- package/src/tool/excuse-generator/i18n/ru.ts +122 -0
- package/src/tool/excuse-generator/i18n/sv.ts +122 -0
- package/src/tool/excuse-generator/i18n/tr.ts +122 -0
- package/src/tool/excuse-generator/i18n/zh.ts +122 -0
- package/src/tool/excuse-generator/index.ts +12 -0
- package/src/tool/fortune-cookie/i18n/de.ts +127 -0
- package/src/tool/fortune-cookie/i18n/id.ts +127 -0
- package/src/tool/fortune-cookie/i18n/it.ts +127 -0
- package/src/tool/fortune-cookie/i18n/ja.ts +127 -0
- package/src/tool/fortune-cookie/i18n/ko.ts +127 -0
- package/src/tool/fortune-cookie/i18n/nl.ts +127 -0
- package/src/tool/fortune-cookie/i18n/pl.ts +127 -0
- package/src/tool/fortune-cookie/i18n/pt.ts +127 -0
- package/src/tool/fortune-cookie/i18n/ru.ts +127 -0
- package/src/tool/fortune-cookie/i18n/sv.ts +127 -0
- package/src/tool/fortune-cookie/i18n/tr.ts +127 -0
- package/src/tool/fortune-cookie/i18n/zh.ts +127 -0
- package/src/tool/fortune-cookie/index.ts +12 -0
- package/src/tool/synesthesia-painter/i18n/de.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/fr.ts +2 -2
- package/src/tool/synesthesia-painter/i18n/id.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/it.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/ja.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/ko.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/nl.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/pl.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/pt.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/ru.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/sv.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/tr.ts +122 -0
- package/src/tool/synesthesia-painter/i18n/zh.ts +122 -0
- package/src/tool/synesthesia-painter/index.ts +12 -0
- package/src/tool/zalgo-generator/i18n/de.ts +113 -0
- package/src/tool/zalgo-generator/i18n/id.ts +113 -0
- package/src/tool/zalgo-generator/i18n/it.ts +113 -0
- package/src/tool/zalgo-generator/i18n/ja.ts +113 -0
- package/src/tool/zalgo-generator/i18n/ko.ts +113 -0
- package/src/tool/zalgo-generator/i18n/nl.ts +113 -0
- package/src/tool/zalgo-generator/i18n/pl.ts +113 -0
- package/src/tool/zalgo-generator/i18n/pt.ts +113 -0
- package/src/tool/zalgo-generator/i18n/ru.ts +113 -0
- package/src/tool/zalgo-generator/i18n/sv.ts +113 -0
- package/src/tool/zalgo-generator/i18n/tr.ts +113 -0
- package/src/tool/zalgo-generator/i18n/zh.ts +113 -0
- package/src/tool/zalgo-generator/index.ts +12 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'smoezen-generator';
|
|
5
|
+
const title = 'Smoezen Generator';
|
|
6
|
+
const description = 'Semantische gokmachine om stijlvol van je verplichtingen af te komen. Genereer direct surreële en onweerlegbare smoezen.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Kan deze generator mijn huwelijk redden?',
|
|
11
|
+
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.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Waarom zulke surreële zinnen?',
|
|
15
|
+
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.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Genereer', text: 'Klik op de genereerknop om een nieuwe smoes te maken.' },
|
|
21
|
+
{ name: 'Kopieer', text: 'Klik op de kopieerknop om de smoes naar je klembord te kopiëren.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'nl',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Veelgestelde Vragen',
|
|
62
|
+
bibliographyTitle: 'Vrijetijdsbibliografie',
|
|
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
|
+
{ name: 'Manifest van de Uitsteller', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'generator-wymowek';
|
|
5
|
+
const title = 'Generator Wymówek';
|
|
6
|
+
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.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Czy ten generator może uratować moje małżeństwo?',
|
|
11
|
+
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.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Dlaczego zdania są tak surrealistyczne?',
|
|
15
|
+
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.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Generuj', text: 'Kliknij przycisk generowania, aby stworzyć nową wymówkę.' },
|
|
21
|
+
{ name: 'Kopiuj', text: 'Kliknij przycisk kopiowania, aby przenieść wymówkę do schowka.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'pl',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Najczęściej Zadawane Pytania',
|
|
62
|
+
bibliographyTitle: 'Bibliografia Czasu Wolnego',
|
|
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
|
+
{ name: 'Manifest Prokrastynatora', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'gerador-de-desculpas';
|
|
5
|
+
const title = 'Gerador de Desculpas';
|
|
6
|
+
const description = 'Máquina de jogo semântica para se livrar de compromissos com estilo. Gere desculpas surreais e irrefutáveis instantaneamente.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Este gerador pode salvar o meu casamento?',
|
|
11
|
+
answer: 'Embora não sejamos terapeutas, evitar aquele jantar com os sogros usando uma emergência técnica plausível pode reduzir significativamente a tensão. Use com responsabilidade.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Por que frases tão surreais?',
|
|
15
|
+
answer: 'A estratégia baseia-se na Dissonância Cognitiva. Se disser algo aborrecido, é verificável. Se disser algo absurdo, a surpresa bloqueia a capacidade de sentir raiva.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Gerar', text: 'Clique no botão gerar para criar uma nova desculpa.' },
|
|
21
|
+
{ name: 'Copiar', text: 'Clique no botão copiar para levar a desculpa para a área de transferência.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'pt',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Perguntas Frequentes',
|
|
62
|
+
bibliographyTitle: 'Bibliografia de Lazer',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Gerador de Desculpas Surreais',
|
|
65
|
+
description: 'Calculadora de álibis de próxima geração.',
|
|
66
|
+
subjectLabel: 'Sujeito',
|
|
67
|
+
actionLabel: 'Ação',
|
|
68
|
+
victimLabel: 'Vítima',
|
|
69
|
+
generateBtn: 'GERAR DESCULPA',
|
|
70
|
+
copyBtn: 'Copiar esta loucura',
|
|
71
|
+
copied: 'Copiado!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"O meu gato", "A minha avó", "O presidente", "Um alienígena", "O meu vizinho do 5º andar",
|
|
74
|
+
"O wifi", "O meu horóscopo", "Um viajante do tempo", "A máquina de lavar", "O meu frigorífico",
|
|
75
|
+
"O espírito do Natal", "A minha sombra", "Um ninja", "A polícia vegan", "Siri",
|
|
76
|
+
"A minha planta carnívora", "O estafeta da Amazon", "O meu clone maligno", "Um feiticeiro", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"declarou guerra a", "comeu", "sequestrou", "incendiou",
|
|
80
|
+
"está a organizar uma festa em", "vomitou em", "recusa-se a sair de",
|
|
81
|
+
"hackeou", "roubou", "apaixonou-se por", "está a meditar sobre",
|
|
82
|
+
"lançou um feitiço em", "está a protestar contra", "fundou um culto em",
|
|
83
|
+
"está a dançar samba em", "invocou um demónio em", "bloqueou o acesso a",
|
|
84
|
+
"transformou-se em ouro", "está a tentar vender", "escreveu um livro sobre"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"as chaves da minha casa.", "a minha vontade de viver.", "o portão da garagem.",
|
|
88
|
+
"as minhas calças favoritas.", "o router da sala.", "o meu único par de sapatos.",
|
|
89
|
+
"as leis da física.", "a minha dignidade.", "o elevador do prédio.",
|
|
90
|
+
"a minha conta da Netflix.", "a minha escova de dentes.", "as escrituras da casa.",
|
|
91
|
+
"a minha coleção de pogs.", "o travão de mão do carro.", "o meu desejo de socializar.",
|
|
92
|
+
"o meu stock de café.", "a tampa da sanita.", "o comando da TV.",
|
|
93
|
+
"as minhas meias da sorte.", "a civilização ocidental."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Referências'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'A arte científica da desculpa perfeita', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Vivemos na era da hiperconectividade. O seu telemóvel vibra, o seu relógio notifica-o e a sua agenda social parece um jogo de Tetris prestes a perder. A pressão para dizer "sim" a tudo criou uma epidemia de exaustão social.' },
|
|
101
|
+
{ type: 'title', text: 'O Renascimento do JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Enquanto o FOMO (Fear of Missing Out) dominou a última década, especialistas em bem-estar digital defendem agora o <strong>JOMO: a alegria de ficar de fora</strong>. Não se trata de isolamento, mas de intencionalidade.' },
|
|
103
|
+
{ type: 'tip', title: 'A fórmula para o álibi irrefutável', html: '<strong>O sujeito dissociado:</strong> você nunca é o culpado. É "o wifi", "o meu gato", "o universo". Transfira a culpa para uma entidade externa.<br><strong>A ação hiperbólica:</strong> a situação deve ser suficientemente absurda ou técnica para que ninguém peça detalhes.<br><strong>O bloqueio físico:</strong> o resultado final deve ser binário: ou eu vou ou fico em casa.' },
|
|
104
|
+
{ type: 'title', text: 'Breve história da desculpa', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Idade Média:</strong> "O meu cavalo perdeu uma herradura" (um clássico intemporal).',
|
|
107
|
+
'<strong>Revolução Industrial:</strong> "A máquina a vapor sobreaqueceu".',
|
|
108
|
+
'<strong>Era Digital:</strong> "A minha internet caiu bem no meio de uma atualização".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Alivia instantaneamente a pressão social', con: 'O uso excessivo corrói a confiança' },
|
|
112
|
+
{ pro: 'Protege a sua energia e os seus limites', con: 'Pode gerar culpa se usado sem cuidado' },
|
|
113
|
+
{ pro: 'O tom criativo e humorístico dissipa a tensão', con: 'Não é adequado para contextos formais ou profissionais' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Manifesto do Procrastinador', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'генератор-отговорок';
|
|
5
|
+
const title = 'Генератор отговорок';
|
|
6
|
+
const description = 'Семантическая машина для стильного избавления от обязательств. Мгновенно создавайте сюрреалистичные и неопровержимые отговорки.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Может ли этот генератор спасти мой брак?',
|
|
11
|
+
answer: 'Хотя мы не терапевты, возможность избежать того самого ужина с родственниками с помощью правдоподобной технической заминки может значительно снизить напряжение. Используйте ответственно.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Почему фразы такие странные?',
|
|
15
|
+
answer: 'Стратегия основана на когнитивном диссонансе. Если вы скажете что-то скучное, это легко проверить. Если вы скажете что-то абсурдное, эффект неожиданности блокирует способность к гневу.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Создать', text: 'Нажмите кнопку генерации, чтобы создать новую отговорку.' },
|
|
21
|
+
{ name: 'Копировать', text: 'Нажмите кнопку копирования, чтобы сохранить отговорку в буфер обмена.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'ru',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
62
|
+
bibliographyTitle: 'Библиография досуга',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Сюрреалистичный генератор отговорок',
|
|
65
|
+
description: 'Калькулятор алиби нового поколения.',
|
|
66
|
+
subjectLabel: 'Субъект',
|
|
67
|
+
actionLabel: 'Действие',
|
|
68
|
+
victimLabel: 'Объект',
|
|
69
|
+
generateBtn: 'СОЗДАТЬ ОТГОВОРКУ',
|
|
70
|
+
copyBtn: 'Скопировать это безумие',
|
|
71
|
+
copied: 'Скопировано!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Мой кот", "Моя бабушка", "Президент", "Пришелец", "Сосед с 5-го этажа",
|
|
74
|
+
"Wi-fi", "Мой гороскоп", "Путешественник во времени", "Стиральная машина", "Мой холодильник",
|
|
75
|
+
"Дух Рождества", "Моя тень", "Ниндзя", "Веганская полиция", "Siri",
|
|
76
|
+
"Мое плотоядное растение", "Курьер Amazon", "Мой злой клон", "Волшебник", "Годзилла"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"объявил войну", "съел", "похитил", "поджег",
|
|
80
|
+
"устраивает вечеринку в", "вырвал на", "отказывается покидать",
|
|
81
|
+
"взломал", "украл", "влюбился в", "медитирует над",
|
|
82
|
+
"наложил заклинание на", "протестует против", "основал секту в",
|
|
83
|
+
"танцует самбу в", "вызвал демона в", "заблокировал доступ к",
|
|
84
|
+
"превратился в золото", "пытается продать", "написал книгу о"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"моих ключах от дома.", "моей воле к жизни.", "гаражных воротах.",
|
|
88
|
+
"моих любимых штанах.", "роутере в гостиной.", "моей единственной паре обуви.",
|
|
89
|
+
"законах физики.", "моем достоинстве.", "лифте в здании.",
|
|
90
|
+
"моем аккаунте Netflix.", "моей зубной щетке.", "документах на дом.",
|
|
91
|
+
"моей коллекции фишек.", "ручном тормозе машины.", "моем желании общаться.",
|
|
92
|
+
"запасах кофе.", "крышке унитаза.", "пульте от телевизора.",
|
|
93
|
+
"моих счастливых носках.", "западной цивилизации."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Ссылки'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'Научное искусство идеальной отговорки', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Мы живем в эпоху гиперподключенности. Телефон вибрирует, часы присылают уведомления, а ваш социальный календарь напоминает игру в Тетрис за шаг до проигрыша. Давление говорить «да» всему вокруг создало эпидемию социального истощения.' },
|
|
101
|
+
{ type: 'title', text: 'Ренессанс JOMO (Радость от упущенного)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'В то время как FOMO (страх что-то упустить) доминировал в прошлом десятилетии, эксперты по цифровому благополучию теперь выступают за <strong>JOMO: радость от того, что вы что-то пропустили</strong>. Это не про изоляцию, а про осознанность.' },
|
|
103
|
+
{ type: 'tip', title: 'Формула неопровержимого алиби', html: '<strong>Отстраненный субъект:</strong> вы никогда не виноваты. Это «wi-fi», «мой кот» или «вселенная». Переложите вину на внешние силы.<br><strong>Гиперболизированное действие:</strong> ситуация должна быть достаточно абсурдной или технически сложной, чтобы никто не захотел уточнять детали.<br><strong>Физическая преграда:</strong> итоговый результат должен быть бинарным: либо я иду, либо остаюсь дома.' },
|
|
104
|
+
{ type: 'title', text: 'Краткая история отговорки', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Средние века:</strong> «Моя лошадь потеряла подкову» (нестареющая классика).',
|
|
107
|
+
'<strong>Промышленная революция:</strong> «Паровой двигатель перегрелся».',
|
|
108
|
+
'<strong>Цифровая эра:</strong> «Интернет пропал прямо посреди обновления».'
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Мгновенно снимает социальное давление', con: 'Чрезмерное использование разрушает доверие' },
|
|
112
|
+
{ pro: 'Защищает вашу энергию и границы', con: 'Может вызвать чувство вины при бездумном использовании' },
|
|
113
|
+
{ pro: 'Креативный и юмористический тон разряжает обстановку', con: 'Не подходит для официальных или рабочих ситуаций' }
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Манифест прокрастинатора', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ExcuseGeneratorLocaleContent } from '../index';
|
|
3
|
+
|
|
4
|
+
const slug = 'ursaktsgenerator';
|
|
5
|
+
const title = 'Ursaktsgenerator';
|
|
6
|
+
const description = 'Semantisk slumpmaskin för att slippa åtaganden med stil. Generera surrealistiska och oemotsägliga ursäkter omedelbart.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Kan den här generatorn rädda mitt äktenskap?',
|
|
11
|
+
answer: 'Även om vi inte är terapeuter, kan undvikandet av den där middagen med svärföräldrarna genom en rimlig teknisk nödsituation minska spänningen avsevärt. Använd med ansvar.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Varför sådana surrealistiska fraser?',
|
|
15
|
+
answer: 'Strategin bygger på kognitiv dissonans. Om du säger något tråkigt är det verifierbart. Om du säger något absurt, blockerar överraskningen förmågan till vrede.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Generera', text: 'Klicka på generera-knappen för att skapa en ny ursäkt.' },
|
|
21
|
+
{ name: 'Kopiera', text: 'Klicka på kopiera-knappen för att föra över ursäkten till ditt urklipp.' }
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
25
|
+
'@context': 'https://schema.org',
|
|
26
|
+
'@type': 'FAQPage',
|
|
27
|
+
mainEntity: faq.map((item) => ({
|
|
28
|
+
'@type': 'Question',
|
|
29
|
+
name: item.question,
|
|
30
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
31
|
+
})),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const howToSchema: WithContext<HowTo> = {
|
|
35
|
+
'@context': 'https://schema.org',
|
|
36
|
+
'@type': 'HowTo',
|
|
37
|
+
name: title,
|
|
38
|
+
description,
|
|
39
|
+
step: howTo.map((step) => ({
|
|
40
|
+
'@type': 'HowToStep',
|
|
41
|
+
name: step.name,
|
|
42
|
+
text: step.text,
|
|
43
|
+
})),
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
47
|
+
'@context': 'https://schema.org',
|
|
48
|
+
'@type': 'SoftwareApplication',
|
|
49
|
+
name: title,
|
|
50
|
+
description,
|
|
51
|
+
applicationCategory: 'UtilitiesApplication',
|
|
52
|
+
operatingSystem: 'Web',
|
|
53
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
54
|
+
inLanguage: 'sv',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Vanliga frågor',
|
|
62
|
+
bibliographyTitle: 'Fritidsbibliografi',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Surrealistisk Ursaktsgenerator',
|
|
65
|
+
description: 'Nästa generations alibi-kalkylator.',
|
|
66
|
+
subjectLabel: 'Subjekt',
|
|
67
|
+
actionLabel: 'Handling',
|
|
68
|
+
victimLabel: 'Offer',
|
|
69
|
+
generateBtn: 'GENERERA URSAKT',
|
|
70
|
+
copyBtn: 'Kopiera denna galenskap',
|
|
71
|
+
copied: 'Kopierad!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Min katt", "Min mormor", "Presidenten", "En utomjording", "Min granne från 5:e våningen",
|
|
74
|
+
"Wifi", "Mitt horoskop", "En tidsresenär", "Tvättmaskinen", "Mitt kylskåp",
|
|
75
|
+
"Jultomten", "Min skugga", "En ninja", "Veganpolisen", "Siri",
|
|
76
|
+
"Min köttätande växt", "Amazon-budet", "Min onda klon", "En trollkarl", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"har förklarat krig mot", "har ätit upp", "har kidnappat", "har satt eld på",
|
|
80
|
+
"anordnar en fest i", "har kräkts på", "vägrar lämna",
|
|
81
|
+
"har hackat", "har stulit", "har blivit kär i", "mediterar över",
|
|
82
|
+
"har förtrollat", "protesterar mot", "har grundat en kult i",
|
|
83
|
+
"dansar samba i", "har frammanat en demon i", "har blockerat åtkomst till",
|
|
84
|
+
"har förvandlats till guld", "försöker sälja", "har skrivit en bok om"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"mina hemnycklar.", "min livslust.", "garageporten.",
|
|
88
|
+
"mina favoritbyxor.", "routern i vardagsrummet.", "mina enda skor.",
|
|
89
|
+
"fysikens lagar.", "min värdighet.", "byggnadens hiss.",
|
|
90
|
+
"mitt Netflix-konto.", "min tandborste.", "mina lagfarter.",
|
|
91
|
+
"min samling av pogs.", "bilens handbroms.", "min lust att socialisera.",
|
|
92
|
+
"mitt kaffeförråd.", "toalettlocket.", "TV-fjärrkontrollen.",
|
|
93
|
+
"mina lyckostrumpor.", "den västerländska civilisationen."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Referenser'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'Den vetenskapliga konsten att skapa den perfekta ursäkten', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Vi lever i en era av hyperuppkoppling. Din telefon vibrerar, din klocka ger dig notiser, och din sociala agenda ser ut som ett spel Tetris som håller på att förloras. Pressen att säga "ja" till allt har skapat en epidemi av social utmattning.' },
|
|
101
|
+
{ type: 'title', text: 'Renässansen för JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Medan FOMO (Fear of Missing Out) dominerade det senaste decenniet, förespråkar digitala hälsoexperter nu <strong>JOMO: Glädjen i att missa saker</strong>. Det handlar inte om isolering, utan om avsiktlighet.' },
|
|
103
|
+
{ type: 'tip', title: 'Formeln för det oemotsägliga alibit', html: '<strong>Det dissocierade subjektet:</strong> Du är aldrig den skyldige. Det är "wifi", "min katt", "universum". Flytta skulden till en extern enhet.<br><strong>Den hyperboliska handlingen:</strong> Situationen måste vara tillräckligt absurd eller teknisk för att ingen ska fråga efter detaljer.<br><strong>Den fysiska blockaden:</strong> Slutresultatet måste vara binärt: antingen går jag eller så stannar jag hemma.' },
|
|
104
|
+
{ type: 'title', text: 'En kort historia om ursäkten', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Medeltiden:</strong> "Min häst har tappat en sko" (En tidlös klassiker).',
|
|
107
|
+
'<strong>Industriella revolutionen:</strong> "Ångmaskinen blev överhettad".',
|
|
108
|
+
'<strong>Digitala eran:</strong> "Mitt internet lade av mitt i en uppdatering".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Lindrar omedelbart social press', con: 'Överanvändning urholkar förtroendet' },
|
|
112
|
+
{ pro: 'Skyddar din energi och dina gränser', con: 'Kan skapa skuldkänslor om den används vårdslöst' },
|
|
113
|
+
{ pro: 'Kreativ och humoristisk ton dämpar spänningen', con: 'Inte lämplig för formella eller professionella sammanhang' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Prokrastinerarens manifest', url: 'https://example.com/manifesto' }
|
|
119
|
+
],
|
|
120
|
+
howTo,
|
|
121
|
+
schemas: [faqSchema as any, howToSchema as any, appSchema],
|
|
122
|
+
};
|