@jjlmoya/utils-diy 1.11.0 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +3 -1
  4. package/src/index.ts +2 -0
  5. package/src/pages/[locale]/[slug].astro +28 -12
  6. package/src/tests/locale_completeness.test.ts +7 -9
  7. package/src/tests/shared-test-helpers.ts +56 -0
  8. package/src/tests/tool_exports.test.ts +34 -0
  9. package/src/tests/tool_validation.test.ts +2 -2
  10. package/src/tool/balusterCalculator/bibliography.astro +2 -10
  11. package/src/tool/balusterCalculator/bibliography.ts +16 -0
  12. package/src/tool/balusterCalculator/i18n/de.ts +2 -15
  13. package/src/tool/balusterCalculator/i18n/en.ts +2 -15
  14. package/src/tool/balusterCalculator/i18n/es.ts +2 -15
  15. package/src/tool/balusterCalculator/i18n/fr.ts +2 -15
  16. package/src/tool/balusterCalculator/i18n/id.ts +2 -15
  17. package/src/tool/balusterCalculator/i18n/it.ts +2 -15
  18. package/src/tool/balusterCalculator/i18n/ja.ts +2 -15
  19. package/src/tool/balusterCalculator/i18n/ko.ts +2 -15
  20. package/src/tool/balusterCalculator/i18n/nl.ts +2 -15
  21. package/src/tool/balusterCalculator/i18n/pl.ts +2 -15
  22. package/src/tool/balusterCalculator/i18n/pt.ts +2 -15
  23. package/src/tool/balusterCalculator/i18n/ru.ts +2 -15
  24. package/src/tool/balusterCalculator/i18n/sv.ts +2 -15
  25. package/src/tool/balusterCalculator/i18n/tr.ts +2 -15
  26. package/src/tool/balusterCalculator/i18n/zh.ts +2 -15
  27. package/src/tool/balusterCalculator/seo.astro +1 -1
  28. package/src/tool/clayCalculator/bibliography.astro +2 -10
  29. package/src/tool/clayCalculator/bibliography.ts +12 -0
  30. package/src/tool/clayCalculator/i18n/de.ts +2 -11
  31. package/src/tool/clayCalculator/i18n/en.ts +2 -11
  32. package/src/tool/clayCalculator/i18n/es.ts +2 -11
  33. package/src/tool/clayCalculator/i18n/fr.ts +2 -11
  34. package/src/tool/clayCalculator/i18n/id.ts +2 -11
  35. package/src/tool/clayCalculator/i18n/it.ts +2 -11
  36. package/src/tool/clayCalculator/i18n/ja.ts +2 -11
  37. package/src/tool/clayCalculator/i18n/ko.ts +2 -11
  38. package/src/tool/clayCalculator/i18n/nl.ts +2 -11
  39. package/src/tool/clayCalculator/i18n/pl.ts +2 -11
  40. package/src/tool/clayCalculator/i18n/pt.ts +2 -11
  41. package/src/tool/clayCalculator/i18n/ru.ts +2 -11
  42. package/src/tool/clayCalculator/i18n/sv.ts +2 -11
  43. package/src/tool/clayCalculator/i18n/tr.ts +2 -11
  44. package/src/tool/clayCalculator/i18n/zh.ts +2 -11
  45. package/src/tool/clayCalculator/seo.astro +1 -1
  46. package/src/tool/concreteCalculator/bibliography.astro +2 -9
  47. package/src/tool/concreteCalculator/bibliography.ts +7 -0
  48. package/src/tool/concreteCalculator/i18n/de.ts +2 -15
  49. package/src/tool/concreteCalculator/i18n/en.ts +2 -15
  50. package/src/tool/concreteCalculator/i18n/es.ts +2 -15
  51. package/src/tool/concreteCalculator/i18n/fr.ts +2 -15
  52. package/src/tool/concreteCalculator/i18n/id.ts +2 -15
  53. package/src/tool/concreteCalculator/i18n/it.ts +2 -15
  54. package/src/tool/concreteCalculator/i18n/ja.ts +2 -15
  55. package/src/tool/concreteCalculator/i18n/ko.ts +2 -15
  56. package/src/tool/concreteCalculator/i18n/nl.ts +2 -15
  57. package/src/tool/concreteCalculator/i18n/pl.ts +2 -15
  58. package/src/tool/concreteCalculator/i18n/pt.ts +2 -15
  59. package/src/tool/concreteCalculator/i18n/ru.ts +2 -15
  60. package/src/tool/concreteCalculator/i18n/sv.ts +2 -15
  61. package/src/tool/concreteCalculator/i18n/tr.ts +2 -15
  62. package/src/tool/concreteCalculator/i18n/zh.ts +2 -15
  63. package/src/tool/concreteCalculator/seo.astro +2 -1
  64. package/src/tool/cutOptimizer/bibliography.astro +2 -9
  65. package/src/tool/cutOptimizer/bibliography.ts +12 -0
  66. package/src/tool/cutOptimizer/i18n/de.ts +2 -11
  67. package/src/tool/cutOptimizer/i18n/en.ts +2 -11
  68. package/src/tool/cutOptimizer/i18n/es.ts +2 -11
  69. package/src/tool/cutOptimizer/i18n/fr.ts +2 -11
  70. package/src/tool/cutOptimizer/i18n/id.ts +2 -11
  71. package/src/tool/cutOptimizer/i18n/it.ts +2 -11
  72. package/src/tool/cutOptimizer/i18n/ja.ts +2 -11
  73. package/src/tool/cutOptimizer/i18n/ko.ts +2 -11
  74. package/src/tool/cutOptimizer/i18n/nl.ts +2 -11
  75. package/src/tool/cutOptimizer/i18n/pl.ts +2 -11
  76. package/src/tool/cutOptimizer/i18n/pt.ts +2 -11
  77. package/src/tool/cutOptimizer/i18n/ru.ts +2 -11
  78. package/src/tool/cutOptimizer/i18n/sv.ts +2 -11
  79. package/src/tool/cutOptimizer/i18n/tr.ts +2 -11
  80. package/src/tool/cutOptimizer/i18n/zh.ts +2 -11
  81. package/src/tool/cutOptimizer/seo.astro +2 -1
  82. package/src/tool/drillCalculator/bibliography.astro +2 -9
  83. package/src/tool/drillCalculator/bibliography.ts +12 -0
  84. package/src/tool/drillCalculator/i18n/de.ts +2 -5
  85. package/src/tool/drillCalculator/i18n/en.ts +2 -5
  86. package/src/tool/drillCalculator/i18n/es.ts +2 -5
  87. package/src/tool/drillCalculator/i18n/fr.ts +2 -5
  88. package/src/tool/drillCalculator/i18n/id.ts +2 -5
  89. package/src/tool/drillCalculator/i18n/it.ts +2 -5
  90. package/src/tool/drillCalculator/i18n/ja.ts +2 -5
  91. package/src/tool/drillCalculator/i18n/ko.ts +2 -5
  92. package/src/tool/drillCalculator/i18n/nl.ts +2 -5
  93. package/src/tool/drillCalculator/i18n/pl.ts +2 -5
  94. package/src/tool/drillCalculator/i18n/pt.ts +2 -5
  95. package/src/tool/drillCalculator/i18n/ru.ts +2 -5
  96. package/src/tool/drillCalculator/i18n/sv.ts +2 -5
  97. package/src/tool/drillCalculator/i18n/tr.ts +2 -5
  98. package/src/tool/drillCalculator/i18n/zh.ts +2 -5
  99. package/src/tool/drillCalculator/seo.astro +2 -1
  100. package/src/tool/drillSharpener/bibliography.astro +2 -9
  101. package/src/tool/drillSharpener/bibliography.ts +16 -0
  102. package/src/tool/drillSharpener/i18n/de.ts +2 -5
  103. package/src/tool/drillSharpener/i18n/en.ts +2 -6
  104. package/src/tool/drillSharpener/i18n/es.ts +2 -6
  105. package/src/tool/drillSharpener/i18n/fr.ts +2 -6
  106. package/src/tool/drillSharpener/i18n/id.ts +2 -5
  107. package/src/tool/drillSharpener/i18n/it.ts +2 -5
  108. package/src/tool/drillSharpener/i18n/ja.ts +2 -5
  109. package/src/tool/drillSharpener/i18n/ko.ts +2 -5
  110. package/src/tool/drillSharpener/i18n/nl.ts +2 -5
  111. package/src/tool/drillSharpener/i18n/pl.ts +2 -5
  112. package/src/tool/drillSharpener/i18n/pt.ts +2 -5
  113. package/src/tool/drillSharpener/i18n/ru.ts +2 -5
  114. package/src/tool/drillSharpener/i18n/sv.ts +2 -5
  115. package/src/tool/drillSharpener/i18n/tr.ts +2 -5
  116. package/src/tool/drillSharpener/i18n/zh.ts +2 -5
  117. package/src/tool/drillSharpener/seo.astro +2 -1
  118. package/src/tool/epoxyCalculator/bibliography.astro +2 -10
  119. package/src/tool/epoxyCalculator/bibliography.ts +20 -0
  120. package/src/tool/epoxyCalculator/i18n/de.ts +2 -5
  121. package/src/tool/epoxyCalculator/i18n/en.ts +2 -19
  122. package/src/tool/epoxyCalculator/i18n/es.ts +2 -19
  123. package/src/tool/epoxyCalculator/i18n/fr.ts +2 -19
  124. package/src/tool/epoxyCalculator/i18n/id.ts +2 -5
  125. package/src/tool/epoxyCalculator/i18n/it.ts +2 -5
  126. package/src/tool/epoxyCalculator/i18n/ja.ts +2 -5
  127. package/src/tool/epoxyCalculator/i18n/ko.ts +2 -5
  128. package/src/tool/epoxyCalculator/i18n/nl.ts +2 -5
  129. package/src/tool/epoxyCalculator/i18n/pl.ts +2 -5
  130. package/src/tool/epoxyCalculator/i18n/pt.ts +2 -5
  131. package/src/tool/epoxyCalculator/i18n/ru.ts +2 -5
  132. package/src/tool/epoxyCalculator/i18n/sv.ts +2 -5
  133. package/src/tool/epoxyCalculator/i18n/tr.ts +2 -5
  134. package/src/tool/epoxyCalculator/i18n/zh.ts +2 -5
  135. package/src/tool/epoxyCalculator/seo.astro +1 -1
  136. package/src/tool/furnitureFit/bibliography.astro +2 -9
  137. package/src/tool/furnitureFit/bibliography.ts +12 -0
  138. package/src/tool/furnitureFit/i18n/de.ts +2 -5
  139. package/src/tool/furnitureFit/i18n/en.ts +2 -5
  140. package/src/tool/furnitureFit/i18n/es.ts +2 -5
  141. package/src/tool/furnitureFit/i18n/fr.ts +2 -5
  142. package/src/tool/furnitureFit/i18n/id.ts +2 -5
  143. package/src/tool/furnitureFit/i18n/it.ts +2 -5
  144. package/src/tool/furnitureFit/i18n/ja.ts +2 -5
  145. package/src/tool/furnitureFit/i18n/ko.ts +2 -5
  146. package/src/tool/furnitureFit/i18n/nl.ts +2 -5
  147. package/src/tool/furnitureFit/i18n/pl.ts +2 -5
  148. package/src/tool/furnitureFit/i18n/pt.ts +2 -5
  149. package/src/tool/furnitureFit/i18n/ru.ts +2 -5
  150. package/src/tool/furnitureFit/i18n/sv.ts +2 -5
  151. package/src/tool/furnitureFit/i18n/tr.ts +2 -5
  152. package/src/tool/furnitureFit/i18n/zh.ts +2 -5
  153. package/src/tool/furnitureFit/seo.astro +2 -1
  154. package/src/tool/mortarCalculator/bibliography.astro +2 -9
  155. package/src/tool/mortarCalculator/bibliography.ts +20 -0
  156. package/src/tool/mortarCalculator/i18n/de.ts +2 -5
  157. package/src/tool/mortarCalculator/i18n/en.ts +2 -19
  158. package/src/tool/mortarCalculator/i18n/es.ts +2 -19
  159. package/src/tool/mortarCalculator/i18n/fr.ts +2 -19
  160. package/src/tool/mortarCalculator/i18n/id.ts +2 -5
  161. package/src/tool/mortarCalculator/i18n/it.ts +2 -5
  162. package/src/tool/mortarCalculator/i18n/ja.ts +2 -5
  163. package/src/tool/mortarCalculator/i18n/ko.ts +2 -5
  164. package/src/tool/mortarCalculator/i18n/nl.ts +2 -5
  165. package/src/tool/mortarCalculator/i18n/pl.ts +2 -5
  166. package/src/tool/mortarCalculator/i18n/pt.ts +2 -5
  167. package/src/tool/mortarCalculator/i18n/ru.ts +2 -5
  168. package/src/tool/mortarCalculator/i18n/sv.ts +2 -5
  169. package/src/tool/mortarCalculator/i18n/tr.ts +2 -5
  170. package/src/tool/mortarCalculator/i18n/zh.ts +2 -5
  171. package/src/tool/mortarCalculator/seo.astro +2 -1
  172. package/src/tool/passepartoutCalculator/bibliography.astro +2 -9
  173. package/src/tool/passepartoutCalculator/bibliography.ts +16 -0
  174. package/src/tool/passepartoutCalculator/i18n/de.ts +2 -6
  175. package/src/tool/passepartoutCalculator/i18n/en.ts +2 -15
  176. package/src/tool/passepartoutCalculator/i18n/es.ts +2 -15
  177. package/src/tool/passepartoutCalculator/i18n/fr.ts +2 -15
  178. package/src/tool/passepartoutCalculator/i18n/id.ts +2 -6
  179. package/src/tool/passepartoutCalculator/i18n/it.ts +2 -6
  180. package/src/tool/passepartoutCalculator/i18n/ja.ts +2 -6
  181. package/src/tool/passepartoutCalculator/i18n/ko.ts +2 -6
  182. package/src/tool/passepartoutCalculator/i18n/nl.ts +2 -6
  183. package/src/tool/passepartoutCalculator/i18n/pl.ts +2 -6
  184. package/src/tool/passepartoutCalculator/i18n/pt.ts +2 -6
  185. package/src/tool/passepartoutCalculator/i18n/ru.ts +2 -6
  186. package/src/tool/passepartoutCalculator/i18n/sv.ts +2 -6
  187. package/src/tool/passepartoutCalculator/i18n/tr.ts +2 -6
  188. package/src/tool/passepartoutCalculator/i18n/zh.ts +2 -6
  189. package/src/tool/passepartoutCalculator/seo.astro +2 -1
  190. package/src/tool/stairCalculator/bibliography.astro +2 -9
  191. package/src/tool/stairCalculator/bibliography.ts +16 -0
  192. package/src/tool/stairCalculator/i18n/de.ts +2 -5
  193. package/src/tool/stairCalculator/i18n/en.ts +2 -6
  194. package/src/tool/stairCalculator/i18n/es.ts +2 -6
  195. package/src/tool/stairCalculator/i18n/fr.ts +2 -6
  196. package/src/tool/stairCalculator/i18n/id.ts +2 -5
  197. package/src/tool/stairCalculator/i18n/it.ts +2 -5
  198. package/src/tool/stairCalculator/i18n/ja.ts +2 -5
  199. package/src/tool/stairCalculator/i18n/ko.ts +2 -5
  200. package/src/tool/stairCalculator/i18n/nl.ts +2 -5
  201. package/src/tool/stairCalculator/i18n/pl.ts +2 -5
  202. package/src/tool/stairCalculator/i18n/pt.ts +2 -5
  203. package/src/tool/stairCalculator/i18n/ru.ts +2 -5
  204. package/src/tool/stairCalculator/i18n/sv.ts +2 -5
  205. package/src/tool/stairCalculator/i18n/tr.ts +2 -5
  206. package/src/tool/stairCalculator/i18n/zh.ts +2 -5
  207. package/src/tool/stairCalculator/seo.astro +2 -1
  208. package/src/tool/thermalExpansionCalculator/bibliography.astro +2 -9
  209. package/src/tool/thermalExpansionCalculator/bibliography.ts +16 -0
  210. package/src/tool/thermalExpansionCalculator/i18n/de.ts +2 -6
  211. package/src/tool/thermalExpansionCalculator/i18n/en.ts +2 -6
  212. package/src/tool/thermalExpansionCalculator/i18n/es.ts +2 -6
  213. package/src/tool/thermalExpansionCalculator/i18n/fr.ts +2 -6
  214. package/src/tool/thermalExpansionCalculator/i18n/id.ts +2 -6
  215. package/src/tool/thermalExpansionCalculator/i18n/it.ts +2 -6
  216. package/src/tool/thermalExpansionCalculator/i18n/ja.ts +2 -6
  217. package/src/tool/thermalExpansionCalculator/i18n/ko.ts +2 -6
  218. package/src/tool/thermalExpansionCalculator/i18n/nl.ts +2 -6
  219. package/src/tool/thermalExpansionCalculator/i18n/pl.ts +2 -6
  220. package/src/tool/thermalExpansionCalculator/i18n/pt.ts +2 -6
  221. package/src/tool/thermalExpansionCalculator/i18n/ru.ts +2 -6
  222. package/src/tool/thermalExpansionCalculator/i18n/sv.ts +2 -6
  223. package/src/tool/thermalExpansionCalculator/i18n/tr.ts +2 -6
  224. package/src/tool/thermalExpansionCalculator/i18n/zh.ts +2 -6
  225. package/src/tool/thermalExpansionCalculator/seo.astro +2 -1
  226. package/src/tool/voltageDropCalculator/bibliography.astro +2 -9
  227. package/src/tool/voltageDropCalculator/bibliography.ts +16 -0
  228. package/src/tool/voltageDropCalculator/i18n/de.ts +2 -5
  229. package/src/tool/voltageDropCalculator/i18n/en.ts +2 -6
  230. package/src/tool/voltageDropCalculator/i18n/es.ts +2 -6
  231. package/src/tool/voltageDropCalculator/i18n/fr.ts +2 -6
  232. package/src/tool/voltageDropCalculator/i18n/id.ts +2 -5
  233. package/src/tool/voltageDropCalculator/i18n/it.ts +2 -5
  234. package/src/tool/voltageDropCalculator/i18n/ja.ts +2 -5
  235. package/src/tool/voltageDropCalculator/i18n/ko.ts +2 -5
  236. package/src/tool/voltageDropCalculator/i18n/nl.ts +2 -5
  237. package/src/tool/voltageDropCalculator/i18n/pl.ts +2 -5
  238. package/src/tool/voltageDropCalculator/i18n/pt.ts +2 -5
  239. package/src/tool/voltageDropCalculator/i18n/ru.ts +2 -5
  240. package/src/tool/voltageDropCalculator/i18n/sv.ts +2 -5
  241. package/src/tool/voltageDropCalculator/i18n/tr.ts +2 -5
  242. package/src/tool/voltageDropCalculator/i18n/zh.ts +2 -5
  243. package/src/tool/voltageDropCalculator/seo.astro +2 -1
  244. package/src/tool/workshopFractionConverter/bibliography.astro +6 -0
  245. package/src/tool/workshopFractionConverter/bibliography.ts +12 -0
  246. package/src/tool/workshopFractionConverter/client.ts +183 -0
  247. package/src/tool/workshopFractionConverter/component.astro +226 -0
  248. package/src/tool/workshopFractionConverter/converter.ts +110 -0
  249. package/src/tool/workshopFractionConverter/engine.ts +223 -0
  250. package/src/tool/workshopFractionConverter/entry.ts +24 -0
  251. package/src/tool/workshopFractionConverter/i18n/de.ts +141 -0
  252. package/src/tool/workshopFractionConverter/i18n/en.ts +141 -0
  253. package/src/tool/workshopFractionConverter/i18n/es.ts +141 -0
  254. package/src/tool/workshopFractionConverter/i18n/fr.ts +141 -0
  255. package/src/tool/workshopFractionConverter/i18n/id.ts +141 -0
  256. package/src/tool/workshopFractionConverter/i18n/it.ts +141 -0
  257. package/src/tool/workshopFractionConverter/i18n/ja.ts +141 -0
  258. package/src/tool/workshopFractionConverter/i18n/ko.ts +141 -0
  259. package/src/tool/workshopFractionConverter/i18n/nl.ts +141 -0
  260. package/src/tool/workshopFractionConverter/i18n/pl.ts +141 -0
  261. package/src/tool/workshopFractionConverter/i18n/pt.ts +141 -0
  262. package/src/tool/workshopFractionConverter/i18n/ru.ts +141 -0
  263. package/src/tool/workshopFractionConverter/i18n/sv.ts +141 -0
  264. package/src/tool/workshopFractionConverter/i18n/tr.ts +141 -0
  265. package/src/tool/workshopFractionConverter/i18n/zh.ts +141 -0
  266. package/src/tool/workshopFractionConverter/index.ts +11 -0
  267. package/src/tool/workshopFractionConverter/seo.astro +15 -0
  268. package/src/tool/workshopFractionConverter/types-client.ts +89 -0
  269. package/src/tool/workshopFractionConverter/ui-updater.ts +94 -0
  270. package/src/tool/workshopFractionConverter/ui.ts +38 -0
  271. package/src/tool/workshopFractionConverter/workshop-fraction-converter.css +563 -0
  272. package/src/tools.ts +2 -1
  273. package/src/types.ts +1 -1
@@ -0,0 +1,141 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { WorkshopFractionConverterUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'convertisseur-fractions-pouces-millimetres';
7
+ const title = 'Convertisseur Fractions en Millimètres pour l\'Atelier';
8
+ const description = 'Convertissez instantanément vos mesures de pouces fractionnaires en millimètres. Trouvez les vis, boulons et douilles standard les plus proches pour votre atelier. Conçu pour les mains sales et les doigts gantés.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Pourquoi convertir les fractions en millimètres ?',
13
+ answer: 'La plupart des outils et fixations modernes utilisent le système métrique, mais de nombreux outils anciens et spécifications utilisent encore les pouces fractionnaires. Ce convertisseur comble cet écart, vous aidant à trouver l\'équivalent métrique exact ou la taille de fixation standard la plus proche.',
14
+ },
15
+ {
16
+ question: 'Quelle est la différence entre 1/2 pouce et 12,7 mm ?',
17
+ answer: '1/2 pouce équivaut exactement à 12,7 millimètres (0,5 × 25,4 = 12,7). Les outils métriques et impériaux sont souvent interchangeables pour les tailles standard car les fabricants alignent les tailles de fixations courantes sur les deux systèmes.',
18
+ },
19
+ {
20
+ question: 'Pourquoi l\'outil affiche-t-il la "fixation la plus proche" ?',
21
+ answer: 'Parce que les conversions exactes tombent souvent entre deux tailles de fixations standard. L\'outil trouve le boulon ou la douille commerciale la plus proche de votre mesure, afin que vous puissiez utiliser ce qui est disponible dans votre atelier.',
22
+ },
23
+ {
24
+ question: 'Quelle est la différence entre la précision menuiserie et mécanique ?',
25
+ answer: 'En menuiserie, une différence de 0,5 mm est souvent négligeable. En mécanique de précision et usinage, chaque 0,1 mm compte. Le mode précision indique les plages de tolérance acceptables pour votre matériau.',
26
+ },
27
+ {
28
+ question: 'Puis-je utiliser cet outil hors ligne ?',
29
+ answer: 'Oui. Tous les calculs s\'effectuent dans votre navigateur. L\'outil fonctionne complètement hors ligne après le premier chargement, idéal pour une utilisation en atelier sans WiFi.',
30
+ },
31
+ {
32
+ question: 'Pourquoi l\'outil inclut-il un historique ?',
33
+ answer: 'Lors d\'un démontage ou d\'un projet multi-pièces, l\'historique vous permet de consulter vos mesures sans les ressaisir, et de construire une liste de pièces au fur et à mesure.',
34
+ },
35
+ ];
36
+
37
+ const howToData = [
38
+ {
39
+ name: 'Sélectionnez le type de mesure',
40
+ text: 'Choisissez "Direct" pour convertir une fraction en millimètres, ou "Inverse" pour trouver la fraction d\'une mesure prise au pied à coulisse.',
41
+ },
42
+ {
43
+ name: 'Entrez la mesure',
44
+ text: 'Utilisez l\'entrée à trois colonnes (entier, numérateur, dénominateur) ou appuyez sur un bouton de préréglage. Les boutons de réglage permettent d\'ajuster sans taper.',
45
+ },
46
+ {
47
+ name: 'Consultez les résultats',
48
+ text: 'Le résultat affiche la conversion exacte ainsi que les tailles de boulons et douilles standard les plus proches. L\'échelle visuelle donne une idée des proportions.',
49
+ },
50
+ {
51
+ name: 'Enregistrez dans l\'historique',
52
+ text: 'Cliquez sur "Sauvegarder dans l\'historique" pour conserver vos mesures. L\'historique reste dans votre navigateur, même après fermeture.',
53
+ },
54
+ ];
55
+
56
+ const faqSchema: WithContext<FAQPage> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'FAQPage',
59
+ mainEntity: faqData.map((item) => ({
60
+ '@type': 'Question',
61
+ name: item.question,
62
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
63
+ })),
64
+ };
65
+
66
+ const howToSchema: WithContext<HowToThing> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'HowTo',
69
+ name: title,
70
+ description,
71
+ step: howToData.map((step, i) => ({
72
+ '@type': 'HowToStep',
73
+ position: i + 1,
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
87
+ inLanguage: 'fr',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<WorkshopFractionConverterUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Questions Fréquemment Posées',
95
+ faq: faqData,
96
+ bibliography,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ { title: 'FAQ', type: 'faq', schema: faqSchema },
100
+ { title: 'Utilisation', type: 'howto', schema: howToSchema },
101
+ { title: 'Application', type: 'app', schema: appSchema },
102
+ ],
103
+ ui: {
104
+ labelFraction: 'Type de mesure',
105
+ labelWhole: 'Entier',
106
+ labelNumerator: 'Numérateur',
107
+ labelDenominator: 'Dénominateur',
108
+ labelInches: 'Pouces',
109
+ labelMillimeters: 'Millimètres',
110
+ resultTitle: 'Résultat de conversion',
111
+ resultFraction: 'Fraction',
112
+ resultInches: 'Pouces',
113
+ resultMillimeters: 'Millimètres',
114
+ matchTitle: 'Correspondance la plus proche',
115
+ matchClosestFastener: 'Taille de boulon ou vis standard',
116
+ matchClosestSocket: 'Taille de douille ou clé standard',
117
+ matchDifference: 'Différence avec votre mesure',
118
+ matchRecommendation: 'Utilisez cette taille si disponible',
119
+ reverseSearchTitle: 'Recherche inversée',
120
+ reverseSearchLabel: 'Taille mesurée (mm)',
121
+ reverseSearchButton: 'Trouver la fraction',
122
+ reverseSearchHint: 'Mesurez avec un pied à coulisse, entrez la valeur',
123
+ unitMm: 'mm',
124
+ unitInch: 'po',
125
+ modeForward: 'Fraction → Métrique',
126
+ modeReverse: 'Métrique → Fraction',
127
+ precisionLabel: 'Mode de précision',
128
+ precisionCarpentry: 'Menuiserie',
129
+ precisionMetal: 'Mécanique',
130
+ buttonConvert: 'Convertir',
131
+ buttonClear: 'Effacer',
132
+ buttonCopyResult: 'Copier le résultat',
133
+ buttonSaveToHistory: 'Sauvegarder',
134
+ historyTitle: 'Historique',
135
+ historyEmpty: 'Aucune mesure pour le moment',
136
+ historyRemove: 'Supprimer',
137
+ helpText: 'Sélectionnez une mesure ou entrez une fraction pour commencer.',
138
+ toolOverline: 'Outils d\'Atelier',
139
+ labelVisualReference: 'Référence Visuelle (1 pouce = 96px)',
140
+ },
141
+ };
@@ -0,0 +1,141 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { WorkshopFractionConverterUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'konverter-pecahan-inci-ke-milimeter';
7
+ const title = 'Konverter Pecahan Inci ke Milimeter Bengkel';
8
+ const description = 'Ubah pengukuran inci pecahan ke milimeter secara instan. Temukan baut, sekrup, dan kunci sok standar terdekat untuk bengkel Anda. Dirancang untuk tangan kotor dan jari bersarung tangan.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Mengapa saya perlu mengubah pecahan ke milimeter?',
13
+ answer: 'Sebagian besar alat dan pengencang modern menggunakan sistem metrik, tetapi banyak alat lama dan spesifikasi masih menggunakan inci pecahan. Konverter ini menjembatani celah tersebut, membantu Anda menemukan padanan metrik yang tepat atau ukuran pengencang standar terdekat.',
14
+ },
15
+ {
16
+ question: 'Apa perbedaan antara 1/2 inci dan 12,7 mm?',
17
+ answer: '1/2 inci sama persis dengan 12,7 milimeter (0,5 × 25,4 = 12,7). Alat metrik dan imperial sering kali dapat saling menggantikan pada ukuran standar karena produsen menyelaraskan ukuran pengencang umum di kedua sistem.',
18
+ },
19
+ {
20
+ question: 'Mengapa alat ini menunjukkan "pengencang terdekat"?',
21
+ answer: 'Karena konversi yang tepat sering kali jatuh di antara ukuran pengencang standar. Alat ini menemukan baut atau kunci sok komersial yang paling dekat dengan pengukuran Anda, sehingga Anda dapat menggunakan apa yang tersedia di bengkel Anda.',
22
+ },
23
+ {
24
+ question: 'Apa perbedaan antara presisi perkayuan dan logam?',
25
+ answer: 'Dalam pertukangan kayu, perbedaan 0,5 mm sering kali dapat diabaikan. Dalam pengerjaan logam dan pemesinan, 0,1 mm sangat berarti. Mode presisi memberikan petunjuk tentang rentang toleransi yang dapat diterima untuk material Anda.',
26
+ },
27
+ {
28
+ question: 'Dapatkah saya menggunakan alat ini secara offline?',
29
+ answer: 'Ya. Semua perhitungan dilakukan di browser Anda. Alat ini bekerja sepenuhnya offline setelah pemuatan pertama, cocok untuk digunakan di bengkel tanpa WiFi.',
30
+ },
31
+ {
32
+ question: 'Mengapa alat ini menyertakan riwayat?',
33
+ answer: 'Saat membongkar atau mengerjakan proyek dengan banyak bagian, riwayat memungkinkan Anda melihat kembali pengukuran tanpa memasukkannya lagi, dan membantu Anda membangun daftar suku cadang saat bekerja.',
34
+ },
35
+ ];
36
+
37
+ const howToData = [
38
+ {
39
+ name: 'Pilih jenis pengukuran',
40
+ text: 'Pilih "Maju" untuk mengubah pecahan ke milimeter, atau "Balik" untuk menemukan pecahan dari ukuran yang Anda ambil dengan jangka sorong.',
41
+ },
42
+ {
43
+ name: 'Masukkan ukuran',
44
+ text: 'Gunakan input tiga kolom (bulat, pembilang, penyebut) atau ketuk tombol preset cepat. Tombol pengatur memungkinkan Anda menyesuaikan tanpa mengetik.',
45
+ },
46
+ {
47
+ name: 'Tinjau hasil',
48
+ text: 'Hasilnya menunjukkan konversi yang tepat ditambah ukuran baut dan kunci sok standar terdekat. Skala visual memberikan gambaran tentang proporsi.',
49
+ },
50
+ {
51
+ name: 'Simpan ke riwayat',
52
+ text: 'Klik "Simpan ke Riwayat" untuk menyimpan pengukuran untuk referensi nanti. Riwayat tetap ada di browser Anda, bahkan setelah ditutup.',
53
+ },
54
+ ];
55
+
56
+ const faqSchema: WithContext<FAQPage> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'FAQPage',
59
+ mainEntity: faqData.map((item) => ({
60
+ '@type': 'Question',
61
+ name: item.question,
62
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
63
+ })),
64
+ };
65
+
66
+ const howToSchema: WithContext<HowToThing> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'HowTo',
69
+ name: title,
70
+ description,
71
+ step: howToData.map((step, i) => ({
72
+ '@type': 'HowToStep',
73
+ position: i + 1,
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
87
+ inLanguage: 'id',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<WorkshopFractionConverterUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Pertanyaan Umum',
95
+ faq: faqData,
96
+ bibliography,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ { title: 'FAQ', type: 'faq', schema: faqSchema },
100
+ { title: 'Cara Penggunaan', type: 'howto', schema: howToSchema },
101
+ { title: 'Aplikasi', type: 'app', schema: appSchema },
102
+ ],
103
+ ui: {
104
+ labelFraction: 'Jenis Pengukuran',
105
+ labelWhole: 'Bilangan Bulat',
106
+ labelNumerator: 'Pembilang',
107
+ labelDenominator: 'Penyebut',
108
+ labelInches: 'Inci',
109
+ labelMillimeters: 'Milimeter',
110
+ resultTitle: 'Hasil Konversi',
111
+ resultFraction: 'Pecahan',
112
+ resultInches: 'Inci',
113
+ resultMillimeters: 'Milimeter',
114
+ matchTitle: 'Kesesuaian Pengencang Terdekat',
115
+ matchClosestFastener: 'Ukuran baut atau pengencang standar',
116
+ matchClosestSocket: 'Ukuran kunci sok atau kunci pas standar',
117
+ matchDifference: 'Selisih dari pengukuran Anda',
118
+ matchRecommendation: 'Gunakan ukuran ini jika tersedia',
119
+ reverseSearchTitle: 'Pencarian Balik',
120
+ reverseSearchLabel: 'Ukuran Terukur (mm)',
121
+ reverseSearchButton: 'Cari Pecahan',
122
+ reverseSearchHint: 'Ukur dengan jangka sorong, masukkan nilainya',
123
+ unitMm: 'mm',
124
+ unitInch: 'in',
125
+ modeForward: 'Pecahan → Metrik',
126
+ modeReverse: 'Metrik → Pecahan',
127
+ precisionLabel: 'Mode Presisi',
128
+ precisionCarpentry: 'Pertukangan Kayu',
129
+ precisionMetal: 'Pengerjaan Logam',
130
+ buttonConvert: 'Konversi',
131
+ buttonClear: 'Hapus',
132
+ buttonCopyResult: 'Salin Hasil',
133
+ buttonSaveToHistory: 'Simpan ke Riwayat',
134
+ historyTitle: 'Riwayat',
135
+ historyEmpty: 'Belum ada pengukuran',
136
+ historyRemove: 'Hapus',
137
+ helpText: 'Pilih ukuran atau masukkan pecahan untuk memulai.',
138
+ toolOverline: 'Peralatan Bengkel',
139
+ labelVisualReference: 'Referensi Visual (1 inci = 96px)',
140
+ },
141
+ };
@@ -0,0 +1,141 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { WorkshopFractionConverterUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'convertitore-frazioni-pollici-millimetri';
7
+ const title = 'Convertitore Frazioni in Millimetri per Officina';
8
+ const description = 'Converti istantaneamente le misure in pollici frazionari in millimetri. Trova le viti, i bulloni e le bussole standard più vicini per la tua officina. Progettato per mani sporche e dita con guanti.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Perché devo convertire le frazioni in millimetri?',
13
+ answer: 'La maggior parte degli strumenti e dei dispositivi di fissaggio moderni utilizza il sistema metrico, ma molti strumenti d\'epoca e specifiche tecniche usano ancora i pollici frazionari. Questo convertitore colma tale divario, aiutandoti a trovare l\'esatto equivalente metrico o la dimensione standard più vicina.',
14
+ },
15
+ {
16
+ question: 'Qual è la differenza tra 1/2 pollice e 12,7 mm?',
17
+ answer: '1/2 pollice equivale esattamente a 12,7 millimetri (0,5 × 25,4 = 12,7). Gli strumenti metrici e imperiali sono spesso intercambiabili per le dimensioni standard perché i produttori allineano le misure comuni dei bulloni su entrambi i sistemi.',
18
+ },
19
+ {
20
+ question: 'Perché lo strumento mostra il "fissaggio più vicino"?',
21
+ answer: 'Perché le conversioni esatte spesso cadono tra le dimensioni standard dei bulloni. Lo strumento trova il bullone o la bussola commerciale più vicina alla tua misura, così puoi usare quello che hai a disposizione in officina.',
22
+ },
23
+ {
24
+ question: 'Qual è la differenza tra precisione per falegnameria e meccanica?',
25
+ answer: 'In falegnameria, differenze di 0,5 mm sono spesso trascurabili. In meccanica e lavorazioni al tornio, lo 0,1 mm conta. La modalità precisione suggerisce gli intervalli di tolleranza accettabili per il tuo materiale.',
26
+ },
27
+ {
28
+ question: 'Posso usare questo strumento offline?',
29
+ answer: 'Sì. Tutti i calcoli avvengono nel tuo browser. Lo strumento funziona completamente offline dopo il primo caricamento, ideale per l\'uso in officina senza WiFi.',
30
+ },
31
+ {
32
+ question: 'Perché lo strumento include la cronologia?',
33
+ answer: 'Quando lavori a uno smontaggio o a un progetto con più parti, la cronologia ti permette di consultare le misure senza doverle reinserire, aiutandoti a creare una lista dei pezzi mentre lavori.',
34
+ },
35
+ ];
36
+
37
+ const howToData = [
38
+ {
39
+ name: 'Seleziona il tipo di misura',
40
+ text: 'Scegli "Diretta" per convertire una frazione in millimetri, o "Inversa" per trovare la frazione di una misura presa con il calibro.',
41
+ },
42
+ {
43
+ name: 'Inserisci la misura',
44
+ text: 'Usa l\'input a tre colonne (intero, numeratore, denominatore) o tocca un pulsante di preimpostazione rapida. I pulsanti a freccia ti permettono di regolare il valore senza digitare.',
45
+ },
46
+ {
47
+ name: 'Controlla i risultati',
48
+ text: 'Il risultato mostra la conversione esatta e le dimensioni standard di bulloni e bussole più vicine. La scala visiva aiuta a capire le proporzioni.',
49
+ },
50
+ {
51
+ name: 'Salva nella cronologia',
52
+ text: 'Clicca su "Salva nella cronologia" per conservare le misure. La cronologia rimane nel tuo browser, anche dopo la chiusura.',
53
+ },
54
+ ];
55
+
56
+ const faqSchema: WithContext<FAQPage> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'FAQPage',
59
+ mainEntity: faqData.map((item) => ({
60
+ '@type': 'Question',
61
+ name: item.question,
62
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
63
+ })),
64
+ };
65
+
66
+ const howToSchema: WithContext<HowToThing> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'HowTo',
69
+ name: title,
70
+ description,
71
+ step: howToData.map((step, i) => ({
72
+ '@type': 'HowToStep',
73
+ position: i + 1,
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
87
+ inLanguage: 'it',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<WorkshopFractionConverterUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'Domande Frequenti',
95
+ faq: faqData,
96
+ bibliography,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ { title: 'FAQ', type: 'faq', schema: faqSchema },
100
+ { title: 'Istruzioni d\'uso', type: 'howto', schema: howToSchema },
101
+ { title: 'Applicazione', type: 'app', schema: appSchema },
102
+ ],
103
+ ui: {
104
+ labelFraction: 'Tipo di Misura',
105
+ labelWhole: 'Intero',
106
+ labelNumerator: 'Numeratore',
107
+ labelDenominator: 'Denominatore',
108
+ labelInches: 'Pollici',
109
+ labelMillimeters: 'Millimetri',
110
+ resultTitle: 'Risultato Conversione',
111
+ resultFraction: 'Frazione',
112
+ resultInches: 'Pollici',
113
+ resultMillimeters: 'Millimetri',
114
+ matchTitle: 'Abbinamento Standard più Vicino',
115
+ matchClosestFastener: 'Misura bullone o vite standard',
116
+ matchClosestSocket: 'Misura bussola o chiave standard',
117
+ matchDifference: 'Differenza dalla tua misura',
118
+ matchRecommendation: 'Usa questa misura se disponibile',
119
+ reverseSearchTitle: 'Ricerca Inversa',
120
+ reverseSearchLabel: 'Misura Rilevata (mm)',
121
+ reverseSearchButton: 'Trova Frazione',
122
+ reverseSearchHint: 'Misura con il calibro e inserisci il valore',
123
+ unitMm: 'mm',
124
+ unitInch: 'pollici',
125
+ modeForward: 'Frazione → Metrico',
126
+ modeReverse: 'Metrico → Frazione',
127
+ precisionLabel: 'Modalità Precisione',
128
+ precisionCarpentry: 'Falegnameria',
129
+ precisionMetal: 'Meccanica',
130
+ buttonConvert: 'Converti',
131
+ buttonClear: 'Cancella',
132
+ buttonCopyResult: 'Copia Risultato',
133
+ buttonSaveToHistory: 'Salva in Cronologia',
134
+ historyTitle: 'Cronologia',
135
+ historyEmpty: 'Nessuna misura salvata',
136
+ historyRemove: 'Rimuovi',
137
+ helpText: 'Seleziona una misura o inserisci una frazione per iniziare.',
138
+ toolOverline: 'Strumenti da Officina',
139
+ labelVisualReference: 'Riferimento Visivo (1 pollice = 96px)',
140
+ },
141
+ };
@@ -0,0 +1,141 @@
1
+ import type { WithContext, FAQPage, HowToThing, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { WorkshopFractionConverterUI } from '../ui';
4
+ import { bibliography } from '../bibliography';
5
+
6
+ const slug = 'workshop-fraction-converter';
7
+ const title = 'ワークショップ用 分数・ミリ換算機';
8
+ const description = '分数表記のインチを瞬時にミリメートルへ変換。お使いのワークショップに最適な標準規格のボルト、ネジ、ソケットを検索。汚れや手袋をしたままでも使いやすい設計。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'なぜ分数をミリメートルに変換する必要があるのですか?',
13
+ answer: '現代の工具やファスナーの多くはメートル法を使用していますが、古い工具や仕様書では依然としてインチの分数表記が使われています。このコンバーターはそのギャップを埋め、正確なメートル換算値や最も近い標準サイズを見つけるのに役立ちます。',
14
+ },
15
+ {
16
+ question: '1/2インチと12.7mmの違いは何ですか?',
17
+ answer: '1/2インチは正確に12.7ミリメートルです(0.5 × 25.4 = 12.7)。標準サイズではメーカーが共通のファスナーサイズを両方のシステムで揃えているため、メートル工具とインチ工具が互換的に使用できることがよくあります。',
18
+ },
19
+ {
20
+ question: 'なぜ「最も近いファスナー」が表示されるのですか?',
21
+ answer: '正確な換算値が標準的なファスナーサイズの間に位置することが多いためです。このツールは、お使いのワークショップにあるものを利用できるよう、測定値に最も近い市販のボルトやソケットを提示します。',
22
+ },
23
+ {
24
+ question: '木工精度と金属精度の違いは何ですか?',
25
+ answer: '木工では0.5mmの差は無視できることが多いですが、金属加工や機械工作では0.1mmが重要になります。精度モードは、扱う材料に応じた許容誤差の範囲を示します。',
26
+ },
27
+ {
28
+ question: 'オフラインでも使用できますか?',
29
+ answer: 'はい。すべての計算はブラウザ上で行われます。初回の読み込み後は完全にオフラインで動作するため、WiFiのないワークショップでの使用に最適です。',
30
+ },
31
+ {
32
+ question: '履歴機能があるのはなぜですか?',
33
+ answer: '分解作業や複数の部品を扱うプロジェクトでは、履歴機能により入力を繰り返さずに測定値を参照でき、作業を進めながら部品リストを作成するのに役立ちます。',
34
+ },
35
+ ];
36
+
37
+ const howToData = [
38
+ {
39
+ name: '測定タイプを選択',
40
+ text: '分数をミリに変換するには「順方向」を、ノギスで測った値から分数を探すには「逆方向」を選択します。',
41
+ },
42
+ {
43
+ name: '数値を入力',
44
+ text: '3列の入力欄(整数、分子、分母)を使用するか、クイックプリセットボタンをタップします。ステップボタンを使えば、入力せずに調整可能です。',
45
+ },
46
+ {
47
+ name: '結果を確認',
48
+ text: '正確な換算値に加えて、最も近い標準的なボルトとソケットのサイズが表示されます。視覚的なスケールで比率を把握できます。',
49
+ },
50
+ {
51
+ name: '履歴に保存',
52
+ text: '「履歴に保存」をクリックして測定値を記録します。履歴はブラウザを閉じても保存されます。',
53
+ },
54
+ ];
55
+
56
+ const faqSchema: WithContext<FAQPage> = {
57
+ '@context': 'https://schema.org',
58
+ '@type': 'FAQPage',
59
+ mainEntity: faqData.map((item) => ({
60
+ '@type': 'Question',
61
+ name: item.question,
62
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
63
+ })),
64
+ };
65
+
66
+ const howToSchema: WithContext<HowToThing> = {
67
+ '@context': 'https://schema.org',
68
+ '@type': 'HowTo',
69
+ name: title,
70
+ description,
71
+ step: howToData.map((step, i) => ({
72
+ '@type': 'HowToStep',
73
+ position: i + 1,
74
+ name: step.name,
75
+ text: step.text,
76
+ })),
77
+ };
78
+
79
+ const appSchema: WithContext<SoftwareApplication> = {
80
+ '@context': 'https://schema.org',
81
+ '@type': 'SoftwareApplication',
82
+ name: title,
83
+ description,
84
+ applicationCategory: 'UtilityApplication',
85
+ operatingSystem: 'All',
86
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
87
+ inLanguage: 'ja',
88
+ };
89
+
90
+ export const content: ToolLocaleContent<WorkshopFractionConverterUI> = {
91
+ slug,
92
+ title,
93
+ description,
94
+ faqTitle: 'よくある質問',
95
+ faq: faqData,
96
+ bibliography,
97
+ schemas: [faqSchema, howToSchema, appSchema],
98
+ seo: [
99
+ { title: 'FAQ', type: 'faq', schema: faqSchema },
100
+ { title: '使い方', type: 'howto', schema: howToSchema },
101
+ { title: 'アプリケーション', type: 'app', schema: appSchema },
102
+ ],
103
+ ui: {
104
+ labelFraction: '測定タイプ',
105
+ labelWhole: '整数',
106
+ labelNumerator: '分子',
107
+ labelDenominator: '分母',
108
+ labelInches: 'インチ',
109
+ labelMillimeters: 'ミリメートル',
110
+ resultTitle: '変換結果',
111
+ resultFraction: '分数',
112
+ resultInches: 'インチ',
113
+ resultMillimeters: 'ミリメートル',
114
+ matchTitle: '最も近い規格',
115
+ matchClosestFastener: '標準ボルト・ファスナーサイズ',
116
+ matchClosestSocket: '標準ソケットサイズ',
117
+ matchDifference: '測定値との差',
118
+ matchRecommendation: '在庫がある場合はこのサイズを使用',
119
+ reverseSearchTitle: '逆引き検索',
120
+ reverseSearchLabel: '測定値 (mm)',
121
+ reverseSearchButton: '分数を探す',
122
+ reverseSearchHint: 'ノギスで測定した値を入力',
123
+ unitMm: 'mm',
124
+ unitInch: 'in',
125
+ modeForward: '分数 → ミリ',
126
+ modeReverse: 'ミリ → 分数',
127
+ precisionLabel: '精度モード',
128
+ precisionCarpentry: '木工',
129
+ precisionMetal: '金属加工',
130
+ buttonConvert: '変換',
131
+ buttonClear: 'クリア',
132
+ buttonCopyResult: '結果をコピー',
133
+ buttonSaveToHistory: '履歴に保存',
134
+ historyTitle: '履歴',
135
+ historyEmpty: '履歴はありません',
136
+ historyRemove: '削除',
137
+ helpText: '測定値を選択するか分数を入力して開始してください。',
138
+ toolOverline: 'ワークショップ・ツール',
139
+ labelVisualReference: '視覚的リファレンス (1インチ = 96px)',
140
+ },
141
+ };