@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,253 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Translation = void 0;
4
+ //#region imports
5
+ const core_1 = require("@angular/core");
6
+ const rxjs_1 = require("rxjs");
7
+ const lib_1 = require("tnp-core/lib");
8
+ const translation_manager_1 = require("./translation-manager");
9
+ //#endregion
10
+ //#region translation class
11
+ class Translation {
12
+ fileRelativePath;
13
+ localFileLang;
14
+ langImportMap;
15
+ debug;
16
+ static manager = translation_manager_1.TranslationManager.Instance;
17
+ //#region static for
18
+ static for(fileRelativePath, langImportMap, opt) {
19
+ opt = opt || {};
20
+ return new Translation(fileRelativePath, Translation.manager.currentGlobalLanguage, langImportMap, !!opt.debug);
21
+ }
22
+ //#endregion
23
+ //#region fields
24
+ /* */
25
+ /* */
26
+ /* */
27
+ lookup = {};
28
+ loadingSubjectSrc = new rxjs_1.BehaviorSubject(false);
29
+ isLoadingLang$ = this.loadingSubjectSrc.asObservable();
30
+ loading;
31
+ loadedLang;
32
+ bindings = new Set();
33
+ useGlobalLangFile = true;
34
+ //#endregion
35
+ //#region constructor
36
+ constructor(fileRelativePath, localFileLang, langImportMap, debug = false) {
37
+ this.fileRelativePath = fileRelativePath;
38
+ this.localFileLang = localFileLang;
39
+ this.langImportMap = langImportMap;
40
+ this.debug = debug;
41
+ if (!Translation.manager.instances.has(this)) {
42
+ Translation.manager.instances.add(this);
43
+ }
44
+ }
45
+ //#endregion
46
+ //#region for
47
+ for(_classThis) {
48
+ /* */
49
+ /* */
50
+ /* */
51
+ /* */
52
+ /* */
53
+ /* */
54
+ /* */
55
+ /* */
56
+ /* */
57
+ /* */
58
+ void this.ensureLoaded();
59
+ return this;
60
+ }
61
+ //#endregion
62
+ //#region change file lang
63
+ async changeFileLang(lang) {
64
+ this.useGlobalLangFile = false;
65
+ this.localFileLang = lang;
66
+ await this.ensureLoaded(true);
67
+ /* */
68
+ /* */
69
+ }
70
+ //#endregion
71
+ //#region use global file lang
72
+ async useGlobalFileLang(lang) {
73
+ this.useGlobalLangFile = true;
74
+ await this.ensureLoaded(true);
75
+ /* */
76
+ /* */
77
+ }
78
+ //#endregion
79
+ //#region gettext
80
+ gettext = (text, params, context = '') => {
81
+ const key = this.key(text, context);
82
+ const translated = this.lookup[key] ?? text;
83
+ this.debug &&
84
+ console.log(`Translate (with load): "${text}" to "${translated}", key="${key}" params:${lib_1._.isObject(params) ? JSON.stringify(params) : params} ` +
85
+ `localFileLang: ${this.localFileLang}`, this);
86
+ return this.interpolate(translated, params);
87
+ };
88
+ //#endregion
89
+ //#region signal
90
+ createSignal(text, params, context = '') {
91
+ const s = (0, core_1.signal)(this.gettext(text, params, context));
92
+ this.bindings.add({
93
+ text,
94
+ params,
95
+ context,
96
+ update: value => s.set(value),
97
+ });
98
+ return s;
99
+ }
100
+ signal = {
101
+ gettext: (text, params, context) => this.createSignal(text, params, context),
102
+ };
103
+ //#endregion
104
+ //#region $ obserable
105
+ createObservable(text, params, context = '') {
106
+ const subject = new rxjs_1.BehaviorSubject(this.gettext(text, params, context));
107
+ this.bindings.add({
108
+ text,
109
+ params,
110
+ context,
111
+ update: value => subject.next(value),
112
+ });
113
+ return subject.asObservable();
114
+ }
115
+ $ = {
116
+ gettext: (text, params, context) => this.createObservable(text, params, context),
117
+ };
118
+ //#endregion
119
+ //#region private methods / refresh bindings
120
+ refreshBindings() {
121
+ for (const binding of this.bindings) {
122
+ binding.update(this.gettextWithoutEnsureLoaded(binding.text, binding.params, binding.context ?? ''));
123
+ }
124
+ }
125
+ //#endregion
126
+ //#region private methods / gettextwithout ensure loadded
127
+ translate(text, params, context = '') {
128
+ return this.gettextWithoutEnsureLoaded(text, params, context);
129
+ }
130
+ gettextWithoutEnsureLoaded(text, params, context = '') {
131
+ const key = this.key(text, context);
132
+ const translated = this.lookup[key] ?? text;
133
+ this.debug &&
134
+ console.log(`Translate (no load): "${text}" to "${translated}", key="${key}" params:${lib_1._.isObject(params) ? JSON.stringify(params) : params} ` +
135
+ `localFileLang: ${this.localFileLang}`, this);
136
+ return this.interpolate(translated, params);
137
+ }
138
+ //#endregion
139
+ //#region private methods / load
140
+ async load() {
141
+ this.loadingSubjectSrc.next(true);
142
+ const files = [];
143
+ const filesForTArr = Object.keys(this.langImportMap);
144
+ for (const fileRelativePath of filesForTArr) {
145
+ try {
146
+ const loader = this.langImportMap[fileRelativePath]?.[this.localFileLang];
147
+ if (!loader) {
148
+ continue;
149
+ }
150
+ const modOrFile = await loader();
151
+ const file = modOrFile.default ?? modOrFile;
152
+ files.push(file);
153
+ }
154
+ catch (err) {
155
+ console.log(`[taon-i18n] Error loading language file ${fileRelativePath} `, err);
156
+ }
157
+ }
158
+ this.loadedLang = this.localFileLang;
159
+ this.lookup = this.createLookup(files);
160
+ this.debug && console.log(`${this.localFileLang}`, files, this.lookup);
161
+ this.refreshBindings();
162
+ /* */
163
+ /* */
164
+ this.loadingSubjectSrc.next(false);
165
+ }
166
+ //#endregion
167
+ //#region private methods / ensure loaded
168
+ async ensureLoaded(force = false) {
169
+ if (this.useGlobalLangFile) {
170
+ this.localFileLang = Translation.manager.currentGlobalLanguage;
171
+ }
172
+ if (!force && this.loadedLang === this.localFileLang) {
173
+ return;
174
+ }
175
+ if (!force && this.loading) {
176
+ return this.loading;
177
+ }
178
+ this.loading = this.load();
179
+ try {
180
+ await this.loading;
181
+ }
182
+ finally {
183
+ this.loading = undefined;
184
+ }
185
+ }
186
+ //#endregion
187
+ //#region private methods / create lookup
188
+ createLookup(files) {
189
+ const lookup = {};
190
+ for (const file of files) {
191
+ for (const tag of file.tags ?? []) {
192
+ if (!tag.translation)
193
+ continue;
194
+ lookup[this.key(tag.gettextString, tag.context ?? '')] =
195
+ tag.translation;
196
+ }
197
+ }
198
+ return lookup;
199
+ }
200
+ //#endregion
201
+ //#region private methods / key
202
+ key(text, context = '') {
203
+ return `${context}\u0004${text}`;
204
+ }
205
+ //#endregion
206
+ //#region private methods / interpolate
207
+ interpolate(text, params) {
208
+ if (!params)
209
+ return text;
210
+ const result = text.replace(/\[\[\s*([a-zA-Z0-9_$]+)\s*\]\]/g, (_, key) => {
211
+ const value = params[key];
212
+ return value === undefined || value === null ? '' : String(value);
213
+ });
214
+ return result;
215
+ }
216
+ }
217
+ exports.Translation = Translation;
218
+ //#endregion
219
+ //#region EXMAPLE
220
+ /*
221
+ // import {Translation} from 'taon'
222
+
223
+ const t = Translation.for(Taon.__FILE_RELATIVE_PATH, Taon.LANG_IMPORT_MAP); // in runtime replaced with proper stuff
224
+
225
+ t.gettext('asdasd');
226
+
227
+ class AnyAngularOrTaonClass {
228
+ t = t.for(this); // probably only usefull for cdr in angular
229
+
230
+ isLoading$ = t.isLoadingLang$; // maybe needed sometime
231
+
232
+ refreshableSignalLabel$ = t.signal.gettext(t.gettext('welcome'));
233
+
234
+ refreshableRxjsLabel$ = t.$.gettext('amazing better place'); // probably even better
235
+
236
+ asdsa = this.t.gettext(
237
+ // just sugar syntax
238
+ 'This is mamazing',
239
+ {
240
+ asdasd: 'asd',
241
+ },
242
+ 'asdas',
243
+ );
244
+
245
+ ngOnInit(): void {
246
+ //Called after the constructor, initializing input properties, and the first call to ngOnChanges.
247
+ //Add 'implements OnInit' to the class.
248
+ const lable = t.gettext('hello');
249
+ }
250
+ }
251
+ */
252
+ //#endregion
253
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { UtilsI18n } from 'tnp-core';
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 {};
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
3
+ //# 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';
2
+ export declare namespace UtilsI18nExtractGettextTranslateFromHtml {
3
+ function extractGettextTranslateFromHtml(html: string, fileName?: string): UtilsI18n.GettextExtracted[];
4
+ }