@jjlmoya/utils-language 1.10.0 → 1.11.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 (40) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +2 -1
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/registry_contract.test.ts +67 -0
  6. package/src/tests/tool_exports.test.ts +8 -0
  7. package/src/tests/tool_validation.test.ts +1 -1
  8. package/src/tool/language-shadowing-session-planner/component.astro +1 -0
  9. package/src/tool/lexical-coverage-vocabulary-calculator/bibliography.astro +6 -0
  10. package/src/tool/lexical-coverage-vocabulary-calculator/bibliography.ts +6 -0
  11. package/src/tool/lexical-coverage-vocabulary-calculator/component.astro +77 -0
  12. package/src/tool/lexical-coverage-vocabulary-calculator/controller.ts +157 -0
  13. package/src/tool/lexical-coverage-vocabulary-calculator/dom-views.ts +158 -0
  14. package/src/tool/lexical-coverage-vocabulary-calculator/entry.ts +34 -0
  15. package/src/tool/lexical-coverage-vocabulary-calculator/evaluator.ts +13 -0
  16. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/de.ts +13 -0
  17. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/en.ts +59 -0
  18. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/es.ts +13 -0
  19. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/fr.ts +53 -0
  20. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/id.ts +13 -0
  21. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/it.ts +13 -0
  22. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/ja.ts +13 -0
  23. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/ko.ts +13 -0
  24. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/nl.ts +13 -0
  25. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/pl.ts +13 -0
  26. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/pt.ts +13 -0
  27. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/ru.ts +13 -0
  28. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/sv.ts +13 -0
  29. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/tr.ts +59 -0
  30. package/src/tool/lexical-coverage-vocabulary-calculator/i18n/zh.ts +13 -0
  31. package/src/tool/lexical-coverage-vocabulary-calculator/index.ts +14 -0
  32. package/src/tool/lexical-coverage-vocabulary-calculator/lexical-coverage-vocabulary-calculator.css +497 -0
  33. package/src/tool/lexical-coverage-vocabulary-calculator/logic.test.ts +35 -0
  34. package/src/tool/lexical-coverage-vocabulary-calculator/logic.ts +76 -0
  35. package/src/tool/lexical-coverage-vocabulary-calculator/seo.astro +11 -0
  36. package/src/tool/lexical-coverage-vocabulary-calculator/storage.ts +24 -0
  37. package/src/tool/lexical-coverage-vocabulary-calculator/types.ts +33 -0
  38. package/src/tool/lexical-coverage-vocabulary-calculator/ui.ts +50 -0
  39. package/src/tool/lexical-coverage-vocabulary-calculator/validation.ts +18 -0
  40. package/src/tools.ts +2 -1
@@ -0,0 +1,59 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = {
6
+ contentType: 'What do you want to understand?', conversation: 'Casual conversation', travel: 'Travel and daily life', media: 'Films and series', generalReading: 'General reading', novels: 'Novels', business: 'Business and work', academic: 'Academic texts', knownWords: 'Words you already know', knownWordsHint: 'Use a tested estimate when possible. Count word families or lemmas consistently.', targetCoverage: 'Coverage you want', coverage80: 'Getting started', coverage90: 'Following the thread', coverage95: 'Comfortable with support', coverage98: 'Independent reading', resetButton: 'Reset', quickStart: 'Quick starts', conversationPreset: 'Conversation', readingPreset: 'Novel reading', workPreset: 'Work', resultTitle: 'Your vocabulary map', emptyResult: 'Choose a content type, enter your known vocabulary, and reveal the next useful word-count milestone.', checkInputs: 'Check your inputs', invalidWords: 'Enter a word count between 0 and 50,000.', invalidContentType: 'Choose one of the available content types.', invalidCoverage: 'Choose a coverage target between 80% and 98%.', belowTarget: 'You are below the selected coverage band. The gap is your next vocabulary project.', atTarget: 'You have reached the selected planning band. Keep topic-specific words close at hand.', buffer: 'You have a useful buffer for this content profile. Refine by sampling the texts you actually want to use.', recommendedWords: 'Words for your target', vocabularyKnown: 'Words counted', estimatedCoverage: 'Estimated coverage', gapWords: 'Words to target', unknownPerHundred: 'Unknown per 100', coverageRoute: 'The reading route from frequent words to independent coverage', nextCheckpoint: 'Next checkpoint', noMoreCheckpoints: 'You are beyond the highest checkpoint in this planning model.', words: 'words', wordUnit: 'words', unknownWords: 'unknown', targetMarker: 'target', coverageNote: 'Coverage means the share of running words in a text that your vocabulary recognizes. It is not the same as total language mastery.', wordFamilyNote: 'Research may count word families while apps count lemmas or forms, so compare like with like.', contentTypeHelp: 'Genre changes the vocabulary threshold: frequent conversation words arrive earlier than the specialized vocabulary of novels, work, or study.', interpretationTitle: 'How to use the map', actionBelow: 'Add the gap to a focused list drawn from your real conversations, books, or work documents.', actionAt: 'Sample a page or transcript from your target genre and add recurring unknown words before expanding the list.', actionBuffer: 'Switch from collecting isolated words to phrases, collocations, and the specialized vocabulary your next text demands.',
7
+ };
8
+
9
+ const faq = [
10
+ { question: 'What does the lexical coverage calculator estimate?', answer: 'It estimates a useful vocabulary size for a selected content profile at 80%, 90%, 95%, or 98% lexical coverage. It also compares that planning band with the number of words you already know and shows the next checkpoint.' },
11
+ { question: 'Why does casual conversation need fewer words than novels or business texts?', answer: 'Frequent spoken language reuses a relatively small core vocabulary. Novels, professional documents, and academic texts add less frequent, topic-specific, and formulaic vocabulary, so the same word count covers a smaller share of what you encounter.' },
12
+ { question: 'Does 80% coverage mean I understand 80% of the meaning?', answer: 'No. It means your known vocabulary accounts for roughly 80% of the running words in a text. Missing words can carry important meaning, and syntax, background knowledge, speed, pronunciation, and topic familiarity also affect comprehension.' },
13
+ { question: 'Should I count words, lemmas, or word families?', answer: 'Use the same unit for your estimate and your vocabulary list. Research often reports word families, whereas apps may report lemmas or surface forms. Those counts are not interchangeable, especially in languages with rich inflection.' },
14
+ { question: 'What should I do with the gap?', answer: 'Build the next list from real input in the chosen genre. Keep words that recur, learn them in phrases, and recheck a sample of the same type of conversation or text after review.' },
15
+ ];
16
+
17
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Lexical Coverage Vocabulary Calculator', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/en/lexical-coverage-vocabulary-calculator' };
18
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Estimate the vocabulary needed for a content type', step: [
19
+ { '@type': 'HowToStep', name: 'Choose the content', text: 'Select conversation, media, novels, business, academic texts, or another profile that matches your real goal.' },
20
+ { '@type': 'HowToStep', name: 'Enter known vocabulary', text: 'Add a consistent estimate of the words, lemmas, or word families you recognize.' },
21
+ { '@type': 'HowToStep', name: 'Set coverage', text: 'Choose the coverage band that fits your use, from getting started to independent reading.' },
22
+ { '@type': 'HowToStep', name: 'Act on the gap', text: 'Use the next checkpoint to build a focused list from authentic content in that genre.' },
23
+ ] };
24
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
25
+
26
+ function withContext(schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> {
27
+ return { '@context': 'https://schema.org', ...schema };
28
+ }
29
+
30
+ export const content: ToolLocaleContent<LexicalCoverageUI> = {
31
+ slug: 'lexical-coverage-vocabulary-calculator',
32
+ title: 'Lexical Coverage Vocabulary Calculator',
33
+ description: 'Estimate how many words you need for conversations, novels, business, media, and study by comparing vocabulary size with a realistic coverage target.',
34
+ ui,
35
+ seo: [
36
+ { type: 'title', text: 'Choose Vocabulary Size by Content Type', level: 2 },
37
+ { type: 'paragraph', html: 'The right vocabulary target depends on what you want to understand. A compact group of high frequency words can open casual conversation, while novels, business documents, and academic texts introduce more low frequency and specialist vocabulary. This calculator turns that difference into a practical word count and a next milestone.' },
38
+ { type: 'title', text: 'What Lexical Coverage Measures', level: 2 },
39
+ { type: 'paragraph', html: 'Lexical coverage is the share of running words in a sample that your known vocabulary recognizes. The calculator uses four planning bands: 80% to start noticing the thread, 90% to follow more of it, 95% for reading with support, and 98% as a stronger independent reading target. These are planning thresholds, not promises of comprehension.' },
40
+ { type: 'title', text: 'Why Genre Changes the Number', level: 2 },
41
+ { type: 'table', headers: ['Content profile', '80% planning band', '95% planning band', 'What changes'], rows: [['Casual conversation', '2,000 words', '4,500 words', 'Frequent everyday vocabulary and repeated routines.'], ['Films and series', '3,000 words', '6,000 words', 'Dialogue, slang, pronunciation, and topic shifts.'], ['Novels', '5,000 words', '8,000 words', 'Narrative vocabulary, description, names, and genre terms.'], ['Business and work', '5,000 words', '8,000 words', 'Professional phrases, domain terms, and document conventions.'], ['Academic texts', '6,000 words', '10,000 words', 'Abstract vocabulary, discipline-specific terms, and dense syntax.']] },
42
+ { type: 'title', text: 'Turn the Gap Into a Study Decision', level: 2 },
43
+ { type: 'paragraph', html: 'If the result is below your selected band, do not respond by collecting random words. Take a short sample from the conversations, pages, or documents you actually want to understand. Keep unknown words that recur or block the meaning, learn them in phrases, and return to another sample after review.' },
44
+ { type: 'list', items: ['Choose the content profile that matches your next real task.', 'Count vocabulary with the same unit each time: word families, lemmas, or forms.', 'Use the gap as a focused list, then prioritize recurring words and phrases.', 'Sample the target genre again before raising the coverage goal.'] },
45
+ { type: 'tip', title: 'Evidence and limits', html: 'The 2,000 word and 80% reference comes from frequency and text coverage research, while larger written-text estimates vary by corpus and genre. Word families, lemmas, and forms produce different totals. Language, morphology, proper nouns, topic knowledge, grammar, listening speed, and inference all matter, so treat the map as a transparent planning heuristic rather than a test or a guarantee.' },
46
+ ],
47
+ faq,
48
+ bibliography: [
49
+ { name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' },
50
+ { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' },
51
+ ],
52
+ howTo: [
53
+ { name: 'Choose the content', text: 'Select the content profile that matches the conversations, media, books, or documents you want to understand.' },
54
+ { name: 'Enter known vocabulary', text: 'Enter a consistent estimate of your recognized words, lemmas, or word families.' },
55
+ { name: 'Set the coverage band', text: 'Choose 80%, 90%, 95%, or 98% according to how much support you can tolerate.' },
56
+ { name: 'Build the next list', text: 'Use the gap and next checkpoint to select recurring words and phrases from authentic target content.' },
57
+ ],
58
+ schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)],
59
+ };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: '¿Qué quieres entender?', conversation: 'Conversación casual', travel: 'Viajes y vida diaria', media: 'Películas y series', generalReading: 'Lectura general', novels: 'Novelas', business: 'Negocios y trabajo', academic: 'Textos académicos', knownWords: 'Palabras que ya conoces', knownWordsHint: 'Usa una estimación razonada. Cuenta familias de palabras o lemas de forma coherente.', targetCoverage: 'Cobertura que buscas', coverage80: 'Primer paso', coverage90: 'Seguir el hilo', coverage95: 'Leer con apoyo', coverage98: 'Leer de forma independiente', resetButton: 'Restablecer', quickStart: 'Inicios rápidos', conversationPreset: 'Conversación', readingPreset: 'Novela', workPreset: 'Trabajo', resultTitle: 'Tu mapa de vocabulario', emptyResult: 'Elige un tipo de contenido e introduce tu vocabulario conocido para ver el siguiente hito útil.', checkInputs: 'Revisa los datos', invalidWords: 'Introduce entre 0 y 50.000 palabras conocidas.', invalidContentType: 'Elige uno de los tipos de contenido disponibles.', invalidCoverage: 'Elige un objetivo entre el 80 % y el 98 %.', belowTarget: 'Estás por debajo de la banda elegida. La brecha es tu próximo proyecto de vocabulario.', atTarget: 'Has alcanzado la banda de planificación elegida. Mantén cerca el vocabulario específico del tema.', buffer: 'Tienes un margen útil para este contenido. Comprueba ahora textos reales de tu objetivo.', recommendedWords: 'Palabras para tu objetivo', vocabularyKnown: 'Palabras contadas', estimatedCoverage: 'Cobertura estimada', gapWords: 'Palabras que faltan', unknownPerHundred: 'Desconocidas por cada 100', coverageRoute: 'Ruta de lectura desde las palabras frecuentes hasta la cobertura independiente', nextCheckpoint: 'Siguiente hito', noMoreCheckpoints: 'Estás por encima del hito más alto de este modelo de planificación.', words: 'palabras', wordUnit: 'palabras', unknownWords: 'desconocidas', targetMarker: 'objetivo', coverageNote: 'La cobertura es la proporción de palabras consecutivas de un texto que reconoce tu vocabulario. No equivale a dominar el idioma ni a entender el mismo porcentaje del significado.', wordFamilyNote: 'La investigación suele contar familias de palabras, mientras que las apps pueden contar lemas o formas. Compara siempre la misma unidad.', contentTypeHelp: 'El género cambia el umbral: las conversaciones repiten palabras frecuentes y las novelas, el trabajo o el estudio añaden vocabulario menos frecuente y especializado.', interpretationTitle: 'Cómo usar el mapa', actionBelow: 'Crea una lista enfocada a partir de conversaciones, libros o documentos reales y aprende las palabras recurrentes dentro de frases.', actionAt: 'Toma una página o transcripción de tu género objetivo y añade las palabras desconocidas que se repitan.', actionBuffer: 'Cambia las palabras aisladas por frases, colocaciones y vocabulario especializado que exija tu próximo texto.' };
6
+ const faq = [{ question: '¿Qué estima la calculadora de cobertura léxica?', answer: 'Estima un tamaño de vocabulario útil para conversaciones, medios, novelas, trabajo o estudio en bandas del 80 %, 90 %, 95 % y 98 %, y muestra el siguiente hito.' }, { question: '¿Por qué una novela necesita más palabras que una conversación?', answer: 'El habla cotidiana reutiliza un núcleo frecuente. Las novelas y los textos profesionales incorporan más vocabulario poco frecuente, temático y formulaico, así que la misma cifra cubre menos texto.' }, { question: '¿El 80 % de cobertura significa entender el 80 % del significado?', answer: 'No. Indica aproximadamente qué parte de las palabras consecutivas reconoce tu vocabulario. Las palabras clave, la gramática, el conocimiento previo, la pronunciación y la velocidad también importan.' }, { question: '¿Debo contar palabras, lemas o familias?', answer: 'Elige una unidad y úsala siempre. La investigación suele informar de familias de palabras, mientras que las apps pueden contar lemas o formas. No son cifras intercambiables.' }, { question: '¿Qué hago con la brecha?', answer: 'Extrae muestras cortas del género que quieres leer o escuchar, conserva las palabras que se repiten y estúdialas en frases. Después vuelve a comprobar una muestra parecida.' }];
7
+ const howTo = [{ name: 'Elige el contenido', text: 'Selecciona el tipo de conversación o texto que quieres entender a continuación.' }, { name: 'Introduce tu vocabulario', text: 'Escribe una estimación coherente de las palabras, lemas o familias que reconoces.' }, { name: 'Fija la cobertura', text: 'Elige una banda desde el primer paso hasta la lectura independiente.' }, { name: 'Usa la brecha', text: 'Convierte la brecha y el siguiente hito en una lista extraída de contenido real.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Calculadora de cobertura léxica y vocabulario', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/es/calculadora-cobertura-lexica-vocabulario' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Estimar el vocabulario necesario según el contenido', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'calculadora-cobertura-lexica-vocabulario', title: 'Calculadora de cobertura léxica y vocabulario', description: 'Calcula el vocabulario necesario para conversaciones, novelas, trabajo, medios y estudio según una cobertura comprensible.', ui, seo: [{ type: 'title', text: 'Planifica tu vocabulario según el contenido', level: 2 }, { type: 'paragraph', html: 'Un núcleo pequeño de palabras frecuentes puede abrir una conversación, pero no cubre una novela o un texto profesional con la misma eficacia. Esta calculadora conecta el género que quieres entender con una cifra concreta y un siguiente hito.' }, { type: 'title', text: 'Qué mide la cobertura léxica', level: 2 }, { type: 'paragraph', html: 'La cobertura léxica es la proporción de palabras consecutivas de una muestra que reconoce tu vocabulario. Las bandas del 80 %, 90 %, 95 % y 98 % sirven para planificar, no son un examen ni garantizan comprender todo el contenido.' }, { type: 'title', text: 'Por qué cambia la cifra según el género', level: 2 }, { type: 'table', headers: ['Contenido', 'Banda del 80 %', 'Banda del 95 %', 'Qué se añade'], rows: [['Conversación casual', '2.000 palabras', '4.500 palabras', 'Rutinas y expresiones frecuentes'], ['Películas y series', '3.000 palabras', '6.000 palabras', 'Diálogo, jerga y cambios de tema'], ['Novelas', '5.000 palabras', '8.000 palabras', 'Narración, descripción y términos de género'], ['Negocios y trabajo', '5.000 palabras', '8.000 palabras', 'Frases profesionales y terminología del sector'], ['Textos académicos', '6.000 palabras', '10.000 palabras', 'Vocabulario abstracto y disciplinar']] }, { type: 'title', text: 'Convierte la brecha en una decisión de estudio', level: 2 }, { type: 'paragraph', html: 'Si estás por debajo de la banda, no respondas acumulando palabras al azar. Toma una muestra breve del contenido real, conserva lo que se repita o bloquee el significado y estúdialo dentro de frases.' }, { type: 'list', items: ['Elige el género de tu próxima tarea real.', 'Cuenta siempre la misma unidad.', 'Prioriza las palabras que reaparecen en varias muestras.', 'Vuelve a probar el mismo tipo de contenido después de estudiar.'] }, { type: 'tip', title: 'Evidencia y límites', html: 'La referencia de 2.000 palabras al 80 % procede de investigaciones sobre frecuencia y cobertura textual. Las cifras escritas más altas cambian según el corpus y el género. La lengua, la morfología, los nombres propios, el conocimiento del tema, la gramática y la velocidad siguen afectando a la comprensión.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,53 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = {
6
+ contentType: 'Que voulez-vous comprendre?', conversation: 'Conversation courante', travel: 'Voyage et vie quotidienne', media: 'Films et séries', generalReading: 'Lecture générale', novels: 'Romans', business: 'Travail et affaires', academic: 'Textes universitaires', knownWords: 'Mots que vous connaissez déjà', knownWordsHint: 'Utilisez une estimation réfléchie. Comptez toujours les familles, lemmes ou formes avec la même unité.', targetCoverage: 'Couverture souhaitée', coverage80: 'Commencer', coverage90: 'Suivre le fil', coverage95: 'Lire avec aide', coverage98: 'Lire en autonomie', resetButton: 'Réinitialiser', quickStart: 'Démarrages rapides', conversationPreset: 'Conversation', readingPreset: 'Roman', workPreset: 'Travail', resultTitle: 'Votre carte de vocabulaire', emptyResult: 'Choisissez un type de contenu et indiquez votre vocabulaire connu pour voir le prochain objectif utile.', checkInputs: 'Vérifiez vos données', invalidWords: 'Saisissez entre 0 et 50 000 mots connus.', invalidContentType: 'Choisissez un type de contenu disponible.', invalidCoverage: 'Choisissez un objectif entre 80 % et 98 %.', belowTarget: "Vous êtes sous la bande choisie. L'écart est votre prochain projet de vocabulaire.", atTarget: 'Vous avez atteint la bande de planification choisie. Gardez le vocabulaire spécialisé à portée de main.', buffer: "Vous disposez d'une marge utile pour ce contenu. Vérifiez maintenant des textes réels de votre domaine.", recommendedWords: 'Mots pour votre objectif', vocabularyKnown: 'Mots comptés', estimatedCoverage: 'Couverture estimée', gapWords: 'Mots manquants', unknownPerHundred: 'Inconnus pour 100', coverageRoute: 'Parcours de lecture des mots fréquents vers la lecture autonome', nextCheckpoint: 'Prochaine étape', noMoreCheckpoints: 'Vous dépassez la dernière étape de ce modèle de planification.', words: 'mots', wordUnit: 'mots', unknownWords: 'inconnus', targetMarker: 'objectif', coverageNote: "La couverture est la part des mots courants d'un texte que votre vocabulaire reconnaît. Elle ne mesure pas à elle seule la maîtrise de la langue ni la compréhension du sens.", wordFamilyNote: 'La recherche compte souvent les familles de mots, tandis que les applications comptent les lemmes ou les formes. Comparez la même unité.', contentTypeHelp: 'Le genre change le seuil: les conversations réutilisent des mots fréquents, tandis que les romans, le travail et les études ajoutent des termes rares ou spécialisés.', interpretationTitle: 'Comment utiliser la carte', actionBelow: 'Créez une liste ciblée à partir de conversations, livres ou documents réels et apprenez les mots récurrents dans des phrases.', actionAt: 'Prenez une page ou une transcription de votre genre cible et ajoutez les mots inconnus qui reviennent.', actionBuffer: 'Remplacez les mots isolés par des expressions, des collocations et le vocabulaire spécialisé exigé par votre prochain texte.',
7
+ };
8
+
9
+ const faq = [
10
+ { question: 'Que mesure le calculateur de couverture lexicale?', answer: 'Il estime une taille de vocabulaire utile pour les conversations, les médias, les romans, le travail ou les études avec des bandes de 80 %, 90 %, 95 % et 98 %, puis indique la prochaine étape.' },
11
+ { question: "Pourquoi un roman demande-t-il plus de mots qu'une conversation?", answer: 'La langue quotidienne réutilise un noyau fréquent. Les romans et les textes professionnels ajoutent davantage de vocabulaire rare, thématique et figé, donc le même nombre de mots couvre moins de texte.' },
12
+ { question: '80 % de couverture signifie-t-il comprendre 80 % du sens?', answer: 'Non. Cela indique la part approximative des mots courants reconnus. Les mots clés, la grammaire, les connaissances antérieures, la prononciation et la vitesse jouent aussi un rôle.' },
13
+ { question: 'Dois-je compter des mots, des lemmes ou des familles?', answer: 'Choisissez une unité et gardez-la. La recherche rapporte souvent des familles de mots, alors que les applications peuvent compter des lemmes ou des formes. Ces nombres ne sont pas interchangeables.' },
14
+ { question: "Que faire de l'écart?", answer: 'Prélevez de courts échantillons dans le genre visé, gardez les mots récurrents et apprenez-les dans des expressions. Testez ensuite un échantillon comparable.' },
15
+ ];
16
+
17
+ const howTo = [
18
+ { name: 'Choisir le contenu', text: 'Sélectionnez le profil qui correspond aux conversations, médias, livres ou documents que vous voulez comprendre.' },
19
+ { name: 'Indiquer le vocabulaire connu', text: 'Ajoutez une estimation cohérente des mots, lemmes ou familles de mots que vous reconnaissez.' },
20
+ { name: 'Définir la couverture', text: 'Choisissez une bande adaptée à votre usage, du démarrage à la lecture autonome.' },
21
+ { name: "Agir sur l'écart", text: 'Utilisez la prochaine étape pour créer une liste ciblée à partir de contenus authentiques du genre choisi.' },
22
+ ];
23
+
24
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Calculateur de couverture lexicale et de vocabulaire', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/fr/calculateur-couverture-lexicale-vocabulaire' };
25
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Estimer le vocabulaire nécessaire pour un type de contenu', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
26
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
27
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
28
+
29
+ export const content: ToolLocaleContent<LexicalCoverageUI> = {
30
+ slug: 'calculateur-couverture-lexicale-vocabulaire',
31
+ title: 'Calculateur de couverture lexicale et de vocabulaire',
32
+ description: 'Estimez le vocabulaire nécessaire pour les conversations, romans, médias, travail et études selon une couverture cible.',
33
+ ui,
34
+ seo: [
35
+ { type: 'title', text: 'Planifier son vocabulaire selon le contenu', level: 2 },
36
+ { type: 'paragraph', html: 'Un petit noyau de mots fréquents peut ouvrir une conversation, mais il ne couvre pas un roman ou un texte professionnel avec la même efficacité. Ce calculateur relie votre genre cible à un nombre concret de mots et à une prochaine étape.' },
37
+ { type: 'title', text: 'Ce que mesure la couverture lexicale', level: 2 },
38
+ { type: 'paragraph', html: "La couverture lexicale est la part des mots courants d'un échantillon reconnue par votre vocabulaire. Les bandes de 80 %, 90 %, 95 % et 98 % servent à planifier; elles ne constituent ni un examen ni une garantie de compréhension complète." },
39
+ { type: 'title', text: 'Pourquoi le genre change le nombre', level: 2 },
40
+ { type: 'table', headers: ['Contenu', 'Bande à 80 %', 'Bande à 95 %', "Ce qui s'ajoute"], rows: [['Conversation courante', '2 000 mots', '4 500 mots', 'Routines et expressions fréquentes'], ['Films et séries', '3 000 mots', '6 000 mots', 'Dialogue, argot et changements de thème'], ['Romans', '5 000 mots', '8 000 mots', 'Récit, description et termes de genre'], ['Travail et affaires', '5 000 mots', '8 000 mots', 'Formules professionnelles et termes du domaine'], ['Textes universitaires', '6 000 mots', '10 000 mots', 'Vocabulaire abstrait et spécialisé']] },
41
+ { type: 'title', text: "Transformer l'écart en décision d'apprentissage", level: 2 },
42
+ { type: 'paragraph', html: "Si vous êtes sous la bande choisie, n'accumulez pas des mots au hasard. Prenez un court échantillon réel, gardez les mots qui reviennent ou bloquent le sens et apprenez-les dans des expressions." },
43
+ { type: 'list', items: ['Choisissez le genre de votre prochaine tâche réelle.', 'Comptez toujours la même unité.', 'Priorisez les mots récurrents dans plusieurs échantillons.', 'Testez à nouveau le même genre après vos révisions.'] },
44
+ { type: 'tip', title: 'Sources et limites', html: 'La référence de 2 000 mots à 80 % vient de travaux sur la fréquence et la couverture des textes. Les valeurs écrites supérieures varient selon le corpus et le genre. La langue, la morphologie, les noms propres, les connaissances du sujet, la grammaire et la vitesse restent déterminants.' },
45
+ ],
46
+ faq,
47
+ bibliography: [
48
+ { name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' },
49
+ { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' },
50
+ ],
51
+ howTo,
52
+ schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)],
53
+ };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: 'Apa yang ingin Anda pahami?', conversation: 'Percakapan sehari-hari', travel: 'Perjalanan dan kehidupan harian', media: 'Film dan serial', generalReading: 'Bacaan umum', novels: 'Novel', business: 'Bisnis dan pekerjaan', academic: 'Teks akademik', knownWords: 'Kata yang sudah Anda kenal', knownWordsHint: 'Gunakan perkiraan yang masuk akal. Hitung keluarga kata, lema, atau bentuk dengan cara yang konsisten.', targetCoverage: 'Cakupan yang diinginkan', coverage80: 'Mulai memahami', coverage90: 'Mengikuti alur', coverage95: 'Membaca dengan bantuan', coverage98: 'Membaca mandiri', resetButton: 'Atur ulang', quickStart: 'Mulai cepat', conversationPreset: 'Percakapan', readingPreset: 'Novel', workPreset: 'Pekerjaan', resultTitle: 'Peta kosakata Anda', emptyResult: 'Pilih jenis konten dan masukkan kosakata yang Anda kenal untuk melihat langkah berikutnya.', checkInputs: 'Periksa masukan', invalidWords: 'Masukkan 0 hingga 50.000 kata yang dikenal.', invalidContentType: 'Pilih salah satu jenis konten yang tersedia.', invalidCoverage: 'Pilih target antara 80% dan 98%.', belowTarget: 'Anda berada di bawah tingkat cakupan yang dipilih. Selisihnya adalah proyek kosakata berikutnya.', atTarget: 'Anda telah mencapai tingkat perencanaan yang dipilih. Siapkan kosakata khusus topik.', buffer: 'Anda memiliki cadangan yang berguna untuk konten ini. Uji sekarang teks nyata dari bidang sasaran Anda.', recommendedWords: 'Kata untuk target', vocabularyKnown: 'Kata yang dihitung', estimatedCoverage: 'Cakupan perkiraan', gapWords: 'Kata menuju target', unknownPerHundred: 'Tidak dikenal per 100', coverageRoute: 'Jalur membaca dari kata umum menuju cakupan mandiri', nextCheckpoint: 'Langkah berikutnya', noMoreCheckpoints: 'Anda sudah melewati langkah tertinggi dalam model ini.', words: 'kata', wordUnit: 'kata', unknownWords: 'tidak dikenal', targetMarker: 'target', coverageNote: 'Cakupan adalah bagian kata dalam teks yang dikenali oleh kosakata Anda. Ini bukan ukuran penguasaan bahasa atau persentase makna yang pasti dipahami.', wordFamilyNote: 'Penelitian sering menghitung keluarga kata, sedangkan aplikasi dapat menghitung lema atau bentuk. Gunakan satuan yang sama saat membandingkan.', contentTypeHelp: 'Genre mengubah ambang: percakapan mengulang kata umum, sedangkan novel, pekerjaan, dan studi menambah kata yang lebih jarang dan khusus.', interpretationTitle: 'Cara menggunakan peta', actionBelow: 'Buat daftar terarah dari percakapan, buku, atau dokumen kerja nyata dan pelajari kata berulang dalam frasa.', actionAt: 'Ambil halaman atau transkrip dari genre sasaran dan tambahkan kata tidak dikenal yang muncul kembali.', actionBuffer: 'Ganti kata terpisah dengan frasa, kolokasi, dan kosakata khusus yang diperlukan teks berikutnya.' };
6
+ const faq = [{ question: 'Apa yang dihitung kalkulator cakupan leksikal?', answer: 'Kalkulator memperkirakan ukuran kosakata yang berguna untuk percakapan, media, novel, pekerjaan, atau studi pada cakupan 80%, 90%, 95%, dan 98%, lalu menunjukkan langkah berikutnya.' }, { question: 'Mengapa novel membutuhkan lebih banyak kata daripada percakapan?', answer: 'Bahasa sehari-hari memakai kembali inti kata yang sering muncul. Novel dan teks profesional menambahkan kata yang jarang, khusus topik, dan berbentuk tetap sehingga jumlah kata yang sama mencakup lebih sedikit teks.' }, { question: 'Apakah cakupan 80% berarti memahami 80% makna?', answer: 'Tidak. Angka itu menunjukkan perkiraan bagian kata yang dikenali. Kata kunci, tata bahasa, pengetahuan latar, pelafalan, dan kecepatan juga memengaruhi pemahaman.' }, { question: 'Haruskah saya menghitung kata, lema, atau keluarga kata?', answer: 'Pilih satu satuan dan gunakan secara konsisten. Penelitian sering melaporkan keluarga kata, sedangkan aplikasi dapat melaporkan lema atau bentuk. Angka tersebut tidak dapat ditukar begitu saja.' }, { question: 'Apa yang harus dilakukan dengan selisihnya?', answer: 'Ambil sampel pendek dari genre sasaran, simpan kata yang berulang, dan pelajari dalam frasa. Setelah itu, periksa sampel sejenis lagi.' }];
7
+ const howTo = [{ name: 'Pilih konten', text: 'Pilih jenis percakapan atau teks yang ingin Anda pahami berikutnya.' }, { name: 'Perkirakan kosakata', text: 'Masukkan perkiraan konsisten untuk kata, lema, atau keluarga kata yang Anda kenali.' }, { name: 'Tetapkan cakupan', text: 'Pilih tingkat perencanaan dari mulai memahami hingga membaca mandiri.' }, { name: 'Gunakan selisih', text: 'Gunakan selisih dan langkah berikutnya untuk membuat daftar dari konten nyata.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Kalkulator cakupan leksikal dan kosakata', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/id/kalkulator-cakupan-leksikal-kosakata' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Memperkirakan kosakata yang diperlukan berdasarkan konten', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'kalkulator-cakupan-leksikal-kosakata', title: 'Kalkulator cakupan leksikal dan kosakata', description: 'Perkirakan kosakata yang diperlukan untuk percakapan, novel, pekerjaan, media, dan studi berdasarkan target cakupan.', ui, seo: [{ type: 'title', text: 'Rencanakan kosakata berdasarkan konten', level: 2 }, { type: 'paragraph', html: 'Inti kecil kata yang sering muncul dapat membuka percakapan, tetapi tidak mencakup novel atau teks profesional dengan cara yang sama. Kalkulator ini menghubungkan genre sasaran dengan jumlah kata yang konkret dan langkah berikutnya.' }, { type: 'title', text: 'Apa yang diukur cakupan leksikal', level: 2 }, { type: 'paragraph', html: 'Cakupan leksikal adalah bagian kata dalam sampel yang dikenali oleh kosakata Anda. Tingkat 80%, 90%, 95%, dan 98% adalah tingkat perencanaan, bukan ujian dan bukan jaminan pemahaman penuh.' }, { type: 'title', text: 'Mengapa genre mengubah jumlahnya', level: 2 }, { type: 'table', headers: ['Konten', 'Tingkat 80%', 'Tingkat 95%', 'Tambahan umum'], rows: [['Percakapan sehari-hari', '2.000 kata', '4.500 kata', 'Rutinitas dan ungkapan umum'], ['Film dan serial', '3.000 kata', '6.000 kata', 'Dialog, bahasa gaul, dan perubahan topik'], ['Novel', '5.000 kata', '8.000 kata', 'Narasi, deskripsi, dan istilah genre'], ['Bisnis dan pekerjaan', '5.000 kata', '8.000 kata', 'Istilah profesional dan bidang kerja'], ['Teks akademik', '6.000 kata', '10.000 kata', 'Kosakata abstrak dan khusus disiplin']] }, { type: 'title', text: 'Ubah selisih menjadi keputusan belajar', level: 2 }, { type: 'paragraph', html: 'Jika Anda berada di bawah tingkat pilihan, jangan mengumpulkan kata secara acak. Ambil sampel singkat dari konten nyata, simpan kata yang berulang atau menghalangi makna, lalu pelajari dalam frasa.' }, { type: 'list', items: ['Pilih genre untuk tugas nyata berikutnya.', 'Gunakan satu satuan hitung secara konsisten.', 'Utamakan kata yang muncul kembali di beberapa sampel.', 'Uji genre yang sama lagi setelah belajar.'] }, { type: 'tip', title: 'Bukti dan batasan', html: 'Rujukan 2.000 kata pada cakupan 80% berasal dari penelitian frekuensi kata dan cakupan teks. Angka yang lebih tinggi berbeda menurut korpus dan genre. Bahasa, morfologi, nama diri, pengetahuan topik, tata bahasa, dan kecepatan tetap memengaruhi pemahaman.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: 'Che cosa vuoi capire?', conversation: 'Conversazione quotidiana', travel: 'Viaggi e vita di tutti i giorni', media: 'Film e serie', generalReading: 'Lettura generale', novels: 'Romanzi', business: 'Lavoro e affari', academic: 'Testi accademici', knownWords: 'Parole che conosci già', knownWordsHint: 'Usa una stima ragionata. Conta famiglie di parole, lemmi o forme in modo coerente.', targetCoverage: 'Copertura desiderata', coverage80: 'Iniziare', coverage90: 'Seguire il filo', coverage95: 'Leggere con supporto', coverage98: 'Leggere in autonomia', resetButton: 'Reimposta', quickStart: 'Avvii rapidi', conversationPreset: 'Conversazione', readingPreset: 'Romanzo', workPreset: 'Lavoro', resultTitle: 'La tua mappa del vocabolario', emptyResult: 'Scegli un contenuto e inserisci il vocabolario conosciuto per vedere il prossimo traguardo utile.', checkInputs: 'Controlla i dati', invalidWords: 'Inserisci da 0 a 50.000 parole conosciute.', invalidContentType: 'Scegli un tipo di contenuto disponibile.', invalidCoverage: 'Scegli un obiettivo tra l 80% e il 98%.', belowTarget: 'Sei sotto la fascia scelta. Il divario è il tuo prossimo progetto di vocabolario.', atTarget: 'Hai raggiunto la fascia di pianificazione scelta. Tieni a portata di mano i termini specifici.', buffer: 'Hai un margine utile per questo contenuto. Verifica ora testi reali del tuo ambito.', recommendedWords: 'Parole per il tuo obiettivo', vocabularyKnown: 'Parole contate', estimatedCoverage: 'Copertura stimata', gapWords: 'Parole mancanti', unknownPerHundred: 'Sconosciute ogni 100', coverageRoute: 'Percorso di lettura dalle parole frequenti alla lettura autonoma', nextCheckpoint: 'Prossimo traguardo', noMoreCheckpoints: 'Sei oltre il traguardo più alto di questo modello.', words: 'parole', wordUnit: 'parole', unknownWords: 'sconosciute', targetMarker: 'obiettivo', coverageNote: 'La copertura è la parte delle parole correnti di un testo riconosciuta dal tuo vocabolario. Non equivale alla padronanza completa né alla percentuale di significato compresa.', wordFamilyNote: 'La ricerca conta spesso famiglie di parole, mentre le app possono contare lemmi o forme. Confronta sempre la stessa unità.', contentTypeHelp: 'Il genere cambia la soglia: le conversazioni riusano parole frequenti, mentre romanzi, lavoro e studio aggiungono termini meno frequenti e specialistici.', interpretationTitle: 'Come usare la mappa', actionBelow: 'Crea una lista mirata da conversazioni, libri o documenti reali e impara le parole ricorrenti dentro frasi.', actionAt: 'Prendi una pagina o una trascrizione del genere scelto e aggiungi le parole sconosciute che ricompaiono.', actionBuffer: 'Sostituisci le parole isolate con frasi, collocazioni e vocabolario specialistico richiesto dal prossimo testo.' };
6
+ const faq = [{ question: 'Che cosa stima il calcolatore della copertura lessicale?', answer: 'Stima una dimensione utile del vocabolario per conversazioni, media, romanzi, lavoro o studio alle soglie dell 80%, 90%, 95% e 98%, indicando il prossimo traguardo.' }, { question: 'Perché un romanzo richiede più parole di una conversazione?', answer: 'La lingua quotidiana riusa un nucleo frequente. Romanzi e testi professionali aggiungono parole rare, tematiche e formule fisse, quindi lo stesso numero copre meno testo.' }, { question: 'Una copertura dell 80% significa capire l 80% del significato?', answer: 'No. Indica la parte approssimativa delle parole riconosciute. Parole chiave, grammatica, conoscenze pregresse, pronuncia e velocità influenzano anch esse la comprensione.' }, { question: 'Devo contare parole, lemmi o famiglie?', answer: 'Scegli un unità e mantienila. La ricerca usa spesso famiglie di parole, mentre le app possono usare lemmi o forme. I numeri non sono intercambiabili.' }, { question: 'Che cosa faccio con il divario?', answer: 'Prendi brevi campioni dal genere scelto, conserva le parole ricorrenti e studiale in espressioni. Poi prova di nuovo un campione simile.' }];
7
+ const howTo = [{ name: 'Scegli il contenuto', text: 'Seleziona il tipo di conversazione o testo che vuoi capire dopo.' }, { name: 'Stima il vocabolario', text: 'Inserisci una stima coerente delle parole, dei lemmi o delle famiglie che riconosci.' }, { name: 'Imposta la copertura', text: 'Scegli una fascia dall avvio alla lettura autonoma.' }, { name: 'Usa il divario', text: 'Trasforma il divario e il prossimo traguardo in una lista presa da contenuti reali.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Calcolatore di copertura lessicale e vocabolario', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/it/calcolatore-copertura-lessicale-vocabolario' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Stimare il vocabolario necessario in base al contenuto', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'calcolatore-copertura-lessicale-vocabolario', title: 'Calcolatore di copertura lessicale e vocabolario', description: 'Stima il vocabolario necessario per conversazioni, romanzi, lavoro, media e studio in base alla copertura desiderata.', ui, seo: [{ type: 'title', text: 'Pianifica il vocabolario in base al contenuto', level: 2 }, { type: 'paragraph', html: 'Un piccolo nucleo di parole frequenti può aprire una conversazione, ma non copre un romanzo o un testo professionale allo stesso modo. Questo calcolatore collega il genere scelto a un numero concreto e a un prossimo traguardo.' }, { type: 'title', text: 'Che cosa misura la copertura lessicale', level: 2 }, { type: 'paragraph', html: 'La copertura lessicale è la parte delle parole correnti di un campione riconosciuta dal tuo vocabolario. Le fasce dell 80%, 90%, 95% e 98% servono per pianificare, non sono un esame né una garanzia di comprensione completa.' }, { type: 'title', text: 'Perché il genere cambia il numero', level: 2 }, { type: 'table', headers: ['Contenuto', 'Fascia all 80%', 'Fascia al 95%', 'Che cosa si aggiunge'], rows: [['Conversazione quotidiana', '2.000 parole', '4.500 parole', 'Routine ed espressioni frequenti'], ['Film e serie', '3.000 parole', '6.000 parole', 'Dialoghi, gergo e cambi di tema'], ['Romanzi', '5.000 parole', '8.000 parole', 'Narrazione, descrizione e termini di genere'], ['Lavoro e affari', '5.000 parole', '8.000 parole', 'Formule professionali e termini del settore'], ['Testi accademici', '6.000 parole', '10.000 parole', 'Lessico astratto e specialistico']] }, { type: 'title', text: 'Trasforma il divario in una decisione di studio', level: 2 }, { type: 'paragraph', html: 'Se sei sotto la fascia scelta, non accumulare parole a caso. Prendi un breve campione reale, conserva le parole ricorrenti o decisive per il senso e imparale dentro espressioni.' }, { type: 'list', items: ['Scegli il genere della prossima attività reale.', 'Conta sempre la stessa unità.', 'Dai priorità alle parole che ricompaiono.', 'Verifica di nuovo lo stesso genere dopo lo studio.'] }, { type: 'tip', title: 'Fonti e limiti', html: 'Il riferimento di 2.000 parole all 80% deriva da studi sulla frequenza e sulla copertura dei testi. I valori scritti più alti variano per corpus e genere. Lingua, morfologia, nomi propri, conoscenze dell argomento, grammatica e velocità restano fattori importanti.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: '何を理解したいですか?', conversation: '日常会話', travel: '旅行と日常生活', media: '映画とシリーズ', generalReading: '一般的な読書', novels: '小説', business: '仕事とビジネス', academic: '学術文書', knownWords: 'すでに知っている単語', knownWordsHint: '無理のない推定値を使い、語族、レンマ、語形のどれを数えるかを統一してください。', targetCoverage: '目標とするカバー率', coverage80: 'まず始める', coverage90: '流れを追う', coverage95: '支援付きで読む', coverage98: '自力で読む', resetButton: 'リセット', quickStart: 'クイックスタート', conversationPreset: '会話', readingPreset: '小説', workPreset: '仕事', resultTitle: '語彙マップ', emptyResult: '内容の種類と知っている語彙を入力すると、次の実用的な目標が表示されます。', checkInputs: '入力を確認してください', invalidWords: '知っている単語数を0から50,000の範囲で入力してください。', invalidContentType: '利用できる内容の種類を選んでください。', invalidCoverage: '80%から98%の目標を選んでください。', belowTarget: '選んだカバー率に届いていません。不足分が次の語彙プロジェクトです。', atTarget: '選んだ計画上の水準に到達しています。分野固有の語彙を手元に置きましょう。', buffer: 'この内容には十分な余裕があります。実際の対象テキストで確認してみましょう。', recommendedWords: '目標に必要な単語', vocabularyKnown: '数えた単語', estimatedCoverage: '推定カバー率', gapWords: '目標までの単語', unknownPerHundred: '100語あたりの未知語', coverageRoute: '頻出語から自立した読解までのルート', nextCheckpoint: '次のチェックポイント', noMoreCheckpoints: 'この計画モデルの最高チェックポイントを超えています。', words: '語', wordUnit: '語', unknownWords: '未知語', targetMarker: '目標', coverageNote: 'カバー率は、文章中の連続する語のうち、知っている語彙で認識できる割合です。言語の習熟度や意味の理解率そのものではありません。', wordFamilyNote: '研究では語族を数えることが多く、アプリではレンマや語形を数える場合があります。同じ単位で比較してください。', contentTypeHelp: 'ジャンルによって必要な水準は変わります。会話は頻出語を繰り返し、小説や仕事、学習では低頻度で専門的な語が増えます。', interpretationTitle: 'マップの使い方', actionBelow: '実際の会話、読書、仕事の文書から繰り返し出る語を選び、フレーズで学びましょう。', actionAt: '対象ジャンルのページや書き起こしを確認し、繰り返し現れる未知語を追加しましょう。', actionBuffer: '単語だけでなく、次の文章に必要なフレーズ、コロケーション、専門語彙を集めましょう。' };
6
+ const faq = [{ question: '語彙カバー率計算機は何を推定しますか?', answer: '会話、メディア、小説、仕事、学習に対して、80%、90%、95%、98%のカバー率を目安にした語彙量と次のチェックポイントを推定します。' }, { question: 'なぜ小説には会話より多くの語彙が必要ですか?', answer: '日常会話は頻出語を繰り返します。小説や専門文書には低頻度語、分野語、定型表現が増えるため、同じ語数でカバーできる文章が少なくなります。' }, { question: '80%のカバー率なら意味の80%が分かりますか?', answer: 'いいえ。認識できる連続語の割合を示す目安です。重要語、文法、背景知識、発音、速度も理解に影響します。' }, { question: '単語、レンマ、語族のどれを数えるべきですか?', answer: '一つの単位を選んで統一してください。研究は語族、アプリはレンマや語形を使うことがあり、数字をそのまま交換することはできません。' }, { question: '不足分はどう使えばよいですか?', answer: '対象ジャンルから短いサンプルを取り、繰り返し出る語をフレーズで学び、似たサンプルでもう一度確認してください。' }];
7
+ const howTo = [{ name: '内容を選ぶ', text: '次に理解したい会話や文章の種類を選びます。' }, { name: '語彙量を入力する', text: '認識できる単語、レンマ、語族の一貫した推定値を入力します。' }, { name: 'カバー率を決める', text: '最初の理解から自立した読解まで、必要な水準を選びます。' }, { name: '不足分を使う', text: '不足分と次の目標を、実際の内容から作る学習リストに変えます。' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: '語彙カバー率計算機', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/ja/lexical-coverage-vocabulary-calculator' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: '内容別に必要な語彙量を推定する', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'lexical-coverage-vocabulary-calculator', title: '語彙カバー率計算機', description: '会話、小説、仕事、メディア、学習を理解するために必要な語彙量をカバー率から推定します。', ui, seo: [{ type: 'title', text: '内容に合わせて語彙量を計画する', level: 2 }, { type: 'paragraph', html: '頻出語の小さな核は会話への入口になりますが、小説や専門文書を同じようにカバーすることはできません。この計算機は目的のジャンルを具体的な語数と次の目標に結び付けます。' }, { type: 'title', text: '語彙カバー率が示すもの', level: 2 }, { type: 'paragraph', html: '語彙カバー率は、サンプル中の語のうち既知の語彙で認識できる割合です。80%、90%、95%、98%は計画の目安であり、試験や完全な理解の保証ではありません。' }, { type: 'title', text: 'ジャンルで必要な語数が変わる理由', level: 2 }, { type: 'table', headers: ['内容', '80%の目安', '95%の目安', '増える要素'], rows: [['日常会話', '2,000語', '4,500語', '定型表現と頻出語'], ['映画とシリーズ', '3,000語', '6,000語', '会話、俗語、話題の変化'], ['小説', '5,000語', '8,000語', '物語、描写、ジャンル語'], ['仕事とビジネス', '5,000語', '8,000語', '専門表現と分野語'], ['学術文書', '6,000語', '10,000語', '抽象語と専門用語']] }, { type: 'title', text: '不足分を学習の判断に変える', level: 2 }, { type: 'paragraph', html: '目標に届かないとき、単語を無作為に集めないでください。実際の文章から短いサンプルを取り、繰り返し出る語や意味を妨げる語をフレーズで学びます。' }, { type: 'list', items: ['次の現実の課題に合うジャンルを選ぶ。', '毎回同じ単位で数える。', '複数のサンプルで再出現する語を優先する。', '学習後に同じ種類の文章を再確認する。'] }, { type: 'tip', title: '根拠と限界', html: '80%で2,000語という目安は、語の頻度と文章カバー率に関する研究に基づきます。高い水準の値はコーパスとジャンルで変わります。言語、形態、固有名詞、背景知識、文法、速度も理解を左右します。' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: '무엇을 이해하고 싶나요?', conversation: '일상 대화', travel: '여행과 일상생활', media: '영화와 시리즈', generalReading: '일반 읽기', novels: '소설', business: '업무와 비즈니스', academic: '학술 텍스트', knownWords: '이미 아는 단어', knownWordsHint: '현실적인 추정치를 사용하고 단어 가족, 표제어, 형태 중 하나의 기준을 일관되게 세세요.', targetCoverage: '원하는 커버리지', coverage80: '시작하기', coverage90: '흐름 따라가기', coverage95: '도움을 받으며 읽기', coverage98: '독립적으로 읽기', resetButton: '초기화', quickStart: '빠른 시작', conversationPreset: '대화', readingPreset: '소설', workPreset: '업무', resultTitle: '어휘 지도', emptyResult: '콘텐츠 유형과 아는 어휘를 입력하면 다음 학습 목표가 표시됩니다.', checkInputs: '입력을 확인하세요', invalidWords: '아는 단어를 0에서 50,000 사이로 입력하세요.', invalidContentType: '사용 가능한 콘텐츠 유형을 선택하세요.', invalidCoverage: '80%에서 98% 사이의 목표를 선택하세요.', belowTarget: '선택한 커버리지에 아직 도달하지 않았습니다. 부족한 양이 다음 어휘 프로젝트입니다.', atTarget: '선택한 계획 수준에 도달했습니다. 주제별 어휘를 가까이 두세요.', buffer: '이 콘텐츠 유형에서는 여유가 있습니다. 실제 목표 텍스트로 확인해 보세요.', recommendedWords: '목표에 필요한 단어', vocabularyKnown: '계산한 단어', estimatedCoverage: '예상 커버리지', gapWords: '목표까지 남은 단어', unknownPerHundred: '100단어당 모르는 단어', coverageRoute: '빈도가 높은 단어에서 독립 읽기까지의 경로', nextCheckpoint: '다음 체크포인트', noMoreCheckpoints: '이 계획 모델의 가장 높은 체크포인트를 넘었습니다.', words: '단어', wordUnit: '단어', unknownWords: '모름', targetMarker: '목표', coverageNote: '커버리지는 텍스트의 연속 어절 가운데 알고 있는 어휘로 인식할 수 있는 비율입니다. 언어 숙달도나 이해한 의미의 비율과 같지 않습니다.', wordFamilyNote: '연구는 단어 가족을, 앱은 표제어나 형태를 세기도 합니다. 비교할 때 같은 단위를 사용하세요.', contentTypeHelp: '장르에 따라 기준이 달라집니다. 대화는 빈도가 높은 단어를 반복하지만 소설, 업무, 학술 텍스트는 더 드물고 전문적인 단어를 추가합니다.', interpretationTitle: '지도 활용법', actionBelow: '실제 대화, 책, 업무 문서에서 반복되는 단어를 골라 표현 단위로 학습하세요.', actionAt: '목표 장르의 페이지나 대본을 살펴보고 반복되는 모르는 단어를 추가하세요.', actionBuffer: '단일 단어보다 다음 텍스트에 필요한 표현, 연어, 전문 어휘를 모으세요.' };
6
+ const faq = [{ question: '어휘 커버리지 계산기는 무엇을 추정하나요?', answer: '대화, 미디어, 소설, 업무, 학술 텍스트에 대해 80%, 90%, 95%, 98% 커버리지를 계획 기준으로 삼아 필요한 어휘량과 다음 체크포인트를 추정합니다.' }, { question: '왜 소설은 대화보다 더 많은 단어가 필요한가요?', answer: '일상 대화는 자주 쓰는 핵심 단어를 반복합니다. 소설과 전문 문서는 드문 단어, 주제어, 정형 표현이 많아 같은 단어 수로 덮을 수 있는 텍스트가 줄어듭니다.' }, { question: '80% 커버리지는 의미의 80%를 이해한다는 뜻인가요?', answer: '아닙니다. 인식 가능한 단어의 대략적인 비율입니다. 핵심 단어, 문법, 배경지식, 발음과 속도도 이해에 영향을 줍니다.' }, { question: '단어, 표제어, 단어 가족 중 무엇을 세야 하나요?', answer: '한 단위를 정해 계속 사용하세요. 연구는 단어 가족을, 앱은 표제어나 형태를 사용하기도 하므로 숫자를 그대로 바꿔 쓸 수 없습니다.' }, { question: '부족한 양은 어떻게 활용하나요?', answer: '목표 장르에서 짧은 샘플을 골라 반복되는 단어를 표현으로 학습한 다음 비슷한 샘플로 다시 확인하세요.' }];
7
+ const howTo = [{ name: '콘텐츠 선택', text: '다음에 이해하고 싶은 대화나 텍스트 유형을 선택합니다.' }, { name: '어휘량 입력', text: '인식할 수 있는 단어, 표제어, 단어 가족의 일관된 추정치를 입력합니다.' }, { name: '커버리지 설정', text: '시작 단계부터 독립 읽기까지 필요한 수준을 선택합니다.' }, { name: '차이 활용', text: '차이와 다음 목표를 실제 콘텐츠에서 뽑은 학습 목록으로 바꿉니다.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: '어휘 커버리지 계산기', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/ko/lexical-coverage-vocabulary-calculator' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: '콘텐츠 유형별 필요한 어휘량 추정하기', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'lexical-coverage-vocabulary-calculator', title: '어휘 커버리지 계산기', description: '대화, 소설, 업무, 미디어, 학술 텍스트를 이해하는 데 필요한 어휘량을 커버리지 기준으로 추정합니다.', ui, seo: [{ type: 'title', text: '콘텐츠에 맞춰 어휘량 계획하기', level: 2 }, { type: 'paragraph', html: '빈도가 높은 단어의 작은 핵심은 대화의 문을 열 수 있지만 소설이나 전문 문서를 같은 방식으로 덮지는 못합니다. 이 계산기는 목표 장르를 구체적인 단어 수와 다음 목표로 연결합니다.' }, { type: 'title', text: '어휘 커버리지가 측정하는 것', level: 2 }, { type: 'paragraph', html: '어휘 커버리지는 샘플 안에서 알고 있는 어휘로 인식할 수 있는 단어의 비율입니다. 80%, 90%, 95%, 98%는 계획 기준이며 시험이나 완전한 이해의 보장이 아닙니다.' }, { type: 'title', text: '장르에 따라 숫자가 달라지는 이유', level: 2 }, { type: 'table', headers: ['콘텐츠', '80% 기준', '95% 기준', '추가되는 요소'], rows: [['일상 대화', '2,000단어', '4,500단어', '반복되는 일상 표현'], ['영화와 시리즈', '3,000단어', '6,000단어', '대화, 속어, 주제 변화'], ['소설', '5,000단어', '8,000단어', '서사, 묘사, 장르 용어'], ['업무와 비즈니스', '5,000단어', '8,000단어', '전문 표현과 분야 용어'], ['학술 텍스트', '6,000단어', '10,000단어', '추상어와 학문별 용어']] }, { type: 'title', text: '차이를 학습 결정으로 바꾸기', level: 2 }, { type: 'paragraph', html: '선택한 기준에 못 미친다면 단어를 무작정 모으지 마세요. 실제 텍스트에서 짧은 샘플을 골라 반복되거나 의미를 막는 단어를 표현 단위로 학습하세요.' }, { type: 'list', items: ['다음 실제 과제에 맞는 장르를 고릅니다.', '항상 같은 단위로 셉니다.', '여러 샘플에서 다시 나오는 단어를 우선합니다.', '학습 후 같은 장르를 다시 확인합니다.'] }, { type: 'tip', title: '근거와 한계', html: '80%에서 2,000단어라는 기준은 단어 빈도와 텍스트 커버리지 연구에서 나옵니다. 더 높은 문어 기준은 말뭉치와 장르에 따라 달라집니다. 언어, 형태, 고유명사, 배경지식, 문법과 속도도 이해에 영향을 줍니다.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: 'Wat wil je begrijpen?', conversation: 'Alledaagse gesprekken', travel: 'Reizen en dagelijks leven', media: 'Films en series', generalReading: 'Algemeen lezen', novels: 'Romans', business: 'Werk en zaken', academic: 'Academische teksten', knownWords: 'Woorden die je al kent', knownWordsHint: 'Gebruik een onderbouwde schatting. Tel woordfamilies, lemma s of vormen steeds volgens dezelfde eenheid.', targetCoverage: 'Gewenste dekking', coverage80: 'Beginnen', coverage90: 'De draad volgen', coverage95: 'Met hulp lezen', coverage98: 'Zelfstandig lezen', resetButton: 'Resetten', quickStart: 'Snel starten', conversationPreset: 'Gesprek', readingPreset: 'Roman', workPreset: 'Werk', resultTitle: 'Je woordenschatkaart', emptyResult: 'Kies een inhoudstype en vul je bekende woordenschat in om de volgende nuttige mijlpaal te zien.', checkInputs: 'Controleer je invoer', invalidWords: 'Vul tussen 0 en 50.000 bekende woorden in.', invalidContentType: 'Kies een beschikbaar inhoudstype.', invalidCoverage: 'Kies een doel tussen 80% en 98%.', belowTarget: 'Je zit onder de gekozen dekkingsband. Het verschil is je volgende woordenschatproject.', atTarget: 'Je hebt de gekozen planningsband bereikt. Houd vakspecifieke woorden bij de hand.', buffer: 'Je hebt een bruikbare marge voor dit inhoudstype. Controleer nu echte teksten uit je doelgebied.', recommendedWords: 'Woorden voor je doel', vocabularyKnown: 'Getelde woorden', estimatedCoverage: 'Geschatte dekking', gapWords: 'Woorden tot je doel', unknownPerHundred: 'Onbekend per 100', coverageRoute: 'Leesroute van frequente woorden naar zelfstandig lezen', nextCheckpoint: 'Volgende mijlpaal', noMoreCheckpoints: 'Je zit boven de hoogste mijlpaal in dit planningsmodel.', words: 'woorden', wordUnit: 'woorden', unknownWords: 'onbekend', targetMarker: 'doel', coverageNote: 'Dekking is het aandeel lopende woorden in een tekst dat je woordenschat herkent. Het is niet hetzelfde als volledige taalbeheersing of begrip.', wordFamilyNote: 'Onderzoek telt vaak woordfamilies, terwijl apps lemma s of vormen tellen. Vergelijk daarom dezelfde eenheid.', contentTypeHelp: 'Het genre verandert de drempel: gesprekken herhalen frequente woorden, terwijl romans, werk en studie minder frequente en gespecialiseerde woorden toevoegen.', interpretationTitle: 'Zo gebruik je de kaart', actionBelow: 'Maak uit echte gesprekken, boeken of werkdocumenten een gerichte lijst en leer terugkerende woorden in zinnen.', actionAt: 'Bekijk een pagina of transcript uit je doelgenre en voeg terugkerende onbekende woorden toe.', actionBuffer: 'Verzamel naast losse woorden ook uitdrukkingen, collocaties en vaktaal voor je volgende tekst.' };
6
+ const faq = [{ question: 'Wat schat de calculator voor lexicale dekking?', answer: 'Hij schat een nuttige woordenschatgrootte voor gesprekken, media, romans, werk of studie bij 80%, 90%, 95% en 98% dekking en toont de volgende mijlpaal.' }, { question: 'Waarom vraagt een roman meer woorden dan een gesprek?', answer: 'Dagelijkse spreektaal hergebruikt een frequente kern. Romans en vakteksten bevatten meer zeldzame, thematische en vaste uitdrukkingen, waardoor hetzelfde aantal woorden minder tekst dekt.' }, { question: 'Betekent 80% dekking dat ik 80% van de betekenis begrijp?', answer: 'Nee. Het gaat om het geschatte aandeel herkende lopende woorden. Sleutelwoorden, grammatica, voorkennis, uitspraak en snelheid beïnvloeden begrip ook.' }, { question: 'Moet ik woorden, lemma s of woordfamilies tellen?', answer: 'Kies één eenheid en houd die aan. Onderzoek rapporteert vaak woordfamilies, terwijl apps lemma s of vormen gebruiken. De aantallen zijn niet rechtstreeks uitwisselbaar.' }, { question: 'Wat doe ik met het verschil?', answer: 'Neem korte voorbeelden uit je doelgenre, houd terugkerende woorden bij en leer ze in uitdrukkingen. Controleer daarna een vergelijkbaar voorbeeld opnieuw.' }];
7
+ const howTo = [{ name: 'Inhoud kiezen', text: 'Kies het soort gesprek of tekst dat je hierna wilt begrijpen.' }, { name: 'Woordenschat schatten', text: 'Vul een consistente schatting in van woorden, lemma s of woordfamilies die je herkent.' }, { name: 'Dekking instellen', text: 'Kies een band van beginnen tot zelfstandig lezen.' }, { name: 'Het verschil gebruiken', text: 'Maak van het verschil en de volgende mijlpaal een lijst uit echte inhoud.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Calculator voor lexicale dekking en woordenschat', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/nl/lexicale-dekking-woordenschat-calculator' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Benodigde woordenschat per inhoud schatten', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'lexicale-dekking-woordenschat-calculator', title: 'Calculator voor lexicale dekking en woordenschat', description: 'Schat de woordenschat die je nodig hebt voor gesprekken, romans, werk, media en studie op basis van een duidelijke dekkingsdoelstelling.', ui, seo: [{ type: 'title', text: 'Plan je woordenschat per inhoudstype', level: 2 }, { type: 'paragraph', html: 'Een kleine kern frequente woorden kan een gesprek openen, maar dekt een roman of vaktekst niet op dezelfde manier. Deze calculator koppelt je doelgenre aan een concreet aantal woorden en een volgende mijlpaal.' }, { type: 'title', text: 'Wat lexicale dekking meet', level: 2 }, { type: 'paragraph', html: 'Lexicale dekking is het aandeel lopende woorden in een voorbeeld dat je woordenschat herkent. De banden van 80%, 90%, 95% en 98% zijn planningsdoelen, geen toets en geen garantie op volledig begrip.' }, { type: 'title', text: 'Waarom het genre het aantal verandert', level: 2 }, { type: 'table', headers: ['Inhoud', 'Band bij 80%', 'Band bij 95%', 'Wat erbij komt'], rows: [['Alledaags gesprek', '2.000 woorden', '4.500 woorden', 'Routines en frequente uitdrukkingen'], ['Films en series', '3.000 woorden', '6.000 woorden', 'Dialoog, slang en wisselende onderwerpen'], ['Romans', '5.000 woorden', '8.000 woorden', 'Verhaal, beschrijving en genretermen'], ['Werk en zaken', '5.000 woorden', '8.000 woorden', 'Professionele formuleringen en vaktaal'], ['Academische teksten', '6.000 woorden', '10.000 woorden', 'Abstracte en vakspecifieke woorden']] }, { type: 'title', text: 'Maak van het verschil een leerbeslissing', level: 2 }, { type: 'paragraph', html: 'Zit je onder de gekozen band, verzamel dan geen willekeurige woorden. Neem een kort echt voorbeeld, houd woorden die terugkeren of de betekenis blokkeren bij en leer ze in uitdrukkingen.' }, { type: 'list', items: ['Kies het genre van je volgende echte taak.', 'Tel steeds dezelfde eenheid.', 'Geef terugkerende woorden voorrang.', 'Test hetzelfde genre opnieuw na het leren.'] }, { type: 'tip', title: 'Bronnen en grenzen', html: 'De referentie van 2.000 woorden bij 80% komt uit onderzoek naar woordfrequentie en tekstdekking. Hogere waarden voor geschreven taal verschillen per corpus en genre. Taal, morfologie, eigennamen, voorkennis, grammatica en tempo blijven belangrijk.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: 'Co chcesz rozumieć?', conversation: 'Codzienne rozmowy', travel: 'Podróże i życie codzienne', media: 'Filmy i seriale', generalReading: 'Czytanie ogólne', novels: 'Powieści', business: 'Praca i biznes', academic: 'Teksty akademickie', knownWords: 'Znane Ci słowa', knownWordsHint: 'Użyj rozsądnego przybliżenia. Licz rodziny wyrazów, lemmy lub formy, zachowując jedną metodę.', targetCoverage: 'Docelowe pokrycie', coverage80: 'Początek', coverage90: 'Śledzenie wątku', coverage95: 'Czytanie ze wsparciem', coverage98: 'Czytanie samodzielne', resetButton: 'Resetuj', quickStart: 'Szybki start', conversationPreset: 'Rozmowa', readingPreset: 'Powieść', workPreset: 'Praca', resultTitle: 'Mapa słownictwa', emptyResult: 'Wybierz rodzaj treści i wpisz znane słownictwo, aby zobaczyć następny praktyczny cel.', checkInputs: 'Sprawdź dane', invalidWords: 'Wpisz od 0 do 50 000 znanych słów.', invalidContentType: 'Wybierz dostępny rodzaj treści.', invalidCoverage: 'Wybierz cel od 80% do 98%.', belowTarget: 'Jesteś poniżej wybranego poziomu pokrycia. Brakująca liczba to Twój następny projekt słownictwa.', atTarget: 'Osiągasz wybrany poziom planowania. Miej pod ręką słownictwo związane z tematem.', buffer: 'Masz użyteczny zapas dla tej treści. Sprawdź teraz prawdziwe teksty ze swojego obszaru.', recommendedWords: 'Słów dla celu', vocabularyKnown: 'Policzonych słów', estimatedCoverage: 'Szacowane pokrycie', gapWords: 'Słów do celu', unknownPerHundred: 'Nieznane na 100', coverageRoute: 'Trasa od częstych słów do samodzielnego czytania', nextCheckpoint: 'Następny etap', noMoreCheckpoints: 'Przekraczasz najwyższy etap tego modelu planowania.', words: 'słów', wordUnit: 'słów', unknownWords: 'nieznanych', targetMarker: 'cel', coverageNote: 'Pokrycie to udział kolejnych słów w tekście rozpoznawanych przez Twoje słownictwo. Nie jest równoznaczne z pełną znajomością języka ani rozumieniem takiej samej części znaczenia.', wordFamilyNote: 'Badania często liczą rodziny wyrazów, a aplikacje mogą liczyć lemy lub formy. Porównuj zawsze tę samą jednostkę.', contentTypeHelp: 'Gatunek zmienia próg: rozmowy powtarzają częste słowa, a powieści, praca i nauka dodają rzadsze oraz specjalistyczne słownictwo.', interpretationTitle: 'Jak korzystać z mapy', actionBelow: 'Utwórz skupioną listę z prawdziwych rozmów, książek lub dokumentów i ucz się powtarzających słów w zdaniach.', actionAt: 'Weź stronę lub transkrypcję z wybranego gatunku i dodaj nieznane słowa, które wracają.', actionBuffer: 'Zbieraj nie tylko pojedyncze słowa, lecz także wyrażenia, kolokacje i terminologię potrzebną w następnym tekście.' };
6
+ const faq = [{ question: 'Co szacuje kalkulator pokrycia leksykalnego?', answer: 'Szacuje użyteczny rozmiar słownictwa dla rozmów, mediów, powieści, pracy i nauki przy pokryciu 80%, 90%, 95% lub 98%, a także pokazuje następny etap.' }, { question: 'Dlaczego powieść wymaga większego słownictwa niż rozmowa?', answer: 'Język codzienny ponownie wykorzystuje częsty rdzeń. Powieści i teksty zawodowe zawierają więcej rzadkich, tematycznych i stałych wyrażeń, więc ta sama liczba słów pokrywa mniej tekstu.' }, { question: 'Czy pokrycie 80% oznacza rozumienie 80% znaczenia?', answer: 'Nie. To przybliżony udział rozpoznawanych kolejnych słów. Na rozumienie wpływają też słowa kluczowe, gramatyka, wiedza wstępna, wymowa i tempo.' }, { question: 'Czy liczyć słowa, lemy czy rodziny wyrazów?', answer: 'Wybierz jedną jednostkę i trzymaj się jej. Badania często podają rodziny wyrazów, a aplikacje lemy lub formy, więc tych liczb nie można bezpośrednio wymieniać.' }, { question: 'Co zrobić z brakującą liczbą?', answer: 'Wybierz krótkie próbki z docelowego gatunku, zachowaj powtarzające się słowa i ucz się ich w wyrażeniach. Potem sprawdź podobną próbkę ponownie.' }];
7
+ const howTo = [{ name: 'Wybierz treść', text: 'Wybierz rodzaj rozmowy lub tekstu, który chcesz następnie rozumieć.' }, { name: 'Oszacuj słownictwo', text: 'Wpisz spójne przybliżenie słów, lemów lub rodzin wyrazów, które rozpoznajesz.' }, { name: 'Ustaw pokrycie', text: 'Wybierz poziom od początku do samodzielnego czytania.' }, { name: 'Wykorzystaj brak', text: 'Zamień brakującą liczbę i następny etap w listę z prawdziwych treści.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Kalkulator pokrycia leksykalnego i słownictwa', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/pl/kalkulator-pokrycia-leksykalnego-slownictwa' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Oszacować potrzebne słownictwo według treści', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'kalkulator-pokrycia-leksykalnego-slownictwa', title: 'Kalkulator pokrycia leksykalnego i słownictwa', description: 'Oszacuj słownictwo potrzebne do rozmów, powieści, pracy, mediów i nauki według wybranego poziomu pokrycia.', ui, seo: [{ type: 'title', text: 'Planuj słownictwo według rodzaju treści', level: 2 }, { type: 'paragraph', html: 'Mały rdzeń częstych słów może otworzyć rozmowę, ale nie pokryje powieści ani tekstu zawodowego w ten sam sposób. Ten kalkulator łączy docelowy gatunek z konkretną liczbą słów i następnym etapem.' }, { type: 'title', text: 'Co mierzy pokrycie leksykalne', level: 2 }, { type: 'paragraph', html: 'Pokrycie leksykalne to udział kolejnych słów w próbce rozpoznawanych przez Twoje słownictwo. Poziomy 80%, 90%, 95% i 98% służą do planowania, a nie jako egzamin lub gwarancja pełnego rozumienia.' }, { type: 'title', text: 'Dlaczego gatunek zmienia liczbę', level: 2 }, { type: 'table', headers: ['Treść', 'Poziom 80%', 'Poziom 95%', 'Co dochodzi'], rows: [['Codzienna rozmowa', '2 000 słów', '4 500 słów', 'Rutyny i częste wyrażenia'], ['Filmy i seriale', '3 000 słów', '6 000 słów', 'Dialog, slang i zmiany tematu'], ['Powieści', '5 000 słów', '8 000 słów', 'Narracja, opis i terminy gatunkowe'], ['Praca i biznes', '5 000 słów', '8 000 słów', 'Zwroty zawodowe i terminy branżowe'], ['Teksty akademickie', '6 000 słów', '10 000 słów', 'Słownictwo abstrakcyjne i specjalistyczne']] }, { type: 'title', text: 'Zamień brak w decyzję dotyczącą nauki', level: 2 }, { type: 'paragraph', html: 'Jeśli jesteś poniżej wybranego poziomu, nie zbieraj słów przypadkowo. Weź krótki prawdziwy tekst, zachowaj słowa powtarzające się lub blokujące sens i ucz się ich w wyrażeniach.' }, { type: 'list', items: ['Wybierz gatunek następnego prawdziwego zadania.', 'Zawsze licz tę samą jednostkę.', 'Nadaj priorytet słowom powracającym w próbkach.', 'Po nauce ponownie sprawdź ten sam rodzaj treści.'] }, { type: 'tip', title: 'Źródła i ograniczenia', html: 'Odniesienie 2 000 słów przy 80% pochodzi z badań nad częstotliwością słów i pokryciem tekstu. Wyższe wartości dla tekstów pisanych zależą od korpusu i gatunku. Język, morfologia, nazwy własne, wiedza o temacie, gramatyka i tempo nadal wpływają na rozumienie.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: 'O que você quer entender?', conversation: 'Conversas do dia a dia', travel: 'Viagens e vida cotidiana', media: 'Filmes e séries', generalReading: 'Leitura geral', novels: 'Romances', business: 'Trabalho e negócios', academic: 'Textos acadêmicos', knownWords: 'Palavras que você já conhece', knownWordsHint: 'Use uma estimativa realista. Conte famílias de palavras, lemas ou formas sempre com o mesmo critério.', targetCoverage: 'Cobertura desejada', coverage80: 'Começar', coverage90: 'Acompanhar o fio', coverage95: 'Ler com apoio', coverage98: 'Ler com autonomia', resetButton: 'Redefinir', quickStart: 'Inícios rápidos', conversationPreset: 'Conversa', readingPreset: 'Romance', workPreset: 'Trabalho', resultTitle: 'Seu mapa de vocabulário', emptyResult: 'Escolha um tipo de conteúdo e informe seu vocabulário conhecido para ver o próximo objetivo útil.', checkInputs: 'Confira os dados', invalidWords: 'Digite entre 0 e 50.000 palavras conhecidas.', invalidContentType: 'Escolha um tipo de conteúdo disponível.', invalidCoverage: 'Escolha uma meta entre 80% e 98%.', belowTarget: 'Você está abaixo da faixa escolhida. A diferença é seu próximo projeto de vocabulário.', atTarget: 'Você alcançou a faixa de planejamento escolhida. Mantenha o vocabulário específico por perto.', buffer: 'Você tem uma margem útil para este conteúdo. Confira agora textos reais da sua área.', recommendedWords: 'Palavras para sua meta', vocabularyKnown: 'Palavras contadas', estimatedCoverage: 'Cobertura estimada', gapWords: 'Palavras até a meta', unknownPerHundred: 'Desconhecidas a cada 100', coverageRoute: 'Rota de leitura das palavras frequentes à leitura autônoma', nextCheckpoint: 'Próximo marco', noMoreCheckpoints: 'Você está além do maior marco deste modelo de planejamento.', words: 'palavras', wordUnit: 'palavras', unknownWords: 'desconhecidas', targetMarker: 'meta', coverageNote: 'Cobertura é a parcela das palavras corridas de um texto que seu vocabulário reconhece. Ela não equivale ao domínio completo do idioma nem à porcentagem de significado compreendida.', wordFamilyNote: 'A pesquisa costuma contar famílias de palavras, enquanto aplicativos podem contar lemas ou formas. Compare sempre a mesma unidade.', contentTypeHelp: 'O gênero muda o limite: conversas repetem palavras frequentes, enquanto romances, trabalho e estudo acrescentam vocabulário menos frequente e especializado.', interpretationTitle: 'Como usar o mapa', actionBelow: 'Monte uma lista focada a partir de conversas, livros ou documentos reais e aprenda as palavras recorrentes em frases.', actionAt: 'Pegue uma página ou transcrição do gênero escolhido e acrescente as palavras desconhecidas que voltam a aparecer.', actionBuffer: 'Troque palavras isoladas por expressões, colocações e vocabulário especializado exigido pelo próximo texto.' };
6
+ const faq = [{ question: 'O que a calculadora de cobertura lexical estima?', answer: 'Ela estima um tamanho útil de vocabulário para conversas, mídia, romances, trabalho ou estudo nas faixas de 80%, 90%, 95% e 98%, mostrando também o próximo marco.' }, { question: 'Por que um romance exige mais palavras que uma conversa?', answer: 'A fala cotidiana reutiliza um núcleo frequente. Romances e textos profissionais trazem palavras raras, temáticas e expressões fixas, então a mesma quantidade cobre menos texto.' }, { question: 'Cobertura de 80% significa entender 80% do significado?', answer: 'Não. É a parcela aproximada das palavras reconhecidas. Palavras-chave, gramática, conhecimento prévio, pronúncia e velocidade também afetam a compreensão.' }, { question: 'Devo contar palavras, lemas ou famílias?', answer: 'Escolha uma unidade e mantenha-a. Pesquisas usam com frequência famílias de palavras, enquanto aplicativos podem usar lemas ou formas. Os números não são intercambiáveis.' }, { question: 'O que faço com a diferença?', answer: 'Retire amostras curtas do gênero escolhido, guarde as palavras recorrentes e estude-as em expressões. Depois confira uma amostra semelhante.' }];
7
+ const howTo = [{ name: 'Escolha o conteúdo', text: 'Selecione o tipo de conversa ou texto que você quer entender em seguida.' }, { name: 'Estime o vocabulário', text: 'Informe uma estimativa consistente das palavras, lemas ou famílias que você reconhece.' }, { name: 'Defina a cobertura', text: 'Escolha uma faixa entre começar e ler com autonomia.' }, { name: 'Use a diferença', text: 'Transforme a diferença e o próximo marco em uma lista baseada em conteúdo real.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Calculadora de cobertura lexical e vocabulário', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/pt/calculadora-cobertura-lexical-vocabulario' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Estimar o vocabulário necessário por tipo de conteúdo', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'calculadora-cobertura-lexical-vocabulario', title: 'Calculadora de cobertura lexical e vocabulário', description: 'Estime o vocabulário necessário para conversas, romances, trabalho, mídia e estudo segundo uma meta de cobertura clara.', ui, seo: [{ type: 'title', text: 'Planeje seu vocabulário por tipo de conteúdo', level: 2 }, { type: 'paragraph', html: 'Um núcleo pequeno de palavras frequentes pode abrir uma conversa, mas não cobre um romance ou texto profissional da mesma forma. Esta calculadora liga o gênero desejado a uma quantidade concreta de palavras e ao próximo marco.' }, { type: 'title', text: 'O que a cobertura lexical mede', level: 2 }, { type: 'paragraph', html: 'Cobertura lexical é a parcela das palavras corridas de uma amostra reconhecida pelo seu vocabulário. As faixas de 80%, 90%, 95% e 98% ajudam no planejamento, mas não são prova nem garantia de compreensão completa.' }, { type: 'title', text: 'Por que o gênero muda a quantidade', level: 2 }, { type: 'table', headers: ['Conteúdo', 'Faixa de 80%', 'Faixa de 95%', 'O que aparece'], rows: [['Conversa cotidiana', '2.000 palavras', '4.500 palavras', 'Rotinas e expressões frequentes'], ['Filmes e séries', '3.000 palavras', '6.000 palavras', 'Diálogo, gíria e mudanças de assunto'], ['Romances', '5.000 palavras', '8.000 palavras', 'Narrativa, descrição e termos do gênero'], ['Trabalho e negócios', '5.000 palavras', '8.000 palavras', 'Fórmulas profissionais e termos da área'], ['Textos acadêmicos', '6.000 palavras', '10.000 palavras', 'Vocabulário abstrato e especializado']] }, { type: 'title', text: 'Transforme a diferença em uma decisão de estudo', level: 2 }, { type: 'paragraph', html: 'Se você está abaixo da faixa, não acumule palavras aleatórias. Retire uma amostra curta de conteúdo real, guarde o que se repete ou bloqueia o sentido e estude essas palavras dentro de frases.' }, { type: 'list', items: ['Escolha o gênero da sua próxima tarefa real.', 'Conte sempre a mesma unidade.', 'Priorize palavras que reaparecem nas amostras.', 'Teste o mesmo gênero novamente depois de estudar.'] }, { type: 'tip', title: 'Fontes e limites', html: 'A referência de 2.000 palavras a 80% vem de pesquisas sobre frequência e cobertura textual. Valores escritos mais altos variam conforme o corpus e o gênero. Idioma, morfologia, nomes próprios, conhecimento do tema, gramática e velocidade continuam influenciando a compreensão.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: 'Что вы хотите понимать?', conversation: 'Повседневные разговоры', travel: 'Путешествия и быт', media: 'Фильмы и сериалы', generalReading: 'Общее чтение', novels: 'Романы', business: 'Работа и бизнес', academic: 'Академические тексты', knownWords: 'Уже знакомые слова', knownWordsHint: 'Используйте обоснованную оценку. Считайте словарные гнёзда, леммы или формы по одному правилу.', targetCoverage: 'Желаемое покрытие', coverage80: 'Начать', coverage90: 'Следить за ходом', coverage95: 'Читать с поддержкой', coverage98: 'Читать самостоятельно', resetButton: 'Сбросить', quickStart: 'Быстрый старт', conversationPreset: 'Разговор', readingPreset: 'Роман', workPreset: 'Работа', resultTitle: 'Карта словарного запаса', emptyResult: 'Выберите тип содержания и укажите известный словарный запас, чтобы увидеть следующую цель.', checkInputs: 'Проверьте данные', invalidWords: 'Введите от 0 до 50 000 известных слов.', invalidContentType: 'Выберите доступный тип содержания.', invalidCoverage: 'Выберите цель от 80% до 98%.', belowTarget: 'Вы пока ниже выбранного уровня покрытия. Разрыв показывает следующий проект по словарю.', atTarget: 'Вы достигли выбранного планового уровня. Держите тематическую лексику под рукой.', buffer: 'Для этого содержания у вас есть полезный запас. Проверьте его на настоящих текстах нужной области.', recommendedWords: 'Слов для цели', vocabularyKnown: 'Учтено слов', estimatedCoverage: 'Оценка покрытия', gapWords: 'Слов до цели', unknownPerHundred: 'Незнакомых на 100', coverageRoute: 'Путь от частотных слов к самостоятельному чтению', nextCheckpoint: 'Следующий этап', noMoreCheckpoints: 'Выше высшего этапа этой модели планирования.', words: 'слов', wordUnit: 'слов', unknownWords: 'незнакомых', targetMarker: 'цель', coverageNote: 'Покрытие показывает долю текущих слов в тексте, которые узнаёт ваш словарный запас. Это не то же самое, что полное владение языком или понимание такой же доли смысла.', wordFamilyNote: 'В исследованиях часто считают словарные гнёзда, а приложения могут считать леммы или формы. Сравнивайте одинаковые единицы.', contentTypeHelp: 'Жанр меняет порог: разговоры повторяют частотные слова, а романы, работа и учёба добавляют редкую и специальную лексику.', interpretationTitle: 'Как использовать карту', actionBelow: 'Составьте список по настоящим разговорам, книгам или рабочим документам и учите повторяющиеся слова в выражениях.', actionAt: 'Возьмите страницу или расшифровку из нужного жанра и добавьте незнакомые слова, которые встречаются снова.', actionBuffer: 'Собирайте не только отдельные слова, но и выражения, сочетания и специальную лексику следующего текста.' };
6
+ const faq = [{ question: 'Что оценивает калькулятор лексического покрытия?', answer: 'Он оценивает полезный объём словарного запаса для разговоров, медиа, романов, работы и учёбы при покрытии 80%, 90%, 95% или 98%, а также показывает следующий этап.' }, { question: 'Почему для романа нужно больше слов, чем для разговора?', answer: 'В повседневной речи часто повторяется основной набор слов. В романах и профессиональных текстах больше редкой, тематической и устойчивой лексики, поэтому тот же запас покрывает меньше текста.' }, { question: 'Означает ли покрытие 80%, что понятны 80% смысла?', answer: 'Нет. Это примерная доля узнаваемых текущих слов. На понимание также влияют ключевые слова, грамматика, фоновые знания, произношение и скорость.' }, { question: 'Считать слова, леммы или словарные гнёзда?', answer: 'Выберите одну единицу и придерживайтесь её. Исследования часто используют словарные гнёзда, а приложения могут использовать леммы или формы. Эти числа нельзя напрямую заменять.' }, { question: 'Как использовать разрыв?', answer: 'Возьмите короткие образцы нужного жанра, сохраните повторяющиеся слова и учите их в выражениях. Затем снова проверьте похожий образец.' }];
7
+ const howTo = [{ name: 'Выбрать содержание', text: 'Выберите вид разговора или текста, который хотите понять следующим.' }, { name: 'Оценить словарь', text: 'Введите последовательную оценку слов, лемм или словарных гнёзд, которые вы узнаёте.' }, { name: 'Задать покрытие', text: 'Выберите уровень от первого шага до самостоятельного чтения.' }, { name: 'Использовать разрыв', text: 'Превратите разрыв и следующий этап в список из настоящих материалов.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Калькулятор лексического покрытия и словарного запаса', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/ru/kalkulyator-leksicheskogo-pokrytiya-slovarnogo-zapasa' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Оценить нужный словарный запас по типу содержания', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'kalkulyator-leksicheskogo-pokrytiya-slovarnogo-zapasa', title: 'Калькулятор лексического покрытия и словарного запаса', description: 'Оцените словарный запас, необходимый для разговоров, романов, работы, медиа и учёбы по целевому покрытию.', ui, seo: [{ type: 'title', text: 'Планируйте словарный запас по содержанию', level: 2 }, { type: 'paragraph', html: 'Небольшое ядро частотных слов может открыть повседневный разговор, но не покрывает роман или профессиональный текст так же хорошо. Калькулятор связывает нужный жанр с конкретным числом слов и следующим этапом.' }, { type: 'title', text: 'Что показывает лексическое покрытие', level: 2 }, { type: 'paragraph', html: 'Лексическое покрытие означает долю текущих слов в образце, узнаваемых вашим словарным запасом. Уровни 80%, 90%, 95% и 98% предназначены для планирования, а не являются тестом или гарантией полного понимания.' }, { type: 'title', text: 'Почему жанр меняет число', level: 2 }, { type: 'table', headers: ['Содержание', 'Уровень 80%', 'Уровень 95%', 'Что добавляется'], rows: [['Повседневный разговор', '2 000 слов', '4 500 слов', 'Речевые шаблоны и частотные выражения'], ['Фильмы и сериалы', '3 000 слов', '6 000 слов', 'Диалоги, сленг и смена тем'], ['Романы', '5 000 слов', '8 000 слов', 'Повествование, описания и жанровые слова'], ['Работа и бизнес', '5 000 слов', '8 000 слов', 'Профессиональные формулы и термины'], ['Академические тексты', '6 000 слов', '10 000 слов', 'Абстрактная и специальная лексика']] }, { type: 'title', text: 'Превратите разрыв в решение для учёбы', level: 2 }, { type: 'paragraph', html: 'Если вы ниже выбранного уровня, не собирайте случайные слова. Возьмите короткий настоящий образец, оставьте слова, которые повторяются или мешают смыслу, и учите их в выражениях.' }, { type: 'list', items: ['Выберите жанр следующей реальной задачи.', 'Всегда считайте одну и ту же единицу.', 'Ставьте выше слова, которые повторяются в образцах.', 'После занятий снова проверьте тот же жанр.'] }, { type: 'tip', title: 'Источники и ограничения', html: 'Ориентир 2 000 слов при 80% основан на исследованиях частотности слов и покрытия текста. Более высокие значения для письменной речи зависят от корпуса и жанра. Язык, морфология, имена собственные, знания о теме, грамматика и скорость также влияют на понимание.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,13 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = { contentType: 'Vad vill du förstå?', conversation: 'Vardagliga samtal', travel: 'Resor och vardagsliv', media: 'Filmer och serier', generalReading: 'Allmän läsning', novels: 'Romaner', business: 'Arbete och affärer', academic: 'Akademiska texter', knownWords: 'Ord du redan kan', knownWordsHint: 'Använd en rimlig uppskattning. Räkna ords familjer, lemman eller former med samma enhet varje gång.', targetCoverage: 'Önskad täckning', coverage80: 'Börja', coverage90: 'Följ tråden', coverage95: 'Läs med stöd', coverage98: 'Läs självständigt', resetButton: 'Återställ', quickStart: 'Snabbstart', conversationPreset: 'Samtal', readingPreset: 'Roman', workPreset: 'Arbete', resultTitle: 'Din ordförrådskarta', emptyResult: 'Välj en innehållstyp och ange ditt kända ordförråd för att se nästa användbara mål.', checkInputs: 'Kontrollera uppgifterna', invalidWords: 'Ange mellan 0 och 50 000 kända ord.', invalidContentType: 'Välj en tillgänglig innehållstyp.', invalidCoverage: 'Välj ett mål mellan 80% och 98%.', belowTarget: 'Du ligger under den valda täckningsnivån. Skillnaden är ditt nästa ordförrådsprojekt.', atTarget: 'Du har nått den valda planeringsnivån. Ha ämnesspecifika ord nära till hands.', buffer: 'Du har en användbar marginal för detta innehåll. Kontrollera nu riktiga texter från ditt område.', recommendedWords: 'Ord för ditt mål', vocabularyKnown: 'Räknade ord', estimatedCoverage: 'Uppskattad täckning', gapWords: 'Ord till målet', unknownPerHundred: 'Okända per 100', coverageRoute: 'Läsrutt från vanliga ord till självständig läsning', nextCheckpoint: 'Nästa milstolpe', noMoreCheckpoints: 'Du ligger över den högsta milstolpen i denna modell.', words: 'ord', wordUnit: 'ord', unknownWords: 'okända', targetMarker: 'mål', coverageNote: 'Täckning är andelen löpande ord i en text som ditt ordförråd känner igen. Det är inte samma sak som full språkbehärskning eller förståelse av samma andel av betydelsen.', wordFamilyNote: 'Forskning räknar ofta ordfamiljer, medan appar kan räkna lemman eller former. Jämför alltid samma enhet.', contentTypeHelp: 'Genren ändrar tröskeln: samtal återanvänder vanliga ord, medan romaner, arbete och studier lägger till ovanligare och specialiserade ord.', interpretationTitle: 'Så använder du kartan', actionBelow: 'Skapa en fokuserad lista från riktiga samtal, böcker eller arbetsdokument och lär dig återkommande ord i fraser.', actionAt: 'Ta en sida eller utskrift från din målgenre och lägg till okända ord som återkommer.', actionBuffer: 'Samla inte bara enstaka ord utan också fraser, kollokationer och fackord för nästa text.' };
6
+ const faq = [{ question: 'Vad uppskattar kalkylatorn för lexikal täckning?', answer: 'Den uppskattar en användbar ordförrådsstorlek för samtal, medier, romaner, arbete eller studier vid 80%, 90%, 95% och 98% täckning och visar nästa milstolpe.' }, { question: 'Varför kräver en roman fler ord än ett samtal?', answer: 'Vardagligt tal återanvänder en kärna av vanliga ord. Romaner och facktexter innehåller fler ovanliga, ämnesspecifika och fasta uttryck, så samma antal ord täcker mindre text.' }, { question: 'Betyder 80% täckning att jag förstår 80% av betydelsen?', answer: 'Nej. Det är den ungefärliga andelen igenkända löpande ord. Nyckelord, grammatik, förkunskaper, uttal och hastighet påverkar också förståelsen.' }, { question: 'Ska jag räkna ord, lemman eller ordfamiljer?', answer: 'Välj en enhet och håll fast vid den. Forskning använder ofta ordfamiljer, medan appar kan använda lemman eller former. Talen är inte direkt utbytbara.' }, { question: 'Vad gör jag med skillnaden?', answer: 'Ta korta prov från målgenren, behåll återkommande ord och lär dig dem i uttryck. Kontrollera sedan ett liknande prov igen.' }];
7
+ const howTo = [{ name: 'Välj innehåll', text: 'Välj den typ av samtal eller text som du vill förstå härnäst.' }, { name: 'Uppskatta ordförrådet', text: 'Ange en konsekvent uppskattning av ord, lemman eller ordfamiljer som du känner igen.' }, { name: 'Ställ in täckning', text: 'Välj en nivå från att börja förstå till självständig läsning.' }, { name: 'Använd skillnaden', text: 'Gör skillnaden och nästa milstolpe till en lista från verkligt innehåll.' }];
8
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Kalkylator för lexikal täckning och ordförråd', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/sv/kalkylator-lexikal-tackning-ordforrad' };
9
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Uppskatta nödvändigt ordförråd efter innehåll', step: howTo.map((item) => ({ '@type': 'HowToStep', ...item })) };
10
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
11
+ const withContext = (schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> => ({ '@context': 'https://schema.org', ...schema });
12
+
13
+ export const content: ToolLocaleContent<LexicalCoverageUI> = { slug: 'kalkylator-lexikal-tackning-ordforrad', title: 'Kalkylator för lexikal täckning och ordförråd', description: 'Uppskatta ordförrådet du behöver för samtal, romaner, arbete, medier och studier utifrån önskad täckning.', ui, seo: [{ type: 'title', text: 'Planera ordförrådet efter innehållet', level: 2 }, { type: 'paragraph', html: 'En liten kärna av vanliga ord kan öppna ett samtal, men täcker inte en roman eller facktext på samma sätt. Kalkylatorn kopplar din målgenre till ett konkret antal ord och nästa milstolpe.' }, { type: 'title', text: 'Vad lexikal täckning mäter', level: 2 }, { type: 'paragraph', html: 'Lexikal täckning är andelen löpande ord i ett prov som ditt ordförråd känner igen. Nivåerna 80%, 90%, 95% och 98% är planeringsnivåer, inte ett prov eller en garanti för full förståelse.' }, { type: 'title', text: 'Varför genren ändrar antalet', level: 2 }, { type: 'table', headers: ['Innehåll', 'Nivå vid 80%', 'Nivå vid 95%', 'Vad tillkommer'], rows: [['Vardagligt samtal', '2 000 ord', '4 500 ord', 'Rutiner och vanliga uttryck'], ['Filmer och serier', '3 000 ord', '6 000 ord', 'Dialog, slang och ämnesbyten'], ['Romaner', '5 000 ord', '8 000 ord', 'Berättande, beskrivning och genreord'], ['Arbete och affärer', '5 000 ord', '8 000 ord', 'Yrkesuttryck och facktermer'], ['Akademiska texter', '6 000 ord', '10 000 ord', 'Abstrakta och ämnesspecifika ord']] }, { type: 'title', text: 'Gör skillnaden till ett studiebeslut', level: 2 }, { type: 'paragraph', html: 'Om du ligger under nivån ska du inte samla slumpmässiga ord. Ta ett kort verkligt prov, behåll ord som återkommer eller blockerar betydelsen och lär dig dem i uttryck.' }, { type: 'list', items: ['Välj genren för din nästa riktiga uppgift.', 'Räkna alltid samma enhet.', 'Prioritera ord som återkommer i flera prov.', 'Testa samma innehållstyp igen efter studierna.'] }, { type: 'tip', title: 'Källor och begränsningar', html: 'Referensen 2 000 ord vid 80% kommer från forskning om ordfrekvens och texttäckning. Högre värden för skriven text varierar med korpus och genre. Språk, morfologi, egennamn, ämneskunskap, grammatik och tempo påverkar fortfarande förståelsen.' }], faq, bibliography: [{ name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' }, { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' }], howTo, schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)] };
@@ -0,0 +1,59 @@
1
+ import type { FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { LexicalCoverageUI } from '../ui';
4
+
5
+ const ui: LexicalCoverageUI = {
6
+ contentType: 'Neyi anlamak istiyorsunuz?', conversation: 'Günlük sohbet', travel: 'Seyahat ve günlük yaşam', media: 'Film ve diziler', generalReading: 'Genel okuma', novels: 'Romanlar', business: 'İş ve çalışma hayatı', academic: 'Akademik metinler', knownWords: 'Zaten bildiğiniz kelimeler', knownWordsHint: 'Mümkünse test edilmiş bir tahmin kullanın. Kelime ailelerini veya lemaları tutarlı biçimde sayın.', targetCoverage: 'İstediğiniz kapsama', coverage80: 'Başlangıç', coverage90: 'Konuyu takip etme', coverage95: 'Destekle rahat okuma', coverage98: 'Bağımsız okuma', resetButton: 'Sıfırla', quickStart: 'Hızlı başlangıçlar', conversationPreset: 'Sohbet', readingPreset: 'Roman okuma', workPreset: 'İş', resultTitle: 'Kelime haritanız', emptyResult: 'Bir içerik türü seçin, bildiğiniz kelime sayısını girin ve sonraki yararlı kelime eşiğini görün.', checkInputs: 'Girdilerinizi kontrol edin', invalidWords: '0 ile 50.000 arasında bir kelime sayısı girin.', invalidContentType: 'Mevcut içerik türlerinden birini seçin.', invalidCoverage: '%80 ile %98 arasında bir kapsama hedefi seçin.', belowTarget: 'Seçtiğiniz kapsama bandının altındasınız. Aradaki fark, sonraki kelime çalışma alanınızdır.', atTarget: 'Seçtiğiniz planlama bandına ulaştınız. Konuya özgü kelimeleri elinizin altında tutmaya devam edin.', buffer: 'Bu içerik profili için yararlı bir tamponunuz var. Kullanmak istediğiniz metinlerden örneklerle hedefinizi netleştirin.', recommendedWords: 'Hedefiniz için kelime sayısı', vocabularyKnown: 'Sayılan kelimeler', estimatedCoverage: 'Tahmini kapsama', gapWords: 'Hedefe kalan kelimeler', unknownPerHundred: 'Her 100 kelimede bilinmeyen', coverageRoute: 'Sık kullanılan kelimelerden bağımsız kapsama giden okuma yolu', nextCheckpoint: 'Sonraki eşik', noMoreCheckpoints: 'Bu planlama modelindeki en yüksek eşiği aştınız.', words: 'kelime', wordUnit: 'kelime', unknownWords: 'bilinmeyen', targetMarker: 'hedef', coverageNote: 'Kapsama, bir metindeki toplam kelimeler içinde kelime dağarcığınızın tanıdığı paydır. Dil yeterliliğinin tamamıyla aynı şey değildir.', wordFamilyNote: 'Araştırmalar kelime ailelerini sayabilirken uygulamalar lemaları veya biçimleri sayabilir. Bu yüzden aynı ölçü birimlerini karşılaştırın.', contentTypeHelp: 'Tür, kelime eşiğini değiştirir: sık kullanılan sohbet kelimeleri romanların, işin veya eğitimin özel kelimelerinden daha erken gelir.', interpretationTitle: 'Haritayı nasıl kullanmalı?', actionBelow: 'Aradaki farkı gerçek sohbetlerinizden, kitaplarınızdan veya iş belgelerinizden oluşturduğunuz odaklı bir listeye ekleyin.', actionAt: 'Hedef türünüzden bir sayfa veya konuşma metni örneği alın ve listeyi genişletmeden önce tekrarlanan bilinmeyen kelimeleri ekleyin.', actionBuffer: 'Tek tek kelimeler toplamak yerine kalıplara, eşdizimlilere ve sıradaki metninizin gerektirdiği özel kelimelere geçin.',
7
+ };
8
+
9
+ const faq = [
10
+ { question: 'Lexical coverage hesaplayıcısı neyi tahmin eder?', answer: 'Seçilen bir içerik profili için %80, %90, %95 veya %98 kelime kapsamasına ulaşmak üzere yararlı bir kelime dağarcığı büyüklüğü tahmin eder. Ayrıca bu planlama bandını bildiğiniz kelime sayısıyla karşılaştırır ve sonraki eşiği gösterir.' },
11
+ { question: 'Günlük sohbet neden romanlardan veya iş metinlerinden daha az kelime gerektirir?', answer: 'Sık kullanılan konuşma dili görece küçük bir temel kelime dağarcığını tekrarlar. Romanlar, mesleki belgeler ve akademik metinler daha seyrek, konuya özgü ve kalıplaşmış kelimeler ekler. Bu yüzden aynı kelime sayısı karşılaştığınız içeriğin daha küçük bir bölümünü kapsar.' },
12
+ { question: '%80 kapsama, anlamın %80 ini anladığım anlamına mı gelir?', answer: 'Hayır. Bu, bildiğiniz kelimelerin bir metindeki toplam kelimelerin kabaca %80 ini oluşturduğu anlamına gelir. Bilinmeyen kelimeler önemli bilgiler taşıyabilir; sözdizimi, ön bilgi, hız, telaffuz ve konuya aşinalık da anlamayı etkiler.' },
13
+ { question: 'Kelime, lema veya kelime ailesi mi saymalıyım?', answer: 'Tahmininizde ve kelime listenizde aynı birimi kullanın. Araştırmalar çoğunlukla kelime ailelerini, uygulamalar ise lemaları veya görünen biçimleri raporlar. Özellikle çekimli dillerde bu sayılar birbirinin yerine kullanılamaz.' },
14
+ { question: 'Aradaki farkla ne yapmalıyım?', answer: 'Sonraki listenizi seçtiğiniz türdeki gerçek içerikten oluşturun. Tekrarlanan veya anlamı engelleyen bilinmeyen kelimeleri tutun, onları kalıplar içinde öğrenin ve çalıştıktan sonra aynı türden başka bir örneği yeniden kontrol edin.' },
15
+ ];
16
+
17
+ const appSchema: SoftwareApplication = { '@type': 'SoftwareApplication', name: 'Lexical Coverage Vocabulary Calculator', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', isAccessibleForFree: true, url: 'https://gamebob.dev/tr/sozcuk-dagarcigi-lexical-kapsama-hesaplayici' };
18
+ const howToSchema: HowTo = { '@type': 'HowTo', name: 'Bir içerik türü için gereken kelime dağarcığını tahmin etme', step: [
19
+ { '@type': 'HowToStep', name: 'İçeriği seçin', text: 'Gerçek hedefinize uyan sohbet, medya, roman, iş, akademik metin veya başka bir profili seçin.' },
20
+ { '@type': 'HowToStep', name: 'Bildiğiniz kelimeleri girin', text: 'Tanıdığınız kelimeler, lemalar veya kelime aileleri için tutarlı bir tahmin ekleyin.' },
21
+ { '@type': 'HowToStep', name: 'Kapsamayı ayarlayın', text: 'Başlangıçtan bağımsız okumaya kadar kullanımınıza uyan kapsama bandını seçin.' },
22
+ { '@type': 'HowToStep', name: 'Aradaki farkı değerlendirin', text: 'Bu türdeki gerçek içerikten odaklı bir liste oluşturmak için sonraki eşiği kullanın.' },
23
+ ] };
24
+ const faqSchema: FAQPage = { '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) };
25
+
26
+ function withContext(schema: SoftwareApplication | HowTo | FAQPage): Record<string, unknown> {
27
+ return { '@context': 'https://schema.org', ...schema };
28
+ }
29
+
30
+ export const content: ToolLocaleContent<LexicalCoverageUI> = {
31
+ slug: 'sozcuk-dagarcigi-lexical-kapsama-hesaplayici',
32
+ title: 'Kelime Dağarcığı ve Lexical Coverage Hesaplayıcısı',
33
+ description: 'Kelime dağarcığınızı gerçekçi bir kapsama hedefiyle karşılaştırarak sohbet, roman, iş, medya ve eğitim için kaç kelime gerektiğini tahmin edin.',
34
+ ui,
35
+ seo: [
36
+ { type: 'title', text: 'İçerik Türüne Göre Kelime Dağarcığı Seçin', level: 2 },
37
+ { type: 'paragraph', html: 'Doğru kelime hedefi, anlamak istediğiniz içeriğe bağlıdır. Sık kullanılan kelimelerden oluşan küçük bir grup günlük sohbetin kapısını açabilir; romanlar, iş belgeleri ve akademik metinler ise daha seyrek ve uzmanlık gerektiren kelimeler getirir. Bu hesaplayıcı farkı pratik bir kelime sayısına ve sonraki eşiğe dönüştürür.' },
38
+ { type: 'title', text: 'Lexical Coverage Neyi Ölçer?', level: 2 },
39
+ { type: 'paragraph', html: 'Kelime kapsaması, bir örnekteki toplam kelimelerin içinde bildiğiniz kelimelerin payıdır. Hesaplayıcı dört planlama bandı kullanır: akışı fark etmeye başlamak için %80, daha fazlasını takip etmek için %90, destekle okumak için %95 ve daha bağımsız okuma için %98. Bunlar anlama garantisi değil, planlama eşikleridir.' },
40
+ { type: 'title', text: 'Tür Neden Sayıyı Değiştirir?', level: 2 },
41
+ { type: 'table', headers: ['İçerik profili', '%80 planlama bandı', '%95 planlama bandı', 'Ne değişir?'], rows: [['Günlük sohbet', '2.000 kelime', '4.500 kelime', 'Sık kullanılan günlük kelimeler ve tekrarlanan rutinler.'], ['Film ve diziler', '3.000 kelime', '6.000 kelime', 'Diyalog, argo, telaffuz ve konu değişimleri.'], ['Romanlar', '5.000 kelime', '8.000 kelime', 'Anlatı dili, betimleme, özel adlar ve tür terimleri.'], ['İş ve çalışma hayatı', '5.000 kelime', '8.000 kelime', 'Mesleki kalıplar, alan terimleri ve belge kuralları.'], ['Akademik metinler', '6.000 kelime', '10.000 kelime', 'Soyut kelimeler, alan terimleri ve yoğun sözdizimi.']] },
42
+ { type: 'title', text: 'Aradaki Farkı Çalışma Kararına Dönüştürün', level: 2 },
43
+ { type: 'paragraph', html: 'Sonuç seçtiğiniz bandın altındaysa rastgele kelimeler toplamaya başlamayın. Anlamak istediğiniz sohbetlerden, sayfalardan veya belgelerden kısa bir örnek alın. Tekrarlanan ya da anlamı engelleyen bilinmeyen kelimeleri tutun, onları kalıplar içinde öğrenin ve çalışmadan sonra başka bir örneği kontrol edin.' },
44
+ { type: 'list', items: ['Bir sonraki gerçek görevinize uyan içerik profilini seçin.', 'Her seferinde aynı birimi kullanarak kelime ailelerini, lemaları veya biçimleri sayın.', 'Aradaki farkı odaklı bir liste olarak kullanın; tekrarlanan kelime ve kalıplara öncelik verin.', 'Kapsama hedefini yükseltmeden önce hedef türden yeniden örnek alın.'] },
45
+ { type: 'tip', title: 'Kanıtlar ve sınırlar', html: '2.000 kelime ve %80 referansı, sıklık ve metin kapsaması araştırmalarına dayanır; daha büyük yazılı metin tahminleri derleme ve türe göre değişir. Kelime aileleri, lemalar ve biçimler farklı toplamlar verir. Dil, biçimbilim, özel adlar, konu bilgisi, dil bilgisi, dinleme hızı ve çıkarım da önemlidir. Bu nedenle haritayı bir sınav veya garanti değil, şeffaf bir planlama sezgisi olarak kullanın.' },
46
+ ],
47
+ faq,
48
+ bibliography: [
49
+ { name: 'Paul Nation, How Large a Vocabulary Is Needed for Reading and Listening?', url: 'https://www.scienceguide.nl/wp-content/uploads/2017/11/nation-2006-vocabulary.pdf' },
50
+ { name: 'Izquierdo Gil, La selección del léxico en la enseñanza del español como lengua extranjera', url: 'https://asele.org/media/2025/03/8izquierdogilm-adelcarmenlaselecciondellexicoenlaensananza.pdf' },
51
+ ],
52
+ howTo: [
53
+ { name: 'İçeriği seçin', text: 'Anlamak istediğiniz sohbetlere, medyaya, kitaplara veya belgelere uyan içerik profilini seçin.' },
54
+ { name: 'Bildiğiniz kelimeleri girin', text: 'Tanıdığınız kelimeler, lemalar veya kelime aileleri için tutarlı bir tahmin yazın.' },
55
+ { name: 'Kapsama bandını belirleyin', text: 'Ne kadar desteği kabul edebileceğinize göre %80, %90, %95 veya %98 seçin.' },
56
+ { name: 'Sonraki listeyi oluşturun', text: 'Gerçek hedef içeriğinizden tekrarlanan kelime ve kalıpları seçmek için aradaki farkı ve sonraki eşiği kullanın.' },
57
+ ],
58
+ schemas: [withContext(appSchema), withContext(faqSchema), withContext(howToSchema)],
59
+ };