@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.
Files changed (100) hide show
  1. package/package.json +2 -1
  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/title_quality.test.ts +3 -3
  19. package/src/tool/bead-pattern-generator/i18n/de.ts +115 -0
  20. package/src/tool/bead-pattern-generator/i18n/en.ts +1 -1
  21. package/src/tool/bead-pattern-generator/i18n/es.ts +1 -1
  22. package/src/tool/bead-pattern-generator/i18n/fr.ts +1 -1
  23. package/src/tool/bead-pattern-generator/i18n/id.ts +115 -0
  24. package/src/tool/bead-pattern-generator/i18n/it.ts +115 -0
  25. package/src/tool/bead-pattern-generator/i18n/ja.ts +115 -0
  26. package/src/tool/bead-pattern-generator/i18n/ko.ts +115 -0
  27. package/src/tool/bead-pattern-generator/i18n/nl.ts +115 -0
  28. package/src/tool/bead-pattern-generator/i18n/pl.ts +115 -0
  29. package/src/tool/bead-pattern-generator/i18n/pt.ts +115 -0
  30. package/src/tool/bead-pattern-generator/i18n/ru.ts +115 -0
  31. package/src/tool/bead-pattern-generator/i18n/sv.ts +115 -0
  32. package/src/tool/bead-pattern-generator/i18n/tr.ts +115 -0
  33. package/src/tool/bead-pattern-generator/i18n/zh.ts +115 -0
  34. package/src/tool/bead-pattern-generator/index.ts +12 -0
  35. package/src/tool/dice-roller/i18n/de.ts +138 -0
  36. package/src/tool/dice-roller/i18n/id.ts +138 -0
  37. package/src/tool/dice-roller/i18n/it.ts +138 -0
  38. package/src/tool/dice-roller/i18n/ja.ts +138 -0
  39. package/src/tool/dice-roller/i18n/ko.ts +138 -0
  40. package/src/tool/dice-roller/i18n/nl.ts +138 -0
  41. package/src/tool/dice-roller/i18n/pl.ts +138 -0
  42. package/src/tool/dice-roller/i18n/pt.ts +138 -0
  43. package/src/tool/dice-roller/i18n/ru.ts +138 -0
  44. package/src/tool/dice-roller/i18n/sv.ts +138 -0
  45. package/src/tool/dice-roller/i18n/tr.ts +138 -0
  46. package/src/tool/dice-roller/i18n/zh.ts +138 -0
  47. package/src/tool/dice-roller/index.ts +12 -0
  48. package/src/tool/excuse-generator/i18n/de.ts +122 -0
  49. package/src/tool/excuse-generator/i18n/id.ts +122 -0
  50. package/src/tool/excuse-generator/i18n/it.ts +122 -0
  51. package/src/tool/excuse-generator/i18n/ja.ts +122 -0
  52. package/src/tool/excuse-generator/i18n/ko.ts +122 -0
  53. package/src/tool/excuse-generator/i18n/nl.ts +122 -0
  54. package/src/tool/excuse-generator/i18n/pl.ts +122 -0
  55. package/src/tool/excuse-generator/i18n/pt.ts +122 -0
  56. package/src/tool/excuse-generator/i18n/ru.ts +122 -0
  57. package/src/tool/excuse-generator/i18n/sv.ts +122 -0
  58. package/src/tool/excuse-generator/i18n/tr.ts +122 -0
  59. package/src/tool/excuse-generator/i18n/zh.ts +122 -0
  60. package/src/tool/excuse-generator/index.ts +12 -0
  61. package/src/tool/fortune-cookie/i18n/de.ts +127 -0
  62. package/src/tool/fortune-cookie/i18n/id.ts +127 -0
  63. package/src/tool/fortune-cookie/i18n/it.ts +127 -0
  64. package/src/tool/fortune-cookie/i18n/ja.ts +127 -0
  65. package/src/tool/fortune-cookie/i18n/ko.ts +127 -0
  66. package/src/tool/fortune-cookie/i18n/nl.ts +127 -0
  67. package/src/tool/fortune-cookie/i18n/pl.ts +127 -0
  68. package/src/tool/fortune-cookie/i18n/pt.ts +127 -0
  69. package/src/tool/fortune-cookie/i18n/ru.ts +127 -0
  70. package/src/tool/fortune-cookie/i18n/sv.ts +127 -0
  71. package/src/tool/fortune-cookie/i18n/tr.ts +127 -0
  72. package/src/tool/fortune-cookie/i18n/zh.ts +127 -0
  73. package/src/tool/fortune-cookie/index.ts +12 -0
  74. package/src/tool/synesthesia-painter/i18n/de.ts +122 -0
  75. package/src/tool/synesthesia-painter/i18n/fr.ts +2 -2
  76. package/src/tool/synesthesia-painter/i18n/id.ts +122 -0
  77. package/src/tool/synesthesia-painter/i18n/it.ts +122 -0
  78. package/src/tool/synesthesia-painter/i18n/ja.ts +122 -0
  79. package/src/tool/synesthesia-painter/i18n/ko.ts +122 -0
  80. package/src/tool/synesthesia-painter/i18n/nl.ts +122 -0
  81. package/src/tool/synesthesia-painter/i18n/pl.ts +122 -0
  82. package/src/tool/synesthesia-painter/i18n/pt.ts +122 -0
  83. package/src/tool/synesthesia-painter/i18n/ru.ts +122 -0
  84. package/src/tool/synesthesia-painter/i18n/sv.ts +122 -0
  85. package/src/tool/synesthesia-painter/i18n/tr.ts +122 -0
  86. package/src/tool/synesthesia-painter/i18n/zh.ts +122 -0
  87. package/src/tool/synesthesia-painter/index.ts +12 -0
  88. package/src/tool/zalgo-generator/i18n/de.ts +113 -0
  89. package/src/tool/zalgo-generator/i18n/id.ts +113 -0
  90. package/src/tool/zalgo-generator/i18n/it.ts +113 -0
  91. package/src/tool/zalgo-generator/i18n/ja.ts +113 -0
  92. package/src/tool/zalgo-generator/i18n/ko.ts +113 -0
  93. package/src/tool/zalgo-generator/i18n/nl.ts +113 -0
  94. package/src/tool/zalgo-generator/i18n/pl.ts +113 -0
  95. package/src/tool/zalgo-generator/i18n/pt.ts +113 -0
  96. package/src/tool/zalgo-generator/i18n/ru.ts +113 -0
  97. package/src/tool/zalgo-generator/i18n/sv.ts +113 -0
  98. package/src/tool/zalgo-generator/i18n/tr.ts +113 -0
  99. package/src/tool/zalgo-generator/i18n/zh.ts +113 -0
  100. package/src/tool/zalgo-generator/index.ts +12 -0
@@ -0,0 +1,127 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { FortuneCookieLocaleContent } from '../index';
3
+
4
+ const slug = 'печенье-с-предсказанием-онлайн';
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: 'ru',
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: 'Вы когда-нибудь задумывались, откуда взялось это любопытное лакомство? Хотя мы ассоциируем его с китайской кухней, его происхождение — это увлекательное путешествие между Японией и США. Печенье с предсказанием в том виде, в котором мы знаем его сегодня, скорее всего, было изобретено в Калифорнии в начале XX века, а не в Китае, где оно практически неизвестно.' },
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> И-Цзин («Книга перемен», ок. 1000 г. до н. э.) использовала гексаграммы для принятия решений и толкования судьбы.',
110
+ '<strong>Классическая Греция:</strong> Дельфийский оракул привлекал правителей и простых граждан загадочными изречениями, которые трактовались как божественное руководство.',
111
+ '<strong>Современная Япония:</strong> Предсказания омикудзи в синтоистских храмах, привязываемые к ветвям деревьев, сочетают веру в судьбу с ритуалом.',
112
+ '<strong>США XX век:</strong> Печенье с предсказанием появилось в японо-американских общинах, прежде чем стать символом китайско-американской кухни.'
113
+ ]},
114
+ { type: 'stats', items: [
115
+ { value: '3 млрд+', 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
+ };
@@ -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