@jjlmoya/utils-converters 1.15.0 → 1.18.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 (397) hide show
  1. package/package.json +8 -4
  2. package/scripts/clean_titles.py +95 -0
  3. package/scripts/postinstall.mjs +27 -0
  4. package/src/category/i18n/de.ts +1 -1
  5. package/src/category/i18n/fr.ts +9 -9
  6. package/src/category/i18n/ru.ts +1 -1
  7. package/src/category/i18n/sv.ts +1 -1
  8. package/src/data.ts +0 -21
  9. package/src/layouts/PreviewLayout.astro +2 -1
  10. package/src/pages/[locale]/[slug].astro +28 -12
  11. package/src/tests/diacritics_density.test.ts +118 -0
  12. package/src/tests/inverted_punctuation.test.ts +84 -0
  13. package/src/tests/no_en_dash.test.ts +70 -0
  14. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  15. package/src/tests/script_density.test.ts +94 -0
  16. package/src/tests/shared-test-helpers.ts +56 -0
  17. package/src/tests/tool_exports.test.ts +34 -0
  18. package/src/tool/avifAJpg/bibliography.ts +12 -0
  19. package/src/tool/avifAJpg/entry.ts +2 -0
  20. package/src/tool/avifAJpg/i18n/de.ts +2 -12
  21. package/src/tool/avifAJpg/i18n/en.ts +2 -12
  22. package/src/tool/avifAJpg/i18n/es.ts +2 -12
  23. package/src/tool/avifAJpg/i18n/fr.ts +11 -21
  24. package/src/tool/avifAJpg/i18n/id.ts +2 -12
  25. package/src/tool/avifAJpg/i18n/it.ts +2 -12
  26. package/src/tool/avifAJpg/i18n/ja.ts +1 -11
  27. package/src/tool/avifAJpg/i18n/ko.ts +1 -11
  28. package/src/tool/avifAJpg/i18n/nl.ts +2 -12
  29. package/src/tool/avifAJpg/i18n/pl.ts +2 -12
  30. package/src/tool/avifAJpg/i18n/pt.ts +2 -12
  31. package/src/tool/avifAJpg/i18n/ru.ts +7 -17
  32. package/src/tool/avifAJpg/i18n/sv.ts +2 -12
  33. package/src/tool/avifAJpg/i18n/tr.ts +1 -11
  34. package/src/tool/avifAJpg/i18n/zh.ts +4 -14
  35. package/src/tool/avifAJpg/seo.astro +2 -1
  36. package/src/tool/avifAPng/bibliography.ts +12 -0
  37. package/src/tool/avifAPng/entry.ts +2 -0
  38. package/src/tool/avifAPng/i18n/de.ts +4 -14
  39. package/src/tool/avifAPng/i18n/en.ts +4 -14
  40. package/src/tool/avifAPng/i18n/es.ts +4 -14
  41. package/src/tool/avifAPng/i18n/fr.ts +10 -20
  42. package/src/tool/avifAPng/i18n/id.ts +4 -14
  43. package/src/tool/avifAPng/i18n/it.ts +1 -11
  44. package/src/tool/avifAPng/i18n/ja.ts +1 -11
  45. package/src/tool/avifAPng/i18n/ko.ts +1 -11
  46. package/src/tool/avifAPng/i18n/nl.ts +4 -14
  47. package/src/tool/avifAPng/i18n/pl.ts +4 -14
  48. package/src/tool/avifAPng/i18n/pt.ts +4 -14
  49. package/src/tool/avifAPng/i18n/ru.ts +5 -15
  50. package/src/tool/avifAPng/i18n/sv.ts +4 -14
  51. package/src/tool/avifAPng/i18n/tr.ts +1 -11
  52. package/src/tool/avifAPng/i18n/zh.ts +3 -13
  53. package/src/tool/avifAPng/seo.astro +2 -1
  54. package/src/tool/avifAWebp/bibliography.ts +12 -0
  55. package/src/tool/avifAWebp/entry.ts +2 -0
  56. package/src/tool/avifAWebp/i18n/de.ts +6 -16
  57. package/src/tool/avifAWebp/i18n/en.ts +6 -16
  58. package/src/tool/avifAWebp/i18n/es.ts +6 -16
  59. package/src/tool/avifAWebp/i18n/fr.ts +13 -23
  60. package/src/tool/avifAWebp/i18n/id.ts +6 -16
  61. package/src/tool/avifAWebp/i18n/it.ts +1 -11
  62. package/src/tool/avifAWebp/i18n/ja.ts +1 -11
  63. package/src/tool/avifAWebp/i18n/ko.ts +2 -12
  64. package/src/tool/avifAWebp/i18n/nl.ts +6 -16
  65. package/src/tool/avifAWebp/i18n/pl.ts +6 -16
  66. package/src/tool/avifAWebp/i18n/pt.ts +6 -16
  67. package/src/tool/avifAWebp/i18n/ru.ts +7 -17
  68. package/src/tool/avifAWebp/i18n/sv.ts +6 -16
  69. package/src/tool/avifAWebp/i18n/tr.ts +2 -12
  70. package/src/tool/avifAWebp/i18n/zh.ts +6 -16
  71. package/src/tool/avifAWebp/seo.astro +2 -1
  72. package/src/tool/bmpAJpg/bibliography.ts +12 -0
  73. package/src/tool/bmpAJpg/entry.ts +2 -0
  74. package/src/tool/bmpAJpg/i18n/de.ts +1 -11
  75. package/src/tool/bmpAJpg/i18n/en.ts +1 -11
  76. package/src/tool/bmpAJpg/i18n/es.ts +1 -11
  77. package/src/tool/bmpAJpg/i18n/fr.ts +9 -19
  78. package/src/tool/bmpAJpg/i18n/id.ts +1 -11
  79. package/src/tool/bmpAJpg/i18n/it.ts +1 -11
  80. package/src/tool/bmpAJpg/i18n/ja.ts +1 -11
  81. package/src/tool/bmpAJpg/i18n/ko.ts +1 -11
  82. package/src/tool/bmpAJpg/i18n/nl.ts +1 -11
  83. package/src/tool/bmpAJpg/i18n/pl.ts +1 -11
  84. package/src/tool/bmpAJpg/i18n/pt.ts +1 -11
  85. package/src/tool/bmpAJpg/i18n/ru.ts +5 -15
  86. package/src/tool/bmpAJpg/i18n/sv.ts +1 -11
  87. package/src/tool/bmpAJpg/i18n/tr.ts +1 -11
  88. package/src/tool/bmpAJpg/i18n/zh.ts +1 -11
  89. package/src/tool/bmpAJpg/seo.astro +2 -1
  90. package/src/tool/bmpAPng/bibliography.ts +12 -0
  91. package/src/tool/bmpAPng/entry.ts +2 -0
  92. package/src/tool/bmpAPng/i18n/de.ts +2 -12
  93. package/src/tool/bmpAPng/i18n/en.ts +3 -13
  94. package/src/tool/bmpAPng/i18n/es.ts +2 -12
  95. package/src/tool/bmpAPng/i18n/fr.ts +12 -22
  96. package/src/tool/bmpAPng/i18n/id.ts +2 -12
  97. package/src/tool/bmpAPng/i18n/it.ts +2 -12
  98. package/src/tool/bmpAPng/i18n/ja.ts +1 -11
  99. package/src/tool/bmpAPng/i18n/ko.ts +1 -11
  100. package/src/tool/bmpAPng/i18n/nl.ts +2 -12
  101. package/src/tool/bmpAPng/i18n/pl.ts +2 -12
  102. package/src/tool/bmpAPng/i18n/pt.ts +2 -12
  103. package/src/tool/bmpAPng/i18n/ru.ts +9 -19
  104. package/src/tool/bmpAPng/i18n/sv.ts +2 -12
  105. package/src/tool/bmpAPng/i18n/tr.ts +1 -11
  106. package/src/tool/bmpAPng/i18n/zh.ts +1 -11
  107. package/src/tool/bmpAPng/seo.astro +2 -1
  108. package/src/tool/bmpAWebp/bibliography.ts +12 -0
  109. package/src/tool/bmpAWebp/entry.ts +2 -0
  110. package/src/tool/bmpAWebp/i18n/de.ts +8 -18
  111. package/src/tool/bmpAWebp/i18n/en.ts +8 -18
  112. package/src/tool/bmpAWebp/i18n/es.ts +8 -18
  113. package/src/tool/bmpAWebp/i18n/fr.ts +13 -23
  114. package/src/tool/bmpAWebp/i18n/id.ts +8 -18
  115. package/src/tool/bmpAWebp/i18n/it.ts +8 -18
  116. package/src/tool/bmpAWebp/i18n/ja.ts +7 -17
  117. package/src/tool/bmpAWebp/i18n/ko.ts +7 -17
  118. package/src/tool/bmpAWebp/i18n/nl.ts +8 -18
  119. package/src/tool/bmpAWebp/i18n/pl.ts +8 -18
  120. package/src/tool/bmpAWebp/i18n/pt.ts +8 -18
  121. package/src/tool/bmpAWebp/i18n/ru.ts +10 -20
  122. package/src/tool/bmpAWebp/i18n/sv.ts +8 -18
  123. package/src/tool/bmpAWebp/i18n/tr.ts +8 -18
  124. package/src/tool/bmpAWebp/i18n/zh.ts +8 -18
  125. package/src/tool/bmpAWebp/seo.astro +2 -1
  126. package/src/tool/gifAJpg/bibliography.ts +12 -0
  127. package/src/tool/gifAJpg/entry.ts +2 -0
  128. package/src/tool/gifAJpg/i18n/de.ts +1 -11
  129. package/src/tool/gifAJpg/i18n/en.ts +1 -11
  130. package/src/tool/gifAJpg/i18n/es.ts +1 -11
  131. package/src/tool/gifAJpg/i18n/fr.ts +9 -19
  132. package/src/tool/gifAJpg/i18n/id.ts +1 -11
  133. package/src/tool/gifAJpg/i18n/it.ts +1 -11
  134. package/src/tool/gifAJpg/i18n/ja.ts +1 -11
  135. package/src/tool/gifAJpg/i18n/ko.ts +1 -11
  136. package/src/tool/gifAJpg/i18n/nl.ts +1 -11
  137. package/src/tool/gifAJpg/i18n/pl.ts +1 -11
  138. package/src/tool/gifAJpg/i18n/pt.ts +1 -11
  139. package/src/tool/gifAJpg/i18n/ru.ts +2 -12
  140. package/src/tool/gifAJpg/i18n/sv.ts +1 -11
  141. package/src/tool/gifAJpg/i18n/tr.ts +1 -11
  142. package/src/tool/gifAJpg/i18n/zh.ts +1 -11
  143. package/src/tool/gifAJpg/seo.astro +2 -1
  144. package/src/tool/gifAPng/bibliography.ts +12 -0
  145. package/src/tool/gifAPng/entry.ts +2 -0
  146. package/src/tool/gifAPng/i18n/de.ts +2 -12
  147. package/src/tool/gifAPng/i18n/en.ts +3 -13
  148. package/src/tool/gifAPng/i18n/es.ts +2 -12
  149. package/src/tool/gifAPng/i18n/fr.ts +11 -21
  150. package/src/tool/gifAPng/i18n/id.ts +2 -12
  151. package/src/tool/gifAPng/i18n/it.ts +2 -12
  152. package/src/tool/gifAPng/i18n/ja.ts +1 -11
  153. package/src/tool/gifAPng/i18n/ko.ts +1 -11
  154. package/src/tool/gifAPng/i18n/nl.ts +2 -12
  155. package/src/tool/gifAPng/i18n/pl.ts +3 -13
  156. package/src/tool/gifAPng/i18n/pt.ts +2 -12
  157. package/src/tool/gifAPng/i18n/ru.ts +3 -13
  158. package/src/tool/gifAPng/i18n/sv.ts +3 -13
  159. package/src/tool/gifAPng/i18n/tr.ts +1 -11
  160. package/src/tool/gifAPng/i18n/zh.ts +2 -12
  161. package/src/tool/gifAPng/seo.astro +2 -1
  162. package/src/tool/gifAWebp/bibliography.ts +12 -0
  163. package/src/tool/gifAWebp/entry.ts +2 -0
  164. package/src/tool/gifAWebp/i18n/de.ts +3 -13
  165. package/src/tool/gifAWebp/i18n/en.ts +3 -13
  166. package/src/tool/gifAWebp/i18n/es.ts +1 -11
  167. package/src/tool/gifAWebp/i18n/fr.ts +11 -21
  168. package/src/tool/gifAWebp/i18n/id.ts +3 -13
  169. package/src/tool/gifAWebp/i18n/it.ts +1 -11
  170. package/src/tool/gifAWebp/i18n/ja.ts +1 -11
  171. package/src/tool/gifAWebp/i18n/ko.ts +1 -11
  172. package/src/tool/gifAWebp/i18n/nl.ts +3 -13
  173. package/src/tool/gifAWebp/i18n/pl.ts +3 -13
  174. package/src/tool/gifAWebp/i18n/pt.ts +3 -13
  175. package/src/tool/gifAWebp/i18n/ru.ts +7 -17
  176. package/src/tool/gifAWebp/i18n/sv.ts +3 -13
  177. package/src/tool/gifAWebp/i18n/tr.ts +1 -11
  178. package/src/tool/gifAWebp/i18n/zh.ts +4 -14
  179. package/src/tool/gifAWebp/seo.astro +2 -1
  180. package/src/tool/imagenBase64/bibliography.ts +12 -0
  181. package/src/tool/imagenBase64/component.astro +0 -301
  182. package/src/tool/imagenBase64/entry.ts +2 -0
  183. package/src/tool/imagenBase64/i18n/de.ts +7 -17
  184. package/src/tool/imagenBase64/i18n/en.ts +7 -17
  185. package/src/tool/imagenBase64/i18n/es.ts +7 -17
  186. package/src/tool/imagenBase64/i18n/fr.ts +17 -27
  187. package/src/tool/imagenBase64/i18n/id.ts +7 -17
  188. package/src/tool/imagenBase64/i18n/it.ts +6 -16
  189. package/src/tool/imagenBase64/i18n/ja.ts +1 -11
  190. package/src/tool/imagenBase64/i18n/ko.ts +1 -11
  191. package/src/tool/imagenBase64/i18n/nl.ts +7 -17
  192. package/src/tool/imagenBase64/i18n/pl.ts +7 -17
  193. package/src/tool/imagenBase64/i18n/pt.ts +7 -17
  194. package/src/tool/imagenBase64/i18n/ru.ts +9 -19
  195. package/src/tool/imagenBase64/i18n/sv.ts +7 -17
  196. package/src/tool/imagenBase64/i18n/tr.ts +2 -12
  197. package/src/tool/imagenBase64/i18n/zh.ts +7 -17
  198. package/src/tool/imagenBase64/image-to-base64-converter.css +299 -0
  199. package/src/tool/imagenBase64/seo.astro +2 -1
  200. package/src/tool/jpgAIco/bibliography.ts +12 -0
  201. package/src/tool/jpgAIco/entry.ts +2 -0
  202. package/src/tool/jpgAIco/i18n/de.ts +9 -19
  203. package/src/tool/jpgAIco/i18n/en.ts +9 -19
  204. package/src/tool/jpgAIco/i18n/es.ts +7 -17
  205. package/src/tool/jpgAIco/i18n/fr.ts +13 -23
  206. package/src/tool/jpgAIco/i18n/id.ts +9 -19
  207. package/src/tool/jpgAIco/i18n/it.ts +3 -13
  208. package/src/tool/jpgAIco/i18n/ja.ts +2 -12
  209. package/src/tool/jpgAIco/i18n/ko.ts +2 -12
  210. package/src/tool/jpgAIco/i18n/nl.ts +9 -19
  211. package/src/tool/jpgAIco/i18n/pl.ts +9 -19
  212. package/src/tool/jpgAIco/i18n/pt.ts +9 -19
  213. package/src/tool/jpgAIco/i18n/ru.ts +11 -21
  214. package/src/tool/jpgAIco/i18n/sv.ts +9 -19
  215. package/src/tool/jpgAIco/i18n/tr.ts +3 -13
  216. package/src/tool/jpgAIco/i18n/zh.ts +9 -19
  217. package/src/tool/jpgAIco/seo.astro +2 -1
  218. package/src/tool/jpgAPng/bibliography.ts +12 -0
  219. package/src/tool/jpgAPng/entry.ts +2 -0
  220. package/src/tool/jpgAPng/i18n/de.ts +7 -17
  221. package/src/tool/jpgAPng/i18n/en.ts +9 -19
  222. package/src/tool/jpgAPng/i18n/es.ts +7 -17
  223. package/src/tool/jpgAPng/i18n/fr.ts +13 -23
  224. package/src/tool/jpgAPng/i18n/id.ts +7 -17
  225. package/src/tool/jpgAPng/i18n/it.ts +5 -15
  226. package/src/tool/jpgAPng/i18n/ja.ts +3 -13
  227. package/src/tool/jpgAPng/i18n/ko.ts +3 -13
  228. package/src/tool/jpgAPng/i18n/nl.ts +7 -17
  229. package/src/tool/jpgAPng/i18n/pl.ts +7 -17
  230. package/src/tool/jpgAPng/i18n/pt.ts +7 -17
  231. package/src/tool/jpgAPng/i18n/ru.ts +10 -20
  232. package/src/tool/jpgAPng/i18n/sv.ts +7 -17
  233. package/src/tool/jpgAPng/i18n/tr.ts +6 -16
  234. package/src/tool/jpgAPng/i18n/zh.ts +8 -18
  235. package/src/tool/jpgAPng/seo.astro +2 -1
  236. package/src/tool/jpgAWebp/bibliography.ts +12 -0
  237. package/src/tool/jpgAWebp/entry.ts +2 -0
  238. package/src/tool/jpgAWebp/i18n/de.ts +10 -20
  239. package/src/tool/jpgAWebp/i18n/en.ts +10 -20
  240. package/src/tool/jpgAWebp/i18n/es.ts +4 -14
  241. package/src/tool/jpgAWebp/i18n/fr.ts +16 -26
  242. package/src/tool/jpgAWebp/i18n/id.ts +10 -20
  243. package/src/tool/jpgAWebp/i18n/it.ts +6 -16
  244. package/src/tool/jpgAWebp/i18n/ja.ts +2 -12
  245. package/src/tool/jpgAWebp/i18n/ko.ts +3 -13
  246. package/src/tool/jpgAWebp/i18n/nl.ts +10 -20
  247. package/src/tool/jpgAWebp/i18n/pl.ts +10 -20
  248. package/src/tool/jpgAWebp/i18n/pt.ts +10 -20
  249. package/src/tool/jpgAWebp/i18n/ru.ts +10 -20
  250. package/src/tool/jpgAWebp/i18n/sv.ts +10 -20
  251. package/src/tool/jpgAWebp/i18n/tr.ts +5 -15
  252. package/src/tool/jpgAWebp/i18n/zh.ts +9 -19
  253. package/src/tool/jpgAWebp/seo.astro +2 -1
  254. package/src/tool/pngAIco/bibliography.ts +12 -0
  255. package/src/tool/pngAIco/entry.ts +2 -0
  256. package/src/tool/pngAIco/i18n/de.ts +8 -18
  257. package/src/tool/pngAIco/i18n/en.ts +8 -18
  258. package/src/tool/pngAIco/i18n/es.ts +8 -18
  259. package/src/tool/pngAIco/i18n/fr.ts +14 -24
  260. package/src/tool/pngAIco/i18n/id.ts +8 -18
  261. package/src/tool/pngAIco/i18n/it.ts +4 -14
  262. package/src/tool/pngAIco/i18n/ja.ts +2 -12
  263. package/src/tool/pngAIco/i18n/ko.ts +2 -12
  264. package/src/tool/pngAIco/i18n/nl.ts +8 -18
  265. package/src/tool/pngAIco/i18n/pl.ts +8 -18
  266. package/src/tool/pngAIco/i18n/pt.ts +8 -18
  267. package/src/tool/pngAIco/i18n/ru.ts +11 -21
  268. package/src/tool/pngAIco/i18n/sv.ts +8 -18
  269. package/src/tool/pngAIco/i18n/tr.ts +7 -17
  270. package/src/tool/pngAIco/i18n/zh.ts +8 -18
  271. package/src/tool/pngAIco/seo.astro +2 -1
  272. package/src/tool/pngAJpg/bibliography.ts +12 -0
  273. package/src/tool/pngAJpg/entry.ts +2 -0
  274. package/src/tool/pngAJpg/i18n/de.ts +1 -11
  275. package/src/tool/pngAJpg/i18n/en.ts +1 -11
  276. package/src/tool/pngAJpg/i18n/es.ts +1 -11
  277. package/src/tool/pngAJpg/i18n/fr.ts +3 -13
  278. package/src/tool/pngAJpg/i18n/id.ts +1 -11
  279. package/src/tool/pngAJpg/i18n/it.ts +1 -11
  280. package/src/tool/pngAJpg/i18n/ja.ts +1 -11
  281. package/src/tool/pngAJpg/i18n/ko.ts +1 -11
  282. package/src/tool/pngAJpg/i18n/nl.ts +1 -11
  283. package/src/tool/pngAJpg/i18n/pl.ts +7 -17
  284. package/src/tool/pngAJpg/i18n/pt.ts +1 -11
  285. package/src/tool/pngAJpg/i18n/ru.ts +9 -19
  286. package/src/tool/pngAJpg/i18n/sv.ts +1 -11
  287. package/src/tool/pngAJpg/i18n/tr.ts +1 -11
  288. package/src/tool/pngAJpg/i18n/zh.ts +6 -16
  289. package/src/tool/pngAJpg/seo.astro +2 -1
  290. package/src/tool/pngAWebp/bibliography.ts +16 -0
  291. package/src/tool/pngAWebp/entry.ts +2 -0
  292. package/src/tool/pngAWebp/i18n/de.ts +7 -21
  293. package/src/tool/pngAWebp/i18n/en.ts +7 -21
  294. package/src/tool/pngAWebp/i18n/es.ts +6 -20
  295. package/src/tool/pngAWebp/i18n/fr.ts +13 -27
  296. package/src/tool/pngAWebp/i18n/id.ts +7 -21
  297. package/src/tool/pngAWebp/i18n/it.ts +3 -17
  298. package/src/tool/pngAWebp/i18n/ja.ts +2 -16
  299. package/src/tool/pngAWebp/i18n/ko.ts +2 -16
  300. package/src/tool/pngAWebp/i18n/nl.ts +7 -21
  301. package/src/tool/pngAWebp/i18n/pl.ts +7 -21
  302. package/src/tool/pngAWebp/i18n/pt.ts +6 -20
  303. package/src/tool/pngAWebp/i18n/ru.ts +8 -22
  304. package/src/tool/pngAWebp/i18n/sv.ts +7 -21
  305. package/src/tool/pngAWebp/i18n/tr.ts +6 -20
  306. package/src/tool/pngAWebp/i18n/zh.ts +6 -20
  307. package/src/tool/pngAWebp/seo.astro +2 -1
  308. package/src/tool/svgAJpg/bibliography.ts +12 -0
  309. package/src/tool/svgAJpg/entry.ts +2 -0
  310. package/src/tool/svgAJpg/i18n/de.ts +2 -12
  311. package/src/tool/svgAJpg/i18n/en.ts +1 -11
  312. package/src/tool/svgAJpg/i18n/es.ts +1 -11
  313. package/src/tool/svgAJpg/i18n/fr.ts +6 -16
  314. package/src/tool/svgAJpg/i18n/id.ts +1 -11
  315. package/src/tool/svgAJpg/i18n/it.ts +1 -11
  316. package/src/tool/svgAJpg/i18n/ja.ts +1 -11
  317. package/src/tool/svgAJpg/i18n/ko.ts +1 -11
  318. package/src/tool/svgAJpg/i18n/nl.ts +1 -11
  319. package/src/tool/svgAJpg/i18n/pl.ts +1 -11
  320. package/src/tool/svgAJpg/i18n/pt.ts +1 -11
  321. package/src/tool/svgAJpg/i18n/ru.ts +3 -13
  322. package/src/tool/svgAJpg/i18n/sv.ts +1 -11
  323. package/src/tool/svgAJpg/i18n/tr.ts +1 -11
  324. package/src/tool/svgAJpg/i18n/zh.ts +1 -11
  325. package/src/tool/svgAJpg/seo.astro +2 -1
  326. package/src/tool/svgAPng/bibliography.ts +12 -0
  327. package/src/tool/svgAPng/entry.ts +2 -0
  328. package/src/tool/svgAPng/i18n/de.ts +3 -13
  329. package/src/tool/svgAPng/i18n/en.ts +3 -13
  330. package/src/tool/svgAPng/i18n/es.ts +1 -11
  331. package/src/tool/svgAPng/i18n/fr.ts +9 -19
  332. package/src/tool/svgAPng/i18n/id.ts +3 -13
  333. package/src/tool/svgAPng/i18n/it.ts +3 -13
  334. package/src/tool/svgAPng/i18n/ja.ts +1 -11
  335. package/src/tool/svgAPng/i18n/ko.ts +1 -11
  336. package/src/tool/svgAPng/i18n/nl.ts +3 -13
  337. package/src/tool/svgAPng/i18n/pl.ts +3 -13
  338. package/src/tool/svgAPng/i18n/pt.ts +3 -13
  339. package/src/tool/svgAPng/i18n/ru.ts +5 -15
  340. package/src/tool/svgAPng/i18n/sv.ts +3 -13
  341. package/src/tool/svgAPng/i18n/tr.ts +3 -13
  342. package/src/tool/svgAPng/i18n/zh.ts +3 -13
  343. package/src/tool/svgAPng/seo.astro +2 -1
  344. package/src/tool/webpAIco/bibliography.ts +12 -0
  345. package/src/tool/webpAIco/entry.ts +2 -0
  346. package/src/tool/webpAIco/i18n/de.ts +1 -11
  347. package/src/tool/webpAIco/i18n/en.ts +1 -11
  348. package/src/tool/webpAIco/i18n/es.ts +1 -11
  349. package/src/tool/webpAIco/i18n/fr.ts +5 -15
  350. package/src/tool/webpAIco/i18n/id.ts +1 -11
  351. package/src/tool/webpAIco/i18n/it.ts +1 -11
  352. package/src/tool/webpAIco/i18n/ja.ts +1 -11
  353. package/src/tool/webpAIco/i18n/ko.ts +1 -11
  354. package/src/tool/webpAIco/i18n/nl.ts +1 -11
  355. package/src/tool/webpAIco/i18n/pl.ts +1 -11
  356. package/src/tool/webpAIco/i18n/pt.ts +1 -11
  357. package/src/tool/webpAIco/i18n/ru.ts +3 -13
  358. package/src/tool/webpAIco/i18n/sv.ts +1 -11
  359. package/src/tool/webpAIco/i18n/tr.ts +1 -11
  360. package/src/tool/webpAIco/i18n/zh.ts +1 -12
  361. package/src/tool/webpAIco/seo.astro +2 -1
  362. package/src/tool/webpAJpg/bibliography.ts +16 -0
  363. package/src/tool/webpAJpg/entry.ts +2 -0
  364. package/src/tool/webpAJpg/i18n/de.ts +3 -17
  365. package/src/tool/webpAJpg/i18n/en.ts +3 -17
  366. package/src/tool/webpAJpg/i18n/es.ts +1 -15
  367. package/src/tool/webpAJpg/i18n/fr.ts +10 -24
  368. package/src/tool/webpAJpg/i18n/id.ts +3 -17
  369. package/src/tool/webpAJpg/i18n/it.ts +2 -16
  370. package/src/tool/webpAJpg/i18n/ja.ts +1 -15
  371. package/src/tool/webpAJpg/i18n/ko.ts +1 -15
  372. package/src/tool/webpAJpg/i18n/nl.ts +2 -16
  373. package/src/tool/webpAJpg/i18n/pl.ts +3 -17
  374. package/src/tool/webpAJpg/i18n/pt.ts +3 -17
  375. package/src/tool/webpAJpg/i18n/ru.ts +7 -21
  376. package/src/tool/webpAJpg/i18n/sv.ts +3 -17
  377. package/src/tool/webpAJpg/i18n/tr.ts +2 -16
  378. package/src/tool/webpAJpg/i18n/zh.ts +2 -16
  379. package/src/tool/webpAJpg/seo.astro +2 -1
  380. package/src/tool/webpAPng/bibliography.ts +16 -0
  381. package/src/tool/webpAPng/entry.ts +2 -0
  382. package/src/tool/webpAPng/i18n/de.ts +3 -17
  383. package/src/tool/webpAPng/i18n/en.ts +3 -17
  384. package/src/tool/webpAPng/i18n/es.ts +1 -15
  385. package/src/tool/webpAPng/i18n/fr.ts +9 -23
  386. package/src/tool/webpAPng/i18n/id.ts +3 -17
  387. package/src/tool/webpAPng/i18n/it.ts +3 -17
  388. package/src/tool/webpAPng/i18n/ja.ts +1 -15
  389. package/src/tool/webpAPng/i18n/ko.ts +1 -15
  390. package/src/tool/webpAPng/i18n/nl.ts +3 -17
  391. package/src/tool/webpAPng/i18n/pl.ts +3 -17
  392. package/src/tool/webpAPng/i18n/pt.ts +3 -17
  393. package/src/tool/webpAPng/i18n/ru.ts +4 -18
  394. package/src/tool/webpAPng/i18n/sv.ts +3 -17
  395. package/src/tool/webpAPng/i18n/tr.ts +2 -17
  396. package/src/tool/webpAPng/i18n/zh.ts +3 -17
  397. package/src/tool/webpAPng/seo.astro +2 -1
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { BmpAWebpLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: BmpAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: BmpAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'BMP File Format',
57
- url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
- },
59
- {
60
- name: 'Google WebP Documentation',
61
- url: 'https://developers.google.com/speed/webp',
62
- },
63
- ];
64
-
65
55
  const seo: BmpAWebpLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Конвертация BMP в WebP это, без сомнения, самая впечатляющая трансформация, которую можно сделать с изображением. Формат BMP (Bitmap) является одним из старейших и тяжелейших в цифровой экосистеме: он хранит каждый пиксель без какого-либо сжатия, что приводит к файлам, которые могут весить в 20, 50 или даже 100 раз больше своего современного эквивалента. WebP, разработанный Google, применяет алгоритмы сжатия последнего поколения, которые сокращают размер до абсолютно минимального значения при сохранении отличного визуального качества.',
63
+ html: 'Конвертация BMP в WebP - это, без сомнения, самая впечатляющая трансформация, которую можно сделать с изображением. Формат BMP (Bitmap) является одним из старейших и тяжелейших в цифровой экосистеме: он хранит каждый пиксель без какого-либо сжатия, что приводит к файлам, которые могут весить в 20, 50 или даже 100 раз больше своего современного эквивалента. WebP, разработанный Google, применяет алгоритмы сжатия последнего поколения, которые сокращают размер до абсолютно минимального значения при сохранении отличного визуального качества.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -83,7 +73,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'WebP использует предиктивное сжатие на основе блоков и преобразований DCT (та же технология, что лежит в основе цифрового видео), благодаря чему то же изображение 1920x1080 занимает от 80 КБ до 300 КБ. Это означает сокращение на 9599 % относительно оригинала BMP. Кроме того, WebP поддерживает альфа-канал для прозрачности и сжатие как с потерями, так и без, предлагая полную универсальность.',
76
+ html: 'WebP использует предиктивное сжатие на основе блоков и преобразований DCT (та же технология, что лежит в основе цифрового видео), благодаря чему то же изображение 1920x1080 занимает от 80 КБ до 300 КБ. Это означает сокращение на 95-99 % относительно оригинала BMP. Кроме того, WebP поддерживает альфа-канал для прозрачности и сжатие как с потерями, так и без, предлагая полную универсальность.',
87
77
  },
88
78
  {
89
79
  type: 'title',
@@ -112,7 +102,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
112
102
  highlight: true,
113
103
  points: [
114
104
  'Мгновенная конвертация без передачи по сети',
115
- 'Абсолютная приватность 0 байт покидает ваше устройство',
105
+ 'Абсолютная приватность - 0 байт покидает ваше устройство',
116
106
  'Без лимитов на размер файла',
117
107
  'Работает без подключения к интернету',
118
108
  ],
@@ -146,11 +136,11 @@ const seo: BmpAWebpLocaleContent['seo'] = [
146
136
  type: 'list',
147
137
  icon: 'mdi:check-circle',
148
138
  items: [
149
- 'Веб-публикация Chrome, Firefox, Safari, Edge и все современные браузеры.',
150
- 'Социальные сети Instagram, Twitter, Facebook принимают WebP нативно.',
151
- 'Веб-приложения и PWA минимальные размеры для мгновенной загрузки.',
152
- 'Эффективное архивирование заменяет коллекции старых BMP, экономя гигабайты.',
153
- 'Email-маркетинг легкие изображения, которые быстро загружаются в любом почтовом клиенте.',
139
+ 'Веб-публикация - Chrome, Firefox, Safari, Edge и все современные браузеры.',
140
+ 'Социальные сети - Instagram, Twitter, Facebook принимают WebP нативно.',
141
+ 'Веб-приложения и PWA - минимальные размеры для мгновенной загрузки.',
142
+ 'Эффективное архивирование - заменяет коллекции старых BMP, экономя гигабайты.',
143
+ 'Email-маркетинг - легкие изображения, которые быстро загружаются в любом почтовом клиенте.',
154
144
  ],
155
145
  },
156
146
  {
@@ -160,7 +150,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'Если у вас есть старые файлы BMP из Windows, несжатые скриншоты или изображения из старого софта, их конвертация в WebP это самое эффективное действие для оптимизации вашего хранилища и производительности веба. С помощью нашего инструмента конвертация мгновенна, приватна и не имеет лимитов именно так, как и должно быть.',
153
+ html: 'Если у вас есть старые файлы BMP из Windows, несжатые скриншоты или изображения из старого софта, их конвертация в WebP - это самое эффективное действие для оптимизации вашего хранилища и производительности веба. С помощью нашего инструмента конвертация мгновенна, приватна и не имеет лимитов - именно так, как и должно быть.',
164
154
  },
165
155
  ];
166
156
 
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { BmpAWebpLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: BmpAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: BmpAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'BMP File Format',
57
- url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
- },
59
- {
60
- name: 'Google WebP Documentation',
61
- url: 'https://developers.google.com/speed/webp',
62
- },
63
- ];
64
-
65
55
  const seo: BmpAWebpLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -112,7 +102,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
112
102
  highlight: true,
113
103
  points: [
114
104
  'Omedelbar konvertering utan nätverksöverföring',
115
- 'Absolut integritet 0 byte lämnar din enhet',
105
+ 'Absolut integritet - 0 byte lämnar din enhet',
116
106
  'Inga storleksbegränsningar per fil',
117
107
  'Fungerar utan internetanslutning',
118
108
  ],
@@ -146,11 +136,11 @@ const seo: BmpAWebpLocaleContent['seo'] = [
146
136
  type: 'list',
147
137
  icon: 'mdi:check-circle',
148
138
  items: [
149
- 'Webbpublicering Chrome, Firefox, Safari, Edge och alla moderna webbläsare.',
150
- 'Sociala nätverk Instagram, Twitter, Facebook accepterar WebP lokalt.',
151
- 'Webbappar och PWA minimala storlekar för omedelbar laddning.',
152
- 'Effektiv arkivering ersätter kollektioner av gamla BMP:er och sparar gigabyte.',
153
- 'E-postmarknadsföring lätta bilder som laddas snabbt i alla moderna e-postklienter.',
139
+ 'Webbpublicering - Chrome, Firefox, Safari, Edge och alla moderna webbläsare.',
140
+ 'Sociala nätverk - Instagram, Twitter, Facebook accepterar WebP lokalt.',
141
+ 'Webbappar och PWA - minimala storlekar för omedelbar laddning.',
142
+ 'Effektiv arkivering - ersätter kollektioner av gamla BMP:er och sparar gigabyte.',
143
+ 'E-postmarknadsföring - lätta bilder som laddas snabbt i alla moderna e-postklienter.',
154
144
  ],
155
145
  },
156
146
  {
@@ -160,7 +150,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'Om du har gamla BMP-filer från Windows, okomprimerade skärmdumpar eller bilder från gamla verktyg, är konvertering till WebP den mest effektfulla åtgärden du kan vidta för att optimera din lagring och webbprestanda. Med vårt verktyg är konverteringen omedelbar, privat och utan begränsningar precis som den ska vara.',
153
+ html: 'Om du har gamla BMP-filer från Windows, okomprimerade skärmdumpar eller bilder från gamla verktyg, är konvertering till WebP den mest effektfulla åtgärden du kan vidta för att optimera din lagring och webbprestanda. Med vårt verktyg är konverteringen omedelbar, privat och utan begränsningar - precis som den ska vara.',
164
154
  },
165
155
  ];
166
156
 
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { BmpAWebpLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: BmpAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: BmpAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'BMP File Format',
57
- url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
- },
59
- {
60
- name: 'Google WebP Documentation',
61
- url: 'https://developers.google.com/speed/webp',
62
- },
63
- ];
64
-
65
55
  const seo: BmpAWebpLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -112,7 +102,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
112
102
  highlight: true,
113
103
  points: [
114
104
  'Ağ aktarımı olmadan anında dönüşüm',
115
- 'Mutlak gizlilik cihazınızdan 0 bayt çıkar',
105
+ 'Mutlak gizlilik - cihazınızdan 0 bayt çıkar',
116
106
  'Dosya başına boyut sınırı yok',
117
107
  'İnternet bağlantısı olmadan çalışır',
118
108
  ],
@@ -146,11 +136,11 @@ const seo: BmpAWebpLocaleContent['seo'] = [
146
136
  type: 'list',
147
137
  icon: 'mdi:check-circle',
148
138
  items: [
149
- 'Web yayını Chrome, Firefox, Safari, Edge ve tüm modern tarayıcılar.',
150
- 'Sosyal ağlar Instagram, Twitter, Facebook WebP\'yi yerel olarak kabul eder.',
151
- 'Web uygulamaları ve PWA anında yükleme için minimum boyutlar.',
152
- 'Verimli arşivleme eski BMP koleksiyonlarını değiştirerek gigabaytlarca tasarruf sağlar.',
153
- 'E-posta pazarlaması herhangi bir modern e-posta istemcisinde hızlı yüklenen hafif görüntüler.',
139
+ 'Web yayını - Chrome, Firefox, Safari, Edge ve tüm modern tarayıcılar.',
140
+ 'Sosyal ağlar - Instagram, Twitter, Facebook WebP\'yi yerel olarak kabul eder.',
141
+ 'Web uygulamaları ve PWA - anında yükleme için minimum boyutlar.',
142
+ 'Verimli arşivleme - eski BMP koleksiyonlarını değiştirerek gigabaytlarca tasarruf sağlar.',
143
+ 'E-posta pazarlaması - herhangi bir modern e-posta istemcisinde hızlı yüklenen hafif görüntüler.',
154
144
  ],
155
145
  },
156
146
  {
@@ -160,7 +150,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: 'Eğer elinizde Windows\'tan kalma eski BMP dosyaları, sıkıştırılmamış ekran görüntüleri veya eski araçlardan görüntüler varsa, bunları WebP\'ye dönüştürmek, depolama alanınızı ve web performansınızı optimize etmek için atabileceğiniz en etkili adımdır. Aracımızla dönüşüm anında, özel ve sınırsızdır tam olması gerektiği gibi.',
153
+ html: 'Eğer elinizde Windows\'tan kalma eski BMP dosyaları, sıkıştırılmamış ekran görüntüleri veya eski araçlardan görüntüler varsa, bunları WebP\'ye dönüştürmek, depolama alanınızı ve web performansınızı optimize etmek için atabileceğiniz en etkili adımdır. Aracımızla dönüşüm anında, özel ve sınırsızdır - tam olması gerektiği gibi.',
164
154
  },
165
155
  ];
166
156
 
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { BmpAWebpLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: BmpAWebpLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: BmpAWebpLocaleContent['bibliography'] = [
55
- {
56
- name: 'BMP File Format',
57
- url: 'https://en.wikipedia.org/wiki/BMP_file_format',
58
- },
59
- {
60
- name: 'Google WebP Documentation',
61
- url: 'https://developers.google.com/speed/webp',
62
- },
63
- ];
64
-
65
55
  const seo: BmpAWebpLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -112,7 +102,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
112
102
  highlight: true,
113
103
  points: [
114
104
  '无需网络传输,即时转换',
115
- '绝对隐私——0 字节离开您的设备',
105
+ '绝对隐私-0 字节离开您的设备',
116
106
  '不限单个文件的大小',
117
107
  '无需互联网连接即可工作',
118
108
  ],
@@ -146,11 +136,11 @@ const seo: BmpAWebpLocaleContent['seo'] = [
146
136
  type: 'list',
147
137
  icon: 'mdi:check-circle',
148
138
  items: [
149
- '网页发布——Chrome、Firefox、Safari、Edge 及所有现代浏览器均支持。',
150
- '社交网络——Instagram、Twitter、Facebook 原生接受 WebP。',
151
- '网页应用与 PWA——极小体积实现即时加载。',
152
- '高效归档——替换陈旧的 BMP 集合,节省数以 GB 计的空间。',
153
- '邮件营销——轻量级图像,在任何现代邮件客户端中都能快速加载。',
139
+ '网页发布-Chrome、Firefox、Safari、Edge 及所有现代浏览器均支持。',
140
+ '社交网络-Instagram、Twitter、Facebook 原生接受 WebP。',
141
+ '网页应用与 PWA-极小体积实现即时加载。',
142
+ '高效归档-替换陈旧的 BMP 集合,节省数以 GB 计的空间。',
143
+ '邮件营销-轻量级图像,在任何现代邮件客户端中都能快速加载。',
154
144
  ],
155
145
  },
156
146
  {
@@ -160,7 +150,7 @@ const seo: BmpAWebpLocaleContent['seo'] = [
160
150
  },
161
151
  {
162
152
  type: 'paragraph',
163
- html: '如果您有来自 Windows 的陈旧 BMP 文件、未经压缩的截图或来自旧工具的图像,将它们转换为 WebP 是优化存储和网页性能的最有效行动。使用我们的工具,转换是即时的、私密的且无限制的——正应如此。',
153
+ html: '如果您有来自 Windows 的陈旧 BMP 文件、未经压缩的截图或来自旧工具的图像,将它们转换为 WebP 是优化存储和网页性能的最有效行动。使用我们的工具,转换是即时的、私密的且无限制的-正应如此。',
164
154
  },
165
155
  ];
166
156
 
@@ -9,6 +9,7 @@ interface Props {
9
9
 
10
10
  const { locale = 'es' } = Astro.props;
11
11
  const content = await bmpAWebp.i18n[locale]?.();
12
+ if (!content) return null;
12
13
  ---
13
14
 
14
- {content && <SEORenderer content={{ locale, sections: content.seo }} />}
15
+ {content.seo?.length > 0 && <SEORenderer content={{ locale, sections: content.seo }} />}
@@ -0,0 +1,12 @@
1
+ import type { BibliographyEntry } from '../../types';
2
+
3
+ export const bibliography: BibliographyEntry[] = [
4
+ {
5
+ name: 'Technische Spezifikation Joint Photographic Experts Group',
6
+ url: 'https://en.wikipedia.org/wiki/JPEG',
7
+ },
8
+ {
9
+ name: 'CompuServe GIF Information',
10
+ url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
11
+ },
12
+ ];
@@ -27,3 +27,5 @@ export const gifAJpg: ConvertersToolEntry<ImageConverterUI> = {
27
27
  zh: () => import('./i18n/zh').then((m) => m.content),
28
28
  },
29
29
  };
30
+
31
+ export { bibliography } from './bibliography';
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Technische Spezifikation Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: BigIntajpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group Technical Specification',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Especificación Técnica Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,21 +52,10 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Spécification Technique Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'Information GIF CompuServe',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
68
- text: 'Convertisseur GIF vers JPG : Extrayez des Fotogrammes en Images Haute Qualité',
58
+ text: 'Convertisseur GIF vers JPG: Extrayez des Fotogrammes en Images Haute Qualité',
69
59
  level: 2,
70
60
  },
71
61
  {
@@ -74,20 +64,20 @@ const seo: GifAJpgLocaleContent['seo'] = [
74
64
  },
75
65
  {
76
66
  type: 'title',
77
- text: 'GIF vs JPG : deux formats aux objectifs opposés',
67
+ text: 'GIF vs JPG: deux formats aux objectifs opposés',
78
68
  level: 3,
79
69
  },
80
70
  {
81
71
  type: 'paragraph',
82
- html: 'Le GIF (Graphics Interchange Format) a été conçu en 1987 avec une limitation sévère qui persiste encore aujourd\'hui : il ne peut représenter que 256 couleurs par image. Cette contrainte technique n\'avait pas d\'importance pour les animations simples à palettes réduites, mais elle en fait un format visuellement pauvre pour la photographie réelle. Le JPG, en revanche, peut restituer des millions de couleurs grâce à des algorithmes de compression perceptuelle avancés.',
72
+ html: 'Le GIF (Graphics Interchange Format) a été conçu en 1987 avec une limitation sévère qui persiste encore aujourd\'hui: il ne peut représenter que 256 couleurs par image. Cette contrainte technique n\'avait pas d\'importance pour les animations simples à palettes réduites, mais elle en fait un format visuellement pauvre pour la photographie réelle. Le JPG, en revanche, peut restituer des millions de couleurs grâce à des algorithmes de compression perceptuelle avancés.',
83
73
  },
84
74
  {
85
75
  type: 'paragraph',
86
- html: 'Extraire une image d\'un GIF et la sauvegarder en JPG offre de nombreuses applications pratiques : générer des miniatures pour les lecteurs vidéo, créer des aperçus pour les systèmes de gestion de contenu, obtenir des images statiques pour des présentations, ou simplement archiver un moment visuel d\'une animation complexe. Le JPG résultant sera bien plus léger que le GIF original et universellement compatible.',
76
+ html: 'Extraire une image d\'un GIF et la sauvegarder en JPG offre de nombreuses applications pratiques: générer des miniatures pour les lecteurs vidéo, créer des aperçus pour les systèmes de gestion de contenu, obtenir des images statiques pour des présentations, ou simplement archiver un moment visuel d\'une animation complexe. Le JPG résultant sera bien plus léger que le GIF original et universellement compatible.',
87
77
  },
88
78
  {
89
79
  type: 'title',
90
- text: 'Comparaison d\'Architecture : Local vs Cloud',
80
+ text: 'Comparaison d\'Architecture: Local vs Cloud',
91
81
  level: 3,
92
82
  },
93
83
  {
@@ -114,7 +104,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
114
104
  'Le GIF ne quitte jamais votre appareil',
115
105
  'Vitesse instantanée sans attente réseau',
116
106
  'Aucune limite de taille ni de quota de fichiers',
117
- 'Confidentialité totale : 0 octet envoyé à l\'extérieur',
107
+ 'Confidentialité totale: 0 octet envoyé à l\'extérieur',
118
108
  ],
119
109
  },
120
110
  ],
@@ -135,7 +125,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
135
125
  {
136
126
  type: 'tip',
137
127
  title: 'Palette de couleurs limitée du GIF',
138
- html: 'Le GIF ne peut contenir que 256 couleurs par image. Le JPG extrait héritera de cette palette réduite du fichier original : si le GIF contenait des dégradés ou des photographies, il peut apparaître avec une certaine postérisation. Pour de meilleurs résultats, utilisez des GIF avec des couleurs simples ou des illustrations.',
128
+ html: 'Le GIF ne peut contenir que 256 couleurs par image. Le JPG extrait héritera de cette palette réduite du fichier original: si le GIF contenait des dégradés ou des photographies, il peut apparaître avec une certaine postérisation. Pour de meilleurs résultats, utilisez des GIF avec des couleurs simples ou des illustrations.',
139
129
  },
140
130
  {
141
131
  type: 'title',
@@ -155,7 +145,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
155
145
  },
156
146
  {
157
147
  type: 'title',
158
- text: 'Conclusion : l\'image qui vaut plus que l\'animation',
148
+ text: 'Conclusion: l\'image qui vaut plus que l\'animation',
159
149
  level: 3,
160
150
  },
161
151
  {
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Spesifikasi Teknis Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Specifica Tecnica Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group 技術仕様',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group 기술 사양',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Technische Specificatie Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Specyfikacja techniczna Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Especificação Técnica Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Техническая спецификация Joint Photographic Experts Group',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',
@@ -70,7 +60,7 @@ const seo: GifAJpgLocaleContent['seo'] = [
70
60
  },
71
61
  {
72
62
  type: 'paragraph',
73
- html: 'Файлы GIF десятилетиями доминировали в мире коротких анимаций в интернете. Однако их анимированная природа делает их совершенно бесполезными в качестве миниатюр, превью для социальных сетей или изображений для документов. Когда вам нужно извлечь конкретный кадр из GIF и превратить его в высококачественное статичное изображение, конвертация в JPG самое практичное и совместимое решение.',
63
+ html: 'Файлы GIF десятилетиями доминировали в мире коротких анимаций в интернете. Однако их анимированная природа делает их совершенно бесполезными в качестве миниатюр, превью для социальных сетей или изображений для документов. Когда вам нужно извлечь конкретный кадр из GIF и превратить его в высококачественное статичное изображение, конвертация в JPG - самое практичное и совместимое решение.',
74
64
  },
75
65
  {
76
66
  type: 'title',
@@ -1,3 +1,4 @@
1
+ import { bibliography } from '../bibliography';
1
2
  import type { ImageConverterUI } from '../../../shared/ImageConverter.astro';
2
3
  import { generateSchemas } from '../../../shared/logic/schemas';
3
4
  import type { GifAJpgLocaleContent } from '../index';
@@ -51,17 +52,6 @@ const howTo: GifAJpgLocaleContent['howTo'] = [
51
52
  },
52
53
  ];
53
54
 
54
- const bibliography: GifAJpgLocaleContent['bibliography'] = [
55
- {
56
- name: 'Joint Photographic Experts Group teknisk specifikation',
57
- url: 'https://en.wikipedia.org/wiki/JPEG',
58
- },
59
- {
60
- name: 'CompuServe GIF Information',
61
- url: 'https://www.w3.org/Graphics/GIF/spec-gif89a.txt',
62
- },
63
- ];
64
-
65
55
  const seo: GifAJpgLocaleContent['seo'] = [
66
56
  {
67
57
  type: 'title',