@jjlmoya/utils-creative 1.6.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.
Files changed (117) hide show
  1. package/package.json +63 -62
  2. package/src/category/i18n/de.ts +9 -0
  3. package/src/category/i18n/id.ts +9 -0
  4. package/src/category/i18n/it.ts +9 -0
  5. package/src/category/i18n/ja.ts +9 -0
  6. package/src/category/i18n/ko.ts +9 -0
  7. package/src/category/i18n/nl.ts +9 -0
  8. package/src/category/i18n/pl.ts +9 -0
  9. package/src/category/i18n/pt.ts +9 -0
  10. package/src/category/i18n/ru.ts +9 -0
  11. package/src/category/i18n/sv.ts +9 -0
  12. package/src/category/i18n/tr.ts +9 -0
  13. package/src/category/i18n/zh.ts +9 -0
  14. package/src/category/index.ts +12 -0
  15. package/src/tests/faq_count.test.ts +1 -1
  16. package/src/tests/i18n_coverage.test.ts +36 -0
  17. package/src/tests/locale_completeness.test.ts +2 -2
  18. package/src/tests/schemas_fulfillment.test.ts +23 -0
  19. package/src/tests/title_quality.test.ts +55 -0
  20. package/src/tests/tool_validation.test.ts +2 -2
  21. package/src/tool/bead-pattern-generator/i18n/de.ts +115 -0
  22. package/src/tool/bead-pattern-generator/i18n/en.ts +59 -17
  23. package/src/tool/bead-pattern-generator/i18n/es.ts +59 -17
  24. package/src/tool/bead-pattern-generator/i18n/fr.ts +59 -17
  25. package/src/tool/bead-pattern-generator/i18n/id.ts +115 -0
  26. package/src/tool/bead-pattern-generator/i18n/it.ts +115 -0
  27. package/src/tool/bead-pattern-generator/i18n/ja.ts +115 -0
  28. package/src/tool/bead-pattern-generator/i18n/ko.ts +115 -0
  29. package/src/tool/bead-pattern-generator/i18n/nl.ts +115 -0
  30. package/src/tool/bead-pattern-generator/i18n/pl.ts +115 -0
  31. package/src/tool/bead-pattern-generator/i18n/pt.ts +115 -0
  32. package/src/tool/bead-pattern-generator/i18n/ru.ts +115 -0
  33. package/src/tool/bead-pattern-generator/i18n/sv.ts +115 -0
  34. package/src/tool/bead-pattern-generator/i18n/tr.ts +115 -0
  35. package/src/tool/bead-pattern-generator/i18n/zh.ts +115 -0
  36. package/src/tool/bead-pattern-generator/index.ts +12 -0
  37. package/src/tool/dice-roller/i18n/de.ts +138 -0
  38. package/src/tool/dice-roller/i18n/en.ts +74 -32
  39. package/src/tool/dice-roller/i18n/es.ts +74 -32
  40. package/src/tool/dice-roller/i18n/fr.ts +74 -32
  41. package/src/tool/dice-roller/i18n/id.ts +138 -0
  42. package/src/tool/dice-roller/i18n/it.ts +138 -0
  43. package/src/tool/dice-roller/i18n/ja.ts +138 -0
  44. package/src/tool/dice-roller/i18n/ko.ts +138 -0
  45. package/src/tool/dice-roller/i18n/nl.ts +138 -0
  46. package/src/tool/dice-roller/i18n/pl.ts +138 -0
  47. package/src/tool/dice-roller/i18n/pt.ts +138 -0
  48. package/src/tool/dice-roller/i18n/ru.ts +138 -0
  49. package/src/tool/dice-roller/i18n/sv.ts +138 -0
  50. package/src/tool/dice-roller/i18n/tr.ts +138 -0
  51. package/src/tool/dice-roller/i18n/zh.ts +138 -0
  52. package/src/tool/dice-roller/index.ts +12 -0
  53. package/src/tool/excuse-generator/i18n/de.ts +122 -0
  54. package/src/tool/excuse-generator/i18n/en.ts +60 -18
  55. package/src/tool/excuse-generator/i18n/es.ts +60 -18
  56. package/src/tool/excuse-generator/i18n/fr.ts +60 -18
  57. package/src/tool/excuse-generator/i18n/id.ts +122 -0
  58. package/src/tool/excuse-generator/i18n/it.ts +122 -0
  59. package/src/tool/excuse-generator/i18n/ja.ts +122 -0
  60. package/src/tool/excuse-generator/i18n/ko.ts +122 -0
  61. package/src/tool/excuse-generator/i18n/nl.ts +122 -0
  62. package/src/tool/excuse-generator/i18n/pl.ts +122 -0
  63. package/src/tool/excuse-generator/i18n/pt.ts +122 -0
  64. package/src/tool/excuse-generator/i18n/ru.ts +122 -0
  65. package/src/tool/excuse-generator/i18n/sv.ts +122 -0
  66. package/src/tool/excuse-generator/i18n/tr.ts +122 -0
  67. package/src/tool/excuse-generator/i18n/zh.ts +122 -0
  68. package/src/tool/excuse-generator/index.ts +12 -0
  69. package/src/tool/fortune-cookie/i18n/de.ts +127 -0
  70. package/src/tool/fortune-cookie/i18n/en.ts +60 -18
  71. package/src/tool/fortune-cookie/i18n/es.ts +60 -18
  72. package/src/tool/fortune-cookie/i18n/fr.ts +60 -18
  73. package/src/tool/fortune-cookie/i18n/id.ts +127 -0
  74. package/src/tool/fortune-cookie/i18n/it.ts +127 -0
  75. package/src/tool/fortune-cookie/i18n/ja.ts +127 -0
  76. package/src/tool/fortune-cookie/i18n/ko.ts +127 -0
  77. package/src/tool/fortune-cookie/i18n/nl.ts +127 -0
  78. package/src/tool/fortune-cookie/i18n/pl.ts +127 -0
  79. package/src/tool/fortune-cookie/i18n/pt.ts +127 -0
  80. package/src/tool/fortune-cookie/i18n/ru.ts +127 -0
  81. package/src/tool/fortune-cookie/i18n/sv.ts +127 -0
  82. package/src/tool/fortune-cookie/i18n/tr.ts +127 -0
  83. package/src/tool/fortune-cookie/i18n/zh.ts +127 -0
  84. package/src/tool/fortune-cookie/index.ts +12 -0
  85. package/src/tool/synesthesia-painter/i18n/de.ts +122 -0
  86. package/src/tool/synesthesia-painter/i18n/en.ts +74 -32
  87. package/src/tool/synesthesia-painter/i18n/es.ts +74 -32
  88. package/src/tool/synesthesia-painter/i18n/fr.ts +75 -33
  89. package/src/tool/synesthesia-painter/i18n/id.ts +122 -0
  90. package/src/tool/synesthesia-painter/i18n/it.ts +122 -0
  91. package/src/tool/synesthesia-painter/i18n/ja.ts +122 -0
  92. package/src/tool/synesthesia-painter/i18n/ko.ts +122 -0
  93. package/src/tool/synesthesia-painter/i18n/nl.ts +122 -0
  94. package/src/tool/synesthesia-painter/i18n/pl.ts +122 -0
  95. package/src/tool/synesthesia-painter/i18n/pt.ts +122 -0
  96. package/src/tool/synesthesia-painter/i18n/ru.ts +122 -0
  97. package/src/tool/synesthesia-painter/i18n/sv.ts +122 -0
  98. package/src/tool/synesthesia-painter/i18n/tr.ts +122 -0
  99. package/src/tool/synesthesia-painter/i18n/zh.ts +122 -0
  100. package/src/tool/synesthesia-painter/index.ts +12 -0
  101. package/src/tool/zalgo-generator/i18n/de.ts +113 -0
  102. package/src/tool/zalgo-generator/i18n/en.ts +58 -16
  103. package/src/tool/zalgo-generator/i18n/es.ts +58 -16
  104. package/src/tool/zalgo-generator/i18n/fr.ts +58 -16
  105. package/src/tool/zalgo-generator/i18n/id.ts +113 -0
  106. package/src/tool/zalgo-generator/i18n/it.ts +113 -0
  107. package/src/tool/zalgo-generator/i18n/ja.ts +113 -0
  108. package/src/tool/zalgo-generator/i18n/ko.ts +113 -0
  109. package/src/tool/zalgo-generator/i18n/nl.ts +113 -0
  110. package/src/tool/zalgo-generator/i18n/pl.ts +113 -0
  111. package/src/tool/zalgo-generator/i18n/pt.ts +113 -0
  112. package/src/tool/zalgo-generator/i18n/ru.ts +113 -0
  113. package/src/tool/zalgo-generator/i18n/sv.ts +113 -0
  114. package/src/tool/zalgo-generator/i18n/tr.ts +113 -0
  115. package/src/tool/zalgo-generator/i18n/zh.ts +113 -0
  116. package/src/tool/zalgo-generator/index.ts +12 -0
  117. package/src/tools.ts +14 -1
@@ -0,0 +1,127 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { FortuneCookieLocaleContent } from '../index';
3
+
4
+ const slug = 'lyckokaka-online';
5
+ const title = 'Lyckokaka';
6
+ const description = 'Kontrollera ditt dagliga öde och upptäck dina lyckonummer. En spådom per dag, avslöjad med ett klick.';
7
+
8
+ const faq: FortuneCookieLocaleContent['faq'] = [
9
+ {
10
+ question: 'Kan jag öppna mer än en kaka per dag?',
11
+ answer: 'Ödet talar bara en gång om dagen. Vi sparar din spådom på enheten så att den vägleder dig under hela dagen.'
12
+ },
13
+ {
14
+ question: 'Är spådomarna slumpmässigt genererade?',
15
+ answer: 'Ja – en slumpmässig spådom väljs varje dag och sparas lokalt. Var och en av de 25 spådomarna har lika stor chans att väljas, vilket garanterar variation över tid.'
16
+ }
17
+ ];
18
+
19
+ const howTo: FortuneCookieLocaleContent['howTo'] = [
20
+ { name: 'Knäck kakan', text: 'Klicka upprepade gånger på kakan för att knäcka den.' },
21
+ { name: 'Läs din spådom', text: 'Upptäck det dolda meddelandet inuti och dina lyckonummer för dagen.' }
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: FortuneCookieLocaleContent = {
58
+ slug,
59
+ title,
60
+ description,
61
+ faqTitle: 'Vanliga frågor',
62
+ bibliographyTitle: 'Ödesbibliografi',
63
+ ui: {
64
+ title: 'Online Lyckokaka',
65
+ description: 'Ditt dagliga digitala orakel.',
66
+ instruction: 'Slå på kakan för att öppna ditt öde',
67
+ dailyStatus: 'Ditt öde har avslöjats för idag.',
68
+ shareBtn: 'Dela visdom',
69
+ shareTitle: 'Min lyckokaka',
70
+ shareText: 'Ödet har talat: "$TEXT"\nMina nummer: $NUMS\n\nUpptäck din lycka här:',
71
+ copied: 'Kopierad!',
72
+ fortunes: JSON.stringify([
73
+ "Lyckan du söker finns i en annan kaka.",
74
+ "Räkna inte dagarna, se till att dagarna räknas.",
75
+ "En resa på tusen mil börjar med ett enda steg.",
76
+ "Misstag är inledningen till upptäckt.",
77
+ "Din förmåga att lära är din största tillgång.",
78
+ "Le, universum iakttar dig.",
79
+ "Tålamod är ett träd med en bitter rot men mycket söt frukt.",
80
+ "Var inte rädd för att växa långsamt, var endast rädd för att stå stilla.",
81
+ "Idag är den morgondag du oroade dig för igår.",
82
+ "Lycka är inte något färdigt. Det kommer från dina egna handlingar.",
83
+ "Om du inte kan ändra vindens riktning, justera dina segel.",
84
+ "Det du planterar nu kommer du att skörda senare.",
85
+ "Kreativitet är intelligens som har roligt.",
86
+ "Leta inte efter fel, leta efter lösningar.",
87
+ "Din attityd, inte din begåvning, kommer att avgöra din höjd.",
88
+ "Framgång är summan av små ansträngningar upprepade dag efter dag.",
89
+ "Tro att du kan och du är halvvägs där.",
90
+ "Det enda sättet att göra ett fantastiskt jobb är att älska det du gör.",
91
+ "Livet är till 10 % vad som händer dig och 90 % hur du reagerar på det.",
92
+ "Var den förändring du vill se i världen.",
93
+ "Det bästa sättet att förutsäga framtiden är att uppfinna den.",
94
+ "Enkelhet är den ultimata sofistikeringen.",
95
+ "Du är herren över ditt öde och kaptenen över din själ.",
96
+ "Snart kommer du att få nyheter som ändrar ditt perspektiv.",
97
+ "En oväntad resa kommer att ge dig stor glädje."
98
+ ]),
99
+ faqTitle: 'FAQ',
100
+ bibliographyTitle: 'Referenser'
101
+ },
102
+ seo: [
103
+ { type: 'title', text: 'Lyckokakans mysterium', level: 2 },
104
+ { type: 'paragraph', html: 'Har du någonsin undrat var dessa märkliga kakor kommer ifrån? Även om vi förknippar dem med kinesisk mat, är deras ursprung en fascinerande resa mellan Japan och USA. Lyckokakan som vi känner den idag uppfanns troligen i Kalifornien under tidigt 1900-tal, inte i Kina – där de är praktiskt taget okända.' },
105
+ { type: 'tip', title: 'Så fungerar vårt orakel', html: 'Varje dag kan du öppna en kaka. Systemet sparar ditt öde så att du kommer ihåg det i 24 timmar. Spådomen lagras lokalt i din webbläsare – helt privat, ingen server är inblandad. Kom tillbaka imorgon för en ny förutsägelse!' },
106
+ { type: 'title', text: 'Orakelns filosofi', level: 3 },
107
+ { type: 'paragraph', html: 'Människor har alltid sökt vägledning i osäkra tider. Från oraklet i Delfi till I Ching, spådomssystem tjänar en konsekvent psykologisk funktion: de ger oss tillåtelse att <strong>stanna upp och reflektera</strong>. En lyckokaka förutsäger inte framtiden – den uppmanar dig att tänka på den.' },
108
+ { type: 'list', items: [
109
+ '<strong>Forntida Kina:</strong> I Ching (Förvandlingarnas bok, ca 1000 f.Kr.) använde hexagram för att vägleda beslut och tolka ödet.',
110
+ '<strong>Klassiska Grekland:</strong> Oraklet i Delfi lockade både härskare och medborgare med kryptiska uttalanden som tolkades som gudomlig vägledning.',
111
+ '<strong>Moderna Japan:</strong> Omikuji-spådomar vid Shinto-helgedomar, knutna till trädgrenar, blandar öde med ritual.',
112
+ '<strong>1900-talets USA:</strong> Lyckokakor dök upp i japansk-amerikanska samhällen innan de blev synonymt med kinesisk-amerikansk matkultur.'
113
+ ]},
114
+ { type: 'stats', items: [
115
+ { value: '3 miljarder+', label: 'Lyckokakor som tillverkas årligen', icon: 'mdi:cookie' },
116
+ { value: 'ca 1000 f.Kr.', label: 'I Chings ursprung', icon: 'mdi:book-open-variant' },
117
+ { value: '25', label: 'Spådomar i detta orakel', icon: 'mdi:star-shooting' },
118
+ { value: '1/dag', label: 'Ett öde per dygn', icon: 'mdi:calendar-today' }
119
+ ], columns: 4 },
120
+ ],
121
+ faq,
122
+ bibliography: [
123
+ { name: 'Lyckokakans historia (engelska)', url: 'https://en.wikipedia.org/wiki/Fortune_cookie' }
124
+ ],
125
+ howTo,
126
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
127
+ };
@@ -0,0 +1,127 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { FortuneCookieLocaleContent } from '../index';
3
+
4
+ const slug = 'sans-kurabiyesi-online';
5
+ const title = 'Şans Kurabiyesi';
6
+ const description = 'Günlük kaderinizi kontrol edin ve şanslı numaralarınızı keşfedin. Her gün bir tıklama ile ortaya çıkan bir şans mesajı.';
7
+
8
+ const faq: FortuneCookieLocaleContent['faq'] = [
9
+ {
10
+ question: 'Günde birden fazla kurabiye açabilir miyim?',
11
+ answer: 'Kader günde sadece bir kez konuşur. Şanslı mesajınızı cihazınıza kaydediyoruz, böylece gün boyunca size rehberlik eder.'
12
+ },
13
+ {
14
+ question: 'Mesajlar rastgele mi oluşturuluyor?',
15
+ answer: 'Evet — her gün rastgele bir mesaj seçilir ve yerel olarak kaydedilir. 25 mesajın her birinin seçilme şansı eşittir, bu da zamanla çeşitlilik sağlar.'
16
+ }
17
+ ];
18
+
19
+ const howTo: FortuneCookieLocaleContent['howTo'] = [
20
+ { name: 'Kurabiyeyi kır', text: 'Kurabiyeyi açmak için üzerine art arda tıklayın.' },
21
+ { name: 'Şansını oku', text: 'İçindeki gizli mesajı ve o günkü şanslı numaralarınızı keşfedin.' }
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: 'tr',
55
+ };
56
+
57
+ export const content: FortuneCookieLocaleContent = {
58
+ slug,
59
+ title,
60
+ description,
61
+ faqTitle: 'Sıkça Sorulan Sorular',
62
+ bibliographyTitle: 'Kader Kaynakçası',
63
+ ui: {
64
+ title: 'Online Şans Kurabiyesi',
65
+ description: 'Günlük dijital falınız.',
66
+ instruction: 'Kaderinizi açmak için kurabiyeye vurun',
67
+ dailyStatus: 'Bugünkü kaderiniz deşifre edildi.',
68
+ shareBtn: 'Bilgeliği Paylaş',
69
+ shareTitle: 'Şans Kurabiyem',
70
+ shareText: 'Kader konuştu: "$TEXT"\nNumaralarım: $NUMS\n\nKaderini burada keşfet:',
71
+ copied: 'Kopyalandı!',
72
+ fortunes: JSON.stringify([
73
+ "Aradığın şans başka bir kurabiyede.",
74
+ "Günleri sayma, günlerini saygın kıl.",
75
+ "Bin millik bir yolculuk tek bir adımla başlar.",
76
+ "Hata, keşfin başlangıcıdır.",
77
+ "Öğrenme kapasiteniz en büyük varlığınızdır.",
78
+ "Gülümse, evren seni izliyor.",
79
+ "Sabır, kökü acı ama meyvesi çok tatlı bir ağaçtır.",
80
+ "Yavaş büyümekten korkma, sadece yerinde saymaktan kork.",
81
+ "Bugün, dün endişelendiğin yarındır.",
82
+ "Mutluluk hazır bir şey değildir. Kendi eylemlerinden gelir.",
83
+ "Rüzgarın yönünü değiştiremiyorsan, yelkenlerini ona göre ayarla.",
84
+ "Şimdi ne ekersen, sonra onu biçersin.",
85
+ "Yaratıcılık, zekanın eğlenmesidir.",
86
+ "Hataları arama, çözümleri ara.",
87
+ "Yüksekliğini belirleyen şey yeteneğin değil, tavrındır.",
88
+ "Başarı, her gün tekrarlanan küçük çabaların toplamıdır.",
89
+ "Yapabileceğine inan, yolun yarısını gitmiş olursun.",
90
+ "Harika işler yapmanın tek yolu, yaptığınız işi sevmektir.",
91
+ "Hayat %10 başınıza gelenler, %90 ise ona nasıl tepki verdiğinizdir.",
92
+ "Dünyada görmek istediğin değişimin kendisi ol.",
93
+ "Geleceği tahmin etmenin en iyi yolu onu icat etmektir.",
94
+ "Sadelik en yüksek gelişmişlik düzeyidir.",
95
+ "Kaderinin efendisi ve ruhunun kaptanı sensin.",
96
+ "Yakında bakış açınızı değiştirecek haberler alacaksınız.",
97
+ "Beklenmedik bir yolculuk size büyük neşeler getirecek."
98
+ ]),
99
+ faqTitle: 'FAQ',
100
+ bibliographyTitle: 'Referanslar'
101
+ },
102
+ seo: [
103
+ { type: 'title', text: 'Şans Kurabiyesinin Gizemi', level: 2 },
104
+ { type: 'paragraph', html: 'Bu ilginç kurabiyelerin nereden geldiğini hiç merak ettiniz mi? Onları Çin yemeğiyle ilişkilendirsek de, kökenleri Japonya ve Amerika Birleşik Devletleri arasında büyüleyici bir yolculuktur. Bugün bildiğimiz şans kurabiyesi büyük olasılıkla Çin\'de değil (ki orada neredeyse hiç bilinmezler), 20. yüzyılın başlarında California\'da icat edilmiştir.' },
105
+ { type: 'tip', title: 'Falcımız Nasıl Çalışır?', html: 'Her gün bir kurabiye açabilirsiniz. Sistem kaderinizi kaydeder, böylece 24 saat boyunca hatırlarsınız. Şanslı mesaj tarayıcınızda yerel olarak saklanır — tamamen özeldir, hiçbir sunucu dahil olmaz. Yeni bir tahmin için yarın tekrar gelin!' },
106
+ { type: 'title', text: 'Kehanetlerin Felsefesi', level: 3 },
107
+ { type: 'paragraph', html: 'İnsanlar her zaman belirsiz zamanlarda rehberlik aramışlardır. Delfi Kahini\'nden I Ching\'e kadar, fal bakma sistemleri tutarlı bir psikolojik işleve hizmet eder: Bize <strong>durup düşünmek</strong> için izin verirler. Bir şans kurabiyesi geleceği tahmin etmez — sizi onun hakkında düşünmeye sevk eder.' },
108
+ { type: 'list', items: [
109
+ '<strong>Antik Çin:</strong> I Ching (Değişimler Kitabı, M.Ö. ~1000), kararlara rehberlik etmek ve kaderi yorumlamak için heksagramlar kullanıyordu.',
110
+ '<strong>Klasik Yunan:</strong> Delfi Kahini, tanrısal rehberlik olarak yorumlanan gizemli beyanlarla hükümdarları ve vatandaşları kendine çekiyordu.',
111
+ '<strong>Modern Japonya:</strong> Şinto tapınaklarında ağaç dallarına bağlanan Omikuji fal kağıtları, kaderi ritüelle harmanlar.',
112
+ '<strong>20. Yüzyıl ABD:</strong> Şans kurabiyeleri, Çin-Amerikan mutfağının eş anlamlısı haline gelmeden önce Japon-Amerikan topluluklarında ortaya çıktı.'
113
+ ]},
114
+ { type: 'stats', items: [
115
+ { value: '3 milyar+', label: 'Yıllık üretilen şans kurabiyesi sayısı', icon: 'mdi:cookie' },
116
+ { value: 'M.Ö. ~1000', label: 'I Ching\'in kökeni', icon: 'mdi:book-open-variant' },
117
+ { value: '25', label: 'Bu falcıdaki mesaj sayısı', icon: 'mdi:star-shooting' },
118
+ { value: 'Günde 1', label: 'Her gün tek bir mesaj', icon: 'mdi:calendar-today' }
119
+ ], columns: 4 },
120
+ ],
121
+ faq,
122
+ bibliography: [
123
+ { name: 'Şans Kurabiyesi Tarihi (İngilizce)', url: 'https://en.wikipedia.org/wiki/Fortune_cookie' }
124
+ ],
125
+ howTo,
126
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
127
+ };
@@ -0,0 +1,127 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { FortuneCookieLocaleContent } from '../index';
3
+
4
+ const slug = 'fortune-cookie-zh';
5
+ const title = '幸运饼干';
6
+ const description = '查看您的每日运势并发现您的幸运数字。每天一个在线幸运饼干,一键开启您的预言。';
7
+
8
+ const faq: FortuneCookieLocaleContent['faq'] = [
9
+ {
10
+ question: '我每天可以打开多个饼干吗?',
11
+ answer: '命运每天只开启一次。我们会将您的运势保存在设备上,让它在这一整天中指引您。'
12
+ },
13
+ {
14
+ question: '运势是随机生成的吗?',
15
+ answer: '是的——每天都会随机选出一个运势并保存在本地。25 个运势中每一个被选中的概率都是相等的,确保了内容的多样性。'
16
+ }
17
+ ];
18
+
19
+ const howTo: FortuneCookieLocaleContent['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: 'zh',
55
+ };
56
+
57
+ export const content: FortuneCookieLocaleContent = {
58
+ slug,
59
+ title,
60
+ description,
61
+ faqTitle: '常见问题解答',
62
+ bibliographyTitle: '命运文献',
63
+ ui: {
64
+ title: '在线幸运饼干',
65
+ description: '您的每日数字神谕。',
66
+ instruction: '点击饼干开启您的命运',
67
+ dailyStatus: '您今天的运势已经揭晓。',
68
+ shareBtn: '分享智慧',
69
+ shareTitle: '我的幸运饼干',
70
+ shareText: '命运之音:"$TEXT"\n我的数字:$NUMS\n\n快来这里发现您的运势:',
71
+ copied: '已复制!',
72
+ fortunes: JSON.stringify([
73
+ "您所寻求的财富就在另一个饼干里。",
74
+ "不要计算日期,要让每一天都变得有意义。",
75
+ "千里之行,始于足下。",
76
+ "错误是发现的前言。",
77
+ "您的学习能力是您最大的财富。",
78
+ "微笑吧,宇宙正在注视着您。",
79
+ "耐心是一棵根苦果甜的树。",
80
+ "不要害怕成长缓慢,只害怕停滞不前。",
81
+ "今天就是您昨天所担心的明天。",
82
+ "幸福不是现成的,它源于您自己的行动。",
83
+ "如果您无法改变风的方向,请调整您的船帆。",
84
+ "您现在种下什么,以后就会收获什么。",
85
+ "创意是智能在寻找乐趣。",
86
+ "不要寻找错误,要寻找解决方案。",
87
+ "决定您高度的是您的态度,而不是您的天赋。",
88
+ "成功是日复一日重复的小小努力的总和。",
89
+ "相信您可以,您就已经成功了一半。",
90
+ "成就伟业的唯一途径是热爱您所做的事。",
91
+ "生活 10% 取决于发生在您身上的事,90% 取决于您如何反应。",
92
+ "成为您想在世界上看到的改变。",
93
+ "预测未来的最好方式就是去创造它。",
94
+ "简单是最终的精致。",
95
+ "您是您命运的主宰,也是您灵魂的统帅。",
96
+ "很快您就会收到改变您观点的新闻。",
97
+ "一次意外的旅行会给您带来巨大的喜悦。"
98
+ ]),
99
+ faqTitle: 'FAQ',
100
+ bibliographyTitle: '参考资料'
101
+ },
102
+ seo: [
103
+ { type: 'title', text: '幸运饼干之谜', level: 2 },
104
+ { type: 'paragraph', html: '有没有想过这些奇特的饼干是从哪里来的?虽然我们将它们与中餐联系在一起,但它们的起源实际上是日本和美国之间的一段迷人旅程。我们今天所熟知的幸运饼干很可能是 20 世纪初在加利福尼亚发明的,而不是在中国——在那里它们几乎鲜为人知。' },
105
+ { type: 'tip', title: '我们的神谕如何运作', html: '每天您可以打开一个饼干。系统会保存您的运势,以便您能在 24 小时内记住它。运势本地存储在您的浏览器中——完全私密,不涉及任何服务器。明天再来看看新的预言吧!' },
106
+ { type: 'title', text: '神谕的哲学', level: 3 },
107
+ { type: 'paragraph', html: '人类一直在不确定的时代寻求指引。从德尔斐神谕到易经,占卜系统都起到了一个一致的心理功能:它们允许我们<strong>停下来反思</strong>。幸运饼干并不预言未来——它促使您思考未来。' },
108
+ { type: 'list', items: [
109
+ '<strong>古代中国:</strong> 易经(Book of Changes, 约公元前 1000 年)使用六爻来指导决策并解释命运。',
110
+ '<strong>古典希腊:</strong> 德尔斐神谕以被解释为神圣指引的神秘教理吸引了统治者和普通公民。',
111
+ '<strong>现代日本:</strong> 日本神社的“御神签”系在树枝上,将命运与仪式融合在一起。',
112
+ '<strong>20 世纪美国:</strong> 幸运饼干出现在日裔美国人社区,之后成为美式中餐的代名词。'
113
+ ]},
114
+ { type: 'stats', items: [
115
+ { value: '30 亿+', label: '每年制造的幸运饼干数量', icon: 'mdi:cookie' },
116
+ { value: '约公元前 1000 年', label: '易经起源', icon: 'mdi:book-open-variant' },
117
+ { value: '25', label: '此神谕中的运势数量', icon: 'mdi:star-shooting' },
118
+ { value: '1次/天', label: '每天一次预言', icon: 'mdi:calendar-today' }
119
+ ], columns: 4 },
120
+ ],
121
+ faq,
122
+ bibliography: [
123
+ { name: '幸运饼干的历史(英文)', url: 'https://en.wikipedia.org/wiki/Fortune_cookie' }
124
+ ],
125
+ howTo,
126
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
127
+ };
@@ -27,6 +27,18 @@ export const fortuneCookie: CreativeToolEntry<FortuneCookieUI> = {
27
27
  es: () => import('./i18n/es').then((m) => m.content),
28
28
  en: () => import('./i18n/en').then((m) => m.content),
29
29
  fr: () => import('./i18n/fr').then((m) => m.content),
30
+ de: () => import('./i18n/de').then((m) => m.content),
31
+ id: () => import('./i18n/id').then((m) => m.content),
32
+ it: () => import('./i18n/it').then((m) => m.content),
33
+ ja: () => import('./i18n/ja').then((m) => m.content),
34
+ ko: () => import('./i18n/ko').then((m) => m.content),
35
+ nl: () => import('./i18n/nl').then((m) => m.content),
36
+ pl: () => import('./i18n/pl').then((m) => m.content),
37
+ pt: () => import('./i18n/pt').then((m) => m.content),
38
+ ru: () => import('./i18n/ru').then((m) => m.content),
39
+ sv: () => import('./i18n/sv').then((m) => m.content),
40
+ tr: () => import('./i18n/tr').then((m) => m.content),
41
+ zh: () => import('./i18n/zh').then((m) => m.content),
30
42
  },
31
43
  };
32
44
 
@@ -0,0 +1,122 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { SynesthesiaPainterLocaleContent } from '../index';
3
+
4
+ const slug = 'synaesthesie-maler';
5
+ const title = 'Synästhesie Maler';
6
+ const description = 'Visualisieren Sie die Farbe von Wörtern gemäß der Graphem Farb Synästhesie. Jeder Buchstabe hat seine eigene Farbe und verwandelt Text in chromatische Kunst.';
7
+
8
+ const faq: SynesthesiaPainterLocaleContent['faq'] = [
9
+ {
10
+ question: 'Sehen alle Synästhetiker die gleichen Farben für jeden Buchstaben?',
11
+ answer: 'Nein. Synästhetische Farben sind für jede Person einzigartig. Es gibt statistische Tendenzen (A ist für viele oft rot), aber keine zwei Synästhetiker haben exakt die gleiche Palette. Dieses Tool verwendet die Farben, die in Populationsstudien am häufigsten gemeldet wurden, nicht die „richtigen“.',
12
+ },
13
+ {
14
+ question: 'Kann ich durch die ständige Nutzung dieses Tools eine Synästhesie entwickeln?',
15
+ answer: 'Nicht im strikten neurologischen Sinne. Echte Synästhesie ist ein Merkmal des Nervensystems, keine erlernte Fähigkeit. Die wiederholte Verwendung von Farb-Buchstaben-Assoziationen kann jedoch starke assoziative Erinnerungen schaffen. Einige Studien deuten darauf hin, dass das Üben dieser Assoziationen das Textgedächtnis verbessern kann.',
16
+ },
17
+ {
18
+ question: 'Wozu dient der „Aura“-Modus?',
19
+ answer: 'Der Aura-Modus simuliert, wie einige Synästhetiker beschreiben, dass sie Farben „schwebend“ oder „leuchtend“ um Buchstaben herum sehen, anstatt in sie integriert. Er schafft ein atmosphärischeres und immersiveres visuelles Erlebnis, insbesondere auf dunklem Hintergrund.',
20
+ },
21
+ {
22
+ question: 'Hat der „Punkte“-Modus eine wissenschaftliche Grundlage?',
23
+ answer: 'Es handelt sich um eine künstlerische Abstraktion. Er reduziert den Text auf seine „chromatische Essenz“, indem er die erkennbare Form der Buchstaben eliminiert. Das Ergebnis ähnelt chromatischen Datenvisualisierungen oder pointillistischen Gemälden und ermöglicht es Ihnen, die „Farbsignatur“ eines Textes zu sehen, ohne dass die Bedeutung stört.',
24
+ },
25
+ {
26
+ question: 'Warum sind manche Buchstaben wie I und O weiß oder schwarz?',
27
+ answer: 'In Synästhesie-Studien werden die Vokale I und O sowie der Buchstabe W häufig als weiß, transparent oder schwarz beschrieben. Dieses Tool passt diese Farben an den aktiven Hintergrund an: weiß auf dunklem Hintergrund, schwarz auf hellem Hintergrund, um immer die Lesbarkeit zu gewährleisten.',
28
+ },
29
+ ];
30
+
31
+ const howTo: SynesthesiaPainterLocaleContent['howTo'] = [
32
+ { name: 'Text schreiben', text: 'Klicken Sie in den Schreibbereich und beginnen Sie zu tippen. Jeder Buchstabe erscheint in der Farbe, die seiner statistischen synästhetischen Assoziation entspricht.' },
33
+ { name: 'Visualisierungsmodus ändern', text: 'Verwenden Sie die Schaltflächen in der oberen rechten Ecke, um zwischen Buchstaben (farbiger Text), Punkten (Farbkreise) und Aura (leuchtende Buchstaben mit chromatischen Halos) zu wechseln.' },
34
+ { name: 'Verschiedene Texte erkunden', text: 'Schreiben Sie Namen, Wörter in verschiedenen Sprachen oder Sätze, um deren einzigartige chromatische Palette zu entdecken. Lange Wörter erzeugen faszinierende visuelle Gradienten.' },
35
+ { name: 'Löschen und neu beginnen', text: 'Verwenden Sie die Schaltfläche „Löschen“ in der unteren Leiste, um die Leinwand zu leeren und einen neuen Text zu erkunden.' },
36
+ ];
37
+
38
+ const faqSchema: WithContext<FAQPage> = {
39
+ '@context': 'https://schema.org',
40
+ '@type': 'FAQPage',
41
+ mainEntity: faq.map((item) => ({
42
+ '@type': 'Question',
43
+ name: item.question,
44
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
45
+ })),
46
+ };
47
+
48
+ const howToSchema: WithContext<HowTo> = {
49
+ '@context': 'https://schema.org',
50
+ '@type': 'HowTo',
51
+ name: title,
52
+ description,
53
+ step: howTo.map((step) => ({
54
+ '@type': 'HowToStep',
55
+ name: step.name,
56
+ text: step.text,
57
+ })),
58
+ };
59
+
60
+ const appSchema: WithContext<SoftwareApplication> = {
61
+ '@context': 'https://schema.org',
62
+ '@type': 'SoftwareApplication',
63
+ name: title,
64
+ description,
65
+ applicationCategory: 'UtilitiesApplication',
66
+ operatingSystem: 'Web',
67
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
68
+ inLanguage: 'de',
69
+ };
70
+
71
+ export const content: SynesthesiaPainterLocaleContent = {
72
+ slug,
73
+ title,
74
+ description,
75
+ faqTitle: 'Häufig gestellte Fragen',
76
+ bibliographyTitle: 'Geistes-Bibliographie',
77
+ ui: {
78
+ title: 'Synästhesie Maler',
79
+ description: 'Verwandeln Sie Ihre Worte in chromatische Kunst.',
80
+ modeLetters: 'Buchstaben',
81
+ modeDots: 'Punkte',
82
+ modeAura: 'Aura',
83
+ placeholder: 'Hier tippen...',
84
+ footerText: 'Tippen Sie, um Ihre persönliche Farbpalette zu entdecken',
85
+ clearBtn: 'Löschen',
86
+ faqTitle: 'FAQ',
87
+ bibliographyTitle: 'Referenzen'
88
+ },
89
+ seo: [
90
+ { type: 'title', text: 'Was ist Graphem Farb Synästhesie?', level: 2 },
91
+ { type: 'paragraph', html: '<strong>Synästhesie</strong> ist ein neurologischer Zustand, bei dem die Stimulierung eines Sinnes automatisch eine Reaktion in einem anderen auslöst. Die am besten untersuchte und am weitesten verbreitete Variante ist die <strong>Graphem-Farb-Synästhesie</strong>: Die Betroffenen nehmen jeden Buchstaben oder jede Zahl mit einer intrinsischen, konstanten und lebendigen Farbe wahr. Es ist keine Fantasie oder Metapher; für einen Synästhetiker ist der Buchstabe „A“ rot, genauso wie Feuer heiß ist. Dieses Tool basiert auf einer <em>statistischen Palette</em>, die auf den am häufigsten gemeldeten Farben für jedes Graphem in Populationsstudien beruht.' },
92
+ { type: 'title', text: 'Neurowissenschaft: Die Theorie der Kreuzaktivierung', level: 3 },
93
+ { type: 'paragraph', html: 'Das am weitesten akzeptierte neurologische Modell für die Graphem-Farb-Synästhesie ist die <strong>Kreuzaktivierung</strong>. Die Bereiche des temporalen Kortex, die an der Erkennung von Buchstabenformen beteiligt sind (Gyrus fusiformis), liegen anatomisch direkt neben den Regionen, die Farben verarbeiten (Areal V4). Bei Menschen mit Synästhesie besteht eine stärkere strukturelle oder funktionelle Konnektivität zwischen diesen Regionen, sodass das Erkennen eines Buchstabens auch Farbpneuronen aktiviert. Die funktionelle Magnetresonanztomographie (fMRT) hat bestätigt, dass Synästhetiker beim Lesen von Text eine echte Aktivierung im Areal V4 zeigen, selbst wenn dieser einfarbig ist.' },
94
+ { type: 'tip', title: 'Die drei Visualisierungsmodi', html: '<strong>Buchstaben:</strong> Der Originaltext, gefärbt nach Graphem. Ideal, um die „chromatische Melodie“ eines ganzen Textes zu sehen. <strong>Punkte:</strong> Jedes Zeichen wird zu einem Kreis in seiner Farbe; der Text verschwindet und nur die Farbmusik bleibt. <strong>Aura:</strong> Buchstaben strahlen einen Halo in ihrer Farbe aus, als ob der Text mit seiner eigenen Energie leuchtet.' },
95
+ { type: 'title', text: 'Statistik und Farbunivsersalien', level: 3 },
96
+ { type: 'paragraph', html: 'Obwohl synästhetische Farben für jedes Individuum einzigartig sind, fanden Studien von Simner et al. (2006) und Eagleman et al. (2007) signifikante statistische Muster. Der Vokal <strong>A</strong> ist für die meisten tendenziell rot; <strong>O</strong> ist weiß oder schwarz; <strong>S</strong> erscheint in Türkis- oder Grüntönen; <strong>E</strong> erscheint als grün oder weiß. Interessanterweise sind Farb-Buchstaben-Assoziationen innerhalb einer Sprachkultur konsistenter als zwischen verschiedenen Kulturen, was auf eine Rolle des frühen Alphabetlernens hindeutet.' },
97
+ { type: 'list', items: [
98
+ '<strong>Prävalenz:</strong> Etwa 4 % der Bevölkerung haben in gewissem Maße eine Graphem-Farb-Synästhesie, wobei neuere Studien diese Zahl auf 6–8 % beziffern, wenn subklinische Formen einbezogen werden.',
99
+ '<strong>Geschlechterunterschiede:</strong> Synästhesie ist bei Frauen 3- bis 6-mal häufiger als bei Männern, obwohl die Ursachen für diesen Unterschied noch nicht vollständig geklärt sind.',
100
+ '<strong>Vererbbarkeit:</strong> Sie hat eine klare genetische Komponente: Sie tritt gehäuft in Familien auf, wenn auch nicht immer mit der gleichen Art von Synästhesie.',
101
+ '<strong>Konsistenz:</strong> Im Gegensatz zu erlernten Assoziationen sind synästhetische Farben über die Zeit hinweg außerordentlich stabil. 10-Jahres-Follow-up-Studien zeigen eine über 90-prozentige Konsistenz bei Graphem-Farb-Assoziationen.',
102
+ '<strong>Berühmte Synästhetiker:</strong> Vladimir Nabokov, Wassily Kandinsky, Nikola Tesla und Billy Joel haben öffentlich synästhetische Erfahrungen beschrieben, die ihre Arbeit beeinflusst haben.',
103
+ ]},
104
+ { type: 'stats', items: [
105
+ { value: '4–8 %', label: 'Bevölkerung mit Synästhesie', icon: 'mdi:brain' },
106
+ { value: '90 %+', label: 'Farbkonsistenz über 10 Jahre', icon: 'mdi:check-circle' },
107
+ { value: '3–6×', label: 'Häufiger bei Frauen', icon: 'mdi:gender-female' },
108
+ { value: '26+10', label: 'Gefärbte Buchstaben & Ziffern', icon: 'mdi:alphabetical' },
109
+ ], columns: 4 },
110
+ { type: 'title', text: 'Kunst und Synästhesie: Wenn die Sinne verschmelzen', level: 3 },
111
+ { type: 'paragraph', html: '<strong>Wassily Kandinsky</strong>, Begründer des abstrakten Expressionismus, erlebte sowohl Graphem-Farb- als auch Musik-Farb-Synästhesie: Er hörte Instrumente in Farben (Gelb war eine Trompete, tiefes Blau ein Cello) und nutzte diese Wahrnehmungen für seine Theorie der abstrakten Kunst. In der Musik komponierte <strong>Alexander Skrjabin</strong> <em>Prometheus: Das Poem des Feuers</em> mit einer Stimme für „tastiera per luce“ (Lichtklavier), die dazu bestimmt war, den jeweiligen Noten entsprechende Farben zu projizieren.' },
112
+ { type: 'tip', title: 'Farbpalette dieses Tools', html: 'Die Farbzuteilungen sind von den häufigsten statistischen Daten der wissenschaftlichen Literatur inspiriert. <strong>A → rot</strong>, <strong>E → grün</strong>, <strong>I → weiß/schwarz je nach Hintergrund</strong>, <strong>O → schwarz/weiß</strong>, <strong>U → bernsteinfarben</strong>. Konsonanten folgen weniger einheitlichen Mustern, aber der Kontrast zum Hintergrund wird immer priorisiert, um die Lesbarkeit zu gewährleisten.' },
113
+ ],
114
+ faq,
115
+ bibliography: [
116
+ { name: 'Simner et al. (2006) – Synaesthesia: The prevalence of atypical cross-modal experiences', url: 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1626536/' },
117
+ { name: 'Eagleman et al. (2007) – A standardized test battery for the study of synesthesia', url: 'https://www.sciencedirect.com/science/article/pii/S0010945207000087' },
118
+ { name: 'Kandinsky, W. – Über das Geistige in der Kunst (1911)', url: 'https://de.wikipedia.org/wiki/Über_das_Geistige_in_der_Kunst' },
119
+ ],
120
+ howTo,
121
+ schemas: [faqSchema as any, howToSchema as any, appSchema],
122
+ };