complexqa_frontend_core 1.20.3 → 1.21.2

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 (53) hide show
  1. package/package.json +1 -1
  2. package/publish/api/index.js +18 -16
  3. package/publish/api/util/browser_tools_util_execution_api.js +108 -0
  4. package/publish/index.js +8 -0
  5. package/publish/services/serviceTranslate.js +2 -0
  6. package/publish/types/core/0_familyGeneralElement.js +10 -1
  7. package/publish/types/core/1_familyContext.js +3 -38
  8. package/publish/types/element_translate/_familyContext.i18n.js +190 -0
  9. package/publish/types/element_translate/_familyUtil.i18n.js +68 -0
  10. package/publish/types/element_translate/typeBrowserContext.i18n.js +24 -0
  11. package/publish/types/element_translate/typeBug.i18n.js +1014 -0
  12. package/publish/types/element_translate/typeBugRelation.i18n.js +146 -0
  13. package/publish/types/element_translate/typeDeploymentTargetContext.i18n.js +184 -0
  14. package/publish/types/element_translate/typeDeviceContext.i18n.js +118 -0
  15. package/publish/types/element_translate/typeExecutionContext.i18n.js +267 -0
  16. package/publish/types/element_translate/typeLocaleContext.i18n.js +90 -0
  17. package/publish/types/element_translate/typeOsContext.i18n.js +118 -0
  18. package/publish/types/element_translate/typeProject.i18n.js +135 -0
  19. package/publish/types/element_translate/typeScreenResolutionContext.i18n.js +151 -0
  20. package/publish/types/element_translate/typeTeamMember.i18n.js +119 -0
  21. package/publish/types/element_translate/typeTeamTotalStatistic.i18n.js +97 -0
  22. package/publish/types/element_translate/typeTestAccount.i18n.js +108 -0
  23. package/publish/types/element_translate/typeTestCase.i18n.js +359 -0
  24. package/publish/types/element_translate/typeTestCaseStep.i18n.js +179 -0
  25. package/publish/types/element_translate/typeTestRun.i18n.js +223 -0
  26. package/publish/types/element_translate/typeTestRunResult.i18n.js +141 -0
  27. package/publish/types/element_translate/typeUtilExecution.i18n.js +49 -0
  28. package/publish/types/element_translate/typeUtilExecutionScreenshotMulti.i18n.js +43 -0
  29. package/publish/types/family_context/typeBrowserContext.js +2 -8
  30. package/publish/types/family_context/typeDeploymentTargetContext.js +3 -41
  31. package/publish/types/family_context/typeDeviceContext.js +3 -29
  32. package/publish/types/family_context/typeExecutionContext.js +3 -52
  33. package/publish/types/family_context/typeLocaleContext.js +2 -20
  34. package/publish/types/family_context/typeOsContext.js +3 -29
  35. package/publish/types/family_context/typeScreenResolutionContext.js +3 -35
  36. package/publish/types/family_contracts/familyContracts.js +10 -1
  37. package/publish/types/family_contracts/typeTeamTotalStatistic.js +2 -18
  38. package/publish/types/family_elements/typeBug.js +3 -196
  39. package/publish/types/family_elements/typeProject.js +3 -29
  40. package/publish/types/family_elements/typeTeamMember.js +2 -22
  41. package/publish/types/family_elements/typeTestAccount.js +2 -20
  42. package/publish/types/family_elements/typeTestCase.js +3 -72
  43. package/publish/types/family_elements/typeTestCaseStep.js +3 -36
  44. package/publish/types/family_elements/typeTestRun.js +3 -45
  45. package/publish/types/family_elements/typeTestRunResult.js +2 -27
  46. package/publish/types/family_relation/typeBugRelation.js +3 -30
  47. package/publish/types/family_utils/familyUtil.js +43 -0
  48. package/publish/types/family_utils/typeUtilExecution.js +153 -0
  49. package/publish/types/family_utils/typeUtilExecutionEvent.js +56 -0
  50. package/publish/types/family_utils/typeUtilExecutionScreenshotMulti.js +72 -0
  51. package/publish/types/family_utils/typeUtilExecutionScreenshotMultiCapture.js +57 -0
  52. package/publish/types/family_utils/typeUtilExecutionScreenshotMultiCaptureError.js +49 -0
  53. package/publish/types/family_utils/typeUtilExecutionScreenshotMultiScreenshot.js +57 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "complexqa_frontend_core",
3
- "version": "1.20.3",
3
+ "version": "1.21.2",
4
4
  "description": "core of web ",
5
5
  "type": "module",
6
6
  "exports": {
@@ -20,6 +20,7 @@ import { ExecutionContextApi } from "./context/context_execution_general_api.js"
20
20
  import { ContextLocaleApi } from "./context/context_locale_api.js";
21
21
  import { ContextOsApi } from "./context/context_os_api.js";
22
22
  import { ContextScreenResolutionApi } from "./context/context_screen_resolution_api.js";
23
+ import { BrowserToolsUtilExecutionApi } from "./util/browser_tools_util_execution_api.js";
23
24
 
24
25
  /**
25
26
  * Обертка над axios
@@ -141,22 +142,23 @@ export class Api
141
142
 
142
143
  //echo({payload});
143
144
 
144
- this.team_management = new TeamManagementApi(payload);
145
- this.team_member = new TeamMemberApi(payload);
146
- this.test_plan = new TestPlanApi(payload);
147
- this.project = new ProjectApi(payload);
148
- this.service = new ServiceApi(payload);
149
- this.test_case = new TestCaseApi(payload);
150
- this.test_case_step = new TestCaseStepApi(payload);
151
- this.test_suite = new TestSuiteApi(payload);
152
- this.test_run = new TestRunApi(payload);
153
- this.test_run_result = new TestRunResultApi(payload);
154
- this.user_profile = new UserProfileApi(payload);
155
- this.task = new TaskApi(payload);
156
- this.test_account = new TestAccountApi(payload);
157
- this.bug = new BugApi(payload);
158
- this.bug_relation = new BugRelationApi(payload);
159
- this.execution_context = new ExecutionContextApi(payload);
145
+ this.team_management = new TeamManagementApi(payload);
146
+ this.team_member = new TeamMemberApi(payload);
147
+ this.test_plan = new TestPlanApi(payload);
148
+ this.project = new ProjectApi(payload);
149
+ this.service = new ServiceApi(payload);
150
+ this.test_case = new TestCaseApi(payload);
151
+ this.test_case_step = new TestCaseStepApi(payload);
152
+ this.test_suite = new TestSuiteApi(payload);
153
+ this.test_run = new TestRunApi(payload);
154
+ this.test_run_result = new TestRunResultApi(payload);
155
+ this.user_profile = new UserProfileApi(payload);
156
+ this.task = new TaskApi(payload);
157
+ this.test_account = new TestAccountApi(payload);
158
+ this.bug = new BugApi(payload);
159
+ this.bug_relation = new BugRelationApi(payload);
160
+ this.execution_context = new ExecutionContextApi(payload);
161
+ this.browser_tools_util_execution = new BrowserToolsUtilExecutionApi(payload);
160
162
 
161
163
  this.reference = this.bootstrap_reference(payload)
162
164
  }
@@ -0,0 +1,108 @@
1
+ import { ApiAbstractElementClass } from "../api_abstract_element_class.js";
2
+ import { is_array } from "../../utils/utils.js";
3
+ import { typeUtilExecution } from "../../types/family_utils/typeUtilExecution.js";
4
+
5
+
6
+ /**
7
+ * Browser Tools — util executions (screenshot.multi).
8
+ *
9
+ * Base path: /web_api/util/browser_tools/util_executions
10
+ *
11
+ * @version v.1.0 (24/06/2026)
12
+ */
13
+ export class BrowserToolsUtilExecutionApi extends ApiAbstractElementClass
14
+ {
15
+ module_prefix = 'util/browser_tools/util_executions';
16
+
17
+
18
+ constructor(options)
19
+ {
20
+ super(options);
21
+ this.set_element_class_instance(typeUtilExecution);
22
+ }
23
+
24
+
25
+ /**
26
+ * GET listing?project_id=
27
+ *
28
+ * @param {object} payload
29
+ *
30
+ * @returns {Promise<{payload, response: object}>}
31
+ */
32
+ async listing(payload)
33
+ {
34
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/listing`;
35
+
36
+ payload = this.handle_request_payload(payload);
37
+ let response = this.api_request(url, payload);
38
+ response = this.handle_response(response, false);
39
+
40
+ if (response?.items && is_array(response.items))
41
+ {
42
+ response.items = response.items.map((row) => new typeUtilExecution(row));
43
+ }
44
+
45
+ return {
46
+ response: response,
47
+ payload : payload,
48
+ };
49
+ }
50
+
51
+
52
+ /**
53
+ * GET details/{util_execution_id}?project_id=
54
+ *
55
+ * @param {object} payload
56
+ *
57
+ * @returns {Promise<{payload, response: typeUtilExecution|false}>}
58
+ */
59
+ async details(payload)
60
+ {
61
+ let util_execution_id = payload?.util_execution_id;
62
+
63
+ if (!util_execution_id)
64
+ {
65
+ throw new Error('util_execution_id is required for details');
66
+ }
67
+
68
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/details/${ util_execution_id }`;
69
+
70
+ payload = this.handle_request_payload(payload);
71
+ let response = this.api_request(url, payload);
72
+ response = this.handle_response(response, false);
73
+
74
+ return {
75
+ response: typeUtilExecution.hydrateDetails(response),
76
+ payload : payload,
77
+ };
78
+ }
79
+
80
+
81
+ /**
82
+ * GET status/{util_execution_id}?project_id=
83
+ *
84
+ * @param {object} payload
85
+ *
86
+ * @returns {Promise<{payload, response: typeUtilExecution}>}
87
+ */
88
+ async status(payload)
89
+ {
90
+ let util_execution_id = payload?.util_execution_id;
91
+
92
+ if (!util_execution_id)
93
+ {
94
+ throw new Error('util_execution_id is required for status');
95
+ }
96
+
97
+ let url = `/${ this.api_prefix }/${ this.module_prefix }/status/${ util_execution_id }`;
98
+
99
+ payload = this.handle_request_payload(payload);
100
+ let response = this.api_request(url, payload);
101
+ response = this.handle_response(response, false);
102
+
103
+ return {
104
+ response: new typeUtilExecution(response),
105
+ payload : payload,
106
+ };
107
+ }
108
+ }
package/publish/index.js CHANGED
@@ -28,6 +28,14 @@ export { typeLocaleContext } from './types/family_context/typeLocaleContext.js';
28
28
  export { typeDeploymentTargetContext } from './types/family_context/typeDeploymentTargetContext.js';
29
29
  export { typeExecutionContext } from './types/family_context/typeExecutionContext.js';
30
30
 
31
+ export { familyUtil } from './types/family_utils/familyUtil.js';
32
+ export { typeUtilExecution } from './types/family_utils/typeUtilExecution.js';
33
+ export { typeUtilExecutionScreenshotMulti } from './types/family_utils/typeUtilExecutionScreenshotMulti.js';
34
+ export { typeUtilExecutionScreenshotMultiCapture } from './types/family_utils/typeUtilExecutionScreenshotMultiCapture.js';
35
+ export { typeUtilExecutionScreenshotMultiScreenshot } from './types/family_utils/typeUtilExecutionScreenshotMultiScreenshot.js';
36
+ export { typeUtilExecutionScreenshotMultiCaptureError } from './types/family_utils/typeUtilExecutionScreenshotMultiCaptureError.js';
37
+ export { typeUtilExecutionEvent } from './types/family_utils/typeUtilExecutionEvent.js';
38
+
31
39
  export { typeUser } from './types/family_elements/typeUser.js';
32
40
  export { typeTeam } from './types/family_elements/typeTeam.js';
33
41
  export { typeTeamMember } from './types/family_elements/typeTeamMember.js';
@@ -4,6 +4,8 @@ import { Api } from "../api/index.js";
4
4
  import { echo, in_array } from "../utils/utils.js";
5
5
 
6
6
  /**
7
+ * @deprecated Не используется. Переводы полей моделей — через `*_translate_matrix` на типах
8
+ * (`get_attribute_name_translate`, `get_enum_value_translate`). Сервис оставлен как заготовка.
7
9
  *
8
10
  * @version v.0.1 (25/06/2024)
9
11
  */
@@ -15,7 +15,16 @@ export class familyGeneralElement
15
15
  api_key = false;
16
16
  attribute_name_translate_matrix = {
17
17
  en: {},
18
- ru: {}
18
+ ru: {},
19
+ de: {},
20
+ ar: {},
21
+ es: {},
22
+ fr: {},
23
+ hy: {},
24
+ it: {},
25
+ pl: {},
26
+ pt: {},
27
+ tt: {}
19
28
  }
20
29
 
21
30
  enum_value_translate_matrix = false;
@@ -1,4 +1,5 @@
1
1
  import { familyGeneralElement } from "./0_familyGeneralElement.js";
2
+ import { familyContext_i18n } from "../element_translate/_familyContext.i18n.js";
2
3
 
3
4
 
4
5
  /**
@@ -68,18 +69,7 @@ export class familyContext extends familyGeneralElement
68
69
  */
69
70
  static get_base_enum_value_translate_matrix()
70
71
  {
71
- return {
72
- context_scope: {
73
- en: {
74
- SYSTEM : 'System',
75
- PROJECT: 'Project',
76
- },
77
- ru: {
78
- SYSTEM : 'Системный',
79
- PROJECT: 'Проекта',
80
- },
81
- },
82
- };
72
+ return familyContext_i18n.enum_value_translate_matrix;
83
73
  }
84
74
 
85
75
 
@@ -151,32 +141,7 @@ export class familyContext extends familyGeneralElement
151
141
  */
152
142
  static get_catalog_attribute_name_translate_matrix()
153
143
  {
154
- return {
155
- en: {
156
- context_key : 'Key',
157
- context_name : 'Name',
158
- context_scope : 'Scope',
159
- project_id : 'Project',
160
- parent_context_id : 'Parent',
161
- sort_order : 'Sort order',
162
- is_active : 'Active',
163
- meta : 'Meta',
164
- created_at : 'Created at',
165
- updated_at : 'Updated at',
166
- },
167
- ru: {
168
- context_key : 'Ключ',
169
- context_name : 'Название',
170
- context_scope : 'Область',
171
- project_id : 'Проект',
172
- parent_context_id : 'Родитель',
173
- sort_order : 'Порядок',
174
- is_active : 'Активен',
175
- meta : 'Мета',
176
- created_at : 'Создано',
177
- updated_at : 'Обновлено',
178
- },
179
- };
144
+ return familyContext_i18n.attribute_name_translate_matrix;
180
145
  }
181
146
 
182
147
 
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Базовые переводы семейства familyContext (catalog + context_scope).
3
+ *
4
+ * @see familyContext
5
+ */
6
+ export const familyContext_i18n = {
7
+ attribute_name_translate_matrix: {
8
+ en: {
9
+ context_key : 'Key',
10
+ context_name : 'Name',
11
+ context_scope : 'Scope',
12
+ project_id : 'Project',
13
+ parent_context_id : 'Parent',
14
+ sort_order : 'Sort order',
15
+ is_active : 'Active',
16
+ meta : 'Meta',
17
+ created_at : 'Created at',
18
+ updated_at : 'Updated at',
19
+ },
20
+ ru: {
21
+ context_key : 'Ключ',
22
+ context_name : 'Название',
23
+ context_scope : 'Область',
24
+ project_id : 'Проект',
25
+ parent_context_id : 'Родитель',
26
+ sort_order : 'Порядок',
27
+ is_active : 'Активен',
28
+ meta : 'Мета',
29
+ created_at : 'Создано',
30
+ updated_at : 'Обновлено',
31
+ },
32
+ de: {
33
+ context_key : 'Schlüssel',
34
+ context_name : 'Name',
35
+ context_scope : 'Bereich',
36
+ project_id : 'Projekt',
37
+ parent_context_id : 'Übergeordnet',
38
+ sort_order : 'Sortierung',
39
+ is_active : 'Aktiv',
40
+ meta : 'Meta',
41
+ created_at : 'Erstellt am',
42
+ updated_at : 'Geändert am',
43
+ },
44
+ ar: {
45
+ context_key : 'المفتاح',
46
+ context_name : 'الاسم',
47
+ context_scope : 'النطاق',
48
+ project_id : 'المشروع',
49
+ parent_context_id : 'الأصل',
50
+ sort_order : 'ترتيب الفرز',
51
+ is_active : 'نشط',
52
+ meta : 'البيانات الوصفية',
53
+ created_at : 'تاريخ الإنشاء',
54
+ updated_at : 'تاريخ التحديث',
55
+ },
56
+ es: {
57
+ context_key : 'Clave',
58
+ context_name : 'Nombre',
59
+ context_scope : 'Ámbito',
60
+ project_id : 'Proyecto',
61
+ parent_context_id : 'Superior',
62
+ sort_order : 'Orden',
63
+ is_active : 'Activo',
64
+ meta : 'Meta',
65
+ created_at : 'Creado el',
66
+ updated_at : 'Actualizado el',
67
+ },
68
+ fr: {
69
+ context_key : 'Clé',
70
+ context_name : 'Nom',
71
+ context_scope : 'Portée',
72
+ project_id : 'Projet',
73
+ parent_context_id : 'Parent',
74
+ sort_order : 'Ordre',
75
+ is_active : 'Actif',
76
+ meta : 'Méta',
77
+ created_at : 'Créé le',
78
+ updated_at : 'Modifié le',
79
+ },
80
+ hy: {
81
+ context_key : 'Բանալի',
82
+ context_name : 'Անուն',
83
+ context_scope : 'Շրջանակ',
84
+ project_id : 'Նախագիծ',
85
+ parent_context_id : 'Ծնող',
86
+ sort_order : 'Կարգ',
87
+ is_active : 'Ակտիվ',
88
+ meta : 'Մետա',
89
+ created_at : 'Ստեղծված',
90
+ updated_at : 'Թարմացված',
91
+ },
92
+ it: {
93
+ context_key : 'Chiave',
94
+ context_name : 'Nome',
95
+ context_scope : 'Ambito',
96
+ project_id : 'Progetto',
97
+ parent_context_id : 'Genitore',
98
+ sort_order : 'Ordine',
99
+ is_active : 'Attivo',
100
+ meta : 'Meta',
101
+ created_at : 'Creato il',
102
+ updated_at : 'Aggiornato il',
103
+ },
104
+ pl: {
105
+ context_key : 'Klucz',
106
+ context_name : 'Nazwa',
107
+ context_scope : 'Zakres',
108
+ project_id : 'Projekt',
109
+ parent_context_id : 'Nadrzędny',
110
+ sort_order : 'Kolejność',
111
+ is_active : 'Aktywny',
112
+ meta : 'Meta',
113
+ created_at : 'Utworzono',
114
+ updated_at : 'Zaktualizowano',
115
+ },
116
+ pt: {
117
+ context_key : 'Chave',
118
+ context_name : 'Nome',
119
+ context_scope : 'Âmbito',
120
+ project_id : 'Projeto',
121
+ parent_context_id : 'Superior',
122
+ sort_order : 'Ordem',
123
+ is_active : 'Ativo',
124
+ meta : 'Meta',
125
+ created_at : 'Criado em',
126
+ updated_at : 'Atualizado em',
127
+ },
128
+ tt: {
129
+ context_key : 'Ачкыч',
130
+ context_name : 'Исем',
131
+ context_scope : 'Кырлык',
132
+ project_id : 'Проект',
133
+ parent_context_id : 'Өстәмә',
134
+ sort_order : 'Тәртип',
135
+ is_active : 'Актив',
136
+ meta : 'Мета',
137
+ created_at : 'Ясалган',
138
+ updated_at : 'Яңартылган',
139
+ },
140
+ },
141
+
142
+ enum_value_translate_matrix: {
143
+ context_scope: {
144
+ en: {
145
+ SYSTEM : 'System',
146
+ PROJECT: 'Project',
147
+ },
148
+ ru: {
149
+ SYSTEM : 'Системный',
150
+ PROJECT: 'Проекта',
151
+ },
152
+ de: {
153
+ SYSTEM : 'System',
154
+ PROJECT: 'Projekt',
155
+ },
156
+ ar: {
157
+ SYSTEM : 'النظام',
158
+ PROJECT: 'المشروع',
159
+ },
160
+ es: {
161
+ SYSTEM : 'Sistema',
162
+ PROJECT: 'Proyecto',
163
+ },
164
+ fr: {
165
+ SYSTEM : 'Système',
166
+ PROJECT: 'Projet',
167
+ },
168
+ hy: {
169
+ SYSTEM : 'Համակարգ',
170
+ PROJECT: 'Նախագիծ',
171
+ },
172
+ it: {
173
+ SYSTEM : 'Sistema',
174
+ PROJECT: 'Progetto',
175
+ },
176
+ pl: {
177
+ SYSTEM : 'System',
178
+ PROJECT: 'Projekt',
179
+ },
180
+ pt: {
181
+ SYSTEM : 'Sistema',
182
+ PROJECT: 'Projeto',
183
+ },
184
+ tt: {
185
+ SYSTEM : 'Система',
186
+ PROJECT: 'Проект',
187
+ },
188
+ },
189
+ },
190
+ };
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Общие переводы для family_utils.
3
+ */
4
+ export const familyUtil_i18n = {
5
+ execution_status: {
6
+ en: {
7
+ pending : 'Pending',
8
+ submit_failed: 'Submit failed',
9
+ queued : 'Queued',
10
+ completed : 'Completed',
11
+ failed : 'Failed',
12
+ },
13
+ ru: {
14
+ pending : 'Ожидание',
15
+ submit_failed: 'Ошибка отправки',
16
+ queued : 'В очереди',
17
+ completed : 'Завершено',
18
+ failed : 'Ошибка',
19
+ },
20
+ },
21
+
22
+ event_type: {
23
+ en: {
24
+ pending : 'Pending',
25
+ submit_failed : 'Submit failed',
26
+ queued : 'Queued',
27
+ completed : 'Completed',
28
+ failed : 'Failed',
29
+ callback_received: 'Callback received',
30
+ deleted : 'Deleted',
31
+ },
32
+ ru: {
33
+ pending : 'Ожидание',
34
+ submit_failed : 'Ошибка отправки',
35
+ queued : 'В очереди',
36
+ completed : 'Завершено',
37
+ failed : 'Ошибка',
38
+ callback_received: 'Получен callback',
39
+ deleted : 'Удалено',
40
+ },
41
+ },
42
+
43
+ capture_matrix_preset: {
44
+ en: {
45
+ default: 'Default matrix',
46
+ custom : 'Custom matrix',
47
+ },
48
+ ru: {
49
+ default: 'Матрица по умолчанию',
50
+ custom : 'Своя матрица',
51
+ },
52
+ },
53
+
54
+ wait_until: {
55
+ en: {
56
+ load : 'Load',
57
+ domcontentloaded: 'DOM content loaded',
58
+ networkidle : 'Network idle',
59
+ commit : 'Commit',
60
+ },
61
+ ru: {
62
+ load : 'Load',
63
+ domcontentloaded: 'DOM content loaded',
64
+ networkidle : 'Network idle',
65
+ commit : 'Commit',
66
+ },
67
+ },
68
+ };
@@ -0,0 +1,24 @@
1
+ import { familyContext_i18n } from './_familyContext.i18n.js';
2
+
3
+ const catalog = familyContext_i18n.attribute_name_translate_matrix;
4
+
5
+ /**
6
+ * Переводы для typeBrowserContext.
7
+ *
8
+ * @see typeBrowserContext
9
+ */
10
+ export const typeBrowserContext_i18n = {
11
+ attribute_name_translate_matrix: {
12
+ en: { ...catalog.en, browser_context_id: 'ID', browser_vendor: 'Vendor' },
13
+ ru: { ...catalog.ru, browser_context_id: 'ID', browser_vendor: 'Вендор' },
14
+ de: { ...catalog.de, browser_context_id: 'ID', browser_vendor: 'Anbieter' },
15
+ ar: { ...catalog.ar, browser_context_id: 'ID', browser_vendor: 'المورّد' },
16
+ es: { ...catalog.es, browser_context_id: 'ID', browser_vendor: 'Proveedor' },
17
+ fr: { ...catalog.fr, browser_context_id: 'ID', browser_vendor: 'Éditeur' },
18
+ hy: { ...catalog.hy, browser_context_id: 'ID', browser_vendor: 'Մատակարար' },
19
+ it: { ...catalog.it, browser_context_id: 'ID', browser_vendor: 'Fornitore' },
20
+ pl: { ...catalog.pl, browser_context_id: 'ID', browser_vendor: 'Dostawca' },
21
+ pt: { ...catalog.pt, browser_context_id: 'ID', browser_vendor: 'Fornecedor' },
22
+ tt: { ...catalog.tt, browser_context_id: 'ID', browser_vendor: 'Җitәвче' },
23
+ },
24
+ };