@jjlmoya/utils-home 1.17.0 → 1.23.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 (136) hide show
  1. package/package.json +1 -1
  2. package/src/category/i18n/de.ts +10 -10
  3. package/src/category/i18n/en.ts +8 -8
  4. package/src/category/i18n/es.ts +2 -2
  5. package/src/category/i18n/fr.ts +15 -15
  6. package/src/category/i18n/id.ts +8 -8
  7. package/src/category/i18n/it.ts +7 -7
  8. package/src/category/i18n/nl.ts +8 -8
  9. package/src/category/i18n/pl.ts +10 -10
  10. package/src/category/i18n/pt.ts +8 -8
  11. package/src/category/i18n/ru.ts +10 -10
  12. package/src/category/i18n/sv.ts +8 -8
  13. package/src/category/i18n/tr.ts +4 -4
  14. package/src/category/i18n/zh.ts +8 -8
  15. package/src/entries.ts +4 -1
  16. package/src/tests/locale_completeness.test.ts +2 -2
  17. package/src/tests/no_en_dash.test.ts +70 -0
  18. package/src/tests/tool_validation.test.ts +2 -2
  19. package/src/tool/dewPointCalculator/bibliography.ts +2 -2
  20. package/src/tool/dewPointCalculator/i18n/de.ts +5 -5
  21. package/src/tool/dewPointCalculator/i18n/en.ts +6 -6
  22. package/src/tool/dewPointCalculator/i18n/es.ts +5 -5
  23. package/src/tool/dewPointCalculator/i18n/fr.ts +6 -6
  24. package/src/tool/dewPointCalculator/i18n/id.ts +5 -5
  25. package/src/tool/dewPointCalculator/i18n/it.ts +5 -5
  26. package/src/tool/dewPointCalculator/i18n/ja.ts +4 -4
  27. package/src/tool/dewPointCalculator/i18n/ko.ts +4 -4
  28. package/src/tool/dewPointCalculator/i18n/nl.ts +5 -5
  29. package/src/tool/dewPointCalculator/i18n/pl.ts +5 -5
  30. package/src/tool/dewPointCalculator/i18n/pt.ts +5 -5
  31. package/src/tool/dewPointCalculator/i18n/ru.ts +11 -11
  32. package/src/tool/dewPointCalculator/i18n/sv.ts +5 -5
  33. package/src/tool/dewPointCalculator/i18n/tr.ts +4 -4
  34. package/src/tool/dewPointCalculator/i18n/zh.ts +5 -5
  35. package/src/tool/heatingComparator/i18n/de.ts +8 -8
  36. package/src/tool/heatingComparator/i18n/en.ts +1 -1
  37. package/src/tool/heatingComparator/i18n/es.ts +1 -1
  38. package/src/tool/heatingComparator/i18n/fr.ts +7 -7
  39. package/src/tool/heatingComparator/i18n/id.ts +1 -1
  40. package/src/tool/heatingComparator/i18n/it.ts +1 -1
  41. package/src/tool/heatingComparator/i18n/nl.ts +1 -1
  42. package/src/tool/heatingComparator/i18n/pl.ts +1 -1
  43. package/src/tool/heatingComparator/i18n/pt.ts +1 -1
  44. package/src/tool/heatingComparator/i18n/ru.ts +12 -12
  45. package/src/tool/heatingComparator/i18n/sv.ts +4 -4
  46. package/src/tool/heatingComparator/i18n/zh.ts +6 -6
  47. package/src/tool/ledSavingCalculator/bibliography.ts +3 -3
  48. package/src/tool/ledSavingCalculator/i18n/de.ts +4 -4
  49. package/src/tool/ledSavingCalculator/i18n/en.ts +4 -4
  50. package/src/tool/ledSavingCalculator/i18n/es.ts +4 -4
  51. package/src/tool/ledSavingCalculator/i18n/fr.ts +8 -8
  52. package/src/tool/ledSavingCalculator/i18n/id.ts +3 -3
  53. package/src/tool/ledSavingCalculator/i18n/it.ts +4 -4
  54. package/src/tool/ledSavingCalculator/i18n/ja.ts +3 -3
  55. package/src/tool/ledSavingCalculator/i18n/ko.ts +2 -2
  56. package/src/tool/ledSavingCalculator/i18n/nl.ts +3 -3
  57. package/src/tool/ledSavingCalculator/i18n/pl.ts +3 -3
  58. package/src/tool/ledSavingCalculator/i18n/pt.ts +3 -3
  59. package/src/tool/ledSavingCalculator/i18n/ru.ts +6 -6
  60. package/src/tool/ledSavingCalculator/i18n/sv.ts +3 -3
  61. package/src/tool/ledSavingCalculator/i18n/tr.ts +3 -3
  62. package/src/tool/ledSavingCalculator/i18n/zh.ts +4 -4
  63. package/src/tool/projectorCalculator/bibliography.ts +3 -3
  64. package/src/tool/projectorCalculator/i18n/de.ts +2 -2
  65. package/src/tool/projectorCalculator/i18n/en.ts +1 -1
  66. package/src/tool/projectorCalculator/i18n/es.ts +2 -2
  67. package/src/tool/projectorCalculator/i18n/fr.ts +4 -4
  68. package/src/tool/projectorCalculator/i18n/id.ts +2 -2
  69. package/src/tool/projectorCalculator/i18n/it.ts +2 -2
  70. package/src/tool/projectorCalculator/i18n/ja.ts +2 -2
  71. package/src/tool/projectorCalculator/i18n/ko.ts +2 -2
  72. package/src/tool/projectorCalculator/i18n/nl.ts +2 -2
  73. package/src/tool/projectorCalculator/i18n/pl.ts +3 -3
  74. package/src/tool/projectorCalculator/i18n/pt.ts +2 -2
  75. package/src/tool/projectorCalculator/i18n/ru.ts +5 -5
  76. package/src/tool/projectorCalculator/i18n/sv.ts +2 -2
  77. package/src/tool/projectorCalculator/i18n/tr.ts +2 -2
  78. package/src/tool/projectorCalculator/i18n/zh.ts +4 -4
  79. package/src/tool/qrGenerator/bibliography.ts +1 -1
  80. package/src/tool/qrGenerator/i18n/en.ts +1 -1
  81. package/src/tool/qrGenerator/i18n/fr.ts +1 -1
  82. package/src/tool/solarCalculator/bibliography.ts +2 -2
  83. package/src/tool/solarCalculator/i18n/de.ts +2 -2
  84. package/src/tool/solarCalculator/i18n/en.ts +5 -5
  85. package/src/tool/solarCalculator/i18n/es.ts +3 -3
  86. package/src/tool/solarCalculator/i18n/fr.ts +6 -6
  87. package/src/tool/solarCalculator/i18n/id.ts +2 -2
  88. package/src/tool/solarCalculator/i18n/it.ts +2 -2
  89. package/src/tool/solarCalculator/i18n/ja.ts +2 -2
  90. package/src/tool/solarCalculator/i18n/ko.ts +2 -2
  91. package/src/tool/solarCalculator/i18n/nl.ts +2 -2
  92. package/src/tool/solarCalculator/i18n/pl.ts +3 -3
  93. package/src/tool/solarCalculator/i18n/pt.ts +2 -2
  94. package/src/tool/solarCalculator/i18n/ru.ts +5 -5
  95. package/src/tool/solarCalculator/i18n/sv.ts +2 -2
  96. package/src/tool/solarCalculator/i18n/tr.ts +2 -2
  97. package/src/tool/solarCalculator/i18n/zh.ts +3 -3
  98. package/src/tool/tariffComparator/bibliography.ts +1 -1
  99. package/src/tool/tariffComparator/i18n/en.ts +3 -3
  100. package/src/tool/tariffComparator/i18n/es.ts +3 -3
  101. package/src/tool/tariffComparator/i18n/fr.ts +6 -6
  102. package/src/tool/tariffComparator/i18n/pl.ts +1 -1
  103. package/src/tool/tariffComparator/i18n/zh.ts +1 -1
  104. package/src/tool/wifiRangeSimulator/bibliography.astro +14 -0
  105. package/src/tool/wifiRangeSimulator/bibliography.ts +14 -0
  106. package/src/tool/wifiRangeSimulator/component.astro +170 -0
  107. package/src/tool/wifiRangeSimulator/entry.ts +29 -0
  108. package/src/tool/wifiRangeSimulator/i18n/de.ts +477 -0
  109. package/src/tool/wifiRangeSimulator/i18n/en.ts +477 -0
  110. package/src/tool/wifiRangeSimulator/i18n/es.ts +477 -0
  111. package/src/tool/wifiRangeSimulator/i18n/fr.ts +477 -0
  112. package/src/tool/wifiRangeSimulator/i18n/id.ts +477 -0
  113. package/src/tool/wifiRangeSimulator/i18n/it.ts +477 -0
  114. package/src/tool/wifiRangeSimulator/i18n/ja.ts +477 -0
  115. package/src/tool/wifiRangeSimulator/i18n/ko.ts +477 -0
  116. package/src/tool/wifiRangeSimulator/i18n/nl.ts +477 -0
  117. package/src/tool/wifiRangeSimulator/i18n/pl.ts +477 -0
  118. package/src/tool/wifiRangeSimulator/i18n/pt.ts +477 -0
  119. package/src/tool/wifiRangeSimulator/i18n/ru.ts +477 -0
  120. package/src/tool/wifiRangeSimulator/i18n/sv.ts +477 -0
  121. package/src/tool/wifiRangeSimulator/i18n/tr.ts +477 -0
  122. package/src/tool/wifiRangeSimulator/i18n/zh.ts +477 -0
  123. package/src/tool/wifiRangeSimulator/i18n-utils.ts +14 -0
  124. package/src/tool/wifiRangeSimulator/index.ts +8 -0
  125. package/src/tool/wifiRangeSimulator/logic.ts +220 -0
  126. package/src/tool/wifiRangeSimulator/seo.astro +15 -0
  127. package/src/tool/wifiRangeSimulator/sketch-actions.ts +168 -0
  128. package/src/tool/wifiRangeSimulator/sketch-events.ts +138 -0
  129. package/src/tool/wifiRangeSimulator/sketch-render-dash.ts +170 -0
  130. package/src/tool/wifiRangeSimulator/sketch-render-device.ts +42 -0
  131. package/src/tool/wifiRangeSimulator/sketch-render.ts +155 -0
  132. package/src/tool/wifiRangeSimulator/sketch-state.ts +186 -0
  133. package/src/tool/wifiRangeSimulator/sketch.ts +100 -0
  134. package/src/tool/wifiRangeSimulator/ui.ts +69 -0
  135. package/src/tool/wifiRangeSimulator/wifi-range-simulator.css +583 -0
  136. package/src/tools.ts +2 -0
@@ -0,0 +1,170 @@
1
+ ---
2
+ import type { WifiRangeSimulatorUI } from './ui';
3
+ import type { Point } from './logic';
4
+ import { calculateSignalFromSketch, getVerdictColor } from './logic';
5
+
6
+ interface Props {
7
+ ui?: Record<string, unknown>;
8
+ }
9
+
10
+ const { ui = {} } = Astro.props;
11
+ const wUI = ui as WifiRangeSimulatorUI;
12
+
13
+ const circumference = 2 * Math.PI * 70;
14
+ const initialRouter: Point = { x: 150, y: 250 };
15
+ const initialDevice: Point = { x: 400, y: 250 };
16
+ const initialResult = calculateSignalFromSketch(initialRouter, initialDevice, [], []);
17
+ ---
18
+
19
+ <div class="sketch-wrapper">
20
+ <div class="sketch-card">
21
+ <div class="sketch-toolbar" id="sketch-toolbar">
22
+ <div class="sketch-tool-group">
23
+ <button class="sketch-tool active" data-tool="select" type="button">
24
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z"/></svg>
25
+ <span>{wUI.labelMove}</span>
26
+ </button>
27
+ </div>
28
+ <div class="sketch-tool-sep" />
29
+ <div class="sketch-tool-group">
30
+ <span class="sketch-tool-section-label">{wUI.labelWalls}</span>
31
+ <button class="sketch-tool" data-tool="drywall" type="button"><span class="sketch-tool-swatch" style="background:#e7e5e4" /><span>{wUI.labelDrywall}</span></button>
32
+ <button class="sketch-tool" data-tool="brick" type="button"><span class="sketch-tool-swatch" style="background:#a16207" /><span>{wUI.labelBrick}</span></button>
33
+ <button class="sketch-tool" data-tool="concrete" type="button"><span class="sketch-tool-swatch" style="background:#57534e" /><span>{wUI.labelConcrete}</span></button>
34
+ <button class="sketch-tool" data-tool="stoneWall" type="button"><span class="sketch-tool-swatch" style="background:#44403c" /><span>{wUI.labelStone}</span></button>
35
+ </div>
36
+ <div class="sketch-tool-sep" />
37
+ <div class="sketch-tool-group">
38
+ <span class="sketch-tool-section-label">{wUI.labelObjects}</span>
39
+ <button class="sketch-tool" data-tool="woodDoor" type="button"><span class="sketch-tool-swatch" style="background:#92400e" /><span>{wUI.labelWood}</span></button>
40
+ <button class="sketch-tool" data-tool="metalDoor" type="button"><span class="sketch-tool-swatch" style="background:#334155" /><span>{wUI.labelMetal}</span></button>
41
+ <button class="sketch-tool" data-tool="window" type="button"><span class="sketch-tool-swatch" style="background:#bfdbfe" /><span>{wUI.labelWindow}</span></button>
42
+ <button class="sketch-tool" data-tool="fridge" type="button"><span class="sketch-tool-swatch" style="background:#94a3b8" /><span>{wUI.labelFridge}</span></button>
43
+ <button class="sketch-tool" data-tool="aquarium" type="button"><span class="sketch-tool-swatch" style="background:#0ea5e9" /><span>{wUI.labelFish}</span></button>
44
+ <button class="sketch-tool" data-tool="microwave" type="button"><span class="sketch-tool-swatch" style="background:#475569" /><span>{wUI.labelMicro}</span></button>
45
+ <button class="sketch-tool" data-tool="mirror" type="button"><span class="sketch-tool-swatch" style="background:#c0c0c0" /><span>{wUI.labelMirror}</span></button>
46
+ <button class="sketch-tool" data-tool="furniture" type="button"><span class="sketch-tool-swatch" style="background:#78350f" /><span>{wUI.labelFurn}</span></button>
47
+ </div>
48
+ <div class="sketch-tool-sep" />
49
+ <div class="sketch-tool-group">
50
+ <span class="sketch-tool-section-label">{wUI.labelActions}</span>
51
+ <button class="sketch-tool" data-tool="undo" type="button">
52
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 7v6h6"/><path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"/></svg>
53
+ <span>{wUI.labelUndo}</span>
54
+ </button>
55
+ <button class="sketch-tool" data-tool="addDevice" type="button">
56
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="4" width="20" height="14" rx="2"/><line x1="12" y1="8" x2="12" y2="14"/><line x1="9" y1="11" x2="15" y2="11"/></svg>
57
+ <span>{wUI.labelAddDevice}</span>
58
+ </button>
59
+ <button class="sketch-tool sketch-tool-danger" data-tool="clearWalls" type="button">
60
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" y1="11" x2="10" y2="17"/><line x1="14" y1="11" x2="14" y2="17"/></svg>
61
+ <span>{wUI.labelClearWalls}</span>
62
+ </button>
63
+ <button class="sketch-tool sketch-tool-danger" data-tool="clearObjects" type="button">
64
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" y1="11" x2="10" y2="17"/><line x1="14" y1="11" x2="14" y2="17"/></svg>
65
+ <span>{wUI.labelClearObjects}</span>
66
+ </button>
67
+ <button class="sketch-tool sketch-tool-danger" data-tool="clear" type="button">
68
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/><line x1="10" y1="11" x2="10" y2="17"/><line x1="14" y1="11" x2="14" y2="17"/></svg>
69
+ <span>{wUI.labelClearAll}</span>
70
+ </button>
71
+ </div>
72
+ </div>
73
+
74
+ <div class="sketch-body">
75
+ <div class="sketch-canvas-wrap" id="sketch-canvas-wrap">
76
+ <div class="sketch-world" id="sketch-world">
77
+ <svg class="sketch-svg" id="sketch-svg" viewBox="0 0 800 500" width="800" height="500">
78
+ <defs>
79
+ <pattern id="sketch-grid" width="20" height="20" patternUnits="userSpaceOnUse">
80
+ <path d="M 20 0 L 0 0 0 20" fill="none" stroke="var(--sketch-grid-color)" stroke-width="0.5" />
81
+ </pattern>
82
+ </defs>
83
+ <rect width="800" height="500" fill="url(#sketch-grid)" />
84
+ <g id="sketch-walls-layer" />
85
+ <g id="sketch-objs-layer" />
86
+ <g id="sketch-rays-layer" style="pointer-events:none" />
87
+ <g id="sketch-router-group" transform={`translate(${initialRouter.x}, ${initialRouter.y})`} style="cursor:grab">
88
+ <circle id="sketch-router-glow" cx="0" cy="0" r="28" fill="none" stroke={getVerdictColor(initialResult.verdict)} stroke-width="2" opacity="0.3" />
89
+ <rect x="-16" y="-16" width="32" height="32" rx="8" fill="var(--bg-surface)" stroke="var(--border-color)" stroke-width="1" />
90
+ <svg x="-10" y="-10" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke={getVerdictColor(initialResult.verdict)} stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
91
+ <path d="M12 20h.01" /><path d="M2 8.82a15 15 0 0 1 20 0" /><path d="M5 12.859a10 10 0 0 1 14 0" /><path d="M8.5 16.429a5 5 0 0 1 7 0" />
92
+ </svg>
93
+ <text x="0" y="28" text-anchor="middle" fill="var(--text-muted)" font-size="8" font-weight="700">{wUI.labelRouter}</text>
94
+ </g>
95
+ <line id="sketch-draw-line" x1="0" y1="0" x2="0" y2="0" stroke="#0ea5e9" stroke-width="3" stroke-dasharray="6 4" opacity="0" pointer-events="none" />
96
+ </svg>
97
+ </div>
98
+ <div class="sketch-zoom-controls">
99
+ <button class="sketch-zoom-btn" data-tool="zoomIn" type="button" title={wUI.labelZoomIn}>+</button>
100
+ <button class="sketch-zoom-btn" data-tool="zoomOut" type="button" title={wUI.labelZoomOut}>−</button>
101
+ </div>
102
+ <div class="sketch-scale-bar" id="sketch-scale-bar">
103
+ <div class="sketch-scale-track" id="sketch-scale-track">
104
+ <div class="sketch-scale-segment dark" />
105
+ <div class="sketch-scale-segment light" />
106
+ <div class="sketch-scale-segment dark" />
107
+ <div class="sketch-scale-segment light" />
108
+ <div class="sketch-scale-segment dark" />
109
+ </div>
110
+ <div class="sketch-scale-labels">
111
+ <span class="sketch-scale-label">0</span>
112
+ <span class="sketch-scale-label end">{wUI.labelScaleMeters}</span>
113
+ </div>
114
+ </div>
115
+ </div>
116
+
117
+ <div class="sketch-panel">
118
+ <div class="sketch-avg-label">{wUI.labelAverageSignal}</div>
119
+ <div class="sketch-ring" id="sketch-ring">
120
+ <svg viewBox="0 0 160 160" width="120" height="120">
121
+ <circle class="sketch-ring-bg" cx="80" cy="80" r="70" />
122
+ <circle
123
+ class="sketch-ring-fill"
124
+ id="sketch-ring-fill"
125
+ cx="80"
126
+ cy="80"
127
+ r="70"
128
+ stroke-dasharray={circumference}
129
+ stroke-dashoffset={circumference - (circumference * initialResult.strengthPercent) / 100}
130
+ stroke={getVerdictColor(initialResult.verdict)}
131
+ />
132
+ </svg>
133
+ <div class="sketch-ring-inner">
134
+ <div class="sketch-ring-pct" id="sketch-ring-pct" style={`color:${getVerdictColor(initialResult.verdict)}`}>{initialResult.strengthPercent}%</div>
135
+ <div class="sketch-ring-label">{wUI.labelSignalStrength}</div>
136
+ </div>
137
+ </div>
138
+ <div class="sketch-range"><span class="sketch-range-val" id="sketch-range-val">{initialResult.effectiveRange} {wUI.labelMeters}</span></div>
139
+ <div class="sketch-streams">
140
+ <span class="sketch-streams-title">{wUI.labelStreamingVerdict}</span>
141
+ {[
142
+ { key: '4kStreaming', label: wUI.label4kStreaming },
143
+ { key: 'onlineGaming', label: wUI.labelOnlineGaming },
144
+ { key: 'videoCalls', label: wUI.labelVideoCalls },
145
+ { key: 'basicBrowsing', label: wUI.labelBasicBrowsing },
146
+ ].map((item) => (
147
+ <div class="sketch-stream-row">
148
+ <span class="sketch-stream-name">{item.label}</span>
149
+ <span class="sketch-stream-badge" id={`sketch-badge-${item.key}`}>{initialResult.streamingVerdict[item.key]}</span>
150
+ </div>
151
+ ))}
152
+ </div>
153
+ <div class="sketch-device-panel" id="sketch-device-panel" />
154
+ <div class="sketch-tip-area" id="sketch-tip-area" />
155
+ </div>
156
+ </div>
157
+
158
+ <div class="sketch-hint" id="sketch-hint">{wUI.hintText}</div>
159
+ </div>
160
+ </div>
161
+
162
+ <script define:vars={{ ui }} is:inline>
163
+ window.__wifiUI = ui;
164
+ </script>
165
+
166
+ <script>
167
+ import { initSketch } from './sketch';
168
+ document.addEventListener('astro:page-load', initSketch);
169
+ initSketch();
170
+ </script>
@@ -0,0 +1,29 @@
1
+ import type { HomeToolEntry, ToolLocaleContent } from '../../types';
2
+ import type { WifiRangeSimulatorUI } from './ui';
3
+
4
+ export type WifiRangeSimulatorLocaleContent = ToolLocaleContent<WifiRangeSimulatorUI>;
5
+
6
+ export const wifiRangeSimulator: HomeToolEntry<WifiRangeSimulatorUI> = {
7
+ id: 'wifi-range-simulator',
8
+ icons: {
9
+ bg: 'mdi:router-wireless',
10
+ fg: 'mdi:wifi',
11
+ },
12
+ i18n: {
13
+ de: async () => (await import('./i18n/de')).content,
14
+ en: async () => (await import('./i18n/en')).content,
15
+ es: async () => (await import('./i18n/es')).content,
16
+ fr: async () => (await import('./i18n/fr')).content,
17
+ id: async () => (await import('./i18n/id')).content,
18
+ it: async () => (await import('./i18n/it')).content,
19
+ ja: async () => (await import('./i18n/ja')).content,
20
+ ko: async () => (await import('./i18n/ko')).content,
21
+ nl: async () => (await import('./i18n/nl')).content,
22
+ pl: async () => (await import('./i18n/pl')).content,
23
+ pt: async () => (await import('./i18n/pt')).content,
24
+ ru: async () => (await import('./i18n/ru')).content,
25
+ sv: async () => (await import('./i18n/sv')).content,
26
+ tr: async () => (await import('./i18n/tr')).content,
27
+ zh: async () => (await import('./i18n/zh')).content,
28
+ },
29
+ };