@jjlmoya/utils-finance 1.3.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +3 -0
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +1 -1
- package/src/tool/compoundInterest/i18n/de.ts +208 -0
- package/src/tool/compoundInterest/i18n/id.ts +208 -0
- package/src/tool/compoundInterest/i18n/it.ts +208 -0
- package/src/tool/compoundInterest/i18n/ja.ts +207 -0
- package/src/tool/compoundInterest/i18n/ko.ts +207 -0
- package/src/tool/compoundInterest/i18n/nl.ts +208 -0
- package/src/tool/compoundInterest/i18n/pl.ts +208 -0
- package/src/tool/compoundInterest/i18n/pt.ts +208 -0
- package/src/tool/compoundInterest/i18n/ru.ts +208 -0
- package/src/tool/compoundInterest/i18n/sv.ts +208 -0
- package/src/tool/compoundInterest/i18n/tr.ts +208 -0
- package/src/tool/compoundInterest/i18n/zh.ts +202 -0
- package/src/tool/compoundInterest/index.ts +15 -7
- package/src/tool/courtFeeCalculator/i18n/de.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/fr.ts +1 -1
- package/src/tool/courtFeeCalculator/i18n/id.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/it.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/ja.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/ko.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/nl.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/pl.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/pt.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/ru.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/sv.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/tr.ts +152 -0
- package/src/tool/courtFeeCalculator/i18n/zh.ts +152 -0
- package/src/tool/courtFeeCalculator/index.ts +16 -8
- package/src/tool/debtSnowball/i18n/de.ts +160 -0
- package/src/tool/debtSnowball/i18n/id.ts +160 -0
- package/src/tool/debtSnowball/i18n/it.ts +160 -0
- package/src/tool/debtSnowball/i18n/ja.ts +157 -0
- package/src/tool/debtSnowball/i18n/ko.ts +160 -0
- package/src/tool/debtSnowball/i18n/nl.ts +160 -0
- package/src/tool/debtSnowball/i18n/pl.ts +160 -0
- package/src/tool/debtSnowball/i18n/pt.ts +160 -0
- package/src/tool/debtSnowball/i18n/ru.ts +160 -0
- package/src/tool/debtSnowball/i18n/sv.ts +160 -0
- package/src/tool/debtSnowball/i18n/tr.ts +160 -0
- package/src/tool/debtSnowball/i18n/zh.ts +160 -0
- package/src/tool/debtSnowball/index.ts +17 -9
- package/src/tool/fireCalculator/component.astro +12 -3
- package/src/tool/fireCalculator/i18n/de.ts +261 -0
- package/src/tool/fireCalculator/i18n/en.ts +5 -5
- package/src/tool/fireCalculator/i18n/es.ts +2 -2
- package/src/tool/fireCalculator/i18n/fr.ts +5 -5
- package/src/tool/fireCalculator/i18n/id.ts +261 -0
- package/src/tool/fireCalculator/i18n/it.ts +261 -0
- package/src/tool/fireCalculator/i18n/ja.ts +261 -0
- package/src/tool/fireCalculator/i18n/ko.ts +261 -0
- package/src/tool/fireCalculator/i18n/nl.ts +261 -0
- package/src/tool/fireCalculator/i18n/pl.ts +261 -0
- package/src/tool/fireCalculator/i18n/pt.ts +261 -0
- package/src/tool/fireCalculator/i18n/ru.ts +261 -0
- package/src/tool/fireCalculator/i18n/sv.ts +261 -0
- package/src/tool/fireCalculator/i18n/tr.ts +261 -0
- package/src/tool/fireCalculator/i18n/zh.ts +261 -0
- package/src/tool/fireCalculator/index.ts +15 -7
- package/src/tool/ibanBicSwiftConverter/i18n/de.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/id.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/it.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/ja.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/ko.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/nl.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/pl.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/pt.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/sv.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/i18n/zh.ts +128 -0
- package/src/tool/ibanBicSwiftConverter/index.ts +15 -7
- package/src/tool/inflation/i18n/de.ts +297 -0
- package/src/tool/inflation/i18n/id.ts +297 -0
- package/src/tool/inflation/i18n/it.ts +297 -0
- package/src/tool/inflation/i18n/ja.ts +297 -0
- package/src/tool/inflation/i18n/ko.ts +297 -0
- package/src/tool/inflation/i18n/nl.ts +297 -0
- package/src/tool/inflation/i18n/pl.ts +297 -0
- package/src/tool/inflation/i18n/pt.ts +297 -0
- package/src/tool/inflation/i18n/ru.ts +297 -0
- package/src/tool/inflation/i18n/sv.ts +297 -0
- package/src/tool/inflation/i18n/tr.ts +297 -0
- package/src/tool/inflation/i18n/zh.ts +297 -0
- package/src/tool/inflation/index.ts +17 -9
- package/src/tool/lateInterest/i18n/de.ts +224 -0
- package/src/tool/lateInterest/i18n/id.ts +224 -0
- package/src/tool/lateInterest/i18n/it.ts +224 -0
- package/src/tool/lateInterest/i18n/ja.ts +224 -0
- package/src/tool/lateInterest/i18n/ko.ts +224 -0
- package/src/tool/lateInterest/i18n/nl.ts +224 -0
- package/src/tool/lateInterest/i18n/pl.ts +224 -0
- package/src/tool/lateInterest/i18n/pt.ts +224 -0
- package/src/tool/lateInterest/i18n/ru.ts +224 -0
- package/src/tool/lateInterest/i18n/sv.ts +224 -0
- package/src/tool/lateInterest/i18n/tr.ts +224 -0
- package/src/tool/lateInterest/i18n/zh.ts +224 -0
- package/src/tool/lateInterest/index.ts +17 -9
- package/src/tool/legalInterestRate/i18n/de.ts +143 -0
- package/src/tool/legalInterestRate/i18n/id.ts +143 -0
- package/src/tool/legalInterestRate/i18n/it.ts +143 -0
- package/src/tool/legalInterestRate/i18n/ja.ts +143 -0
- package/src/tool/legalInterestRate/i18n/ko.ts +143 -0
- package/src/tool/legalInterestRate/i18n/nl.ts +143 -0
- package/src/tool/legalInterestRate/i18n/pl.ts +143 -0
- package/src/tool/legalInterestRate/i18n/pt.ts +143 -0
- package/src/tool/legalInterestRate/i18n/ru.ts +143 -0
- package/src/tool/legalInterestRate/i18n/sv.ts +143 -0
- package/src/tool/legalInterestRate/i18n/tr.ts +143 -0
- package/src/tool/legalInterestRate/i18n/zh.ts +143 -0
- package/src/tool/legalInterestRate/index.ts +17 -9
- package/src/tool/lotteryOptimizer/i18n/de.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/id.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/it.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/ja.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/ko.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/nl.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/pl.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/pt.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/ru.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/sv.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/tr.ts +177 -0
- package/src/tool/lotteryOptimizer/i18n/zh.ts +177 -0
- package/src/tool/lotteryOptimizer/index.ts +17 -9
- package/src/tool/mortgage/i18n/de.ts +223 -0
- package/src/tool/mortgage/i18n/id.ts +219 -0
- package/src/tool/mortgage/i18n/it.ts +223 -0
- package/src/tool/mortgage/i18n/ja.ts +219 -0
- package/src/tool/mortgage/i18n/ko.ts +219 -0
- package/src/tool/mortgage/i18n/nl.ts +219 -0
- package/src/tool/mortgage/i18n/pl.ts +219 -0
- package/src/tool/mortgage/i18n/pt.ts +219 -0
- package/src/tool/mortgage/i18n/ru.ts +219 -0
- package/src/tool/mortgage/i18n/sv.ts +219 -0
- package/src/tool/mortgage/i18n/tr.ts +219 -0
- package/src/tool/mortgage/i18n/zh.ts +219 -0
- package/src/tool/mortgage/index.ts +15 -7
- package/src/tool/percentageCalculator/i18n/de.ts +229 -0
- package/src/tool/percentageCalculator/i18n/id.ts +229 -0
- package/src/tool/percentageCalculator/i18n/it.ts +229 -0
- package/src/tool/percentageCalculator/i18n/ja.ts +229 -0
- package/src/tool/percentageCalculator/i18n/ko.ts +229 -0
- package/src/tool/percentageCalculator/i18n/nl.ts +229 -0
- package/src/tool/percentageCalculator/i18n/pl.ts +229 -0
- package/src/tool/percentageCalculator/i18n/pt.ts +229 -0
- package/src/tool/percentageCalculator/i18n/ru.ts +229 -0
- package/src/tool/percentageCalculator/i18n/sv.ts +229 -0
- package/src/tool/percentageCalculator/i18n/tr.ts +229 -0
- package/src/tool/percentageCalculator/i18n/zh.ts +229 -0
- package/src/tool/percentageCalculator/index.ts +15 -7
- package/src/tool/rentIncreaseCalculator/i18n/de.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/id.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/it.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/ja.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/ko.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/nl.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/pl.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/pt.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/ru.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/sv.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/tr.ts +136 -0
- package/src/tool/rentIncreaseCalculator/i18n/zh.ts +136 -0
- package/src/tool/rentIncreaseCalculator/index.ts +17 -9
- 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 = 'lotteri-optimerare-sannolikhetskalkylator';
|
|
6
|
+
const title = 'Lotteri optimerare och sannolikhetskalkylator';
|
|
7
|
+
const description = 'Analysera dina chanser i spanska jullotteriet, Euromillions och Bonoloto. Beräkna optimalt antal lotter och det förväntade värdet på din insats.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Vad är väntevärde i lotteri?',
|
|
12
|
+
answer: 'Det är det genomsnittliga värdet du förväntar dig att vinna för varje satsad euro. I nästan alla lotterier är väntevärdet negativt (du förlorar oftast 0,50€ för varje 1€ du spelar), vilket innebär att huset alltid vinner i det långa loppet.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Är det bättre att spela på många olika nummer eller många lotter med samma nummer?',
|
|
16
|
+
answer: 'Om du vill vinna "något" ökar diversifiering av nummer din sannolikhet att få mindre vinster. Om du siktar på storvinsten ger spel på ett enda nummer samma sannolikhet, men högre vinst om du vinner.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Är det verkligen lönsamt att spela på det spanska jullotteriet (El Gordo)?',
|
|
20
|
+
answer: 'Ur ett rent matematiskt perspektiv, nej. Endast 70 % av intäkterna betalas ut. Men det har en mycket högre sannolikhet för storvinst (1 på 100 000) än Euromillions (1 på 140 miljoner).',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Kan jag förbättra mina chanser med statistik?',
|
|
24
|
+
answer: 'Nej. Lotteridragningar är oberoende slumpmässiga processer. Att ett nummer drogs igår påverkar inte alls chansen att det dras idag.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Vad betyder "svårighetsgrad" i jämförelsetabellen?',
|
|
28
|
+
answer: 'Det är ett relativt mått på hur svårt det är att vinna första pris. Tillgänglig (under 200k), Svår (under 20 miljoner), Extrem (över 20 miljoner).',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{
|
|
34
|
+
name: 'Välj typ av dragning',
|
|
35
|
+
text: 'Välj mellan jullotteriet, Primitiva, Euromillions eller Bonoloto för att analysera deras specifika regler.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Definiera din investering',
|
|
39
|
+
text: 'Ange hur många lotter eller rader du planerar att köpa.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Analysera kritiska sannolikheter',
|
|
43
|
+
text: 'Se de verkliga chanserna att vinna första pris jämfört med mindre vinster eller återbetalning.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Utvärdera risk/nytta',
|
|
47
|
+
text: 'Kontrollera väntevärdet för att förstå hur mycket pengar du statistiskt sett "ger bort" per investerad euro.',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const bibliographyData = [
|
|
52
|
+
{
|
|
53
|
+
name: 'Loterías y Apuestas del Estado (SELAE) - Transparensportal',
|
|
54
|
+
url: 'https://www.selae.es/',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'Jullotteriets matematik - RSME',
|
|
58
|
+
url: 'https://rsme.es/',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'Kellys kriterium och riskhantering',
|
|
62
|
+
url: 'https://www.investopedia.com/',
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
const seoData = [
|
|
67
|
+
{
|
|
68
|
+
type: 'title',
|
|
69
|
+
text: 'Hoppets matematik',
|
|
70
|
+
level: 2,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'paragraph',
|
|
74
|
+
html: 'Att spela på lotteri är för många köpet av en illusion för några euro. Men bakom dragningarna döljer sig en av matematikens mest fascinerande grenar: statistiken för extrema sannolikheter.',
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
const gameTranslations = {
|
|
79
|
+
gordo: {
|
|
80
|
+
name: 'Jullotteriet (El Gordo)',
|
|
81
|
+
description: 'Världens största vinstutdelning. Hög sannolikhet att vinna något.',
|
|
82
|
+
},
|
|
83
|
+
nino: {
|
|
84
|
+
name: 'Barnens lotteri (El Niño)',
|
|
85
|
+
description: 'Tredubblar chanserna till återbetalning jämfört med jullotteriet.',
|
|
86
|
+
},
|
|
87
|
+
euromillones: {
|
|
88
|
+
name: 'Euromillions',
|
|
89
|
+
description: 'Astronomiska vinster, nästan omöjliga sannolikheter.',
|
|
90
|
+
},
|
|
91
|
+
primitiva: {
|
|
92
|
+
name: 'La Primitiva',
|
|
93
|
+
description: 'Spaniens äldsta lotteri. Svårt men billigare.',
|
|
94
|
+
},
|
|
95
|
+
bonoloto: {
|
|
96
|
+
name: 'Bonoloto',
|
|
97
|
+
description: 'Den mest ekonomiska. Utmärkt för dagligt spel med liten budget.',
|
|
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: 'Vanliga frågor',
|
|
138
|
+
bibliographyTitle: 'Källor och referenser',
|
|
139
|
+
ui: {
|
|
140
|
+
gameTranslations,
|
|
141
|
+
labelTitle: 'Lotteri optimerare',
|
|
142
|
+
labelDescription: 'Jämför dragningar, beräkna ditt väntevärde och spela med förnuft.',
|
|
143
|
+
labelSelectGame: 'Välj ett lotteri',
|
|
144
|
+
labelConfigurePlay: 'Konfigurera ditt spel',
|
|
145
|
+
labelAdjustQuantity: 'Justera antalet lotter för att se din verkliga sannolikhet.',
|
|
146
|
+
labelTotalInvestment: 'Total investering',
|
|
147
|
+
labelTickets: 'Antal lotter / rader',
|
|
148
|
+
labelUnits: 'st',
|
|
149
|
+
labelExposureAnalysis: 'Exponeringsanalys',
|
|
150
|
+
labelSelectLottery: 'Välj ett lotteri för att se riskanalysen.',
|
|
151
|
+
labelOptimalCutoff: 'Föreslagen brytpunkt',
|
|
152
|
+
labelProbabilitySuccess: 'Sannolikhet för framgång',
|
|
153
|
+
labelExpectedValue: 'Väntevärde (EV)',
|
|
154
|
+
labelReturnTheoretical: 'Teoretisk återbetalning per spelas rad.',
|
|
155
|
+
labelSocialReturnIndex: 'Index för social lönsamhet',
|
|
156
|
+
labelLow: 'Låg',
|
|
157
|
+
labelMedium: 'Medel',
|
|
158
|
+
labelHigh: 'Hög',
|
|
159
|
+
labelComparison: 'Jämförelse av vinster',
|
|
160
|
+
labelLottery: 'Lotteri',
|
|
161
|
+
labelCost: 'Kostnad',
|
|
162
|
+
labelTypicalPrize: 'Typisk vinst',
|
|
163
|
+
labelDifficulty: 'Svårighetsgrad',
|
|
164
|
+
labelAccessible: 'Tillgänglig',
|
|
165
|
+
labelDifficult: 'Svår',
|
|
166
|
+
labelExtreme: 'Extrem',
|
|
167
|
+
labelNote: 'Obs: Vinster för jullotteriet och El Niño är per "décimo" (20€). Euromillions etc. är typiska jackpottar.',
|
|
168
|
+
currencySymbol: '€',
|
|
169
|
+
currencyCode: 'EUR',
|
|
170
|
+
currencyLocale: 'sv-SE',
|
|
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 = 'piyango-optimize-edici-olasilik-hesaplayici';
|
|
6
|
+
const title = 'Piyango Optimize Edici ve Olasılık Hesaplayıcı';
|
|
7
|
+
const description = 'İspanya Noel Piyangosu, Euromillions ve Bonoloto’daki olasılıklarınızı analiz edin. İdeal bilet sayısını ve bahsinizin beklenen değerini hesaplayın.';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: 'Piyangoda matematiksel beklenti nedir?',
|
|
12
|
+
answer: 'Bahis yapılan her bir euro başına kazanmayı beklediğiniz ortalama değerdir. Hemen hemen tüm piyangolarda matematiksel beklenti negatiftir (genellikle oynanan her 1€ için 0,50€ kaybedersiniz), bu da uzun vadede her zaman kasanın kazandığı anlamına gelir.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Birçok farklı numara oynamak mı yoksa aynı numaranın birçok biletini almak mı daha iyidir?',
|
|
16
|
+
answer: '"Bir şeyler" kazanmak istiyorsanız, numaraları çeşitlendirmek küçük ödüller alma olasılığınızı artırır. Büyük ikramiyeyi hedefliyorsanız, tek bir numara oynamak ikramiye için aynı olasılığı verir ancak tutarsa ödül daha büyük olur.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'İspanya Noel Piyangosu (El Gordo) oynamak gerçekten mantıklı mı?',
|
|
20
|
+
answer: 'Tamamen matematiksel bir bakış açısıyla, hayır. Toplanan paranın sadece %70’i dağıtılır. Ancak, büyük ikramiye olasılığı (100.000’de 1), Euromillions’tan (140 milyonda 1) çok daha yüksektir.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'İstatistiklerle şansımı artırabilir miyim?',
|
|
24
|
+
answer: 'Hayır. Piyango çekilişleri bağımsız rastgele süreçlerdir. Bir numaranın dün çıkmış olması, bugün çıkma olasılığını hiçbir şekilde etkilemez.',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: 'Karşılaştırma tablosundaki "zorluk" ne anlama geliyor?',
|
|
28
|
+
answer: 'Birinci ödülü kazanmanın ne kadar zor olduğunun göreceli bir ölçüsüdür. Erişilebilir (200 binden az), Zor (20 milyondan az), Ekstrem (20 milyondan fazla).',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{
|
|
34
|
+
name: 'Çekiliş türünü seçin',
|
|
35
|
+
text: 'Belirli kurallarını analiz etmek için Noel Piyangosu, Primitiva, Euromillions veya Bonoloto arasından seçim yapın.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Yatırımınızı belirleyin',
|
|
39
|
+
text: 'Bu çekiliş için kaç bilet veya bahis almayı planladığınızı belirtin.',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'Kritik olasılıkları analiz edin',
|
|
43
|
+
text: 'Birinci ödülü kazanma şansınızı küçük ödüller veya amorti ile karşılaştırın.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Risk/getiri değerlendirmesi yapın',
|
|
47
|
+
text: 'Yatırılan her euro başına istatistiksel olarak ne kadar para "hediye ettiğinizi" anlamak için matematiksel beklentiyi gözden geçirin.',
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const bibliographyData = [
|
|
52
|
+
{
|
|
53
|
+
name: 'Loterías y Apuestas del Estado (SELAE) - Şeffaflık Portalı',
|
|
54
|
+
url: 'https://www.selae.es/',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'Noel Piyangosu Matematiği - RSME',
|
|
58
|
+
url: 'https://rsme.es/',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'Kelly Kriteri ve Risk Yönetimi',
|
|
62
|
+
url: 'https://www.investopedia.com/',
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
const seoData = [
|
|
67
|
+
{
|
|
68
|
+
type: 'title',
|
|
69
|
+
text: 'Umudun Matematiği',
|
|
70
|
+
level: 2,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'paragraph',
|
|
74
|
+
html: 'Piyango oynamak, birçoğu için birkaç euro karşılığında bir illüzyon satın almaktır. Ancak çekilişlerin arkasında matematiğin en büyüleyici dallarından biri olan uç olasılıkların istatistiği yatar.',
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
const gameTranslations = {
|
|
79
|
+
gordo: {
|
|
80
|
+
name: 'Noel Piyangosu (El Gordo)',
|
|
81
|
+
description: 'Dünyanın en büyük ödül dağıtımı. Bir şeyler kazanma olasılığı yüksek.',
|
|
82
|
+
},
|
|
83
|
+
nino: {
|
|
84
|
+
name: 'Çocuk Piyangosu (El Niño)',
|
|
85
|
+
description: 'Noel’e göre amorti olasılığını üç katına çıkarır.',
|
|
86
|
+
},
|
|
87
|
+
euromillones: {
|
|
88
|
+
name: 'Euromillions',
|
|
89
|
+
description: 'Astronomik ödüller, neredeyse imkansız olasılıklar.',
|
|
90
|
+
},
|
|
91
|
+
primitiva: {
|
|
92
|
+
name: 'La Primitiva',
|
|
93
|
+
description: 'İspanya’nın en eski piyangosu. Zor ama daha ucuz.',
|
|
94
|
+
},
|
|
95
|
+
bonoloto: {
|
|
96
|
+
name: 'Bonoloto',
|
|
97
|
+
description: 'En ekonomik olanı. Küçük bütçeyle günlük oynamak için ideal.',
|
|
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: 'Sıkça Sorulan Sorular',
|
|
138
|
+
bibliographyTitle: 'Kaynaklar ve Referanslar',
|
|
139
|
+
ui: {
|
|
140
|
+
gameTranslations,
|
|
141
|
+
labelTitle: 'Piyango Optimize Edici',
|
|
142
|
+
labelDescription: 'Çekilişleri karşılaştırın, matematiksel beklentinizi hesaplayın ve mantıklı oynayın.',
|
|
143
|
+
labelSelectGame: 'Bir piyango seçin',
|
|
144
|
+
labelConfigurePlay: 'Oyununuzu Yapılandırın',
|
|
145
|
+
labelAdjustQuantity: 'Gerçek olasılığınızı görmek için katılım sayısını ayarlayın.',
|
|
146
|
+
labelTotalInvestment: 'Toplam Yatırım',
|
|
147
|
+
labelTickets: 'Bilet / Bahis Miktarı',
|
|
148
|
+
labelUnits: 'adet',
|
|
149
|
+
labelExposureAnalysis: 'Risk Analizi',
|
|
150
|
+
labelSelectLottery: 'Risk analizini görmek için bir piyango seçin.',
|
|
151
|
+
labelOptimalCutoff: 'Önerilen Kesme Noktası',
|
|
152
|
+
labelProbabilitySuccess: 'Başarı Olasılığı',
|
|
153
|
+
labelExpectedValue: 'Beklenen Değer (EV)',
|
|
154
|
+
labelReturnTheoretical: 'Yapılan her oyun başına teorik getiri.',
|
|
155
|
+
labelSocialReturnIndex: 'Sosyal Karlılık Endeksi',
|
|
156
|
+
labelLow: 'Düşük',
|
|
157
|
+
labelMedium: 'Orta',
|
|
158
|
+
labelHigh: 'Yüksek',
|
|
159
|
+
labelComparison: 'Ödül Karşılaştırması',
|
|
160
|
+
labelLottery: 'Piyango',
|
|
161
|
+
labelCost: 'Maliyet',
|
|
162
|
+
labelTypicalPrize: 'Tipik Ödül',
|
|
163
|
+
labelDifficulty: 'Zorluk',
|
|
164
|
+
labelAccessible: 'Erişilebilir',
|
|
165
|
+
labelDifficult: 'Zor',
|
|
166
|
+
labelExtreme: 'Ekstrem',
|
|
167
|
+
labelNote: 'Not: Noel ve El Niño ödülleri "décimo" (20€) başınadır. Euromillions vb. tipik ikramiyelerdir.',
|
|
168
|
+
currencySymbol: '€',
|
|
169
|
+
currencyCode: 'EUR',
|
|
170
|
+
currencyLocale: 'tr-TR',
|
|
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 = '分析您在西班牙圣诞彩票、欧洲百万彩 (Euromillions) 和 Bonoloto 中的中奖概率。计算最佳购买张数及投注的预期价值。';
|
|
8
|
+
|
|
9
|
+
const faqData = [
|
|
10
|
+
{
|
|
11
|
+
question: '什么是彩票中的数学期望?',
|
|
12
|
+
answer: '它是您每投入一欧元预期能赢回的平均金额。在几乎所有彩票中,数学期望都是负数(通常每投入 1 欧元会亏损 0.50 欧元),这意味着从长远来看,庄家总是赢家。',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: '是买很多不同的号码好,还是买很多张同一个号码好?',
|
|
16
|
+
answer: '如果您是为了中“点儿什么”,分散号码会增加您获得小奖的概率。如果您是为了头奖,买一个号码和多个号码对头奖的概率是一样的,但如果中了,奖金会更高。',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: '玩西班牙圣诞彩票 (El Gordo) 真的划算吗?',
|
|
20
|
+
answer: '从纯数学的角度来看,不划算。只有 70% 的资金被用于派奖。但是,它的头奖中奖概率(1/100,000)比欧洲百万彩(1/1.4 亿)要高得多。',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: '我可以通过统计数据来提高中奖机会吗?',
|
|
24
|
+
answer: '不。彩票开奖是独立的随机过程。昨天开出的号码绝对不会影响今天开出的号码。每个号码在每次开奖中的概率都是完全一样的。',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
question: '对比表中的“难度”是什么意思?',
|
|
28
|
+
answer: '它是衡量赢得头奖难易程度的相对指标。容易(小于 20 万分之一)、困难(小于 2000 万分之一)、极难(大于 2000 万分之一)。',
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
32
|
+
const howToData = [
|
|
33
|
+
{
|
|
34
|
+
name: '选择开奖类型',
|
|
35
|
+
text: '在圣诞彩票、Primitiva、欧洲百万彩或 Bonoloto 中选择,以分析其特定规则。',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: '定义您的投入',
|
|
39
|
+
text: '输入您计划购买的彩票张数或投注次数。',
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: '分析关键概率',
|
|
43
|
+
text: '查看赢得头奖与小奖或返还本金的真实概率对比。',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: '评估风险/收益',
|
|
47
|
+
text: '查看数学期望,以了解统计学上您每投入一欧元相当于“捐献”了多少钱。',
|
|
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: '返还本金的机会是圣诞彩票的三倍。',
|
|
86
|
+
},
|
|
87
|
+
euromillones: {
|
|
88
|
+
name: '欧洲百万彩 (Euromillions)',
|
|
89
|
+
description: '奖金极高,但概率几乎不可能。',
|
|
90
|
+
},
|
|
91
|
+
primitiva: {
|
|
92
|
+
name: 'La Primitiva',
|
|
93
|
+
description: '西班牙最古老的彩票。较难但价格更便宜。',
|
|
94
|
+
},
|
|
95
|
+
bonoloto: {
|
|
96
|
+
name: 'Bonoloto',
|
|
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: '单次投注的理论回报。',
|
|
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€) 计算的。欧洲百万彩等是典型的头奖金额。',
|
|
168
|
+
currencySymbol: '€',
|
|
169
|
+
currencyCode: 'EUR',
|
|
170
|
+
currencyLocale: 'zh-CN',
|
|
171
|
+
},
|
|
172
|
+
faq: faqData,
|
|
173
|
+
howTo: howToData,
|
|
174
|
+
bibliography: bibliographyData,
|
|
175
|
+
seo: seoData,
|
|
176
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
177
|
+
};
|
|
@@ -6,20 +6,28 @@ import type { LotteryOptimizerUI } from './ui';
|
|
|
6
6
|
|
|
7
7
|
export type LotteryOptimizerLocaleContent = ToolLocaleContent<LotteryOptimizerUI>;
|
|
8
8
|
|
|
9
|
-
import { content as es } from './i18n/es';
|
|
10
|
-
import { content as en } from './i18n/en';
|
|
11
|
-
import { content as fr } from './i18n/fr';
|
|
12
|
-
|
|
13
9
|
export const lotteryOptimizer: FinanceToolEntry<LotteryOptimizerUI> = {
|
|
14
10
|
id: 'optimizador-loterias',
|
|
15
11
|
icons: {
|
|
16
|
-
bg: 'mdi:
|
|
17
|
-
fg: 'mdi:
|
|
12
|
+
bg: 'mdi:chart-scatter-plot',
|
|
13
|
+
fg: 'mdi:ticket-percent-outline',
|
|
18
14
|
},
|
|
19
15
|
i18n: {
|
|
20
|
-
|
|
21
|
-
en:
|
|
22
|
-
|
|
16
|
+
de: () => import('./i18n/de').then((m) => m.content),
|
|
17
|
+
en: () => import('./i18n/en').then((m) => m.content),
|
|
18
|
+
es: () => import('./i18n/es').then((m) => m.content),
|
|
19
|
+
fr: () => import('./i18n/fr').then((m) => m.content),
|
|
20
|
+
id: () => import('./i18n/id').then((m) => m.content),
|
|
21
|
+
it: () => import('./i18n/it').then((m) => m.content),
|
|
22
|
+
ja: () => import('./i18n/ja').then((m) => m.content),
|
|
23
|
+
ko: () => import('./i18n/ko').then((m) => m.content),
|
|
24
|
+
nl: () => import('./i18n/nl').then((m) => m.content),
|
|
25
|
+
pl: () => import('./i18n/pl').then((m) => m.content),
|
|
26
|
+
pt: () => import('./i18n/pt').then((m) => m.content),
|
|
27
|
+
ru: () => import('./i18n/ru').then((m) => m.content),
|
|
28
|
+
sv: () => import('./i18n/sv').then((m) => m.content),
|
|
29
|
+
tr: () => import('./i18n/tr').then((m) => m.content),
|
|
30
|
+
zh: () => import('./i18n/zh').then((m) => m.content),
|
|
23
31
|
},
|
|
24
32
|
};
|
|
25
33
|
|