@jjlmoya/utils-forensic-science 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/package.json +69 -0
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  5. package/src/category/i18n/de.ts +55 -0
  6. package/src/category/i18n/en.ts +55 -0
  7. package/src/category/i18n/es.ts +55 -0
  8. package/src/category/i18n/fr.ts +55 -0
  9. package/src/category/i18n/id.ts +55 -0
  10. package/src/category/i18n/it.ts +55 -0
  11. package/src/category/i18n/ja.ts +56 -0
  12. package/src/category/i18n/ko.ts +56 -0
  13. package/src/category/i18n/nl.ts +55 -0
  14. package/src/category/i18n/pl.ts +55 -0
  15. package/src/category/i18n/pt.ts +55 -0
  16. package/src/category/i18n/ru.ts +55 -0
  17. package/src/category/i18n/sv.ts +55 -0
  18. package/src/category/i18n/tr.ts +55 -0
  19. package/src/category/i18n/zh.ts +56 -0
  20. package/src/category/index.ts +48 -0
  21. package/src/category/seo.astro +15 -0
  22. package/src/components/PreviewNavSidebar.astro +116 -0
  23. package/src/components/PreviewToolbar.astro +143 -0
  24. package/src/data.ts +10 -0
  25. package/src/entries.ts +48 -0
  26. package/src/env.d.ts +5 -0
  27. package/src/index.ts +29 -0
  28. package/src/layouts/PreviewLayout.astro +117 -0
  29. package/src/pages/[locale]/[slug].astro +162 -0
  30. package/src/pages/[locale].astro +261 -0
  31. package/src/pages/index.astro +3 -0
  32. package/src/tests/diacritics_density.test.ts +140 -0
  33. package/src/tests/faq_count.test.ts +19 -0
  34. package/src/tests/i18n_coverage.test.ts +36 -0
  35. package/src/tests/inverted_punctuation.test.ts +84 -0
  36. package/src/tests/locale_completeness.test.ts +24 -0
  37. package/src/tests/mocks/astro_mock.js +2 -0
  38. package/src/tests/no_en_dash.test.ts +70 -0
  39. package/src/tests/no_h1_in_components.test.ts +48 -0
  40. package/src/tests/schemas_fulfillment.test.ts +23 -0
  41. package/src/tests/script_density.test.ts +94 -0
  42. package/src/tests/seo_length.test.ts +46 -0
  43. package/src/tests/shared-test-helpers.ts +56 -0
  44. package/src/tests/slug_language_code_format.test.ts +23 -0
  45. package/src/tests/slug_uniqueness.test.ts +81 -0
  46. package/src/tests/title_quality.test.ts +55 -0
  47. package/src/tests/tool_exports.test.ts +34 -0
  48. package/src/tests/tool_validation.test.ts +16 -0
  49. package/src/tests/widmark.test.ts +28 -0
  50. package/src/tool/forensic-age-estimator/bibliography.astro +14 -0
  51. package/src/tool/forensic-age-estimator/bibliography.ts +16 -0
  52. package/src/tool/forensic-age-estimator/component.astro +321 -0
  53. package/src/tool/forensic-age-estimator/dental-skeletal-third-molar-age-estimator.css +634 -0
  54. package/src/tool/forensic-age-estimator/entry.ts +32 -0
  55. package/src/tool/forensic-age-estimator/i18n/de.ts +245 -0
  56. package/src/tool/forensic-age-estimator/i18n/en.ts +245 -0
  57. package/src/tool/forensic-age-estimator/i18n/es.ts +245 -0
  58. package/src/tool/forensic-age-estimator/i18n/fr.ts +245 -0
  59. package/src/tool/forensic-age-estimator/i18n/id.ts +245 -0
  60. package/src/tool/forensic-age-estimator/i18n/it.ts +245 -0
  61. package/src/tool/forensic-age-estimator/i18n/ja.ts +245 -0
  62. package/src/tool/forensic-age-estimator/i18n/ko.ts +245 -0
  63. package/src/tool/forensic-age-estimator/i18n/nl.ts +245 -0
  64. package/src/tool/forensic-age-estimator/i18n/pl.ts +245 -0
  65. package/src/tool/forensic-age-estimator/i18n/pt.ts +245 -0
  66. package/src/tool/forensic-age-estimator/i18n/ru.ts +245 -0
  67. package/src/tool/forensic-age-estimator/i18n/sv.ts +245 -0
  68. package/src/tool/forensic-age-estimator/i18n/tr.ts +245 -0
  69. package/src/tool/forensic-age-estimator/i18n/zh.ts +246 -0
  70. package/src/tool/forensic-age-estimator/index.ts +11 -0
  71. package/src/tool/forensic-age-estimator/logic.ts +81 -0
  72. package/src/tool/forensic-age-estimator/seo.astro +15 -0
  73. package/src/tool/forensic-blood-test-simulator/bibliography.astro +6 -0
  74. package/src/tool/forensic-blood-test-simulator/bibliography.ts +12 -0
  75. package/src/tool/forensic-blood-test-simulator/component.astro +168 -0
  76. package/src/tool/forensic-blood-test-simulator/dom-utils.ts +40 -0
  77. package/src/tool/forensic-blood-test-simulator/entry.ts +32 -0
  78. package/src/tool/forensic-blood-test-simulator/forensic-presumptive-blood-testing-luminol-kastle-meyer-simulator.css +532 -0
  79. package/src/tool/forensic-blood-test-simulator/helpers.ts +16 -0
  80. package/src/tool/forensic-blood-test-simulator/i18n/de.ts +185 -0
  81. package/src/tool/forensic-blood-test-simulator/i18n/en.ts +185 -0
  82. package/src/tool/forensic-blood-test-simulator/i18n/es.ts +185 -0
  83. package/src/tool/forensic-blood-test-simulator/i18n/fr.ts +220 -0
  84. package/src/tool/forensic-blood-test-simulator/i18n/id.ts +220 -0
  85. package/src/tool/forensic-blood-test-simulator/i18n/it.ts +220 -0
  86. package/src/tool/forensic-blood-test-simulator/i18n/ja.ts +220 -0
  87. package/src/tool/forensic-blood-test-simulator/i18n/ko.ts +220 -0
  88. package/src/tool/forensic-blood-test-simulator/i18n/nl.ts +220 -0
  89. package/src/tool/forensic-blood-test-simulator/i18n/pl.ts +220 -0
  90. package/src/tool/forensic-blood-test-simulator/i18n/pt.ts +220 -0
  91. package/src/tool/forensic-blood-test-simulator/i18n/ru.ts +220 -0
  92. package/src/tool/forensic-blood-test-simulator/i18n/sv.ts +220 -0
  93. package/src/tool/forensic-blood-test-simulator/i18n/tr.ts +220 -0
  94. package/src/tool/forensic-blood-test-simulator/i18n/zh.ts +220 -0
  95. package/src/tool/forensic-blood-test-simulator/index.ts +11 -0
  96. package/src/tool/forensic-blood-test-simulator/logic.ts +174 -0
  97. package/src/tool/forensic-blood-test-simulator/script.ts +192 -0
  98. package/src/tool/forensic-blood-test-simulator/seo.astro +15 -0
  99. package/src/tool/forensic-fiber-comparison-microscope/bibliography.astro +6 -0
  100. package/src/tool/forensic-fiber-comparison-microscope/bibliography.ts +16 -0
  101. package/src/tool/forensic-fiber-comparison-microscope/component.astro +146 -0
  102. package/src/tool/forensic-fiber-comparison-microscope/entry.ts +32 -0
  103. package/src/tool/forensic-fiber-comparison-microscope/forensic-fiber-comparison-microscope.css +629 -0
  104. package/src/tool/forensic-fiber-comparison-microscope/i18n/de.ts +250 -0
  105. package/src/tool/forensic-fiber-comparison-microscope/i18n/en.ts +246 -0
  106. package/src/tool/forensic-fiber-comparison-microscope/i18n/es.ts +246 -0
  107. package/src/tool/forensic-fiber-comparison-microscope/i18n/fr.ts +246 -0
  108. package/src/tool/forensic-fiber-comparison-microscope/i18n/id.ts +250 -0
  109. package/src/tool/forensic-fiber-comparison-microscope/i18n/it.ts +246 -0
  110. package/src/tool/forensic-fiber-comparison-microscope/i18n/ja.ts +250 -0
  111. package/src/tool/forensic-fiber-comparison-microscope/i18n/ko.ts +246 -0
  112. package/src/tool/forensic-fiber-comparison-microscope/i18n/nl.ts +246 -0
  113. package/src/tool/forensic-fiber-comparison-microscope/i18n/pl.ts +250 -0
  114. package/src/tool/forensic-fiber-comparison-microscope/i18n/pt.ts +250 -0
  115. package/src/tool/forensic-fiber-comparison-microscope/i18n/ru.ts +250 -0
  116. package/src/tool/forensic-fiber-comparison-microscope/i18n/sv.ts +250 -0
  117. package/src/tool/forensic-fiber-comparison-microscope/i18n/tr.ts +246 -0
  118. package/src/tool/forensic-fiber-comparison-microscope/i18n/zh.ts +250 -0
  119. package/src/tool/forensic-fiber-comparison-microscope/index.ts +11 -0
  120. package/src/tool/forensic-fiber-comparison-microscope/logic.ts +244 -0
  121. package/src/tool/forensic-fiber-comparison-microscope/render.ts +265 -0
  122. package/src/tool/forensic-fiber-comparison-microscope/seo.astro +15 -0
  123. package/src/tool/forensic-fiber-comparison-microscope/view.ts +267 -0
  124. package/src/tool/forensic-glass-becke-line-simulator/bibliography.astro +6 -0
  125. package/src/tool/forensic-glass-becke-line-simulator/bibliography.ts +16 -0
  126. package/src/tool/forensic-glass-becke-line-simulator/component.astro +81 -0
  127. package/src/tool/forensic-glass-becke-line-simulator/entry.ts +32 -0
  128. package/src/tool/forensic-glass-becke-line-simulator/forensic-glass-becke-line-simulator.css +392 -0
  129. package/src/tool/forensic-glass-becke-line-simulator/i18n/de.ts +231 -0
  130. package/src/tool/forensic-glass-becke-line-simulator/i18n/en.ts +231 -0
  131. package/src/tool/forensic-glass-becke-line-simulator/i18n/es.ts +231 -0
  132. package/src/tool/forensic-glass-becke-line-simulator/i18n/fr.ts +231 -0
  133. package/src/tool/forensic-glass-becke-line-simulator/i18n/id.ts +231 -0
  134. package/src/tool/forensic-glass-becke-line-simulator/i18n/it.ts +231 -0
  135. package/src/tool/forensic-glass-becke-line-simulator/i18n/ja.ts +231 -0
  136. package/src/tool/forensic-glass-becke-line-simulator/i18n/ko.ts +231 -0
  137. package/src/tool/forensic-glass-becke-line-simulator/i18n/nl.ts +231 -0
  138. package/src/tool/forensic-glass-becke-line-simulator/i18n/pl.ts +231 -0
  139. package/src/tool/forensic-glass-becke-line-simulator/i18n/pt.ts +231 -0
  140. package/src/tool/forensic-glass-becke-line-simulator/i18n/ru.ts +231 -0
  141. package/src/tool/forensic-glass-becke-line-simulator/i18n/sv.ts +231 -0
  142. package/src/tool/forensic-glass-becke-line-simulator/i18n/tr.ts +231 -0
  143. package/src/tool/forensic-glass-becke-line-simulator/i18n/zh.ts +231 -0
  144. package/src/tool/forensic-glass-becke-line-simulator/index.ts +11 -0
  145. package/src/tool/forensic-glass-becke-line-simulator/logic.ts +100 -0
  146. package/src/tool/forensic-glass-becke-line-simulator/seo.astro +15 -0
  147. package/src/tool/forensic-glass-becke-line-simulator/view.ts +281 -0
  148. package/src/tool/forensic-image-authenticity-analyzer/bibliography.astro +9 -0
  149. package/src/tool/forensic-image-authenticity-analyzer/bibliography.ts +7 -0
  150. package/src/tool/forensic-image-authenticity-analyzer/component.astro +250 -0
  151. package/src/tool/forensic-image-authenticity-analyzer/entry.ts +29 -0
  152. package/src/tool/forensic-image-authenticity-analyzer/forensic-image-metadata-authenticity-analyzer.css +679 -0
  153. package/src/tool/forensic-image-authenticity-analyzer/i18n/de.ts +105 -0
  154. package/src/tool/forensic-image-authenticity-analyzer/i18n/en.ts +105 -0
  155. package/src/tool/forensic-image-authenticity-analyzer/i18n/es.ts +105 -0
  156. package/src/tool/forensic-image-authenticity-analyzer/i18n/fr.ts +105 -0
  157. package/src/tool/forensic-image-authenticity-analyzer/i18n/id.ts +76 -0
  158. package/src/tool/forensic-image-authenticity-analyzer/i18n/it.ts +105 -0
  159. package/src/tool/forensic-image-authenticity-analyzer/i18n/ja.ts +72 -0
  160. package/src/tool/forensic-image-authenticity-analyzer/i18n/ko.ts +72 -0
  161. package/src/tool/forensic-image-authenticity-analyzer/i18n/nl.ts +75 -0
  162. package/src/tool/forensic-image-authenticity-analyzer/i18n/pl.ts +75 -0
  163. package/src/tool/forensic-image-authenticity-analyzer/i18n/pt.ts +105 -0
  164. package/src/tool/forensic-image-authenticity-analyzer/i18n/ru.ts +75 -0
  165. package/src/tool/forensic-image-authenticity-analyzer/i18n/sv.ts +76 -0
  166. package/src/tool/forensic-image-authenticity-analyzer/i18n/tr.ts +76 -0
  167. package/src/tool/forensic-image-authenticity-analyzer/i18n/zh.ts +71 -0
  168. package/src/tool/forensic-image-authenticity-analyzer/index.ts +11 -0
  169. package/src/tool/forensic-image-authenticity-analyzer/logic.ts +283 -0
  170. package/src/tool/forensic-image-authenticity-analyzer/seo.astro +10 -0
  171. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.astro +6 -0
  172. package/src/tool/forensic-microcrystal-drug-simulator/bibliography.ts +12 -0
  173. package/src/tool/forensic-microcrystal-drug-simulator/component.astro +240 -0
  174. package/src/tool/forensic-microcrystal-drug-simulator/entry.ts +32 -0
  175. package/src/tool/forensic-microcrystal-drug-simulator/forensic-microcrystal-drug-simulator.css +430 -0
  176. package/src/tool/forensic-microcrystal-drug-simulator/i18n/de.ts +244 -0
  177. package/src/tool/forensic-microcrystal-drug-simulator/i18n/en.ts +244 -0
  178. package/src/tool/forensic-microcrystal-drug-simulator/i18n/es.ts +244 -0
  179. package/src/tool/forensic-microcrystal-drug-simulator/i18n/fr.ts +244 -0
  180. package/src/tool/forensic-microcrystal-drug-simulator/i18n/id.ts +244 -0
  181. package/src/tool/forensic-microcrystal-drug-simulator/i18n/it.ts +244 -0
  182. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ja.ts +244 -0
  183. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ko.ts +244 -0
  184. package/src/tool/forensic-microcrystal-drug-simulator/i18n/nl.ts +244 -0
  185. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pl.ts +244 -0
  186. package/src/tool/forensic-microcrystal-drug-simulator/i18n/pt.ts +244 -0
  187. package/src/tool/forensic-microcrystal-drug-simulator/i18n/ru.ts +244 -0
  188. package/src/tool/forensic-microcrystal-drug-simulator/i18n/sv.ts +244 -0
  189. package/src/tool/forensic-microcrystal-drug-simulator/i18n/tr.ts +244 -0
  190. package/src/tool/forensic-microcrystal-drug-simulator/i18n/zh.ts +244 -0
  191. package/src/tool/forensic-microcrystal-drug-simulator/index.ts +11 -0
  192. package/src/tool/forensic-microcrystal-drug-simulator/logic.ts +189 -0
  193. package/src/tool/forensic-microcrystal-drug-simulator/seo.astro +15 -0
  194. package/src/tool/forensic-sex-determinator/bibliography.astro +14 -0
  195. package/src/tool/forensic-sex-determinator/bibliography.ts +12 -0
  196. package/src/tool/forensic-sex-determinator/component.astro +463 -0
  197. package/src/tool/forensic-sex-determinator/entry.ts +32 -0
  198. package/src/tool/forensic-sex-determinator/forensic-sex-determinator.css +413 -0
  199. package/src/tool/forensic-sex-determinator/i18n/de.ts +211 -0
  200. package/src/tool/forensic-sex-determinator/i18n/en.ts +211 -0
  201. package/src/tool/forensic-sex-determinator/i18n/es.ts +211 -0
  202. package/src/tool/forensic-sex-determinator/i18n/fr.ts +211 -0
  203. package/src/tool/forensic-sex-determinator/i18n/id.ts +211 -0
  204. package/src/tool/forensic-sex-determinator/i18n/it.ts +211 -0
  205. package/src/tool/forensic-sex-determinator/i18n/ja.ts +211 -0
  206. package/src/tool/forensic-sex-determinator/i18n/ko.ts +211 -0
  207. package/src/tool/forensic-sex-determinator/i18n/nl.ts +211 -0
  208. package/src/tool/forensic-sex-determinator/i18n/pl.ts +211 -0
  209. package/src/tool/forensic-sex-determinator/i18n/pt.ts +211 -0
  210. package/src/tool/forensic-sex-determinator/i18n/ru.ts +211 -0
  211. package/src/tool/forensic-sex-determinator/i18n/sv.ts +211 -0
  212. package/src/tool/forensic-sex-determinator/i18n/tr.ts +211 -0
  213. package/src/tool/forensic-sex-determinator/i18n/zh.ts +211 -0
  214. package/src/tool/forensic-sex-determinator/index.ts +11 -0
  215. package/src/tool/forensic-sex-determinator/logic.ts +89 -0
  216. package/src/tool/forensic-sex-determinator/seo.astro +15 -0
  217. package/src/tool/forensic-stature-estimator/bibliography.astro +14 -0
  218. package/src/tool/forensic-stature-estimator/bibliography.ts +12 -0
  219. package/src/tool/forensic-stature-estimator/component.astro +49 -0
  220. package/src/tool/forensic-stature-estimator/components/EstimationPanel.astro +65 -0
  221. package/src/tool/forensic-stature-estimator/components/OsteometricBoard.astro +39 -0
  222. package/src/tool/forensic-stature-estimator/components/OsteometricSelector.astro +109 -0
  223. package/src/tool/forensic-stature-estimator/dom-utils.ts +71 -0
  224. package/src/tool/forensic-stature-estimator/entry.ts +32 -0
  225. package/src/tool/forensic-stature-estimator/forensic-stature-estimator.css +689 -0
  226. package/src/tool/forensic-stature-estimator/helpers.ts +51 -0
  227. package/src/tool/forensic-stature-estimator/i18n/de.ts +196 -0
  228. package/src/tool/forensic-stature-estimator/i18n/en.ts +196 -0
  229. package/src/tool/forensic-stature-estimator/i18n/es.ts +196 -0
  230. package/src/tool/forensic-stature-estimator/i18n/fr.ts +196 -0
  231. package/src/tool/forensic-stature-estimator/i18n/id.ts +196 -0
  232. package/src/tool/forensic-stature-estimator/i18n/it.ts +196 -0
  233. package/src/tool/forensic-stature-estimator/i18n/ja.ts +196 -0
  234. package/src/tool/forensic-stature-estimator/i18n/ko.ts +196 -0
  235. package/src/tool/forensic-stature-estimator/i18n/nl.ts +196 -0
  236. package/src/tool/forensic-stature-estimator/i18n/pl.ts +196 -0
  237. package/src/tool/forensic-stature-estimator/i18n/pt.ts +196 -0
  238. package/src/tool/forensic-stature-estimator/i18n/ru.ts +196 -0
  239. package/src/tool/forensic-stature-estimator/i18n/sv.ts +196 -0
  240. package/src/tool/forensic-stature-estimator/i18n/tr.ts +196 -0
  241. package/src/tool/forensic-stature-estimator/i18n/zh.ts +196 -0
  242. package/src/tool/forensic-stature-estimator/index.ts +11 -0
  243. package/src/tool/forensic-stature-estimator/logic.ts +119 -0
  244. package/src/tool/forensic-stature-estimator/script.ts +288 -0
  245. package/src/tool/forensic-stature-estimator/seo.astro +15 -0
  246. package/src/tool/forensic-tlc-ink-simulator/bibliography.astro +6 -0
  247. package/src/tool/forensic-tlc-ink-simulator/bibliography.ts +16 -0
  248. package/src/tool/forensic-tlc-ink-simulator/component.astro +245 -0
  249. package/src/tool/forensic-tlc-ink-simulator/entry.ts +32 -0
  250. package/src/tool/forensic-tlc-ink-simulator/forensic-tlc-ink-simulator.css +462 -0
  251. package/src/tool/forensic-tlc-ink-simulator/i18n/de.ts +243 -0
  252. package/src/tool/forensic-tlc-ink-simulator/i18n/en.ts +243 -0
  253. package/src/tool/forensic-tlc-ink-simulator/i18n/es.ts +243 -0
  254. package/src/tool/forensic-tlc-ink-simulator/i18n/fr.ts +243 -0
  255. package/src/tool/forensic-tlc-ink-simulator/i18n/id.ts +243 -0
  256. package/src/tool/forensic-tlc-ink-simulator/i18n/it.ts +243 -0
  257. package/src/tool/forensic-tlc-ink-simulator/i18n/ja.ts +235 -0
  258. package/src/tool/forensic-tlc-ink-simulator/i18n/ko.ts +235 -0
  259. package/src/tool/forensic-tlc-ink-simulator/i18n/nl.ts +243 -0
  260. package/src/tool/forensic-tlc-ink-simulator/i18n/pl.ts +243 -0
  261. package/src/tool/forensic-tlc-ink-simulator/i18n/pt.ts +243 -0
  262. package/src/tool/forensic-tlc-ink-simulator/i18n/ru.ts +243 -0
  263. package/src/tool/forensic-tlc-ink-simulator/i18n/sv.ts +243 -0
  264. package/src/tool/forensic-tlc-ink-simulator/i18n/tr.ts +243 -0
  265. package/src/tool/forensic-tlc-ink-simulator/i18n/zh.ts +235 -0
  266. package/src/tool/forensic-tlc-ink-simulator/index.ts +11 -0
  267. package/src/tool/forensic-tlc-ink-simulator/logic.ts +152 -0
  268. package/src/tool/forensic-tlc-ink-simulator/seo.astro +15 -0
  269. package/src/tool/gsr-dispersion-calculator/bibliography.astro +6 -0
  270. package/src/tool/gsr-dispersion-calculator/bibliography.ts +16 -0
  271. package/src/tool/gsr-dispersion-calculator/component.astro +294 -0
  272. package/src/tool/gsr-dispersion-calculator/entry.ts +32 -0
  273. package/src/tool/gsr-dispersion-calculator/gsr-dispersion-calculator.css +305 -0
  274. package/src/tool/gsr-dispersion-calculator/i18n/de.ts +272 -0
  275. package/src/tool/gsr-dispersion-calculator/i18n/en.ts +272 -0
  276. package/src/tool/gsr-dispersion-calculator/i18n/es.ts +272 -0
  277. package/src/tool/gsr-dispersion-calculator/i18n/fr.ts +272 -0
  278. package/src/tool/gsr-dispersion-calculator/i18n/id.ts +272 -0
  279. package/src/tool/gsr-dispersion-calculator/i18n/it.ts +272 -0
  280. package/src/tool/gsr-dispersion-calculator/i18n/ja.ts +272 -0
  281. package/src/tool/gsr-dispersion-calculator/i18n/ko.ts +272 -0
  282. package/src/tool/gsr-dispersion-calculator/i18n/nl.ts +272 -0
  283. package/src/tool/gsr-dispersion-calculator/i18n/pl.ts +272 -0
  284. package/src/tool/gsr-dispersion-calculator/i18n/pt.ts +272 -0
  285. package/src/tool/gsr-dispersion-calculator/i18n/ru.ts +272 -0
  286. package/src/tool/gsr-dispersion-calculator/i18n/sv.ts +272 -0
  287. package/src/tool/gsr-dispersion-calculator/i18n/tr.ts +272 -0
  288. package/src/tool/gsr-dispersion-calculator/i18n/zh.ts +272 -0
  289. package/src/tool/gsr-dispersion-calculator/index.ts +11 -0
  290. package/src/tool/gsr-dispersion-calculator/logic.ts +148 -0
  291. package/src/tool/gsr-dispersion-calculator/seo.astro +15 -0
  292. package/src/tool/widmark-alcohol-simulator/bibliography.astro +14 -0
  293. package/src/tool/widmark-alcohol-simulator/bibliography.ts +12 -0
  294. package/src/tool/widmark-alcohol-simulator/component.astro +453 -0
  295. package/src/tool/widmark-alcohol-simulator/entry.ts +32 -0
  296. package/src/tool/widmark-alcohol-simulator/i18n/de.ts +193 -0
  297. package/src/tool/widmark-alcohol-simulator/i18n/en.ts +206 -0
  298. package/src/tool/widmark-alcohol-simulator/i18n/es.ts +193 -0
  299. package/src/tool/widmark-alcohol-simulator/i18n/fr.ts +193 -0
  300. package/src/tool/widmark-alcohol-simulator/i18n/id.ts +193 -0
  301. package/src/tool/widmark-alcohol-simulator/i18n/it.ts +193 -0
  302. package/src/tool/widmark-alcohol-simulator/i18n/ja.ts +193 -0
  303. package/src/tool/widmark-alcohol-simulator/i18n/ko.ts +193 -0
  304. package/src/tool/widmark-alcohol-simulator/i18n/nl.ts +193 -0
  305. package/src/tool/widmark-alcohol-simulator/i18n/pl.ts +193 -0
  306. package/src/tool/widmark-alcohol-simulator/i18n/pt.ts +193 -0
  307. package/src/tool/widmark-alcohol-simulator/i18n/ru.ts +193 -0
  308. package/src/tool/widmark-alcohol-simulator/i18n/sv.ts +193 -0
  309. package/src/tool/widmark-alcohol-simulator/i18n/tr.ts +193 -0
  310. package/src/tool/widmark-alcohol-simulator/i18n/zh.ts +193 -0
  311. package/src/tool/widmark-alcohol-simulator/index.ts +11 -0
  312. package/src/tool/widmark-alcohol-simulator/logic.ts +97 -0
  313. package/src/tool/widmark-alcohol-simulator/seo.astro +15 -0
  314. package/src/tool/widmark-alcohol-simulator/widmark-alcohol-simulator.css +386 -0
  315. package/src/tools.ts +27 -0
  316. package/src/types.ts +70 -0
@@ -0,0 +1,246 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import { bibliography } from '../bibliography';
3
+
4
+ const slug = 'forensische-vezelvergelijking-microscoop';
5
+ const title = 'Forensische vezelvergelijking microscoopsimulator';
6
+ const description = 'Stel het profiel van een betwiste textielvezel op, vergelijk deze met bekende referenties en interpreteer morfologische, polarisatie- en UV-Vis-absorptiegegevens.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Stel het profiel van de betwiste vezel samen',
11
+ text: 'Stel het materiaal, de diameter, de twistrichting, de polarisatiereactie en het kleurstofprofiel in voor de gevonden vezel.',
12
+ },
13
+ {
14
+ name: 'Kies een bekende vergelijkingsvezel',
15
+ text: 'Selecteer aan de rechterkant een vezel van een verdacht kledingstuk, zoals katoen, wol, polyester of nylon.',
16
+ },
17
+ {
18
+ name: 'Pas focus en polarisatie aan',
19
+ text: 'Verschuif de focusregelaar en roteer de polarisator om scherpte, oppervlakterichels en dubbelbreking te observeren.',
20
+ },
21
+ {
22
+ name: 'Vergelijk morfologie en UV-Vis-spectra',
23
+ text: 'Gebruik de morfologiescore, spectrumscore, gecombineerde overeenkomst en absorptiecurven om te bepalen of de monsters consistent of duidelijk verschillend zijn.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Kan vezelmicroscopie het exacte kledingstuk identificeren waar een vezel vandaan komt?',
30
+ answer: 'Meestal niet. Vezelvergelijking kan consistentie of verschillen aantonen tussen een betwiste vezel en een bekend textiel, maar toeschrijven aan een individuele bron vereist zorgvuldige context, gevalideerde methoden en vaak aanvullende chemische of instrumentele analyses.',
31
+ },
32
+ {
33
+ question: 'Waarom wordt gepolariseerd licht gebruikt bij vezelvergelijking?',
34
+ answer: 'Gepolariseerd licht helpt bij het onthullen van dubbelbreking, uitdovingsgedrag en structurele verschillen tussen natuurlijke en synthetische vezels. Synthetische vezels vertonen vaak een sterkere polarisatiereactie vanwege de moleculaire uitlijning.',
35
+ },
36
+ {
37
+ question: 'Wat voegt het UV-Vis-spectrum toe?',
38
+ answer: 'Hoewel microscopie de vorm en het optische gedrag beschrijft, kan UV-Vis-absorptie het gedrag van kleurstoffen vergelijken over verschillende golflengten. Vergelijkbare vezels met verschillende kleurstoffen kunnen hierdoor duidelijk worden onderscheiden in het spectrale diagram.',
39
+ },
40
+ {
41
+ question: 'Waarom worden de resultaten getoond als scores in plaats van een definitieve identificatie?',
42
+ answer: 'Forensisch sporenonderzoek moet proportioneel worden gerapporteerd. De scores zijn educatieve samenvattingen van morfologische en kleurstofovereenkomst, geen laboratoriumconclusie of juridisch oordeel.',
43
+ },
44
+ ];
45
+
46
+ export const content: ToolLocaleContent = {
47
+ slug,
48
+ title,
49
+ description,
50
+ ui: {
51
+ viewerAria: 'Virtuele forensische microscoop met gedeeld beeld die twee textielvezels vergelijkt',
52
+ chartAria: 'UV-Vis-absorptiediagram dat de kleurstofspectra van de betwiste en bekende vezel vergelijkt',
53
+ questionedSample: 'Betwist monster',
54
+ fixedEvidence: 'Vastgesteld spoor',
55
+ builderSummaryDefault: 'Katoen / 18 µm / onregelmatig / indigo',
56
+ customQuestionedLabel: 'Betwiste vezel uit de zaak',
57
+ material: 'Materiaal',
58
+ cotton: 'Katoen',
59
+ woolMaterial: 'Wol',
60
+ polyesterMaterial: 'Polyester',
61
+ nylonMaterial: 'Nylon',
62
+ materialcotton: 'katoen',
63
+ materialwool: 'wol',
64
+ materialpolyester: 'polyester',
65
+ materialnylon: 'nylon',
66
+ twist: 'Twist',
67
+ irregularTwist: 'Onregelmatig',
68
+ sTwist: 'S',
69
+ zTwist: 'Z',
70
+ diameter: 'Diameter',
71
+ polarResponse: 'Polarisatiereactie',
72
+ dyeProfile: 'Kleurstofprofiel',
73
+ indigoDye: 'Indigo',
74
+ crimsonDye: 'Karmijnrood',
75
+ navyDye: 'Marineblauw',
76
+ violetDye: 'Violet',
77
+ dyeindigo: 'indigo',
78
+ dyecrimson: 'karmijnrood',
79
+ dyenavy: 'marineblauw',
80
+ dyeviolet: 'violet',
81
+ knownSample: 'Bekende vergelijking',
82
+ questionedCotton: 'Betwiste blauwe katoenvezel',
83
+ suspectCotton: 'Verdachte katoenvezel van shirt',
84
+ wool: 'Rode wollen truivezel',
85
+ polyester: 'Marineblauwe polyester jasvezel',
86
+ nylon: 'Violette nylon voeringvezel',
87
+ focus: 'Fijnfocus',
88
+ polarizer: 'Polarisatorhoek',
89
+ morphology: 'Morfologie',
90
+ spectrum: 'UV-Vis',
91
+ birefringence: 'Dubbelbreking',
92
+ combinedMatch: 'Gecombineerde overeenkomst',
93
+ uvVisTitle: 'UV-Vis-absorptie-overlay',
94
+ statusStrong: 'Hoge consistentie',
95
+ statusPartial: 'Gemengde vergelijking',
96
+ statusDifferent: 'Uitsluiting ondersteund',
97
+ verdictStrong: 'De betwiste en bekende vezels zijn zeer consistent in diameter, twist, optisch gedrag en kleurstofspectrum. In een echte zaak wordt dit gerapporteerd als ondersteuning voor een mogelijke gemeenschappelijke textielbron, niet als individuele identificatie.',
98
+ verdictPartial: 'De vergelijking is gemengd. Sommige klassekenmerken komen overeen, maar morfologie, kleurstofreactie of dubbelbreking laten voldoende verschillen zien waardoor meer onderzoek vereist is voor een voorzichtige associatie.',
99
+ verdictDifferent: 'De vezels zijn niet consistent over de belangrijkste klassekenmerken. Het gesimuleerde resultaat ondersteunt de uitsluiting van dit bekende textiel als de waarschijnlijke bron van de betwiste vezel.',
100
+ disclaimer: 'Uitsluitend educatieve simulatie. Echte forensische vezelvergelijking vereist gevalideerde microscopie, controles, documentatie, maatregelen tegen contaminatie, collegiale toetsing en gekwalificeerde sporeninterpretatie.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: 'Forensische vezelvergelijking met gedeeld-beeldmicroscopie en UV-Vis-spectra',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'diagnostic',
110
+ variant: 'info',
111
+ icon: 'mdi:microscope',
112
+ badge: 'Educatieve simulator',
113
+ title: 'Wat deze virtuele vezelmicroscoop demonsteert',
114
+ html: 'Deze simulator modelleert de praktische werkstroom achter <strong>forensische vezelvergelijking</strong>: beschrijf de betwiste textielvezel, vergelijk deze met een bekende referentie, pas de focus aan, roteer de polarisatiefilters en vergelijk de kleurstofreactie met een vereenvoudigde UV-Vis-absorptiecurve. Het is ontworpen voor studenten forensisch onderzoek, niet voor echte beslissingen in strafzaken.',
115
+ },
116
+ {
117
+ type: 'stats',
118
+ columns: 4,
119
+ items: [
120
+ { value: '2 velden', label: 'gedeeld microscoopbeeld', icon: 'mdi:compare-horizontal' },
121
+ { value: '380-720 nm', label: 'zichtbaar spectrumbereik', icon: 'mdi:chart-bell-curve' },
122
+ { value: '4 klassen', label: 'katoen, wol, polyester, nylon', icon: 'mdi:tshirt-crew' },
123
+ { value: '0-180°', label: 'polarisatierotatie', icon: 'mdi:rotate-3d-variant' },
124
+ ],
125
+ },
126
+ {
127
+ type: 'summary',
128
+ title: 'Essentiële waarnemingen bij de vergelijking van textielvezels',
129
+ items: [
130
+ 'Meet of schat de vezeldiameter en noteer natuurlijke variaties langs de vezelstreng.',
131
+ 'Noteer twistrichting, oppervlakterichels, merg-achtige kenmerken, matteringsdeeltjes en aanwijzingen over de dwarsdoorsnede indien beschikbaar.',
132
+ 'Gebruik gepolariseerd licht om dubbelbreking, uitdovingsgedrag en helderheidsveranderingen tijdens rotatie te vergelijken.',
133
+ 'Vergelijk de kleur microscopisch en gebruik instrumentele kleurstofgegevens wanneer de zaak grotere discriminatie vereist.',
134
+ 'Rapporteer of de bevindingen consistent, verschillend of onbeslist zijn; vermijd bewoordingen die zonder ondersteuning duiden op een uniek kledingstuk.',
135
+ ],
136
+ },
137
+ {
138
+ type: 'table',
139
+ headers: ['Waarneming', 'Welke vraag helpt het beantwoorden', 'Beperking'],
140
+ rows: [
141
+ ['Diameter en morfologie', 'Zijn de vezels fysiek vergelijkbaar?', 'Productievariatie kan overlappen tussen verschillende kledingstukken.'],
142
+ ['Twist en oppervlaktedetails', 'Komen natuurlijke of synthetische kenmerken overeen?', 'Beschadiging, uitrekking en montage kunnen het uiterlijk veranderen.'],
143
+ ['Gepolariseerd lichtgedrag', 'Komen de optische eigenschappen overeen?', 'Dubbelbreking is klasse-bewijs, geen unieke signatuur.'],
144
+ ['UV-Vis-kleurstofspectrum', 'Zijn de kleurstoffen consistent?', 'Vergelijkbare kleurstoffen kunnen dicht bij elkaar liggen; extractie en instrumentinstellingen zijn van belang.'],
145
+ ],
146
+ },
147
+ {
148
+ type: 'comparative',
149
+ columns: 2,
150
+ items: [
151
+ {
152
+ title: 'Wat consistentie ondersteunt',
153
+ icon: 'mdi:check-circle-outline',
154
+ highlight: true,
155
+ description: 'Meerdere onafhankelijke klassekenmerken komen overeen tussen de betwiste en bekende vezel.',
156
+ points: ['Vergelijkbaar diameterbereik', 'Zelfde algemene vezeltype', 'Vergelijkbaar polarisatiegedrag', 'Overlappende absorptiepieken van de kleurstof'],
157
+ },
158
+ {
159
+ title: 'Wat uitsluiting ondersteunt',
160
+ icon: 'mdi:close-circle-outline',
161
+ description: 'Er treedt een duidelijk, herhaalbaar verschil op in een kenmerk dat overeen zou moeten komen voor een gemeenschappelijke textielbron.',
162
+ points: ['Verschil tussen natuurlijk en synthetisch', 'Afwijkende twist of oppervlaktemorfologie', 'Sterk afwijkend kleurstofspectrum', 'Incompatibel gedrag onder dubbelbreking'],
163
+ },
164
+ ],
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Hoe het simulatiemodel werkt',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Het model maakt gebruik van een kleine referentiedatabase met waarden voor diameter, twistrichting, vezelklasse, dubbelbreking, kleurstoffamilie en UV-Vis-absorptiepunten. De betwiste vezel is door de gebruiker te configureren, zodat de vergelijkingsscore reageert op het profiel van de zaak in plaats van op een vastgesteld klaslokaalmonster. De microscoopweergave reageert vervolgens op de focus en polarisatorhoek, zodat studenten kunnen zien waarom optische instellingen belangrijk zijn.',
174
+ },
175
+ {
176
+ type: 'paragraph',
177
+ html: 'De polarisatorregeling is vooral nuttig voor synthetische vezels. Aan polyester en nylon zijn sterkere dubbelbrekingswaarden toegewezen, zodat hun helderheid zichtbaarder verandert als de polarisator draait. Natuurlijk katoen en wol reageren ook, maar het gesimuleerde effect is subtieler. Dit weerspiegelt de didactische gedachte dat moleculaire oriëntatie en vezelstructuur het optische gedrag beïnvloeden.',
178
+ },
179
+ {
180
+ type: 'paragraph',
181
+ html: 'Het UV-Vis-diagram is een vereenvoudigde overlay, geen vervanging voor een spectrofotometer. In echt sporenonderzoek kan kleurstofvergelijking microspectrofotometrie, dunnelaagchromatografie, extractiechemie, referentiecontroles en gedocumenteerde meetonzekerheid vereisen. Het diagram is bedoeld om te leren waarom twee vezels die er onder een microscoop hetzelfde uitzien, toch kunnen verschillen in kleurstofchemie.',
182
+ },
183
+ {
184
+ type: 'paragraph',
185
+ html: 'Forensisch onderzoekers moeten elke stap van het vezelanalyseproces documenteren. Dit omvat het maken van gedetailleerde foto\'s, het vastleggen van metingen en het bijhouden van de keten van bewaring voor alle fysieke bewijsstukken. De simulator helpt studenten het belang te begrijpen van systematische documentatie en objectieve vergelijking in het forensische werk. Door interactie met verschillende instellingen kunnen gebruikers leren hoe het lichtpad, de dikte van het monster och de concentratie van de kleurstof de spectrale curven en het fysieke uiterlijk beïnvloeden.',
186
+ },
187
+ {
188
+ type: 'glossary',
189
+ items: [
190
+ { term: 'Betwiste vezel', definition: 'Een vezel die is veiliggesteld op een plaats delict, slachtoffer, verdachte, gereedschap, voertuig of ander object waarvan de herkomst onbekend is.' },
191
+ { term: 'Bekende vezel', definition: 'Een referentievezel verzameld van een textiel of object voor vergelijking met het betwiste monster.' },
192
+ { term: 'Dubbelbreking', definition: 'Optisch gedrag waarbij een materiaal verschillende brekingsindices heeft, afhankelijk van de lichtrichting of polarisatie.' },
193
+ { term: 'UV-Vis-spectrum', definition: 'Een diagram dat laat zien hoe sterk een kleurstof of materiaal absorbeert bij verschillende golflengten.' },
194
+ { term: 'Klassekenmerk', definition: 'Een eigenschap die bewijsmateriaal kan associëren met een groep mogelijke bronnen in plaats van met één unieke bron.' },
195
+ ],
196
+ },
197
+ {
198
+ type: 'tip',
199
+ title: 'Interpretatietip voor studenten',
200
+ html: 'Een hoge gelijkenisscore moet worden gelezen als <strong>consistentie</strong>, niet als identiteit. Sporenonderzoek is het sterkst wanneer microscopie, chemie, transfercontext, persistentie, veiligstellingsmethode en contaminatiecontroles allemaal in dezelfde richting wijzen.',
201
+ },
202
+ {
203
+ type: 'diagnostic',
204
+ variant: 'warning',
205
+ icon: 'mdi:scale-balance',
206
+ badge: 'Forensic caution',
207
+ title: 'Houd de conclusie binnen de grenzen van het bewijs',
208
+ html: 'Een microscoop in de browser kan een vezelovereenkomst niet valideren. Formele rapporten moeten de waarnemingen, vergelijkingsbasis, beperkingen en de mate van ondersteuning beschrijven zonder de toeschrijving aan de bron te overdrijven.',
209
+ },
210
+ ],
211
+ faq,
212
+ bibliography,
213
+ howTo,
214
+ schemas: [
215
+ {
216
+ '@context': 'https://schema.org',
217
+ '@type': 'SoftwareApplication',
218
+ name: title,
219
+ description,
220
+ applicationCategory: 'ForensicApplication',
221
+ operatingSystem: 'Any',
222
+ },
223
+ {
224
+ '@context': 'https://schema.org',
225
+ '@type': 'FAQPage',
226
+ mainEntity: faq.map((item) => ({
227
+ '@type': 'Question',
228
+ name: item.question,
229
+ acceptedAnswer: {
230
+ '@type': 'Answer',
231
+ text: item.answer,
232
+ },
233
+ })),
234
+ },
235
+ {
236
+ '@context': 'https://schema.org',
237
+ '@type': 'HowTo',
238
+ name: title,
239
+ step: howTo.map((step) => ({
240
+ '@type': 'HowToStep',
241
+ name: step.name,
242
+ text: step.text,
243
+ })),
244
+ },
245
+ ],
246
+ };
@@ -0,0 +1,250 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import { bibliography } from '../bibliography';
3
+
4
+ const slug = 'mikroskop-porownawczy-wlokien-kryminalistycznych';
5
+ const title = 'Symulator mikroskopu porównawczego do mikrośladów włókien';
6
+ const description = 'Stwórz profil dowodowego włókna tekstylnego, porównaj go z referencyjnymi próbkami i zinterpretuj morfologię, polaryzację oraz widmo UV-Vis barwnika.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Stwórz profil dowodowego włókna',
11
+ text: 'Ustaw materiał, średnicę, kierunek skrętu, reakcję polaryzacyjną i profil barwnika dla zabezpieczonego włókna.',
12
+ },
13
+ {
14
+ name: 'Wybierz znane włókno porównawcze',
15
+ text: 'Po prawej stronie wybierz włókno z odzieży podejrzanej, takie jak bawełna, wełna, poliester lub nylon.',
16
+ },
17
+ {
18
+ name: 'Dostosuj ostrość i polaryzację',
19
+ text: 'Przesuń suwak ostrości i obróć polaryzator, aby zaobserwować ostrość, prążki powierzchniowe i dwójłomność.',
20
+ },
21
+ {
22
+ name: 'Porównaj morfologię i widma UV-Vis',
23
+ text: 'Użyj wyników oceny morfologii, zgodności widma, wyniku łącznego i krzywych absorpcji, aby zdecydować, czy próbki są spójne, czy wyraźnie się różnią.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Czy badania mikroskopowe włókien pozwalają zidentyfikować konkretną sztukę odzieży, z której pochodzi włókno?',
30
+ answer: 'Zazwyczaj nie. Porównanie włókien może wykazać spójność lub różnice między włóknem dowodowym a znanym tekstyliem, jednak przypisanie do indywidualnego źródła wymaga szczegółowej analizy kontekstu, walidowanych metod, a często także dodatkowych badań chemicznych lub instrumentalnych.',
31
+ },
32
+ {
33
+ question: 'Dlaczego w porównywaniu włókien stosuje się światło spolaryzowane?',
34
+ answer: 'Światło spolaryzowane pozwala ujawnić dwójłomność, zachowanie wygaszania oraz różnice strukturalne między włóknami naturalnymi i syntetycznymi. Włókna syntetyczne często wykazują silniejszą reakcję na polaryzację ze względu na uporządkowanie cząsteczkowe.',
35
+ },
36
+ {
37
+ question: 'Co wnosi widmo UV-Vis?',
38
+ answer: 'Podczas gdy mikroskopia pozwala opisać kształt i właściwości optyczne, absorbancja UV-Vis umożliwia porównanie charakterystyki barwników przy różnych długościach fal. Podobne włókna o różnych barwnikach mogą wyraźnie rozdzielić się na wykresie widmowym.',
39
+ },
40
+ {
41
+ question: 'Dlaczego wyniki są przedstawiane jako ocena punktowa, a nie ostateczna identyfikacja?',
42
+ answer: 'Dowody w postaci mikrośladów powinny być opiniowane w sposób proporcjonalny. Wyniki punktowe są edukacyjnym podsumowaniem podobieństwa morfologii i barwników, a nie kategoryczną opinią biegłego czy orzeczeniem prawnym.',
43
+ },
44
+ ];
45
+
46
+ export const content: ToolLocaleContent = {
47
+ slug,
48
+ title,
49
+ description,
50
+ ui: {
51
+ viewerAria: 'Wirtualny mikroskop porównawczy o dzielonym polu widzenia porównujący dwa włókna tekstylne',
52
+ chartAria: 'Wykres absorbancji UV-Vis porównujący widma barwnika włókna dowodowego i porównawczego',
53
+ questionedSample: 'Próbka dowodowa',
54
+ fixedEvidence: 'Zabezpieczony mikroślad',
55
+ builderSummaryDefault: 'Bawełna / 18 µm / nieregularny / indygo',
56
+ customQuestionedLabel: 'Włókno dowodowe w sprawie',
57
+ material: 'Materiał',
58
+ cotton: 'Bawełna',
59
+ woolMaterial: 'Wełna',
60
+ polyesterMaterial: 'Poliester',
61
+ nylonMaterial: 'Nylon',
62
+ materialcotton: 'bawełna',
63
+ materialwool: 'wełna',
64
+ materialpolyester: 'poliester',
65
+ materialnylon: 'nylon',
66
+ twist: 'Skręt',
67
+ irregularTwist: 'Nieregularny',
68
+ sTwist: 'S',
69
+ zTwist: 'Z',
70
+ diameter: 'Średnica',
71
+ polarResponse: 'Reakcja na polaryzację',
72
+ dyeProfile: 'Profil barwnika',
73
+ indigoDye: 'Indygo',
74
+ crimsonDye: 'Karmazynowy',
75
+ navyDye: 'Granatowy',
76
+ violetDye: 'Fioletowy',
77
+ dyeindigo: 'indygo',
78
+ dyecrimson: 'karmazynowy',
79
+ dyenavy: 'granatowy',
80
+ dyeviolet: 'fioletowy',
81
+ knownSample: 'Próbka porównawcza',
82
+ questionedCotton: 'Dowodowe niebieskie włókno bawełniane',
83
+ suspectCotton: 'Porównawcze włókno bawełniane z koszuli',
84
+ wool: 'Włókno z czerwonego wełnianego swetra',
85
+ polyester: 'Włókno z granatowej kurtki poliestrowej',
86
+ nylon: 'Włókno z fioletowej nylonowej podszewki',
87
+ focus: 'Dokładna ostrość',
88
+ polarizer: 'Kąt polaryzatora',
89
+ morphology: 'Morfologia',
90
+ spectrum: 'UV-Vis',
91
+ birefringence: 'Dwójłomność',
92
+ combinedMatch: 'Zgodność łączna',
93
+ uvVisTitle: 'Nałożenie absorbancji UV-Vis',
94
+ statusStrong: 'Wysoka spójność',
95
+ statusPartial: 'Niejednoznaczne porównanie',
96
+ statusDifferent: 'Wskazanie na wykluczenie',
97
+ verdictStrong: 'Włókno dowodowe i porównawcze wykazują wysoką spójność pod względem średnicy, skrętu, właściwości optycznych oraz widma barwnika. W rzeczywistej sprawie zostałoby to przedstawione jako potwierdzenie potencjalnego wspólnego pochodzenia tekstylnego, a nie jako kategoryczna identyfikacja.',
98
+ verdictPartial: 'Wynik porównania jest mieszany. Niektóre cechy grupowe są zgodne, lecz różnice w morfologii, reakcji barwnika lub dwójłomności są na tyle znaczące, że przed sformułowaniem jakichkolwiek ostrożnych wniosków wymagane byłyby dalsze badania.',
99
+ verdictDifferent: 'Włókna wykazują brak spójności w kluczowych cechach grupowych. Symulowany wynik przemawia za wykluczeniem tego materiału tekstylnego jako prawdopodobnego źródła włókna dowodowego.',
100
+ disclaimer: 'Symulacja wyłącznie do celów edukacyjnych. Rzeczywiste kryminalistyczne porównywanie włókien wymaga walidowanych metod mikroskopowych, stosowania prób kontrolnych, dokumentacji, zabezpieczeń przed zanieczyszczeniem próbek, recenzji partnerskich oraz wykwalifikowanej interpretacji biegłego.',
101
+ },
102
+ seo: [
103
+ {
104
+ type: 'title',
105
+ text: 'Kryminalistyczne porównywanie włókien za pomocą mikroskopii porównawczej i widm UV-Vis',
106
+ level: 2,
107
+ },
108
+ {
109
+ type: 'diagnostic',
110
+ variant: 'info',
111
+ icon: 'mdi:microscope',
112
+ badge: 'Symulator dydaktyczny',
113
+ title: 'Co demonstruje ten wirtualny mikroskop do włókien',
114
+ html: 'Ten symulator przedstawia praktyczny schemat postępowania przy <strong>kryminalistycznym porównywaniu włókien</strong>: opisz dowodowe włókno tekstylne, porównaj je z referencyjnym wzorcem, ustaw ostrość, obracaj filtry polaryzacyjne i porównaj charakterystykę barwnika przy użyciu uproszczonej krzywej absorbancji UV-Vis. Narzędzie jest przeznaczone dla studentów badających mikroślady, nie do celów opiniodawczych w realnych sprawach.',
115
+ },
116
+ {
117
+ type: 'stats',
118
+ columns: 4,
119
+ items: [
120
+ { value: '2 pola', label: 'dzielony widok mikroskopu', icon: 'mdi:compare-horizontal' },
121
+ { value: '380-720 nm', label: 'zakres widma widzialnego', icon: 'mdi:chart-bell-curve' },
122
+ { value: '4 klasy', label: 'bawełna, wełna, poliester, nylon', icon: 'mdi:tshirt-crew' },
123
+ { value: '0-180°', label: 'rotacja polaryzatora', icon: 'mdi:rotate-3d-variant' },
124
+ ],
125
+ },
126
+ {
127
+ type: 'summary',
128
+ title: 'Kluczowe obserwacje w porównywaniu włókien tekstylnych',
129
+ items: [
130
+ 'Zmierz lub oszacuj średnicę włókna, zwracając uwagę na naturalne wahania wzdłuż jego długości.',
131
+ 'Zarejestruj kierunek skrętu, prążki powierzchniowe, obecność rdzenia, cząstki matujące oraz cechy przekroju poprzecznego, o ile są widoczne.',
132
+ 'Użyj światła spolaryzowanego do porównania dwójłomności, zachowania wygaszania oraz zmian jasności podczas obrotu.',
133
+ 'Porównaj barwę mikroskopowo, a następnie użyj metod instrumentalnych do analizy barwnika, jeśli stopień skomplikowania sprawy wymaga większej dokładności.',
134
+ 'Sformułuj wniosek, czy wyniki są spójne, różne czy niejednoznaczne; unikaj sformułowań wskazujących na konkretną sztukę odzieży bez pełnego uzasadnienia.',
135
+ ],
136
+ },
137
+ {
138
+ type: 'table',
139
+ headers: ['Obserwacja', 'W czym pomaga?', 'Ograniczenia'],
140
+ rows: [
141
+ ['Średnica i morfologia', 'Czy włókna są fizycznie podobne?', 'Różnice produkcyjne mogą nakładać się na siebie w różnych sztukach odzieży.'],
142
+ ['Skręt i szczegóły powierzchni', 'Czy cechy naturalne lub syntetyczne są zgodne?', 'Uszkodzenia, naciągnięcie i sposób montażu preparatu mogą zmienić wygląd.'],
143
+ ['Odpowiedź w świetle spolaryzowanym', 'Czy właściwości optyczne są zgodne?', 'Dwójłomność stanowi dowód o charakterze grupowym, a nie indywidualnym.'],
144
+ ['Widmo barwnika UV-Vis', 'Czy barwniki są spójne?', 'Podobne barwniki mogą dawać zbliżone wykresy; znaczenie mają ekstrakcja i ustawienia przyrządu.'],
145
+ ],
146
+ },
147
+ {
148
+ type: 'comparative',
149
+ columns: 2,
150
+ items: [
151
+ {
152
+ title: 'Co wspiera spójność',
153
+ icon: 'mdi:check-circle-outline',
154
+ highlight: true,
155
+ description: 'Wiele niezależnych cech grupowych zgadza się między włóknem dowodowym a porównawczym.',
156
+ points: ['Zbliżony zakres średnic', 'Ten sam ogólny typ włókna', 'Podobne zachowanie polaryzacyjne', 'Nakładające się piki absorbancji barwnika'],
157
+ },
158
+ {
159
+ title: 'Co wspiera wykluczenie',
160
+ icon: 'mdi:close-circle-outline',
161
+ description: 'Pojawia się wyraźna, powtarzalna różnica w cesze, która powinna być zgodna dla włókien z tego samego źródła.',
162
+ points: ['Niezgodność włókna naturalnego i syntetycznego', 'Inny skręt lub morfologia powierzchni', 'Wyraźnie odmienne widmo barwnika', 'Niezgodna reakcja dwójłomności'],
163
+ },
164
+ ],
165
+ },
166
+ {
167
+ type: 'title',
168
+ text: 'Jak działa model symulacji',
169
+ level: 3,
170
+ },
171
+ {
172
+ type: 'paragraph',
173
+ html: 'Model opiera się na niewielkiej bazie danych referencyjnych obejmującej średnicę, kierunek skrętu, klasę włókna, dwójłomność, rodzinę barwników oraz punkty absorbancji UV-Vis. Włókno dowodowe może być konfigurowane przez użytkownika, dzięki czemu wynik dopasowania reaguje na profil mikrośladu, a nie na sztywny przykład. Wizualny obraz mikroskopowy reaguje na ostrość i kąt polaryzatora, uświadamiając studentom znaczenie parametrów optycznych.',
174
+ },
175
+ {
176
+ type: 'paragraph',
177
+ html: 'Regulacja polaryzatora jest szczególnie przydatna przy włóknach syntetycznych. Poliestrowi i nylonowi przypisano wyższe wartości dwójłomności, przez co ich jasność zmienia się bardziej zauważalnie przy obrocie polaryzatora. Naturalna bawełna i wełna również reagują, jednak w subtelniejszy sposób. Odzwierciedla to dydaktyczną zasadę, że orientacja cząsteczkowa i struktura włókna wpływają na zachowanie optyczne.',
178
+ },
179
+ {
180
+ type: 'paragraph',
181
+ html: 'Wykres UV-Vis jest uproszczoną nakładką graficzną, a nie pełnym zamiennikiem spektrofotometru. W rzeczywistych badaniach mikrośladów porównanie barwników może wymagać mikrospektrofotometrii, chromatografii cienkowarstwowej, ekstrakcji chemicznej, prób kontrolnych i określenia niepewności pomiaru. Wykres ma na celu pokazanie, dlaczego dwa włókna wyglądające podobnie pod mikroskopem mogą różnić się składem barwnika.',
182
+ },
183
+ {
184
+ type: 'paragraph',
185
+ html: 'Biegli sądowi muszą dokumentować każdy krok procesu analizy włókien. Obejmuje to wykonywanie szczegółowych fotografii, rejestrowanie pomiarów i zachowanie łańcucha dowodowego dla wszystkich fizycznych dowodów. Symulator pomaga studentom zrozumieć znaczenie systematycznej dokumentacji i obiektywnego porównywania w pracy kryminalistycznej. Poprzez interakcję z różnymi ustawieniami użytkownicy mogą dowiedzieć się, jak droga światła, grubość próbki i stężenie barwnika wpływają na krzywe widmowe i wygląd fizyczny.',
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: 'Biegli sądowi muszą dokumentować każdy krok procesu analizy włókien. Obejmuje to wykonywanie szczegółowych fotografii, rejestrowanie pomiarów i zachowanie łańcucha dowodowego dla wszystkich fizycznych dowodów. Symulator pomaga studentom zrozumieć znaczenie systematycznej dokumentacji i obiektywnego porównywania w pracy kryminalistycznej. Poprzez interakcję z różnymi ustawieniami użytkownicy mogą dowiedzieć się, jak droga światła, grubość próbki i stężenie barwnika wpływają na krzywe widmowe i wygląd fizyczny.',
190
+ },
191
+ {
192
+ type: 'glossary',
193
+ items: [
194
+ { term: 'Włókno dowodowe', definition: 'Włókno zabezpieczone na miejscu zdarzenia, ofierze, podejrzanym, narzędziu, pojeździe lub innym obiekcie, którego pochodzenie jest nieznane.' },
195
+ { term: 'Włókno porównawcze', definition: 'Wzorcowe włókno pobrane ze znanego materiału tekstylnego lub obiektu w celu porównania z próbką dowodową.' },
196
+ { term: 'Dwójłomność', definition: 'Zjawisko optyczne polegające na tym, że materiał wykazuje różne współczynniki załamania światła w zależności od kierunku i polaryzacji przechodzącego światła.' },
197
+ { term: 'Widmo UV-Vis', definition: 'Wykres przedstawiający natężenie absorpcji światła przez barwnik lub materiał przy różnych długościach fal.' },
198
+ { term: 'Cecha grupowa', definition: 'Właściwość pozwalająca przypisać dowód do określonej grupy potencjalnych źródeł, zamiast wskazywać na jedno konkretne źródło.' },
199
+ ],
200
+ },
201
+ {
202
+ type: 'tip',
203
+ title: 'Wskazówka interpretacyjna dla studentów',
204
+ html: 'Wysoki wynik podobieństwa należy odczytywać jako <strong>spójność</strong>, a nie tożsamość. Analiza mikrośladów jest najbardziej przekonująca, gdy badania mikroskopowe, analiza chemiczna, kontekst przeniesienia, trwałość śladu, metoda zabezpieczenia i zabezpieczenie przed zanieczyszczeniem wskazują na ten sam kierunek.',
205
+ },
206
+ {
207
+ type: 'diagnostic',
208
+ variant: 'warning',
209
+ icon: 'mdi:scale-balance',
210
+ badge: 'Forensic caution',
211
+ title: 'Formułuj wnioski zgodnie z wartością dowodu',
212
+ html: 'Mikroskop w przeglądarce nie pozwala na walidację zgodności włókien. Oficjalne sprawozdania powinny opisywać obserwacje, podstawy porównania, ograniczenia oraz stopień wsparcia hipotezy, bez nadmiernego przesądzania o tożsamości źródła.',
213
+ },
214
+ ],
215
+ faq,
216
+ bibliography,
217
+ howTo,
218
+ schemas: [
219
+ {
220
+ '@context': 'https://schema.org',
221
+ '@type': 'SoftwareApplication',
222
+ name: title,
223
+ description,
224
+ applicationCategory: 'ForensicApplication',
225
+ operatingSystem: 'Any',
226
+ },
227
+ {
228
+ '@context': 'https://schema.org',
229
+ '@type': 'FAQPage',
230
+ mainEntity: faq.map((item) => ({
231
+ '@type': 'Question',
232
+ name: item.question,
233
+ acceptedAnswer: {
234
+ '@type': 'Answer',
235
+ text: item.answer,
236
+ },
237
+ })),
238
+ },
239
+ {
240
+ '@context': 'https://schema.org',
241
+ '@type': 'HowTo',
242
+ name: title,
243
+ step: howTo.map((step) => ({
244
+ '@type': 'HowToStep',
245
+ name: step.name,
246
+ text: step.text,
247
+ })),
248
+ },
249
+ ],
250
+ };