@jjlmoya/utils-books 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/entries.ts +4 -1
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +1 -1
- package/src/tool/book-reading-time-deadline-planner/bibliography.astro +16 -0
- package/src/tool/book-reading-time-deadline-planner/bibliography.ts +31 -0
- package/src/tool/book-reading-time-deadline-planner/book-reading-time-deadline-planner.css +449 -0
- package/src/tool/book-reading-time-deadline-planner/calendar.test.ts +18 -0
- package/src/tool/book-reading-time-deadline-planner/calendar.ts +56 -0
- package/src/tool/book-reading-time-deadline-planner/component.astro +91 -0
- package/src/tool/book-reading-time-deadline-planner/controller.ts +253 -0
- package/src/tool/book-reading-time-deadline-planner/dom-views.ts +60 -0
- package/src/tool/book-reading-time-deadline-planner/entry.ts +27 -0
- package/src/tool/book-reading-time-deadline-planner/evaluator.ts +17 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/de.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/en.ts +51 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/es.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/fr.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/id.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/it.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/ja.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/ko.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/nl.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/pl.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/pt.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/ru.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/sv.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/tr.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/i18n/zh.ts +45 -0
- package/src/tool/book-reading-time-deadline-planner/index.ts +11 -0
- package/src/tool/book-reading-time-deadline-planner/logic.test.ts +61 -0
- package/src/tool/book-reading-time-deadline-planner/logic.ts +129 -0
- package/src/tool/book-reading-time-deadline-planner/seo.astro +15 -0
- package/src/tool/book-reading-time-deadline-planner/speed-test.test.ts +15 -0
- package/src/tool/book-reading-time-deadline-planner/speed-test.ts +9 -0
- package/src/tool/book-reading-time-deadline-planner/storage.ts +24 -0
- package/src/tool/book-reading-time-deadline-planner/ui.ts +76 -0
- package/src/tool/book-reading-time-deadline-planner/validation.ts +19 -0
- package/src/tools.ts +2 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: 'Crea tu plan de lectura', modeLabel: 'Contar por', pagesModeLabel: 'Páginas', wordsModeLabel: 'Palabras', amountLabel: 'Total por leer', speedLabel: 'Tu velocidad de lectura', difficultyLabel: 'Dificultad del texto', difficultyLightLabel: 'Ligero · 1.2x', difficultyStandardLabel: 'Estándar · 1.0x', difficultyDenseLabel: 'Denso · 0.8x', wordsPerPageLabel: 'Palabras estimadas por página', wordsPerPageHint: 'Rango habitual: 100 a 500', pagesPerHourLabel: 'páginas por hora', wordsPerMinuteLabel: 'palabras por minuto', startDateLabel: 'Fecha de inicio', deadlineLabel: 'Fecha límite', daysPerWeekLabel: 'Días de lectura por semana', sessionsPerDayLabel: 'Sesiones por día de lectura', sessionMinutesLabel: 'Minutos por sesión', minutesRangeLabel: 'De 5 a 240 min', hourShortLabel: 'h', minuteShortLabel: 'min', bufferShortLabel: 'cortas', bufferExtraLabel: 'extra', speedTestLabel: 'Mide tu velocidad de lectura', speedTestHint: 'Usa un fragmento breve y representativo', speedTestPromptLabel: 'Texto que vas a leer', speedTestPlaceholder: 'Pega o escribe aquí una frase o un fragmento breve...', speedTestStartLabel: 'Iniciar temporizador', speedTestFinishLabel: 'He terminado', speedTestElapsedLabel: 'Tiempo', speedTestRateLabel: 'Ritmo estimado', speedTestSecondsLabel: 's', speedTestWpmLabel: 'PPM', speedTestUseLabel: 'Usar estas PPM en modo Palabras', speedTestIdle: 'Escribe un texto y empieza cuando estés preparado.', speedTestRunning: 'Temporizador activo. Lee a tu ritmo natural.', speedTestFinished: 'Prueba terminada. Es una primera estimación, no una referencia fija.', speedTestNeedsText: 'Añade un texto antes de iniciar el temporizador.', speedTestNoWords: 'No se han medido palabras', presetLabel: 'Ritmo rápido', presetSteadyLabel: 'Semana estable', presetWeekendLabel: 'Fin de semana', presetAcademicLabel: 'Ritmo académico', planLabel: 'Tu mapa de lectura', timeNeededLabel: 'Tiempo necesario', readingDaysLabel: 'Días de lectura necesarios', capacityLabel: 'Días de lectura disponibles', dailyPaceLabel: 'Ritmo hasta la fecha límite', estimatedWordsLabel: 'Palabras estimadas', wordsShortLabel: 'palabras', sessionTargetLabel: 'Objetivo por sesión', catchUpLabel: 'Margen para recuperar', finishDateLabel: 'Fin previsto', milestoneLabel: 'Hitos', timelineLabel: 'Línea temporal de lectura', calendarHint: 'Los hitos son referencias de planificación. Mueve la fecha límite o ajusta tu ritmo cuando la vida real interrumpa el plan.', exportCalendarLabel: 'Descargar hitos (.ics)', exportCalendarTitle: 'Hitos de lectura', milestoneStart: 'Inicio', milestoneQuarter: '25 %', milestoneHalf: 'Mitad', milestoneThreeQuarter: '75 %', milestoneFinish: 'Fin', statusOnTrack: 'Hay margen', statusTight: 'Ajuste justo', statusLate: 'Después de la fecha límite', statusInvalid: 'Revisa las fechas', statusOnTrackDetail: 'Tus sesiones disponibles dejan margen para días perdidos o capítulos más lentos.', statusTightDetail: 'El plan encaja, pero tiene poca reserva. Deja una sesión flexible para recuperar.', statusLateDetail: 'El ritmo actual no llega a la fecha límite. Añade sesiones, amplía la fecha o reduce el objetivo.', statusInvalidDetail: 'Elige una fecha de inicio válida y una fecha límite igual o posterior.', sourceLabel: 'Esto es una estimación de ritmo, no una promesa de comprensión ni una velocidad de lectura fija. Mide tu propio ritmo con un texto representativo.',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: '¿Cómo elijo mi velocidad de lectura?', answer: 'Cronometra un fragmento representativo, cuenta sus páginas o palabras y usa el ritmo observado. Los libros densos, técnicos, desconocidos o muy anotados suelen requerir más tiempo.' },
|
|
12
|
+
{ question: '¿El plan garantiza que entenderé el libro?', answer: 'No. Convierte tu ritmo y tu calendario en una estimación. Fluidez y comprensión no son lo mismo, así que reduce la velocidad cuando el texto requiera estudio detallado.' },
|
|
13
|
+
{ question: '¿Qué significa el margen para recuperar?', answer: 'Son las sesiones que quedan después de encajar el tiempo estimado dentro de la fecha límite. Un valor negativo indica que el ritmo configurado no tiene capacidad suficiente.' },
|
|
14
|
+
{ question: '¿Por qué puedo planificar por páginas o palabras?', answer: 'Las páginas son prácticas para un libro impreso y las palabras permiten comparar mejor textos digitales o lecturas asignadas. Elige la unidad que puedas seguir de forma constante.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: 'Elige la unidad de lectura', text: 'Cuenta el libro por páginas o palabras y escribe el total.' },
|
|
19
|
+
{ name: 'Mide tu ritmo real', text: 'Usa una velocidad personal medida, no una promesa genérica de lectura rápida.' },
|
|
20
|
+
{ name: 'Define tu ritmo semanal', text: 'Configura minutos por sesión, sesiones por día de lectura y días de lectura por semana.' },
|
|
21
|
+
{ name: 'Revisa la fecha límite', text: 'Consulta el fin previsto, el ritmo diario y los hitos; reserva el margen para interrupciones reales.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: 'Planificador de ritmo de lectura y fecha límite del libro', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'Convierte un objetivo de páginas o palabras en un calendario de lectura realista. Introduce el volumen, tu velocidad medida, la duración y frecuencia de las sesiones y la fecha en la que quieres terminar.' },
|
|
27
|
+
{ type: 'title', text: 'Usa tu propio ritmo de lectura', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Una prueba cronometrada personal es más útil que una promesa universal de lectura rápida. Mide un fragmento representativo y baja el ritmo cuando el libro sea denso, desconocido o requiera una lectura atenta.' },
|
|
29
|
+
{ type: 'list', items: ['Elige Páginas para un libro impreso o Palabras para un texto digital o asignado.', 'Cronometra un fragmento representativo y usa el ritmo que puedas mantener con la comprensión que necesitas.', 'Define la duración de las sesiones, las sesiones por día y los días de lectura por semana.', 'Usa el margen para recuperar días perdidos en lugar de tratar cada sesión como obligatoria.', 'Compara el plan con lo que realmente avanzas después de las primeras sesiones.'] },
|
|
30
|
+
{ type: 'title', text: 'Interpreta el mapa de la fecha límite', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: 'El tiempo necesario es el esfuerzo estimado a tu ritmo. Los días necesarios lo convierten en sesiones. Los días disponibles estiman la capacidad entre el inicio y la fecha límite según tus días de lectura semanales.' },
|
|
32
|
+
{ type: 'table', headers: ['Resultado', 'Qué indica'], rows: [['Ritmo hasta la fecha límite', 'Cantidad para cada día de lectura disponible'], ['Objetivo por sesión', 'Cantidad para una sesión planificada'], ['Margen para recuperar', 'Sesiones sobrantes después de encajar el esfuerzo'], ['Fin previsto', 'Fecha de finalización si mantienes el ritmo semanal']] },
|
|
33
|
+
{ type: 'tip', title: 'Un calendario no mide la comprensión', html: 'El plan no mide comprensión, dificultad, cansancio, relecturas ni interrupciones. Úsalo como primer compromiso y actualízalo con tu ritmo real, dejando espacio para capítulos difíciles.' },
|
|
34
|
+
{ type: 'title', text: 'Cuando el plan queda justo o llega tarde', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: 'Hay margen cuando las sesiones estimadas caben con reserva. Un ajuste justo merece al menos una sesión flexible. Si el plan supera la fecha límite, amplía el plazo, añade sesiones, aumenta los días de lectura o reduce el objetivo.' },
|
|
36
|
+
{ type: 'tip', title: 'Mide antes de optimizar', html: 'Después de dos o tres sesiones, compara el avance previsto con el real. Si la diferencia continúa, cambia la velocidad en vez de forzar el calendario con una estimación demasiado optimista.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Planificador de ritmo de lectura y fecha límite del libro', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Planificar una fecha de lectura', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'planificador-tiempo-lectura-y-fecha-limite-libro', title: 'Planificador de ritmo de lectura y fecha límite del libro', description: 'Planifica un ritmo de lectura realista, un horario de sesiones y una fecha de finalización a partir de tus páginas o palabras.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: 'Construire votre plan de lecture', modeLabel: 'Compter en', pagesModeLabel: 'Pages', wordsModeLabel: 'Mots', amountLabel: 'Total à lire', speedLabel: 'Votre vitesse de lecture', difficultyLabel: 'Difficulté du texte', difficultyLightLabel: 'Léger · 1.2x', difficultyStandardLabel: 'Standard · 1.0x', difficultyDenseLabel: 'Dense · 0.8x', wordsPerPageLabel: 'Mots estimés par page', wordsPerPageHint: 'Fourchette habituelle: 100 à 500', pagesPerHourLabel: 'pages par heure', wordsPerMinuteLabel: 'mots par minute', startDateLabel: 'Date de début', deadlineLabel: 'Date limite', daysPerWeekLabel: 'Jours de lecture par semaine', sessionsPerDayLabel: 'Sessions par jour de lecture', sessionMinutesLabel: 'Minutes par session', minutesRangeLabel: 'De 5 à 240 min', hourShortLabel: 'h', minuteShortLabel: 'min', bufferShortLabel: 'manquantes', bufferExtraLabel: 'en plus', speedTestLabel: 'Mesurer votre vitesse de lecture', speedTestHint: 'Utilisez un passage court et représentatif', speedTestPromptLabel: 'Passage à lire', speedTestPlaceholder: 'Collez ou saisissez une phrase ou un court passage ici...', speedTestStartLabel: 'Démarrer le minuteur', speedTestFinishLabel: "J'ai terminé", speedTestElapsedLabel: 'Temps écoulé', speedTestRateLabel: 'Rythme estimé', speedTestSecondsLabel: 's', speedTestWpmLabel: 'MPM', speedTestUseLabel: 'Utiliser ces MPM en mode Mots', speedTestIdle: 'Saisissez un passage puis démarrez quand vous êtes prêt.', speedTestRunning: 'Minuteur en cours. Lisez à votre rythme naturel.', speedTestFinished: "Test terminé. Il s'agit d'une première estimation, pas d'une norme.", speedTestNeedsText: 'Ajoutez un passage avant de démarrer le minuteur.', speedTestNoWords: 'Aucun mot mesuré', presetLabel: 'Rythme rapide', presetSteadyLabel: 'Semaine régulière', presetWeekendLabel: 'Focus week-end', presetAcademicLabel: 'Rythme intensif', planLabel: 'Votre carte de lecture', timeNeededLabel: 'Temps nécessaire', readingDaysLabel: 'Jours de lecture nécessaires', capacityLabel: 'Jours de lecture disponibles', dailyPaceLabel: "Rythme jusqu'à la date limite", estimatedWordsLabel: 'Mots estimés', wordsShortLabel: 'mots', sessionTargetLabel: 'Objectif par session', catchUpLabel: 'Marge de rattrapage', finishDateLabel: 'Fin prévue', milestoneLabel: 'Étapes', timelineLabel: 'Calendrier des étapes de lecture', calendarHint: 'Les étapes sont des repères de planification. Déplacez la date limite ou adaptez votre rythme quand la vie réelle interrompt le programme.', exportCalendarLabel: 'Télécharger les étapes (.ics)', exportCalendarTitle: 'Étapes de lecture', milestoneStart: 'Début', milestoneQuarter: '25 %', milestoneHalf: 'Moitié', milestoneThreeQuarter: '75 %', milestoneFinish: 'Fin', statusOnTrack: 'Marge disponible', statusTight: 'Ajusté', statusLate: 'Après la date limite', statusInvalid: 'Vérifier les dates', statusOnTrackDetail: 'Vos sessions disponibles laissent une marge pour les jours manqués ou un chapitre plus lent.', statusTightDetail: 'Le plan tient, mais la réserve est faible. Gardez une session flexible pour rattraper le retard.', statusLateDetail: "Le rythme actuel ne permet pas de tenir la date limite. Ajoutez des sessions, prolongez la période ou réduisez l'objectif.", statusInvalidDetail: 'Choisissez une date de début valide et une date limite égale ou postérieure.', sourceLabel: "Il s'agit d'une estimation de rythme, pas d'une promesse de compréhension ni d'une vitesse fixe. Mesurez votre propre rythme sur un passage représentatif.",
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: 'Comment choisir ma vitesse de lecture ?', answer: 'Chronometrez un passage representatif, comptez ses pages ou ses mots et utilisez le rythme observe. Les livres denses, techniques, inconnus ou tres annotees demandent souvent plus de temps.' },
|
|
12
|
+
{ question: 'Le plan garantit-il que je comprendrai le livre ?', answer: 'Non. Il transforme votre rythme et votre calendrier en estimation. La fluidite et la comprehension ne sont pas equivalentes, alors ralentissez quand le texte exige une lecture attentive.' },
|
|
13
|
+
{ question: 'Que signifie la marge de rattrapage ?', answer: 'Elle indique les sessions restantes apres avoir place le temps estime avant la date limite. Une valeur negative signifie que le rythme choisi n offre pas assez de capacite.' },
|
|
14
|
+
{ question: 'Pourquoi planifier en pages ou en mots ?', answer: 'Les pages sont pratiques pour un livre imprime, tandis que les mots sont plus comparables dans les textes numeriques ou imposes. Choisissez l unite que vous pouvez suivre regulierement.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: 'Choisir l unite de lecture', text: 'Comptez le livre en pages ou en mots, puis saisissez le total.' },
|
|
19
|
+
{ name: 'Mesurer votre rythme', text: 'Utilisez un rythme personnel mesure plutot qu une promesse generale de lecture rapide.' },
|
|
20
|
+
{ name: 'Definir le rythme hebdomadaire', text: 'Reglez les minutes par session, les sessions par jour et les jours de lecture par semaine.' },
|
|
21
|
+
{ name: 'Examiner la date limite', text: 'Consultez la fin prevue, le rythme quotidien et les etapes, puis gardez la marge pour les interruptions reelles.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: 'Planifier le rythme de lecture et la date limite d un livre', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'Transformez un objectif de pages ou de mots en calendrier de lecture realiste. Saisissez le volume, votre vitesse mesuree, la duree et la frequence des sessions ainsi que la date souhaitee.' },
|
|
27
|
+
{ type: 'title', text: 'Utiliser votre propre rythme de lecture', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Un test chronometre personnel est plus utile qu une promesse universelle de lecture rapide. Testez un passage representatif et ralentissez si le livre est dense, inconnu ou destine a une etude attentive.' },
|
|
29
|
+
{ type: 'list', items: ['Choisissez Pages pour un livre imprime ou Mots pour un texte numerique ou impose.', 'Chronometrez un passage representatif et gardez un rythme compatible avec la comprehension souhaitee.', 'Definissez la duree des sessions, les sessions par jour et les jours de lecture par semaine.', 'Utilisez la marge pour les jours manques au lieu de rendre chaque session obligatoire.', 'Comparez le plan avec votre progression reelle apres les premieres sessions.'] },
|
|
30
|
+
{ type: 'title', text: 'Lire la carte de la date limite', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: 'Le temps necessaire represente l effort estime a votre rythme. Les jours necessaires le convertissent en sessions. Les jours disponibles estiment la capacite entre le debut et la date limite selon vos jours de lecture hebdomadaires.' },
|
|
32
|
+
{ type: 'table', headers: ['Resultat', 'Ce qu il indique'], rows: [['Rythme jusqu a la date limite', 'Quantite a couvrir chaque jour disponible'], ['Objectif par session', 'Quantite a viser pendant une session'], ['Marge de rattrapage', 'Sessions restantes apres l estimation'], ['Fin prevue', 'Date de fin si le rythme hebdomadaire reste constant']] },
|
|
33
|
+
{ type: 'tip', title: 'Un calendrier ne mesure pas la comprehension', html: 'Le plan ne mesure ni la comprehension, ni la difficulte, ni la fatigue, ni les relectures, ni les interruptions. Utilisez-le comme premier engagement et mettez-le a jour avec votre rythme reel.' },
|
|
34
|
+
{ type: 'title', text: 'Quand le plan est serre ou en retard', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: 'Une marge disponible signifie que les sessions estimees tiennent avec une reserve. Un plan serre merite au moins une session flexible. Si la fin depasse la date limite, prolongez la periode, ajoutez des sessions ou reduisez l objectif.' },
|
|
36
|
+
{ type: 'tip', title: 'Mesurer avant d optimiser', html: 'Apres deux ou trois sessions, comparez la progression prevue et la progression reelle. Si l ecart persiste, modifiez la vitesse plutot que de forcer un calendrier trop optimiste.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Planifier le rythme de lecture et la date limite d un livre', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Planifier une date de lecture', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'planificateur-temps-lecture-et-echeance-livre', title: 'Planifier le rythme de lecture et la date limite d un livre', description: 'Planifiez un rythme de lecture realiste, un rythme de sessions et une date de fin a partir de votre objectif de pages ou de mots.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: 'Buat rencana membaca', modeLabel: 'Hitung dengan', pagesModeLabel: 'Halaman', wordsModeLabel: 'Kata', amountLabel: 'Total yang dibaca', speedLabel: 'Kecepatan membaca Anda', difficultyLabel: 'Kesulitan teks', difficultyLightLabel: 'Ringan · 1.2x', difficultyStandardLabel: 'Standar · 1.0x', difficultyDenseLabel: 'Padat · 0.8x', wordsPerPageLabel: 'Perkiraan kata per halaman', wordsPerPageHint: 'Kisaran umum: 100 sampai 500', pagesPerHourLabel: 'halaman per jam', wordsPerMinuteLabel: 'kata per menit', startDateLabel: 'Tanggal mulai', deadlineLabel: 'Batas waktu', daysPerWeekLabel: 'Hari membaca per minggu', sessionsPerDayLabel: 'Sesi per hari membaca', sessionMinutesLabel: 'Menit per sesi', minutesRangeLabel: '5 sampai 240 menit', hourShortLabel: 'jam', minuteShortLabel: 'mnt', bufferShortLabel: 'kurang', bufferExtraLabel: 'ekstra', speedTestLabel: 'Ukur kecepatan membaca', speedTestHint: 'Gunakan bacaan pendek yang mewakili', speedTestPromptLabel: 'Bacaan yang akan dibaca', speedTestPlaceholder: 'Tempel atau ketik satu kalimat atau bacaan pendek di sini...', speedTestStartLabel: 'Mulai timer', speedTestFinishLabel: 'Saya selesai', speedTestElapsedLabel: 'Waktu berlalu', speedTestRateLabel: 'Kecepatan perkiraan', speedTestSecondsLabel: 'dtk', speedTestWpmLabel: 'KPM', speedTestUseLabel: 'Gunakan KPM ini dalam mode Kata', speedTestIdle: 'Masukkan bacaan, lalu mulai saat Anda siap.', speedTestRunning: 'Timer berjalan. Bacalah dengan kecepatan alami Anda.', speedTestFinished: 'Tes selesai. Ini perkiraan awal, bukan patokan tetap.', speedTestNeedsText: 'Tambahkan bacaan sebelum memulai timer.', speedTestNoWords: 'Tidak ada kata yang diukur', presetLabel: 'Irama cepat', presetSteadyLabel: 'Minggu teratur', presetWeekendLabel: 'Fokus akhir pekan', presetAcademicLabel: 'Ritme akademik', planLabel: 'Peta membaca Anda', timeNeededLabel: 'Waktu yang dibutuhkan', readingDaysLabel: 'Hari membaca yang dibutuhkan', capacityLabel: 'Hari membaca yang tersedia', dailyPaceLabel: 'Kecepatan sampai batas waktu', estimatedWordsLabel: 'Perkiraan kata', wordsShortLabel: 'kata', sessionTargetLabel: 'Target per sesi', catchUpLabel: 'Cadangan untuk mengejar', finishDateLabel: 'Selesai diperkirakan', milestoneLabel: 'Tonggak', timelineLabel: 'Linimasa tonggak membaca', calendarHint: 'Tonggak adalah penanda rencana. Ubah batas waktu atau irama ketika kehidupan nyata mengganggu jadwal.', exportCalendarLabel: 'Unduh tonggak (.ics)', exportCalendarTitle: 'Tonggak membaca', milestoneStart: 'Mulai', milestoneQuarter: '25%', milestoneHalf: 'Setengah', milestoneThreeQuarter: '75%', milestoneFinish: 'Selesai', statusOnTrack: 'Masih ada ruang', statusTight: 'Pas', statusLate: 'Melewati batas waktu', statusInvalid: 'Periksa tanggal', statusOnTrackDetail: 'Sesi yang tersedia menyisakan cadangan untuk hari yang terlewat atau bab yang lebih lambat.', statusTightDetail: 'Rencana ini muat, tetapi cadangannya sedikit. Sisakan satu sesi untuk mengejar ketertinggalan.', statusLateDetail: 'Irama saat ini tidak cukup sampai batas waktu. Tambah sesi, perpanjang tanggal, atau kurangi target.', statusInvalidDetail: 'Pilih tanggal mulai yang valid dan batas waktu yang sama atau setelahnya.', sourceLabel: 'Ini adalah perkiraan irama, bukan jaminan pemahaman atau kecepatan membaca tetap. Ukur kecepatan Anda sendiri dengan bacaan yang mewakili.',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: 'Bagaimana memilih kecepatan membaca?', answer: 'Ukur waktu untuk bacaan yang mewakili, hitung halaman atau katanya, lalu gunakan kecepatan yang terukur. Buku padat, teknis, baru, atau penuh anotasi biasanya membutuhkan waktu lebih lama.' },
|
|
12
|
+
{ question: 'Apakah rencana ini menjamin saya memahami buku?', answer: 'Tidak. Rencana ini mengubah kecepatan dan jadwal Anda menjadi perkiraan kalender. Kelancaran membaca tidak sama dengan pemahaman, jadi perlambat saat teks membutuhkan telaah mendalam.' },
|
|
13
|
+
{ question: 'Apa arti cadangan untuk mengejar?', answer: 'Ini adalah jumlah sesi yang tersisa setelah waktu membaca yang diperkirakan ditempatkan sebelum batas waktu. Nilai negatif berarti kapasitas irama saat ini tidak mencukupi.' },
|
|
14
|
+
{ question: 'Mengapa bisa merencanakan dengan halaman atau kata?', answer: 'Halaman praktis untuk buku cetak, sedangkan kata lebih mudah dibandingkan pada teks digital atau bacaan tugas. Pilih satuan yang dapat Anda lacak secara konsisten.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: 'Pilih satuan membaca', text: 'Hitung buku dengan halaman atau kata, lalu masukkan jumlah totalnya.' },
|
|
19
|
+
{ name: 'Ukur irama Anda', text: 'Gunakan kecepatan pribadi yang diukur, bukan janji umum tentang membaca cepat.' },
|
|
20
|
+
{ name: 'Atur irama mingguan', text: 'Tentukan menit per sesi, sesi per hari membaca, dan hari membaca per minggu.' },
|
|
21
|
+
{ name: 'Periksa batas waktu', text: 'Tinjau tanggal selesai, kecepatan harian, dan tonggak, lalu simpan cadangan untuk gangguan nyata.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: 'Rencanakan kecepatan membaca dan batas waktu buku', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'Ubah target halaman atau kata menjadi kalender membaca yang realistis. Masukkan jumlah bacaan, kecepatan terukur, durasi dan frekuensi sesi, serta tanggal selesai yang diinginkan.' },
|
|
27
|
+
{ type: 'title', text: 'Gunakan kecepatan membaca Anda sendiri', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Tes waktu pribadi lebih berguna daripada janji membaca cepat yang berlaku umum. Ukur bacaan yang mewakili dan turunkan kecepatannya jika buku padat, baru, atau perlu dibaca dengan teliti.' },
|
|
29
|
+
{ type: 'list', items: ['Pilih Halaman untuk buku cetak atau Kata untuk teks digital dan bacaan tugas.', 'Ukur bacaan yang mewakili dan gunakan kecepatan yang dapat dipertahankan dengan pemahaman yang diperlukan.', 'Atur durasi sesi, sesi per hari, dan hari membaca per minggu.', 'Gunakan cadangan untuk hari yang terlewat, bukan menjadikan setiap sesi sebagai kewajiban.', 'Bandingkan rencana dengan kemajuan nyata setelah beberapa sesi pertama.'] },
|
|
30
|
+
{ type: 'title', text: 'Baca peta batas waktu', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: 'Waktu yang dibutuhkan adalah usaha perkiraan pada kecepatan Anda. Hari membaca yang dibutuhkan mengubahnya menjadi sesi. Hari tersedia memperkirakan kapasitas antara awal dan batas waktu berdasarkan hari membaca mingguan.' },
|
|
32
|
+
{ type: 'table', headers: ['Hasil', 'Artinya'], rows: [['Kecepatan sampai batas waktu', 'Jumlah bacaan untuk setiap hari membaca yang tersedia'], ['Target per sesi', 'Jumlah bacaan untuk satu sesi yang direncanakan'], ['Cadangan untuk mengejar', 'Sesi tersisa setelah usaha dipasang dalam jadwal'], ['Selesai diperkirakan', 'Tanggal selesai jika irama mingguan tetap']] },
|
|
33
|
+
{ type: 'tip', title: 'Kalender bukan pemahaman', html: 'Rencana ini tidak mengukur pemahaman, kesulitan, kelelahan, membaca ulang, atau gangguan. Gunakan sebagai komitmen awal dan perbarui dengan kecepatan nyata Anda.' },
|
|
34
|
+
{ type: 'title', text: 'Saat rencana terlalu ketat atau terlambat', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: 'Masih ada ruang jika sesi perkiraan muat dengan cadangan. Rencana yang pas sebaiknya memiliki satu sesi fleksibel. Jika selesai melewati batas waktu, perpanjang tanggal, tambah sesi, tambah hari membaca, atau kurangi target.' },
|
|
36
|
+
{ type: 'tip', title: 'Ukur sebelum mengoptimalkan', html: 'Setelah dua atau tiga sesi, bandingkan kemajuan yang direncanakan dengan kemajuan nyata. Jika selisih bertahan, ubah kecepatan, bukan memaksa kalender mengikuti perkiraan yang terlalu optimistis.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Rencanakan kecepatan membaca dan batas waktu buku', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Merencanakan batas waktu membaca', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'perencana-waktu-baca-dan-tenggat-buku', title: 'Rencanakan kecepatan membaca dan batas waktu buku', description: 'Rencanakan irama membaca, jadwal sesi, dan tanggal selesai berdasarkan target halaman atau kata.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: 'Crea il tuo piano di lettura', modeLabel: 'Conta per', pagesModeLabel: 'Pagine', wordsModeLabel: 'Parole', amountLabel: 'Totale da leggere', speedLabel: 'La tua velocità di lettura', difficultyLabel: 'Difficoltà del testo', difficultyLightLabel: 'Leggero · 1.2x', difficultyStandardLabel: 'Standard · 1.0x', difficultyDenseLabel: 'Denso · 0.8x', wordsPerPageLabel: 'Parole stimate per pagina', wordsPerPageHint: 'Intervallo tipico: da 100 a 500', pagesPerHourLabel: 'pagine all ora', wordsPerMinuteLabel: 'parole al minuto', startDateLabel: 'Data di inizio', deadlineLabel: 'Scadenza', daysPerWeekLabel: 'Giorni di lettura a settimana', sessionsPerDayLabel: 'Sessioni per giorno di lettura', sessionMinutesLabel: 'Minuti per sessione', minutesRangeLabel: 'Da 5 a 240 min', hourShortLabel: 'h', minuteShortLabel: 'min', bufferShortLabel: 'mancanti', bufferExtraLabel: 'extra', speedTestLabel: 'Misura la tua velocità di lettura', speedTestHint: 'Usa un brano breve e rappresentativo', speedTestPromptLabel: 'Brano da leggere', speedTestPlaceholder: 'Incolla o scrivi qui una frase o un breve brano...', speedTestStartLabel: 'Avvia timer', speedTestFinishLabel: 'Ho finito', speedTestElapsedLabel: 'Tempo trascorso', speedTestRateLabel: 'Ritmo stimato', speedTestSecondsLabel: 's', speedTestWpmLabel: 'PPM', speedTestUseLabel: 'Usa questi PPM nella modalità Parole', speedTestIdle: 'Inserisci un brano e avvia il timer quando sei pronto.', speedTestRunning: 'Timer attivo. Leggi al tuo ritmo naturale.', speedTestFinished: 'Test completato. È una prima stima, non un riferimento fisso.', speedTestNeedsText: 'Aggiungi un brano prima di avviare il timer.', speedTestNoWords: 'Nessuna parola misurata', presetLabel: 'Ritmo rapido', presetSteadyLabel: 'Settimana regolare', presetWeekendLabel: 'Focus del weekend', presetAcademicLabel: 'Ritmo di studio', planLabel: 'La tua mappa di lettura', timeNeededLabel: 'Tempo necessario', readingDaysLabel: 'Giorni di lettura necessari', capacityLabel: 'Giorni di lettura disponibili', dailyPaceLabel: 'Ritmo entro la scadenza', estimatedWordsLabel: 'Parole stimate', wordsShortLabel: 'parole', sessionTargetLabel: 'Obiettivo per sessione', catchUpLabel: 'Margine di recupero', finishDateLabel: 'Fine prevista', milestoneLabel: 'Tappe', timelineLabel: 'Cronologia delle tappe di lettura', calendarHint: 'Le tappe sono riferimenti di pianificazione. Sposta la scadenza o adatta il ritmo quando la vita reale interrompe il programma.', exportCalendarLabel: 'Scarica le tappe (.ics)', exportCalendarTitle: 'Tappe di lettura', milestoneStart: 'Inizio', milestoneQuarter: '25%', milestoneHalf: 'Metà', milestoneThreeQuarter: '75%', milestoneFinish: 'Fine', statusOnTrack: 'C è margine', statusTight: 'A misura', statusLate: 'Oltre la scadenza', statusInvalid: 'Controlla le date', statusOnTrackDetail: 'Le sessioni disponibili lasciano margine per i giorni persi o per un capitolo più lento.', statusTightDetail: 'Il piano è possibile, ma la riserva è ridotta. Lascia una sessione flessibile per recuperare.', statusLateDetail: 'Il ritmo attuale non consente di rispettare la scadenza. Aggiungi sessioni, prolunga il periodo o riduci l obiettivo.', statusInvalidDetail: 'Scegli una data di inizio valida e una scadenza uguale o successiva.', sourceLabel: 'Questa è una stima del ritmo, non una promessa di comprensione né una velocità di lettura fissa. Misura il tuo ritmo su un brano rappresentativo.',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: 'Come scelgo la mia velocità di lettura?', answer: 'Cronometra un brano rappresentativo, conta le pagine o le parole e usa il ritmo osservato. I libri densi, tecnici, nuovi o ricchi di annotazioni richiedono spesso più tempo.' },
|
|
12
|
+
{ question: 'Il piano garantisce che capirò il libro?', answer: 'No. Trasforma il tuo ritmo e il tuo calendario in una stima. Fluidità e comprensione non sono la stessa cosa, quindi rallenta quando il testo richiede uno studio attento.' },
|
|
13
|
+
{ question: 'Che cosa significa il margine di recupero?', answer: 'Indica le sessioni che restano dopo aver collocato il tempo stimato prima della scadenza. Un valore negativo significa che il ritmo scelto non offre capacità sufficiente.' },
|
|
14
|
+
{ question: 'Perché posso pianificare per pagine o parole?', answer: 'Le pagine sono pratiche per un libro stampato, mentre le parole sono più confrontabili nei testi digitali o assegnati. Scegli l unità che puoi seguire con costanza.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: 'Scegli l unità di lettura', text: 'Conta il libro in pagine o parole e inserisci il totale.' },
|
|
19
|
+
{ name: 'Misura il tuo ritmo', text: 'Usa un ritmo personale misurato invece di una promessa generica di lettura veloce.' },
|
|
20
|
+
{ name: 'Definisci il ritmo settimanale', text: 'Imposta minuti per sessione, sessioni per giorno di lettura e giorni di lettura a settimana.' },
|
|
21
|
+
{ name: 'Controlla la scadenza', text: 'Esamina la fine prevista, il ritmo giornaliero e le tappe, poi conserva il margine per le interruzioni reali.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: 'Pianificare il ritmo di lettura e la scadenza di un libro', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'Trasforma un obiettivo di pagine o parole in un calendario di lettura realistico. Inserisci il volume, la velocità misurata, la durata e la frequenza delle sessioni e la data desiderata.' },
|
|
27
|
+
{ type: 'title', text: 'Usa il tuo ritmo di lettura', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Un test personale a tempo è più utile di una promessa universale di lettura veloce. Prova un brano rappresentativo e rallenta quando il libro è denso, nuovo o richiede una lettura approfondita.' },
|
|
29
|
+
{ type: 'list', items: ['Scegli Pagine per un libro stampato o Parole per un testo digitale o assegnato.', 'Cronometra un brano rappresentativo e usa un ritmo compatibile con la comprensione necessaria.', 'Imposta la durata delle sessioni, le sessioni giornaliere e i giorni di lettura settimanali.', 'Usa il margine per i giorni persi invece di rendere obbligatoria ogni sessione.', 'Confronta il piano con i progressi reali dopo le prime sessioni.'] },
|
|
30
|
+
{ type: 'title', text: 'Leggi la mappa della scadenza', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: 'Il tempo necessario è lo sforzo stimato al ritmo scelto. I giorni necessari lo trasformano in sessioni. I giorni disponibili stimano la capacità tra inizio e scadenza in base ai giorni di lettura settimanali.' },
|
|
32
|
+
{ type: 'table', headers: ['Risultato', 'Che cosa indica'], rows: [['Ritmo entro la scadenza', 'Quantità da coprire ogni giorno disponibile'], ['Obiettivo per sessione', 'Quantità da raggiungere in una sessione'], ['Margine di recupero', 'Sessioni rimaste dopo aver inserito lo sforzo'], ['Fine prevista', 'Data di fine mantenendo il ritmo settimanale']] },
|
|
33
|
+
{ type: 'tip', title: 'Un calendario non misura la comprensione', html: 'Il piano non misura comprensione, difficoltà, stanchezza, riletture o interruzioni. Usalo come primo impegno e aggiornalo con il tuo ritmo reale.' },
|
|
34
|
+
{ type: 'title', text: 'Quando il piano è stretto o in ritardo', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: 'C è margine quando le sessioni stimate entrano con una riserva. Un piano a misura merita almeno una sessione flessibile. Se superi la scadenza, prolunga il periodo, aggiungi sessioni o riduci l obiettivo.' },
|
|
36
|
+
{ type: 'tip', title: 'Misura prima di ottimizzare', html: 'Dopo due o tre sessioni, confronta il progresso previsto con quello reale. Se la differenza persiste, modifica la velocità invece di forzare un calendario troppo ottimista.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Pianificare il ritmo di lettura e la scadenza di un libro', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Pianificare una scadenza di lettura', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'pianificatore-tempo-lettura-e-scadenza-libro', title: 'Pianificare il ritmo di lettura e la scadenza di un libro', description: 'Pianifica un ritmo di lettura realistico, un calendario di sessioni e una data di fine dal tuo obiettivo di pagine o parole.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: '読書プランを作る', modeLabel: '数え方', pagesModeLabel: 'ページ', wordsModeLabel: '単語', amountLabel: '読む量', speedLabel: '読書速度', difficultyLabel: '文章の難しさ', difficultyLightLabel: '読みやすい · 1.2x', difficultyStandardLabel: '標準 · 1.0x', difficultyDenseLabel: '難しい · 0.8x', wordsPerPageLabel: '1ページあたりの推定単語数', wordsPerPageHint: '一般的な範囲: 100から500', pagesPerHourLabel: 'ページ/時', wordsPerMinuteLabel: '単語/分', startDateLabel: '開始日', deadlineLabel: '期限', daysPerWeekLabel: '週の読書日数', sessionsPerDayLabel: '読書日のセッション数', sessionMinutesLabel: '1セッションの分数', minutesRangeLabel: '5から240分', hourShortLabel: '時間', minuteShortLabel: '分', bufferShortLabel: '不足', bufferExtraLabel: '余裕', speedTestLabel: '読書速度を測る', speedTestHint: '短く代表的な文章を使ってください', speedTestPromptLabel: '読む文章', speedTestPlaceholder: 'ここに一文または短い文章を貼り付けてください...', speedTestStartLabel: 'タイマーを開始', speedTestFinishLabel: '読み終えた', speedTestElapsedLabel: '経過時間', speedTestRateLabel: '推定ペース', speedTestSecondsLabel: '秒', speedTestWpmLabel: '単語/分', speedTestUseLabel: 'この速度を単語モードで使う', speedTestIdle: '文章を入力し、準備ができたら開始してください。', speedTestRunning: 'タイマーが動作中です。自然なペースで読んでください。', speedTestFinished: 'テスト完了。これは最初の目安であり、固定値ではありません。', speedTestNeedsText: 'タイマーを開始する前に文章を追加してください。', speedTestNoWords: '測定できる単語がありません', presetLabel: 'クイック設定', presetSteadyLabel: '安定した週', presetWeekendLabel: '週末集中', presetAcademicLabel: '学習用ペース', planLabel: '読書マップ', timeNeededLabel: '必要な時間', readingDaysLabel: '必要な読書日数', capacityLabel: '利用できる読書日数', dailyPaceLabel: '期限までのペース', estimatedWordsLabel: '推定単語数', wordsShortLabel: '単語', sessionTargetLabel: 'セッションごとの目標', catchUpLabel: '遅れを取り戻す余裕', finishDateLabel: '終了予定日', milestoneLabel: '節目', timelineLabel: '読書の節目タイムライン', calendarHint: '節目は計画上の目印です。現実の予定で中断したら、期限やペースを調整してください。', exportCalendarLabel: '節目をダウンロード (.ics)', exportCalendarTitle: '読書の節目', milestoneStart: '開始', milestoneQuarter: '25%', milestoneHalf: '半分', milestoneThreeQuarter: '75%', milestoneFinish: '終了', statusOnTrack: '余裕あり', statusTight: 'ぎりぎり', statusLate: '期限超過', statusInvalid: '日付を確認', statusOnTrackDetail: '利用できるセッションに、休んだ日や遅い章のための余裕があります。', statusTightDetail: '計画は収まりますが、余裕は少なめです。遅れを取り戻すためのセッションを一つ空けておきましょう。', statusLateDetail: '現在のペースでは期限に間に合いません。セッションや読書日を増やすか、目標を減らしてください。', statusInvalidDetail: '有効な開始日と、開始日以降の期限を選んでください。', sourceLabel: 'これはペースの推定であり、理解度の保証や固定された読書速度ではありません。代表的な文章で自分の速度を測ってください。',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: '読書速度はどう選べばよいですか?', answer: '代表的な文章を読む時間を測り、ページ数または単語数から実際のペースを出してください。難しい本、専門書、初めて読む内容、注釈の多い本は時間がかかります。' },
|
|
12
|
+
{ question: 'このプランで本の内容を理解できると保証されますか?', answer: 'いいえ。速度と予定をカレンダーの目安に変換するだけです。読む速さと理解度は同じではないため、詳しく読む必要がある箇所では速度を下げてください。' },
|
|
13
|
+
{ question: '遅れを取り戻す余裕とは何ですか?', answer: '推定した読書時間を期限までに配置したあとに残るセッション数です。負の値なら、現在のペースでは必要な量を収められません。' },
|
|
14
|
+
{ question: 'ページと単語の両方で計画できるのはなぜですか?', answer: '紙の本ではページが便利で、電子書籍や課題文では単語数のほうが比較しやすい場合があります。継続して記録できる単位を選んでください。' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: '読む単位を選ぶ', text: '本をページまたは単語で数え、合計量を入力します。' },
|
|
19
|
+
{ name: '自分の速度を測る', text: '一般的な速読の宣伝ではなく、実際に測った自分のペースを使います。' },
|
|
20
|
+
{ name: '週のリズムを決める', text: '1回の分数、読書日のセッション数、週の読書日数を設定します。' },
|
|
21
|
+
{ name: '期限を確認する', text: '終了予定、1日あたりの量、節目を確認し、現実の中断のために余裕を残します。' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: '読書ペースと本の期限を計画する', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'ページ数または単語数の目標を、現実的な読書カレンダーに変換します。読む量、測定した速度、セッションの長さと頻度、読み終えたい日を入力してください。' },
|
|
27
|
+
{ type: 'title', text: '自分の読書速度を使う', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: '個人で時間を測った結果は、一般的な速読の目安より役立ちます。代表的な文章で測定し、内容が難しい、未知である、精読が必要である場合は速度を下げてください。' },
|
|
29
|
+
{ type: 'list', items: ['紙の本ならページ、電子文書や課題文なら単語を選びます。', '代表的な文章を測り、必要な理解度を保てる速度を使います。', 'セッションの長さ、1日の回数、週の読書日数を設定します。', 'すべてのセッションを義務にせず、休んだ日のために余裕を使います。', '数回読んだあと、計画と実際の進み方を比べます。'] },
|
|
30
|
+
{ type: 'title', text: '期限のマップを読む', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: '必要な時間は、設定した速度での推定作業量です。必要な読書日数は、それをセッションに変換したものです。利用できる読書日数は、週の読書日数を使って開始日から期限までの容量を見積もります。' },
|
|
32
|
+
{ type: 'table', headers: ['結果', '意味'], rows: [['期限までのペース', '利用できる各読書日に進める量'], ['セッションごとの目標', '1回のセッションで目指す量'], ['遅れを取り戻す余裕', '推定作業量を配置したあとに残るセッション'], ['終了予定日', '週のリズムを保った場合の終了日']] },
|
|
33
|
+
{ type: 'tip', title: 'カレンダーは理解度を測りません', html: 'この計画は理解度、難しさ、疲れ、読み返し、中断を測定しません。最初の約束として使い、実際のペースで更新してください。' },
|
|
34
|
+
{ type: 'title', text: '計画が厳しい、または遅れている場合', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: '余裕ありは、推定セッションが予備を残して収まる状態です。ぎりぎりの計画には、柔軟に使えるセッションを一つ用意しましょう。期限を超えるなら、期間を延ばす、回数を増やす、読書日を増やす、目標を減らす方法があります。' },
|
|
36
|
+
{ type: 'tip', title: '最適化する前に測る', html: '2、3回読んだら、予定した進み方と実際の進み方を比べてください。差が続くなら、楽観的すぎる予定を無理に守らず速度を修正します。' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: '読書ペースと本の期限を計画する', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'JPY' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: '読書の期限を計画する', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'book-reading-time-deadline-planner', title: '読書ペースと本の期限を計画する', description: 'ページ数または単語数から、現実的な読書ペース、セッション、終了日を計画します。', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: '독서 계획 만들기', modeLabel: '계산 기준', pagesModeLabel: '페이지', wordsModeLabel: '단어', amountLabel: '읽을 총량', speedLabel: '읽기 속도', difficultyLabel: '텍스트 난이도', difficultyLightLabel: '쉬움 · 1.2x', difficultyStandardLabel: '표준 · 1.0x', difficultyDenseLabel: '어려움 · 0.8x', wordsPerPageLabel: '페이지당 예상 단어 수', wordsPerPageHint: '일반 범위: 100에서 500', pagesPerHourLabel: '페이지/시간', wordsPerMinuteLabel: '단어/분', startDateLabel: '시작일', deadlineLabel: '마감일', daysPerWeekLabel: '주간 독서 일수', sessionsPerDayLabel: '독서일당 세션 수', sessionMinutesLabel: '세션당 시간', minutesRangeLabel: '5에서 240분', hourShortLabel: '시간', minuteShortLabel: '분', bufferShortLabel: '부족', bufferExtraLabel: '여유', speedTestLabel: '읽기 속도 측정', speedTestHint: '짧고 대표적인 글을 사용하세요', speedTestPromptLabel: '읽을 글', speedTestPlaceholder: '여기에 한 문장이나 짧은 글을 붙여 넣으세요...', speedTestStartLabel: '타이머 시작', speedTestFinishLabel: '다 읽었습니다', speedTestElapsedLabel: '경과 시간', speedTestRateLabel: '예상 속도', speedTestSecondsLabel: '초', speedTestWpmLabel: '단어/분', speedTestUseLabel: '이 속도를 단어 모드에 사용', speedTestIdle: '글을 입력하고 준비되면 시작하세요.', speedTestRunning: '타이머가 실행 중입니다. 평소 속도로 읽으세요.', speedTestFinished: '테스트 완료. 첫 번째 추정치이며 고정된 기준은 아닙니다.', speedTestNeedsText: '타이머를 시작하기 전에 글을 추가하세요.', speedTestNoWords: '측정된 단어가 없습니다', presetLabel: '빠른 리듬', presetSteadyLabel: '규칙적인 주간 계획', presetWeekendLabel: '주말 집중', presetAcademicLabel: '학습 집중', planLabel: '독서 지도', timeNeededLabel: '필요한 시간', readingDaysLabel: '필요한 독서일', capacityLabel: '가능한 독서일', dailyPaceLabel: '마감일까지의 속도', estimatedWordsLabel: '예상 단어 수', wordsShortLabel: '단어', sessionTargetLabel: '세션별 목표', catchUpLabel: '따라잡기 여유', finishDateLabel: '예상 완료일', milestoneLabel: '이정표', timelineLabel: '독서 이정표 일정', calendarHint: '이정표는 계획을 위한 기준점입니다. 실제 일정으로 중단되면 마감일이나 속도를 조정하세요.', exportCalendarLabel: '이정표 다운로드 (.ics)', exportCalendarTitle: '독서 이정표', milestoneStart: '시작', milestoneQuarter: '25%', milestoneHalf: '절반', milestoneThreeQuarter: '75%', milestoneFinish: '완료', statusOnTrack: '여유 있음', statusTight: '빠듯함', statusLate: '마감일 초과', statusInvalid: '날짜 확인', statusOnTrackDetail: '가능한 세션에 빠진 날이나 느린 장을 위한 여유가 있습니다.', statusTightDetail: '계획은 맞지만 여유가 적습니다. 따라잡을 수 있도록 한 세션을 유연하게 남겨 두세요.', statusLateDetail: '현재 속도로는 마감일까지 끝낼 수 없습니다. 세션이나 독서일을 늘리거나 목표를 줄이세요.', statusInvalidDetail: '유효한 시작일과 시작일 이후의 마감일을 선택하세요.', sourceLabel: '이 도구는 속도를 추정할 뿐 이해도를 보장하거나 고정된 읽기 속도를 제시하지 않습니다. 대표적인 글로 자신의 속도를 측정하세요.',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: '읽기 속도는 어떻게 정하나요?', answer: '대표적인 글을 읽는 시간을 재고 페이지나 단어 수를 세어 실제 속도를 구하세요. 어렵거나 기술적이거나 익숙하지 않거나 주석이 많은 책은 시간이 더 걸립니다.' },
|
|
12
|
+
{ question: '이 계획이 책을 이해한다고 보장하나요?', answer: '아니요. 읽기 속도와 일정으로 달력상의 추정치를 만들 뿐입니다. 읽는 유창함과 이해도는 같지 않으므로 깊이 읽어야 할 부분에서는 속도를 낮추세요.' },
|
|
13
|
+
{ question: '따라잡기 여유는 무엇인가요?', answer: '추정한 독서 시간을 마감일까지 배치한 뒤 남는 세션 수입니다. 음수라면 현재 리듬으로는 필요한 양을 담을 수 없습니다.' },
|
|
14
|
+
{ question: '왜 페이지와 단어 중에서 고를 수 있나요?', answer: '인쇄본에는 페이지가 편리하고 디지털 글이나 과제에는 단어 수가 더 비교하기 쉽습니다. 꾸준히 기록할 수 있는 단위를 선택하세요.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: '독서 단위 선택', text: '책을 페이지나 단어로 세고 전체 양을 입력하세요.' },
|
|
19
|
+
{ name: '실제 속도 측정', text: '일반적인 속독 홍보가 아니라 직접 측정한 개인 속도를 사용하세요.' },
|
|
20
|
+
{ name: '주간 리듬 설정', text: '세션 시간, 독서일당 세션 수, 주간 독서 일수를 정하세요.' },
|
|
21
|
+
{ name: '마감일 확인', text: '예상 완료일과 이정표를 확인하고 실제 중단을 위한 여유를 남기세요.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: '독서 속도와 책 마감일 계획하기', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: '페이지 또는 단어 목표를 현실적인 독서 일정으로 바꿉니다. 읽을 양, 측정한 속도, 세션의 길이와 빈도, 끝내고 싶은 날짜를 입력하세요.' },
|
|
27
|
+
{ type: 'title', text: '자신의 독서 속도 사용하기', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: '직접 시간을 잰 결과가 일반적인 속독 약속보다 유용합니다. 대표적인 글로 측정하고 내용이 어렵거나 낯설거나 자세한 읽기가 필요하면 속도를 낮추세요.' },
|
|
29
|
+
{ type: 'list', items: ['인쇄된 책에는 페이지, 디지털 글이나 과제에는 단어를 선택하세요.', '대표적인 글을 측정하고 필요한 이해도를 유지할 수 있는 속도를 사용하세요.', '세션 시간, 하루 세션 수, 주간 독서 일수를 설정하세요.', '모든 세션을 의무로 만들지 말고 빠진 날을 위한 여유를 사용하세요.', '처음 몇 세션 뒤 계획과 실제 진도를 비교하세요.'] },
|
|
30
|
+
{ type: 'title', text: '마감일 지도를 읽는 법', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: '필요한 시간은 선택한 속도로 계산한 추정 작업량입니다. 필요한 독서일은 이를 세션으로 바꿉니다. 가능한 독서일은 주간 독서 일수를 기준으로 시작일부터 마감일까지의 용량을 추정합니다.' },
|
|
32
|
+
{ type: 'table', headers: ['결과', '의미'], rows: [['마감일까지의 속도', '가능한 각 독서일에 읽을 양'], ['세션별 목표', '한 세션에서 목표로 할 양'], ['따라잡기 여유', '추정 작업량을 배치한 뒤 남는 세션'], ['예상 완료일', '주간 리듬을 유지했을 때의 종료일']] },
|
|
33
|
+
{ type: 'tip', title: '달력은 이해도를 측정하지 않습니다', html: '이 계획은 이해도, 난이도, 피로, 다시 읽기, 중단을 측정하지 않습니다. 첫 약속으로 사용하고 실제 속도로 업데이트하세요.' },
|
|
34
|
+
{ type: 'title', text: '계획이 빠듯하거나 늦어지는 경우', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: '여유 있음은 추정 세션이 예비 시간을 남기고 들어가는 상태입니다. 빠듯한 계획에는 유연한 세션을 하나 남겨 두는 것이 좋습니다. 마감일을 넘는다면 기간을 늘리거나 세션과 독서일을 추가하거나 목표를 줄이세요.' },
|
|
36
|
+
{ type: 'tip', title: '최적화하기 전에 측정하세요', html: '두세 번 읽은 뒤 계획한 진도와 실제 진도를 비교하세요. 차이가 계속되면 지나치게 낙관적인 달력을 강요하지 말고 속도를 수정하세요.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: '독서 속도와 책 마감일 계획하기', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'KRW' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: '독서 마감일 계획하기', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'book-reading-time-deadline-planner', title: '독서 속도와 책 마감일 계획하기', description: '페이지 또는 단어 목표를 바탕으로 현실적인 독서 속도와 세션, 완료일을 계획하세요.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: 'Maak je leesplan', modeLabel: 'Tellen in', pagesModeLabel: 'Pagina s', wordsModeLabel: 'Woorden', amountLabel: 'Totaal te lezen', speedLabel: 'Je leessnelheid', difficultyLabel: 'Moeilijkheid van de tekst', difficultyLightLabel: 'Licht · 1.2x', difficultyStandardLabel: 'Standaard · 1.0x', difficultyDenseLabel: 'Dicht · 0.8x', wordsPerPageLabel: 'Geschat aantal woorden per pagina', wordsPerPageHint: 'Gebruikelijk bereik: 100 tot 500', pagesPerHourLabel: 'pagina s per uur', wordsPerMinuteLabel: 'woorden per minuut', startDateLabel: 'Startdatum', deadlineLabel: 'Deadline', daysPerWeekLabel: 'Leesdagen per week', sessionsPerDayLabel: 'Sessies per leesdag', sessionMinutesLabel: 'Minuten per sessie', minutesRangeLabel: '5 tot 240 min.', hourShortLabel: 'uur', minuteShortLabel: 'min.', bufferShortLabel: 'tekort', bufferExtraLabel: 'extra', speedTestLabel: 'Meet je leessnelheid', speedTestHint: 'Gebruik een korte, representatieve tekst', speedTestPromptLabel: 'Te lezen tekst', speedTestPlaceholder: 'Plak of typ hier een zin of korte tekst...', speedTestStartLabel: 'Timer starten', speedTestFinishLabel: 'Ik ben klaar', speedTestElapsedLabel: 'Verstreken', speedTestRateLabel: 'Geschat tempo', speedTestSecondsLabel: 'sec.', speedTestWpmLabel: 'WPM', speedTestUseLabel: 'Gebruik deze WPM in de woordenmodus', speedTestIdle: 'Voer een tekst in en start wanneer je klaar bent.', speedTestRunning: 'Timer loopt. Lees in je natuurlijke tempo.', speedTestFinished: 'Test voltooid. Dit is een eerste schatting, geen vaste norm.', speedTestNeedsText: 'Voeg tekst toe voordat je de timer start.', speedTestNoWords: 'Geen woorden gemeten', presetLabel: 'Snel ritme', presetSteadyLabel: 'Gelijkmatige week', presetWeekendLabel: 'Weekendfocus', presetAcademicLabel: 'Studieritme', planLabel: 'Je leeskaart', timeNeededLabel: 'Benodigde tijd', readingDaysLabel: 'Benodigde leesdagen', capacityLabel: 'Beschikbare leesdagen', dailyPaceLabel: 'Tempo tot de deadline', estimatedWordsLabel: 'Geschatte woorden', wordsShortLabel: 'woorden', sessionTargetLabel: 'Doel per sessie', catchUpLabel: 'Inhaalruimte', finishDateLabel: 'Verwachte einddatum', milestoneLabel: 'Mijlpalen', timelineLabel: 'Tijdlijn van leesmijlpalen', calendarHint: 'Mijlpalen zijn planningspunten. Verplaats de deadline of pas je ritme aan wanneer het echte leven je plan onderbreekt.', exportCalendarLabel: 'Mijlpalen downloaden (.ics)', exportCalendarTitle: 'Leesmijlpalen', milestoneStart: 'Start', milestoneQuarter: '25%', milestoneHalf: 'Half', milestoneThreeQuarter: '75%', milestoneFinish: 'Einde', statusOnTrack: 'Ruimte in het plan', statusTight: 'Krap passend', statusLate: 'Na de deadline', statusInvalid: 'Controleer de datums', statusOnTrackDetail: 'Je beschikbare sessies laten ruimte voor gemiste dagen of een trager hoofdstuk.', statusTightDetail: 'Het plan past, maar er is weinig reserve. Houd een sessie flexibel om achterstand in te halen.', statusLateDetail: 'Het huidige ritme haalt de deadline niet. Voeg sessies toe, verleng de periode of verlaag het doel.', statusInvalidDetail: 'Kies een geldige startdatum en een deadline op of na die datum.', sourceLabel: 'Dit is een schatting van je tempo, geen belofte over begrip en geen vaste leessnelheid. Meet je eigen tempo met een representatieve tekst.',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: 'Hoe kies ik mijn leessnelheid?', answer: 'Meet de tijd voor een representatieve tekst, tel de pagina s of woorden en gebruik het gemeten tempo. Dichte, technische, onbekende of sterk geannoteerde boeken kosten meestal meer tijd.' },
|
|
12
|
+
{ question: 'Garandeert het plan dat ik het boek begrijp?', answer: 'Nee. Het zet je eigen tempo en planning om in een kalenderinschatting. Leesvaardigheid en begrip zijn niet hetzelfde, dus vertraag bij tekst die aandachtige studie vraagt.' },
|
|
13
|
+
{ question: 'Wat betekent de inhaalruimte?', answer: 'Dit is het aantal sessies dat overblijft nadat de geschatte leestijd voor de deadline is ingepland. Een negatieve waarde betekent dat je huidige ritme niet genoeg capaciteit heeft.' },
|
|
14
|
+
{ question: 'Waarom kan ik per pagina of woord plannen?', answer: 'Pagina s zijn handig voor een gedrukt boek, terwijl woorden beter vergelijkbaar zijn in digitale teksten of opdrachten. Kies de eenheid die je consequent kunt volgen.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: 'Kies de leeseenheid', text: 'Tel het boek in pagina s of woorden en voer het totaal in.' },
|
|
19
|
+
{ name: 'Meet je eigen tempo', text: 'Gebruik een persoonlijk gemeten tempo in plaats van een algemene belofte over snel lezen.' },
|
|
20
|
+
{ name: 'Stel het weekritme in', text: 'Kies minuten per sessie, sessies per leesdag en leesdagen per week.' },
|
|
21
|
+
{ name: 'Controleer de deadline', text: 'Bekijk de einddatum, het dagtempo en de mijlpalen en houd ruimte voor echte onderbrekingen.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: 'Plan je leestempo en de deadline van een boek', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'Zet een doel in pagina s of woorden om in een realistische leeskalender. Vul de omvang, je gemeten leessnelheid, de duur en frequentie van sessies en je gewenste einddatum in.' },
|
|
27
|
+
{ type: 'title', text: 'Gebruik je eigen leessnelheid', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Een persoonlijke tijdmeting is nuttiger dan een algemene belofte over snel lezen. Test een representatief fragment en verlaag het tempo bij dichte, onbekende of grondig te lezen tekst.' },
|
|
29
|
+
{ type: 'list', items: ['Kies Pagina s voor een gedrukt boek of Woorden voor digitale tekst en opdrachten.', 'Meet een representatief fragment en gebruik een tempo dat je met het gewenste begrip kunt volhouden.', 'Stel sessieduur, sessies per dag en leesdagen per week in.', 'Gebruik de inhaalruimte voor gemiste dagen in plaats van elke sessie verplicht te maken.', 'Vergelijk het plan na de eerste sessies met je werkelijke voortgang.'] },
|
|
30
|
+
{ type: 'title', text: 'Lees de deadlinekaart', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: 'Benodigde tijd is de geschatte inspanning bij je gekozen tempo. Benodigde leesdagen zetten die inspanning om in sessies. Beschikbare leesdagen schatten de capaciteit tussen start en deadline op basis van je leesdagen per week.' },
|
|
32
|
+
{ type: 'table', headers: ['Resultaat', 'Betekenis'], rows: [['Tempo tot de deadline', 'Hoeveelheid voor elke beschikbare leesdag'], ['Doel per sessie', 'Hoeveelheid voor een geplande sessie'], ['Inhaalruimte', 'Sessies die overblijven na het inplannen'], ['Verwachte einddatum', 'Einddatum bij een constant weekritme']] },
|
|
33
|
+
{ type: 'tip', title: 'Een kalender meet geen begrip', html: 'Het plan meet geen begrip, moeilijkheid, vermoeidheid, herlezen of onderbrekingen. Gebruik het als eerste afspraak met jezelf en werk het bij met je echte tempo.' },
|
|
34
|
+
{ type: 'title', text: 'Wanneer het plan krap of te laat is', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: 'Er is ruimte als de geschatte sessies met reserve passen. Een krap plan heeft minstens een flexibele inhaalsessie nodig. Als je na de deadline uitkomt, verleng je de periode, voeg je sessies toe of verlaag je het doel.' },
|
|
36
|
+
{ type: 'tip', title: 'Meet voordat je optimaliseert', html: 'Vergelijk na twee of drie sessies je geplande en werkelijke voortgang. Blijft het verschil bestaan, pas dan je snelheid aan in plaats van een te optimistische kalender te forceren.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Plan je leestempo en de deadline van een boek', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Een leesdeadline plannen', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'planner-leestijd-en-deadline-voor-boek', title: 'Plan je leestempo en de deadline van een boek', description: 'Plan een realistisch leestempo, sessieritme en einddatum op basis van je doel in pagina s of woorden.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: 'Utwórz plan czytania', modeLabel: 'Jednostka', pagesModeLabel: 'Strony', wordsModeLabel: 'Słowa', amountLabel: 'Łącznie do przeczytania', speedLabel: 'Twoje tempo czytania', difficultyLabel: 'Trudność tekstu', difficultyLightLabel: 'Łatwy · 1.2x', difficultyStandardLabel: 'Standardowy · 1.0x', difficultyDenseLabel: 'Gęsty · 0.8x', wordsPerPageLabel: 'Szacunkowa liczba słów na stronę', wordsPerPageHint: 'Typowy zakres: od 100 do 500', pagesPerHourLabel: 'stron na godzinę', wordsPerMinuteLabel: 'słów na minutę', startDateLabel: 'Data rozpoczęcia', deadlineLabel: 'Termin', daysPerWeekLabel: 'Dni czytania w tygodniu', sessionsPerDayLabel: 'Sesje w dzień czytania', sessionMinutesLabel: 'Minuty na sesję', minutesRangeLabel: 'Od 5 do 240 min', hourShortLabel: 'godz.', minuteShortLabel: 'min', bufferShortLabel: 'brakuje', bufferExtraLabel: 'zapas', speedTestLabel: 'Zmierz swoje tempo czytania', speedTestHint: 'Użyj krótkiego, reprezentatywnego fragmentu', speedTestPromptLabel: 'Fragment do przeczytania', speedTestPlaceholder: 'Wklej lub wpisz tutaj zdanie albo krótki fragment...', speedTestStartLabel: 'Uruchom timer', speedTestFinishLabel: 'Skończyłem', speedTestElapsedLabel: 'Czas', speedTestRateLabel: 'Szacowane tempo', speedTestSecondsLabel: 's', speedTestWpmLabel: 'SŁM', speedTestUseLabel: 'Użyj tego tempa w trybie Słowa', speedTestIdle: 'Wpisz fragment i uruchom timer, gdy będziesz gotowy.', speedTestRunning: 'Timer działa. Czytaj w swoim naturalnym tempie.', speedTestFinished: 'Test zakończony. To pierwsze przybliżenie, nie stały wzorzec.', speedTestNeedsText: 'Dodaj fragment przed uruchomieniem timera.', speedTestNoWords: 'Nie zmierzono słów', presetLabel: 'Szybki rytm', presetSteadyLabel: 'Równy tydzień', presetWeekendLabel: 'Skupienie w weekend', presetAcademicLabel: 'Rytm nauki', planLabel: 'Twoja mapa czytania', timeNeededLabel: 'Potrzebny czas', readingDaysLabel: 'Potrzebne dni czytania', capacityLabel: 'Dostępne dni czytania', dailyPaceLabel: 'Tempo do terminu', estimatedWordsLabel: 'Szacowane słowa', wordsShortLabel: 'słów', sessionTargetLabel: 'Cel na sesję', catchUpLabel: 'Zapas na nadrobienie', finishDateLabel: 'Przewidywane zakończenie', milestoneLabel: 'Kamienie milowe', timelineLabel: 'Oś kamieni milowych czytania', calendarHint: 'Kamienie milowe są punktami planu. Przesuń termin lub zmień rytm, gdy codzienne sprawy przerwą plan.', exportCalendarLabel: 'Pobierz kamienie milowe (.ics)', exportCalendarTitle: 'Kamienie milowe czytania', milestoneStart: 'Start', milestoneQuarter: '25%', milestoneHalf: 'Połowa', milestoneThreeQuarter: '75%', milestoneFinish: 'Koniec', statusOnTrack: 'Jest zapas', statusTight: 'Plan na styk', statusLate: 'Po terminie', statusInvalid: 'Sprawdź daty', statusOnTrackDetail: 'Dostępne sesje zostawiają zapas na opuszczone dni lub wolniejszy rozdział.', statusTightDetail: 'Plan się mieści, ale zapas jest mały. Zostaw jedną elastyczną sesję na nadrobienie.', statusLateDetail: 'Obecny rytm nie mieści się przed terminem. Dodaj sesje, wydłuż okres albo zmniejsz cel.', statusInvalidDetail: 'Wybierz prawidłową datę rozpoczęcia i termin nie wcześniejszy od niej.', sourceLabel: 'To szacunkowe tempo, a nie obietnica zrozumienia ani stała szybkość czytania. Zmierz własne tempo na reprezentatywnym fragmencie.',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: 'Jak wybrać tempo czytania?', answer: 'Zmierz czas czytania reprezentatywnego fragmentu, policz strony lub słowa i użyj uzyskanego tempa. Gęste, techniczne, nieznane albo mocno komentowane książki zwykle wymagają więcej czasu.' },
|
|
12
|
+
{ question: 'Czy plan gwarantuje zrozumienie książki?', answer: 'Nie. Zamienia Twoje tempo i harmonogram na przybliżenie kalendarza. Płynność i zrozumienie to nie to samo, więc zwolnij przy tekście wymagającym dokładnej nauki.' },
|
|
13
|
+
{ question: 'Co oznacza zapas na nadrobienie?', answer: 'To liczba sesji pozostałych po rozłożeniu szacowanego czasu czytania przed terminem. Wartość ujemna oznacza, że obecny rytm nie zapewnia wystarczającej pojemności.' },
|
|
14
|
+
{ question: 'Dlaczego można planować według stron lub słów?', answer: 'Strony są wygodne dla książki drukowanej, a słowa lepiej nadają się do porównywania tekstów cyfrowych i zadań. Wybierz jednostkę, którą możesz regularnie śledzić.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: 'Wybierz jednostkę czytania', text: 'Policz książkę w stronach lub słowach i wpisz łączną liczbę.' },
|
|
19
|
+
{ name: 'Zmierz własne tempo', text: 'Użyj zmierzonego tempa zamiast ogólnej obietnicy szybkiego czytania.' },
|
|
20
|
+
{ name: 'Ustaw rytm tygodnia', text: 'Wybierz minuty na sesję, sesje w dzień czytania i dni czytania w tygodniu.' },
|
|
21
|
+
{ name: 'Sprawdź termin', text: 'Zobacz przewidywane zakończenie, tempo dzienne i kamienie milowe, zostawiając zapas na prawdziwe przerwy.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: 'Zaplanuj tempo czytania i termin ukończenia książki', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'Zamień cel wyrażony w stronach lub słowach na realistyczny kalendarz czytania. Wpisz objętość, zmierzone tempo, długość i częstotliwość sesji oraz planowaną datę zakończenia.' },
|
|
27
|
+
{ type: 'title', text: 'Użyj własnego tempa czytania', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Osobisty pomiar czasu jest bardziej użyteczny niż ogólna obietnica szybkiego czytania. Zmierz reprezentatywny fragment i zwolnij, gdy książka jest gęsta, nieznana lub wymaga dokładnego czytania.' },
|
|
29
|
+
{ type: 'list', items: ['Wybierz Strony dla książki drukowanej lub Słowa dla tekstu cyfrowego i zadania.', 'Zmierz reprezentatywny fragment i użyj tempa, które utrzymasz przy potrzebnym poziomie zrozumienia.', 'Ustaw długość sesji, sesje dziennie i dni czytania w tygodniu.', 'Wykorzystaj zapas na opuszczone dni zamiast traktować każdą sesję jako obowiązkową.', 'Po kilku pierwszych sesjach porównaj plan z rzeczywistym postępem.'] },
|
|
30
|
+
{ type: 'title', text: 'Jak czytać mapę terminu', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: 'Potrzebny czas to szacowany wysiłek przy wybranym tempie. Potrzebne dni czytania zamieniają go na sesje. Dostępne dni czytania szacują pojemność między początkiem a terminem na podstawie dni czytania w tygodniu.' },
|
|
32
|
+
{ type: 'table', headers: ['Wynik', 'Znaczenie'], rows: [['Tempo do terminu', 'Ilość do przeczytania w każdym dostępnym dniu'], ['Cel na sesję', 'Ilość do osiągnięcia podczas jednej sesji'], ['Zapas na nadrobienie', 'Sesje pozostałe po rozłożeniu wysiłku'], ['Przewidywane zakończenie', 'Data końca przy stałym rytmie tygodnia']] },
|
|
33
|
+
{ type: 'tip', title: 'Kalendarz nie mierzy zrozumienia', html: 'Plan nie mierzy zrozumienia, trudności, zmęczenia, powtórek ani przerw. Potraktuj go jako pierwsze zobowiązanie i aktualizuj na podstawie rzeczywistego tempa.' },
|
|
34
|
+
{ type: 'title', text: 'Gdy plan jest napięty albo spóźniony', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: 'Zapas oznacza, że szacowane sesje mieszczą się z rezerwą. Przy planie na styk warto zostawić jedną elastyczną sesję. Jeśli koniec wypada po terminie, wydłuż okres, dodaj sesje albo zmniejsz cel.' },
|
|
36
|
+
{ type: 'tip', title: 'Najpierw mierz, potem optymalizuj', html: 'Po dwóch lub trzech sesjach porównaj planowany i rzeczywisty postęp. Jeśli różnica pozostaje, zmień tempo zamiast wymuszać zbyt optymistyczny kalendarz.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Zaplanuj tempo czytania i termin ukończenia książki', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'PLN' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Zaplanować termin czytania', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'planer-czasu-czytania-i-terminu-ksiazki', title: 'Zaplanuj tempo czytania i termin ukończenia książki', description: 'Zaplanuj realistyczne tempo czytania, rytm sesji i datę zakończenia na podstawie liczby stron lub słów.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { BookReadingUI } from '../ui';
|
|
3
|
+
import { bibliography } from '../bibliography';
|
|
4
|
+
import type { FAQPage, HowTo, SoftwareApplication, WithContext } from 'schema-dts';
|
|
5
|
+
|
|
6
|
+
const ui: BookReadingUI = {
|
|
7
|
+
setupLabel: 'Crie o seu plano de leitura', modeLabel: 'Contar por', pagesModeLabel: 'Páginas', wordsModeLabel: 'Palavras', amountLabel: 'Total para ler', speedLabel: 'A sua velocidade de leitura', difficultyLabel: 'Dificuldade do texto', difficultyLightLabel: 'Leve · 1.2x', difficultyStandardLabel: 'Padrão · 1.0x', difficultyDenseLabel: 'Denso · 0.8x', wordsPerPageLabel: 'Palavras estimadas por página', wordsPerPageHint: 'Intervalo habitual: 100 a 500', pagesPerHourLabel: 'páginas por hora', wordsPerMinuteLabel: 'palavras por minuto', startDateLabel: 'Data de início', deadlineLabel: 'Prazo', daysPerWeekLabel: 'Dias de leitura por semana', sessionsPerDayLabel: 'Sessões por dia de leitura', sessionMinutesLabel: 'Minutos por sessão', minutesRangeLabel: 'De 5 a 240 min', hourShortLabel: 'h', minuteShortLabel: 'min', bufferShortLabel: 'em falta', bufferExtraLabel: 'extra', speedTestLabel: 'Meça a sua velocidade de leitura', speedTestHint: 'Use um trecho curto e representativo', speedTestPromptLabel: 'Trecho para ler', speedTestPlaceholder: 'Cole ou escreva aqui uma frase ou um trecho curto...', speedTestStartLabel: 'Iniciar temporizador', speedTestFinishLabel: 'Terminei', speedTestElapsedLabel: 'Tempo decorrido', speedTestRateLabel: 'Ritmo estimado', speedTestSecondsLabel: 's', speedTestWpmLabel: 'PPM', speedTestUseLabel: 'Usar estas PPM no modo Palavras', speedTestIdle: 'Introduza um trecho e comece quando estiver preparado.', speedTestRunning: 'Temporizador ativo. Leia ao seu ritmo natural.', speedTestFinished: 'Teste concluído. É uma primeira estimativa, não uma referência fixa.', speedTestNeedsText: 'Adicione um trecho antes de iniciar o temporizador.', speedTestNoWords: 'Nenhuma palavra medida', presetLabel: 'Ritmo rápido', presetSteadyLabel: 'Semana regular', presetWeekendLabel: 'Foco no fim de semana', presetAcademicLabel: 'Ritmo de estudo', planLabel: 'O seu mapa de leitura', timeNeededLabel: 'Tempo necessário', readingDaysLabel: 'Dias de leitura necessários', capacityLabel: 'Dias de leitura disponíveis', dailyPaceLabel: 'Ritmo até ao prazo', estimatedWordsLabel: 'Palavras estimadas', wordsShortLabel: 'palavras', sessionTargetLabel: 'Objetivo por sessão', catchUpLabel: 'Margem para recuperar', finishDateLabel: 'Fim previsto', milestoneLabel: 'Marcos', timelineLabel: 'Linha temporal dos marcos de leitura', calendarHint: 'Os marcos são referências de planeamento. Altere o prazo ou adapte o ritmo quando a vida real interromper o plano.', exportCalendarLabel: 'Descarregar marcos (.ics)', exportCalendarTitle: 'Marcos de leitura', milestoneStart: 'Início', milestoneQuarter: '25%', milestoneHalf: 'Metade', milestoneThreeQuarter: '75%', milestoneFinish: 'Fim', statusOnTrack: 'Há margem', statusTight: 'Ajuste apertado', statusLate: 'Depois do prazo', statusInvalid: 'Verifique as datas', statusOnTrackDetail: 'As sessões disponíveis deixam margem para dias perdidos ou capítulos mais lentos.', statusTightDetail: 'O plano cabe, mas tem pouca reserva. Deixe uma sessão flexível para recuperar.', statusLateDetail: 'O ritmo atual não permite cumprir o prazo. Adicione sessões, prolongue o período ou reduza o objetivo.', statusInvalidDetail: 'Escolha uma data de início válida e um prazo igual ou posterior.', sourceLabel: 'Esta é uma estimativa de ritmo, não uma promessa de compreensão nem uma velocidade de leitura fixa. Meça o seu próprio ritmo num trecho representativo.',
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const faq = [
|
|
11
|
+
{ question: 'Como escolho a minha velocidade de leitura?', answer: 'Cronometre um trecho representativo, conte as páginas ou palavras e use o ritmo observado. Livros densos, técnicos, desconhecidos ou muito anotados costumam exigir mais tempo.' },
|
|
12
|
+
{ question: 'O plano garante que vou compreender o livro?', answer: 'Não. Converte o seu ritmo e calendário numa estimativa. Fluência e compreensão não são a mesma coisa, por isso abrande quando o texto exigir estudo atento.' },
|
|
13
|
+
{ question: 'O que significa a margem para recuperar?', answer: 'É o número de sessões que sobra depois de colocar o tempo estimado antes do prazo. Um valor negativo significa que o ritmo atual não tem capacidade suficiente.' },
|
|
14
|
+
{ question: 'Por que posso planear por páginas ou palavras?', answer: 'As páginas são práticas para um livro impresso, enquanto as palavras são mais comparáveis em textos digitais ou tarefas. Escolha a unidade que consegue acompanhar de forma consistente.' },
|
|
15
|
+
];
|
|
16
|
+
|
|
17
|
+
const howTo = [
|
|
18
|
+
{ name: 'Escolha a unidade de leitura', text: 'Conte o livro por páginas ou palavras e introduza o total.' },
|
|
19
|
+
{ name: 'Meça o seu ritmo', text: 'Use um ritmo pessoal medido em vez de uma promessa genérica de leitura rápida.' },
|
|
20
|
+
{ name: 'Defina o ritmo semanal', text: 'Configure minutos por sessão, sessões por dia de leitura e dias de leitura por semana.' },
|
|
21
|
+
{ name: 'Verifique o prazo', text: 'Consulte o fim previsto, o ritmo diário e os marcos, reservando margem para interrupções reais.' },
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const seo: ToolLocaleContent<BookReadingUI>['seo'] = [
|
|
25
|
+
{ type: 'title', text: 'Planear o ritmo de leitura e o prazo de um livro', level: 2 },
|
|
26
|
+
{ type: 'paragraph', html: 'Transforme um objetivo de páginas ou palavras num calendário de leitura realista. Introduza o volume, a velocidade medida, a duração e frequência das sessões e a data em que quer terminar.' },
|
|
27
|
+
{ type: 'title', text: 'Use o seu próprio ritmo de leitura', level: 2 },
|
|
28
|
+
{ type: 'paragraph', html: 'Uma medição pessoal com cronómetro é mais útil do que uma promessa universal de leitura rápida. Teste um trecho representativo e abrande quando o livro for denso, desconhecido ou exigir leitura atenta.' },
|
|
29
|
+
{ type: 'list', items: ['Escolha Páginas para um livro impresso ou Palavras para um texto digital ou atribuído.', 'Cronometre um trecho representativo e use um ritmo que consiga manter com a compreensão necessária.', 'Defina a duração das sessões, as sessões diárias e os dias de leitura por semana.', 'Use a margem para dias perdidos em vez de tratar cada sessão como obrigatória.', 'Compare o plano com o progresso real depois das primeiras sessões.'] },
|
|
30
|
+
{ type: 'title', text: 'Leia o mapa do prazo', level: 2 },
|
|
31
|
+
{ type: 'paragraph', html: 'O tempo necessário é o esforço estimado ao ritmo escolhido. Os dias necessários convertem esse esforço em sessões. Os dias disponíveis estimam a capacidade entre o início e o prazo com base nos dias de leitura semanais.' },
|
|
32
|
+
{ type: 'table', headers: ['Resultado', 'O que indica'], rows: [['Ritmo até ao prazo', 'Quantidade a cobrir em cada dia disponível'], ['Objetivo por sessão', 'Quantidade a atingir numa sessão planeada'], ['Margem para recuperar', 'Sessões restantes depois de distribuir o esforço'], ['Fim previsto', 'Data de conclusão mantendo o ritmo semanal']] },
|
|
33
|
+
{ type: 'tip', title: 'Um calendário não mede a compreensão', html: 'O plano não mede compreensão, dificuldade, cansaço, releituras ou interrupções. Use-o como primeiro compromisso e atualize-o com o seu ritmo real.' },
|
|
34
|
+
{ type: 'title', text: 'Quando o plano fica apertado ou atrasado', level: 2 },
|
|
35
|
+
{ type: 'paragraph', html: 'Há margem quando as sessões estimadas cabem com reserva. Um plano apertado merece uma sessão flexível. Se o fim ultrapassar o prazo, prolongue o período, adicione sessões ou reduza o objetivo.' },
|
|
36
|
+
{ type: 'tip', title: 'Meça antes de otimizar', html: 'Depois de duas ou três sessões, compare o progresso previsto com o real. Se a diferença persistir, altere a velocidade em vez de forçar um calendário demasiado otimista.' },
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
const schemas: [WithContext<SoftwareApplication>, WithContext<FAQPage>, WithContext<HowTo>] = [
|
|
40
|
+
{ '@context': 'https://schema.org', '@type': 'SoftwareApplication', name: 'Planear o ritmo de leitura e o prazo de um livro', applicationCategory: 'EducationalApplication', operatingSystem: 'Any', offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' } },
|
|
41
|
+
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faq.map((item) => ({ '@type': 'Question', name: item.question, acceptedAnswer: { '@type': 'Answer', text: item.answer } })) },
|
|
42
|
+
{ '@context': 'https://schema.org', '@type': 'HowTo', name: 'Planear um prazo de leitura', step: howTo.map((item) => ({ '@type': 'HowToStep', name: item.name, text: item.text })) },
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
export const content: ToolLocaleContent<BookReadingUI> = { slug: 'planejador-tempo-leitura-e-prazo-livro', title: 'Planear o ritmo de leitura e o prazo de um livro', description: 'Planeie um ritmo de leitura realista, um calendário de sessões e uma data de fim a partir do seu objetivo de páginas ou palavras.', ui, seo, faq, bibliography, howTo, schemas: schemas as unknown as Record<string, unknown>[] };
|