@jjlmoya/utils-tools 1.11.0 → 1.13.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/pages/[locale]/[slug].astro +30 -13
- package/src/tests/locale_completeness.test.ts +3 -20
- package/src/tests/shared-test-helpers.ts +56 -0
- package/src/tests/tool_exports.test.ts +34 -0
- package/src/tool/date-diff-calculator/bibliography.astro +2 -10
- package/src/tool/date-diff-calculator/bibliography.ts +7 -0
- package/src/tool/date-diff-calculator/date-difference-calculator.css +1 -1
- package/src/tool/date-diff-calculator/i18n/de.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/en.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/es.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/fr.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/id.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/it.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/ja.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/ko.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/nl.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/pl.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/pt.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/ru.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/sv.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/tr.ts +4 -7
- package/src/tool/date-diff-calculator/i18n/zh.ts +4 -7
- package/src/tool/date-diff-calculator/seo.astro +2 -1
- package/src/tool/drive-direct-link/bibliography.astro +2 -10
- package/src/tool/drive-direct-link/bibliography.ts +6 -0
- package/src/tool/drive-direct-link/google-drive-direct-download-link.css +1 -1
- package/src/tool/drive-direct-link/i18n/de.ts +4 -6
- package/src/tool/drive-direct-link/i18n/en.ts +4 -6
- package/src/tool/drive-direct-link/i18n/es.ts +4 -6
- package/src/tool/drive-direct-link/i18n/fr.ts +4 -6
- package/src/tool/drive-direct-link/i18n/id.ts +4 -6
- package/src/tool/drive-direct-link/i18n/it.ts +4 -6
- package/src/tool/drive-direct-link/i18n/ja.ts +4 -6
- package/src/tool/drive-direct-link/i18n/ko.ts +4 -6
- package/src/tool/drive-direct-link/i18n/nl.ts +4 -6
- package/src/tool/drive-direct-link/i18n/pl.ts +4 -6
- package/src/tool/drive-direct-link/i18n/pt.ts +4 -6
- package/src/tool/drive-direct-link/i18n/ru.ts +4 -6
- package/src/tool/drive-direct-link/i18n/sv.ts +4 -6
- package/src/tool/drive-direct-link/i18n/tr.ts +4 -6
- package/src/tool/drive-direct-link/i18n/zh.ts +4 -6
- package/src/tool/drive-direct-link/seo.astro +2 -1
- package/src/tool/email-list-cleaner/bibliography.astro +2 -10
- package/src/tool/email-list-cleaner/bibliography.ts +7 -0
- package/src/tool/email-list-cleaner/email-list-cleaner.css +1 -1
- package/src/tool/email-list-cleaner/i18n/de.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/en.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/es.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/fr.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/id.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/it.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/ja.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/ko.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/nl.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/pl.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/pt.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/ru.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/sv.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/tr.ts +4 -7
- package/src/tool/email-list-cleaner/i18n/zh.ts +4 -7
- package/src/tool/email-list-cleaner/seo.astro +2 -1
- package/src/tool/env-badge-spain/bibliography.astro +2 -10
- package/src/tool/env-badge-spain/bibliography.ts +6 -0
- package/src/tool/env-badge-spain/environmental-badge-simulator-spain.css +17 -17
- package/src/tool/env-badge-spain/i18n/de.ts +4 -6
- package/src/tool/env-badge-spain/i18n/en.ts +4 -6
- package/src/tool/env-badge-spain/i18n/es.ts +4 -6
- package/src/tool/env-badge-spain/i18n/fr.ts +4 -6
- package/src/tool/env-badge-spain/i18n/id.ts +4 -6
- package/src/tool/env-badge-spain/i18n/it.ts +4 -6
- package/src/tool/env-badge-spain/i18n/ja.ts +4 -6
- package/src/tool/env-badge-spain/i18n/ko.ts +4 -6
- package/src/tool/env-badge-spain/i18n/nl.ts +4 -6
- package/src/tool/env-badge-spain/i18n/pl.ts +4 -6
- package/src/tool/env-badge-spain/i18n/pt.ts +4 -6
- package/src/tool/env-badge-spain/i18n/ru.ts +4 -6
- package/src/tool/env-badge-spain/i18n/sv.ts +4 -6
- package/src/tool/env-badge-spain/i18n/tr.ts +4 -6
- package/src/tool/env-badge-spain/i18n/zh.ts +4 -6
- package/src/tool/env-badge-spain/seo.astro +2 -1
- package/src/tool/morse-beacon/bibliography.astro +2 -10
- package/src/tool/morse-beacon/bibliography.ts +7 -0
- package/src/tool/morse-beacon/i18n/de.ts +4 -7
- package/src/tool/morse-beacon/i18n/en.ts +4 -7
- package/src/tool/morse-beacon/i18n/es.ts +4 -7
- package/src/tool/morse-beacon/i18n/fr.ts +4 -7
- package/src/tool/morse-beacon/i18n/id.ts +4 -7
- package/src/tool/morse-beacon/i18n/it.ts +4 -7
- package/src/tool/morse-beacon/i18n/ja.ts +4 -7
- package/src/tool/morse-beacon/i18n/ko.ts +4 -7
- package/src/tool/morse-beacon/i18n/nl.ts +4 -7
- package/src/tool/morse-beacon/i18n/pl.ts +4 -7
- package/src/tool/morse-beacon/i18n/pt.ts +4 -7
- package/src/tool/morse-beacon/i18n/ru.ts +4 -7
- package/src/tool/morse-beacon/i18n/sv.ts +4 -7
- package/src/tool/morse-beacon/i18n/tr.ts +4 -7
- package/src/tool/morse-beacon/i18n/zh.ts +4 -7
- package/src/tool/morse-beacon/morse-beacon.css +1 -1
- package/src/tool/morse-beacon/seo.astro +2 -1
- package/src/tool/password-generator/bibliography.astro +2 -10
- package/src/tool/password-generator/bibliography.ts +8 -0
- package/src/tool/password-generator/i18n/de.ts +4 -8
- package/src/tool/password-generator/i18n/en.ts +4 -8
- package/src/tool/password-generator/i18n/es.ts +4 -8
- package/src/tool/password-generator/i18n/fr.ts +4 -8
- package/src/tool/password-generator/i18n/id.ts +4 -8
- package/src/tool/password-generator/i18n/it.ts +4 -8
- package/src/tool/password-generator/i18n/ja.ts +4 -8
- package/src/tool/password-generator/i18n/ko.ts +4 -8
- package/src/tool/password-generator/i18n/nl.ts +4 -8
- package/src/tool/password-generator/i18n/pl.ts +4 -8
- package/src/tool/password-generator/i18n/pt.ts +4 -8
- package/src/tool/password-generator/i18n/ru.ts +4 -8
- package/src/tool/password-generator/i18n/sv.ts +4 -8
- package/src/tool/password-generator/i18n/tr.ts +4 -8
- package/src/tool/password-generator/i18n/zh.ts +4 -8
- package/src/tool/password-generator/password-generator.css +4 -4
- package/src/tool/password-generator/seo.astro +2 -1
- package/src/tool/routes/bibliography.astro +2 -10
- package/src/tool/routes/bibliography.ts +9 -0
- package/src/tool/routes/i18n/de.ts +4 -9
- package/src/tool/routes/i18n/en.ts +4 -9
- package/src/tool/routes/i18n/es.ts +4 -9
- package/src/tool/routes/i18n/fr.ts +4 -9
- package/src/tool/routes/i18n/id.ts +4 -9
- package/src/tool/routes/i18n/it.ts +4 -9
- package/src/tool/routes/i18n/ja.ts +4 -9
- package/src/tool/routes/i18n/ko.ts +4 -9
- package/src/tool/routes/i18n/nl.ts +4 -9
- package/src/tool/routes/i18n/pl.ts +4 -9
- package/src/tool/routes/i18n/pt.ts +4 -9
- package/src/tool/routes/i18n/ru.ts +4 -9
- package/src/tool/routes/i18n/sv.ts +4 -9
- package/src/tool/routes/i18n/tr.ts +4 -9
- package/src/tool/routes/i18n/zh.ts +4 -9
- package/src/tool/routes/optimal-routes.css +2 -2
- package/src/tool/routes/seo.astro +2 -1
- package/src/tool/rule-of-three/bibliography.astro +2 -10
- package/src/tool/rule-of-three/bibliography.ts +6 -0
- package/src/tool/rule-of-three/i18n/de.ts +4 -6
- package/src/tool/rule-of-three/i18n/en.ts +4 -6
- package/src/tool/rule-of-three/i18n/es.ts +4 -6
- package/src/tool/rule-of-three/i18n/fr.ts +4 -6
- package/src/tool/rule-of-three/i18n/id.ts +4 -6
- package/src/tool/rule-of-three/i18n/it.ts +4 -6
- package/src/tool/rule-of-three/i18n/ja.ts +4 -6
- package/src/tool/rule-of-three/i18n/ko.ts +4 -6
- package/src/tool/rule-of-three/i18n/nl.ts +4 -6
- package/src/tool/rule-of-three/i18n/pl.ts +4 -6
- package/src/tool/rule-of-three/i18n/pt.ts +4 -6
- package/src/tool/rule-of-three/i18n/ru.ts +4 -6
- package/src/tool/rule-of-three/i18n/sv.ts +4 -6
- package/src/tool/rule-of-three/i18n/tr.ts +4 -6
- package/src/tool/rule-of-three/i18n/zh.ts +4 -6
- package/src/tool/rule-of-three/rule-of-three.css +2 -2
- package/src/tool/rule-of-three/seo.astro +2 -1
- package/src/tool/seo-content-optimizer/bibliography.astro +2 -10
- package/src/tool/seo-content-optimizer/bibliography.ts +6 -0
- package/src/tool/seo-content-optimizer/i18n/de.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/en.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/es.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/fr.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/id.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/it.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/ja.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/ko.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/nl.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/pl.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/pt.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/ru.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/sv.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/tr.ts +4 -6
- package/src/tool/seo-content-optimizer/i18n/zh.ts +4 -6
- package/src/tool/seo-content-optimizer/seo-content-optimizer.css +10 -10
- package/src/tool/seo-content-optimizer/seo.astro +2 -1
- package/src/tool/speed-reader/bibliography.astro +2 -10
- package/src/tool/speed-reader/bibliography.ts +10 -0
- package/src/tool/speed-reader/i18n/de.ts +4 -10
- package/src/tool/speed-reader/i18n/en.ts +4 -10
- package/src/tool/speed-reader/i18n/es.ts +4 -10
- package/src/tool/speed-reader/i18n/fr.ts +4 -10
- package/src/tool/speed-reader/i18n/id.ts +4 -10
- package/src/tool/speed-reader/i18n/it.ts +4 -10
- package/src/tool/speed-reader/i18n/ja.ts +4 -10
- package/src/tool/speed-reader/i18n/ko.ts +4 -10
- package/src/tool/speed-reader/i18n/nl.ts +4 -10
- package/src/tool/speed-reader/i18n/pl.ts +4 -10
- package/src/tool/speed-reader/i18n/pt.ts +4 -10
- package/src/tool/speed-reader/i18n/ru.ts +4 -10
- package/src/tool/speed-reader/i18n/sv.ts +4 -10
- package/src/tool/speed-reader/i18n/tr.ts +4 -10
- package/src/tool/speed-reader/i18n/zh.ts +4 -10
- package/src/tool/speed-reader/seo.astro +2 -1
- package/src/tool/speed-reader/speed-reader.css +5 -5
- package/src/tool/text-pixel-calculator/bibliography.astro +2 -10
- package/src/tool/text-pixel-calculator/bibliography.ts +6 -0
- package/src/tool/text-pixel-calculator/i18n/de.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/en.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/es.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/fr.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/id.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/it.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/ja.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/ko.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/nl.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/pl.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/pt.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/ru.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/sv.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/tr.ts +4 -6
- package/src/tool/text-pixel-calculator/i18n/zh.ts +4 -6
- package/src/tool/text-pixel-calculator/seo.astro +2 -1
- package/src/tool/text-pixel-calculator/text-pixel-width-calculator.css +1 -1
- package/src/tool/whatsapp-link/bibliography.astro +2 -10
- package/src/tool/whatsapp-link/bibliography.ts +6 -0
- package/src/tool/whatsapp-link/i18n/de.ts +4 -6
- package/src/tool/whatsapp-link/i18n/en.ts +4 -6
- package/src/tool/whatsapp-link/i18n/es.ts +4 -6
- package/src/tool/whatsapp-link/i18n/fr.ts +4 -6
- package/src/tool/whatsapp-link/i18n/id.ts +4 -6
- package/src/tool/whatsapp-link/i18n/it.ts +4 -6
- package/src/tool/whatsapp-link/i18n/ja.ts +4 -6
- package/src/tool/whatsapp-link/i18n/ko.ts +4 -6
- package/src/tool/whatsapp-link/i18n/nl.ts +4 -6
- package/src/tool/whatsapp-link/i18n/pl.ts +4 -6
- package/src/tool/whatsapp-link/i18n/pt.ts +4 -6
- package/src/tool/whatsapp-link/i18n/ru.ts +4 -6
- package/src/tool/whatsapp-link/i18n/sv.ts +4 -6
- package/src/tool/whatsapp-link/i18n/tr.ts +4 -6
- package/src/tool/whatsapp-link/i18n/zh.ts +4 -6
- package/src/tool/whatsapp-link/seo.astro +2 -1
- package/src/tool/whatsapp-link/whatsapp-link-generator.css +2 -2
- package/src/types.ts +0 -2
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Pembuat Kata Sandi Acak Aman',
|
|
90
91
|
description: 'Buat kata sandi yang kuat dan tahan peretas secara instan. Alat keamanan siber gratis untuk menghasilkan kunci acak dan aman.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Password — Wikipedia', url: 'https://id.wikipedia.org/wiki/Kata_sandi' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Periksa apakah kata sandi Anda terekspos', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Generatore di Password Casuali Sicure',
|
|
90
91
|
description: 'Crea istantaneamente password forti e a prova di hacker. Strumento gratuito di cybersecurity per generare chiavi casuali e sicure.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Password — Wikipedia', url: 'https://it.wikipedia.org/wiki/Password' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Controlla se la tua password è stata esposta', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: '安全なランダムパスワード生成ツール',
|
|
90
91
|
description: '強力でハッカーに強いパスワードを即座に作成します。ランダムで安全なキーを生成するための無料のサイバーセキュリティツール。',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'パスワード — Wikipedia', url: 'https://ja.wikipedia.org/wiki/%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89' },
|
|
100
|
-
{ name: 'Have I Been Pwned — パスワードの漏洩を確認', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: '안전한 무작위 비밀번호 생성기',
|
|
90
91
|
description: '강력하고 해킹에 강한 비밀번호를 즉시 생성하세요. 무작위의 안전한 키를 생성하기 위한 무료 사이버 보안 도구입니다.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: 디지털 ID 가이드라인', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: '비밀번호 — 위키백과', url: 'https://ko.wikipedia.org/wiki/%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8' },
|
|
100
|
-
{ name: 'Have I Been Pwned — 비밀번호 유출 여부 확인', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Veilige willekeurige wachtwoordgenerator',
|
|
90
91
|
description: 'Maak direct sterke, hackerbestendige wachtwoorden. Gratis cybersecurity-tool om willekeurige, veilige sleutels te genereren.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Wachtwoord — Wikipedia', url: 'https://nl.wikipedia.org/wiki/Wachtwoord' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Controleer of uw wachtwoord is uitgelekt', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Generator bezpiecznych losowych haseł',
|
|
90
91
|
description: 'Błyskawicznie twórz silne, odporne na hakerów hasła. Darmowe narzędzie do cyberbezpieczeństwa do generowania losowych, bezpiecznych kluczy.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Hasło — Wikipedia', url: 'https://pl.wikipedia.org/wiki/Has%C5%82o' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Sprawdź, czy Twoje hasło zostało ujawnione', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Gerador de Passwords Aleatórias Seguras',
|
|
90
91
|
description: 'Crie passwords fortes e à prova de hackers instantaneamente. Ferramenta de cibersegurança gratuita para gerar chaves aleatórias e seguras.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Password — Wikipédia', url: 'https://pt.wikipedia.org/wiki/Palavra-passe' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Verifique se a sua password foi exposta', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Генератор надежных случайных паролей',
|
|
90
91
|
description: 'Мгновенно создавайте надежные, устойчивые к взлому пароли. Бесплатный инструмент кибербезопасности для генерации случайных защищенных ключей.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Пароль — Википедия', url: 'https://ru.wikipedia.org/wiki/%D0%9F%D0%B0%D1%80%D0%BE%D0%BB%D1%8C' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Проверьте, не был ли ваш пароль скомпрометирован', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Säker slumpmässig lösenordsgenerator',
|
|
90
91
|
description: 'Skapa starka, hacksäkra lösenord omedelbart. Gratis cybersäkerhetsverktyg för att generera slumpmässiga, säkra nycklar.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Lösenord — Wikipedia', url: 'https://sv.wikipedia.org/wiki/L%C3%B6senord' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Kontrollera om ditt lösenord har exponerats', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: 'Güvenli Rastgele Şifre Oluşturucu',
|
|
90
91
|
description: 'Anında güçlü, hackerlara karşı dayanıklı şifreler oluşturun. Rastgele, güvenli anahtarlar oluşturmak için ücretsiz siber güvenlik aracı.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: Digital Identity Guidelines', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: 'Şifre — Vikipedi', url: 'https://tr.wikipedia.org/wiki/Parola' },
|
|
100
|
-
{ name: 'Have I Been Pwned — Şifrenizin ifşa olup olmadığını kontrol edin', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { PasswordGeneratorUI } from '../ui';
|
|
@@ -89,16 +90,11 @@ export const content: ToolLocaleContent<PasswordGeneratorUI> = {
|
|
|
89
90
|
title: '安全随机密码生成器',
|
|
90
91
|
description: '立即创建强大、防黑客的密码。免费的网络安全工具,用于生成随机、安全的密钥。',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Web Cryptography API — MDN Web Docs', url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API' },
|
|
98
|
-
{ name: 'NIST SP 800-63B: 数字身份指南', url: 'https://pages.nist.gov/800-63-3/sp800-63b.html' },
|
|
99
|
-
{ name: '密码 — 维基百科', url: 'https://zh.wikipedia.org/wiki/%E5%AF%86%E7%A0%81' },
|
|
100
|
-
{ name: 'Have I Been Pwned — 检查您的密码是否已泄露', url: 'https://haveibeenpwned.com/Passwords' },
|
|
101
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
102
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
103
99
|
seo: [
|
|
104
100
|
{
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
transition: transform 0.3s ease;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
.theme-dark .pg-card {
|
|
23
23
|
background: linear-gradient(
|
|
24
24
|
135deg,
|
|
25
25
|
rgba(255, 255, 255, 0.05),
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
flex-direction: column;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
.theme-dark .pg-card-content {
|
|
49
49
|
background: #0f172a;
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
margin: 1.5rem 0;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
.theme-dark .pg-divider {
|
|
64
64
|
background: linear-gradient(
|
|
65
65
|
to right,
|
|
66
66
|
transparent,
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
.pg-copied-anim {
|
|
85
85
|
animation: pulse-success 0.3s ease-out;
|
|
86
86
|
}
|
|
87
87
|
/* Config.astro */
|
|
@@ -9,6 +9,7 @@ interface Props {
|
|
|
9
9
|
|
|
10
10
|
const { locale = 'es' } = Astro.props;
|
|
11
11
|
const content = await passwordGenerator.i18n[locale]?.();
|
|
12
|
+
if (!content) return null;
|
|
12
13
|
---
|
|
13
14
|
|
|
14
|
-
{content && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
15
|
+
{content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
|
|
3
|
-
import {
|
|
4
|
-
import type { KnownLocale } from '../../types';
|
|
5
|
-
|
|
6
|
-
interface Props {
|
|
7
|
-
locale?: KnownLocale;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
const { locale = 'es' } = Astro.props;
|
|
11
|
-
const content = await routes.i18n[locale]?.();
|
|
3
|
+
import { bibliography } from './bibliography';
|
|
12
4
|
---
|
|
13
5
|
|
|
14
|
-
|
|
6
|
+
<SharedBibliography links={bibliography} />
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BibliographyEntry } from '../../types';
|
|
2
|
+
|
|
3
|
+
export const bibliography: BibliographyEntry[] = [
|
|
4
|
+
{ name: 'Leaflet — Open-source interactive maps library', url: 'https://leafletjs.com/' },
|
|
5
|
+
{ name: 'OpenStreetMap — Open cartographic data', url: 'https://www.openstreetmap.org/' },
|
|
6
|
+
{ name: 'CARTO — Voyager map tiles', url: 'https://carto.com/basemaps/' },
|
|
7
|
+
{ name: 'Nominatim — Reverse geocoding service (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
8
|
+
{ name: 'OSRM — Open Source Routing Machine (route optimization)', url: 'http://project-osrm.org/' },
|
|
9
|
+
];
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: 'Kostenloser optimaler Routenplaner',
|
|
90
91
|
description: 'Optimieren Sie Ihre Liefer- oder Reiserouten kostenlos. Unser Tool ordnet Ihre Haltepunkte automatisch neu, um den kürzesten und effizientesten Weg zu finden.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — Open-Source interaktive Kartenbibliothek', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — Offene kartografische Daten', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Voyager-Kartenkacheln', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — Reverse-Geocoding-Dienst (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine (Routenoptimierung)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: 'Free Optimal Route Calculator',
|
|
90
91
|
description: 'Optimize your delivery or travel routes for free. Our tool automatically reorders your stops to find the shortest and most efficient path.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — Open-source interactive maps library', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — Open cartographic data', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Voyager map tiles', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — Reverse geocoding service (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine (route optimization)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: 'Calculadora de Rutas Óptimas Gratis',
|
|
90
91
|
description: 'Optimiza tus rutas de reparto o viaje gratis. Nuestra herramienta reordena tus paradas automáticamente para encontrar el camino más corto y eficiente.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — Librería de mapas interactivos de código abierto', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — Datos cartográficos abiertos', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Tiles de mapas Voyager', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — Servicio de geocodificación inversa (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine (optimización de rutas)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: "Calculateur d'itinéraires optimaux gratuit",
|
|
90
91
|
description: "Optimisez vos itinéraires de livraison ou de voyage gratuitement. Notre outil réorganise automatiquement vos arrêts pour trouver le chemin le plus court et le plus efficace.",
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — Bibliothèque de cartes interactives open source', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — Données cartographiques ouvertes', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Tuiles de carte Voyager', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — Service de géocodage inverse (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: "OSRM — Open Source Routing Machine (optimisation d'itinéraires)", url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: 'Kalkulator Rute Optimal Gratis',
|
|
90
91
|
description: 'Optimalkan rute pengiriman atau perjalanan Anda secara gratis. Alat kami mengurutkan ulang perhentian Anda secara otomatis untuk menemukan jalur terpendek dan paling efisien.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — Library peta interaktif sumber terbuka', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — Data kartografi terbuka', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Tile peta Voyager', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — Layanan geocoding balik (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine (optimisasi rute)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: 'Calcolatore di Rotte Ottimali Gratuito',
|
|
90
91
|
description: 'Ottimizza le tue rotte di consegna o di viaggio gratuitamente. Il nostro strumento riordina automaticamente le tue tappe per trovare il percorso più breve ed efficiente.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — Libreria di mappe interattive open-source', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — Dati cartografici aperti', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Tile delle mappe Voyager', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — Servizio di geocodifica inversa (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine (ottimizzazione rotte)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: '無料の最適ルート計算機',
|
|
90
91
|
description: '配達や旅行のルートを無料で最適化します。当ツールは経由地を自動的に並べ替えて、最短かつ最も効率的な経路を見つけます。',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — オープンソースのインタラクティブ・マップ・ライブラリ', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — オープンな地図データ', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Voyager マップタイル', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — 逆ジオコーディングサービス(OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine(ルート最適化)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: '무료 최적 경로 계산기',
|
|
90
91
|
description: '배달 또는 여행 경로를 무료로 최적화하세요. 당사의 도구는 가장 짧고 효율적인 경로를 찾기 위해 정거장을 자동으로 재배치합니다.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — 오픈 소스 대화형 지도 라이브러리', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — 공개 지도 데이터', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Voyager 지도 타일', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — 역 지오코딩 서비스 (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — 오픈 소스 라우팅 엔진 (경로 최적화)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: 'Gratis optimale routeplanner',
|
|
90
91
|
description: 'Optimaliseer uw bezorg- of reisroutes gratis. Onze tool reorganiseert uw stops automatisch om de kortste en meest efficiënte route te vinden.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — Open-source interactieve kaartenbibliotheek', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — Open cartografische gegevens', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — Voyager-kaarttegels', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — Omgekeerde geocoderingsdienst (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine (route-optimalisatie)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
1
2
|
import type { ToolLocaleContent } from '../../../types';
|
|
2
3
|
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
4
|
import type { RoutesUI } from '../ui';
|
|
@@ -89,17 +90,11 @@ export const content: ToolLocaleContent<RoutesUI> = {
|
|
|
89
90
|
title: 'Darmowy Kalkulator Optymalnej Trasy',
|
|
90
91
|
description: 'Optymalizuj swoje trasy dostaw lub podróży za darmo. Nasze narzędzie automatycznie porządkuje przystanki, aby znaleźć najkrótszą i najskuteczniejszą ścieżkę.',
|
|
91
92
|
ui,
|
|
92
|
-
|
|
93
|
+
|
|
93
94
|
faq: faqData,
|
|
94
95
|
howTo: howToData,
|
|
95
|
-
|
|
96
|
-
bibliography
|
|
97
|
-
{ name: 'Leaflet — otwarta biblioteka map interaktywnych', url: 'https://leafletjs.com/' },
|
|
98
|
-
{ name: 'OpenStreetMap — otwarte dane kartograficzne', url: 'https://www.openstreetmap.org/' },
|
|
99
|
-
{ name: 'CARTO — kafelki mapy Voyager', url: 'https://carto.com/basemaps/' },
|
|
100
|
-
{ name: 'Nominatim — usługa odwróconego geokodowania (OpenStreetMap)', url: 'https://nominatim.org/' },
|
|
101
|
-
{ name: 'OSRM — Open Source Routing Machine (optymalizacja tras)', url: 'http://project-osrm.org/' },
|
|
102
|
-
],
|
|
96
|
+
|
|
97
|
+
bibliography,
|
|
103
98
|
schemas: [faqSchema, howToSchema, appSchema],
|
|
104
99
|
seo: [
|
|
105
100
|
{
|