@taon-dev/i18n 0.0.1 → 0.0.6

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 (276) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +2 -2
  2. package/bin/start.js +1 -1
  3. package/browser/fesm2022/i18n-browser.mjs +1441 -406
  4. package/browser/fesm2022/i18n-browser.mjs.map +1 -1
  5. package/browser/package.json +1 -1
  6. package/browser/types/i18n-browser.d.ts +146 -305
  7. package/browser-prod/fesm2022/i18n-browser-prod.mjs +1429 -405
  8. package/browser-prod/fesm2022/i18n-browser-prod.mjs.map +1 -1
  9. package/browser-prod/package.json +1 -1
  10. package/browser-prod/types/i18n-browser-prod.d.ts +140 -305
  11. package/browser-prod.split-namespaces.json +26 -2
  12. package/html/app/main-page/main-page.container.html +4 -0
  13. package/html/assets/generated/pwa/html-pwa.html +53 -53
  14. package/lib/build-info._auto-generated_.d.ts +1 -1
  15. package/lib/build-info._auto-generated_.js +1 -1
  16. package/lib/index._auto-generated_.d.ts +9 -14
  17. package/lib/index._auto-generated_.js +9 -14
  18. package/lib/index._auto-generated_.js.map +1 -1
  19. package/lib/package.json +1 -1
  20. package/lib/start-cli.js +6 -4
  21. package/lib/start-cli.js.map +1 -1
  22. package/lib/translate.directive.d.ts +15 -0
  23. package/lib/translate.pipe.d.ts +10 -0
  24. package/lib/translate.service.d.ts +13 -0
  25. package/lib/translation-manager.d.ts +33 -0
  26. package/lib/translation-manager.js +119 -0
  27. package/lib/translation-manager.js.map +1 -0
  28. package/lib/translation.d.ts +44 -0
  29. package/lib/translation.js +253 -0
  30. package/lib/translation.js.map +1 -0
  31. package/lib/translation.models.d.ts +25 -0
  32. package/lib/{features/types.js → translation.models.js} +1 -1
  33. package/lib/translation.models.js.map +1 -0
  34. package/lib/utils-i18n-extract-gettext-translate-from-html.d.ts +4 -0
  35. package/lib/utils-i18n-extract-gettext-translate-from-html.js +465 -0
  36. package/lib/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
  37. package/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
  38. package/lib/utils-i18n-extract-gettext-translate-from-html.test.js +282 -0
  39. package/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
  40. package/lib/utils-i18n-html.d.ts +5 -0
  41. package/lib/utils-i18n-html.js +120 -0
  42. package/lib/utils-i18n-html.js.map +1 -0
  43. package/lib/utils-i18n-html.test.d.ts +1 -0
  44. package/lib/utils-i18n-html.test.js +82 -0
  45. package/lib/utils-i18n-html.test.js.map +1 -0
  46. package/lib/utils-po-file.d.ts +8 -0
  47. package/lib/utils-po-file.js +245 -0
  48. package/lib/utils-po-file.js.map +1 -0
  49. package/lib/utils-po-file.test.d.ts +1 -0
  50. package/lib/utils-po-file.test.js +239 -0
  51. package/lib/utils-po-file.test.js.map +1 -0
  52. package/lib-esm/app/main-page/main-page.active.context.d.ts +19 -0
  53. package/lib-esm/app/main-page/main-page.active.context.js +19 -0
  54. package/lib-esm/app/main-page/main-page.active.context.js.map +1 -0
  55. package/lib-esm/app.electron.d.ts +1 -1
  56. package/lib-esm/app.electron.js +1 -1
  57. package/lib-esm/app.hosts.d.ts +54 -2
  58. package/lib-esm/app.hosts.js +64 -4
  59. package/lib-esm/app.hosts.js.map +1 -1
  60. package/lib-esm/app.js +9 -9
  61. package/lib-esm/app.js.map +1 -1
  62. package/lib-esm/lib/build-info._auto-generated_.d.ts +1 -1
  63. package/lib-esm/lib/build-info._auto-generated_.js +1 -1
  64. package/lib-esm/lib/index._auto-generated_.d.ts +6 -14
  65. package/lib-esm/lib/index._auto-generated_.js +9 -14
  66. package/lib-esm/lib/index._auto-generated_.js.map +1 -1
  67. package/lib-esm/lib/start-cli.js +6 -4
  68. package/lib-esm/lib/start-cli.js.map +1 -1
  69. package/lib-esm/lib/translation-manager.d.ts +33 -0
  70. package/lib-esm/lib/translation-manager.js +115 -0
  71. package/lib-esm/lib/translation-manager.js.map +1 -0
  72. package/lib-esm/lib/translation.d.ts +43 -0
  73. package/lib-esm/lib/translation.js +249 -0
  74. package/lib-esm/lib/translation.js.map +1 -0
  75. package/lib-esm/lib/translation.models.d.ts +25 -0
  76. package/lib-esm/lib/translation.models.js +2 -0
  77. package/lib-esm/lib/translation.models.js.map +1 -0
  78. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.d.ts +4 -0
  79. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js +462 -0
  80. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
  81. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
  82. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js +280 -0
  83. package/lib-esm/lib/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
  84. package/lib-esm/lib/utils-i18n-html.d.ts +5 -0
  85. package/lib-esm/lib/utils-i18n-html.js +117 -0
  86. package/lib-esm/lib/utils-i18n-html.js.map +1 -0
  87. package/lib-esm/lib/utils-i18n-html.test.d.ts +1 -0
  88. package/lib-esm/lib/utils-i18n-html.test.js +80 -0
  89. package/lib-esm/lib/utils-i18n-html.test.js.map +1 -0
  90. package/lib-esm/lib/utils-po-file.d.ts +8 -0
  91. package/lib-esm/lib/utils-po-file.js +242 -0
  92. package/lib-esm/lib/utils-po-file.js.map +1 -0
  93. package/lib-esm/lib/utils-po-file.test.d.ts +1 -0
  94. package/lib-esm/lib/utils-po-file.test.js +237 -0
  95. package/lib-esm/lib/utils-po-file.test.js.map +1 -0
  96. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  97. package/lib-prod/build-info._auto-generated_.js +1 -1
  98. package/lib-prod/index._auto-generated_.d.ts +6 -14
  99. package/lib-prod/index._auto-generated_.js +9 -14
  100. package/lib-prod/index._auto-generated_.js.map +1 -1
  101. package/lib-prod/package.json +1 -1
  102. package/lib-prod/start-cli.js +6 -4
  103. package/lib-prod/start-cli.js.map +1 -1
  104. package/lib-prod/translation-manager.d.ts +33 -0
  105. package/lib-prod/translation-manager.js +115 -0
  106. package/lib-prod/translation-manager.js.map +1 -0
  107. package/lib-prod/translation.d.ts +43 -0
  108. package/lib-prod/translation.js +249 -0
  109. package/lib-prod/translation.js.map +1 -0
  110. package/lib-prod/translation.models.d.ts +25 -0
  111. package/lib-prod/translation.models.js +2 -0
  112. package/lib-prod/translation.models.js.map +1 -0
  113. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.d.ts +2 -0
  114. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.js +460 -0
  115. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.js.map +1 -0
  116. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.d.ts +1 -0
  117. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js +280 -0
  118. package/lib-prod/utils-i18n-extract-gettext-translate-from-html.test.js.map +1 -0
  119. package/lib-prod/utils-i18n-html.d.ts +3 -0
  120. package/lib-prod/utils-i18n-html.js +114 -0
  121. package/lib-prod/utils-i18n-html.js.map +1 -0
  122. package/lib-prod/utils-i18n-html.test.d.ts +1 -0
  123. package/lib-prod/utils-i18n-html.test.js +80 -0
  124. package/lib-prod/utils-i18n-html.test.js.map +1 -0
  125. package/lib-prod/utils-po-file.d.ts +6 -0
  126. package/lib-prod/utils-po-file.js +236 -0
  127. package/lib-prod/utils-po-file.js.map +1 -0
  128. package/lib-prod/utils-po-file.test.d.ts +1 -0
  129. package/lib-prod/utils-po-file.test.js +237 -0
  130. package/lib-prod/utils-po-file.test.js.map +1 -0
  131. package/lib-prod.split-namespaces.json +26 -2
  132. package/package.json +4 -2
  133. package/scss/app/main-page/main-page.container.scss +3 -0
  134. package/websql/fesm2022/i18n-websql.mjs +1441 -406
  135. package/websql/fesm2022/i18n-websql.mjs.map +1 -1
  136. package/websql/package.json +1 -1
  137. package/websql/types/i18n-websql.d.ts +146 -305
  138. package/websql-prod/fesm2022/i18n-websql-prod.mjs +1429 -405
  139. package/websql-prod/fesm2022/i18n-websql-prod.mjs.map +1 -1
  140. package/websql-prod/package.json +1 -1
  141. package/websql-prod/types/i18n-websql-prod.d.ts +140 -305
  142. package/websql-prod.split-namespaces.json +26 -2
  143. package/lib/features/index.d.ts +0 -4
  144. package/lib/features/index.js +0 -21
  145. package/lib/features/index.js.map +0 -1
  146. package/lib/features/types.d.ts +0 -4
  147. package/lib/features/types.js.map +0 -1
  148. package/lib/features/withLanguageLocalStorageSync.d.ts +0 -9
  149. package/lib/features/withLanguageLocalStorageSync.js +0 -39
  150. package/lib/features/withLanguageLocalStorageSync.js.map +0 -1
  151. package/lib/features/withNavigatorLanguage.d.ts +0 -6
  152. package/lib/features/withNavigatorLanguage.js +0 -29
  153. package/lib/features/withNavigatorLanguage.js.map +0 -1
  154. package/lib/features/withPreloadScopes.d.ts +0 -8
  155. package/lib/features/withPreloadScopes.js +0 -25
  156. package/lib/features/withPreloadScopes.js.map +0 -1
  157. package/lib/features/withServerSideLanguage.d.ts +0 -6
  158. package/lib/features/withServerSideLanguage.js +0 -29
  159. package/lib/features/withServerSideLanguage.js.map +0 -1
  160. package/lib/features/withTranslatedTitle.d.ts +0 -34
  161. package/lib/features/withTranslatedTitle.js +0 -69
  162. package/lib/features/withTranslatedTitle.js.map +0 -1
  163. package/lib/internals.d.ts +0 -2
  164. package/lib/internals.js +0 -6
  165. package/lib/internals.js.map +0 -1
  166. package/lib/transignal-config.d.ts +0 -34
  167. package/lib/transignal-config.js +0 -42
  168. package/lib/transignal-config.js.map +0 -1
  169. package/lib/transignal-param-handlers.d.ts +0 -11
  170. package/lib/transignal-param-handlers.js +0 -31
  171. package/lib/transignal-param-handlers.js.map +0 -1
  172. package/lib/transignal-service.d.ts +0 -32
  173. package/lib/transignal-service.js +0 -206
  174. package/lib/transignal-service.js.map +0 -1
  175. package/lib/transignal-testing.d.ts +0 -8
  176. package/lib/transignal-testing.js +0 -14
  177. package/lib/transignal-testing.js.map +0 -1
  178. package/lib/types.d.ts +0 -124
  179. package/lib/types.js +0 -3
  180. package/lib/types.js.map +0 -1
  181. package/lib/utility-types.d.ts +0 -29
  182. package/lib/utility-types.js +0 -3
  183. package/lib/utility-types.js.map +0 -1
  184. package/lib/utils.d.ts +0 -15
  185. package/lib/utils.js +0 -20
  186. package/lib/utils.js.map +0 -1
  187. package/lib-esm/lib/features/index.d.ts +0 -4
  188. package/lib-esm/lib/features/index.js +0 -5
  189. package/lib-esm/lib/features/index.js.map +0 -1
  190. package/lib-esm/lib/features/types.d.ts +0 -4
  191. package/lib-esm/lib/features/types.js +0 -2
  192. package/lib-esm/lib/features/types.js.map +0 -1
  193. package/lib-esm/lib/features/withLanguageLocalStorageSync.d.ts +0 -9
  194. package/lib-esm/lib/features/withLanguageLocalStorageSync.js +0 -35
  195. package/lib-esm/lib/features/withLanguageLocalStorageSync.js.map +0 -1
  196. package/lib-esm/lib/features/withNavigatorLanguage.d.ts +0 -6
  197. package/lib-esm/lib/features/withNavigatorLanguage.js +0 -25
  198. package/lib-esm/lib/features/withNavigatorLanguage.js.map +0 -1
  199. package/lib-esm/lib/features/withPreloadScopes.d.ts +0 -8
  200. package/lib-esm/lib/features/withPreloadScopes.js +0 -21
  201. package/lib-esm/lib/features/withPreloadScopes.js.map +0 -1
  202. package/lib-esm/lib/features/withServerSideLanguage.d.ts +0 -6
  203. package/lib-esm/lib/features/withServerSideLanguage.js +0 -25
  204. package/lib-esm/lib/features/withServerSideLanguage.js.map +0 -1
  205. package/lib-esm/lib/features/withTranslatedTitle.d.ts +0 -34
  206. package/lib-esm/lib/features/withTranslatedTitle.js +0 -65
  207. package/lib-esm/lib/features/withTranslatedTitle.js.map +0 -1
  208. package/lib-esm/lib/internals.d.ts +0 -2
  209. package/lib-esm/lib/internals.js +0 -3
  210. package/lib-esm/lib/internals.js.map +0 -1
  211. package/lib-esm/lib/transignal-config.d.ts +0 -34
  212. package/lib-esm/lib/transignal-config.js +0 -36
  213. package/lib-esm/lib/transignal-config.js.map +0 -1
  214. package/lib-esm/lib/transignal-param-handlers.d.ts +0 -11
  215. package/lib-esm/lib/transignal-param-handlers.js +0 -25
  216. package/lib-esm/lib/transignal-param-handlers.js.map +0 -1
  217. package/lib-esm/lib/transignal-service.d.ts +0 -32
  218. package/lib-esm/lib/transignal-service.js +0 -197
  219. package/lib-esm/lib/transignal-service.js.map +0 -1
  220. package/lib-esm/lib/transignal-testing.d.ts +0 -8
  221. package/lib-esm/lib/transignal-testing.js +0 -10
  222. package/lib-esm/lib/transignal-testing.js.map +0 -1
  223. package/lib-esm/lib/types.d.ts +0 -124
  224. package/lib-esm/lib/types.js +0 -2
  225. package/lib-esm/lib/types.js.map +0 -1
  226. package/lib-esm/lib/utility-types.d.ts +0 -29
  227. package/lib-esm/lib/utility-types.js +0 -2
  228. package/lib-esm/lib/utility-types.js.map +0 -1
  229. package/lib-esm/lib/utils.d.ts +0 -15
  230. package/lib-esm/lib/utils.js +0 -15
  231. package/lib-esm/lib/utils.js.map +0 -1
  232. package/lib-prod/features/index.d.ts +0 -4
  233. package/lib-prod/features/index.js +0 -5
  234. package/lib-prod/features/index.js.map +0 -1
  235. package/lib-prod/features/types.d.ts +0 -4
  236. package/lib-prod/features/types.js +0 -2
  237. package/lib-prod/features/types.js.map +0 -1
  238. package/lib-prod/features/withLanguageLocalStorageSync.d.ts +0 -9
  239. package/lib-prod/features/withLanguageLocalStorageSync.js +0 -35
  240. package/lib-prod/features/withLanguageLocalStorageSync.js.map +0 -1
  241. package/lib-prod/features/withNavigatorLanguage.d.ts +0 -6
  242. package/lib-prod/features/withNavigatorLanguage.js +0 -25
  243. package/lib-prod/features/withNavigatorLanguage.js.map +0 -1
  244. package/lib-prod/features/withPreloadScopes.d.ts +0 -8
  245. package/lib-prod/features/withPreloadScopes.js +0 -21
  246. package/lib-prod/features/withPreloadScopes.js.map +0 -1
  247. package/lib-prod/features/withServerSideLanguage.d.ts +0 -6
  248. package/lib-prod/features/withServerSideLanguage.js +0 -25
  249. package/lib-prod/features/withServerSideLanguage.js.map +0 -1
  250. package/lib-prod/features/withTranslatedTitle.d.ts +0 -34
  251. package/lib-prod/features/withTranslatedTitle.js +0 -65
  252. package/lib-prod/features/withTranslatedTitle.js.map +0 -1
  253. package/lib-prod/internals.d.ts +0 -2
  254. package/lib-prod/internals.js +0 -3
  255. package/lib-prod/internals.js.map +0 -1
  256. package/lib-prod/transignal-config.d.ts +0 -34
  257. package/lib-prod/transignal-config.js +0 -36
  258. package/lib-prod/transignal-config.js.map +0 -1
  259. package/lib-prod/transignal-param-handlers.d.ts +0 -11
  260. package/lib-prod/transignal-param-handlers.js +0 -25
  261. package/lib-prod/transignal-param-handlers.js.map +0 -1
  262. package/lib-prod/transignal-service.d.ts +0 -32
  263. package/lib-prod/transignal-service.js +0 -197
  264. package/lib-prod/transignal-service.js.map +0 -1
  265. package/lib-prod/transignal-testing.d.ts +0 -8
  266. package/lib-prod/transignal-testing.js +0 -10
  267. package/lib-prod/transignal-testing.js.map +0 -1
  268. package/lib-prod/types.d.ts +0 -124
  269. package/lib-prod/types.js +0 -2
  270. package/lib-prod/types.js.map +0 -1
  271. package/lib-prod/utility-types.d.ts +0 -29
  272. package/lib-prod/utility-types.js +0 -2
  273. package/lib-prod/utility-types.js.map +0 -1
  274. package/lib-prod/utils.d.ts +0 -15
  275. package/lib-prod/utils.js +0 -15
  276. package/lib-prod/utils.js.map +0 -1
@@ -0,0 +1,249 @@
1
+ //#region imports
2
+ import { signal, } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { _ } from 'tnp-core/lib';
5
+ import { TranslationManager } from './translation-manager';
6
+ //#endregion
7
+ //#region translation class
8
+ export class Translation {
9
+ fileRelativePath;
10
+ localFileLang;
11
+ langImportMap;
12
+ debug;
13
+ static manager = TranslationManager.Instance;
14
+ //#region static for
15
+ static for(fileRelativePath, langImportMap, opt) {
16
+ opt = opt || {};
17
+ return new Translation(fileRelativePath, Translation.manager.currentGlobalLanguage, langImportMap, !!opt.debug);
18
+ }
19
+ //#endregion
20
+ //#region fields
21
+ /* */
22
+ /* */
23
+ /* */
24
+ lookup = {};
25
+ loadingSubjectSrc = new BehaviorSubject(false);
26
+ isLoadingLang$ = this.loadingSubjectSrc.asObservable();
27
+ loading;
28
+ loadedLang;
29
+ bindings = new Set();
30
+ useGlobalLangFile = true;
31
+ //#endregion
32
+ //#region constructor
33
+ constructor(fileRelativePath, localFileLang, langImportMap, debug = false) {
34
+ this.fileRelativePath = fileRelativePath;
35
+ this.localFileLang = localFileLang;
36
+ this.langImportMap = langImportMap;
37
+ this.debug = debug;
38
+ if (!Translation.manager.instances.has(this)) {
39
+ Translation.manager.instances.add(this);
40
+ }
41
+ }
42
+ //#endregion
43
+ //#region for
44
+ for(_classThis) {
45
+ /* */
46
+ /* */
47
+ /* */
48
+ /* */
49
+ /* */
50
+ /* */
51
+ /* */
52
+ /* */
53
+ /* */
54
+ /* */
55
+ void this.ensureLoaded();
56
+ return this;
57
+ }
58
+ //#endregion
59
+ //#region change file lang
60
+ async changeFileLang(lang) {
61
+ this.useGlobalLangFile = false;
62
+ this.localFileLang = lang;
63
+ await this.ensureLoaded(true);
64
+ /* */
65
+ /* */
66
+ }
67
+ //#endregion
68
+ //#region use global file lang
69
+ async useGlobalFileLang(lang) {
70
+ this.useGlobalLangFile = true;
71
+ await this.ensureLoaded(true);
72
+ /* */
73
+ /* */
74
+ }
75
+ //#endregion
76
+ //#region gettext
77
+ gettext = (text, params, context = '') => {
78
+ const key = this.key(text, context);
79
+ const translated = this.lookup[key] ?? text;
80
+ this.debug &&
81
+ console.log(`Translate (with load): "${text}" to "${translated}", key="${key}" params:${_.isObject(params) ? JSON.stringify(params) : params} ` +
82
+ `localFileLang: ${this.localFileLang}`, this);
83
+ return this.interpolate(translated, params);
84
+ };
85
+ //#endregion
86
+ //#region signal
87
+ createSignal(text, params, context = '') {
88
+ const s = signal(this.gettext(text, params, context));
89
+ this.bindings.add({
90
+ text,
91
+ params,
92
+ context,
93
+ update: value => s.set(value),
94
+ });
95
+ return s;
96
+ }
97
+ signal = {
98
+ gettext: (text, params, context) => this.createSignal(text, params, context),
99
+ };
100
+ //#endregion
101
+ //#region $ obserable
102
+ createObservable(text, params, context = '') {
103
+ const subject = new BehaviorSubject(this.gettext(text, params, context));
104
+ this.bindings.add({
105
+ text,
106
+ params,
107
+ context,
108
+ update: value => subject.next(value),
109
+ });
110
+ return subject.asObservable();
111
+ }
112
+ $ = {
113
+ gettext: (text, params, context) => this.createObservable(text, params, context),
114
+ };
115
+ //#endregion
116
+ //#region private methods / refresh bindings
117
+ refreshBindings() {
118
+ for (const binding of this.bindings) {
119
+ binding.update(this.gettextWithoutEnsureLoaded(binding.text, binding.params, binding.context ?? ''));
120
+ }
121
+ }
122
+ //#endregion
123
+ //#region private methods / gettextwithout ensure loadded
124
+ translate(text, params, context = '') {
125
+ return this.gettextWithoutEnsureLoaded(text, params, context);
126
+ }
127
+ gettextWithoutEnsureLoaded(text, params, context = '') {
128
+ const key = this.key(text, context);
129
+ const translated = this.lookup[key] ?? text;
130
+ this.debug &&
131
+ console.log(`Translate (no load): "${text}" to "${translated}", key="${key}" params:${_.isObject(params) ? JSON.stringify(params) : params} ` +
132
+ `localFileLang: ${this.localFileLang}`, this);
133
+ return this.interpolate(translated, params);
134
+ }
135
+ //#endregion
136
+ //#region private methods / load
137
+ async load() {
138
+ this.loadingSubjectSrc.next(true);
139
+ const files = [];
140
+ const filesForTArr = Object.keys(this.langImportMap);
141
+ for (const fileRelativePath of filesForTArr) {
142
+ try {
143
+ const loader = this.langImportMap[fileRelativePath]?.[this.localFileLang];
144
+ if (!loader) {
145
+ continue;
146
+ }
147
+ const modOrFile = await loader();
148
+ const file = modOrFile.default ?? modOrFile;
149
+ files.push(file);
150
+ }
151
+ catch (err) {
152
+ console.log(`[taon-i18n] Error loading language file ${fileRelativePath} `, err);
153
+ }
154
+ }
155
+ this.loadedLang = this.localFileLang;
156
+ this.lookup = this.createLookup(files);
157
+ this.debug && console.log(`${this.localFileLang}`, files, this.lookup);
158
+ this.refreshBindings();
159
+ /* */
160
+ /* */
161
+ this.loadingSubjectSrc.next(false);
162
+ }
163
+ //#endregion
164
+ //#region private methods / ensure loaded
165
+ async ensureLoaded(force = false) {
166
+ if (this.useGlobalLangFile) {
167
+ this.localFileLang = Translation.manager.currentGlobalLanguage;
168
+ }
169
+ if (!force && this.loadedLang === this.localFileLang) {
170
+ return;
171
+ }
172
+ if (!force && this.loading) {
173
+ return this.loading;
174
+ }
175
+ this.loading = this.load();
176
+ try {
177
+ await this.loading;
178
+ }
179
+ finally {
180
+ this.loading = undefined;
181
+ }
182
+ }
183
+ //#endregion
184
+ //#region private methods / create lookup
185
+ createLookup(files) {
186
+ const lookup = {};
187
+ for (const file of files) {
188
+ for (const tag of file.tags ?? []) {
189
+ if (!tag.translation)
190
+ continue;
191
+ lookup[this.key(tag.gettextString, tag.context ?? '')] =
192
+ tag.translation;
193
+ }
194
+ }
195
+ return lookup;
196
+ }
197
+ //#endregion
198
+ //#region private methods / key
199
+ key(text, context = '') {
200
+ return `${context}\u0004${text}`;
201
+ }
202
+ //#endregion
203
+ //#region private methods / interpolate
204
+ interpolate(text, params) {
205
+ if (!params)
206
+ return text;
207
+ const result = text.replace(/\[\[\s*([a-zA-Z0-9_$]+)\s*\]\]/g, (_, key) => {
208
+ const value = params[key];
209
+ return value === undefined || value === null ? '' : String(value);
210
+ });
211
+ return result;
212
+ }
213
+ }
214
+ //#endregion
215
+ //#region EXMAPLE
216
+ /*
217
+ // import {Translation} from 'taon'
218
+
219
+ const t = Translation.for(Taon.__FILE_RELATIVE_PATH, Taon.LANG_IMPORT_MAP); // in runtime replaced with proper stuff
220
+
221
+ t.gettext('asdasd');
222
+
223
+ class AnyAngularOrTaonClass {
224
+ t = t.for(this); // probably only usefull for cdr in angular
225
+
226
+ isLoading$ = t.isLoadingLang$; // maybe needed sometime
227
+
228
+ refreshableSignalLabel$ = t.signal.gettext(t.gettext('welcome'));
229
+
230
+ refreshableRxjsLabel$ = t.$.gettext('amazing better place'); // probably even better
231
+
232
+ asdsa = this.t.gettext(
233
+ // just sugar syntax
234
+ 'This is mamazing',
235
+ {
236
+ asdasd: 'asd',
237
+ },
238
+ 'asdas',
239
+ );
240
+
241
+ ngOnInit(): void {
242
+ //Called after the constructor, initializing input properties, and the first call to ngOnChanges.
243
+ //Add 'implements OnInit' to the class.
244
+ const lable = t.gettext('hello');
245
+ }
246
+ }
247
+ */
248
+ //#endregion
249
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAGL,MAAM,GAEP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,eAAe,EAAc,MAAM,MAAM,CAAC;AACnD,OAAO,EAA4B,CAAC,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAS3D,YAAY;AAEZ,2BAA2B;AAC3B,MAAM,OAAO,WAAW;IA6CV;IACA;IACA;IACH;IA/CT,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC;IAE7C,oBAAoB;IACpB,MAAM,CAAC,GAAG,CACR,gBAAwB,EACxB,aAAwC,EACxC,GAEC;QAED,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;QAChB,OAAO,IAAI,WAAW,CACpB,gBAAgB,EAChB,WAAW,CAAC,OAAO,CAAC,qBAAqB,EACzC,aAAa,EACb,CAAC,CAAC,GAAG,CAAC,KAAK,CACZ,CAAC;IACJ,CAAC;IACD,YAAY;IAEZ,gBAAgB;IAElB,KAAK;IACL,KAAK;IACL,KAAK;IAGK,MAAM,GAAsB,EAAE,CAAC;IAEtB,iBAAiB,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IAEhD,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;IAE/D,OAAO,CAAiB;IAExB,UAAU,CAA8B;IAE/B,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;IAElD,iBAAiB,GAAG,IAAI,CAAC;IACjC,YAAY;IAEZ,qBAAqB;IACrB,YACY,gBAAwB,EACxB,aAAyC,EACzC,aAAwC,EAC3C,QAAQ,KAAK;QAHV,qBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,kBAAa,GAAb,aAAa,CAA4B;QACzC,kBAAa,GAAb,aAAa,CAA2B;QAC3C,UAAK,GAAL,KAAK,CAAQ;QAEpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IACD,YAAY;IAEZ,aAAa;IACb,GAAG,CAAC,UAAkB;QACxB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QAED,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAEzB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,YAAY;IAEZ,0BAA0B;IAC1B,KAAK,CAAC,cAAc,CAAC,IAAgC;QACnD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK;QACL,KAAK;IAEH,CAAC;IACD,YAAY;IAEZ,8BAA8B;IAC9B,KAAK,CAAC,iBAAiB,CAAC,IAAgC;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK;QACL,KAAK;IAEH,CAAC;IACD,YAAY;IAEZ,iBAAiB;IACjB,OAAO,GAAG,CACR,IAAY,EACZ,MAA0B,EAC1B,OAAO,GAAG,EAAE,EACJ,EAAE;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,KAAK;YACR,OAAO,CAAC,GAAG,CACT,2BAA2B,IAAI,SAAS,UAAU,WAAW,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG;gBACjI,kBAAkB,IAAI,CAAC,aAAa,EAAE,EACxC,IAAI,CACL,CAAC;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,YAAY;IAEZ,gBAAgB;IAER,YAAY,CAClB,IAAY,EACZ,MAA0B,EAC1B,OAAO,GAAG,EAAE;QAEZ,MAAM,CAAC,GAAG,MAAM,CAAS,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAE9D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChB,IAAI;YACJ,MAAM;YACN,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;SAC9B,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC;IACX,CAAC;IAEQ,MAAM,GAAG;QAChB,OAAO,EAAE,CAAC,IAAY,EAAE,MAA0B,EAAE,OAAgB,EAAE,EAAE,CACtE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;KAC3C,CAAC;IACF,YAAY;IAEZ,qBAAqB;IACb,gBAAgB,CACtB,IAAY,EACZ,MAA0B,EAC1B,OAAO,GAAG,EAAE;QAEZ,MAAM,OAAO,GAAG,IAAI,eAAe,CACjC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CACpC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChB,IAAI;YACJ,MAAM;YACN,OAAO;YACP,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;SACrC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;IAEQ,CAAC,GAAG;QACX,OAAO,EAAE,CAAC,IAAY,EAAE,MAA0B,EAAE,OAAgB,EAAE,EAAE,CACtE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;KAC/C,CAAC;IACF,YAAY;IAEZ,4CAA4C;IACpC,eAAe;QACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CACZ,IAAI,CAAC,0BAA0B,CAC7B,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,IAAI,EAAE,CACtB,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,YAAY;IAEZ,yDAAyD;IAEzD,SAAS,CAAC,IAAY,EAAE,MAA0B,EAAE,OAAO,GAAG,EAAE;QAC9D,OAAO,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAEO,0BAA0B,CAChC,IAAY,EACZ,MAA0B,EAC1B,OAAO,GAAG,EAAE;QAEZ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;QAC5C,IAAI,CAAC,KAAK;YACR,OAAO,CAAC,GAAG,CACT,yBAAyB,IAAI,SAAS,UAAU,WAAW,GAAG,YAAY,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG;gBAC/H,kBAAkB,IAAI,CAAC,aAAa,EAAE,EACxC,IAAI,CACL,CAAC;QACJ,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,YAAY;IAEZ,gCAAgC;IACxB,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,KAAK,GAA4B,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,KAAK,MAAM,gBAAgB,IAAI,YAAY,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACH,MAAM,MAAM,GACV,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAE7D,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,SAAS;gBACX,CAAC;gBAED,MAAM,SAAS,GAAG,MAAM,MAAM,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAI,SAAiB,CAAC,OAAO,IAAI,SAAS,CAAC;gBAErD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CACT,2CAA2C,gBAAgB,GAAG,EAC9D,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvE,IAAI,CAAC,eAAe,EAAE,CAAC;QAE3B,KAAK;QACL,KAAK;QAED,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IACD,YAAY;IAEZ,yCAAyC;IACjC,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK;QACtC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC;YACrD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,YAAY;IAEZ,yCAAyC;IACjC,YAAY,CAAC,KAA8B;QACjD,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,WAAW;oBAAE,SAAS;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;oBACpD,GAAG,CAAC,WAAW,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,YAAY;IAEZ,+BAA+B;IACvB,GAAG,CAAC,IAAY,EAAE,OAAO,GAAG,EAAE;QACpC,OAAO,GAAG,OAAO,SAAS,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,YAAY;IAEZ,uCAAuC;IAC/B,WAAW,CAAC,IAAY,EAAE,MAAgC;QAChE,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,iCAAiC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACxE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;;AAGH,YAAY;AAEZ,iBAAiB;AACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA+BI;AACJ,YAAY"}
@@ -0,0 +1,25 @@
1
+ import { UtilsI18n } from 'tnp-core/lib';
2
+ import type { Translation } from './translation';
3
+ export type TranslationLookup = Record<string, string>;
4
+ export type TranslationParams = Record<string, unknown> | null;
5
+ type FileRelativeLocation = string;
6
+ export type TaonTranslationsMapImport = Record<FileRelativeLocation, {
7
+ [lang in UtilsI18n.CommonLocaleCode]?: () => Promise<UtilsI18n.GettextFile>;
8
+ }>;
9
+ /**
10
+ * Searching all tags with each gettext probably not a good idea.. maybe some
11
+ * kind of object/map can be created/use
12
+ */
13
+ export type TaonTranslationsMap = Record<FileRelativeLocation, {
14
+ [lang in UtilsI18n.CommonLocaleCode]?: UtilsI18n.GettextFile;
15
+ }>;
16
+ export interface TranslationBinding {
17
+ text: string;
18
+ params?: TranslationParams;
19
+ context?: string;
20
+ update(value: string): void;
21
+ }
22
+ export interface Translatable {
23
+ t: Translation;
24
+ }
25
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=translation.models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.models.js","sourceRoot":"","sources":[""],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { UtilsI18n } from 'tnp-core/lib';
2
+ export declare namespace UtilsI18nExtractGettextTranslateFromHtml {
3
+ function extractGettextTranslateFromHtml(html: string, fileName?: string): UtilsI18n.GettextExtracted[];
4
+ }