@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 = 'ausredengenerator';
|
|
5
|
+
const title = 'Ausredengenerator';
|
|
6
|
+
const description = 'Semantische Glรผcksmaschine, um Verpflichtungen mit Stil loszuwerden. Generieren Sie sofort surreale und unwiderlegbare Ausreden.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Kann dieser Generator meine Ehe retten?',
|
|
11
|
+
answer: 'Wir sind zwar keine Therapeuten, aber das Vermeiden dieses Abendessens mit den Schwiegereltern durch einen plausiblen technischen Notfall kann die Spannungen erheblich reduzieren. Mit Verantwortung verwenden.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Warum solch surreale Phrasen?',
|
|
15
|
+
answer: 'Die Strategie basiert auf kognitiver Dissonanz. Wenn man etwas Langweiliges sagt, ist es รผberprรผfbar. Wenn man etwas Absurdes sagt, blockiert die รberraschung die Fรคhigkeit zur Wut.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Generieren', text: 'Klicken Sie auf die Schaltflรคche "Generieren", um eine neue Ausrede zu erstellen.' },
|
|
21
|
+
{ name: 'Kopieren', text: 'Klicken Sie auf die Schaltflรคche "Kopieren", um die Ausrede in Ihre Zwischenablage zu kopieren.' }
|
|
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: 'de',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Hรคufig gestellte Fragen',
|
|
62
|
+
bibliographyTitle: 'Freizeit-Bibliographie',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Surrealer Ausredengenerator',
|
|
65
|
+
description: 'Alibi-Rechner der nรคchsten Generation.',
|
|
66
|
+
subjectLabel: 'Subjekt',
|
|
67
|
+
actionLabel: 'Aktion',
|
|
68
|
+
victimLabel: 'Opfer',
|
|
69
|
+
generateBtn: 'AUSREDE GENERIEREN',
|
|
70
|
+
copyBtn: 'Diesen Wahnsinn kopieren',
|
|
71
|
+
copied: 'Kopiert!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Meine Katze", "Meine Groรmutter", "Der Prรคsident", "Ein Alien", "Mein Nachbar aus der 5. Etage",
|
|
74
|
+
"Das WLAN", "Mein Horoskop", "Ein Zeitreisender", "Die Waschmaschine", "Mein Kรผhlschrank",
|
|
75
|
+
"Der Geist der Weihnacht", "Mein Schatten", "Ein Ninja", "Die vegane Polizei", "Siri",
|
|
76
|
+
"Meine fleischfressende Pflanze", "Der Amazon-Lieferant", "Mein bรถser Klon", "Ein Zauberer", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"hat den Krieg erklรคrt gegen", "hat gefressen", "hat entfรผhrt", "hat angezรผndet",
|
|
80
|
+
"organisiert eine Party in", "hat sich erbrochen auf", "weigert sich zu verlassen",
|
|
81
|
+
"hat gehackt", "hat gestohlen", "hat sich verliebt in", "meditiert รผber",
|
|
82
|
+
"hat einen Zauberspruch gewirkt auf", "protestiert gegen", "hat einen Kult gegrรผndet in",
|
|
83
|
+
"tanzt Samba in", "hat einen Dรคmon beschworen in", "hat den Zugang blockiert zu",
|
|
84
|
+
"hat sich in Gold verwandelt", "versucht zu verkaufen", "hat ein Buch geschrieben รผber"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"meine Hausschlรผssel.", "meinen Lebenswillen.", "das Garagentor.",
|
|
88
|
+
"meine Lieblingshose.", "den Wohnzimmer-Router.", "mein einziges Paar Schuhe.",
|
|
89
|
+
"die Gesetze der Physik.", "meine Wรผrde.", "den Aufzug des Gebรคudes.",
|
|
90
|
+
"meinen Netflix-Account.", "meine Zahnbรผrste.", "meine Hausurkunden.",
|
|
91
|
+
"meine Pogs-Sammlung.", "die Handbremse des Autos.", "meinen Wunsch nach Sozialkontakt.",
|
|
92
|
+
"meinen Kaffeevorrat.", "den Toilettendeckel.", "die TV-Fernbedienung.",
|
|
93
|
+
"meine Glรผckssocken.", "die westliche Zivilisation."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Referenzen'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'Die wissenschaftliche Kunst der perfekten Ausrede', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Wir leben im Zeitalter der Hyperkonnektivitรคt. Ihr Telefon vibriert, Ihre Uhr benachrichtigt Sie und Ihr Terminkalender sieht aus wie ein Tetris-Spiel, das kurz vor dem Verlieren steht. Der Druck, zu allem โJaโ zu sagen, hat eine Epidemie der sozialen Erschรถpfung ausgelรถst.' },
|
|
101
|
+
{ type: 'title', text: 'Die Renaissance von JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Wรคhrend FOMO (Fear of Missing Out) das letzte Jahrzehnt dominierte, plรคdieren Experten fรผr digitales Wohlbefinden nun fรผr <strong>JOMO: Die Freude am Verpassen</strong>. Es geht nicht um Isolation, sondern um Intentionalitรคt.' },
|
|
103
|
+
{ type: 'tip', title: 'Die Formel fรผr das unwiderlegbare Alibi', html: '<strong>Das dissoziierte Subjekt:</strong> Sie sind niemals der Schuldige. Es ist โdas WLANโ, โmeine Katzeโ, โdas Universumโ. Schieben Sie die Schuld auf eine externe Instanz.<br><strong>Die hyperbolische Aktion:</strong> Die Situation muss so absurd oder technisch sein, dass niemand nach Details fragt.<br><strong>Die physische Blockade:</strong> Das Endergebnis muss binรคr sein: Entweder ich gehe oder ich bleibe zu Hause.' },
|
|
104
|
+
{ type: 'title', text: 'Eine kurze Geschichte der Ausrede', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Mittelalter:</strong> โMein Pferd hat ein Hufeisen verlorenโ (Ein zeitloser Klassiker).',
|
|
107
|
+
'<strong>Industrielle Revolution:</strong> โDie Dampfmaschine ist รผberhitztโ.',
|
|
108
|
+
'<strong>Digitales Zeitalter:</strong> โMein Internet ist mitten im Update ausgefallenโ.',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Befreit sofort von sozialem Druck', con: 'รbermรครiger Gebrauch untergrรคbt das Vertrauen' },
|
|
112
|
+
{ pro: 'Schรผtzt Ihre Energie und Grenzen', con: 'Kann Schuldgefรผhle erzeugen, wenn es unvorsichtig benutzt wird' },
|
|
113
|
+
{ pro: 'Kreativer und humorvoller Ton entschรคrft Spannungen', con: 'Nicht fรผr formelle oder professionelle Kontexte geeignet' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Manifest des Prokrastinierers', 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 = 'pembuat-alasan';
|
|
5
|
+
const title = 'Pembuat Alasan';
|
|
6
|
+
const description = 'Mesin perjudian semantik untuk melepaskan diri dari komitmen dengan gaya. Hasilkan alasan yang surealis dan tak terbantahkan secara instan.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Bisakah generator ini menyelamatkan pernikahan saya?',
|
|
11
|
+
answer: 'Meskipun kami bukan terapis, menghindari makan malam dengan mertua menggunakan keadaan darurat teknis yang masuk akal dapat secara signifikan mengurangi ketegangan. Gunakanlah dengan bijak.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Mengapa kalimatnya begitu surealis?',
|
|
15
|
+
answer: 'Strategi ini didasarkan pada Disonansi Kognitif. Jika Anda mengatakan sesuatu yang membosankan, itu dapat diverifikasi. Jika Anda mengatakan sesuatu yang tidak masuk akal, kejutan tersebut akan menghalangi rasa marah seseorang.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Hasilkan', text: 'Klik tombol buat untuk membuat alasan baru.' },
|
|
21
|
+
{ name: 'Salin', text: 'Klik tombol salin untuk memindahkan alasan tersebut ke papan klip Anda.' }
|
|
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: 'id',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
62
|
+
bibliographyTitle: 'Bibliografi Hiburan',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Pembuat Alasan Surealis',
|
|
65
|
+
description: 'Kalkulator alibi generasi berikutnya.',
|
|
66
|
+
subjectLabel: 'Subjek',
|
|
67
|
+
actionLabel: 'Tindakan',
|
|
68
|
+
victimLabel: 'Korban',
|
|
69
|
+
generateBtn: 'HASILKAN ALASAN',
|
|
70
|
+
copyBtn: 'Salin kegilaan ini',
|
|
71
|
+
copied: 'Tersalin!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Kucing saya", "Nenek saya", "Presiden", "Alien", "Tetangga saya dari lantai 5",
|
|
74
|
+
"Wifi", "Horoskop saya", "Penjelajah waktu", "Mesin cuci", "Kulkas saya",
|
|
75
|
+
"Semangat Natal", "Bayangan saya", "Seorang ninja", "Polisi vegan", "Siri",
|
|
76
|
+
"Tanaman karnivora saya", "Kurir Amazon", "Klon jahat saya", "Seorang penyihir", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"telah menyatakan perang terhadap", "telah memakan", "telah menculik", "telah membakar",
|
|
80
|
+
"sedang mengadakan pesta di", "telah muntah di", "menolak untuk meninggalkan",
|
|
81
|
+
"telah meretas", "telah mencuri", "telah jatuh cinta dengan", "sedang merenungkan",
|
|
82
|
+
"telah memberikan mantra pada", "sedang memprotes terhadap", "telah mendirikan aliran sesat di",
|
|
83
|
+
"sedang menari samba di", "telah memanggil iblis di", "telah memblokir akses ke",
|
|
84
|
+
"telah berubah menjadi emas", "sedang mencoba menjual", "telah menulis buku tentang"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"kunci rumah saya.", "keinginan saya untuk hidup.", "pintu garasi.",
|
|
88
|
+
"celana favorit saya.", "router ruang tamu.", "satu-satunya pasang sepatu saya.",
|
|
89
|
+
"hukum fisika.", "martabat saya.", "lift gedung.",
|
|
90
|
+
"akun Netflix saya.", "sikat gigi saya.", "akta rumah saya.",
|
|
91
|
+
"koleksi pogs saya.", "rem tangan mobil.", "keinginan saya untuk bersosialisasi.",
|
|
92
|
+
"persediaan kopi saya.", "tutup toilet.", "remot TV.",
|
|
93
|
+
"kaus kaki keberuntungan saya.", "peradaban Barat."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Referensi'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'Seni Ilmiah dalam Membuat Alasan Sempurna', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Kita hidup di era hiperkoneksi. Ponsel Anda bergetar, jam tangan memberi notifikasi, dan agenda sosial Anda terlihat seperti permainan Tetris yang hampir kalah. Tekanan untuk menyetujui segalanya telah menciptakan epidemi kelelahan sosial.' },
|
|
101
|
+
{ type: 'title', text: 'Kebangkitan JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Meskipun FOMO (Fear of Missing Out) mendominasi dekade terakhir, para pakar kesehatan digital kini menganjurkan <strong>JOMO: Kegembiraan dalam Melewatkan Sesuatu</strong>. Ini bukan tentang isolasi, tetapi tentang intensionalitas.' },
|
|
103
|
+
{ type: 'tip', title: 'Formula Alibi yang Tak Terbantahkan', html: '<strong>Subjek yang Terdisosiasi:</strong> Anda tidak pernah menjadi pelakunya. Itu adalah "wifi", "kucing saya", "alam semesta". Alihkan kesalahan ke entitas eksternal.<br><strong>Tindakan Hiperbolik:</strong> Situasinya harus cukup tidak masuk akal atau cukup teknis sehingga tidak ada yang menanyakan detailnya.<br><strong>Blok Fisik:</strong> Hasil akhirnya harus biner: saya pergi atau saya tetap di rumah.' },
|
|
104
|
+
{ type: 'title', text: 'Sejarah Singkat Alasan', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Abad Pertengahan:</strong> "Kuda saya kehilangan tapalnya" (Klasik sepanjang masa).',
|
|
107
|
+
'<strong>Revolusi Industri:</strong> "Mesin uapnya terlalu panas".',
|
|
108
|
+
'<strong>Era Digital:</strong> "Internet saya terputus tepat di tengah pembaruan".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Meringankan tekanan sosial secara instan', con: 'Penggunaan berlebihan merusak kepercayaan' },
|
|
112
|
+
{ pro: 'Melindungi energi dan batasan Anda', con: 'Dapat menimbulkan rasa bersalah jika digunakan sembarangan' },
|
|
113
|
+
{ pro: 'Nada kreatif dan humoris meredakan ketegangan', con: 'Tidak cocok untuk konteks formal atau profesional' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Manifesto Penunda', 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 = 'generatore-di-scuse';
|
|
5
|
+
const title = 'Generatore di Scuse';
|
|
6
|
+
const description = 'Macchina d\'azzardo semantica per liberarsi dagli impegni con stile. Genera istantaneamente scuse surreali e inconfutabili.';
|
|
7
|
+
|
|
8
|
+
const faq: ExcuseGeneratorLocaleContent['faq'] = [
|
|
9
|
+
{
|
|
10
|
+
question: 'Questo generatore puรฒ salvare il mio matrimonio?',
|
|
11
|
+
answer: 'Pur non essendo terapeuti, evitare quella cena con i suoceri usando un\'emergenza tecnica plausibile puรฒ ridurre significativamente la tensione. Usare responsabilmente.'
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
question: 'Perchรฉ frasi cosรฌ surreali?',
|
|
15
|
+
answer: 'La strategia si basa sulla dissonanza cognitiva. Se dici qualcosa di noioso, รจ verificabile. Se dici qualcosa di assurdo, la sorpresa blocca la capacitร di arrabbiarsi.'
|
|
16
|
+
}
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
const howTo: ExcuseGeneratorLocaleContent['howTo'] = [
|
|
20
|
+
{ name: 'Genera', text: 'Clicca sul pulsante genera per creare una nuova scusa.' },
|
|
21
|
+
{ name: 'Copia', text: 'Clicca sul pulsante copia per portare la scusa negli appunti.' }
|
|
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: 'it',
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const content: ExcuseGeneratorLocaleContent = {
|
|
58
|
+
slug,
|
|
59
|
+
title,
|
|
60
|
+
description,
|
|
61
|
+
faqTitle: 'Domande Frequenti',
|
|
62
|
+
bibliographyTitle: 'Bibliografia del Tempo Libero',
|
|
63
|
+
ui: {
|
|
64
|
+
title: 'Generatore di Scuse Surreali',
|
|
65
|
+
description: 'Calcolatore di alibi di nuova generazione.',
|
|
66
|
+
subjectLabel: 'Soggetto',
|
|
67
|
+
actionLabel: 'Azione',
|
|
68
|
+
victimLabel: 'Vittima',
|
|
69
|
+
generateBtn: 'GENERA SCUSA',
|
|
70
|
+
copyBtn: 'Copia questa follia',
|
|
71
|
+
copied: 'Copiato!',
|
|
72
|
+
starts: JSON.stringify([
|
|
73
|
+
"Il mio gatto", "Mia nonna", "Il presidente", "Un alieno", "Il mio vicino del 5ยฐ piano",
|
|
74
|
+
"Il wifi", "Il mio oroscopo", "Un viaggiatore nel tempo", "La lavatrice", "Il mio frigorifero",
|
|
75
|
+
"Lo spirito del Natale", "La mia ombra", "Un ninja", "La polizia vegana", "Siri",
|
|
76
|
+
"La mia pianta carnivora", "Il fattorino di Amazon", "Il mio clone cattivo", "Un mago", "Godzilla"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"ha dichiarato guerra a", "ha mangiato", "ha rapito", "ha dato fuoco a",
|
|
80
|
+
"sta organizzando una festa a", "ha vomitato su", "si rifiuta di lasciare",
|
|
81
|
+
"ha hackerato", "ha rubato", "si รจ innamorato di", "sta meditando su",
|
|
82
|
+
"ha lanciato un incantesimo su", "sta protestando contro", "ha fondato una setta a",
|
|
83
|
+
"sta ballando il samba a", "ha evocato un demone a", "ha bloccato l'accesso a",
|
|
84
|
+
"si รจ trasformato in oro", "sta cercando di vendere", "ha scritto un libro su"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"le chiavi di casa mia.", "la mia voglia di vivere.", "la porta del garage.",
|
|
88
|
+
"i miei pantaloni preferiti.", "il router del soggiorno.", "il mio unico paio di scarpe.",
|
|
89
|
+
"le leggi della fisica.", "la mia dignitร .", "l'ascensore del palazzo.",
|
|
90
|
+
"il mio account Netflix.", "il mio spazzolino da denti.", "l'atto di proprietร della casa.",
|
|
91
|
+
"la mia collezione di pogs.", "il freno a mano dell'auto.", "il mio desiderio di socializzare.",
|
|
92
|
+
"la mia scorta di caffรจ.", "il coperchio della toilette.", "il telecomando della TV.",
|
|
93
|
+
"i miei calzini fortunati.", "la civiltร occidentale."
|
|
94
|
+
]),
|
|
95
|
+
faqTitle: 'FAQ',
|
|
96
|
+
bibliographyTitle: 'Riferimenti'
|
|
97
|
+
},
|
|
98
|
+
seo: [
|
|
99
|
+
{ type: 'title', text: 'L\'arte scientifica della scusa perfetta', level: 2 },
|
|
100
|
+
{ type: 'paragraph', html: 'Viviamo nell\'era dell\'iperattivitร . Il telefono vibra, l\'orologio invia notifiche e l\'agenda sociale sembra una partita a Tetris che sta per essere persa. La pressione a dire "sรฌ" a tutto ha creato un\'epidemia di esaurimento sociale.' },
|
|
101
|
+
{ type: 'title', text: 'La rinascita di JOMO (Joy of Missing Out)', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: 'Mentre il FOMO (Fear of Missing Out) ha dominato l\'ultimo decennio, gli esperti di benessere digitale ora promuovono la <strong>JOMO: la gioia di perdersi qualcosa</strong>. Non si tratta di isolamento, ma di intenzionalitร .' },
|
|
103
|
+
{ type: 'tip', title: 'La formula per l\'alibi inconfutabile', html: '<strong>Il soggetto dissociato:</strong> non sei mai tu il colpevole. ร "il wifi", "il mio gatto", "l\'universo". Sposta la colpa su un\'entitร esterna.<br><strong>L\'azione iperbolica:</strong> la situazione deve essere abbastanza assurda o tecnica affinchรฉ nessuno chieda i dettagli.<br><strong>Il blocco fisico:</strong> l\'esito finale deve essere binario: o vado o resto a casa.' },
|
|
104
|
+
{ type: 'title', text: 'Breve storia della scusa', level: 3 },
|
|
105
|
+
{ type: 'list', items: [
|
|
106
|
+
'<strong>Medioevo:</strong> "Il mio cavallo ha perso un ferro" (un classico intramontabile).',
|
|
107
|
+
'<strong>Rivoluzione industriale:</strong> "La macchina a vapore si รจ surriscaldata".',
|
|
108
|
+
'<strong>Era digitale:</strong> "La connessione รจ caduta proprio durante l\'aggiornamento".',
|
|
109
|
+
]},
|
|
110
|
+
{ type: 'proscons', items: [
|
|
111
|
+
{ pro: 'Allevia istantaneamente la pressione sociale', con: 'L\'uso eccessivo erode la fiducia' },
|
|
112
|
+
{ pro: 'Protegge la tua energia e i tuoi confini', con: 'Puรฒ generare sensi di colpa se usato con noncuranza' },
|
|
113
|
+
{ pro: 'Il tono creativo e umoristico smorza la tensione', con: 'Non adatto a contesti formali o professionali' },
|
|
114
|
+
]},
|
|
115
|
+
],
|
|
116
|
+
faq,
|
|
117
|
+
bibliography: [
|
|
118
|
+
{ name: 'Manifesto del Procrastinatore', 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 = 'excuse-generator-ja';
|
|
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: 'ja',
|
|
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
|
+
"Wifiใ", "ๆๅ ใใ", "ใฟใคใ ใใฉใใฉใผใ", "ๆดๆฟฏๆฉใ", "ๅท่ตๅบซใ",
|
|
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๏ผJoy of Missing Out๏ผใฎใซใใตใณใน', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: '้ๅป10ๅนด้ใฏFOMO๏ผๅใๆฎใใใๆๆ๏ผใๆฏ้
ใใฆใใพใใใใ็พๅจใใธใฟใซใฆใงใซใในใฎๅฐ้ๅฎถใฏ<strong>JOMO๏ผๅใๆฎใใใๅใณ</strong>ใๆๅฑใใฆใใพใใใใใฏๅญค็ซใงใฏใชใใๆๅณ็ใช้ธๆใฎใใจใงใใ' },
|
|
103
|
+
{ type: 'tip', title: 'ๅ่ซใฎไฝๅฐใฎใชใใขใชใใคใฎๅ
ฌๅผ', html: '<strong>ไธป่ชใๅ้ขใใ๏ผ</strong> ใใชใ่ช่บซใฏๆฑบใใฆๅ ๅฎณ่
ใงใฏใใใพใใใใWifiใใ็ซใใๅฎๅฎใใชใฉใ่ฒฌไปปใๅค้จใซ่ปขๅซใใพใใใใ<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 = 'excuse-generator-ko';
|
|
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: 'ko',
|
|
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
|
+
"์์ดํ์ด๊ฐ", "๋ด ๋ณ์๋ฆฌ๊ฐ", "์๊ฐ ์ฌํ์๊ฐ", "์ธํ๊ธฐ๊ฐ", "์ฐ๋ฆฌ ์ง ๋์ฅ๊ณ ๊ฐ",
|
|
75
|
+
"ํฌ๋ฆฌ์ค๋ง์ค์ ์ ๋ น์ด", "๋ด ๊ทธ๋ฆผ์๊ฐ", "๋์๊ฐ", "์ฑ์ ๊ฒฝ์ฐฐ์ด", "์๋ฆฌ๊ฐ",
|
|
76
|
+
"๋ด ์์ถฉ์๋ฌผ์ด", "์๋ง์กด ๋ฐฐ๋ฌ์์ด", "๋์ ์ฌ์
ํ ํด๋ก ์ด", "๋ง๋ฒ์ฌ๊ฐ", "๊ณ ์ง๋ผ๊ฐ"
|
|
77
|
+
]),
|
|
78
|
+
middles: JSON.stringify([
|
|
79
|
+
"์๊ฒ ์ ์ ํฌ๊ณ ๋ฅผ ํด์", "๋ฅผ ๋จน์ด ์น์์", "๋ฅผ ๋ฉ์นํด์", "์ ๋ถ์ ์ง๋ฌ์",
|
|
80
|
+
"์์ ํํฐ๋ฅผ ์ด๊ณ ์์ด์", "์ ๊ตฌํ ๋ฅผ ํด์", "์์ ๋๊ฐ๊ธฐ๋ฅผ ๊ฑฐ๋ถํด์",
|
|
81
|
+
"๋ฅผ ํดํนํด์", "๋ฅผ ํ์ณ ๊ฐ์", "์ ์ฌ๋์ ๋น ์ ธ์", "์ ๋ํด ๋ช
์ ์ค์ด๋ผ์",
|
|
82
|
+
"์๊ฒ ์ฃผ๋ฌธ์ ๊ฑธ์ด์", "์ ๋ฐ๋ํ๋ ์์๋ฅผ ํด์", "์ ์ฌ์ด๋น ์ข
๊ต๋ฅผ ์ธ์์",
|
|
83
|
+
"์์ ์ผ๋ฐ ์ถค์ ์ถ๊ณ ์์ด์", "์์ ์
๋ง๋ฅผ ์ํํด์", "์ ์ ์์ ์ฐจ๋จํด์",
|
|
84
|
+
"๊ฐ ํฉ๊ธ์ผ๋ก ๋ณํด๋ฒ๋ ค์", "๋ฅผ ํ๋ ค๊ณ ์๋ ์ค์ด๋ผ์", "์ ๋ํ ์ฑ
์ ์ฐ๊ณ ์์ด์"
|
|
85
|
+
]),
|
|
86
|
+
ends: JSON.stringify([
|
|
87
|
+
"์ง ์ด์ ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.", "์ถ์ ์์์ ์์์ต๋๋ค.", "์ฐจ๊ณ ๋ฌธ์ด ๊ณ ์ฅ ๋ฌ์ต๋๋ค.",
|
|
88
|
+
"๊ฐ์ฅ ์๋ผ๋ ๋ฐ์ง๊ฐ ์ฐข์ด์ก์ต๋๋ค.", "๊ฑฐ์ค ๊ณต์ ๊ธฐ๊ฐ ํญ๋ฐํ์ต๋๋ค.", "์ ๋ฐ ํ ์ง์ด ์ฌ๋ผ์ก์ต๋๋ค.",
|
|
89
|
+
"๋ฌผ๋ฆฌํ์ ๋ฒ์น์ ๊ฑฐ์ค๋ฅด๊ณ ์์ต๋๋ค.", "์กด์์ฑ์ ์์์ต๋๋ค.", "๊ฑด๋ฌผ ์๋ฆฌ๋ฒ ์ดํฐ๊ฐ ๋ฉ์ท์ต๋๋ค.",
|
|
90
|
+
"๋ทํ๋ฆญ์ค ๊ณ์ ์ด ๋์ฉ๋นํ์ต๋๋ค.", "์นซ์์ด ๊ฐ์ถํ์ต๋๋ค.", "์ง ๋ฌธ์๊ฐ ํ๋ฒ๋ ธ์ต๋๋ค.",
|
|
91
|
+
"๋ฑ์ง ์ปฌ๋ ์
์ด ์๋ง์ด ๋์์ต๋๋ค.", "์๋์ฐจ ํธ๋๋ธ๋ ์ดํฌ๊ฐ ํ๋ ธ์ต๋๋ค.", "์ฌํ์ ์๊ตฌ๊ฐ ์์ง๋์์ต๋๋ค.",
|
|
92
|
+
"์ปคํผ ์๋๊ฐ ๋จ์ด์ก์ต๋๋ค.", "๋ณ๊ธฐ ๋๊ป์ด ์ด๋ฆฌ์ง ์์ต๋๋ค.", "TV ๋ฆฌ๋ชจ์ปจ์ด ์ฌ๋ผ์ก์ต๋๋ค.",
|
|
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(Joy of Missing Out)์ ๋ฅด๋ค์์ค', level: 3 },
|
|
102
|
+
{ type: 'paragraph', html: '์ง๋ 10๋
๋์ FOMO(์์ธ๋๋ ๊ฒ์ ๋ํ ๋๋ ค์)๊ฐ ์ง๋ฐฐ์ ์ด์๋ค๋ฉด, ์ด์ ๋์งํธ ์ฐ๋น ์ ๋ฌธ๊ฐ๋ค์ <strong>JOMO: ๋์น๋ ๊ฒ์ ๋ํ ์ฆ๊ฑฐ์</strong>์ ์นํธํฉ๋๋ค. ์ด๊ฒ์ ๊ณ ๋ฆฝ์ด ์๋๋ผ ์๋์ ์ธ ์ ํ์ ๊ดํ ๊ฒ์
๋๋ค.' },
|
|
103
|
+
{ type: 'tip', title: '๋ฐ๋ฐํ ์ ์๋ ์๋ฆฌ๋ฐ์ด๋ฅผ ์ํ ๊ณต์', html: '<strong>์ฃผ์ด ๋ถ๋ฆฌํ๊ธฐ:</strong> ๋น์ ์ ๊ฒฐ์ฝ ๊ฐํด์๊ฐ ์๋๋๋ค. "์์ดํ์ด", "์ฐ๋ฆฌ ์ง ๊ณ ์์ด", "์ฐ์ฃผ" ๋ฑ ์ธ๋ถ ์กด์ฌ์๊ฒ ์ฑ
์์ ์ ๊ฐํ์ธ์.<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
|
+
};
|