@jjlmoya/utils-tools 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -1
- package/src/category/i18n/de.ts +172 -0
- package/src/category/i18n/id.ts +172 -0
- package/src/category/i18n/it.ts +172 -0
- package/src/category/i18n/ja.ts +172 -0
- package/src/category/i18n/ko.ts +172 -0
- package/src/category/i18n/nl.ts +172 -0
- package/src/category/i18n/pl.ts +172 -0
- package/src/category/i18n/pt.ts +172 -0
- package/src/category/i18n/ru.ts +172 -0
- package/src/category/i18n/sv.ts +172 -0
- package/src/category/i18n/tr.ts +172 -0
- package/src/category/i18n/zh.ts +172 -0
- package/src/category/index.ts +13 -1
- package/src/tests/i18n_coverage.test.ts +36 -0
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/slug_uniqueness.test.ts +81 -0
- package/src/tests/title_quality.test.ts +0 -1
- package/src/tool/date-diff-calculator/i18n/de.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/fr.ts +1 -1
- package/src/tool/date-diff-calculator/i18n/id.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/it.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/ja.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/ko.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/nl.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/pl.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/pt.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/ru.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/sv.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/tr.ts +132 -0
- package/src/tool/date-diff-calculator/i18n/zh.ts +132 -0
- package/src/tool/date-diff-calculator/index.ts +12 -0
- package/src/tool/drive-direct-link/i18n/de.ts +118 -0
- package/src/tool/drive-direct-link/i18n/id.ts +118 -0
- package/src/tool/drive-direct-link/i18n/it.ts +118 -0
- package/src/tool/drive-direct-link/i18n/ja.ts +118 -0
- package/src/tool/drive-direct-link/i18n/ko.ts +118 -0
- package/src/tool/drive-direct-link/i18n/nl.ts +118 -0
- package/src/tool/drive-direct-link/i18n/pl.ts +118 -0
- package/src/tool/drive-direct-link/i18n/pt.ts +118 -0
- package/src/tool/drive-direct-link/i18n/ru.ts +118 -0
- package/src/tool/drive-direct-link/i18n/sv.ts +118 -0
- package/src/tool/drive-direct-link/i18n/tr.ts +118 -0
- package/src/tool/drive-direct-link/i18n/zh.ts +118 -0
- package/src/tool/drive-direct-link/index.ts +12 -0
- package/src/tool/email-list-cleaner/i18n/de.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/es.ts +1 -1
- package/src/tool/email-list-cleaner/i18n/fr.ts +1 -1
- package/src/tool/email-list-cleaner/i18n/id.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/it.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/ja.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/ko.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/nl.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/pl.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/pt.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/ru.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/sv.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/tr.ts +140 -0
- package/src/tool/email-list-cleaner/i18n/zh.ts +140 -0
- package/src/tool/email-list-cleaner/index.ts +12 -0
- package/src/tool/env-badge-spain/i18n/de.ts +153 -0
- package/src/tool/env-badge-spain/i18n/es.ts +1 -1
- package/src/tool/env-badge-spain/i18n/fr.ts +1 -1
- package/src/tool/env-badge-spain/i18n/id.ts +153 -0
- package/src/tool/env-badge-spain/i18n/it.ts +153 -0
- package/src/tool/env-badge-spain/i18n/ja.ts +153 -0
- package/src/tool/env-badge-spain/i18n/ko.ts +153 -0
- package/src/tool/env-badge-spain/i18n/nl.ts +153 -0
- package/src/tool/env-badge-spain/i18n/pl.ts +153 -0
- package/src/tool/env-badge-spain/i18n/pt.ts +153 -0
- package/src/tool/env-badge-spain/i18n/ru.ts +153 -0
- package/src/tool/env-badge-spain/i18n/sv.ts +153 -0
- package/src/tool/env-badge-spain/i18n/tr.ts +153 -0
- package/src/tool/env-badge-spain/i18n/zh.ts +153 -0
- package/src/tool/env-badge-spain/index.ts +12 -0
- package/src/tool/morse-beacon/i18n/de.ts +157 -0
- package/src/tool/morse-beacon/i18n/es.ts +1 -1
- package/src/tool/morse-beacon/i18n/id.ts +157 -0
- package/src/tool/morse-beacon/i18n/it.ts +157 -0
- package/src/tool/morse-beacon/i18n/ja.ts +157 -0
- package/src/tool/morse-beacon/i18n/ko.ts +157 -0
- package/src/tool/morse-beacon/i18n/nl.ts +157 -0
- package/src/tool/morse-beacon/i18n/pl.ts +157 -0
- package/src/tool/morse-beacon/i18n/pt.ts +157 -0
- package/src/tool/morse-beacon/i18n/ru.ts +157 -0
- package/src/tool/morse-beacon/i18n/sv.ts +157 -0
- package/src/tool/morse-beacon/i18n/tr.ts +157 -0
- package/src/tool/morse-beacon/i18n/zh.ts +157 -0
- package/src/tool/morse-beacon/index.ts +13 -1
- package/src/tool/password-generator/i18n/de.ts +166 -0
- package/src/tool/password-generator/i18n/fr.ts +1 -1
- package/src/tool/password-generator/i18n/id.ts +166 -0
- package/src/tool/password-generator/i18n/it.ts +166 -0
- package/src/tool/password-generator/i18n/ja.ts +166 -0
- package/src/tool/password-generator/i18n/ko.ts +166 -0
- package/src/tool/password-generator/i18n/nl.ts +166 -0
- package/src/tool/password-generator/i18n/pl.ts +166 -0
- package/src/tool/password-generator/i18n/pt.ts +166 -0
- package/src/tool/password-generator/i18n/ru.ts +166 -0
- package/src/tool/password-generator/i18n/sv.ts +166 -0
- package/src/tool/password-generator/i18n/tr.ts +166 -0
- package/src/tool/password-generator/i18n/zh.ts +166 -0
- package/src/tool/password-generator/index.ts +13 -1
- package/src/tool/routes/i18n/de.ts +157 -0
- package/src/tool/routes/i18n/id.ts +157 -0
- package/src/tool/routes/i18n/it.ts +157 -0
- package/src/tool/routes/i18n/ja.ts +157 -0
- package/src/tool/routes/i18n/ko.ts +157 -0
- package/src/tool/routes/i18n/nl.ts +157 -0
- package/src/tool/routes/i18n/pl.ts +157 -0
- package/src/tool/routes/i18n/pt.ts +157 -0
- package/src/tool/routes/i18n/ru.ts +157 -0
- package/src/tool/routes/i18n/sv.ts +157 -0
- package/src/tool/routes/i18n/tr.ts +157 -0
- package/src/tool/routes/i18n/zh.ts +157 -0
- package/src/tool/routes/index.ts +13 -1
- package/src/tool/rule-of-three/i18n/de.ts +171 -0
- package/src/tool/rule-of-three/i18n/en.ts +1 -1
- package/src/tool/rule-of-three/i18n/id.ts +171 -0
- package/src/tool/rule-of-three/i18n/it.ts +171 -0
- package/src/tool/rule-of-three/i18n/ja.ts +171 -0
- package/src/tool/rule-of-three/i18n/ko.ts +171 -0
- package/src/tool/rule-of-three/i18n/nl.ts +171 -0
- package/src/tool/rule-of-three/i18n/pl.ts +171 -0
- package/src/tool/rule-of-three/i18n/pt.ts +171 -0
- package/src/tool/rule-of-three/i18n/ru.ts +171 -0
- package/src/tool/rule-of-three/i18n/sv.ts +171 -0
- package/src/tool/rule-of-three/i18n/tr.ts +171 -0
- package/src/tool/rule-of-three/i18n/zh.ts +171 -0
- package/src/tool/rule-of-three/index.ts +13 -1
- package/src/tool/seo-content-optimizer/i18n/de.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/id.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/it.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/ja.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/ko.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/nl.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/pl.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/pt.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/ru.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/sv.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/tr.ts +136 -0
- package/src/tool/seo-content-optimizer/i18n/zh.ts +136 -0
- package/src/tool/seo-content-optimizer/index.ts +12 -0
- package/src/tool/speed-reader/i18n/de.ts +152 -0
- package/src/tool/speed-reader/i18n/es.ts +1 -1
- package/src/tool/speed-reader/i18n/id.ts +152 -0
- package/src/tool/speed-reader/i18n/it.ts +152 -0
- package/src/tool/speed-reader/i18n/ja.ts +152 -0
- package/src/tool/speed-reader/i18n/ko.ts +152 -0
- package/src/tool/speed-reader/i18n/nl.ts +152 -0
- package/src/tool/speed-reader/i18n/pl.ts +152 -0
- package/src/tool/speed-reader/i18n/pt.ts +152 -0
- package/src/tool/speed-reader/i18n/ru.ts +152 -0
- package/src/tool/speed-reader/i18n/sv.ts +152 -0
- package/src/tool/speed-reader/i18n/tr.ts +152 -0
- package/src/tool/speed-reader/i18n/zh.ts +152 -0
- package/src/tool/speed-reader/index.ts +12 -0
- package/src/tool/text-pixel-calculator/i18n/de.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/id.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/it.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/ja.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/ko.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/nl.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/pl.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/pt.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/ru.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/sv.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/tr.ts +133 -0
- package/src/tool/text-pixel-calculator/i18n/zh.ts +133 -0
- package/src/tool/text-pixel-calculator/index.ts +12 -0
- package/src/tool/whatsapp-link/i18n/de.ts +128 -0
- package/src/tool/whatsapp-link/i18n/es.ts +1 -1
- package/src/tool/whatsapp-link/i18n/id.ts +128 -0
- package/src/tool/whatsapp-link/i18n/it.ts +128 -0
- package/src/tool/whatsapp-link/i18n/ja.ts +128 -0
- package/src/tool/whatsapp-link/i18n/ko.ts +128 -0
- package/src/tool/whatsapp-link/i18n/nl.ts +128 -0
- package/src/tool/whatsapp-link/i18n/pl.ts +128 -0
- package/src/tool/whatsapp-link/i18n/pt.ts +128 -0
- package/src/tool/whatsapp-link/i18n/ru.ts +128 -0
- package/src/tool/whatsapp-link/i18n/sv.ts +128 -0
- package/src/tool/whatsapp-link/i18n/tr.ts +128 -0
- package/src/tool/whatsapp-link/i18n/zh.ts +128 -0
- package/src/tool/whatsapp-link/index.ts +12 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { RuleOfThreeUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const faqData = [
|
|
6
|
+
{
|
|
7
|
+
question: 'O que é a regra de três simples direta?',
|
|
8
|
+
answer: 'É um método matemático para resolver problemas de proporcionalidade entre três valores conhecidos e um desconhecido. Chama-se "direta" porque quando uma quantidade aumenta, a outra aumenta na mesma proporção.',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
question: 'Quando devo usar a regra de três inversa?',
|
|
12
|
+
answer: 'É utilizada quando as quantidades são inversamente proporcionais (se uma aumenta, a outra diminui). Por exemplo: se 2 pintores demoram 5 horas, 4 pintores demorarão menos tempo. A nossa calculadora atual foca-se na proporcionalidade direta.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'É precisa para cálculos profissionais?',
|
|
16
|
+
answer: 'Sim. A nossa calculadora utiliza precisão de ponto flutuante de alta fidelidade, ideal para ajustes de dosagem, escalas de design gráfico, orçamentos comerciais e conversões de receitas.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Como é calculada manualmente?',
|
|
20
|
+
answer: 'A fórmula é: (Valor B * Valor C) / Valor A = X. Ou seja, multiplicam-se os valores na diagonal e divide-se o resultado pelo valor restante.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToData = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Identifique a relação base',
|
|
27
|
+
text: 'Introduza os dois valores conhecidos que formam a proporção inicial (ex: 100km equivalem a 8 litros).',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Introduza o terceiro valor',
|
|
31
|
+
text: 'Escreva o novo valor cujo equivalente deseja encontrar (ex: se vou viajar 250km...).',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Obtenha o resultado',
|
|
35
|
+
text: 'O sistema calculará automaticamente o valor desconhecido (X) em tempo real sem ter de premir nenhum botão.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Copiar ou redefinir',
|
|
39
|
+
text: 'Pode copiar o resultado diretamente para a área de transferência ou limpar os campos para realizar um novo cálculo.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
44
|
+
'@context': 'https://schema.org',
|
|
45
|
+
'@type': 'FAQPage',
|
|
46
|
+
mainEntity: faqData.map((item) => ({
|
|
47
|
+
'@type': 'Question',
|
|
48
|
+
name: item.question,
|
|
49
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
50
|
+
})),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const howToSchema: WithContext<HowTo> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'HowTo',
|
|
56
|
+
name: 'Como utilizar a calculadora de regra de três',
|
|
57
|
+
step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
61
|
+
'@context': 'https://schema.org',
|
|
62
|
+
'@type': 'SoftwareApplication',
|
|
63
|
+
name: 'Calculadora de Regra de Três Simples',
|
|
64
|
+
applicationCategory: 'UtilitiesApplication',
|
|
65
|
+
operatingSystem: 'Web',
|
|
66
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
67
|
+
description: 'Resolva proporções matemáticas instantaneamente. A ferramenta definitiva para calcular quantidades, receitas, descontos e conversões.',
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const ui: RuleOfThreeUI = {
|
|
71
|
+
labelA: 'Se tenho...',
|
|
72
|
+
labelB: 'Equivale a...',
|
|
73
|
+
labelC: 'E agora tenho...',
|
|
74
|
+
labelX: 'Resultado (X)',
|
|
75
|
+
hintA: 'Quantidade inicial',
|
|
76
|
+
hintB: 'Valor conhecido',
|
|
77
|
+
hintC: 'Nova quantidade',
|
|
78
|
+
hintX: 'Valor calculado',
|
|
79
|
+
separatorIsTo: 'está para',
|
|
80
|
+
separatorWillBe: 'será',
|
|
81
|
+
copyTitle: 'Copiar resultado',
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const content: ToolLocaleContent<RuleOfThreeUI> = {
|
|
85
|
+
slug: 'regra-de-tres-pt',
|
|
86
|
+
title: 'Calculadora de Regra de Três Simples',
|
|
87
|
+
description: 'Resolva proporções matemáticas instantaneamente. A ferramenta definitiva para calcular quantidades, receitas, descontos e conversões.',
|
|
88
|
+
ui,
|
|
89
|
+
faqTitle: 'Perguntas Frequentes',
|
|
90
|
+
faq: faqData,
|
|
91
|
+
howTo: howToData,
|
|
92
|
+
bibliographyTitle: 'Referências',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{ name: 'Proporcionalidade (matemática) — Wikipédia', url: 'https://pt.wikipedia.org/wiki/Proporcionalidade_(matem%C3%A1tica)' },
|
|
95
|
+
{ name: 'Razões e proporções — Khan Academy', url: 'https://pt.khanacademy.org/math/pre-algebra/pre-algebra-ratios-rates' },
|
|
96
|
+
],
|
|
97
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
98
|
+
seo: [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: 'Para que serve a regra de três?',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'A regra de três simples direta é o "canivete suíço" da matemática. Resolve problemas onde três dados são conhecidos e procuramos o quarto. Se conhece a relação entre <strong>A e B</strong>, e tem um novo valor <strong>C</strong>, a calculadora encontra <strong>X</strong> instantaneamente.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'comparative',
|
|
110
|
+
columns: 2,
|
|
111
|
+
items: [
|
|
112
|
+
{
|
|
113
|
+
icon: 'mdi:chef-hat',
|
|
114
|
+
title: 'Cozinha e Receitas',
|
|
115
|
+
description: 'Se a receita pede 500g de farinha para 4 pessoas, de quanta preciso para 7?',
|
|
116
|
+
points: ['(500 × 7) ÷ 4 = 875g'],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
icon: 'mdi:shopping',
|
|
120
|
+
title: 'Compras e Preços',
|
|
121
|
+
description: 'Se um pack de 3 latas custa 2,50€, quanto me custariam 10 latas?',
|
|
122
|
+
points: ['(2,50 × 10) ÷ 3 = 8,33€'],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
icon: 'mdi:car',
|
|
126
|
+
title: 'Viagens e Distância',
|
|
127
|
+
description: 'Se demoro 45 min para fazer 60km, quanto tempo demorarei para fazer 140km?',
|
|
128
|
+
points: ['(45 × 140) ÷ 60 = 105 min'],
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
icon: 'mdi:monitor-screenshot',
|
|
132
|
+
title: 'Design e Ecrãs',
|
|
133
|
+
description: 'Se a imagem tem 1920px de largura e quero reduzi-la para 800px mantendo a proporção...',
|
|
134
|
+
points: ['(AlturaOriginal × 800) ÷ 1920 = NovaAltura'],
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'title',
|
|
140
|
+
text: 'Como funciona a fórmula?',
|
|
141
|
+
level: 2,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'paragraph',
|
|
145
|
+
html: 'A fórmula é sempre a mesma: <strong>multiplicar os valores na diagonal e dividir pelo restante</strong>.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'code',
|
|
149
|
+
code: '(B × C) ÷ A = X',
|
|
150
|
+
ariaLabel: 'Fórmula da regra de três simples direta',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: 'Na calculadora: multiplicamos o valor <strong>B</strong> pelo valor <strong>C</strong> e dividimos por <strong>A</strong>. O resultado é <strong>X</strong>.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Usos profissionais e quotidianos',
|
|
159
|
+
level: 2,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Além da matemática escolar, a regra de três está em todo o lado: na farmácia para calcular dosagens por peso corporal, na fotografia para calcular tempos de exposição, em finanças para calcular variações percentuais, ou na impressão para escalar dimensões de formato.',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'tip',
|
|
167
|
+
title: 'Dica de precisão',
|
|
168
|
+
html: 'O resultado é exibido com até 4 casas decimais significativas. Se trabalhar com dinheiro ou medidas exatas, lembre-se de arredondar de acordo com o contexto: euros para 2 casas decimais, píxeis para inteiros.',
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { RuleOfThreeUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const faqData = [
|
|
6
|
+
{
|
|
7
|
+
question: 'Что такое простая прямая пропорция (правило трех)?',
|
|
8
|
+
answer: 'Это математический метод решения задач на пропорциональность между тремя известными значениями и одним неизвестным. Она называется «прямой», потому что при увеличении одной величины другая увеличивается в той же пропорции.',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
question: 'Когда следует использовать обратную пропорцию?',
|
|
12
|
+
answer: 'Она используется, когда величины обратно пропорциональны (если одна увеличивается, другая уменьшается). Например: если 2 маляра красят за 5 часов, то 4 маляра справятся быстрее. Наш текущий калькулятор ориентирован на прямую пропорциональность.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Достаточно ли он точен для профессиональных расчетов?',
|
|
16
|
+
answer: 'Да. Наш калькулятор использует высокую точность с плавающей запятой, что идеально подходит для расчета дозировок, масштабирования в графическом дизайне, коммерческих смет и пересчета рецептов.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Как это рассчитывается вручную?',
|
|
20
|
+
answer: 'Формула такова: (Значение B * Значение C) / Значение A = X. То есть вы перемножаете значения по диагонали и делите результат на оставшееся значение.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToData = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Определите базовое соотношение',
|
|
27
|
+
text: 'Введите два известных значения, которые образуют исходную пропорцию (например, 100 км эквивалентны 8 литрам).',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Введите третье значение',
|
|
31
|
+
text: 'Напишите новое значение, эквивалент которого вы хотите найти (например, если я собираюсь проехать 250 км...).',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Получите результат',
|
|
35
|
+
text: 'Система автоматически рассчитает неизвестное значение (X) в режиме реального времени без нажатия каких-либо кнопок.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Скопировать или сбросить',
|
|
39
|
+
text: 'Вы можете скопировать результат прямо в буфер обмена или очистить поля для выполнения нового расчета.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
44
|
+
'@context': 'https://schema.org',
|
|
45
|
+
'@type': 'FAQPage',
|
|
46
|
+
mainEntity: faqData.map((item) => ({
|
|
47
|
+
'@type': 'Question',
|
|
48
|
+
name: item.question,
|
|
49
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
50
|
+
})),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const howToSchema: WithContext<HowTo> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'HowTo',
|
|
56
|
+
name: 'Как пользоваться калькулятором пропорции (правила трех)',
|
|
57
|
+
step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
61
|
+
'@context': 'https://schema.org',
|
|
62
|
+
'@type': 'SoftwareApplication',
|
|
63
|
+
name: 'Калькулятор простой пропорции (правила трех)',
|
|
64
|
+
applicationCategory: 'UtilitiesApplication',
|
|
65
|
+
operatingSystem: 'Web',
|
|
66
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
67
|
+
description: 'Мгновенно решайте математические пропорции. Окончательный инструмент для расчета количеств, рецептов, скидок и конверсий.',
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const ui: RuleOfThreeUI = {
|
|
71
|
+
labelA: 'Если у меня есть...',
|
|
72
|
+
labelB: 'Это равно...',
|
|
73
|
+
labelC: 'А теперь у меня...',
|
|
74
|
+
labelX: 'Результат (X)',
|
|
75
|
+
hintA: 'Исходное количество',
|
|
76
|
+
hintB: 'Известное значение',
|
|
77
|
+
hintC: 'Новое количество',
|
|
78
|
+
hintX: 'Рассчитанное значение',
|
|
79
|
+
separatorIsTo: 'относится к',
|
|
80
|
+
separatorWillBe: 'будет как',
|
|
81
|
+
copyTitle: 'Копировать результат',
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const content: ToolLocaleContent<RuleOfThreeUI> = {
|
|
85
|
+
slug: 'pravilo-trekh-kalkulyator',
|
|
86
|
+
title: 'Калькулятор простой пропорции (правила трех)',
|
|
87
|
+
description: 'Мгновенно решайте математические пропорции. Окончательный инструмент для расчета количеств, рецептов, скидок и конверсий.',
|
|
88
|
+
ui,
|
|
89
|
+
faqTitle: 'Часто задаваемые вопросы',
|
|
90
|
+
faq: faqData,
|
|
91
|
+
howTo: howToData,
|
|
92
|
+
bibliographyTitle: 'Источники',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{ name: 'Пропорциональность (математика) — Википедия', url: 'https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%BF%D0%BE%D1%80%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C' },
|
|
95
|
+
{ name: 'Отношения и пропорции — Khan Academy', url: 'https://ru.khanacademy.org/math/pre-algebra/pre-algebra-ratios-rates' },
|
|
96
|
+
],
|
|
97
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
98
|
+
seo: [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: 'Для чего используется пропорция (правило трех)?',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Простая прямая пропорция — это «швейцарский армейский нож» в математике. Она решает задачи, в которых известны три набора данных, а мы ищем четвертый. Если вы знаете соотношение между <strong>A и B</strong> и у вас есть новое значение <strong>C</strong>, калькулятор мгновенно найдет <strong>X</strong>.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'comparative',
|
|
110
|
+
columns: 2,
|
|
111
|
+
items: [
|
|
112
|
+
{
|
|
113
|
+
icon: 'mdi:chef-hat',
|
|
114
|
+
title: 'Кулинария и рецепты',
|
|
115
|
+
description: 'Если в рецепте указано 500 г муки на 4 человек, сколько мне нужно на 7?',
|
|
116
|
+
points: ['(500 × 7) ÷ 4 = 875 г'],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
icon: 'mdi:shopping',
|
|
120
|
+
title: 'Покупки и цены',
|
|
121
|
+
description: 'Если упаковка из 3 банок стоит 2,50 евро, сколько будут стоить 10 банок?',
|
|
122
|
+
points: ['(2,50 × 10) ÷ 3 = 8,33 евро'],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
icon: 'mdi:car',
|
|
126
|
+
title: 'Путешествия и расстояния',
|
|
127
|
+
description: 'Если на 60 км у меня уходит 45 минут, сколько времени займет путь в 140 км?',
|
|
128
|
+
points: ['(45 × 140) ÷ 60 = 105 мин'],
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
icon: 'mdi:monitor-screenshot',
|
|
132
|
+
title: 'Дизайн и экраны',
|
|
133
|
+
description: 'Если ширина изображения составляет 1920 пикселей, и я хочу уменьшить ее до 800 пикселей с сохранением пропорций...',
|
|
134
|
+
points: ['(ИсходнаяВысота × 800) ÷ 1920 = НоваяВысота'],
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'title',
|
|
140
|
+
text: 'Как работает формула?',
|
|
141
|
+
level: 2,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'paragraph',
|
|
145
|
+
html: 'Формула всегда одна и та же: <strong>перемножьте значения по диагонали и разделите на оставшееся</strong>.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'code',
|
|
149
|
+
code: '(B × C) ÷ A = X',
|
|
150
|
+
ariaLabel: 'Формула простой прямой пропорции',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: 'В калькуляторе: мы умножаем значение <strong>B</strong> на значение <strong>C</strong> и делим на <strong>A</strong>. Результат — <strong>X</strong>.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Профессиональное и повседневное использование',
|
|
159
|
+
level: 2,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Помимо школьной математики, правило трех встречается повсеместно: в фармакологии для расчета дозировок по массе тела, в фотографии для расчета времени экспозиции, в финансах для расчета процентных отклонений или в полиграфии для масштабирования размеров форматов.',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'tip',
|
|
167
|
+
title: 'Совет по точности',
|
|
168
|
+
html: 'Результат отображается с точностью до 4 значащих десятичных знаков. Если вы работаете с деньгами или точными измерениями, не забывайте округлять в соответствии с контекстом: евро до 2 знаков, пиксели до целых чисел.',
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { RuleOfThreeUI } from '../ui';
|
|
4
|
+
|
|
5
|
+
const faqData = [
|
|
6
|
+
{
|
|
7
|
+
question: 'Vad är den enkla direkta korsmultiplikationen (tre-regeln)?',
|
|
8
|
+
answer: 'Det är en matematisk metod för att lösa proportionalitetsproblem mellan tre kända värden och ett okänt. Den kallas "direkt" eftersom när en mängd ökar, ökar den andra i samma proportion.',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
question: 'När ska jag använda den omvända tre-regeln?',
|
|
12
|
+
answer: 'Den används när mängderna är omvänt proportionella (om den ena ökar, minskar den andra). Exempel: om 2 målare tar 5 timmar, tar 4 målare kortare tid. Vår nuvarande kalkylator fokuserar på direkt proportionalitet.',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
question: 'Är den noggrann för professionella beräkningar?',
|
|
16
|
+
answer: 'Ja. Vår kalkylator använder hög flyttalsprecision, idealisk för doseringsjusteringar, skalning i grafisk design, kommersiella budgetar och receptkonverteringar.',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
question: 'Hur beräknas det manuellt?',
|
|
20
|
+
answer: 'Formeln är: (Värde B * Värde C) / Värde A = X. Det vill säga, du multiplicerar värdena diagonalt och dividerar resultatet med det återstående värdet.',
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const howToData = [
|
|
25
|
+
{
|
|
26
|
+
name: 'Identifiera grundförhållandet',
|
|
27
|
+
text: 'Ange de två kända värdena som bildar den ursprungliga proportionen (t.ex. 100 km motsvarar 8 liter).',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'Ange det tredje värdet',
|
|
31
|
+
text: 'Skriv in det nya värdet vars motsvarighet du vill hitta (t.ex. om jag ska resa 250 km...).',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'Få resultatet',
|
|
35
|
+
text: 'Systemet beräknar automatiskt det okända värdet (X) i realtid utan att du behöver trycka på några knappar.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Kopiera eller återställ',
|
|
39
|
+
text: 'Du kan kopiera resultatet direkt till urklipp eller rensa fälten för att utföra en ny beräkning.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
44
|
+
'@context': 'https://schema.org',
|
|
45
|
+
'@type': 'FAQPage',
|
|
46
|
+
mainEntity: faqData.map((item) => ({
|
|
47
|
+
'@type': 'Question',
|
|
48
|
+
name: item.question,
|
|
49
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
50
|
+
})),
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const howToSchema: WithContext<HowTo> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'HowTo',
|
|
56
|
+
name: 'Hur man använder tre-regeln-kalkylatorn',
|
|
57
|
+
step: howToData.map((s) => ({ '@type': 'HowToStep', name: s.name, text: s.text })),
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
61
|
+
'@context': 'https://schema.org',
|
|
62
|
+
'@type': 'SoftwareApplication',
|
|
63
|
+
name: 'Enkel tre-regeln-kalkylator',
|
|
64
|
+
applicationCategory: 'UtilitiesApplication',
|
|
65
|
+
operatingSystem: 'Web',
|
|
66
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
67
|
+
description: 'Lös matematiska proportioner omedelbart. Det definitiva verktyget för att beräkna mängder, recept, rabatter och konverteringar.',
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const ui: RuleOfThreeUI = {
|
|
71
|
+
labelA: 'Om jag har...',
|
|
72
|
+
labelB: 'Motsvarar det...',
|
|
73
|
+
labelC: 'Och nu har jag...',
|
|
74
|
+
labelX: 'Resultat (X)',
|
|
75
|
+
hintA: 'Ursprunglig mängd',
|
|
76
|
+
hintB: 'Känt värde',
|
|
77
|
+
hintC: 'Ny mängd',
|
|
78
|
+
hintX: 'Beräknat värde',
|
|
79
|
+
separatorIsTo: 'förhåller sig till',
|
|
80
|
+
separatorWillBe: 'blir',
|
|
81
|
+
copyTitle: 'Kopiera resultat',
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export const content: ToolLocaleContent<RuleOfThreeUI> = {
|
|
85
|
+
slug: 'tre-regeln-raknare',
|
|
86
|
+
title: 'Enkel tre regeln kalkylator',
|
|
87
|
+
description: 'Lös matematiska proportioner omedelbart. Det definitiva verktyget för att beräkna mängder, recept, rabatter och konverteringar.',
|
|
88
|
+
ui,
|
|
89
|
+
faqTitle: 'Vanliga frågor',
|
|
90
|
+
faq: faqData,
|
|
91
|
+
howTo: howToData,
|
|
92
|
+
bibliographyTitle: 'Referenser',
|
|
93
|
+
bibliography: [
|
|
94
|
+
{ name: 'Proportionalitet (matematik) — Wikipedia', url: 'https://sv.wikipedia.org/wiki/Proportionalitet' },
|
|
95
|
+
{ name: 'Förhållanden och proportioner — Khan Academy', url: 'https://sv.khanacademy.org/math/pre-algebra/pre-algebra-ratios-rates' },
|
|
96
|
+
],
|
|
97
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
98
|
+
seo: [
|
|
99
|
+
{
|
|
100
|
+
type: 'title',
|
|
101
|
+
text: 'Vad används tre-regeln till?',
|
|
102
|
+
level: 2,
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'paragraph',
|
|
106
|
+
html: 'Den enkla direkta tre-regeln är matematikens "schweiziska armékniv". Den löser problem där tre datapunkter är kända och vi söker den fjärde. Om du känner till förhållandet mellan <strong>A och B</strong>, och du har ett nytt värde <strong>C</strong>, hittar kalkylatorn <strong>X</strong> omedelbart.',
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
type: 'comparative',
|
|
110
|
+
columns: 2,
|
|
111
|
+
items: [
|
|
112
|
+
{
|
|
113
|
+
icon: 'mdi:chef-hat',
|
|
114
|
+
title: 'Matlagning och recept',
|
|
115
|
+
description: 'Om receptet kräver 500 g mjöl till 4 personer, hur mycket behöver jag till 7?',
|
|
116
|
+
points: ['(500 × 7) ÷ 4 = 875 g'],
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
icon: 'mdi:shopping',
|
|
120
|
+
title: 'Shopping och priser',
|
|
121
|
+
description: 'Om ett paket med 3 burkar kostar 2,50 €, hur mycket skulle 10 burkar kosta mig?',
|
|
122
|
+
points: ['(2,50 × 10) ÷ 3 = 8,33 €'],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
icon: 'mdi:car',
|
|
126
|
+
title: 'Resor och avstånd',
|
|
127
|
+
description: 'Om det tar mig 45 min att köra 60 km, hur lång tid tar det mig att köra 140 km?',
|
|
128
|
+
points: ['(45 × 140) ÷ 60 = 105 min'],
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
icon: 'mdi:monitor-screenshot',
|
|
132
|
+
title: 'Design och skärmar',
|
|
133
|
+
description: 'Om bilden är 1920 px bred och jag vill minska den till 800 px och bibehålla proportionerna...',
|
|
134
|
+
points: ['(UrsprungligHöjd × 800) ÷ 1920 = NyHöjd'],
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'title',
|
|
140
|
+
text: 'Hur fungerar formeln?',
|
|
141
|
+
level: 2,
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
type: 'paragraph',
|
|
145
|
+
html: 'Formeln är alltid densamma: <strong>multiplicera värdena diagonalt och dividera med det återstående värdet</strong>.',
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
type: 'code',
|
|
149
|
+
code: '(B × C) ÷ A = X',
|
|
150
|
+
ariaLabel: 'Formel för enkel direkt tre-regel',
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
type: 'paragraph',
|
|
154
|
+
html: 'I kalkylatorn: vi multiplicerar värde <strong>B</strong> med värde <strong>C</strong> och dividerar med <strong>A</strong>. Resultatet är <strong>X</strong>.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
type: 'title',
|
|
158
|
+
text: 'Professionella och vardagliga användningsområden',
|
|
159
|
+
level: 2,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
type: 'paragraph',
|
|
163
|
+
html: 'Bortom skolmatematiken finns tre-regeln överallt: inom farmacin för att beräkna doser baserat på kroppsvikt, inom fotografin för att beräkna exponeringstider, inom finans för att beräkna procentuella förändringar, eller vid tryckning för att skala formatdimensioner.',
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
type: 'tip',
|
|
167
|
+
title: 'Precisionstips',
|
|
168
|
+
html: 'Resultatet visas med upp till 4 signifikanta decimaler. Om du arbetar med pengar eller exakta mått, kom ihåg att avrunda enligt sammanhanget: euro till 2 decimaler, pixlar till heltal.',
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|