@jjlmoya/utils-streaming 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/package.json +1 -1
  2. package/src/pages/[locale]/[slug].astro +24 -15
  3. package/src/tests/locale_completeness.test.ts +3 -19
  4. package/src/tests/seo_length.test.ts +1 -0
  5. package/src/tests/shared-test-helpers.ts +56 -0
  6. package/src/tests/title_quality.test.ts +1 -1
  7. package/src/tests/tool_exports.test.ts +34 -0
  8. package/src/tool/sorteo/bibliography.astro +2 -10
  9. package/src/tool/sorteo/bibliography.ts +12 -0
  10. package/src/tool/sorteo/i18n/de.ts +2 -14
  11. package/src/tool/sorteo/i18n/en.ts +2 -14
  12. package/src/tool/sorteo/i18n/es.ts +2 -14
  13. package/src/tool/sorteo/i18n/fr.ts +2 -14
  14. package/src/tool/sorteo/i18n/id.ts +2 -14
  15. package/src/tool/sorteo/i18n/it.ts +2 -14
  16. package/src/tool/sorteo/i18n/ja.ts +2 -14
  17. package/src/tool/sorteo/i18n/ko.ts +2 -14
  18. package/src/tool/sorteo/i18n/nl.ts +2 -14
  19. package/src/tool/sorteo/i18n/pl.ts +2 -14
  20. package/src/tool/sorteo/i18n/pt.ts +2 -14
  21. package/src/tool/sorteo/i18n/ru.ts +2 -14
  22. package/src/tool/sorteo/i18n/sv.ts +2 -14
  23. package/src/tool/sorteo/i18n/tr.ts +2 -14
  24. package/src/tool/sorteo/i18n/zh.ts +2 -14
  25. package/src/tool/sorteo/index.ts +3 -0
  26. package/src/tool/sorteo/seo.astro +2 -1
  27. package/src/tool/sorteo/ui.ts +0 -2
  28. package/src/tool/tebasCheck/bibliography.astro +2 -10
  29. package/src/tool/tebasCheck/bibliography.ts +12 -0
  30. package/src/tool/tebasCheck/i18n/de.ts +2 -14
  31. package/src/tool/tebasCheck/i18n/en.ts +2 -14
  32. package/src/tool/tebasCheck/i18n/es.ts +2 -14
  33. package/src/tool/tebasCheck/i18n/fr.ts +2 -14
  34. package/src/tool/tebasCheck/i18n/id.ts +2 -14
  35. package/src/tool/tebasCheck/i18n/it.ts +2 -14
  36. package/src/tool/tebasCheck/i18n/ja.ts +2 -14
  37. package/src/tool/tebasCheck/i18n/ko.ts +2 -14
  38. package/src/tool/tebasCheck/i18n/nl.ts +2 -14
  39. package/src/tool/tebasCheck/i18n/pl.ts +2 -14
  40. package/src/tool/tebasCheck/i18n/pt.ts +2 -14
  41. package/src/tool/tebasCheck/i18n/ru.ts +2 -14
  42. package/src/tool/tebasCheck/i18n/sv.ts +2 -14
  43. package/src/tool/tebasCheck/i18n/tr.ts +2 -14
  44. package/src/tool/tebasCheck/i18n/zh.ts +2 -14
  45. package/src/tool/tebasCheck/index.ts +3 -0
  46. package/src/tool/tebasCheck/seo.astro +2 -1
  47. package/src/tool/tebasCheck/types.ts +0 -2
  48. package/src/types.ts +2 -3
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { SorteoUI } from '../ui';
@@ -97,19 +98,8 @@ export const content: ToolLocaleContent<SorteoUI> = {
97
98
  slug,
98
99
  title,
99
100
  description,
100
- faqTitle: 'Часто задаваемые вопросы',
101
101
  faq: faqData,
102
- bibliographyTitle: 'Технические справки',
103
- bibliography: [
104
- {
105
- name: 'Web Crypto API: getRandomValues()',
106
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues',
107
- },
108
- {
109
- name: 'Алгоритм тасования Фишера — Йетса',
110
- url: 'https://ru.wikipedia.org/wiki/%D0%A2%D0%B0%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A4%D0%B8%D1%88%D0%B5%D1%80%D0%B0_%E2%80%94_%D0%99%D0%B5%D1%82%D1%81%D0%B0',
111
- },
112
- ],
102
+ bibliography,
113
103
  howTo: howToData,
114
104
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
115
105
  seo: [
@@ -222,8 +212,6 @@ export const content: ToolLocaleContent<SorteoUI> = {
222
212
  },
223
213
  ],
224
214
  ui: {
225
- faqTitle: 'Часто задаваемые вопросы',
226
- bibliographyTitle: 'Технические справки',
227
215
  title: 'Случайный розыгрыш',
228
216
  totalParticipants: 'Всего уникальных участников',
229
217
  ready: 'ГОТОВО',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { SorteoUI } from '../ui';
@@ -97,19 +98,8 @@ export const content: ToolLocaleContent<SorteoUI> = {
97
98
  slug,
98
99
  title,
99
100
  description,
100
- faqTitle: 'Vanliga frågor',
101
101
  faq: faqData,
102
- bibliographyTitle: 'Tekniska referenser',
103
- bibliography: [
104
- {
105
- name: 'Web Crypto API: getRandomValues()',
106
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues',
107
- },
108
- {
109
- name: 'Fisher-Yates Shuffle Algorithm',
110
- url: 'https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle',
111
- },
112
- ],
102
+ bibliography,
113
103
  howTo: howToData,
114
104
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
115
105
  seo: [
@@ -222,8 +212,6 @@ export const content: ToolLocaleContent<SorteoUI> = {
222
212
  },
223
213
  ],
224
214
  ui: {
225
- faqTitle: 'Vanliga frågor',
226
- bibliographyTitle: 'Tekniska referenser',
227
215
  title: 'Slumpartad utlottning',
228
216
  totalParticipants: 'Totalt antal unika deltagare',
229
217
  ready: 'REDO',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { SorteoUI } from '../ui';
@@ -97,19 +98,8 @@ export const content: ToolLocaleContent<SorteoUI> = {
97
98
  slug,
98
99
  title,
99
100
  description,
100
- faqTitle: 'Sıkça Sorulan Sorular',
101
101
  faq: faqData,
102
- bibliographyTitle: 'Teknik Referanslar',
103
- bibliography: [
104
- {
105
- name: 'Web Crypto API: getRandomValues()',
106
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues',
107
- },
108
- {
109
- name: 'Fisher-Yates Karıştırma Algoritması',
110
- url: 'https://tr.wikipedia.org/wiki/Fisher-Yates_kar%C4%B1%C5%9Ft%C4%B1rma_algoritmas%C4%B1',
111
- },
112
- ],
102
+ bibliography,
113
103
  howTo: howToData,
114
104
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
115
105
  seo: [
@@ -222,8 +212,6 @@ export const content: ToolLocaleContent<SorteoUI> = {
222
212
  },
223
213
  ],
224
214
  ui: {
225
- faqTitle: 'Sıkça Sorulan Sorular',
226
- bibliographyTitle: 'Teknik Referanslar',
227
215
  title: 'Rastgele Çekiliş',
228
216
  totalParticipants: 'Toplam Benzersiz Katılımcı',
229
217
  ready: 'HAZIR',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { SorteoUI } from '../ui';
@@ -97,19 +98,8 @@ export const content: ToolLocaleContent<SorteoUI> = {
97
98
  slug,
98
99
  title,
99
100
  description,
100
- faqTitle: '常见问题',
101
101
  faq: faqData,
102
- bibliographyTitle: '技术参考',
103
- bibliography: [
104
- {
105
- name: 'Web Crypto API: getRandomValues()',
106
- url: 'https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues',
107
- },
108
- {
109
- name: 'Fisher-Yates 洗牌算法',
110
- url: 'https://zh.wikipedia.org/wiki/Fisher-Yates%E6%B4%97%E7%89%8C%E7%AE%97%E6%B3%95',
111
- },
112
- ],
102
+ bibliography,
113
103
  howTo: howToData,
114
104
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
115
105
  seo: [
@@ -222,8 +212,6 @@ export const content: ToolLocaleContent<SorteoUI> = {
222
212
  },
223
213
  ],
224
214
  ui: {
225
- faqTitle: '常见问题',
226
- bibliographyTitle: '技术参考',
227
215
  title: '随机抽奖',
228
216
  totalParticipants: '唯一参与者总数',
229
217
  ready: '就绪',
@@ -1,8 +1,11 @@
1
1
  import { sorteo } from './entry';
2
+ import type { ToolDefinition } from '../../types';
3
+ import giveawayCss from './giveaway.css?raw';
2
4
  export * from './entry';
3
5
  export const SORTEO_TOOL: ToolDefinition = {
4
6
  entry: sorteo,
5
7
  Component: () => import('./component.astro'),
6
8
  SEOComponent: () => import('./seo.astro'),
7
9
  BibliographyComponent: () => import('./bibliography.astro'),
10
+ css: giveawayCss,
8
11
  };
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await SORTEO_TOOL.entry.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,7 +1,5 @@
1
1
  export interface SorteoUI {
2
2
  [key: string]: string;
3
- faqTitle: string;
4
- bibliographyTitle: string;
5
3
  title: string;
6
4
  totalParticipants: string;
7
5
  ready: string;
@@ -1,14 +1,6 @@
1
1
  ---
2
2
  import { Bibliography as SharedBibliography } from '@jjlmoya/utils-shared';
3
- import { tebasCheck } from './index';
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 tebasCheck.i18n[locale]?.();
3
+ import { bibliography } from './bibliography';
12
4
  ---
13
5
 
14
- {content && <SharedBibliography links={content.bibliography} />}
6
+ <SharedBibliography links={bibliography} />
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Cloudflare: Understanding IP Blocking',
6
+ url: 'https://developers.cloudflare.com/support/troubleshooting/general-troubleshooting/potential-isp-blocking/',
7
+ },
8
+ {
9
+ name: 'Jurisprudencia sobre bloqueos dinámicos en España',
10
+ url: 'https://institutoautor.org/espana-el-juzgado-de-lo-mercantil-de-barcelona-se-pronuncia-sobre-la-aplicacion-de-medidas-de-bloque-dinamico-por-la-vulneracion-de-los-derechos-de-propiedad-intelectual/',
11
+ },
12
+ ];
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Häufig gestellte Fragen',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referenzen und Kontext',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: IP-Sperren verstehen',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Spanische Regelungen zu dynamischen Sperren',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Häufig gestellte Fragen',
218
- bibliographyTitle: 'Referenzen und Kontext',
219
207
  scanning: 'Scanne die Matrix...',
220
208
  seekingBlocks: 'Suche nach Betonblöcken in deiner Leitung...',
221
209
  blockedTitle: 'GESPERRT...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Frequently Asked Questions',
86
86
  faq: faqData,
87
- bibliographyTitle: 'References and Context',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Understanding IP Blocking',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Spanish dynamic blocking regulations',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Frequently Asked Questions',
218
- bibliographyTitle: 'References and Context',
219
207
  scanning: 'Scanning the matrix...',
220
208
  seekingBlocks: 'Searching for concrete blocks in your fiber...',
221
209
  blockedTitle: 'BLOCKING...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Preguntas Frecuentes',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referencias y Contexto',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Understanding IP Blocking',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Jurisprudencia sobre bloqueos dinámicos en España',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Preguntas Frecuentes',
218
- bibliographyTitle: 'Referencias y Contexto',
219
207
  scanning: 'Escaneando la matrix...',
220
208
  seekingBlocks: 'Buscando bloques de hormigón en tu fibra...',
221
209
  blockedTitle: 'BLOQUEANDO...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Questions Fréquemment Posées',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Références et Contexte',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Understanding IP Blocking',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Réglementation espagnole sur les blocages dynamiques',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Questions Fréquemment Posées',
218
- bibliographyTitle: 'Références et Contexte',
219
207
  scanning: 'Scan de la matrix...',
220
208
  seekingBlocks: 'Recherche de blocs de béton dans votre fibre...',
221
209
  blockedTitle: 'BLOCAGE...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Pertanyaan yang Sering Diajukan',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referensi dan Konteks',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Memahami Pemblokiran IP',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Peraturan pemblokiran dinamis Spanyol',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Pertanyaan yang Sering Diajukan',
218
- bibliographyTitle: 'Referensi dan Konteks',
219
207
  scanning: 'Memindai matriks...',
220
208
  seekingBlocks: 'Mencari blokade beton di serat Anda...',
221
209
  blockedTitle: 'MEMBLOKIR...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Domande Frequenti',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Riferimenti e Contesto',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Capire il blocco IP',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Normative spagnole sui blocchi dinamici',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Domande Frequenti',
218
- bibliographyTitle: 'Riferimenti e Contesto',
219
207
  scanning: 'Scansione della matrice...',
220
208
  seekingBlocks: 'Ricerca di blocchi di cemento nella tua fibra...',
221
209
  blockedTitle: 'BLOCCO...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'よくある質問',
86
86
  faq: faqData,
87
- bibliographyTitle: '参考文献と背景',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: IPブロッキングを理解する',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'スペインの動的ブロッキング規制',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'よくある質問',
218
- bibliographyTitle: '参考文献と背景',
219
207
  scanning: 'マトリックスをスキャン中...',
220
208
  seekingBlocks: '回線内のコンクリートブロックを探索中...',
221
209
  blockedTitle: 'ブロック中...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: '자주 묻는 질문',
86
86
  faq: faqData,
87
- bibliographyTitle: '참고 자료 및 배경',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: IP 차단 이해하기',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: '스페인 동적 차단 규정',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: '자주 묻는 질문',
218
- bibliographyTitle: '참고 자료 및 배경',
219
207
  scanning: '매트릭스 스캔 중...',
220
208
  seekingBlocks: '회선 내 콘크리트 차단물 탐색 중...',
221
209
  blockedTitle: '차단 중...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Veelgestelde vragen',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referenties en context',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: IP-blokkering begrijpen',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Spaanse regelgeving voor dynamische blokkering',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Veelgestelde vragen',
218
- bibliographyTitle: 'Referenties en context',
219
207
  scanning: 'De matrix scannen...',
220
208
  seekingBlocks: 'Zoeken naar betonblokken in je glasvezel...',
221
209
  blockedTitle: 'BLOKKEREN...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Często Zadawane Pytania',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referencje i Kontekst',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Zrozumienie blokowania IP',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Hiszpańskie przepisy dotyczące dynamicznego blokowania',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Często Zadawane Pytania',
218
- bibliographyTitle: 'Referencje i Kontekst',
219
207
  scanning: 'Skanowanie matrixa...',
220
208
  seekingBlocks: 'Szukanie betonowych blokad w Twoim światłowodzie...',
221
209
  blockedTitle: 'BLOKOWANIE...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Perguntas Frequentes',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referências e Contexto',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Compreender o bloqueio de IP',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Regulamentações espanholas de bloqueio dinâmico',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Perguntas Frecuentes',
218
- bibliographyTitle: 'Referências e Contexto',
219
207
  scanning: 'A ler a matrix...',
220
208
  seekingBlocks: 'A procurar blocos de betão na sua fibra...',
221
209
  blockedTitle: 'A BLOQUEAR...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Часто задаваемые вопросы',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Ссылки и контекст',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Понимание блокировки IP',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Испанские правила динамической блокировки',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Часто задаваемые вопросы',
218
- bibliographyTitle: 'Ссылки и контекст',
219
207
  scanning: 'Сканирование матрицы...',
220
208
  seekingBlocks: 'Поиск бетонных блоков в вашем оптоволокне...',
221
209
  blockedTitle: 'БЛОКИРОВКА...',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
3
  import type { ToolLocaleContent } from '../../../types';
3
4
  import type { TebasCheckUI } from '../types';
@@ -82,19 +83,8 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
82
83
  slug,
83
84
  title,
84
85
  description,
85
- faqTitle: 'Vanliga frågor',
86
86
  faq: faqData,
87
- bibliographyTitle: 'Referenser och kontext',
88
- bibliography: [
89
- {
90
- name: 'Cloudflare: Förstå IP-blockering',
91
- url: 'https://www.cloudflare.com/learning/network-layer/what-is-ip-blocking/',
92
- },
93
- {
94
- name: 'Spanska regler för dynamisk blockering',
95
- url: 'https://www.poderjudicial.es/',
96
- },
97
- ],
87
+ bibliography,
98
88
  howTo: howToData,
99
89
  schemas: [faqSchema as any, howToSchema as any, appSchema as any],
100
90
  seo: [
@@ -214,8 +204,6 @@ export const content: ToolLocaleContent<TebasCheckUI> = {
214
204
  },
215
205
  ],
216
206
  ui: {
217
- faqTitle: 'Vanliga frågor',
218
- bibliographyTitle: 'Referenser och kontext',
219
207
  scanning: 'Skannar matrisen...',
220
208
  seekingBlocks: 'Letar efter betongblock i din fiber...',
221
209
  blockedTitle: 'BLOCKERAR...',