@dhis2/analytics 29.4.1 → 29.4.3

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 (37) hide show
  1. package/build/cjs/__demo__/AboutAOUnit.stories.js +142 -0
  2. package/build/cjs/components/AboutAOUnit/AboutAOUnit.js +15 -8
  3. package/build/cjs/components/AboutAOUnit/styles/AboutAOUnit.style.js +2 -2
  4. package/build/cjs/components/FileMenu/DeleteDialog.js +1 -1
  5. package/build/cjs/components/TranslationDialog/TranslationModal/TranslationForm.js +1 -0
  6. package/build/cjs/components/UserMention/useUserSearchResults.js +1 -1
  7. package/build/cjs/locales/en/translations.json +0 -12
  8. package/build/cjs/locales/id/translations.json +6 -6
  9. package/build/cjs/locales/km/translations.json +6 -6
  10. package/build/cjs/locales/lo/translations.json +6 -6
  11. package/build/cjs/locales/my/translations.json +6 -6
  12. package/build/cjs/locales/tet/translations.json +6 -6
  13. package/build/cjs/locales/th/translations.json +6 -6
  14. package/build/cjs/locales/vi/translations.json +6 -6
  15. package/build/cjs/locales/zh/translations.json +6 -6
  16. package/build/cjs/locales/zh_CN/translations.json +6 -6
  17. package/build/cjs/modules/pivotTable/useScrollPosition.js +2 -2
  18. package/build/cjs/modules/utils.js +1 -0
  19. package/build/es/__demo__/AboutAOUnit.stories.js +132 -0
  20. package/build/es/components/AboutAOUnit/AboutAOUnit.js +16 -9
  21. package/build/es/components/AboutAOUnit/styles/AboutAOUnit.style.js +2 -2
  22. package/build/es/components/FileMenu/DeleteDialog.js +1 -1
  23. package/build/es/components/TranslationDialog/TranslationModal/TranslationForm.js +1 -0
  24. package/build/es/components/UserMention/useUserSearchResults.js +2 -2
  25. package/build/es/locales/en/translations.json +0 -12
  26. package/build/es/locales/id/translations.json +6 -6
  27. package/build/es/locales/km/translations.json +6 -6
  28. package/build/es/locales/lo/translations.json +6 -6
  29. package/build/es/locales/my/translations.json +6 -6
  30. package/build/es/locales/tet/translations.json +6 -6
  31. package/build/es/locales/th/translations.json +6 -6
  32. package/build/es/locales/vi/translations.json +6 -6
  33. package/build/es/locales/zh/translations.json +6 -6
  34. package/build/es/locales/zh_CN/translations.json +6 -6
  35. package/build/es/modules/pivotTable/useScrollPosition.js +3 -3
  36. package/build/es/modules/utils.js +1 -0
  37. package/package.json +6 -7
@@ -12,13 +12,13 @@ const useScrollPosition = (containerRef, debounceWait = 10) => {
12
12
  x: 0,
13
13
  y: 0
14
14
  });
15
- const onScroll = (0, _react.useCallback)((0, _debounce.default)(() => {
15
+ const onScroll = (0, _react.useMemo)(() => (0, _debounce.default)(() => {
16
16
  const scroll = {
17
17
  x: containerRef.current.scrollLeft,
18
18
  y: containerRef.current.scrollTop
19
19
  };
20
20
  setScrollPosition(scroll);
21
- }, debounceWait));
21
+ }, debounceWait), [containerRef, debounceWait]);
22
22
  (0, _react.useEffect)(() => {
23
23
  const currentRef = containerRef.current;
24
24
  if (!currentRef) {
@@ -26,6 +26,7 @@ const useDidUpdateEffect = (fn, inputs) => {
26
26
  } else {
27
27
  didMountRef.current = true;
28
28
  }
29
+ // eslint-disable-next-line react-hooks/exhaustive-deps
29
30
  }, inputs);
30
31
  };
31
32
 
@@ -0,0 +1,132 @@
1
+ import { CustomDataProvider } from '@dhis2/app-runtime';
2
+ import React from 'react';
3
+ import AboutAOUnit from '../components/AboutAOUnit/AboutAOUnit.js';
4
+ const verboseData = {
5
+ visualizations: {
6
+ id: 'abc123verbose',
7
+ displayDescription: 'This is a comprehensive **visualization** showing district-level aggregate data across all 47 counties for the Expanded Programme on Immunization (EPI) including BCG, OPV, Pentavalent, and Measles-Rubella coverage rates disaggregated by age, sex, and facility ownership for the fiscal year 2024/2025.',
8
+ created: '2023-01-15T08:30:00.000',
9
+ createdBy: {
10
+ displayName: 'Dr. Alexandria Konstantinopolous-Whittington III, MD, PhD'
11
+ },
12
+ lastUpdated: '2024-11-02T14:22:00.000',
13
+ subscribed: true,
14
+ sharing: {
15
+ public: 'r',
16
+ users: {
17
+ u1: {
18
+ displayName: 'Maria-Fernanda de los Ángeles Gutiérrez-Montoya',
19
+ access: 'rw'
20
+ },
21
+ u2: {
22
+ displayName: 'Jean-Pierre Barthélémy Christophersen',
23
+ access: 'r'
24
+ }
25
+ },
26
+ userGroups: {
27
+ g1: {
28
+ displayName: 'National Immunization Programme Monitoring & Evaluation Team',
29
+ access: 'rw'
30
+ },
31
+ g2: {
32
+ displayName: 'District Health Information System Administrators Group',
33
+ access: 'r'
34
+ }
35
+ }
36
+ }
37
+ },
38
+ 'dataStatistics/favorites': {
39
+ views: 14873
40
+ }
41
+ };
42
+ const shortData = {
43
+ visualizations: {
44
+ id: 'xyz789short',
45
+ displayDescription: 'ANC coverage Q3',
46
+ created: '2025-12-01T10:00:00.000',
47
+ createdBy: {
48
+ displayName: 'Li Wei'
49
+ },
50
+ lastUpdated: '2026-04-10T09:00:00.000',
51
+ subscribed: false,
52
+ sharing: {
53
+ public: 'rw',
54
+ users: {},
55
+ userGroups: {
56
+ g1: {
57
+ displayName: 'HMIS',
58
+ access: 'r'
59
+ }
60
+ }
61
+ }
62
+ },
63
+ 'dataStatistics/favorites': {
64
+ views: 3
65
+ }
66
+ };
67
+ const missingFieldsData = {
68
+ visualizations: {
69
+ id: 'missing456',
70
+ displayDescription: null,
71
+ created: '2026-03-20T12:00:00.000',
72
+ createdBy: null,
73
+ lastUpdated: '2026-04-13T06:45:00.000',
74
+ subscribed: false,
75
+ sharing: {
76
+ public: '',
77
+ users: {},
78
+ userGroups: {}
79
+ }
80
+ },
81
+ 'dataStatistics/favorites': {
82
+ views: 0
83
+ }
84
+ };
85
+ export default {
86
+ title: 'AboutAOUnit'
87
+ };
88
+ export const VerboseData = () => /*#__PURE__*/React.createElement(CustomDataProvider, {
89
+ data: verboseData
90
+ }, /*#__PURE__*/React.createElement("div", {
91
+ style: {
92
+ width: 372,
93
+ padding: '16px',
94
+ backgroundColor: 'lightgray'
95
+ }
96
+ }, /*#__PURE__*/React.createElement(AboutAOUnit, {
97
+ type: "visualization",
98
+ id: "abc123verbose"
99
+ })));
100
+ VerboseData.story = {
101
+ name: 'Verbose data with long labels'
102
+ };
103
+ export const ShortLabels = () => /*#__PURE__*/React.createElement(CustomDataProvider, {
104
+ data: shortData
105
+ }, /*#__PURE__*/React.createElement("div", {
106
+ style: {
107
+ width: 372,
108
+ padding: '16px',
109
+ backgroundColor: 'lightgray'
110
+ }
111
+ }, /*#__PURE__*/React.createElement(AboutAOUnit, {
112
+ type: "visualization",
113
+ id: "xyz789short"
114
+ })));
115
+ ShortLabels.story = {
116
+ name: 'Short labels'
117
+ };
118
+ export const MissingFields = () => /*#__PURE__*/React.createElement(CustomDataProvider, {
119
+ data: missingFieldsData
120
+ }, /*#__PURE__*/React.createElement("div", {
121
+ style: {
122
+ width: 372,
123
+ padding: '16px',
124
+ backgroundColor: 'lightgray'
125
+ }
126
+ }, /*#__PURE__*/React.createElement(AboutAOUnit, {
127
+ type: "visualization",
128
+ id: "missing456"
129
+ })));
130
+ MissingFields.story = {
131
+ name: 'Missing fields (no description, no author, no sharing)'
132
+ };
@@ -1,7 +1,7 @@
1
1
  import _JSXStyle from "styled-jsx/style";
2
2
  import { useDataQuery, useDataMutation, useTimeZoneConversion } from '@dhis2/app-runtime';
3
3
  import i18n from '@dhis2/d2-i18n';
4
- import { Button, CircularLoader, IconChevronDown24, IconChevronUp24, IconClock16, IconShare16, IconSubscribe24, IconSubscribeOff24, IconUser16, IconView16, colors } from '@dhis2/ui';
4
+ import { Button, CircularLoader, IconChevronDown24, IconChevronUp24, IconClock16, IconShare16, IconSubscribe16, IconSubscribeOff16, IconUser16, IconView16, colors } from '@dhis2/ui';
5
5
  import cx from 'classnames';
6
6
  import moment from 'moment';
7
7
  import PropTypes from 'prop-types';
@@ -139,8 +139,7 @@ const AboutAOUnit = /*#__PURE__*/forwardRef(({
139
139
  })), data && /*#__PURE__*/React.createElement("div", {
140
140
  className: `jsx-${styles.__hash}` + " " + "content"
141
141
  }, /*#__PURE__*/React.createElement("div", {
142
- className: `jsx-${styles.__hash}` + " " + (cx('detailLine', {
143
- description: true,
142
+ className: `jsx-${styles.__hash}` + " " + (cx('description', {
144
143
  noDescription: !data.ao.displayDescription
145
144
  }) || "")
146
145
  }, data.ao.displayDescription ? /*#__PURE__*/React.createElement(RichTextParser, null, data.ao.displayDescription) : /*#__PURE__*/React.createElement("p", {
@@ -149,28 +148,36 @@ const AboutAOUnit = /*#__PURE__*/forwardRef(({
149
148
  className: `jsx-${styles.__hash}`
150
149
  }, /*#__PURE__*/React.createElement("p", {
151
150
  className: `jsx-${styles.__hash}` + " " + "detailLine"
151
+ }, /*#__PURE__*/React.createElement("span", {
152
+ className: `jsx-${styles.__hash}` + " " + "icon"
152
153
  }, /*#__PURE__*/React.createElement(IconShare16, {
153
154
  color: colors.grey700
154
- }), getSharingSummary(data.ao)), /*#__PURE__*/React.createElement("p", {
155
+ })), getSharingSummary(data.ao)), /*#__PURE__*/React.createElement("p", {
155
156
  className: `jsx-${styles.__hash}` + " " + "detailLine"
157
+ }, /*#__PURE__*/React.createElement("span", {
158
+ className: `jsx-${styles.__hash}` + " " + "icon"
156
159
  }, /*#__PURE__*/React.createElement(IconClock16, {
157
160
  color: colors.grey700
158
- }), i18n.t('Last updated {{time}}', {
161
+ })), i18n.t('Last updated {{time}}', {
159
162
  time: moment(fromServerDate(data.ao.lastUpdated)).fromNow()
160
163
  })), /*#__PURE__*/React.createElement("p", {
161
164
  className: `jsx-${styles.__hash}` + " " + "detailLine"
165
+ }, /*#__PURE__*/React.createElement("span", {
166
+ className: `jsx-${styles.__hash}` + " " + "icon"
162
167
  }, /*#__PURE__*/React.createElement(IconUser16, {
163
168
  color: colors.grey700
164
- }), (_data$ao$createdBy = data.ao.createdBy) !== null && _data$ao$createdBy !== void 0 && _data$ao$createdBy.displayName ? i18n.t('Created {{time}} by {{author}}', {
169
+ })), (_data$ao$createdBy = data.ao.createdBy) !== null && _data$ao$createdBy !== void 0 && _data$ao$createdBy.displayName ? i18n.t('Created {{time}} by {{author}}', {
165
170
  time: moment(fromServerDate(data.ao.created)).fromNow(),
166
171
  author: data.ao.createdBy.displayName
167
172
  }) : i18n.t('Created {{time}}', {
168
173
  time: moment(fromServerDate(data.ao.created)).fromNow()
169
174
  })), /*#__PURE__*/React.createElement("p", {
170
175
  className: `jsx-${styles.__hash}` + " " + "detailLine"
176
+ }, /*#__PURE__*/React.createElement("span", {
177
+ className: `jsx-${styles.__hash}` + " " + "icon"
171
178
  }, /*#__PURE__*/React.createElement(IconView16, {
172
179
  color: colors.grey700
173
- }), i18n.t('Viewed {{count}} times', {
180
+ })), i18n.t('Viewed {{count}} times', {
174
181
  count: data.dataStatistics.views,
175
182
  defaultValue: 'Viewed 1 time',
176
183
  defaultValue_plural: 'Viewed {{count}} times'
@@ -181,7 +188,7 @@ const AboutAOUnit = /*#__PURE__*/forwardRef(({
181
188
  }, i18n.t('Notifications')), data.ao.subscribed ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
182
189
  className: `jsx-${styles.__hash}` + " " + "subscriptionLabel"
183
190
  }, i18n.t("You're subscribed and getting updates about new interpretations.")), /*#__PURE__*/React.createElement(Button, {
184
- icon: /*#__PURE__*/React.createElement(IconSubscribeOff24, {
191
+ icon: /*#__PURE__*/React.createElement(IconSubscribeOff16, {
185
192
  color: colors.grey700
186
193
  }),
187
194
  secondary: true,
@@ -191,7 +198,7 @@ const AboutAOUnit = /*#__PURE__*/forwardRef(({
191
198
  }, i18n.t('Unsubscribe'))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", {
192
199
  className: `jsx-${styles.__hash}` + " " + "subscriptionLabel"
193
200
  }, i18n.t('Subscribe to get updates about new interpretations.')), /*#__PURE__*/React.createElement(Button, {
194
- icon: /*#__PURE__*/React.createElement(IconSubscribe24, {
201
+ icon: /*#__PURE__*/React.createElement(IconSubscribe16, {
195
202
  color: colors.grey700
196
203
  }),
197
204
  secondary: true,
@@ -1,4 +1,4 @@
1
1
  import { colors, spacers } from '@dhis2/ui';
2
- const _defaultExport = [`.container.jsx-3095370592{position:relative;padding:${spacers.dp16};border-bottom:1px solid ${colors.grey400};background-color:${colors.white};}`, `.expanded.jsx-3095370592{padding-bottom:${spacers.dp32};}`, ".loader.jsx-3095370592{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}", ".header.jsx-3095370592{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;cursor:pointer;}", `.title.jsx-3095370592{font-size:16px;font-weight:500;line-height:21px;color:${colors.grey900};}`, `.content.jsx-3095370592{font-size:14px;line-height:18px;color:${colors.grey900};}`, `.detailLine.jsx-3095370592{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;margin:0;padding:${spacers.dp12} 0 0 0;gap:${spacers.dp8};}`, ".detailLine.jsx-3095370592 svg.jsx-3095370592{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;}", ".description.jsx-3095370592{white-space:pre-line;}", `.noDescription.jsx-3095370592{color:${colors.grey600};}`, `.subsection.jsx-3095370592{margin-top:${spacers.dp24};}`, `.subsectionTitle.jsx-3095370592{color:${colors.grey700};font-weight:500;}`, `.subscriptionLabel.jsx-3095370592{margin:${spacers.dp12} 0 ${spacers.dp8} 0;}`, `.subsection.jsx-3095370592 button.jsx-3095370592{margin-top:${spacers.dp8};}`];
3
- _defaultExport.__hash = "3095370592";
2
+ const _defaultExport = [`.container.jsx-3783470976{position:relative;padding:${spacers.dp16};border-bottom:1px solid ${colors.grey400};background-color:${colors.white};}`, `.expanded.jsx-3783470976{padding-bottom:${spacers.dp16};}`, `.loader.jsx-3783470976{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;padding-top:${spacers.dp16};}`, ".header.jsx-3783470976{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;}", `.title.jsx-3783470976{font-size:16px;font-weight:500;line-height:21px;color:${colors.grey900};}`, `.content.jsx-3783470976{font-size:14px;line-height:20px;color:${colors.grey900};}`, `.detailLine.jsx-3783470976{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:flex-start;-webkit-box-align:flex-start;-ms-flex-align:flex-start;align-items:flex-start;margin:0;padding:${spacers.dp12} 0 0 0;gap:${spacers.dp8};}`, ".detailLine.jsx-3783470976 .icon.jsx-3783470976{-webkit-flex-shrink:0;-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:20px;}", ".description.jsx-3783470976{padding:0;}", `.description.jsx-3783470976 p{margin:${spacers.dp8} 0 ${spacers.dp4} 0;white-space:pre-line;}`, `.noDescription.jsx-3783470976{color:${colors.grey500};}`, `.subsection.jsx-3783470976{margin-top:${spacers.dp24};}`, `.subsectionTitle.jsx-3783470976{color:${colors.grey800};font-weight:500;margin:0;}`, `.subscriptionLabel.jsx-3783470976{font-size:13px;line-height:18px;margin:${spacers.dp4} 0 ${spacers.dp8} 0;color:${colors.grey600};}`];
3
+ _defaultExport.__hash = "3783470976";
4
4
  export default _defaultExport;
@@ -18,7 +18,7 @@ export const DeleteDialog = ({
18
18
  onDelete,
19
19
  onError
20
20
  }) => {
21
- const mutation = useMemo(() => getMutation(type), []);
21
+ const mutation = useMemo(() => getMutation(type), [type]);
22
22
  const [mutate] = useDataMutation(mutation, {
23
23
  variables: {
24
24
  id
@@ -92,6 +92,7 @@ export const TranslationForm = ({
92
92
  useEffect(() => {
93
93
  const fetchTranslations = () => fetchFieldsTranslations(fieldsToTranslate);
94
94
  fetchTranslations();
95
+ // eslint-disable-next-line react-hooks/exhaustive-deps
95
96
  }, [fieldsToTranslate]);
96
97
  useEffect(() => setNewTranslations(translations), [translations]);
97
98
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ModalContent, null, /*#__PURE__*/React.createElement(DataTable, {
@@ -1,6 +1,6 @@
1
1
  import { useDataQuery } from '@dhis2/app-runtime';
2
2
  import debounce from 'lodash/debounce';
3
- import { useCallback, useEffect, useState } from 'react';
3
+ import { useEffect, useMemo, useState } from 'react';
4
4
  const usersQuery = {
5
5
  users: {
6
6
  resource: 'users/gist',
@@ -32,7 +32,7 @@ export const useUserSearchResults = ({
32
32
  } = useDataQuery(usersQuery, {
33
33
  lazy: true
34
34
  });
35
- const debouncedRefetch = useCallback(debounce(refetch, 250), [refetch]);
35
+ const debouncedRefetch = useMemo(() => debounce(refetch, 250), [refetch]);
36
36
  useEffect(() => {
37
37
  if (searchText.length) {
38
38
  debouncedRefetch({
@@ -9,8 +9,6 @@
9
9
  "Last updated {{time}}": "Last updated {{time}}",
10
10
  "Created {{time}} by {{author}}": "Created {{time}} by {{author}}",
11
11
  "Created {{time}}": "Created {{time}}",
12
- "Viewed {{count}} times": "Viewed 1 time",
13
- "Viewed {{count}} times_plural": "Viewed {{count}} times",
14
12
  "Notifications": "Notifications",
15
13
  "You're subscribed and getting updates about new interpretations.": "You're subscribed and getting updates about new interpretations.",
16
14
  "Unsubscribe": "Unsubscribe",
@@ -187,8 +185,6 @@
187
185
  "Error loading interpretations": "Error loading interpretations",
188
186
  "Could not load interpretations": "Could not load interpretations",
189
187
  "Reply": "Reply",
190
- "{{count}} replies": "{{count}} reply",
191
- "{{count}} replies_plural": "{{count}} replies",
192
188
  "View replies": "View replies",
193
189
  "Unlike": "Unlike",
194
190
  "Like": "Like",
@@ -238,12 +234,6 @@
238
234
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "No line lists found. Try adjusting your search or filter options to find what you're looking for.",
239
235
  "New line list": "New line list",
240
236
  "Hide": "Hide",
241
- "{{count}} org units": "{{count}} org unit",
242
- "{{count}} org units_plural": "{{count}} org units",
243
- "{{count}} levels": "{{count}} level",
244
- "{{count}} levels_plural": "{{count}} levels",
245
- "{{count}} groups": "{{count}} group",
246
- "{{count}} groups_plural": "{{count}} groups",
247
237
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "Selected: {{commaSeparatedListOfOrganisationUnits}}",
248
238
  "Nothing selected": "Nothing selected",
249
239
  "User organisation unit": "User organisation unit",
@@ -478,7 +468,5 @@
478
468
  "Target": "Target",
479
469
  "Base": "Base",
480
470
  "Axis {{axisId}}": "Axis {{axisId}}",
481
- "{{count}} items": "{{count}} item",
482
- "{{count}} items_plural": "{{count}} items",
483
471
  "Reset zoom": "Reset zoom"
484
472
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "Terakhir diperbarui {{time}}",
10
10
  "Created {{time}} by {{author}}": "",
11
11
  "Created {{time}}": "",
12
- "Viewed {{count}} times": "",
12
+ "Viewed {{count}} times_0": "",
13
13
  "Notifications": "",
14
14
  "You're subscribed and getting updates about new interpretations.": "",
15
15
  "Unsubscribe": "",
@@ -186,7 +186,7 @@
186
186
  "Error loading interpretations": "",
187
187
  "Could not load interpretations": "",
188
188
  "Reply": "Balas",
189
- "{{count}} replies": "balasan {{count}} ",
189
+ "{{count}} replies_0": "balasan {{count}} ",
190
190
  "View replies": "",
191
191
  "Unlike": "Batalkan Suka",
192
192
  "Like": "Suka",
@@ -236,9 +236,9 @@
236
236
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "",
237
237
  "New line list": "",
238
238
  "Hide": "Sembunyikan",
239
- "{{count}} org units": "",
240
- "{{count}} levels": "",
241
- "{{count}} groups": "",
239
+ "{{count}} org units_0": "",
240
+ "{{count}} levels_0": "",
241
+ "{{count}} groups_0": "",
242
242
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "",
243
243
  "Nothing selected": "",
244
244
  "User organisation unit": "",
@@ -467,6 +467,6 @@
467
467
  "Target": "Target",
468
468
  "Base": "Dasar",
469
469
  "Axis {{axisId}}": "Sumbu {{axisId}}",
470
- "{{count}} items": "",
470
+ "{{count}} items_0": "",
471
471
  "Reset zoom": "Setel ulang zoom"
472
472
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "",
10
10
  "Created {{time}} by {{author}}": "",
11
11
  "Created {{time}}": "",
12
- "Viewed {{count}} times": "",
12
+ "Viewed {{count}} times_0": "",
13
13
  "Notifications": "",
14
14
  "You're subscribed and getting updates about new interpretations.": "",
15
15
  "Unsubscribe": "",
@@ -186,7 +186,7 @@
186
186
  "Error loading interpretations": "",
187
187
  "Could not load interpretations": "",
188
188
  "Reply": "ឆ្លើយតប",
189
- "{{count}} replies": "",
189
+ "{{count}} replies_0": "",
190
190
  "View replies": "",
191
191
  "Unlike": "",
192
192
  "Like": "",
@@ -236,9 +236,9 @@
236
236
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "",
237
237
  "New line list": "",
238
238
  "Hide": "លាក់",
239
- "{{count}} org units": "",
240
- "{{count}} levels": "",
241
- "{{count}} groups": "",
239
+ "{{count}} org units_0": "",
240
+ "{{count}} levels_0": "",
241
+ "{{count}} groups_0": "",
242
242
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "",
243
243
  "Nothing selected": "",
244
244
  "User organisation unit": "មូលដ្ឋានសុខាភិបាល របស់អ្នកប្រើប្រាស់",
@@ -467,6 +467,6 @@
467
467
  "Target": "",
468
468
  "Base": "",
469
469
  "Axis {{axisId}}": "អ័ក្ស {{axisId}}",
470
- "{{count}} items": "",
470
+ "{{count}} items_0": "",
471
471
  "Reset zoom": ""
472
472
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "ແກ້ໄຂລ່າສຸດ {{time}}",
10
10
  "Created {{time}} by {{author}}": "ສ້າງ {{time}} ໂດຍ {{author}}",
11
11
  "Created {{time}}": "ສ້າງ {{time}}",
12
- "Viewed {{count}} times": "ກວດເບິ່ງ {{count}} ຄັ້ງ",
12
+ "Viewed {{count}} times_0": "ກວດເບິ່ງ {{count}} ຄັ້ງ",
13
13
  "Notifications": "ການແຈ້ງເຕືອນ",
14
14
  "You're subscribed and getting updates about new interpretations.": "ທ່ານກົດປູ່ມສະໜັກ ເພື່ອຈະໄດ້ອັບເດດ ແລະ ຮັບຂໍ້ມູນໃໝ່",
15
15
  "Unsubscribe": "ຍົກເລີກການສະໝັກ",
@@ -186,7 +186,7 @@
186
186
  "Error loading interpretations": "",
187
187
  "Could not load interpretations": "",
188
188
  "Reply": "ຕອບກັບ",
189
- "{{count}} replies": "{{count}} ການຕອບກັບ",
189
+ "{{count}} replies_0": "{{count}} ການຕອບກັບ",
190
190
  "View replies": "ເບິ່ງການຕອບກັບ",
191
191
  "Unlike": "ບໍ່ມັກ",
192
192
  "Like": "ມັກ",
@@ -236,9 +236,9 @@
236
236
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "ບໍ່ພົບບັນຊີລາຍຊື່. ລອງປັບຕົວເລືອກການຄົ້ນຫາ ຫຼື ຕົວກອງເພື່ອສິ່ງທີ່ທ່ານກໍາລັງຄົ້ນຫາ.",
237
237
  "New line list": "ເພີ່ມບັນຊີລາຍຊື່ໃໝ່",
238
238
  "Hide": "ເຊື່ອງ",
239
- "{{count}} org units": "{{count}} ໜ່ວຍງານອົງການ",
240
- "{{count}} levels": "{{count}} ຂັ້ນ",
241
- "{{count}} groups": "{{count}} ກຸ່ມ",
239
+ "{{count}} org units_0": "{{count}} ໜ່ວຍງານອົງການ",
240
+ "{{count}} levels_0": "{{count}} ຂັ້ນ",
241
+ "{{count}} groups_0": "{{count}} ກຸ່ມ",
242
242
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "ເລືອກ {{commaSeparatedListOfOrganisationUnits}}",
243
243
  "Nothing selected": "ບໍ່ມີຫຍັງເລືອກ",
244
244
  "User organisation unit": "ຫນ່ວຍງານການຈັດຕັ້ງຂອງຜູ້ໃຊ້",
@@ -467,6 +467,6 @@
467
467
  "Target": "ເປົ້າໝາຍ",
468
468
  "Base": "ຖານ",
469
469
  "Axis {{axisId}}": "ແກນ {{axisId}}",
470
- "{{count}} items": "{{count}} ລາຍການ",
470
+ "{{count}} items_0": "{{count}} ລາຍການ",
471
471
  "Reset zoom": "ຣີເຊັດຊູມ"
472
472
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "",
10
10
  "Created {{time}} by {{author}}": "",
11
11
  "Created {{time}}": "",
12
- "Viewed {{count}} times": "",
12
+ "Viewed {{count}} times_0": "",
13
13
  "Notifications": "",
14
14
  "You're subscribed and getting updates about new interpretations.": "",
15
15
  "Unsubscribe": "",
@@ -179,7 +179,7 @@
179
179
  "Post interpretation": "",
180
180
  "Interpretations": "ဘာသာပြန်ခြင်းများ",
181
181
  "Reply": "အကြောင်းပြန်သည်",
182
- "{{count}} replies": "",
182
+ "{{count}} replies_0": "",
183
183
  "View replies": "",
184
184
  "Unlike": "Больше не нравится",
185
185
  "Like": "Нравится",
@@ -227,9 +227,9 @@
227
227
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "",
228
228
  "New line list": "",
229
229
  "Hide": "",
230
- "{{count}} org units": "",
231
- "{{count}} levels": "",
232
- "{{count}} groups": "",
230
+ "{{count}} org units_0": "",
231
+ "{{count}} levels_0": "",
232
+ "{{count}} groups_0": "",
233
233
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "",
234
234
  "Nothing selected": "",
235
235
  "User organisation unit": "",
@@ -458,6 +458,6 @@
458
458
  "Target": "ပစ်မှတ်/ ဦးတည်ချက်",
459
459
  "Base": "အခြေ",
460
460
  "Axis {{axisId}}": "",
461
- "{{count}} items": "",
461
+ "{{count}} items_0": "",
462
462
  "Reset zoom": ""
463
463
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "",
10
10
  "Created {{time}} by {{author}}": "",
11
11
  "Created {{time}}": "",
12
- "Viewed {{count}} times": "",
12
+ "Viewed {{count}} times_0": "",
13
13
  "Notifications": "",
14
14
  "You're subscribed and getting updates about new interpretations.": "",
15
15
  "Unsubscribe": "",
@@ -186,7 +186,7 @@
186
186
  "Error loading interpretations": "",
187
187
  "Could not load interpretations": "",
188
188
  "Reply": "Hatán",
189
- "{{count}} replies": "",
189
+ "{{count}} replies_0": "",
190
190
  "View replies": "",
191
191
  "Unlike": "",
192
192
  "Like": "",
@@ -236,9 +236,9 @@
236
236
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "",
237
237
  "New line list": "",
238
238
  "Hide": "Subar",
239
- "{{count}} org units": "",
240
- "{{count}} levels": "",
241
- "{{count}} groups": "",
239
+ "{{count}} org units_0": "",
240
+ "{{count}} levels_0": "",
241
+ "{{count}} groups_0": "",
242
242
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "",
243
243
  "Nothing selected": "",
244
244
  "User organisation unit": "",
@@ -467,6 +467,6 @@
467
467
  "Target": "Alvu",
468
468
  "Base": "Baze",
469
469
  "Axis {{axisId}}": "",
470
- "{{count}} items": "",
470
+ "{{count}} items_0": "",
471
471
  "Reset zoom": ""
472
472
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "",
10
10
  "Created {{time}} by {{author}}": "",
11
11
  "Created {{time}}": "",
12
- "Viewed {{count}} times": "",
12
+ "Viewed {{count}} times_0": "",
13
13
  "Notifications": "",
14
14
  "You're subscribed and getting updates about new interpretations.": "",
15
15
  "Unsubscribe": "",
@@ -122,7 +122,7 @@
122
122
  "Post interpretation": "",
123
123
  "Interpretations": "",
124
124
  "Reply": "",
125
- "{{count}} replies": "",
125
+ "{{count}} replies_0": "",
126
126
  "View replies": "",
127
127
  "Unlike": "",
128
128
  "Like": "",
@@ -184,9 +184,9 @@
184
184
  "New line list": "",
185
185
  "Options": "",
186
186
  "Hide": "",
187
- "{{count}} org units": "",
188
- "{{count}} levels": "",
189
- "{{count}} groups": "",
187
+ "{{count}} org units_0": "",
188
+ "{{count}} levels_0": "",
189
+ "{{count}} groups_0": "",
190
190
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "",
191
191
  "Nothing selected": "",
192
192
  "User organisation unit": "",
@@ -379,6 +379,6 @@
379
379
  "Target": "",
380
380
  "Base": "",
381
381
  "Axis {{axisId}}": "",
382
- "{{count}} items": "",
382
+ "{{count}} items_0": "",
383
383
  "Reset zoom": ""
384
384
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "Cập nhật lần cuối {{time}}",
10
10
  "Created {{time}} by {{author}}": "Được tạo {{time}}bởi {{author}}",
11
11
  "Created {{time}}": "Được tạo {{time}}",
12
- "Viewed {{count}} times": "Đã xem {{count}}lần",
12
+ "Viewed {{count}} times_0": "Đã xem {{count}}lần",
13
13
  "Notifications": "Thông báo",
14
14
  "You're subscribed and getting updates about new interpretations.": "Bạn đã đăng ký và đang nhận thông tin cập nhật về những diễn giải mới.",
15
15
  "Unsubscribe": "Hủy đăng ký",
@@ -186,7 +186,7 @@
186
186
  "Error loading interpretations": "",
187
187
  "Could not load interpretations": "",
188
188
  "Reply": "Trả lời",
189
- "{{count}} replies": "{{count}} câu trả lời",
189
+ "{{count}} replies_0": "{{count}} câu trả lời",
190
190
  "View replies": "Xem trả lời",
191
191
  "Unlike": "Không thích",
192
192
  "Like": "Thích",
@@ -236,9 +236,9 @@
236
236
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "Không tìm thấy danh sách dòng nào. Hãy thử điều chỉnh tùy chọn tìm kiếm hoặc bộ lọc để tìm những gì bạn đang tìm kiếm.",
237
237
  "New line list": "Danh sách dòng mới",
238
238
  "Hide": "Ẩn",
239
- "{{count}} org units": "{{count}} đơn vị",
240
- "{{count}} levels": "{{count}} cấp độ",
241
- "{{count}} groups": "{{count}} nhóm",
239
+ "{{count}} org units_0": "{{count}} đơn vị",
240
+ "{{count}} levels_0": "{{count}} cấp độ",
241
+ "{{count}} groups_0": "{{count}} nhóm",
242
242
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "Đã chọn: {{commaSeparatedListOfOrganisationUnits}}",
243
243
  "Nothing selected": "Không có gì được chọn",
244
244
  "User organisation unit": "Đơn vị người dùng",
@@ -467,6 +467,6 @@
467
467
  "Target": "Mục tiêu",
468
468
  "Base": "Đường đáy",
469
469
  "Axis {{axisId}}": "Trục {{axisId}}",
470
- "{{count}} items": "{{count}}mục",
470
+ "{{count}} items_0": "{{count}}mục",
471
471
  "Reset zoom": "Đặt lại thu phóng"
472
472
  }
@@ -9,7 +9,7 @@
9
9
  "Last updated {{time}}": "最后更新 {{time}}",
10
10
  "Created {{time}} by {{author}}": "由 {{author}} 在 {{time}} 创建",
11
11
  "Created {{time}}": "已创建 {{time}}",
12
- "Viewed {{count}} times": "查看了 {{count}} 条",
12
+ "Viewed {{count}} times_0": "查看了 {{count}} 条",
13
13
  "Notifications": "通知",
14
14
  "You're subscribed and getting updates about new interpretations.": "您已订阅并获取有关新解释的更新。",
15
15
  "Unsubscribe": "退订",
@@ -186,7 +186,7 @@
186
186
  "Error loading interpretations": "",
187
187
  "Could not load interpretations": "",
188
188
  "Reply": "应答",
189
- "{{count}} replies": "{{count}}条回复",
189
+ "{{count}} replies_0": "{{count}}条回复",
190
190
  "View replies": "查看回复",
191
191
  "Unlike": "不喜欢",
192
192
  "Like": "喜欢",
@@ -236,9 +236,9 @@
236
236
  "No line lists found. Try adjusting your search or filter options to find what you're looking for.": "未找到行列表。尝试调整您的搜索或过滤选项以找到您要查找的内容。",
237
237
  "New line list": "新行列表",
238
238
  "Hide": "隐藏",
239
- "{{count}} org units": "{{count}} 个组织单位",
240
- "{{count}} levels": "{{count}} 级",
241
- "{{count}} groups": "{{count}} 组",
239
+ "{{count}} org units_0": "{{count}} 个组织单位",
240
+ "{{count}} levels_0": "{{count}} 级",
241
+ "{{count}} groups_0": "{{count}} 组",
242
242
  "Selected: {{commaSeparatedListOfOrganisationUnits}}": "已选择:{{commaSeparatedListOfOrganisationUnits}}",
243
243
  "Nothing selected": "未选择任何内容",
244
244
  "User organisation unit": "用户所在机构",
@@ -467,6 +467,6 @@
467
467
  "Target": "目标",
468
468
  "Base": "基",
469
469
  "Axis {{axisId}}": "轴{{axisId}}",
470
- "{{count}} items": "{{count}} 个条目",
470
+ "{{count}} items_0": "{{count}} 个条目",
471
471
  "Reset zoom": "重设缩放"
472
472
  }