@jjlmoya/utils-home 1.16.0 → 1.23.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 +1 -1
- package/src/category/i18n/de.ts +10 -10
- package/src/category/i18n/en.ts +8 -8
- package/src/category/i18n/es.ts +2 -2
- package/src/category/i18n/fr.ts +15 -15
- package/src/category/i18n/id.ts +8 -8
- package/src/category/i18n/it.ts +7 -7
- package/src/category/i18n/nl.ts +8 -8
- package/src/category/i18n/pl.ts +10 -10
- package/src/category/i18n/pt.ts +8 -8
- package/src/category/i18n/ru.ts +10 -10
- package/src/category/i18n/sv.ts +8 -8
- package/src/category/i18n/tr.ts +4 -4
- package/src/category/i18n/zh.ts +8 -8
- package/src/entries.ts +4 -1
- package/src/pages/[locale]/[slug].astro +28 -12
- package/src/tests/locale_completeness.test.ts +4 -22
- package/src/tests/no_en_dash.test.ts +70 -0
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/dewPointCalculator/bibliography.ts +10 -0
- package/src/tool/dewPointCalculator/i18n/de.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/en.ts +8 -18
- package/src/tool/dewPointCalculator/i18n/es.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/fr.ts +8 -18
- package/src/tool/dewPointCalculator/i18n/id.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/it.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/ja.ts +6 -16
- package/src/tool/dewPointCalculator/i18n/ko.ts +6 -16
- package/src/tool/dewPointCalculator/i18n/nl.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/pl.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/pt.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/ru.ts +13 -23
- package/src/tool/dewPointCalculator/i18n/sv.ts +7 -17
- package/src/tool/dewPointCalculator/i18n/tr.ts +6 -16
- package/src/tool/dewPointCalculator/i18n/zh.ts +7 -17
- package/src/tool/dewPointCalculator/seo.astro +2 -1
- package/src/tool/heatingComparator/bibliography.ts +14 -0
- package/src/tool/heatingComparator/i18n/de.ts +10 -24
- package/src/tool/heatingComparator/i18n/en.ts +3 -13
- package/src/tool/heatingComparator/i18n/es.ts +3 -17
- package/src/tool/heatingComparator/i18n/fr.ts +9 -19
- package/src/tool/heatingComparator/i18n/id.ts +3 -17
- package/src/tool/heatingComparator/i18n/it.ts +3 -17
- package/src/tool/heatingComparator/i18n/ja.ts +296 -310
- package/src/tool/heatingComparator/i18n/ko.ts +296 -306
- package/src/tool/heatingComparator/i18n/nl.ts +3 -17
- package/src/tool/heatingComparator/i18n/pl.ts +3 -17
- package/src/tool/heatingComparator/i18n/pt.ts +3 -17
- package/src/tool/heatingComparator/i18n/ru.ts +14 -24
- package/src/tool/heatingComparator/i18n/sv.ts +6 -20
- package/src/tool/heatingComparator/i18n/tr.ts +2 -16
- package/src/tool/heatingComparator/i18n/zh.ts +296 -306
- package/src/tool/heatingComparator/seo.astro +3 -3
- package/src/tool/ledSavingCalculator/bibliography.ts +14 -0
- package/src/tool/ledSavingCalculator/i18n/de.ts +6 -16
- package/src/tool/ledSavingCalculator/i18n/en.ts +6 -20
- package/src/tool/ledSavingCalculator/i18n/es.ts +6 -20
- package/src/tool/ledSavingCalculator/i18n/fr.ts +10 -24
- package/src/tool/ledSavingCalculator/i18n/id.ts +5 -15
- package/src/tool/ledSavingCalculator/i18n/it.ts +6 -16
- package/src/tool/ledSavingCalculator/i18n/ja.ts +5 -15
- package/src/tool/ledSavingCalculator/i18n/ko.ts +4 -14
- package/src/tool/ledSavingCalculator/i18n/nl.ts +5 -15
- package/src/tool/ledSavingCalculator/i18n/pl.ts +5 -15
- package/src/tool/ledSavingCalculator/i18n/pt.ts +5 -15
- package/src/tool/ledSavingCalculator/i18n/ru.ts +8 -18
- package/src/tool/ledSavingCalculator/i18n/sv.ts +5 -15
- package/src/tool/ledSavingCalculator/i18n/tr.ts +5 -15
- package/src/tool/ledSavingCalculator/i18n/zh.ts +6 -16
- package/src/tool/ledSavingCalculator/seo.astro +2 -1
- package/src/tool/projectorCalculator/bibliography.ts +5 -0
- package/src/tool/projectorCalculator/i18n/de.ts +4 -8
- package/src/tool/projectorCalculator/i18n/en.ts +3 -8
- package/src/tool/projectorCalculator/i18n/es.ts +4 -9
- package/src/tool/projectorCalculator/i18n/fr.ts +6 -11
- package/src/tool/projectorCalculator/i18n/id.ts +4 -9
- package/src/tool/projectorCalculator/i18n/it.ts +4 -8
- package/src/tool/projectorCalculator/i18n/ja.ts +175 -179
- package/src/tool/projectorCalculator/i18n/ko.ts +175 -179
- package/src/tool/projectorCalculator/i18n/nl.ts +4 -8
- package/src/tool/projectorCalculator/i18n/pl.ts +5 -9
- package/src/tool/projectorCalculator/i18n/pt.ts +4 -8
- package/src/tool/projectorCalculator/i18n/ru.ts +7 -11
- package/src/tool/projectorCalculator/i18n/sv.ts +4 -8
- package/src/tool/projectorCalculator/i18n/tr.ts +4 -8
- package/src/tool/projectorCalculator/i18n/zh.ts +175 -179
- package/src/tool/projectorCalculator/seo.astro +2 -1
- package/src/tool/qrGenerator/bibliography.ts +14 -0
- package/src/tool/qrGenerator/i18n/de.ts +192 -202
- package/src/tool/qrGenerator/i18n/en.ts +3 -17
- package/src/tool/qrGenerator/i18n/es.ts +2 -16
- package/src/tool/qrGenerator/i18n/fr.ts +3 -17
- package/src/tool/qrGenerator/i18n/id.ts +146 -150
- package/src/tool/qrGenerator/i18n/it.ts +169 -173
- package/src/tool/qrGenerator/i18n/ja.ts +146 -150
- package/src/tool/qrGenerator/i18n/ko.ts +146 -150
- package/src/tool/qrGenerator/i18n/nl.ts +146 -150
- package/src/tool/qrGenerator/i18n/pl.ts +146 -150
- package/src/tool/qrGenerator/i18n/pt.ts +146 -150
- package/src/tool/qrGenerator/i18n/ru.ts +146 -150
- package/src/tool/qrGenerator/i18n/sv.ts +146 -150
- package/src/tool/qrGenerator/i18n/tr.ts +146 -150
- package/src/tool/qrGenerator/i18n/zh.ts +146 -150
- package/src/tool/qrGenerator/seo.astro +2 -1
- package/src/tool/solarCalculator/bibliography.ts +5 -0
- package/src/tool/solarCalculator/i18n/de.ts +141 -145
- package/src/tool/solarCalculator/i18n/en.ts +7 -12
- package/src/tool/solarCalculator/i18n/es.ts +5 -10
- package/src/tool/solarCalculator/i18n/fr.ts +8 -13
- package/src/tool/solarCalculator/i18n/id.ts +4 -8
- package/src/tool/solarCalculator/i18n/it.ts +4 -8
- package/src/tool/solarCalculator/i18n/ja.ts +121 -125
- package/src/tool/solarCalculator/i18n/ko.ts +116 -120
- package/src/tool/solarCalculator/i18n/nl.ts +4 -7
- package/src/tool/solarCalculator/i18n/pl.ts +5 -9
- package/src/tool/solarCalculator/i18n/pt.ts +4 -8
- package/src/tool/solarCalculator/i18n/ru.ts +7 -10
- package/src/tool/solarCalculator/i18n/sv.ts +4 -7
- package/src/tool/solarCalculator/i18n/tr.ts +4 -7
- package/src/tool/solarCalculator/i18n/zh.ts +116 -120
- package/src/tool/solarCalculator/seo.astro +2 -1
- package/src/tool/tariffComparator/bibliography.ts +7 -0
- package/src/tool/tariffComparator/i18n/de.ts +129 -132
- package/src/tool/tariffComparator/i18n/en.ts +5 -12
- package/src/tool/tariffComparator/i18n/es.ts +5 -12
- package/src/tool/tariffComparator/i18n/fr.ts +8 -15
- package/src/tool/tariffComparator/i18n/id.ts +2 -5
- package/src/tool/tariffComparator/i18n/it.ts +2 -5
- package/src/tool/tariffComparator/i18n/ja.ts +129 -132
- package/src/tool/tariffComparator/i18n/ko.ts +129 -132
- package/src/tool/tariffComparator/i18n/nl.ts +2 -5
- package/src/tool/tariffComparator/i18n/pl.ts +3 -6
- package/src/tool/tariffComparator/i18n/pt.ts +2 -5
- package/src/tool/tariffComparator/i18n/ru.ts +2 -5
- package/src/tool/tariffComparator/i18n/sv.ts +2 -5
- package/src/tool/tariffComparator/i18n/tr.ts +2 -5
- package/src/tool/tariffComparator/i18n/zh.ts +129 -132
- package/src/tool/tariffComparator/seo.astro +2 -1
- package/src/tool/wifiRangeSimulator/bibliography.astro +14 -0
- package/src/tool/wifiRangeSimulator/bibliography.ts +14 -0
- package/src/tool/wifiRangeSimulator/component.astro +170 -0
- package/src/tool/wifiRangeSimulator/entry.ts +29 -0
- package/src/tool/wifiRangeSimulator/i18n/de.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/en.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/es.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/fr.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/id.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/it.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/ja.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/ko.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/nl.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/pl.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/pt.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/ru.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/sv.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/tr.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n/zh.ts +477 -0
- package/src/tool/wifiRangeSimulator/i18n-utils.ts +14 -0
- package/src/tool/wifiRangeSimulator/index.ts +8 -0
- package/src/tool/wifiRangeSimulator/logic.ts +220 -0
- package/src/tool/wifiRangeSimulator/seo.astro +15 -0
- package/src/tool/wifiRangeSimulator/sketch-actions.ts +168 -0
- package/src/tool/wifiRangeSimulator/sketch-events.ts +138 -0
- package/src/tool/wifiRangeSimulator/sketch-render-dash.ts +170 -0
- package/src/tool/wifiRangeSimulator/sketch-render-device.ts +42 -0
- package/src/tool/wifiRangeSimulator/sketch-render.ts +155 -0
- package/src/tool/wifiRangeSimulator/sketch-state.ts +186 -0
- package/src/tool/wifiRangeSimulator/sketch.ts +100 -0
- package/src/tool/wifiRangeSimulator/ui.ts +69 -0
- package/src/tool/wifiRangeSimulator/wifi-range-simulator.css +583 -0
- package/src/tools.ts +2 -0
- package/src/types.ts +0 -2
|
@@ -1,151 +1,147 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
-
import type { QRGeneratorUI } from '../ui';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
'@
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
'@
|
|
65
|
-
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { QRGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'offline-qr-code-generator-dutch';
|
|
7
|
+
const title = 'Offline QR Code Generator';
|
|
8
|
+
const description =
|
|
9
|
+
'Genereer 100% veilig QR-codes voor WiFi, URL\'s en contacten in uw browser. Uw gegevens ver laten uw apparaat nooit.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Verlopen deze QR-codes?',
|
|
14
|
+
answer:
|
|
15
|
+
'Nee. Deze codes zijn statisch. De informatie is direct in de afbeelding gecodeerd. Ze werken voor altijd.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Worden mijn gegevens bewaard?',
|
|
19
|
+
answer:
|
|
20
|
+
'Absoluut niet. Het proces vindt volledig plaats in uw browser (Client-Side). Geen gegevens worden naar onze servers gestuurd.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Werkt het op iPhone en Android?',
|
|
24
|
+
answer:
|
|
25
|
+
'Ja. Moderne camera\'s op iOS en Android herkennen QR-codes direct en suggereren de actie (verbinden met WiFi, link openen, etc.).',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Kan ik het zonder internet gebruiken?',
|
|
29
|
+
answer:
|
|
30
|
+
'Ja. Zodra de pagina geladen is, kunt u de verbinding verbreken en de generator blijft gewoon werken.',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howToData = [
|
|
35
|
+
{
|
|
36
|
+
name: 'Kies type QR',
|
|
37
|
+
text: 'Selecteer of u een code wilt voor WiFi, een URL of een contact (vCard).',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Voer gegevens in',
|
|
41
|
+
text: 'Vul de velden in, zoals netwerknaam en wachtwoord, of het webadres.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Genereer en test',
|
|
45
|
+
text: 'De code wordt direct gemaakt. Scan hem direct vanaf het scherm om te testen.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Downloaden',
|
|
49
|
+
text: 'Sla de QR-code op als afbeelding om te printen of te delen.',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'FAQPage',
|
|
56
|
+
mainEntity: faqData.map((item) => ({
|
|
57
|
+
'@type': 'Question',
|
|
58
|
+
name: item.question,
|
|
59
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const howToSchema: WithContext<HowTo> = {
|
|
64
|
+
'@context': 'https://schema.org',
|
|
65
|
+
'@type': 'HowTo',
|
|
66
|
+
name: title,
|
|
67
|
+
description,
|
|
68
|
+
step: howToData.map((step) => ({
|
|
69
|
+
'@type': 'HowToStep',
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
|
|
83
|
+
inLanguage: 'nl',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<QRGeneratorUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
66
89
|
description,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
],
|
|
126
|
-
},
|
|
127
|
-
],
|
|
128
|
-
ui: {
|
|
129
|
-
tabWifi: 'WiFi',
|
|
130
|
-
tabUrl: 'URL',
|
|
131
|
-
tabContact: 'Contact',
|
|
132
|
-
labelSsid: 'Netwerknaam (SSID)',
|
|
133
|
-
labelPassword: 'Wachtwoord',
|
|
134
|
-
labelEncryption: 'Beveiliging',
|
|
135
|
-
labelHidden: 'Verborgen netwerk',
|
|
136
|
-
labelUrl: 'Webadres (URL)',
|
|
137
|
-
labelName: 'Voornaam',
|
|
138
|
-
labelSurname: 'Achternaam',
|
|
139
|
-
labelPhone: 'Telefoon',
|
|
140
|
-
labelEmail: 'Email',
|
|
141
|
-
labelOrg: 'Organisatie / Bedrijf',
|
|
142
|
-
encWpa: 'WPA/WPA2',
|
|
143
|
-
encWep: 'WEP',
|
|
144
|
-
encNone: 'Geen',
|
|
145
|
-
downloadBtn: 'PNG downloaden',
|
|
146
|
-
privacyMsg: '100% gegenereerd in de browser. Veilig en privé.',
|
|
147
|
-
placeholderSsid: 'MijnWiFi_5G',
|
|
148
|
-
placeholderUrl: 'https://voorbeeld.nl',
|
|
149
|
-
placeholderPassword: '••••••••',
|
|
150
|
-
},
|
|
151
|
-
};
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliography,
|
|
92
|
+
howTo: howToData,
|
|
93
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'Privacy Eerst: Lokale Generatie',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: 'Deze tool genereert QR-codes direct op uw toestel. Veilig voor uw <strong>WiFi-wachtwoorden</strong> of <strong>persoonlijke gegevens</strong>.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'stats',
|
|
106
|
+
items: [
|
|
107
|
+
{ value: '100%', label: 'Privé', icon: 'mdi:shield-lock' },
|
|
108
|
+
{ value: 'Offline', label: 'Geen Server', icon: 'mdi:wifi-off' },
|
|
109
|
+
{ value: 'PNG', label: 'Download', icon: 'mdi:download' },
|
|
110
|
+
],
|
|
111
|
+
columns: 3,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'summary',
|
|
115
|
+
title: 'Gebruikstips',
|
|
116
|
+
items: [
|
|
117
|
+
'Gegevens worden alleen in de browser verwerkt.',
|
|
118
|
+
'Let op hoofdletters bij de WiFi-naam.',
|
|
119
|
+
'Statische QR: bij een nieuw wachtwoord moet u een nieuwe QR maken.',
|
|
120
|
+
'Test de code altijd even voor u hem print.',
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
ui: {
|
|
125
|
+
tabWifi: 'WiFi',
|
|
126
|
+
tabUrl: 'URL',
|
|
127
|
+
tabContact: 'Contact',
|
|
128
|
+
labelSsid: 'Netwerknaam (SSID)',
|
|
129
|
+
labelPassword: 'Wachtwoord',
|
|
130
|
+
labelEncryption: 'Beveiliging',
|
|
131
|
+
labelHidden: 'Verborgen netwerk',
|
|
132
|
+
labelUrl: 'Webadres (URL)',
|
|
133
|
+
labelName: 'Voornaam',
|
|
134
|
+
labelSurname: 'Achternaam',
|
|
135
|
+
labelPhone: 'Telefoon',
|
|
136
|
+
labelEmail: 'Email',
|
|
137
|
+
labelOrg: 'Organisatie / Bedrijf',
|
|
138
|
+
encWpa: 'WPA/WPA2',
|
|
139
|
+
encWep: 'WEP',
|
|
140
|
+
encNone: 'Geen',
|
|
141
|
+
downloadBtn: 'PNG downloaden',
|
|
142
|
+
privacyMsg: '100% gegenereerd in de browser. Veilig en privé.',
|
|
143
|
+
placeholderSsid: 'MijnWiFi_5G',
|
|
144
|
+
placeholderUrl: 'https://voorbeeld.nl',
|
|
145
|
+
placeholderPassword: '••••••••',
|
|
146
|
+
},
|
|
147
|
+
};
|
|
@@ -1,151 +1,147 @@
|
|
|
1
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
-
import type { QRGeneratorUI } from '../ui';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
'@
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
'@
|
|
65
|
-
|
|
1
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
2
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
3
|
+
import type { QRGeneratorUI } from '../ui';
|
|
4
|
+
import { bibliography } from '../bibliography';
|
|
5
|
+
|
|
6
|
+
const slug = 'generator-kodow-qr-offline';
|
|
7
|
+
const title = 'Generator Kodów QR Offline';
|
|
8
|
+
const description =
|
|
9
|
+
'Generuj kody QR dla WiFi, URL i Kontaktów w 100% bezpiecznie w swojej przeglądarce. Twoje dane nigdy nie opuszczają urządzenia.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'Czy te kody QR wygasają?',
|
|
14
|
+
answer:
|
|
15
|
+
'Nie. Wygenerowane tutaj kody są statyczne. Informacja jest zakodowana bezpośrednio w obrazie. Będą działać na zawsze.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Czy zapisujecie moje dane?',
|
|
19
|
+
answer:
|
|
20
|
+
'Absolutnie nie. Cały proces odbywa się w Twojej przeglądarce (Client-Side). Żadne dane nie są wysyłane na serwer.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Czy to działa na iPhone i Android?',
|
|
24
|
+
answer:
|
|
25
|
+
'Tak. Większość nowoczesnych smartfonów czyta kody QR natywnie i sugeruje akcję (połącz z WiFi, otwórz link itp.).',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Czy mogę używać tego bez internetu?',
|
|
29
|
+
answer:
|
|
30
|
+
'Tak. Gdy strona się załaduje, możesz odłączyć sieć, a generator nadal będzie tworzył kody.',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howToData = [
|
|
35
|
+
{
|
|
36
|
+
name: 'Wybierz typ QR',
|
|
37
|
+
text: 'Wybierz czy chcesz kod dla sieci WiFi, linku URL czy kontaktu (vCard).',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Wpisz dane',
|
|
41
|
+
text: 'Wypełnij pola, takie jak nazwa sieci i hasło, lub adres strony.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Generuj i sprawdź',
|
|
45
|
+
text: 'Kod powstaje natychmiast. Możesz go przetestować skanując go prosto z ekranu.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Pobierz',
|
|
49
|
+
text: 'Zapisz kod QR jako obraz, aby go wydrukować lub udostępnić.',
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
|
|
53
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
54
|
+
'@context': 'https://schema.org',
|
|
55
|
+
'@type': 'FAQPage',
|
|
56
|
+
mainEntity: faqData.map((item) => ({
|
|
57
|
+
'@type': 'Question',
|
|
58
|
+
name: item.question,
|
|
59
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
60
|
+
})),
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const howToSchema: WithContext<HowTo> = {
|
|
64
|
+
'@context': 'https://schema.org',
|
|
65
|
+
'@type': 'HowTo',
|
|
66
|
+
name: title,
|
|
67
|
+
description,
|
|
68
|
+
step: howToData.map((step) => ({
|
|
69
|
+
'@type': 'HowToStep',
|
|
70
|
+
name: step.name,
|
|
71
|
+
text: step.text,
|
|
72
|
+
})),
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
76
|
+
'@context': 'https://schema.org',
|
|
77
|
+
'@type': 'SoftwareApplication',
|
|
78
|
+
name: title,
|
|
79
|
+
description,
|
|
80
|
+
applicationCategory: 'UtilityApplication',
|
|
81
|
+
operatingSystem: 'All',
|
|
82
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'PLN' },
|
|
83
|
+
inLanguage: 'pl',
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export const content: ToolLocaleContent<QRGeneratorUI> = {
|
|
87
|
+
slug,
|
|
88
|
+
title,
|
|
66
89
|
description,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
],
|
|
126
|
-
},
|
|
127
|
-
],
|
|
128
|
-
ui: {
|
|
129
|
-
tabWifi: 'WiFi',
|
|
130
|
-
tabUrl: 'URL',
|
|
131
|
-
tabContact: 'Kontakt',
|
|
132
|
-
labelSsid: 'Nazwa Sieci (SSID)',
|
|
133
|
-
labelPassword: 'Hasło',
|
|
134
|
-
labelEncryption: 'Zabezpieczenia',
|
|
135
|
-
labelHidden: 'Ukryta Sieć',
|
|
136
|
-
labelUrl: 'Adres WWW (URL)',
|
|
137
|
-
labelName: 'Imię',
|
|
138
|
-
labelSurname: 'Nazwisko',
|
|
139
|
-
labelPhone: 'Telefon',
|
|
140
|
-
labelEmail: 'Email',
|
|
141
|
-
labelOrg: 'Organizacja / Firma',
|
|
142
|
-
encWpa: 'WPA/WPA2',
|
|
143
|
-
encWep: 'WEP',
|
|
144
|
-
encNone: 'Brak',
|
|
145
|
-
downloadBtn: 'Pobierz PNG',
|
|
146
|
-
privacyMsg: 'Wygenerowane w 100% w przeglądarce. Dane są bezpieczne.',
|
|
147
|
-
placeholderSsid: 'MojaSiec_5G',
|
|
148
|
-
placeholderUrl: 'https://przyklad.pl',
|
|
149
|
-
placeholderPassword: '••••••••',
|
|
150
|
-
},
|
|
151
|
-
};
|
|
90
|
+
faq: faqData,
|
|
91
|
+
bibliography,
|
|
92
|
+
howTo: howToData,
|
|
93
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
94
|
+
seo: [
|
|
95
|
+
{
|
|
96
|
+
type: 'title',
|
|
97
|
+
text: 'Prywatność Przede Wszystkim: Generowanie Lokalne',
|
|
98
|
+
level: 2,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
type: 'paragraph',
|
|
102
|
+
html: 'To narzędzie tworzy kod QR bezpośrednio na Twoim urządzeniu. Pełne bezpieczeństwo dla Twoich <strong>haseł WiFi</strong> i <strong>danych kontaktowych</strong>.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'stats',
|
|
106
|
+
items: [
|
|
107
|
+
{ value: '100%', label: 'Prywatnie', icon: 'mdi:shield-lock' },
|
|
108
|
+
{ value: 'Offline', label: 'Brak Serwera', icon: 'mdi:wifi-off' },
|
|
109
|
+
{ value: 'PNG', label: 'Pobieranie', icon: 'mdi:download' },
|
|
110
|
+
],
|
|
111
|
+
columns: 3,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: 'summary',
|
|
115
|
+
title: 'Porady',
|
|
116
|
+
items: [
|
|
117
|
+
'Dane przetwarzane wyłącznie lokalnie w przeglądarce.',
|
|
118
|
+
'Pamiętaj o wielkości liter w nazwie WiFi.',
|
|
119
|
+
'Kody statyczne: zmiana danych wymaga nowego kodu.',
|
|
120
|
+
'Przetestuj kod przed drukowaniem.',
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
ui: {
|
|
125
|
+
tabWifi: 'WiFi',
|
|
126
|
+
tabUrl: 'URL',
|
|
127
|
+
tabContact: 'Kontakt',
|
|
128
|
+
labelSsid: 'Nazwa Sieci (SSID)',
|
|
129
|
+
labelPassword: 'Hasło',
|
|
130
|
+
labelEncryption: 'Zabezpieczenia',
|
|
131
|
+
labelHidden: 'Ukryta Sieć',
|
|
132
|
+
labelUrl: 'Adres WWW (URL)',
|
|
133
|
+
labelName: 'Imię',
|
|
134
|
+
labelSurname: 'Nazwisko',
|
|
135
|
+
labelPhone: 'Telefon',
|
|
136
|
+
labelEmail: 'Email',
|
|
137
|
+
labelOrg: 'Organizacja / Firma',
|
|
138
|
+
encWpa: 'WPA/WPA2',
|
|
139
|
+
encWep: 'WEP',
|
|
140
|
+
encNone: 'Brak',
|
|
141
|
+
downloadBtn: 'Pobierz PNG',
|
|
142
|
+
privacyMsg: 'Wygenerowane w 100% w przeglądarce. Dane są bezpieczne.',
|
|
143
|
+
placeholderSsid: 'MojaSiec_5G',
|
|
144
|
+
placeholderUrl: 'https://przyklad.pl',
|
|
145
|
+
placeholderPassword: '••••••••',
|
|
146
|
+
},
|
|
147
|
+
};
|