tera-system-ui 0.1.61 → 0.1.64

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 (248) hide show
  1. package/dist/COMPONENT_API.md +539 -0
  2. package/dist/components/brand-logo/BrandLogo.d.ts +2 -2
  3. package/dist/components/brand-logo/BrandLogo.js +1 -1
  4. package/dist/components/dialog/Dialog.svelte +1 -1
  5. package/dist/components/slider/Slider.svelte +1 -1
  6. package/dist/components/tera-ui-context/TeraUiContext.svelte +0 -2
  7. package/dist/paraglide/README.md +1 -1
  8. package/dist/paraglide/messages/_index.d.ts +7 -21
  9. package/dist/paraglide/messages/_index.js +7 -485
  10. package/dist/paraglide/messages/text_account_settings.d.ts +4 -0
  11. package/dist/paraglide/messages/text_account_settings.js +239 -0
  12. package/dist/paraglide/messages/text_calces_documentation.d.ts +4 -0
  13. package/dist/paraglide/messages/text_calces_documentation.js +239 -0
  14. package/dist/paraglide/messages/text_calces_scientific_calculator.d.ts +4 -0
  15. package/dist/paraglide/messages/text_calces_scientific_calculator.js +239 -0
  16. package/dist/paraglide/messages/text_currency_converter.d.ts +4 -0
  17. package/dist/paraglide/messages/text_currency_converter.js +239 -0
  18. package/dist/paraglide/messages/text_logout.d.ts +4 -0
  19. package/dist/paraglide/messages/text_logout.js +239 -0
  20. package/dist/paraglide/messages/text_select_language.d.ts +4 -0
  21. package/dist/paraglide/messages/text_select_language.js +239 -0
  22. package/dist/paraglide/messages/text_unit_converter.d.ts +4 -0
  23. package/dist/paraglide/messages/text_unit_converter.js +239 -0
  24. package/dist/paraglide/runtime.d.ts +1 -1
  25. package/dist/paraglide/runtime.js +5 -6
  26. package/dist/tera-i18n/dev-tools/translator/gpt-translator-i18n-message.js +130 -9
  27. package/dist/tera-i18n/dev-tools/translator/package-lock.json +14 -224
  28. package/dist/tera-i18n/dev-tools/translator/package.json +1 -1
  29. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-calculator.md +34 -0
  30. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.md +149 -0
  31. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-system.txt +1 -1
  32. package/dist/tera-i18n/projects/common/all-language-data.js +70 -13
  33. package/dist/tera-i18n/projects/cv-maker/messages/ar-AE.json +94 -0
  34. package/dist/tera-i18n/projects/cv-maker/messages/ar-EG.json +94 -0
  35. package/dist/tera-i18n/projects/cv-maker/messages/ar-IQ.json +94 -0
  36. package/dist/tera-i18n/projects/cv-maker/messages/ar-SA.json +94 -0
  37. package/dist/tera-i18n/projects/cv-maker/messages/ar-SD.json +94 -0
  38. package/dist/tera-i18n/projects/cv-maker/messages/ar-YE.json +94 -0
  39. package/dist/tera-i18n/projects/cv-maker/messages/ar.json +58 -15
  40. package/dist/tera-i18n/projects/cv-maker/messages/bg.json +57 -14
  41. package/dist/tera-i18n/projects/cv-maker/messages/bn.json +65 -22
  42. package/dist/tera-i18n/projects/cv-maker/messages/ca.json +54 -11
  43. package/dist/tera-i18n/projects/cv-maker/messages/cs.json +59 -16
  44. package/dist/tera-i18n/projects/cv-maker/messages/da.json +51 -8
  45. package/dist/tera-i18n/projects/cv-maker/messages/de.json +58 -15
  46. package/dist/tera-i18n/projects/cv-maker/messages/el.json +71 -28
  47. package/dist/tera-i18n/projects/cv-maker/messages/en-AE.json +94 -0
  48. package/dist/tera-i18n/projects/cv-maker/messages/en-AU.json +94 -0
  49. package/dist/tera-i18n/projects/cv-maker/messages/en-CA.json +51 -8
  50. package/dist/tera-i18n/projects/cv-maker/messages/en-GB.json +50 -7
  51. package/dist/tera-i18n/projects/cv-maker/messages/en-ID.json +94 -0
  52. package/dist/tera-i18n/projects/cv-maker/messages/en-IN.json +54 -11
  53. package/dist/tera-i18n/projects/cv-maker/messages/en-NZ.json +94 -0
  54. package/dist/tera-i18n/projects/cv-maker/messages/en-PH.json +94 -0
  55. package/dist/tera-i18n/projects/cv-maker/messages/en-PK.json +58 -15
  56. package/dist/tera-i18n/projects/cv-maker/messages/en-SA.json +94 -0
  57. package/dist/tera-i18n/projects/cv-maker/messages/en-US.json +51 -8
  58. package/dist/tera-i18n/projects/cv-maker/messages/en-ZA.json +52 -9
  59. package/dist/tera-i18n/projects/cv-maker/messages/en.json +45 -16
  60. package/dist/tera-i18n/projects/cv-maker/messages/es-419.json +94 -0
  61. package/dist/tera-i18n/projects/cv-maker/messages/es-AR.json +94 -0
  62. package/dist/tera-i18n/projects/cv-maker/messages/es-ES.json +94 -0
  63. package/dist/tera-i18n/projects/cv-maker/messages/es-MX.json +94 -0
  64. package/dist/tera-i18n/projects/cv-maker/messages/es.json +53 -10
  65. package/dist/tera-i18n/projects/cv-maker/messages/fi.json +52 -9
  66. package/dist/tera-i18n/projects/cv-maker/messages/fr-MA.json +94 -0
  67. package/dist/tera-i18n/projects/cv-maker/messages/fr.json +54 -11
  68. package/dist/tera-i18n/projects/cv-maker/messages/he.json +55 -12
  69. package/dist/tera-i18n/projects/cv-maker/messages/hi.json +59 -16
  70. package/dist/tera-i18n/projects/cv-maker/messages/hr.json +94 -0
  71. package/dist/tera-i18n/projects/cv-maker/messages/hu.json +63 -20
  72. package/dist/tera-i18n/projects/cv-maker/messages/id.json +60 -17
  73. package/dist/tera-i18n/projects/cv-maker/messages/it.json +53 -10
  74. package/dist/tera-i18n/projects/cv-maker/messages/ja.json +62 -19
  75. package/dist/tera-i18n/projects/cv-maker/messages/ko.json +61 -18
  76. package/dist/tera-i18n/projects/cv-maker/messages/lt.json +61 -18
  77. package/dist/tera-i18n/projects/cv-maker/messages/lv.json +61 -18
  78. package/dist/tera-i18n/projects/cv-maker/messages/ms-MY.json +60 -17
  79. package/dist/tera-i18n/projects/cv-maker/messages/ms.json +61 -18
  80. package/dist/tera-i18n/projects/cv-maker/messages/nl.json +53 -10
  81. package/dist/tera-i18n/projects/cv-maker/messages/no.json +54 -11
  82. package/dist/tera-i18n/projects/cv-maker/messages/pl.json +59 -16
  83. package/dist/tera-i18n/projects/cv-maker/messages/pt-BR.json +58 -15
  84. package/dist/tera-i18n/projects/cv-maker/messages/pt-PT.json +59 -16
  85. package/dist/tera-i18n/projects/cv-maker/messages/pt.json +66 -23
  86. package/dist/tera-i18n/projects/cv-maker/messages/ro.json +52 -9
  87. package/dist/tera-i18n/projects/cv-maker/messages/ru.json +57 -14
  88. package/dist/tera-i18n/projects/cv-maker/messages/sk.json +62 -19
  89. package/dist/tera-i18n/projects/cv-maker/messages/sl.json +57 -14
  90. package/dist/tera-i18n/projects/cv-maker/messages/sq.json +59 -16
  91. package/dist/tera-i18n/projects/cv-maker/messages/sr.json +91 -48
  92. package/dist/tera-i18n/projects/cv-maker/messages/sv.json +56 -13
  93. package/dist/tera-i18n/projects/cv-maker/messages/sw.json +62 -19
  94. package/dist/tera-i18n/projects/cv-maker/messages/ta.json +72 -29
  95. package/dist/tera-i18n/projects/cv-maker/messages/te.json +75 -32
  96. package/dist/tera-i18n/projects/cv-maker/messages/th.json +62 -19
  97. package/dist/tera-i18n/projects/cv-maker/messages/tl.json +77 -34
  98. package/dist/tera-i18n/projects/cv-maker/messages/tr.json +63 -20
  99. package/dist/tera-i18n/projects/cv-maker/messages/uk.json +63 -20
  100. package/dist/tera-i18n/projects/cv-maker/messages/vi.json +64 -21
  101. package/dist/tera-i18n/projects/cv-maker/messages/zh-CN.json +63 -20
  102. package/dist/tera-i18n/projects/cv-maker/messages/zh-TW.json +58 -15
  103. package/dist/tera-i18n/projects/cv-maker/messages/zh.json +94 -0
  104. package/dist/tera-i18n/projects/cv-maker/project.inlang/settings.json +82 -68
  105. package/dist/tera-i18n/projects/cv-maker/supported-language.js +36 -9
  106. package/dist/tera-i18n/projects/mathda/messages/en.json +4 -0
  107. package/dist/tera-i18n/projects/mathda/messages/vi.json +4 -0
  108. package/dist/tera-i18n/projects/mathda/project.inlang/settings.json +15 -0
  109. package/dist/tera-i18n/projects/mathda/supported-language.d.ts +1 -0
  110. package/dist/tera-i18n/projects/mathda/supported-language.js +4 -0
  111. package/dist/tera-i18n/projects/tera-calculator/messages/bg.json +149 -72
  112. package/dist/tera-i18n/projects/tera-calculator/messages/bn.json +149 -72
  113. package/dist/tera-i18n/projects/tera-calculator/messages/ca.json +139 -62
  114. package/dist/tera-i18n/projects/tera-calculator/messages/cs.json +132 -55
  115. package/dist/tera-i18n/projects/tera-calculator/messages/da.json +132 -55
  116. package/dist/tera-i18n/projects/tera-calculator/messages/de.json +181 -104
  117. package/dist/tera-i18n/projects/tera-calculator/messages/el.json +145 -68
  118. package/dist/tera-i18n/projects/tera-calculator/messages/en-IN.json +183 -0
  119. package/dist/tera-i18n/projects/tera-calculator/messages/en-PH.json +183 -0
  120. package/dist/tera-i18n/projects/tera-calculator/messages/en-US.json +183 -0
  121. package/dist/tera-i18n/projects/tera-calculator/messages/en.json +187 -104
  122. package/dist/tera-i18n/projects/tera-calculator/messages/es.json +181 -104
  123. package/dist/tera-i18n/projects/tera-calculator/messages/fi.json +137 -60
  124. package/dist/tera-i18n/projects/tera-calculator/messages/fr.json +180 -103
  125. package/dist/tera-i18n/projects/tera-calculator/messages/hi.json +136 -59
  126. package/dist/tera-i18n/projects/tera-calculator/messages/hu.json +141 -64
  127. package/dist/tera-i18n/projects/tera-calculator/messages/id.json +132 -55
  128. package/dist/tera-i18n/projects/tera-calculator/messages/it.json +180 -103
  129. package/dist/tera-i18n/projects/tera-calculator/messages/ja.json +136 -59
  130. package/dist/tera-i18n/projects/tera-calculator/messages/ko.json +133 -56
  131. package/dist/tera-i18n/projects/tera-calculator/messages/lt.json +140 -63
  132. package/dist/tera-i18n/projects/tera-calculator/messages/lv.json +141 -64
  133. package/dist/tera-i18n/projects/tera-calculator/messages/ms.json +139 -62
  134. package/dist/tera-i18n/projects/tera-calculator/messages/nl.json +145 -68
  135. package/dist/tera-i18n/projects/tera-calculator/messages/no.json +131 -54
  136. package/dist/tera-i18n/projects/tera-calculator/messages/pl.json +134 -57
  137. package/dist/tera-i18n/projects/tera-calculator/messages/pt.json +180 -103
  138. package/dist/tera-i18n/projects/tera-calculator/messages/ro.json +136 -59
  139. package/dist/tera-i18n/projects/tera-calculator/messages/ru.json +180 -103
  140. package/dist/tera-i18n/projects/tera-calculator/messages/sk.json +135 -58
  141. package/dist/tera-i18n/projects/tera-calculator/messages/sl.json +139 -62
  142. package/dist/tera-i18n/projects/tera-calculator/messages/sq.json +148 -71
  143. package/dist/tera-i18n/projects/tera-calculator/messages/sr.json +141 -64
  144. package/dist/tera-i18n/projects/tera-calculator/messages/sv.json +134 -57
  145. package/dist/tera-i18n/projects/tera-calculator/messages/sw.json +152 -75
  146. package/dist/tera-i18n/projects/tera-calculator/messages/ta.json +159 -82
  147. package/dist/tera-i18n/projects/tera-calculator/messages/te.json +165 -88
  148. package/dist/tera-i18n/projects/tera-calculator/messages/th.json +136 -59
  149. package/dist/tera-i18n/projects/tera-calculator/messages/tl.json +146 -69
  150. package/dist/tera-i18n/projects/tera-calculator/messages/tr.json +135 -58
  151. package/dist/tera-i18n/projects/tera-calculator/messages/uk.json +142 -65
  152. package/dist/tera-i18n/projects/tera-calculator/messages/vi.json +181 -104
  153. package/dist/tera-i18n/projects/tera-calculator/messages/zh-CN.json +129 -52
  154. package/dist/tera-i18n/projects/tera-calculator/messages/zh-TW.json +135 -58
  155. package/dist/tera-i18n/projects/tera-calculator/project.inlang/settings.json +51 -53
  156. package/dist/tera-i18n/projects/tera-calculator/supported-language.js +6 -3
  157. package/package.json +4 -3
  158. package/dist/paraglide/messages/ar.d.ts +0 -9
  159. package/dist/paraglide/messages/ar.js +0 -31
  160. package/dist/paraglide/messages/bg.d.ts +0 -9
  161. package/dist/paraglide/messages/bg.js +0 -31
  162. package/dist/paraglide/messages/bn.d.ts +0 -9
  163. package/dist/paraglide/messages/bn.js +0 -31
  164. package/dist/paraglide/messages/ca.d.ts +0 -9
  165. package/dist/paraglide/messages/ca.js +0 -31
  166. package/dist/paraglide/messages/cs.d.ts +0 -9
  167. package/dist/paraglide/messages/cs.js +0 -31
  168. package/dist/paraglide/messages/da.d.ts +0 -9
  169. package/dist/paraglide/messages/da.js +0 -31
  170. package/dist/paraglide/messages/de.d.ts +0 -9
  171. package/dist/paraglide/messages/de.js +0 -31
  172. package/dist/paraglide/messages/el.d.ts +0 -9
  173. package/dist/paraglide/messages/el.js +0 -31
  174. package/dist/paraglide/messages/en.d.ts +0 -9
  175. package/dist/paraglide/messages/en.js +0 -31
  176. package/dist/paraglide/messages/es.d.ts +0 -9
  177. package/dist/paraglide/messages/es.js +0 -31
  178. package/dist/paraglide/messages/fi.d.ts +0 -9
  179. package/dist/paraglide/messages/fi.js +0 -31
  180. package/dist/paraglide/messages/fr.d.ts +0 -9
  181. package/dist/paraglide/messages/fr.js +0 -31
  182. package/dist/paraglide/messages/he.d.ts +0 -9
  183. package/dist/paraglide/messages/he.js +0 -31
  184. package/dist/paraglide/messages/hi.d.ts +0 -9
  185. package/dist/paraglide/messages/hi.js +0 -31
  186. package/dist/paraglide/messages/hu.d.ts +0 -9
  187. package/dist/paraglide/messages/hu.js +0 -31
  188. package/dist/paraglide/messages/id.d.ts +0 -9
  189. package/dist/paraglide/messages/id.js +0 -31
  190. package/dist/paraglide/messages/it.d.ts +0 -9
  191. package/dist/paraglide/messages/it.js +0 -31
  192. package/dist/paraglide/messages/ja.d.ts +0 -9
  193. package/dist/paraglide/messages/ja.js +0 -31
  194. package/dist/paraglide/messages/ko.d.ts +0 -9
  195. package/dist/paraglide/messages/ko.js +0 -31
  196. package/dist/paraglide/messages/lt.d.ts +0 -9
  197. package/dist/paraglide/messages/lt.js +0 -31
  198. package/dist/paraglide/messages/lv.d.ts +0 -9
  199. package/dist/paraglide/messages/lv.js +0 -31
  200. package/dist/paraglide/messages/ms.d.ts +0 -9
  201. package/dist/paraglide/messages/ms.js +0 -31
  202. package/dist/paraglide/messages/nl.d.ts +0 -9
  203. package/dist/paraglide/messages/nl.js +0 -31
  204. package/dist/paraglide/messages/no.d.ts +0 -9
  205. package/dist/paraglide/messages/no.js +0 -31
  206. package/dist/paraglide/messages/pl.d.ts +0 -9
  207. package/dist/paraglide/messages/pl.js +0 -31
  208. package/dist/paraglide/messages/pt.d.ts +0 -9
  209. package/dist/paraglide/messages/pt.js +0 -31
  210. package/dist/paraglide/messages/ro.d.ts +0 -9
  211. package/dist/paraglide/messages/ro.js +0 -31
  212. package/dist/paraglide/messages/ru.d.ts +0 -9
  213. package/dist/paraglide/messages/ru.js +0 -31
  214. package/dist/paraglide/messages/sk.d.ts +0 -9
  215. package/dist/paraglide/messages/sk.js +0 -31
  216. package/dist/paraglide/messages/sl.d.ts +0 -9
  217. package/dist/paraglide/messages/sl.js +0 -31
  218. package/dist/paraglide/messages/sq.d.ts +0 -9
  219. package/dist/paraglide/messages/sq.js +0 -31
  220. package/dist/paraglide/messages/sr.d.ts +0 -9
  221. package/dist/paraglide/messages/sr.js +0 -31
  222. package/dist/paraglide/messages/sv.d.ts +0 -9
  223. package/dist/paraglide/messages/sv.js +0 -31
  224. package/dist/paraglide/messages/sw.d.ts +0 -9
  225. package/dist/paraglide/messages/sw.js +0 -31
  226. package/dist/paraglide/messages/ta.d.ts +0 -9
  227. package/dist/paraglide/messages/ta.js +0 -31
  228. package/dist/paraglide/messages/te.d.ts +0 -9
  229. package/dist/paraglide/messages/te.js +0 -31
  230. package/dist/paraglide/messages/th.d.ts +0 -9
  231. package/dist/paraglide/messages/th.js +0 -31
  232. package/dist/paraglide/messages/tl.d.ts +0 -9
  233. package/dist/paraglide/messages/tl.js +0 -31
  234. package/dist/paraglide/messages/tr.d.ts +0 -9
  235. package/dist/paraglide/messages/tr.js +0 -31
  236. package/dist/paraglide/messages/uk.d.ts +0 -9
  237. package/dist/paraglide/messages/uk.js +0 -31
  238. package/dist/paraglide/messages/vi.d.ts +0 -9
  239. package/dist/paraglide/messages/vi.js +0 -31
  240. package/dist/paraglide/messages/zh-CN.d.ts +0 -9
  241. package/dist/paraglide/messages/zh-CN.js +0 -31
  242. package/dist/paraglide/messages/zh-TW.d.ts +0 -9
  243. package/dist/paraglide/messages/zh-TW.js +0 -31
  244. package/dist/tera-i18n/dev-tools/translator/prompt/i18n-message-translate-prompt-cv-maker.txt +0 -21
  245. package/dist/tera-i18n/projects/cv-maker/project.inlang/project_id +0 -1
  246. package/dist/tera-i18n/projects/tera-calculator/messages/ar.json +0 -106
  247. package/dist/tera-i18n/projects/tera-calculator/messages/he.json +0 -106
  248. package/dist/tera-i18n/projects/tera-calculator/project.inlang/project_id +0 -1
@@ -9,7 +9,7 @@
9
9
  "version": "1.0.0",
10
10
  "dependencies": {
11
11
  "dotenv": "^16.4.5",
12
- "openai": "^4.73.0"
12
+ "openai": "^6.34.0"
13
13
  },
14
14
  "devDependencies": {
15
15
  "ts-node": "^10.9.2",
@@ -498,33 +498,13 @@
498
498
  "version": "18.19.65",
499
499
  "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.65.tgz",
500
500
  "integrity": "sha512-Ay5BZuO1UkTmVHzZJNvZKw/E+iB3GQABb6kijEz89w2JrfhNA+M/ebp18pfz9Gqe9ywhMC8AA8yC01lZq48J+Q==",
501
+ "dev": true,
501
502
  "license": "MIT",
503
+ "peer": true,
502
504
  "dependencies": {
503
505
  "undici-types": "~5.26.4"
504
506
  }
505
507
  },
506
- "node_modules/@types/node-fetch": {
507
- "version": "2.6.12",
508
- "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz",
509
- "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==",
510
- "license": "MIT",
511
- "dependencies": {
512
- "@types/node": "*",
513
- "form-data": "^4.0.0"
514
- }
515
- },
516
- "node_modules/abort-controller": {
517
- "version": "3.0.0",
518
- "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
519
- "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
520
- "license": "MIT",
521
- "dependencies": {
522
- "event-target-shim": "^5.0.0"
523
- },
524
- "engines": {
525
- "node": ">=6.5"
526
- }
527
- },
528
508
  "node_modules/acorn": {
529
509
  "version": "8.14.0",
530
510
  "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
@@ -551,18 +531,6 @@
551
531
  "node": ">=0.4.0"
552
532
  }
553
533
  },
554
- "node_modules/agentkeepalive": {
555
- "version": "4.5.0",
556
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz",
557
- "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==",
558
- "license": "MIT",
559
- "dependencies": {
560
- "humanize-ms": "^1.2.1"
561
- },
562
- "engines": {
563
- "node": ">= 8.0.0"
564
- }
565
- },
566
534
  "node_modules/arg": {
567
535
  "version": "4.1.3",
568
536
  "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
@@ -570,24 +538,6 @@
570
538
  "dev": true,
571
539
  "license": "MIT"
572
540
  },
573
- "node_modules/asynckit": {
574
- "version": "0.4.0",
575
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
576
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
577
- "license": "MIT"
578
- },
579
- "node_modules/combined-stream": {
580
- "version": "1.0.8",
581
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
582
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
583
- "license": "MIT",
584
- "dependencies": {
585
- "delayed-stream": "~1.0.0"
586
- },
587
- "engines": {
588
- "node": ">= 0.8"
589
- }
590
- },
591
541
  "node_modules/create-require": {
592
542
  "version": "1.1.1",
593
543
  "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
@@ -595,15 +545,6 @@
595
545
  "dev": true,
596
546
  "license": "MIT"
597
547
  },
598
- "node_modules/delayed-stream": {
599
- "version": "1.0.0",
600
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
601
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
602
- "license": "MIT",
603
- "engines": {
604
- "node": ">=0.4.0"
605
- }
606
- },
607
548
  "node_modules/diff": {
608
549
  "version": "4.0.2",
609
550
  "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
@@ -666,48 +607,6 @@
666
607
  "@esbuild/win32-x64": "0.23.1"
667
608
  }
668
609
  },
669
- "node_modules/event-target-shim": {
670
- "version": "5.0.1",
671
- "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
672
- "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
673
- "license": "MIT",
674
- "engines": {
675
- "node": ">=6"
676
- }
677
- },
678
- "node_modules/form-data": {
679
- "version": "4.0.1",
680
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
681
- "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
682
- "license": "MIT",
683
- "dependencies": {
684
- "asynckit": "^0.4.0",
685
- "combined-stream": "^1.0.8",
686
- "mime-types": "^2.1.12"
687
- },
688
- "engines": {
689
- "node": ">= 6"
690
- }
691
- },
692
- "node_modules/form-data-encoder": {
693
- "version": "1.7.2",
694
- "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz",
695
- "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==",
696
- "license": "MIT"
697
- },
698
- "node_modules/formdata-node": {
699
- "version": "4.4.1",
700
- "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
701
- "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
702
- "license": "MIT",
703
- "dependencies": {
704
- "node-domexception": "1.0.0",
705
- "web-streams-polyfill": "4.0.0-beta.3"
706
- },
707
- "engines": {
708
- "node": ">= 12.20"
709
- }
710
- },
711
610
  "node_modules/fsevents": {
712
611
  "version": "2.3.3",
713
612
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -736,15 +635,6 @@
736
635
  "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
737
636
  }
738
637
  },
739
- "node_modules/humanize-ms": {
740
- "version": "1.2.1",
741
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
742
- "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
743
- "license": "MIT",
744
- "dependencies": {
745
- "ms": "^2.0.0"
746
- }
747
- },
748
638
  "node_modules/make-error": {
749
639
  "version": "1.3.6",
750
640
  "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
@@ -752,93 +642,22 @@
752
642
  "dev": true,
753
643
  "license": "ISC"
754
644
  },
755
- "node_modules/mime-db": {
756
- "version": "1.52.0",
757
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
758
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
759
- "license": "MIT",
760
- "engines": {
761
- "node": ">= 0.6"
762
- }
763
- },
764
- "node_modules/mime-types": {
765
- "version": "2.1.35",
766
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
767
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
768
- "license": "MIT",
769
- "dependencies": {
770
- "mime-db": "1.52.0"
771
- },
772
- "engines": {
773
- "node": ">= 0.6"
774
- }
775
- },
776
- "node_modules/ms": {
777
- "version": "2.1.3",
778
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
779
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
780
- "license": "MIT"
781
- },
782
- "node_modules/node-domexception": {
783
- "version": "1.0.0",
784
- "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
785
- "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
786
- "funding": [
787
- {
788
- "type": "github",
789
- "url": "https://github.com/sponsors/jimmywarting"
790
- },
791
- {
792
- "type": "github",
793
- "url": "https://paypal.me/jimmywarting"
794
- }
795
- ],
796
- "license": "MIT",
797
- "engines": {
798
- "node": ">=10.5.0"
799
- }
800
- },
801
- "node_modules/node-fetch": {
802
- "version": "2.7.0",
803
- "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
804
- "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
805
- "license": "MIT",
806
- "dependencies": {
807
- "whatwg-url": "^5.0.0"
808
- },
809
- "engines": {
810
- "node": "4.x || >=6.0.0"
811
- },
812
- "peerDependencies": {
813
- "encoding": "^0.1.0"
814
- },
815
- "peerDependenciesMeta": {
816
- "encoding": {
817
- "optional": true
818
- }
819
- }
820
- },
821
645
  "node_modules/openai": {
822
- "version": "4.73.0",
823
- "resolved": "https://registry.npmjs.org/openai/-/openai-4.73.0.tgz",
824
- "integrity": "sha512-NZstV77w3CEol9KQTRBRQ15+Sw6nxVTicAULSjYO4wn9E5gw72Mtp3fAVaBFXyyVPws4241YmFG6ya4L8v03tA==",
646
+ "version": "6.34.0",
647
+ "resolved": "https://registry.npmjs.org/openai/-/openai-6.34.0.tgz",
648
+ "integrity": "sha512-yEr2jdGf4tVFYG6ohmr3pF6VJuveP0EA/sS8TBx+4Eq5NT10alu5zg2dmxMXMgqpihRDQlFGpRt2XwsGj+Fyxw==",
825
649
  "license": "Apache-2.0",
826
- "dependencies": {
827
- "@types/node": "^18.11.18",
828
- "@types/node-fetch": "^2.6.4",
829
- "abort-controller": "^3.0.0",
830
- "agentkeepalive": "^4.2.1",
831
- "form-data-encoder": "1.7.2",
832
- "formdata-node": "^4.3.2",
833
- "node-fetch": "^2.6.7"
834
- },
835
650
  "bin": {
836
651
  "openai": "bin/cli"
837
652
  },
838
653
  "peerDependencies": {
839
- "zod": "^3.23.8"
654
+ "ws": "^8.18.0",
655
+ "zod": "^3.25 || ^4.0"
840
656
  },
841
657
  "peerDependenciesMeta": {
658
+ "ws": {
659
+ "optional": true
660
+ },
842
661
  "zod": {
843
662
  "optional": true
844
663
  }
@@ -854,12 +673,6 @@
854
673
  "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
855
674
  }
856
675
  },
857
- "node_modules/tr46": {
858
- "version": "0.0.3",
859
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
860
- "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
861
- "license": "MIT"
862
- },
863
676
  "node_modules/ts-node": {
864
677
  "version": "10.9.2",
865
678
  "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
@@ -942,7 +755,9 @@
942
755
  "version": "5.26.5",
943
756
  "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
944
757
  "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
945
- "license": "MIT"
758
+ "dev": true,
759
+ "license": "MIT",
760
+ "peer": true
946
761
  },
947
762
  "node_modules/v8-compile-cache-lib": {
948
763
  "version": "3.0.1",
@@ -951,31 +766,6 @@
951
766
  "dev": true,
952
767
  "license": "MIT"
953
768
  },
954
- "node_modules/web-streams-polyfill": {
955
- "version": "4.0.0-beta.3",
956
- "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
957
- "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
958
- "license": "MIT",
959
- "engines": {
960
- "node": ">= 14"
961
- }
962
- },
963
- "node_modules/webidl-conversions": {
964
- "version": "3.0.1",
965
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
966
- "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
967
- "license": "BSD-2-Clause"
968
- },
969
- "node_modules/whatwg-url": {
970
- "version": "5.0.0",
971
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
972
- "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
973
- "license": "MIT",
974
- "dependencies": {
975
- "tr46": "~0.0.3",
976
- "webidl-conversions": "^3.0.0"
977
- }
978
- },
979
769
  "node_modules/yn": {
980
770
  "version": "3.1.1",
981
771
  "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
@@ -10,7 +10,7 @@
10
10
  "private": true,
11
11
  "dependencies": {
12
12
  "dotenv": "^16.4.5",
13
- "openai": "^4.73.0"
13
+ "openai": "^6.34.0"
14
14
  },
15
15
  "devDependencies": {
16
16
  "ts-node": "^10.9.2",
@@ -0,0 +1,34 @@
1
+ ### 1. APP CONTEXT
2
+ This is a professional-grade, cross-platform Scientific Calculator used by students, engineers, and mathematicians. It features advanced mathematical computations, matrix operations, unit conversions, variable tracking, and an "AI Scanner" (OCR) that allows users to take photos of math problems to solve them.
3
+
4
+ The tone of the translation should be professional, concise, and UI-friendly (keep strings short so they fit on mobile screens).
5
+
6
+ ### 2. STRICT FORMATTING RULES
7
+
8
+ - Translate only JSON values — do not modify or translate JSON keys.
9
+
10
+ - Preserve JSON structure, punctuation, and casing.
11
+
12
+ - DO NOT translate, modify, or remove any placeholder variables wrapped in curly braces (e.g., `{size}`, `{keyName}`, `{symbol}`, `{text}`, `{key}`). These must remain exactly as they are in the translated string.
13
+
14
+ - Maintain the original capitalization and punctuation where appropriate for UI elements (e.g., Title Case for buttons, Sentence case for descriptions).
15
+
16
+ - Output valid JSON only, without any markdown, explanations, or extra text.
17
+
18
+ ### 3. GLOSSARY & DOMAIN KNOWLEDGE (CRITICAL)
19
+
20
+ Please use standard, widely accepted mathematical terminology in [TARGET LANGUAGE] for the following concepts:
21
+ - "Matrix" / "Matrix dimensions": Refers to mathematical matrices (arrays of numbers arranged in rows and columns), NOT the movie or a general mold.
22
+ - "Implied multiplication": Refers to algebraic conventions where the multiplication sign is omitted (e.g., evaluating $2x$ or $2(3+4)$).
23
+ - "Prime Factor": The prime numbers that divide an integer exactly.
24
+ - "Repeated Decimal": A decimal number that has digits that repeat infinitely (e.g., $0.333...$).
25
+ - "Mixed Fraction": A whole number and a proper fraction combined (e.g., $1 \frac{1}{2}$).
26
+ - "Scientific Notation": A way of writing very large or very small numbers (e.g., $1.23 \times 10^4$).
27
+ - "Indian Style Digit Grouping": Refers to the South Asian numbering system (Lakhs and Crores) where commas are placed like this: $12,34,567$.
28
+ - "Decimal separator" / "Thousands separator": Refers to the punctuation marks used to format numbers (like a period `.` or comma `,`).
29
+ - "AI Scanner": A feature using the device camera or image upload to scan and read mathematical expressions.
30
+
31
+ ### 4. JSON PAYLOAD TO TRANSLATE
32
+ Please translate the following JSON into [TARGET LANGUAGE]:
33
+
34
+ {content}
@@ -0,0 +1,149 @@
1
+ You are a senior professional translator and localization specialist for CVs, resumes, cover letters, and job application documents.
2
+
3
+ Your task is to translate and localize the provided JSON content into {language} ({languageCode}) for use inside a CV/resume writer.
4
+
5
+ Important:
6
+ The translated text will appear directly in exported CVs, resumes, and cover letters, not only inside an app interface. Therefore, the wording must sound natural, polished, and professionally acceptable in real CV/resume documents used by native speakers in the target locale.
7
+
8
+ Target:
9
+ - Language: {language}
10
+ - Language/locale code: {languageCode}
11
+ - Target country/region: {countryOrRegion}
12
+
13
+ If the language is used in multiple countries or regions, follow the CV/resume conventions of {countryOrRegion}. Do not use generic translations if local professional document terminology is different.
14
+
15
+ Your goal:
16
+ Produce short, natural, professional CV/resume labels, section headings, field names, and short document phrases that match the standard style used in real resumes, CVs, cover letters, job applications, and career documents in {countryOrRegion}.
17
+
18
+ This is localization, not literal translation.
19
+
20
+ Use the following reference meanings to understand each key.
21
+ The descriptions are only for context. Do not include these descriptions in the output.
22
+
23
+ Reference context by key:
24
+ {
25
+ "text_cv_section_name_summary": "Summary (short professional overview at the top of a CV/resume)",
26
+ "text_cv_section_name_objective": "Objective (career goal or desired job position)",
27
+ "text_cv_section_name_experience": "Experience (work history and roles)",
28
+ "text_cv_section_name_education": "Education (academic background and degrees)",
29
+ "text_cv_section_name_projects": "Projects (personal, academic, or professional work examples)",
30
+ "text_cv_section_name_skills": "Skills (professional, technical, or soft skills)",
31
+ "text_cv_section_name_certifications": "Certifications (professional credentials, certificates, or training credentials)",
32
+ "text_cv_section_name_awards": "Awards (honors, prizes, or recognitions)",
33
+ "text_cv_section_name_interests": "Interests (personal or professional interests/hobbies)",
34
+ "text_cv_section_name_volunteering": "Volunteering (unpaid work, volunteer experience, or community service)",
35
+ "text_cv_section_name_publications": "Publications (articles, research papers, books, or published work)",
36
+ "text_cv_section_name_achievements": "Achievements (notable accomplishments, successes, or measurable results)",
37
+ "text_cv_section_name_qrcode": "QR Code (code linking to online profile, portfolio, or CV)",
38
+ "text_cv_section_name_activities": "Activities (extracurricular, academic, professional, or additional activities)",
39
+ "text_cv_section_name_languages": "Languages (spoken or written language abilities)",
40
+ "text_cv_section_name_references": "References (people who can provide recommendations)",
41
+ "text_cv_section_name_profiles": "Profiles (professional or social profile links such as LinkedIn)",
42
+ "text_cv_section_name_details": "Details (additional personal or career-related information)",
43
+ "text_cv_section_name_personal_info": "Personal Details (basic contact and identity information)",
44
+ "text_cv_section_name_links": "Links (websites, portfolio links, or online profiles such as Facebook, LinkedIn, GitHub, YouTube, etc.)",
45
+ "text_cv_section_name_licenses": "Licenses (official authorizations, permits, or professional licenses)",
46
+ "text_cv_section_name_driver_licenses": "Driver Licenses (driving permit or driving licence information)",
47
+ "text_cv_section_name_declaration": "Declaration (statement confirming that the CV/resume information is accurate)",
48
+ "text_cv_property_location": "Location (city, region, country, or general address area)",
49
+ "text_cv_property_address": "Address (home address, mailing address, or contact address)",
50
+ "text_cv_property_phone": "Phone (contact phone number)",
51
+ "text_cv_property_email": "Email (contact email address)",
52
+ "text_cv_property_date_of_birth": "Date of Birth (birth date information)",
53
+ "text_cv_property_place_of_birth": "Place of Birth (birth city, region, or country)",
54
+ "text_cv_property_nationality": "Nationality (citizenship or country of origin)",
55
+ "text_cv_property_website": "Website (personal website, portfolio, or professional site)",
56
+ "text_cv_property_linkedin": "LinkedIn (LinkedIn profile link)",
57
+ "text_cv_property_gender": "Gender (male, female, or other)",
58
+ "text_cv_property_marital_status": "Marital Status (relationship status)",
59
+ "text_language_proficiency_1": "Beginner (basic understanding of the language)",
60
+ "text_language_proficiency_2": "Elementary (simple communication skills)",
61
+ "text_language_proficiency_3": "Intermediate (conversational level)",
62
+ "text_language_proficiency_4": "Advanced (high proficiency in complex contexts)",
63
+ "text_language_proficiency_5": "Fluent (near-native or fully professional proficiency)",
64
+ "text_skill_level_1": "Basic (entry-level ability)",
65
+ "text_skill_level_2": "Intermediate (working knowledge)",
66
+ "text_skill_level_3": "Proficient (strong and reliable skill)",
67
+ "text_skill_level_4": "Advanced (highly skilled and experienced)",
68
+ "text_skill_level_5": "Expert (specialized or top-level mastery)",
69
+ "text_references_available_upon_request": "Information available upon request (used when references are not listed directly)",
70
+ "text_brand_watermark": "Powered by {brand} (branding or app name placeholder)",
71
+ "text_to_recipient_in_cover_letter": "To (recipient line in a cover letter)",
72
+ "text_present_in_resume_date": "Present (indicates current employment, education, project, or activity)",
73
+ "text_send_from_in_cover_letter": "From (sender line in a cover letter)"
74
+ }
75
+
76
+ Localization rules:
77
+
78
+ 1. Translate JSON values only.
79
+ - Do not translate, rename, remove, or add JSON keys.
80
+ - Keep the same JSON structure as the input.
81
+
82
+ 2. Translate for final CV/resume document usage.
83
+ - The values should look appropriate when printed in a professional CV, resume, or cover letter.
84
+ - Prefer document-style wording over app-menu wording.
85
+ - Use headings and labels commonly found in real local CV/resume templates.
86
+
87
+ 3. Follow local CV/resume conventions.
88
+ - Use the standard terminology used by job seekers, recruiters, HR platforms, and resume templates in {countryOrRegion}.
89
+ - If {language} has regional differences, prioritize the target region.
90
+ - For example, choose the locally preferred equivalent of terms like “Work Experience,” “Professional Summary,” “Personal Details,” “References,” “Licences/Licenses,” and “Present.”
91
+
92
+ 4. Do not translate literally when it sounds unnatural.
93
+ - Choose the term a native professional would actually use on a CV/resume.
94
+ - Avoid dictionary-like translations.
95
+ - Avoid overly long or explanatory phrases.
96
+
97
+ 5. Keep translations concise.
98
+ - Most section names and field labels should be short, usually 1–4 words.
99
+ - Do not include explanations, examples, or descriptions.
100
+ - Do not include text from the reference descriptions.
101
+
102
+ 6. Use a professional and neutral tone.
103
+ - Avoid slang, casual wording, marketing language, or overly decorative wording.
104
+ - Use inclusive and neutral language where natural in the target locale.
105
+
106
+ 7. Apply natural capitalization for the target locale.
107
+ - Do not force English Title Case if the target language normally uses sentence case.
108
+ - Use the capitalization style commonly seen in professional CV/resume headings in {countryOrRegion}.
109
+
110
+ 8. Preserve placeholders and protected names.
111
+ - Do not translate or modify anything inside curly braces, such as {brand}.
112
+ - Keep placeholders exactly as provided.
113
+ - Preserve brand names such as LinkedIn, GitHub, Facebook, and YouTube.
114
+ - Preserve common acronyms such as QR, CV, URL, or PDF unless the target locale has a standard localized form.
115
+
116
+ 9. Handle sensitive personal fields accurately.
117
+ - Translate labels such as Gender, Marital Status, Nationality, Date of Birth, and Place of Birth neutrally and professionally.
118
+ - Do not remove or change their meaning, even if these fields are less common in some countries.
119
+ - Use the conventional label if such fields appear in local CV/resume formats.
120
+
121
+ 10. Disambiguate using the key and context.
122
+ - “Present” means current job, education, project, or activity date.
123
+ - “References” means people who can recommend the candidate, not citations.
124
+ - “Profiles” means online/professional profiles, not personality profiles.
125
+ - “Declaration” means a CV/resume accuracy statement.
126
+ - “Objective” means a career objective, not a general goal.
127
+ - “Summary” means a professional profile/summary at the top of the CV/resume.
128
+
129
+ 11. Language proficiency and skill levels:
130
+ - Use level names that sound natural in CVs/resumes in the target locale.
131
+ - If the locale commonly uses CEFR-style language levels, do not invent CEFR levels unless the source explicitly gives them.
132
+ - Keep the relative meaning from lowest to highest.
133
+
134
+ 12. Output valid JSON only.
135
+ - Use double quotes.
136
+ - Escape characters where required.
137
+ - Do not output markdown, comments, explanations, or extra text.
138
+ - If a value is null, empty, numeric, or boolean, leave it unchanged unless it is clearly intended to be translated text.
139
+
140
+ Final quality check before responding:
141
+ - Does every translated value sound natural on an actual CV/resume or cover letter in {countryOrRegion}?
142
+ - Are the terms standard for local job applications and career documents?
143
+ - Are all keys unchanged?
144
+ - Are all placeholders unchanged?
145
+ - Is the JSON valid?
146
+ - Is the response JSON only?
147
+
148
+ Content to translate:
149
+ {content}
@@ -1 +1 @@
1
- You are ChatGPT-4, a high-precision translation engine designed for JSON translation tasks. Your job is to accurately translate text values from one language to another while preserving the JSON structure. You must not alter JSON keys or any text enclosed in curly braces {}. Instead, use those placeholders as context to ensure a culturally and contextually appropriate translation. Maintain formatting, punctuation, and special characters exactly as they appear in the source. Respond only with the translated JSON, without any additional commentary.
1
+ You are a high-precision translation engine designed for JSON translation tasks. Your job is to accurately translate text values from one language to another while preserving the JSON structure. You must not alter JSON keys or any text enclosed in curly braces {}. Instead, use those placeholders as context to ensure a culturally and contextually appropriate translation. Maintain formatting, punctuation, and special characters exactly as they appear in the source. Respond only with the translated JSON, without any additional commentary.
@@ -1,26 +1,38 @@
1
+ /**
2
+ * function getLanguageName(locale: string): string {
3
+ * try {
4
+ * const displayNames = new Intl.DisplayNames([locale], {type: 'language'});
5
+ * const name = displayNames.of(locale);
6
+ * return name ? name.charAt(0).toUpperCase() + name.slice(1) : locale;
7
+ * } catch {
8
+ * return locale;
9
+ * }
10
+ * }
11
+ */
1
12
  export const ALL_LANGUAGE_LIST = [
2
13
  { code: 'ar', name: 'Arabic', flag: 'saudi arabia', label: 'العربية' },
3
14
  { code: 'bg', name: 'Bulgarian', flag: 'bulgaria', label: 'Български' },
4
- { code: 'bn', name: 'Bengali', flag: 'bangladesh', label: 'বাংলা' },
15
+ { code: 'bn', name: 'Bangla', flag: 'bangladesh', label: 'বাংলা' },
5
16
  { code: 'ca', name: 'Catalan', flag: 'catalonia', label: 'Català' },
6
17
  { code: 'cs', name: 'Czech', flag: 'czech republic', label: 'Čeština' },
7
18
  { code: 'da', name: 'Danish', flag: 'denmark', label: 'Dansk' },
8
19
  { code: 'de', name: 'German', flag: 'germany', label: 'Deutsch' },
9
20
  { code: 'el', name: 'Greek', flag: 'greece', label: 'Ελληνικά' },
10
- { code: 'en', name: 'English', flag: 'united states', label: 'English' },
21
+ { code: 'en', name: 'English', flag: 'united kingdom', label: 'English' },
11
22
  { code: 'es', name: 'Spanish', flag: 'spain', label: 'Español' },
12
23
  { code: 'fi', name: 'Finnish', flag: 'finland', label: 'Suomi' },
13
24
  { code: 'fr', name: 'French', flag: 'france', label: 'Français' },
14
25
  { code: 'he', name: 'Hebrew', flag: 'israel', label: 'עברית' },
15
26
  { code: 'hi', name: 'Hindi', flag: 'india', label: 'हिन्दी' },
27
+ { code: 'hr', name: 'Croatian', flag: 'croatia', label: 'Hrvatski' },
16
28
  { code: 'hu', name: 'Hungarian', flag: 'hungary', label: 'Magyar' },
17
- { code: 'id', name: 'Indonesian', flag: 'indonesia', label: 'Bahasa Indonesia' },
29
+ { code: 'id', name: 'Indonesian', flag: 'indonesia', label: 'Indonesia' },
18
30
  { code: 'it', name: 'Italian', flag: 'italy', label: 'Italiano' },
19
31
  { code: 'ja', name: 'Japanese', flag: 'japan', label: '日本語' },
20
32
  { code: 'ko', name: 'Korean', flag: 'south korea', label: '한국어' },
21
33
  { code: 'lt', name: 'Lithuanian', flag: 'lithuania', label: 'Lietuvių' },
22
34
  { code: 'lv', name: 'Latvian', flag: 'latvia', label: 'Latviešu' },
23
- { code: 'ms', name: 'Malay', flag: 'malaysia', label: 'Bahasa Melayu' },
35
+ { code: 'ms', name: 'Malay', flag: 'malaysia', label: 'Melayu' },
24
36
  { code: 'nl', name: 'Dutch', flag: 'netherlands', label: 'Nederlands' },
25
37
  { code: 'no', name: 'Norwegian', flag: 'norway', label: 'Norsk' },
26
38
  { code: 'pl', name: 'Polish', flag: 'poland', label: 'Polski' },
@@ -36,21 +48,39 @@ export const ALL_LANGUAGE_LIST = [
36
48
  { code: 'ta', name: 'Tamil', flag: 'sri lanka', label: 'தமிழ்' },
37
49
  { code: 'te', name: 'Telugu', flag: 'india', label: 'తెలుగు' },
38
50
  { code: 'th', name: 'Thai', flag: 'thailand', label: 'ไทย' },
39
- { code: 'tl', name: 'Tagalog', flag: 'philippines', label: 'Tagalog' },
51
+ { code: 'tl', name: 'Filipino', flag: 'philippines', label: 'Filipino' },
52
+ { code: 'en-PH', name: 'English (Philippines)', flag: 'philippines', label: 'English (Philippines)' },
40
53
  { code: 'tr', name: 'Turkish', flag: 'turkey', label: 'Türkçe' },
41
54
  { code: 'uk', name: 'Ukrainian', flag: 'ukraine', label: 'Українська' },
42
55
  { code: 'vi', name: 'Vietnamese', flag: 'vietnam', label: 'Tiếng Việt' },
43
- { code: 'zh-CN', name: 'Chinese (Simplified)', flag: 'china', label: '简体中文' },
44
- { code: 'zh-TW', name: 'Chinese (Traditional)', flag: 'taiwan', label: '繁體中文' },
45
- { code: 'en-US', name: 'English (United States)', flag: 'united states', label: 'English (United States)' },
46
- { code: 'en-GB', name: 'English (United Kingdom)', flag: 'united kingdom', label: 'English (United Kingdom)' },
56
+ { code: 'zh-CN', name: 'Chinese (China)', flag: 'china', label: '中文(中国)' },
57
+ { code: 'zh-TW', name: 'Chinese (Taiwan)', flag: 'taiwan', label: '中文(台灣)' },
58
+ { code: 'en-US', name: 'American English', flag: 'united states', label: 'American English' },
59
+ { code: 'en-AU', name: 'Australian English', flag: 'australia', label: 'Australian English' },
60
+ { code: 'en-GB', name: 'British English', flag: 'united kingdom', label: 'British English' },
47
61
  { code: 'en-ZA', name: 'English (South Africa)', flag: 'south africa', label: 'English (South Africa)' },
48
62
  { code: 'en-IN', name: 'English (India)', flag: 'india', label: 'English (India)' },
49
63
  { code: 'en-PK', name: 'English (Pakistan)', flag: 'pakistan', label: 'English (Pakistan)' },
50
- { code: 'en-CA', name: 'English (Canada)', flag: 'canada', label: 'English (Canada)' },
51
- { code: 'ms-MY', name: 'Malay (Malaysia)', flag: 'malaysia', label: 'Malay (Malaysia)' },
52
- { code: 'pt-BR', name: 'Portuguese (Brazil)', flag: 'brazil', label: 'Português (Brasil)' },
53
- { code: 'pt-PT', name: 'Portuguese (Portugal)', flag: 'portugal', label: 'Português (Portugal)' },
64
+ { code: 'en-CA', name: 'Canadian English', flag: 'canada', label: 'Canadian English' },
65
+ { code: 'ms-MY', name: 'Malay (Malaysia)', flag: 'malaysia', label: 'Melayu (Malaysia)' },
66
+ { code: 'pt-BR', name: 'Brazilian Portuguese', flag: 'brazil', label: 'Português (Brasil)' },
67
+ { code: 'pt-PT', name: 'European Portuguese', flag: 'portugal', label: 'Português europeu' },
68
+ { code: 'zh', name: 'Chinese', flag: 'china', label: '中文' },
69
+ { code: 'en-NZ', name: 'English (New Zealand)', flag: 'new zealand', label: 'English (New Zealand)' },
70
+ { code: 'es-419', name: 'Latin American Spanish', flag: 'mexico', label: 'Español latinoamericano' },
71
+ { code: 'es-ES', name: 'European Spanish', flag: 'spain', label: 'Español de España' },
72
+ { code: 'en-AE', name: 'English (United Arab Emirates)', flag: 'united arab emirates', label: 'English (United Arab Emirates)' },
73
+ { code: 'en-SA', name: 'English (Saudi Arabia)', flag: 'saudi arabia', label: 'English (Saudi Arabia)' },
74
+ { code: 'en-ID', name: 'English (Indonesia)', flag: 'indonesia', label: 'English (Indonesia)' },
75
+ { code: 'ar-EG', name: 'Arabic (Egypt)', flag: 'egypt', label: 'العربية (مصر)' },
76
+ { code: 'ar-SA', name: 'Arabic (Saudi Arabia)', flag: 'saudi arabia', label: 'العربية (المملكة العربية السعودية)' },
77
+ { code: 'ar-AE', name: 'Arabic (United Arab Emirates)', flag: 'united arab emirates', label: 'العربية (الإمارات العربية المتحدة)' },
78
+ { code: 'ar-YE', name: 'Arabic (Yemen)', flag: 'yemen', label: 'العربية (اليمن)' },
79
+ { code: 'ar-IQ', name: 'Arabic (Iraq)', flag: 'iraq', label: 'العربية (العراق)' },
80
+ { code: 'ar-SD', name: 'Arabic (Sudan)', flag: 'sudan', label: 'العربية (السودان)' },
81
+ { code: 'es-AR', name: 'Spanish (Argentina)', flag: 'argentina', label: 'Español (Argentina)' },
82
+ { code: 'es-MX', name: 'Mexican Spanish', flag: 'mexico', label: 'Español de México' },
83
+ { code: 'fr-MA', name: 'French (Morocco)', flag: 'morocco', label: 'Français (Maroc)' },
54
84
  ];
55
85
  export const RTL_LANGUAGES = ['ar', 'he'];
56
86
  export const LANGUAGE_TO_FONT_SUBSETS = {
@@ -82,3 +112,30 @@ export function getLanguagesData(langCodes) {
82
112
  return language;
83
113
  });
84
114
  }
115
+ // function main() {
116
+ // function getLanguageName(locale: string, baseLang: string): string {
117
+ // try {
118
+ // const displayNames = new Intl.DisplayNames([baseLang], {type: 'language'});
119
+ // const name = displayNames.of(locale);
120
+ // return name ? name.charAt(0).toUpperCase() + name.slice(1) : locale;
121
+ // } catch {
122
+ // return locale;
123
+ // }
124
+ // }
125
+ //
126
+ // ALL_LANGUAGE_LIST.forEach(lang => {
127
+ // // console.log(`${lang.code}: ${getLanguageName(lang.code, 'en')}`)
128
+ // console.log(`${getLanguageName(lang.code, 'en')}`)
129
+ // // console.log(`${getLanguageName(lang.code, lang.code)}`)
130
+ // })
131
+ // }
132
+ // function main() {
133
+ // // check missing lang in ALL_LANGUAGE_LIST compare to SupportedLanguage
134
+ // SupportedLanguage.forEach(lang => {
135
+ // let language = ALL_LANGUAGE_LIST.find(l => l.code === lang);
136
+ // if (!language) {
137
+ // console.error('Missing language data for ' + lang)
138
+ // }
139
+ // })
140
+ // }
141
+ // main()