@jjlmoya/utils-finance 1.4.0 → 1.7.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 (179) hide show
  1. package/package.json +2 -1
  2. package/src/category/i18n/de.ts +158 -0
  3. package/src/category/i18n/id.ts +158 -0
  4. package/src/category/i18n/it.ts +158 -0
  5. package/src/category/i18n/ja.ts +158 -0
  6. package/src/category/i18n/ko.ts +158 -0
  7. package/src/category/i18n/nl.ts +158 -0
  8. package/src/category/i18n/pl.ts +158 -0
  9. package/src/category/i18n/pt.ts +158 -0
  10. package/src/category/i18n/ru.ts +158 -0
  11. package/src/category/i18n/sv.ts +158 -0
  12. package/src/category/i18n/tr.ts +158 -0
  13. package/src/category/i18n/zh.ts +158 -0
  14. package/src/category/index.ts +13 -1
  15. package/src/tests/category_validation.test.ts +73 -0
  16. package/src/tests/faq_count.test.ts +1 -1
  17. package/src/tests/i18n_coverage.test.ts +36 -0
  18. package/src/tests/locale_completeness.test.ts +3 -0
  19. package/src/tests/slug_language_code_format.test.ts +23 -0
  20. package/src/tests/slug_uniqueness.test.ts +81 -0
  21. package/src/tests/title_quality.test.ts +1 -1
  22. package/src/tool/compoundInterest/i18n/de.ts +208 -0
  23. package/src/tool/compoundInterest/i18n/id.ts +208 -0
  24. package/src/tool/compoundInterest/i18n/it.ts +208 -0
  25. package/src/tool/compoundInterest/i18n/ja.ts +207 -0
  26. package/src/tool/compoundInterest/i18n/ko.ts +207 -0
  27. package/src/tool/compoundInterest/i18n/nl.ts +208 -0
  28. package/src/tool/compoundInterest/i18n/pl.ts +208 -0
  29. package/src/tool/compoundInterest/i18n/pt.ts +208 -0
  30. package/src/tool/compoundInterest/i18n/ru.ts +208 -0
  31. package/src/tool/compoundInterest/i18n/sv.ts +208 -0
  32. package/src/tool/compoundInterest/i18n/tr.ts +208 -0
  33. package/src/tool/compoundInterest/i18n/zh.ts +202 -0
  34. package/src/tool/compoundInterest/index.ts +15 -7
  35. package/src/tool/courtFeeCalculator/i18n/de.ts +152 -0
  36. package/src/tool/courtFeeCalculator/i18n/fr.ts +1 -1
  37. package/src/tool/courtFeeCalculator/i18n/id.ts +152 -0
  38. package/src/tool/courtFeeCalculator/i18n/it.ts +152 -0
  39. package/src/tool/courtFeeCalculator/i18n/ja.ts +152 -0
  40. package/src/tool/courtFeeCalculator/i18n/ko.ts +152 -0
  41. package/src/tool/courtFeeCalculator/i18n/nl.ts +152 -0
  42. package/src/tool/courtFeeCalculator/i18n/pl.ts +152 -0
  43. package/src/tool/courtFeeCalculator/i18n/pt.ts +152 -0
  44. package/src/tool/courtFeeCalculator/i18n/ru.ts +152 -0
  45. package/src/tool/courtFeeCalculator/i18n/sv.ts +152 -0
  46. package/src/tool/courtFeeCalculator/i18n/tr.ts +152 -0
  47. package/src/tool/courtFeeCalculator/i18n/zh.ts +152 -0
  48. package/src/tool/courtFeeCalculator/index.ts +16 -8
  49. package/src/tool/debtSnowball/i18n/de.ts +160 -0
  50. package/src/tool/debtSnowball/i18n/id.ts +160 -0
  51. package/src/tool/debtSnowball/i18n/it.ts +160 -0
  52. package/src/tool/debtSnowball/i18n/ja.ts +157 -0
  53. package/src/tool/debtSnowball/i18n/ko.ts +160 -0
  54. package/src/tool/debtSnowball/i18n/nl.ts +160 -0
  55. package/src/tool/debtSnowball/i18n/pl.ts +160 -0
  56. package/src/tool/debtSnowball/i18n/pt.ts +160 -0
  57. package/src/tool/debtSnowball/i18n/ru.ts +160 -0
  58. package/src/tool/debtSnowball/i18n/sv.ts +160 -0
  59. package/src/tool/debtSnowball/i18n/tr.ts +160 -0
  60. package/src/tool/debtSnowball/i18n/zh.ts +160 -0
  61. package/src/tool/debtSnowball/index.ts +17 -9
  62. package/src/tool/fireCalculator/i18n/de.ts +261 -0
  63. package/src/tool/fireCalculator/i18n/id.ts +261 -0
  64. package/src/tool/fireCalculator/i18n/it.ts +261 -0
  65. package/src/tool/fireCalculator/i18n/ja.ts +261 -0
  66. package/src/tool/fireCalculator/i18n/ko.ts +261 -0
  67. package/src/tool/fireCalculator/i18n/nl.ts +261 -0
  68. package/src/tool/fireCalculator/i18n/pl.ts +261 -0
  69. package/src/tool/fireCalculator/i18n/pt.ts +261 -0
  70. package/src/tool/fireCalculator/i18n/ru.ts +261 -0
  71. package/src/tool/fireCalculator/i18n/sv.ts +261 -0
  72. package/src/tool/fireCalculator/i18n/tr.ts +261 -0
  73. package/src/tool/fireCalculator/i18n/zh.ts +261 -0
  74. package/src/tool/fireCalculator/index.ts +15 -7
  75. package/src/tool/ibanBicSwiftConverter/i18n/de.ts +128 -0
  76. package/src/tool/ibanBicSwiftConverter/i18n/id.ts +128 -0
  77. package/src/tool/ibanBicSwiftConverter/i18n/it.ts +128 -0
  78. package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +128 -0
  79. package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +128 -0
  80. package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +128 -0
  81. package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +128 -0
  82. package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +128 -0
  83. package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +128 -0
  84. package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +128 -0
  85. package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +128 -0
  86. package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +128 -0
  87. package/src/tool/ibanBicSwiftConverter/index.ts +15 -7
  88. package/src/tool/inflation/i18n/de.ts +297 -0
  89. package/src/tool/inflation/i18n/id.ts +297 -0
  90. package/src/tool/inflation/i18n/it.ts +297 -0
  91. package/src/tool/inflation/i18n/ja.ts +297 -0
  92. package/src/tool/inflation/i18n/ko.ts +297 -0
  93. package/src/tool/inflation/i18n/nl.ts +297 -0
  94. package/src/tool/inflation/i18n/pl.ts +297 -0
  95. package/src/tool/inflation/i18n/pt.ts +297 -0
  96. package/src/tool/inflation/i18n/ru.ts +297 -0
  97. package/src/tool/inflation/i18n/sv.ts +297 -0
  98. package/src/tool/inflation/i18n/tr.ts +297 -0
  99. package/src/tool/inflation/i18n/zh.ts +297 -0
  100. package/src/tool/inflation/index.ts +17 -9
  101. package/src/tool/lateInterest/i18n/de.ts +224 -0
  102. package/src/tool/lateInterest/i18n/id.ts +224 -0
  103. package/src/tool/lateInterest/i18n/it.ts +224 -0
  104. package/src/tool/lateInterest/i18n/ja.ts +224 -0
  105. package/src/tool/lateInterest/i18n/ko.ts +224 -0
  106. package/src/tool/lateInterest/i18n/nl.ts +224 -0
  107. package/src/tool/lateInterest/i18n/pl.ts +224 -0
  108. package/src/tool/lateInterest/i18n/pt.ts +224 -0
  109. package/src/tool/lateInterest/i18n/ru.ts +224 -0
  110. package/src/tool/lateInterest/i18n/sv.ts +224 -0
  111. package/src/tool/lateInterest/i18n/tr.ts +224 -0
  112. package/src/tool/lateInterest/i18n/zh.ts +224 -0
  113. package/src/tool/lateInterest/index.ts +17 -9
  114. package/src/tool/legalInterestRate/i18n/de.ts +143 -0
  115. package/src/tool/legalInterestRate/i18n/id.ts +143 -0
  116. package/src/tool/legalInterestRate/i18n/it.ts +143 -0
  117. package/src/tool/legalInterestRate/i18n/ja.ts +143 -0
  118. package/src/tool/legalInterestRate/i18n/ko.ts +143 -0
  119. package/src/tool/legalInterestRate/i18n/nl.ts +143 -0
  120. package/src/tool/legalInterestRate/i18n/pl.ts +143 -0
  121. package/src/tool/legalInterestRate/i18n/pt.ts +143 -0
  122. package/src/tool/legalInterestRate/i18n/ru.ts +143 -0
  123. package/src/tool/legalInterestRate/i18n/sv.ts +143 -0
  124. package/src/tool/legalInterestRate/i18n/tr.ts +143 -0
  125. package/src/tool/legalInterestRate/i18n/zh.ts +143 -0
  126. package/src/tool/legalInterestRate/index.ts +17 -9
  127. package/src/tool/lotteryOptimizer/i18n/de.ts +177 -0
  128. package/src/tool/lotteryOptimizer/i18n/id.ts +177 -0
  129. package/src/tool/lotteryOptimizer/i18n/it.ts +177 -0
  130. package/src/tool/lotteryOptimizer/i18n/ja.ts +177 -0
  131. package/src/tool/lotteryOptimizer/i18n/ko.ts +177 -0
  132. package/src/tool/lotteryOptimizer/i18n/nl.ts +177 -0
  133. package/src/tool/lotteryOptimizer/i18n/pl.ts +177 -0
  134. package/src/tool/lotteryOptimizer/i18n/pt.ts +177 -0
  135. package/src/tool/lotteryOptimizer/i18n/ru.ts +177 -0
  136. package/src/tool/lotteryOptimizer/i18n/sv.ts +177 -0
  137. package/src/tool/lotteryOptimizer/i18n/tr.ts +177 -0
  138. package/src/tool/lotteryOptimizer/i18n/zh.ts +177 -0
  139. package/src/tool/lotteryOptimizer/index.ts +17 -9
  140. package/src/tool/mortgage/i18n/de.ts +223 -0
  141. package/src/tool/mortgage/i18n/id.ts +219 -0
  142. package/src/tool/mortgage/i18n/it.ts +223 -0
  143. package/src/tool/mortgage/i18n/ja.ts +219 -0
  144. package/src/tool/mortgage/i18n/ko.ts +219 -0
  145. package/src/tool/mortgage/i18n/nl.ts +219 -0
  146. package/src/tool/mortgage/i18n/pl.ts +219 -0
  147. package/src/tool/mortgage/i18n/pt.ts +219 -0
  148. package/src/tool/mortgage/i18n/ru.ts +219 -0
  149. package/src/tool/mortgage/i18n/sv.ts +219 -0
  150. package/src/tool/mortgage/i18n/tr.ts +219 -0
  151. package/src/tool/mortgage/i18n/zh.ts +219 -0
  152. package/src/tool/mortgage/index.ts +15 -7
  153. package/src/tool/percentageCalculator/i18n/de.ts +229 -0
  154. package/src/tool/percentageCalculator/i18n/id.ts +229 -0
  155. package/src/tool/percentageCalculator/i18n/it.ts +229 -0
  156. package/src/tool/percentageCalculator/i18n/ja.ts +229 -0
  157. package/src/tool/percentageCalculator/i18n/ko.ts +229 -0
  158. package/src/tool/percentageCalculator/i18n/nl.ts +229 -0
  159. package/src/tool/percentageCalculator/i18n/pl.ts +229 -0
  160. package/src/tool/percentageCalculator/i18n/pt.ts +229 -0
  161. package/src/tool/percentageCalculator/i18n/ru.ts +229 -0
  162. package/src/tool/percentageCalculator/i18n/sv.ts +229 -0
  163. package/src/tool/percentageCalculator/i18n/tr.ts +229 -0
  164. package/src/tool/percentageCalculator/i18n/zh.ts +229 -0
  165. package/src/tool/percentageCalculator/index.ts +15 -7
  166. package/src/tool/rentIncreaseCalculator/i18n/de.ts +136 -0
  167. package/src/tool/rentIncreaseCalculator/i18n/id.ts +136 -0
  168. package/src/tool/rentIncreaseCalculator/i18n/it.ts +136 -0
  169. package/src/tool/rentIncreaseCalculator/i18n/ja.ts +136 -0
  170. package/src/tool/rentIncreaseCalculator/i18n/ko.ts +136 -0
  171. package/src/tool/rentIncreaseCalculator/i18n/nl.ts +136 -0
  172. package/src/tool/rentIncreaseCalculator/i18n/pl.ts +136 -0
  173. package/src/tool/rentIncreaseCalculator/i18n/pt.ts +136 -0
  174. package/src/tool/rentIncreaseCalculator/i18n/ru.ts +136 -0
  175. package/src/tool/rentIncreaseCalculator/i18n/sv.ts +136 -0
  176. package/src/tool/rentIncreaseCalculator/i18n/tr.ts +136 -0
  177. package/src/tool/rentIncreaseCalculator/i18n/zh.ts +136 -0
  178. package/src/tool/rentIncreaseCalculator/index.ts +17 -9
  179. package/src/types.ts +1 -1
@@ -0,0 +1,177 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LotteryOptimizerUI } from '../ui';
4
+
5
+ const slug = 'pengoptimal-lotre-kalkulator-peluang';
6
+ const title = 'Pengoptimal Lotre dan Kalkulator Peluang';
7
+ const description = 'Analisis peluang Anda dalam Lotre Natal Spanyol, Euromillions, dan Bonoloto. Hitung jumlah tiket optimal dan nilai gairah dari taruhan Anda.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Apa itu ekspektasi matematika dalam lotre?',
12
+ answer: 'Ini adalah nilai rata-rata yang Anda harapkan untuk menang untuk setiap euro yang dipertaruhkan. Di hampir semua lotre, ekspektasi matematikanya negatif (biasanya Anda kehilangan 0,50€ untuk setiap 1€ yang dimainkan), yang berarti dalam jangka panjang, bandar selalu menang.',
13
+ },
14
+ {
15
+ question: 'Mana yang lebih baik, memainkan banyak nomor berbeda atau banyak tiket dengan nomor yang sama?',
16
+ answer: 'Jika Anda ingin memenangkan "sesuatu", diversifikasi nomor meningkatkan peluang Anda untuk mendapatkan hadiah kecil. Jika Anda mengincar hadiah utama, memainkan satu nomor memberikan peluang yang sama untuk jackpot, tetapi hadiahnya lebih besar jika kena.',
17
+ },
18
+ {
19
+ question: 'Apakah benar-benar menguntungkan bermain Lotre Natal Spanyol (El Gordo)?',
20
+ answer: 'Dari sudut pandang matematika murni, tidak. Hanya 70% dari hasil penjualan yang dikembalikan sebagai hadiah. Namun, peluang hadiah utamanya (1 berbanding 100.000) jauh lebih tinggi daripada Euromillions (1 berbanding 140 juta).',
21
+ },
22
+ {
23
+ question: 'Dapatkah saya meningkatkan peluang saya dengan statistik?',
24
+ answer: 'Tidak. Pengundian lotre adalah proses acak yang independen. Fakta bahwa sebuah nomor keluar kemarin sama sekali tidak mempengaruhi peluangnya untuk keluar hari ini.',
25
+ },
26
+ {
27
+ question: 'Apa arti "kesulitan" dalam tabel perbandingan?',
28
+ answer: 'Ini adalah ukuran relatif seberapa sulit untuk memenangkan hadiah pertama. Terjangkau (kurang dari 200rb), Sulit (kurang dari 20jt), Ekstrem (lebih dari 20jt).',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ {
34
+ name: 'Pilih jenis undian',
35
+ text: 'Pilih antara Lotre Natal, Primitiva, Euromillions, atau Bonoloto untuk menganalisis aturan spesifiknya.',
36
+ },
37
+ {
38
+ name: 'Tentukan investasi Anda',
39
+ text: 'Tentukan berapa banyak tiket atau taruhan yang Anda rencanakan untuk dibeli.',
40
+ },
41
+ {
42
+ name: 'Analisis peluang kritis',
43
+ text: 'Lihat peluang nyata untuk memenangkan hadiah utama dibandingkan dengan hadiah kecil atau pengembalian modal.',
44
+ },
45
+ {
46
+ name: 'Evaluasi risiko/manfaat',
47
+ text: 'Tinjau ekspektasi matematika untuk memahami berapa banyak uang yang secara statistik Anda "berikan" untuk setiap euro yang diinvestasikan.',
48
+ },
49
+ ];
50
+
51
+ const bibliographyData = [
52
+ {
53
+ name: 'Loterías y Apuestas del Estado (SELAE) - Portal Transparansi',
54
+ url: 'https://www.selae.es/',
55
+ },
56
+ {
57
+ name: 'Matematika Lotre Natal - RSME',
58
+ url: 'https://rsme.es/',
59
+ },
60
+ {
61
+ name: 'Kriteria Kelly dan Manajemen Risiko',
62
+ url: 'https://www.investopedia.com/',
63
+ },
64
+ ];
65
+
66
+ const seoData = [
67
+ {
68
+ type: 'title',
69
+ text: 'Matematika dari Sebuah Harapan',
70
+ level: 2,
71
+ },
72
+ {
73
+ type: 'paragraph',
74
+ html: 'Bermain lotre bagi banyak orang adalah membeli sebuah ilusi dengan harga beberapa euro. Namun, di balik itu semua terdapat salah satu cabang matematika yang paling menarik: statistik peluang ekstrem.',
75
+ },
76
+ ];
77
+
78
+ const gameTranslations = {
79
+ gordo: {
80
+ name: 'Lotre Natal (El Gordo)',
81
+ description: 'Pembagian hadiah terbesar di dunia. Peluang tinggi untuk memenangkan sesuatu.',
82
+ },
83
+ nino: {
84
+ name: 'Lotre Anak (El Niño)',
85
+ description: 'Peluang pengembalian modal tiga kali lipat dibandingkan Lotre Natal.',
86
+ },
87
+ euromillones: {
88
+ name: 'Euromillions',
89
+ description: 'Hadiah astronomis, peluang yang hampir mustahil.',
90
+ },
91
+ primitiva: {
92
+ name: 'La Primitiva',
93
+ description: 'Lotre tertua di Spanyol. Sulit tetapi lebih murah.',
94
+ },
95
+ bonoloto: {
96
+ name: 'Bonoloto',
97
+ description: 'Yang paling ekonomis. Ideal untuk bermain harian dengan anggaran kecil.',
98
+ },
99
+ };
100
+
101
+ const faqSchema: WithContext<FAQPage> = {
102
+ '@context': 'https://schema.org',
103
+ '@type': 'FAQPage',
104
+ mainEntity: faqData.map((item) => ({
105
+ '@type': 'Question',
106
+ name: item.question,
107
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
108
+ })),
109
+ };
110
+
111
+ const howToSchema: WithContext<HowTo> = {
112
+ '@context': 'https://schema.org',
113
+ '@type': 'HowTo',
114
+ name: title,
115
+ description,
116
+ step: howToData.map((step, i) => ({
117
+ '@type': 'HowToStep',
118
+ position: i + 1,
119
+ name: step.name,
120
+ text: step.text,
121
+ })),
122
+ };
123
+
124
+ const appSchema: WithContext<SoftwareApplication> = {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'SoftwareApplication',
127
+ name: title,
128
+ description,
129
+ applicationCategory: 'FinanceApplication',
130
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
131
+ };
132
+
133
+ export const content: ToolLocaleContent<LotteryOptimizerUI> = {
134
+ slug,
135
+ title,
136
+ description,
137
+ faqTitle: 'Pertanyaan Umum',
138
+ bibliographyTitle: 'Sumber dan Referensi',
139
+ ui: {
140
+ gameTranslations,
141
+ labelTitle: 'Pengoptimal Lotre',
142
+ labelDescription: 'Bandingkan undian, hitung ekspektasi matematika Anda, dan bermainlah dengan cerdas.',
143
+ labelSelectGame: 'Pilih lotre',
144
+ labelConfigurePlay: 'Konfigurasi Permainan',
145
+ labelAdjustQuantity: 'Sesuaikan jumlah tiket untuk melihat peluang nyata Anda.',
146
+ labelTotalInvestment: 'Total Investasi',
147
+ labelTickets: 'Jumlah Tiket / Taruhan',
148
+ labelUnits: 'unit',
149
+ labelExposureAnalysis: 'Analisis Eksposur',
150
+ labelSelectLottery: 'Pilih lotre untuk melihat analisis risiko.',
151
+ labelOptimalCutoff: 'Titik Potong yang Disarankan',
152
+ labelProbabilitySuccess: 'Peluang Berhasil',
153
+ labelExpectedValue: 'Nilai Ekspektasi (EV)',
154
+ labelReturnTheoretical: 'Pengembalian teoritis untuk setiap permainan yang dilakukan.',
155
+ labelSocialReturnIndex: 'Indeks Keuntungan Sosial',
156
+ labelLow: 'Rendah',
157
+ labelMedium: 'Sedang',
158
+ labelHigh: 'Tinggi',
159
+ labelComparison: 'Perbandingan Hadiah',
160
+ labelLottery: 'Lotre',
161
+ labelCost: 'Biaya',
162
+ labelTypicalPrize: 'Hadiah Tipikal',
163
+ labelDifficulty: 'Kesulitan',
164
+ labelAccessible: 'Terjangkau',
165
+ labelDifficult: 'Sulit',
166
+ labelExtreme: 'Ekstrem',
167
+ labelNote: 'Catatan: Hadiah Natal dan El Niño adalah per tiket (20€). Euromillions, dll. adalah jackpot tipikal.',
168
+ currencySymbol: '€',
169
+ currencyCode: 'EUR',
170
+ currencyLocale: 'id-ID',
171
+ },
172
+ faq: faqData,
173
+ howTo: howToData,
174
+ bibliography: bibliographyData,
175
+ seo: seoData,
176
+ schemas: [faqSchema, howToSchema, appSchema],
177
+ };
@@ -0,0 +1,177 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LotteryOptimizerUI } from '../ui';
4
+
5
+ const slug = 'ottimizzatore-lotterie-calcolatore-probabilita';
6
+ const title = 'Ottimizzatore di Lotterie e Calcolatore di Probabilità';
7
+ const description = 'Analizza le tue probabilità nella Lotteria di Natale, EuroMillions e Bonoloto. Calcola il numero ottimale di biglietti e il valore atteso della tua scommessa.';
8
+
9
+ const faqData = [
10
+ {
11
+ question: 'Cos’è la speranza matematica nella lotteria?',
12
+ answer: 'È il valore medio che ti aspetti di vincere per ogni euro scommesso. In quasi tutte le lotterie, la speranza matematica è negativa (solitamente perdi 0,50€ per ogni 1€ giocato), il che significa che a lungo termine il banco vince sempre.',
13
+ },
14
+ {
15
+ question: 'È meglio giocare molti numeri o molti biglietti dello stesso numero?',
16
+ answer: 'Se cerchi di vincere "qualcosa", diversificare i numeri aumenta la tua probabilità di ottenere premi minori. Se cerchi il primo premio, giocare un solo numero ti dà la stessa probabilità, ma un premio maggiore se indovini.',
17
+ },
18
+ {
19
+ question: 'Conviene davvero giocare alla Lotteria di Natale spagnola?',
20
+ answer: 'Da un punto di vista puramente matematico, no. Viene restituito solo il 70% della raccolta. Tuttavia, ha una probabilità di vincere il primo premio (1 su 100.000) molto più alta rispetto all’EuroMillions (1 su 140 milioni).',
21
+ },
22
+ {
23
+ question: 'Posso migliorare le mie possibilità con le statistiche?',
24
+ answer: 'No. Le estrazioni della lotteria sono processi casuali indipendenti. Il fatto che un numero sia uscito ieri non influisce affatto sull’estrazione di oggi.',
25
+ },
26
+ {
27
+ question: 'Cosa significa la "difficoltà" nella tabella comparativa?',
28
+ answer: 'È una misura relativa di quanto sia difficile vincere il primo premio. Accessibile (meno di 200k), Difficile (meno di 20M), Estrema (oltre 20M).',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ {
34
+ name: 'Selezionare il tipo di estrazione',
35
+ text: 'Scegli tra Lotteria di Natale, Primitiva, EuroMillions o Bonoloto per analizzare le regole specifiche.',
36
+ },
37
+ {
38
+ name: 'Definire l’investimento',
39
+ text: 'Indica quanti biglietti o scommesse intendi acquistare per questa estrazione.',
40
+ },
41
+ {
42
+ name: 'Analizzare le probabilità critiche',
43
+ text: 'Osserva le possibilità reali di vincere il primo premio rispetto a premi minori o al rimborso.',
44
+ },
45
+ {
46
+ name: 'Valutare il rischio/beneficio',
47
+ text: 'Controlla la speranza matematica per capire quanto denaro stai "regalando" statisticamente per ogni euro investito.',
48
+ },
49
+ ];
50
+
51
+ const bibliographyData = [
52
+ {
53
+ name: 'Loterías y Apuestas del Estado (SELAE) - Portale Trasparenza',
54
+ url: 'https://www.selae.es/',
55
+ },
56
+ {
57
+ name: 'Matematica della Lotteria di Natale - RSME',
58
+ url: 'https://rsme.es/',
59
+ },
60
+ {
61
+ name: 'Il Criterio di Kelly e la Gestione del Rischio',
62
+ url: 'https://www.investopedia.com/',
63
+ },
64
+ ];
65
+
66
+ const seoData = [
67
+ {
68
+ type: 'title',
69
+ text: 'La Matematica della Speranza',
70
+ level: 2,
71
+ },
72
+ {
73
+ type: 'paragraph',
74
+ html: 'Giocare alla lotteria è, per molti, l’acquisto di un’illusione per pochi euro. Tuttavia, dietro le estrazioni risiede una delle branche più affascinanti della matematica: la statistica delle probabilità estreme.',
75
+ },
76
+ ];
77
+
78
+ const gameTranslations = {
79
+ gordo: {
80
+ name: 'Lotteria di Natale (El Gordo)',
81
+ description: 'La più grande distribuzione di premi al mondo. Alta probabilità di vincere qualcosa.',
82
+ },
83
+ nino: {
84
+ name: 'Lotteria del Bambino (El Niño)',
85
+ description: 'Triplica le possibilità di rimborso rispetto al Natale.',
86
+ },
87
+ euromillones: {
88
+ name: 'EuroMillions',
89
+ description: 'Premi astronomici, probabilità quasi impossibili.',
90
+ },
91
+ primitiva: {
92
+ name: 'La Primitiva',
93
+ description: 'La lotteria più antica di Spagna. Difficile ma più economica.',
94
+ },
95
+ bonoloto: {
96
+ name: 'Bonoloto',
97
+ description: 'La più economica. Ideale per giocare quotidianamente con un budget ridotto.',
98
+ },
99
+ };
100
+
101
+ const faqSchema: WithContext<FAQPage> = {
102
+ '@context': 'https://schema.org',
103
+ '@type': 'FAQPage',
104
+ mainEntity: faqData.map((item) => ({
105
+ '@type': 'Question',
106
+ name: item.question,
107
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
108
+ })),
109
+ };
110
+
111
+ const howToSchema: WithContext<HowTo> = {
112
+ '@context': 'https://schema.org',
113
+ '@type': 'HowTo',
114
+ name: title,
115
+ description,
116
+ step: howToData.map((step, i) => ({
117
+ '@type': 'HowToStep',
118
+ position: i + 1,
119
+ name: step.name,
120
+ text: step.text,
121
+ })),
122
+ };
123
+
124
+ const appSchema: WithContext<SoftwareApplication> = {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'SoftwareApplication',
127
+ name: title,
128
+ description,
129
+ applicationCategory: 'FinanceApplication',
130
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
131
+ };
132
+
133
+ export const content: ToolLocaleContent<LotteryOptimizerUI> = {
134
+ slug,
135
+ title,
136
+ description,
137
+ faqTitle: 'Domande Frequenti',
138
+ bibliographyTitle: 'Fonti e Riferimenti',
139
+ ui: {
140
+ gameTranslations,
141
+ labelTitle: 'Ottimizzatore di Lotterie',
142
+ labelDescription: 'Confronta le estrazioni, calcola la tua speranza matematica e gioca con intelligenza.',
143
+ labelSelectGame: 'Seleziona una lotteria',
144
+ labelConfigurePlay: 'Configura la tua giocata',
145
+ labelAdjustQuantity: 'Regola la quantità di giocate per vedere la tua probabilità reale.',
146
+ labelTotalInvestment: 'Investimento Totale',
147
+ labelTickets: 'Quantità di Biglietti / Scommesse',
148
+ labelUnits: 'unità',
149
+ labelExposureAnalysis: 'Analisi dell’Esposizione',
150
+ labelSelectLottery: 'Seleziona una lotteria per vedere l’analisi del rischio.',
151
+ labelOptimalCutoff: 'Punto di Interruzione Suggerito',
152
+ labelProbabilitySuccess: 'Probabilità di Successo',
153
+ labelExpectedValue: 'Valore Atteso (EV)',
154
+ labelReturnTheoretical: 'Ritorno teorico per ogni giocata effettuata.',
155
+ labelSocialReturnIndex: 'Indice di Redditività Sociale',
156
+ labelLow: 'Bassa',
157
+ labelMedium: 'Media',
158
+ labelHigh: 'Alta',
159
+ labelComparison: 'Confronto Premi',
160
+ labelLottery: 'Lotteria',
161
+ labelCost: 'Costo',
162
+ labelTypicalPrize: 'Premio Tipico',
163
+ labelDifficulty: 'Difficoltà',
164
+ labelAccessible: 'Accessibile',
165
+ labelDifficult: 'Difficile',
166
+ labelExtreme: 'Estrema',
167
+ labelNote: 'Nota: I premi di Natale ed El Niño sono per "décimo" (20€). Euromillions, ecc. sono jackpot tipici.',
168
+ currencySymbol: '€',
169
+ currencyCode: 'EUR',
170
+ currencyLocale: 'it-IT',
171
+ },
172
+ faq: faqData,
173
+ howTo: howToData,
174
+ bibliography: bibliographyData,
175
+ seo: seoData,
176
+ schemas: [faqSchema, howToSchema, appSchema],
177
+ };
@@ -0,0 +1,177 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LotteryOptimizerUI } from '../ui';
4
+
5
+ const slug = 'spain-lottery-optimizer';
6
+ const title = '宝くじ最適化・確率計算機';
7
+ const description = 'スペインのクリスマス宝くじ、ユーロミリオンズ、ボノロトなどの当選確率を分析します。最適な購入枚数や期待値を計算しましょう。';
8
+
9
+ const faqData = [
10
+ {
11
+ question: '宝くじにおける期待値(数学的期待値)とは何ですか?',
12
+ answer: '1ユーロを賭けるごとに、平均してどれくらいの払い戻しが期待できるかを示す数値です。ほとんどすべての宝くじにおいて期待値はマイナス(通常、1ユーロにつき0.50ユーロの損失)であり、長期的には運営側が必ず勝つ仕組みになっています。',
13
+ },
14
+ {
15
+ question: '多くの異なる番号を買うのと、同じ番号を大量に買うのとではどちらが良いですか?',
16
+ answer: '「何か」を当てたいのであれば、番号を分散させることで末等の当選確率が上がります。1等(ジャックポット)を狙うのであれば、1つの番号を買い続けても確率は同じですが、当たった時の配当は大きくなります。',
17
+ },
18
+ {
19
+ question: 'スペインのクリスマス宝くじ(El Gordo)は本当に「お得」ですか?',
20
+ answer: '純粋に数学的な観点からは、答えは「いいえ」です。売上の70%しか還元されません。しかし、1等の当選確率(10万分の1)は、ユーロミリオンズ(約1億4千万分の1)などと比較すると格段に高く設定されています。',
21
+ },
22
+ {
23
+ question: '統計を使って当選確率を上げることはできますか?',
24
+ answer: 'いいえ。宝くじの抽選はそれぞれ独立したランダムなプロセスです。昨日ある番号が出たからといって、今日その番号が出やすくなったり出にくくなったりすることは一切ありません。',
25
+ },
26
+ {
27
+ question: '比較表の「難易度」とは何を意味しますか?',
28
+ answer: '1等を引き当てるのがどれだけ難しいかを示す相対的な指標です。狙いやすい(20万分の1未満)、難しい(2000万分の1未満)、極めて困難(2000万分の1以上)。',
29
+ },
30
+ ];
31
+
32
+ const howToData = [
33
+ {
34
+ name: '抽選の種類を選択する',
35
+ text: 'クリスマス宝くじ、プリミティバ、ユーロミリオンズ、ボノロトなど、分析したい宝くじを選択します。',
36
+ },
37
+ {
38
+ name: '投資額を決定する',
39
+ text: '購入予定の枚数や口数を入力します。',
40
+ },
41
+ {
42
+ name: '重要な確率を分析する',
43
+ text: '1等の当選確率、小額当選の確率、元本回収(リイントゥエグロ)の確率をリアルに把握します。',
44
+ },
45
+ {
46
+ name: 'リスクとリターンの評価',
47
+ text: '期待値を確認し、投資した1ユーロにつき統計的にいくら「失っている」のかを理解します。',
48
+ },
49
+ ];
50
+
51
+ const bibliographyData = [
52
+ {
53
+ name: 'スペイン国立宝くじ・賭博公社 (SELAE) - 透明性ポータル',
54
+ url: 'https://www.selae.es/',
55
+ },
56
+ {
57
+ name: 'クリスマス宝くじの数学 - スペイン王立数学会 (RSME)',
58
+ url: 'https://rsme.es/',
59
+ },
60
+ {
61
+ name: 'ケリー基準とリスク管理 - Investopedia',
62
+ url: 'https://www.investopedia.com/',
63
+ },
64
+ ];
65
+
66
+ const seoData = [
67
+ {
68
+ type: 'title',
69
+ text: '「希望」の数学',
70
+ level: 2,
71
+ },
72
+ {
73
+ type: 'paragraph',
74
+ html: '多くの人にとって宝くじを買うことは、わずかな金額で「夢」を買う行為です。しかし、抽選箱やクリスタルボールの裏側には、数学の最も魅力的な分野の一つである「極端な確率の統計学」が潜んでいます。',
75
+ },
76
+ ];
77
+
78
+ const gameTranslations = {
79
+ gordo: {
80
+ name: 'クリスマス宝くじ (El Gordo)',
81
+ description: '世界最大の賞金総額を誇る宝くじ。何か当たる確率が高い。',
82
+ },
83
+ nino: {
84
+ name: '子供の宝くじ (El Niño)',
85
+ description: 'クリスマスと比較して、元本回収(リイントゥエグロ)の確率が3倍。',
86
+ },
87
+ euromillones: {
88
+ name: 'ユーロミリオンズ',
89
+ description: '天文学的な賞金額だが、当選確率はほぼ不可能に近い。',
90
+ },
91
+ primitiva: {
92
+ name: 'ラ・プリミティバ',
93
+ description: 'スペイン最古の宝くじ。難しいが一口の価格が安い。',
94
+ },
95
+ bonoloto: {
96
+ name: 'ボノロト',
97
+ description: '最も安価。少額の予算で毎日楽しむのに最適。',
98
+ },
99
+ };
100
+
101
+ const faqSchema: WithContext<FAQPage> = {
102
+ '@context': 'https://schema.org',
103
+ '@type': 'FAQPage',
104
+ mainEntity: faqData.map((item) => ({
105
+ '@type': 'Question',
106
+ name: item.question,
107
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
108
+ })),
109
+ };
110
+
111
+ const howToSchema: WithContext<HowTo> = {
112
+ '@context': 'https://schema.org',
113
+ '@type': 'HowTo',
114
+ name: title,
115
+ description,
116
+ step: howToData.map((step, i) => ({
117
+ '@type': 'HowToStep',
118
+ position: i + 1,
119
+ name: step.name,
120
+ text: step.text,
121
+ })),
122
+ };
123
+
124
+ const appSchema: WithContext<SoftwareApplication> = {
125
+ '@context': 'https://schema.org',
126
+ '@type': 'SoftwareApplication',
127
+ name: title,
128
+ description,
129
+ applicationCategory: 'FinanceApplication',
130
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
131
+ };
132
+
133
+ export const content: ToolLocaleContent<LotteryOptimizerUI> = {
134
+ slug,
135
+ title,
136
+ description,
137
+ faqTitle: 'よくある質問',
138
+ bibliographyTitle: '情報源とリファレンス',
139
+ ui: {
140
+ gameTranslations,
141
+ labelTitle: '宝くじ最適化ツール',
142
+ labelDescription: '抽選の種類を比較し、期待値を計算して、論理的に宝くじを楽しみましょう。',
143
+ labelSelectGame: '宝くじを選択',
144
+ labelConfigurePlay: 'プレイ設定',
145
+ labelAdjustQuantity: '購入枚数を調整して、リアルな当選確率を確認します。',
146
+ labelTotalInvestment: '投資総額',
147
+ labelTickets: '購入枚数 / 口数',
148
+ labelUnits: '個',
149
+ labelExposureAnalysis: '露出(リスク)分析',
150
+ labelSelectLottery: 'リスク分析を表示するには宝くじを選択してください。',
151
+ labelOptimalCutoff: '推奨されるカットオフポイント',
152
+ labelProbabilitySuccess: '成功確率',
153
+ labelExpectedValue: '期待値 (EV)',
154
+ labelReturnTheoretical: '1プレイあたりの理論上の払い戻し額。',
155
+ labelSocialReturnIndex: '社会的還元指数',
156
+ labelLow: '低',
157
+ labelMedium: '中',
158
+ labelHigh: '高',
159
+ labelComparison: '当選賞金比較',
160
+ labelLottery: '宝くじ',
161
+ labelCost: 'コスト',
162
+ labelTypicalPrize: '一般的な当選金',
163
+ labelDifficulty: '難易度',
164
+ labelAccessible: '狙いやすい',
165
+ labelDifficult: '難しい',
166
+ labelExtreme: '極めて困難',
167
+ labelNote: '注:クリスマス宝くじとエル・ニーニョの賞金は、デシモ(20ユーロ分)あたりの金額です。ユーロミリオンズなどは、1等賞金の一般的な推定額です。',
168
+ currencySymbol: '€',
169
+ currencyCode: 'EUR',
170
+ currencyLocale: 'ja-JP',
171
+ },
172
+ faq: faqData,
173
+ howTo: howToData,
174
+ bibliography: bibliographyData,
175
+ seo: seoData,
176
+ schemas: [faqSchema, howToSchema, appSchema],
177
+ };