@jjlmoya/utils-science 1.50.0 → 1.52.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 +2 -2
- package/src/category/i18n/es.ts +3 -4
- package/src/category/i18n/fr.ts +2 -2
- package/src/category/i18n/it.ts +2 -2
- package/src/category/i18n/pt.ts +2 -2
- package/src/category/index.ts +25 -25
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/env.d.ts +1 -1
- package/src/layouts/PreviewLayout.astro +1 -1
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +76 -0
- package/src/tests/faq_count.test.ts +19 -19
- package/src/tests/i18n_coverage.test.ts +36 -36
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/script_density.test.ts +94 -94
- package/src/tests/seo_length.test.ts +24 -24
- package/src/tests/seo_parity.test.ts +5 -5
- package/src/tests/seo_translation_completeness.test.ts +76 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/spanish_leakage.test.ts +175 -153
- package/src/tool/asteroid-impact/component.astro +251 -251
- package/src/tool/asteroid-impact/helpers.ts +17 -17
- package/src/tool/asteroid-impact/i18n/de.ts +2 -2
- package/src/tool/asteroid-impact/i18n/en.ts +2 -2
- package/src/tool/asteroid-impact/i18n/es.ts +2 -2
- package/src/tool/asteroid-impact/i18n/fr.ts +2 -2
- package/src/tool/asteroid-impact/i18n/id.ts +2 -2
- package/src/tool/asteroid-impact/i18n/it.ts +2 -2
- package/src/tool/asteroid-impact/i18n/ja.ts +2 -2
- package/src/tool/asteroid-impact/i18n/ko.ts +2 -2
- package/src/tool/asteroid-impact/i18n/nl.ts +2 -2
- package/src/tool/asteroid-impact/i18n/pl.ts +2 -2
- package/src/tool/asteroid-impact/i18n/pt.ts +2 -2
- package/src/tool/asteroid-impact/i18n/ru.ts +2 -2
- package/src/tool/asteroid-impact/i18n/sv.ts +2 -2
- package/src/tool/asteroid-impact/i18n/tr.ts +2 -2
- package/src/tool/asteroid-impact/i18n/zh.ts +2 -2
- package/src/tool/asteroid-impact/script.ts +262 -262
- package/src/tool/asteroid-impact/seo.astro +15 -15
- package/src/tool/asteroid-impact/ui.ts +69 -69
- package/src/tool/black-hole-event-horizon-simulator/i18n/de.ts +249 -241
- package/src/tool/black-hole-event-horizon-simulator/i18n/fr.ts +252 -247
- package/src/tool/black-hole-event-horizon-simulator/i18n/id.ts +259 -259
- package/src/tool/black-hole-event-horizon-simulator/i18n/it.ts +255 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/ja.ts +254 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/ko.ts +258 -258
- package/src/tool/black-hole-event-horizon-simulator/i18n/nl.ts +256 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/pl.ts +258 -258
- package/src/tool/black-hole-event-horizon-simulator/i18n/pt.ts +256 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/ru.ts +258 -258
- package/src/tool/black-hole-event-horizon-simulator/i18n/sv.ts +257 -252
- package/src/tool/black-hole-event-horizon-simulator/i18n/tr.ts +256 -251
- package/src/tool/black-hole-event-horizon-simulator/i18n/zh.ts +261 -252
- package/src/tool/cellular-renewal/component.astro +126 -126
- package/src/tool/cellular-renewal/i18n/de.ts +1 -1
- package/src/tool/cellular-renewal/i18n/en.ts +1 -1
- package/src/tool/cellular-renewal/i18n/es.ts +1 -1
- package/src/tool/cellular-renewal/i18n/fr.ts +1 -1
- package/src/tool/cellular-renewal/i18n/id.ts +1 -1
- package/src/tool/cellular-renewal/i18n/it.ts +1 -1
- package/src/tool/cellular-renewal/i18n/ja.ts +1 -1
- package/src/tool/cellular-renewal/i18n/ko.ts +1 -1
- package/src/tool/cellular-renewal/i18n/nl.ts +1 -1
- package/src/tool/cellular-renewal/i18n/pl.ts +1 -1
- package/src/tool/cellular-renewal/i18n/pt.ts +1 -1
- package/src/tool/cellular-renewal/i18n/ru.ts +1 -1
- package/src/tool/cellular-renewal/i18n/sv.ts +1 -1
- package/src/tool/cellular-renewal/i18n/tr.ts +1 -1
- package/src/tool/cellular-renewal/i18n/zh.ts +1 -1
- package/src/tool/cellular-renewal/seo.astro +15 -15
- package/src/tool/colony-counter/i18n/de.ts +1 -1
- package/src/tool/colony-counter/i18n/en.ts +1 -1
- package/src/tool/colony-counter/i18n/es.ts +1 -1
- package/src/tool/colony-counter/i18n/fr.ts +1 -1
- package/src/tool/colony-counter/i18n/id.ts +1 -1
- package/src/tool/colony-counter/i18n/it.ts +1 -1
- package/src/tool/colony-counter/i18n/ja.ts +1 -1
- package/src/tool/colony-counter/i18n/ko.ts +1 -1
- package/src/tool/colony-counter/i18n/nl.ts +1 -1
- package/src/tool/colony-counter/i18n/pl.ts +1 -1
- package/src/tool/colony-counter/i18n/pt.ts +1 -1
- package/src/tool/colony-counter/i18n/ru.ts +1 -1
- package/src/tool/colony-counter/i18n/sv.ts +1 -1
- package/src/tool/colony-counter/i18n/tr.ts +1 -1
- package/src/tool/colony-counter/i18n/zh.ts +1 -1
- package/src/tool/colony-counter/seo.astro +15 -15
- package/src/tool/conway-life-rule-lab/component.astro +1 -1
- package/src/tool/conway-life-rule-lab/i18n/de.ts +145 -141
- package/src/tool/conway-life-rule-lab/i18n/es.ts +146 -142
- package/src/tool/conway-life-rule-lab/i18n/fr.ts +146 -142
- package/src/tool/conway-life-rule-lab/i18n/id.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/it.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/ja.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/ko.ts +146 -145
- package/src/tool/conway-life-rule-lab/i18n/nl.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/pl.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/pt.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/ru.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/sv.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/tr.ts +147 -145
- package/src/tool/conway-life-rule-lab/i18n/zh.ts +147 -145
- package/src/tool/conway-life-rule-lab/logic/LifeLabRuntime.ts +2 -2
- package/src/tool/cosmic-inflation/i18n/ru.ts +105 -105
- package/src/tool/crystal-lattice-structure-finder/i18n/de.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/en.ts +1 -1
- package/src/tool/crystal-lattice-structure-finder/i18n/es.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/fr.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/id.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/it.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/ja.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/ko.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/nl.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/pl.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/pt.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/ru.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/sv.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/tr.ts +217 -217
- package/src/tool/crystal-lattice-structure-finder/i18n/zh.ts +217 -217
- package/src/tool/double-slit-decoherence/i18n/de.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/fr.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/id.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/it.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/ja.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/ko.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/nl.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/pl.ts +181 -181
- package/src/tool/double-slit-decoherence/i18n/pt.ts +178 -174
- package/src/tool/double-slit-decoherence/i18n/ru.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/sv.ts +176 -172
- package/src/tool/double-slit-decoherence/i18n/tr.ts +180 -180
- package/src/tool/double-slit-decoherence/i18n/zh.ts +181 -181
- package/src/tool/dyson-sphere-energy-capture/component.astro +253 -253
- package/src/tool/dyson-sphere-energy-capture/i18n/de.ts +194 -194
- package/src/tool/dyson-sphere-energy-capture/i18n/en.ts +6 -6
- package/src/tool/dyson-sphere-energy-capture/i18n/es.ts +6 -6
- package/src/tool/dyson-sphere-energy-capture/i18n/fr.ts +194 -194
- package/src/tool/dyson-sphere-energy-capture/i18n/id.ts +195 -195
- package/src/tool/dyson-sphere-energy-capture/i18n/it.ts +194 -194
- package/src/tool/dyson-sphere-energy-capture/i18n/ja.ts +194 -190
- package/src/tool/dyson-sphere-energy-capture/i18n/ko.ts +194 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/nl.ts +197 -197
- package/src/tool/dyson-sphere-energy-capture/i18n/pl.ts +168 -166
- package/src/tool/dyson-sphere-energy-capture/i18n/pt.ts +194 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/ru.ts +195 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/sv.ts +195 -193
- package/src/tool/dyson-sphere-energy-capture/i18n/tr.ts +168 -166
- package/src/tool/dyson-sphere-energy-capture/i18n/zh.ts +194 -193
- package/src/tool/epidemic-sir-simulator/i18n/de.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/es.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/fr.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/it.ts +346 -346
- package/src/tool/epidemic-sir-simulator/i18n/nl.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/ru.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/sv.ts +347 -347
- package/src/tool/epidemic-sir-simulator/i18n/zh.ts +347 -347
- package/src/tool/exoplanet-biosignature-detector/i18n/de.ts +186 -186
- package/src/tool/exoplanet-biosignature-detector/i18n/en.ts +195 -195
- package/src/tool/exoplanet-biosignature-detector/i18n/es.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/fr.ts +183 -183
- package/src/tool/exoplanet-biosignature-detector/i18n/id.ts +193 -193
- package/src/tool/exoplanet-biosignature-detector/i18n/it.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/ja.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/ko.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/nl.ts +194 -194
- package/src/tool/exoplanet-biosignature-detector/i18n/pl.ts +144 -144
- package/src/tool/exoplanet-biosignature-detector/i18n/pt.ts +146 -146
- package/src/tool/exoplanet-biosignature-detector/i18n/ru.ts +143 -143
- package/src/tool/exoplanet-biosignature-detector/i18n/sv.ts +144 -144
- package/src/tool/exoplanet-biosignature-detector/i18n/tr.ts +145 -145
- package/src/tool/exoplanet-biosignature-detector/i18n/zh.ts +194 -194
- package/src/tool/global-albedo-snowball-simulator/component.astro +1 -1
- package/src/tool/global-albedo-snowball-simulator/i18n/de.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/fr.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/id.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/it.ts +87 -87
- package/src/tool/global-albedo-snowball-simulator/i18n/ja.ts +87 -87
- package/src/tool/global-albedo-snowball-simulator/i18n/ko.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/nl.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/pl.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/pt.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/ru.ts +165 -161
- package/src/tool/global-albedo-snowball-simulator/i18n/sv.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/tr.ts +169 -169
- package/src/tool/global-albedo-snowball-simulator/i18n/zh.ts +169 -169
- package/src/tool/lorenz-attractor/i18n/de.ts +144 -143
- package/src/tool/lorenz-attractor/i18n/fr.ts +144 -144
- package/src/tool/lorenz-attractor/i18n/id.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/it.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/ja.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/ko.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/nl.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/pl.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/pt.ts +142 -141
- package/src/tool/lorenz-attractor/i18n/ru.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/sv.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/tr.ts +149 -149
- package/src/tool/lorenz-attractor/i18n/zh.ts +149 -149
- package/src/tool/mandelbrot-fractal/i18n/de.ts +158 -158
- package/src/tool/mandelbrot-fractal/i18n/fr.ts +158 -158
- package/src/tool/mandelbrot-fractal/i18n/id.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/it.ts +155 -151
- package/src/tool/mandelbrot-fractal/i18n/ja.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/ko.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/nl.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/pl.ts +157 -153
- package/src/tool/mandelbrot-fractal/i18n/pt.ts +158 -158
- package/src/tool/mandelbrot-fractal/i18n/ru.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/sv.ts +159 -150
- package/src/tool/mandelbrot-fractal/i18n/tr.ts +159 -159
- package/src/tool/mandelbrot-fractal/i18n/zh.ts +159 -159
- package/src/tool/microwave-detector/component.astro +238 -238
- package/src/tool/microwave-detector/i18n/de.ts +1 -1
- package/src/tool/microwave-detector/i18n/en.ts +1 -1
- package/src/tool/microwave-detector/i18n/es.ts +1 -1
- package/src/tool/microwave-detector/i18n/fr.ts +1 -1
- package/src/tool/microwave-detector/i18n/id.ts +1 -1
- package/src/tool/microwave-detector/i18n/it.ts +1 -1
- package/src/tool/microwave-detector/i18n/ja.ts +1 -1
- package/src/tool/microwave-detector/i18n/ko.ts +1 -1
- package/src/tool/microwave-detector/i18n/nl.ts +1 -1
- package/src/tool/microwave-detector/i18n/pl.ts +1 -1
- package/src/tool/microwave-detector/i18n/pt.ts +1 -1
- package/src/tool/microwave-detector/i18n/ru.ts +1 -1
- package/src/tool/microwave-detector/i18n/sv.ts +1 -1
- package/src/tool/microwave-detector/i18n/tr.ts +1 -1
- package/src/tool/microwave-detector/i18n/zh.ts +1 -1
- package/src/tool/microwave-detector/seo.astro +15 -15
- package/src/tool/natural-selection-drift/component.astro +135 -135
- package/src/tool/natural-selection-drift/i18n/de.ts +164 -160
- package/src/tool/natural-selection-drift/i18n/fr.ts +204 -204
- package/src/tool/natural-selection-drift/i18n/id.ts +156 -154
- package/src/tool/natural-selection-drift/i18n/it.ts +197 -193
- package/src/tool/natural-selection-drift/i18n/ja.ts +155 -154
- package/src/tool/natural-selection-drift/i18n/ko.ts +155 -154
- package/src/tool/natural-selection-drift/i18n/nl.ts +164 -163
- package/src/tool/natural-selection-drift/i18n/pl.ts +168 -166
- package/src/tool/natural-selection-drift/i18n/pt.ts +200 -195
- package/src/tool/natural-selection-drift/i18n/ru.ts +186 -184
- package/src/tool/natural-selection-drift/i18n/sv.ts +157 -154
- package/src/tool/natural-selection-drift/i18n/tr.ts +186 -184
- package/src/tool/natural-selection-drift/i18n/zh.ts +160 -154
- package/src/tool/natural-selection-drift/natural-selection-drift.css +563 -563
- package/src/tool/phase-diagram-critical-points/i18n/de.ts +178 -178
- package/src/tool/phase-diagram-critical-points/i18n/fr.ts +178 -178
- package/src/tool/phase-diagram-critical-points/i18n/id.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/it.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/ja.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/ko.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/nl.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/pl.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/pt.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/ru.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/sv.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/tr.ts +179 -179
- package/src/tool/phase-diagram-critical-points/i18n/zh.ts +179 -179
- package/src/tool/planet-atmosphere-survival/i18n/de.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/fr.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/id.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/it.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/ja.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/ko.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/nl.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/pl.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/pt.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/ru.ts +227 -223
- package/src/tool/planet-atmosphere-survival/i18n/sv.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/tr.ts +255 -255
- package/src/tool/planet-atmosphere-survival/i18n/zh.ts +255 -255
- package/src/tool/radioactive-decay/i18n/de.ts +168 -164
- package/src/tool/radioactive-decay/i18n/fr.ts +76 -75
- package/src/tool/radioactive-decay/i18n/id.ts +169 -165
- package/src/tool/radioactive-decay/i18n/it.ts +76 -74
- package/src/tool/radioactive-decay/i18n/ja.ts +168 -167
- package/src/tool/radioactive-decay/i18n/ko.ts +168 -167
- package/src/tool/radioactive-decay/i18n/nl.ts +170 -168
- package/src/tool/radioactive-decay/i18n/pl.ts +170 -168
- package/src/tool/radioactive-decay/i18n/pt.ts +169 -167
- package/src/tool/radioactive-decay/i18n/ru.ts +170 -168
- package/src/tool/radioactive-decay/i18n/sv.ts +170 -168
- package/src/tool/radioactive-decay/i18n/tr.ts +171 -168
- package/src/tool/radioactive-decay/i18n/zh.ts +171 -167
- package/src/tool/roche-limit-satellite-disruption/i18n/de.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/fr.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/id.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/it.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/ja.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/ko.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/nl.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/pl.ts +237 -229
- package/src/tool/roche-limit-satellite-disruption/i18n/pt.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/ru.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/sv.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/tr.ts +241 -241
- package/src/tool/roche-limit-satellite-disruption/i18n/zh.ts +241 -241
- package/src/tool/simulation-probability/component.astro +138 -138
- package/src/tool/simulation-probability/i18n/de.ts +1 -1
- package/src/tool/simulation-probability/i18n/en.ts +1 -1
- package/src/tool/simulation-probability/i18n/es.ts +1 -1
- package/src/tool/simulation-probability/i18n/fr.ts +1 -1
- package/src/tool/simulation-probability/i18n/id.ts +1 -1
- package/src/tool/simulation-probability/i18n/it.ts +1 -1
- package/src/tool/simulation-probability/i18n/ja.ts +1 -1
- package/src/tool/simulation-probability/i18n/ko.ts +1 -1
- package/src/tool/simulation-probability/i18n/nl.ts +1 -1
- package/src/tool/simulation-probability/i18n/pl.ts +1 -1
- package/src/tool/simulation-probability/i18n/pt.ts +1 -1
- package/src/tool/simulation-probability/i18n/ru.ts +1 -1
- package/src/tool/simulation-probability/i18n/sv.ts +1 -1
- package/src/tool/simulation-probability/i18n/tr.ts +1 -1
- package/src/tool/simulation-probability/i18n/zh.ts +1 -1
- package/src/tool/simulation-probability/seo.astro +15 -15
- package/src/tool/stellar-habitability-zone/i18n/ru.ts +189 -189
- package/src/tool/temperature-timeline/i18n/de.ts +2 -1
- package/src/tool/temperature-timeline/i18n/fr.ts +177 -177
- package/src/tool/temperature-timeline/i18n/it.ts +142 -141
- package/src/tool/temperature-timeline/i18n/pt.ts +3 -1
- package/src/tool/temperature-timeline/i18n/ru.ts +116 -114
- package/src/tool/three-body-problem/app.ts +4 -4
- package/src/tool/three-body-problem/component.astro +6 -6
- package/src/tool/twin-paradox-visualizer/i18n/de.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/es.ts +165 -165
- package/src/tool/twin-paradox-visualizer/i18n/fr.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/id.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/it.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/ja.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/ko.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/nl.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/pl.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/pt.ts +164 -160
- package/src/tool/twin-paradox-visualizer/i18n/ru.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/sv.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/tr.ts +168 -168
- package/src/tool/twin-paradox-visualizer/i18n/zh.ts +168 -168
- package/src/types.ts +1 -1
|
@@ -1,186 +1,188 @@
|
|
|
1
|
-
import { bibliography } from '../bibliography';
|
|
2
|
-
import type { NaturalSelectionLocaleContent } from '../entry';
|
|
3
|
-
|
|
4
|
-
const slug = 'dogal-secilim-genetik-suruklenme-simulatoru';
|
|
5
|
-
const title = 'Doğal Seçilim ve Genetik Sürüklenme Simülatörü';
|
|
6
|
-
const description =
|
|
7
|
-
'Seçilim baskısı, mutasyon, sürüklenme ve üremenin alel frekanslarını gerçek zamanlı nasıl değiştirdiğini görün.';
|
|
8
|
-
|
|
9
|
-
const howTo = [
|
|
10
|
-
{ name: 'Popülasyonu ayarlayın', text: 'Örneklem büyüklüğünün evrimsel kararlılığı nasıl etkilediğini görmek için küçük veya büyük bir popülasyon seçin.' },
|
|
11
|
-
{ name: 'Seçilim ve sürüklenmeyi düzenleyin', text: 'Farklı evrimsel yolları gözlemlemek için seçilim baskısını veya sürüklenmeyi artırın.' },
|
|
12
|
-
{ name: 'Nesilleri izleyin', text: 'Simülasyonu başlatın ve baskın özelliği, fitness değerini ve çeşitliliği zaman içinde karşılaştırın.' },
|
|
13
|
-
{ name: 'Sonuçları yorumlayın', text: 'Uyarlanmanın ne zaman kazandığını ve şansın ne zaman baskın olduğunu anlamak için ölçümleri kullanın.' },
|
|
14
|
-
];
|
|
15
|
-
|
|
16
|
-
const faq = [
|
|
17
|
-
{
|
|
18
|
-
question: 'Doğal seçilim ile genetik sürüklenme arasındaki fark nedir?',
|
|
19
|
-
answer: 'Doğal seçilim rastgele değildir; yararlı özellikler daha yaygın hale gelir. Genetik sürüklenme ise alel frekanslarında rastgele bir değişikliktir.',
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
question: 'Küçük popülasyonlar neden daha hızlı değişir?',
|
|
23
|
-
answer: 'Az sayıda birey olduğunda, rastgele örnekleme sonraki nesil üzerinde daha büyük bir etkiye sahip olur.',
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
question: 'Sürüklenme seçilimi bastırabilir mi?',
|
|
27
|
-
answer: 'Evet. Sürüklenme yeterince güçlüyse yararlı bir alel şans eseri yok olabilir.',
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
question: 'Bu simülatörde fitness ne anlama gelir?',
|
|
31
|
-
answer: 'Fitness, popülasyonun seçilen çevreye ne kadar iyi uyum sağladığını gösteren basitleştirilmiş bir puandır.',
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
question: 'Popülasyon büyüklüğü neden bu kadar önemlidir?',
|
|
35
|
-
answer: 'Rastgele dalgalanmaların alel frekanslarını ne kadar güçlü etkilediğini belirler.',
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
question: 'Bu simülatörü ne zaman kullanmalıyım?',
|
|
39
|
-
answer: 'Evrimin arkasındaki sezgiyi, özellikle seçilim ve sürüklenme arasındaki farkı anlamak istediğinizde.',
|
|
40
|
-
},
|
|
41
|
-
];
|
|
42
|
-
|
|
43
|
-
export const content: NaturalSelectionLocaleContent = {
|
|
44
|
-
slug,
|
|
45
|
-
title,
|
|
46
|
-
description,
|
|
47
|
-
ui: {
|
|
48
|
-
population: 'Popülasyon büyüklüğü',
|
|
49
|
-
generations: 'Nesiller',
|
|
50
|
-
mutationRate: 'Mutasyon oranı',
|
|
51
|
-
selectionPressure: 'Seçilim baskısı',
|
|
52
|
-
driftIntensity: 'Sürüklenme yoğunluğu',
|
|
53
|
-
alleleCount: 'Başlangıç alelleri',
|
|
54
|
-
innovationRate: 'İnovasyon oranı',
|
|
55
|
-
run: 'Simülasyonu başlat',
|
|
56
|
-
dominantTrait: 'Baskın özellik',
|
|
57
|
-
fitness: 'Nihai fitness',
|
|
58
|
-
diversity: 'Genetik çeşitlilik',
|
|
59
|
-
evolutionConsole: 'Evrim konsolu',
|
|
60
|
-
populationLabel: 'Popülasyon',
|
|
61
|
-
aliveLabel: 'canlı',
|
|
62
|
-
alleleCountsLabel: 'Alel sayıları',
|
|
63
|
-
alleleDefault: 'Alel 1',
|
|
64
|
-
populationValueLabel: 'Popülasyon',
|
|
65
|
-
},
|
|
66
|
-
seo: [
|
|
67
|
-
{
|
|
68
|
-
type: 'title',
|
|
69
|
-
text: 'Doğal Seçilim vs. Genetik Sürüklenme: Canlı Popülasyonla Evrimi Anlayın',
|
|
70
|
-
level: 2,
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
type: 'paragraph',
|
|
74
|
-
html:
|
|
75
|
-
'Doğal seçilim ile genetik sürüklenme arasındaki farkı anlamak istiyorsanız, bu simülatör görsel katmanı sağlar. Statik tanımları okumak yerine popülasyonu gerçek zamanlı izlersiniz.',
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
type: 'title',
|
|
79
|
-
text: 'Kontroller Ne Anlama Gelir ve Neden Önemlidir',
|
|
80
|
-
level: 3,
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
type: 'paragraph',
|
|
84
|
-
html:
|
|
85
|
-
'Doğal seçilim evrimin rastgele olmayan kısmıdır. Hayatta kalmayı artıran özelliklerin frekansını yükseltir. Genetik sürüklenme rastgele kısımdır.',
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
type: 'paragraph',
|
|
89
|
-
html:
|
|
90
|
-
'Her iki kuvvet de aynı anda etki eder: büyük popülasyonlarda seçilim baskınken, küçük popülasyonlarda şans yararlı özellikleri silebilir.',
|
|
91
|
-
},
|
|
92
|
-
{
|
|
93
|
-
type: 'title',
|
|
94
|
-
text: 'Simülasyon Sonuçları Nasıl Okunur',
|
|
95
|
-
level: 3,
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
type: 'paragraph',
|
|
99
|
-
html:
|
|
100
|
-
'Canlı ölçümler baskın özelliği, genetik çeşitliliği, nihai fitness değerini ve popülasyon durumunu gösterir.',
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
type: 'title',
|
|
104
|
-
text: 'Popülasyon Büyüklüğü Hikayeyi Neden Değiştirir',
|
|
105
|
-
level: 3,
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
type: 'list',
|
|
109
|
-
items: [
|
|
110
|
-
'<strong>Seçilim baskısı:</strong> Çevrenin bir özelliği ne kadar kayırdığı.',
|
|
111
|
-
'<strong>Sürüklenme yoğunluğu:</strong> Rastgele örnekleme gürültüsü.',
|
|
112
|
-
'<strong>Mutasyon oranı:</strong> Yeni varyasyonların ortaya çıkma sıklığı.',
|
|
113
|
-
'<strong>Alel sayısı:</strong> Sistemdeki başlangıç çeşitliliği.',
|
|
114
|
-
'<strong>Genetik çeşitlilik:</strong> Evrimin ham maddesi.',
|
|
115
|
-
],
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
type: 'paragraph',
|
|
119
|
-
html:
|
|
120
|
-
'Biyolojik sistemlerde seçilim, sürüklenme ve mutasyonu anlamak için pratik bir araç.',
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
type: 'title',
|
|
124
|
-
text: 'Denenecek Hızlı Örnekler',
|
|
125
|
-
level: 3,
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
type: 'table',
|
|
129
|
-
headers: ['Hedef', 'Değişiklik', 'Beklenen Sonuç'],
|
|
130
|
-
rows: [
|
|
131
|
-
[
|
|
132
|
-
'Seçilimi göstermek',
|
|
133
|
-
'Seçilim baskısını artırın ve sürüklenmeyi azaltın',
|
|
134
|
-
'Bir alel kademeli olarak baskın hale gelir',
|
|
135
|
-
],
|
|
136
|
-
[
|
|
137
|
-
'Sürüklenmeyi göstermek',
|
|
138
|
-
'Popülasyonu azaltın ve sürüklenmeyi artırın',
|
|
139
|
-
'Alel frekanslarında rastgele dalgalanmalar',
|
|
140
|
-
],
|
|
141
|
-
[
|
|
142
|
-
'Mutasyonu göstermek',
|
|
143
|
-
'Mutasyon oranını artırın',
|
|
144
|
-
'Düzenli olarak yeni aleller ortaya çıkar',
|
|
145
|
-
],
|
|
146
|
-
],
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
type: 'paragraph',
|
|
150
|
-
html:
|
|
151
|
-
'Görsel sunum ve gerçek zamanlı ölçümler evrimsel süreçlerin anlaşılmasını kolaylaştırır.',
|
|
152
|
-
},
|
|
1
|
+
import { bibliography } from '../bibliography';
|
|
2
|
+
import type { NaturalSelectionLocaleContent } from '../entry';
|
|
3
|
+
|
|
4
|
+
const slug = 'dogal-secilim-genetik-suruklenme-simulatoru';
|
|
5
|
+
const title = 'Doğal Seçilim ve Genetik Sürüklenme Simülatörü';
|
|
6
|
+
const description =
|
|
7
|
+
'Seçilim baskısı, mutasyon, sürüklenme ve üremenin alel frekanslarını gerçek zamanlı nasıl değiştirdiğini görün.';
|
|
8
|
+
|
|
9
|
+
const howTo = [
|
|
10
|
+
{ name: 'Popülasyonu ayarlayın', text: 'Örneklem büyüklüğünün evrimsel kararlılığı nasıl etkilediğini görmek için küçük veya büyük bir popülasyon seçin.' },
|
|
11
|
+
{ name: 'Seçilim ve sürüklenmeyi düzenleyin', text: 'Farklı evrimsel yolları gözlemlemek için seçilim baskısını veya sürüklenmeyi artırın.' },
|
|
12
|
+
{ name: 'Nesilleri izleyin', text: 'Simülasyonu başlatın ve baskın özelliği, fitness değerini ve çeşitliliği zaman içinde karşılaştırın.' },
|
|
13
|
+
{ name: 'Sonuçları yorumlayın', text: 'Uyarlanmanın ne zaman kazandığını ve şansın ne zaman baskın olduğunu anlamak için ölçümleri kullanın.' },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
const faq = [
|
|
17
|
+
{
|
|
18
|
+
question: 'Doğal seçilim ile genetik sürüklenme arasındaki fark nedir?',
|
|
19
|
+
answer: 'Doğal seçilim rastgele değildir; yararlı özellikler daha yaygın hale gelir. Genetik sürüklenme ise alel frekanslarında rastgele bir değişikliktir.',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
question: 'Küçük popülasyonlar neden daha hızlı değişir?',
|
|
23
|
+
answer: 'Az sayıda birey olduğunda, rastgele örnekleme sonraki nesil üzerinde daha büyük bir etkiye sahip olur.',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
question: 'Sürüklenme seçilimi bastırabilir mi?',
|
|
27
|
+
answer: 'Evet. Sürüklenme yeterince güçlüyse yararlı bir alel şans eseri yok olabilir.',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
question: 'Bu simülatörde fitness ne anlama gelir?',
|
|
31
|
+
answer: 'Fitness, popülasyonun seçilen çevreye ne kadar iyi uyum sağladığını gösteren basitleştirilmiş bir puandır.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
question: 'Popülasyon büyüklüğü neden bu kadar önemlidir?',
|
|
35
|
+
answer: 'Rastgele dalgalanmaların alel frekanslarını ne kadar güçlü etkilediğini belirler.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
question: 'Bu simülatörü ne zaman kullanmalıyım?',
|
|
39
|
+
answer: 'Evrimin arkasındaki sezgiyi, özellikle seçilim ve sürüklenme arasındaki farkı anlamak istediğinizde.',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
|
|
43
|
+
export const content: NaturalSelectionLocaleContent = {
|
|
44
|
+
slug,
|
|
45
|
+
title,
|
|
46
|
+
description,
|
|
47
|
+
ui: {
|
|
48
|
+
population: 'Popülasyon büyüklüğü',
|
|
49
|
+
generations: 'Nesiller',
|
|
50
|
+
mutationRate: 'Mutasyon oranı',
|
|
51
|
+
selectionPressure: 'Seçilim baskısı',
|
|
52
|
+
driftIntensity: 'Sürüklenme yoğunluğu',
|
|
53
|
+
alleleCount: 'Başlangıç alelleri',
|
|
54
|
+
innovationRate: 'İnovasyon oranı',
|
|
55
|
+
run: 'Simülasyonu başlat',
|
|
56
|
+
dominantTrait: 'Baskın özellik',
|
|
57
|
+
fitness: 'Nihai fitness',
|
|
58
|
+
diversity: 'Genetik çeşitlilik',
|
|
59
|
+
evolutionConsole: 'Evrim konsolu',
|
|
60
|
+
populationLabel: 'Popülasyon',
|
|
61
|
+
aliveLabel: 'canlı',
|
|
62
|
+
alleleCountsLabel: 'Alel sayıları',
|
|
63
|
+
alleleDefault: 'Alel 1',
|
|
64
|
+
populationValueLabel: 'Popülasyon',
|
|
65
|
+
},
|
|
66
|
+
seo: [
|
|
67
|
+
{
|
|
68
|
+
type: 'title',
|
|
69
|
+
text: 'Doğal Seçilim vs. Genetik Sürüklenme: Canlı Popülasyonla Evrimi Anlayın',
|
|
70
|
+
level: 2,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
type: 'paragraph',
|
|
74
|
+
html:
|
|
75
|
+
'Doğal seçilim ile genetik sürüklenme arasındaki farkı anlamak istiyorsanız, bu simülatör görsel katmanı sağlar. Statik tanımları okumak yerine popülasyonu gerçek zamanlı izlersiniz.',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
type: 'title',
|
|
79
|
+
text: 'Kontroller Ne Anlama Gelir ve Neden Önemlidir',
|
|
80
|
+
level: 3,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
type: 'paragraph',
|
|
84
|
+
html:
|
|
85
|
+
'Doğal seçilim evrimin rastgele olmayan kısmıdır. Hayatta kalmayı artıran özelliklerin frekansını yükseltir. Genetik sürüklenme rastgele kısımdır.',
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'paragraph',
|
|
89
|
+
html:
|
|
90
|
+
'Her iki kuvvet de aynı anda etki eder: büyük popülasyonlarda seçilim baskınken, küçük popülasyonlarda şans yararlı özellikleri silebilir.',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'title',
|
|
94
|
+
text: 'Simülasyon Sonuçları Nasıl Okunur',
|
|
95
|
+
level: 3,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
type: 'paragraph',
|
|
99
|
+
html:
|
|
100
|
+
'Canlı ölçümler baskın özelliği, genetik çeşitliliği, nihai fitness değerini ve popülasyon durumunu gösterir.',
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
type: 'title',
|
|
104
|
+
text: 'Popülasyon Büyüklüğü Hikayeyi Neden Değiştirir',
|
|
105
|
+
level: 3,
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
type: 'list',
|
|
109
|
+
items: [
|
|
110
|
+
'<strong>Seçilim baskısı:</strong> Çevrenin bir özelliği ne kadar kayırdığı.',
|
|
111
|
+
'<strong>Sürüklenme yoğunluğu:</strong> Rastgele örnekleme gürültüsü.',
|
|
112
|
+
'<strong>Mutasyon oranı:</strong> Yeni varyasyonların ortaya çıkma sıklığı.',
|
|
113
|
+
'<strong>Alel sayısı:</strong> Sistemdeki başlangıç çeşitliliği.',
|
|
114
|
+
'<strong>Genetik çeşitlilik:</strong> Evrimin ham maddesi.',
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'paragraph',
|
|
119
|
+
html:
|
|
120
|
+
'Biyolojik sistemlerde seçilim, sürüklenme ve mutasyonu anlamak için pratik bir araç.',
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
type: 'title',
|
|
124
|
+
text: 'Denenecek Hızlı Örnekler',
|
|
125
|
+
level: 3,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'table',
|
|
129
|
+
headers: ['Hedef', 'Değişiklik', 'Beklenen Sonuç'],
|
|
130
|
+
rows: [
|
|
131
|
+
[
|
|
132
|
+
'Seçilimi göstermek',
|
|
133
|
+
'Seçilim baskısını artırın ve sürüklenmeyi azaltın',
|
|
134
|
+
'Bir alel kademeli olarak baskın hale gelir',
|
|
135
|
+
],
|
|
136
|
+
[
|
|
137
|
+
'Sürüklenmeyi göstermek',
|
|
138
|
+
'Popülasyonu azaltın ve sürüklenmeyi artırın',
|
|
139
|
+
'Alel frekanslarında rastgele dalgalanmalar',
|
|
140
|
+
],
|
|
141
|
+
[
|
|
142
|
+
'Mutasyonu göstermek',
|
|
143
|
+
'Mutasyon oranını artırın',
|
|
144
|
+
'Düzenli olarak yeni aleller ortaya çıkar',
|
|
145
|
+
],
|
|
146
|
+
],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
type: 'paragraph',
|
|
150
|
+
html:
|
|
151
|
+
'Görsel sunum ve gerçek zamanlı ölçümler evrimsel süreçlerin anlaşılmasını kolaylaştırır.',
|
|
152
|
+
},
|
|
153
|
+
{ type: 'paragraph', html: 'Bu açıklama modelin varsayımlarını ve parametrelerin sonucu nasıl değiştirdiğini gösterir. Her seferinde yalnızca bir değeri değiştirin ve birkaç çalıştırmayı karşılaştırın; böylece her farkı anlaşılır bir nedene bağlayabilirsiniz. Görselleştirme eğitsel bir yaklaşımdır: gerçek sistemlerde daha fazla değişken, ölçüm belirsizliği ve sınır koşulu bulunur. Sonucu ölçekleri anlamak, sorular oluşturmak ve senaryoları karşılaştırmak için kullanın. Pratik bir karar veya bilimsel analiz için birincil verileri, birimleri ve uzman kaynaklarını ayrıca kontrol edin. Hesabı tekrarlamak ve sınırlarını tartışmak için ayarları not edin.' },
|
|
154
|
+
{ type: 'paragraph', html: 'Hesabı aynı ayarlarla tekrarlayın, ardından her seferinde yalnızca bir girdiyi değiştirin. Başlangıç değerlerini, hesaplama kurallarını ve sınırları kaydedin; böylece model eğilimini sayısal değişimden veya rastlantıdan ayırabilirsiniz. Sonuç eğitim amaçlıdır ve varsayımlar ile sınırlamalarla birlikte okunmalıdır. Gerçek ölçüm veya tasarım için ek veri ve uzman incelemesi gerekir.' },
|
|
153
155
|
],
|
|
154
156
|
faq,
|
|
155
|
-
bibliography,
|
|
156
|
-
howTo,
|
|
157
|
-
schemas: [
|
|
158
|
-
{
|
|
159
|
-
'@context': 'https://schema.org',
|
|
160
|
-
'@type': 'SoftwareApplication',
|
|
161
|
-
name: title,
|
|
162
|
-
description,
|
|
163
|
-
applicationCategory: 'EducationalApplication',
|
|
164
|
-
operatingSystem: 'Any',
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
'@context': 'https://schema.org',
|
|
168
|
-
'@type': 'FAQPage',
|
|
169
|
-
mainEntity: faq.map((item) => ({
|
|
170
|
-
'@type': 'Question',
|
|
171
|
-
name: item.question,
|
|
172
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
173
|
-
})),
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
'@context': 'https://schema.org',
|
|
177
|
-
'@type': 'HowTo',
|
|
178
|
-
name: title,
|
|
179
|
-
step: howTo.map((step) => ({
|
|
180
|
-
'@type': 'HowToStep',
|
|
181
|
-
name: step.name,
|
|
182
|
-
text: step.text,
|
|
183
|
-
})),
|
|
184
|
-
},
|
|
185
|
-
],
|
|
186
|
-
};
|
|
157
|
+
bibliography,
|
|
158
|
+
howTo,
|
|
159
|
+
schemas: [
|
|
160
|
+
{
|
|
161
|
+
'@context': 'https://schema.org',
|
|
162
|
+
'@type': 'SoftwareApplication',
|
|
163
|
+
name: title,
|
|
164
|
+
description,
|
|
165
|
+
applicationCategory: 'EducationalApplication',
|
|
166
|
+
operatingSystem: 'Any',
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
'@context': 'https://schema.org',
|
|
170
|
+
'@type': 'FAQPage',
|
|
171
|
+
mainEntity: faq.map((item) => ({
|
|
172
|
+
'@type': 'Question',
|
|
173
|
+
name: item.question,
|
|
174
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
175
|
+
})),
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
'@context': 'https://schema.org',
|
|
179
|
+
'@type': 'HowTo',
|
|
180
|
+
name: title,
|
|
181
|
+
step: howTo.map((step) => ({
|
|
182
|
+
'@type': 'HowToStep',
|
|
183
|
+
name: step.name,
|
|
184
|
+
text: step.text,
|
|
185
|
+
})),
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
};
|