diff --git a/.tx/config b/.tx/config index 5b3223f33..9cff8d175 100644 --- a/.tx/config +++ b/.tx/config @@ -1,6 +1,6 @@ [main] host = https://www.transifex.com -lang_map = fa_AF: prs, uz@Cyrl: uz, uz@Latn: uz_Latn +lang_map = fa_AF: prs, uz@Cyrl: uz_UZ_Cyrl, uz@Latn: uz_UZ_Latn [o:hisp-uio:p:app-analytics:r:en-pot] file_filter = i18n/.po diff --git a/CHANGELOG.md b/CHANGELOG.md index e871dced6..8356c8ff6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,210 @@ +# [26.3.0](https://github.com/dhis2/analytics/compare/v26.2.4...v26.3.0) (2024-01-25) + + +### Features + +* add classname prop to hover-menu-dropdown ([57eb703](https://github.com/dhis2/analytics/commit/57eb703a4227e6496d021fdb17d6d4fd0e935eb9)) + +## [26.2.4](https://github.com/dhis2/analytics/compare/v26.2.3...v26.2.4) (2024-01-21) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([41aa57f](https://github.com/dhis2/analytics/commit/41aa57ff24e790b8db2e21d916b22fb03d6878b2)) + +## [26.2.3](https://github.com/dhis2/analytics/compare/v26.2.2...v26.2.3) (2024-01-19) + + +### Bug Fixes + +* adjust width of interpretation reply input when in focus [DHIS2-16429] ([#1607](https://github.com/dhis2/analytics/issues/1607)) ([14fbfb5](https://github.com/dhis2/analytics/commit/14fbfb5bbfbbaa430631d39b8ca77c68817f10a4)) + +## [26.2.2](https://github.com/dhis2/analytics/compare/v26.2.1...v26.2.2) (2024-01-02) + + +### Bug Fixes + +* add white-space css to preserve paragraphs in interpretations ([#1599](https://github.com/dhis2/analytics/issues/1599)) ([52ae98d](https://github.com/dhis2/analytics/commit/52ae98d3cadd975c2079055b00adba58f0982ef4)) + +## [26.2.1](https://github.com/dhis2/analytics/compare/v26.2.0...v26.2.1) (2023-12-24) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([bac4cc9](https://github.com/dhis2/analytics/commit/bac4cc94572b2e8367fb3d1f061eb7ed122f372f)) + +# [26.2.0](https://github.com/dhis2/analytics/compare/v26.1.8...v26.2.0) (2023-12-14) + + +### Features + +* implement cumulative values in PT engine (DHIS2-5497) ([#1567](https://github.com/dhis2/analytics/issues/1567)) ([2b404b4](https://github.com/dhis2/analytics/commit/2b404b423cfb49347bdf57125870bb7b55338322)) + +## [26.1.8](https://github.com/dhis2/analytics/compare/v26.1.7...v26.1.8) (2023-11-26) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([43a607b](https://github.com/dhis2/analytics/commit/43a607ba0310b19edd07d866f15337e736567b2f)) + +## [26.1.7](https://github.com/dhis2/analytics/compare/v26.1.6...v26.1.7) (2023-11-19) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([cb4a052](https://github.com/dhis2/analytics/commit/cb4a052a19ebdced3ea7b6ffb7d1c40064abac38)) + +## [26.1.6](https://github.com/dhis2/analytics/compare/v26.1.5...v26.1.6) (2023-11-07) + + +### Bug Fixes + +* use json+patch for PATCH requests ([#1593](https://github.com/dhis2/analytics/issues/1593)) ([bdb0b9c](https://github.com/dhis2/analytics/commit/bdb0b9ceaa5ef102ef9768038c763b70a3d5e7d1)) + +## [26.1.5](https://github.com/dhis2/analytics/compare/v26.1.4...v26.1.5) (2023-11-03) + + +### Bug Fixes + +* use correct colors in "basic" color set ([#1592](https://github.com/dhis2/analytics/issues/1592)) ([6356250](https://github.com/dhis2/analytics/commit/63562501bd8b020742bb7ee8b17621975790c3c6)) + +## [26.1.4](https://github.com/dhis2/analytics/compare/v26.1.3...v26.1.4) (2023-10-29) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([435e077](https://github.com/dhis2/analytics/commit/435e07717c586365dfa67ad9ffb8acd5167e9ea2)) + +## [26.1.3](https://github.com/dhis2/analytics/compare/v26.1.2...v26.1.3) (2023-10-22) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([0a250af](https://github.com/dhis2/analytics/commit/0a250af64b9df6bfd7334f6cf2ecc5d150003e2d)) + +## [26.1.2](https://github.com/dhis2/analytics/compare/v26.1.1...v26.1.2) (2023-10-18) + + +### Bug Fixes + +* handle both Set and array for currentUser.authorities when checking interpretations access (DHIS2-15964) ([d3d45ab](https://github.com/dhis2/analytics/commit/d3d45abd352a6b9609d732c24a718fef83b076c7)) +* interpretation panel display date and timestamps according to client time zone (DHIS2-15825) ([8e60f26](https://github.com/dhis2/analytics/commit/8e60f266bd55f8dee9745ad1930f6525e3ca96f3)) +* interpretations modal height (DHIS2-15558) ([014d43e](https://github.com/dhis2/analytics/commit/014d43e241d59e841f72d203f8b8f657516aa147)) +* show warning text below RichTextEditor when unable to show snapshot (DHIS2-15781) ([f27bc38](https://github.com/dhis2/analytics/commit/f27bc38e5cf47840971eb685f0ee705f174eadc0)) + +## [26.1.1](https://github.com/dhis2/analytics/compare/v26.1.0...v26.1.1) (2023-10-05) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([dd9c23f](https://github.com/dhis2/analytics/commit/dd9c23f34a0489cae89f5f5c10ab1dc17e2c13ef)) + +# [26.1.0](https://github.com/dhis2/analytics/compare/v26.0.21...v26.1.0) (2023-10-03) + + +### Features + +* **pivot-table:** truncate title and show full in tooltip ([#1579](https://github.com/dhis2/analytics/issues/1579)) ([c37ba2d](https://github.com/dhis2/analytics/commit/c37ba2d1a187963b3b5aeee5b951bcf9c129dcd2)) + +## [26.0.21](https://github.com/dhis2/analytics/compare/v26.0.20...v26.0.21) (2023-09-28) + + +### Bug Fixes + +* avoid crash in DV with some chart types DHIS2-15882 ([#1582](https://github.com/dhis2/analytics/issues/1582)) ([f6c89e1](https://github.com/dhis2/analytics/commit/f6c89e1481dbbc2ea2cfe80a3c9ed7f81a63c83c)) + +## [26.0.20](https://github.com/dhis2/analytics/compare/v26.0.19...v26.0.20) (2023-09-25) + + +### Bug Fixes + +* export function for preparing payload for copy DHIS2-15722 ([#1573](https://github.com/dhis2/analytics/issues/1573)) ([a1f8d69](https://github.com/dhis2/analytics/commit/a1f8d694121d62d001f7b4567d84d49ecec377fd)) + +## [26.0.19](https://github.com/dhis2/analytics/compare/v26.0.18...v26.0.19) (2023-09-15) + + +### Bug Fixes + +* use translated dimension labels in PT DHIS2-15750 ([#1572](https://github.com/dhis2/analytics/issues/1572)) ([492975e](https://github.com/dhis2/analytics/commit/492975e46d1570e7856ef217a9a28c3ede5c7fa5)) + +## [26.0.18](https://github.com/dhis2/analytics/compare/v26.0.17...v26.0.18) (2023-09-13) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([e4f95e9](https://github.com/dhis2/analytics/commit/e4f95e9147a337f9a675ffebff641ea5bd9a0430)) + +## [26.0.17](https://github.com/dhis2/analytics/compare/v26.0.16...v26.0.17) (2023-08-28) + + +### Bug Fixes + +* use correct aggregation type if numberType undefined DHIS2-15698 ([#1564](https://github.com/dhis2/analytics/issues/1564)) ([c740e32](https://github.com/dhis2/analytics/commit/c740e320be568cce4430afaab688dd52ced83fa3)) + +## [26.0.16](https://github.com/dhis2/analytics/compare/v26.0.15...v26.0.16) (2023-08-18) + + +### Bug Fixes + +* avoid undefined in totals DHIS2-14511 ([#1552](https://github.com/dhis2/analytics/issues/1552)) ([d93bc3e](https://github.com/dhis2/analytics/commit/d93bc3e35c560aac7e64b3db8196032201686d3a)) + +## [26.0.15](https://github.com/dhis2/analytics/compare/v26.0.14...v26.0.15) (2023-07-27) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([1ab2bca](https://github.com/dhis2/analytics/commit/1ab2bcad7a0bf77f92d7ca838e759921b63dd3cc)) + +## [26.0.14](https://github.com/dhis2/analytics/compare/v26.0.13...v26.0.14) (2023-07-13) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([46de5ca](https://github.com/dhis2/analytics/commit/46de5ca48bafe36c858fbd1eda6032c8dfb2a5bd)) + +## [26.0.13](https://github.com/dhis2/analytics/compare/v26.0.12...v26.0.13) (2023-07-08) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([8e50465](https://github.com/dhis2/analytics/commit/8e5046501726bd6077f6b1c509471c9f99396bb1)) + +## [26.0.12](https://github.com/dhis2/analytics/compare/v26.0.11...v26.0.12) (2023-07-07) + + +### Bug Fixes + +* use correct access checks for showing interpretation reply, edit and delete buttons ([#1531](https://github.com/dhis2/analytics/issues/1531)) ([bf70361](https://github.com/dhis2/analytics/commit/bf703619cb773354e5665543fda36513f7edc6ce)) + +## [26.0.11](https://github.com/dhis2/analytics/compare/v26.0.10...v26.0.11) (2023-07-06) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([7a15f93](https://github.com/dhis2/analytics/commit/7a15f939180edd69b849bd0ab661024d924bc038)) + +## [26.0.10](https://github.com/dhis2/analytics/compare/v26.0.9...v26.0.10) (2023-07-04) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([96947a6](https://github.com/dhis2/analytics/commit/96947a62ed74433111d2eb4ddf2f3eafa734be6a)) + +## [26.0.9](https://github.com/dhis2/analytics/compare/v26.0.8...v26.0.9) (2023-07-03) + + +### Bug Fixes + +* use visual feedback on action buttons ([#1532](https://github.com/dhis2/analytics/issues/1532)) ([d6287c8](https://github.com/dhis2/analytics/commit/d6287c8cdb1162336f52259dab727724e8baed4b)) +* **translations:** sync translations from transifex (master) ([5dd498c](https://github.com/dhis2/analytics/commit/5dd498c846d6d4bedc0cf81b43cc3949339103bd)) + +## [26.0.8](https://github.com/dhis2/analytics/compare/v26.0.7...v26.0.8) (2023-06-29) + + +### Bug Fixes + +* **translations:** sync translations from transifex (master) ([f3b1c8f](https://github.com/dhis2/analytics/commit/f3b1c8f6d293e104ec9848ac5128857af4dccc70)) + ## [26.0.7](https://github.com/dhis2/analytics/compare/v26.0.6...v26.0.7) (2023-06-28) diff --git a/i18n/ar.po b/i18n/ar.po index 37ad6f121..7d24566ae 100644 --- a/i18n/ar.po +++ b/i18n/ar.po @@ -1,15 +1,15 @@ # # Translators: # Viktor Varland , 2022 -# Hamza Assada <7amza.it@gmail.com>, 2022 # phil_dhis2, 2023 +# Hamza Assada <7amza.it@gmail.com>, 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Hamza Assada <7amza.it@gmail.com>, 2023\n" "Language-Team: Arabic (https://app.transifex.com/hisp-uio/teams/100509/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -351,6 +351,9 @@ msgstr "كتابة رد" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "فشل الحذف" + msgid "Could not update comment" msgstr "" @@ -383,15 +386,27 @@ msgstr "" msgid "Interpretations" msgstr "التفسيرات" +msgid "Reply" +msgstr "رد" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} رد" +msgstr[1] "{{count}} رد" +msgstr[2] "{{count}} رد" +msgstr[3] "{{count}} رد" +msgstr[4] "{{count}} رد" +msgstr[5] "{{count}} رد" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "إلغاء الإعجاب" msgid "Like" msgstr "إعجاب" -msgid "Reply" -msgstr "رد" - msgid "Share" msgstr "مشاركة" @@ -858,6 +873,9 @@ msgstr "السنوات المالية" msgid "Years" msgstr "السنوات" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/cs.po b/i18n/cs.po index c6eb2a79d..5d74aade2 100644 --- a/i18n/cs.po +++ b/i18n/cs.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: Jiří Podhorecký, 2023\n" "Language-Team: Czech (https://app.transifex.com/hisp-uio/teams/100509/cs/)\n" @@ -354,6 +354,9 @@ msgstr "Napsat odpověď" msgid "Post reply" msgstr "Odpovědět" +msgid "Delete failed" +msgstr "Smazání se nezdařilo" + msgid "Could not update comment" msgstr "Komentář se nepodařilo aktualizovat" @@ -388,15 +391,25 @@ msgstr "Vložit interpretaci" msgid "Interpretations" msgstr "Interpretace" +msgid "Reply" +msgstr "Odpovědět" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} odpověď" +msgstr[1] " {{count}} odpovědi" +msgstr[2] "{{count}} odpovědí" +msgstr[3] "{{count}} odpovědi" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Na rozdíl od" msgid "Like" msgstr "Jako" -msgid "Reply" -msgstr "Odpovědět" - msgid "Share" msgstr "Sdílet" @@ -876,6 +889,9 @@ msgstr "Finanční roky" msgid "Years" msgstr "Let" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "Překlad do" diff --git a/i18n/en.pot b/i18n/en.pot index 2ceaf2ec9..bfd246658 100644 --- a/i18n/en.pot +++ b/i18n/en.pot @@ -5,8 +5,8 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"POT-Creation-Date: 2023-05-24T12:55:52.925Z\n" -"PO-Revision-Date: 2023-05-24T12:55:52.925Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" +"PO-Revision-Date: 2023-09-27T14:15:13.876Z\n" msgid "view only" msgstr "view only" @@ -343,6 +343,9 @@ msgstr "Write a reply" msgid "Post reply" msgstr "Post reply" +msgid "Delete failed" +msgstr "Delete failed" + msgid "Could not update comment" msgstr "Could not update comment" @@ -371,21 +374,32 @@ msgstr "Hide interpretation" msgid "Write an interpretation" msgstr "Write an interpretation" +msgid "Other people viewing this interpretation in the future may see more data." +msgstr "Other people viewing this interpretation in the future may see more data." + msgid "Post interpretation" msgstr "Post interpretation" msgid "Interpretations" msgstr "Interpretations" +msgid "Reply" +msgstr "Reply" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} reply" +msgstr[1] "{{count}} replies" + +msgid "View replies" +msgstr "View replies" + msgid "Unlike" msgstr "Unlike" msgid "Like" msgstr "Like" -msgid "Reply" -msgstr "Reply" - msgid "Share" msgstr "Share" diff --git a/i18n/es.po b/i18n/es.po index 44b4897da..2e622029d 100644 --- a/i18n/es.po +++ b/i18n/es.po @@ -1,22 +1,22 @@ # # Translators: # ericbp , 2020 -# Alison Andrade , 2021 # Juan M Alcantara Acosta , 2021 # Prabhjot Singh, 2021 # Gabriela Rodriguez , 2022 # Viktor Varland , 2022 # Marta Vila , 2023 -# phil_dhis2, 2023 -# Enzo Nicolas Rossi , 2023 +# Philip Larsen Donnelly, 2023 # Janeth Cruz, 2023 +# Sergio Valenzuela , 2023 +# Enzo Nicolas Rossi , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-05-24T12:55:52.925Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Janeth Cruz, 2023\n" +"Last-Translator: Enzo Nicolas Rossi , 2023\n" "Language-Team: Spanish (https://app.transifex.com/hisp-uio/teams/100509/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -56,9 +56,9 @@ msgstr "Creado {{time}}" msgid "Viewed {{count}} times" msgid_plural "Viewed {{count}} times" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Visto 1 vez" +msgstr[1] "Visto {{count}} veces" +msgstr[2] "Visto {{count}} veces" msgid "Notifications" msgstr "Notificaciones" @@ -81,7 +81,7 @@ msgid "About this map" msgstr "Acerca de este mapa" msgid "About this line list" -msgstr "" +msgstr "Acerca de este listado" msgid "About this visualization" msgstr "Acerca de esta visualización" @@ -181,7 +181,7 @@ msgid "No data" msgstr "No hay datos" msgid "Search by data item name" -msgstr "Búsqueda por nombre de elemento de datos" +msgstr "Búsqueda por nombre de item de datos" msgid "No items selected" msgstr "No hay elementos seleccionados" @@ -196,7 +196,7 @@ msgid "No data sets found" msgstr "No se han encontrado sets de datos" msgid "No event data items found" -msgstr "" +msgstr "No se encontraron elementos para datos de eventos" msgid "No program indicators found" msgstr "No se han encontrado indicadores de programa" @@ -209,6 +209,7 @@ msgstr "No se han encontrado sets de datos para \"{{- searchTerm}}\"" msgid "No event data items found for \"{{- searchTerm}}\"" msgstr "" +"No se encontraron elementos para datos de eventos para \"{{- searchTerm}}\"" msgid "No program indicators found for \"{{- searchTerm}}\"" msgstr "No se han encontrado indicadores de programa para \"{{- searchTerm}}\"" @@ -350,7 +351,7 @@ msgid "event report" msgstr "informe de evento" msgid "line list" -msgstr "" +msgstr "listados" msgid "map" msgstr "mapa" @@ -367,6 +368,9 @@ msgstr "Escribe una respuesta" msgid "Post reply" msgstr "Publicar respuesta" +msgid "Delete failed" +msgstr "Fallado el proceso de eliminar" + msgid "Could not update comment" msgstr "No se pudo actualizar el comentario" @@ -396,20 +400,29 @@ msgid "Write an interpretation" msgstr "Escribir una interpretación" msgid "Post interpretation" -msgstr "" +msgstr "Interpretación posterior" msgid "Interpretations" msgstr "Interpretaciones" +msgid "Reply" +msgstr "Responder" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{contar}} respuesta" +msgstr[1] "{{contar}} respuestas" +msgstr[2] "{{count}} respuestas" + +msgid "View replies" +msgstr "Ver respuestas" + msgid "Unlike" msgstr "diferente a" msgid "Like" msgstr "como" -msgid "Reply" -msgstr "Responder" - msgid "Share" msgstr "Compartir" @@ -465,7 +478,7 @@ msgid "Created by" msgstr "Creado por" msgid "Anyone" -msgstr "Alguien" +msgstr "Todos" msgid "Only you" msgstr "Solo tú" @@ -581,29 +594,33 @@ msgid "New map" msgstr "Nuevo mapa" msgid "Open a line list" -msgstr "" +msgstr "Abrir un listado" msgid "Loading line lists" -msgstr "" +msgstr "Cargar listados" msgid "Couldn't load line lists" -msgstr "" +msgstr "No se pudieron cargar los listados" msgid "" "There was a problem loading line lists. Try again or contact your system " "administrator." msgstr "" +"Hubo un problema al cargar las listas. Vuelva a intentarlo o póngase en " +"contacto con el administrador del sistema." msgid "No line lists found. Click New line list to get started." -msgstr "" +msgstr "No se encontraron listas. Haga clic en Nueva lista para comenzar." msgid "" "No line lists found. Try adjusting your search or filter options to find " "what you're looking for." msgstr "" +"No se encontraron listas. Intente ajustar sus opciones de búsqueda o filtro " +"para encontrar lo que está buscando." msgid "New line list" -msgstr "" +msgstr "Nuevo listado" msgid "Options" msgstr "Opciones" @@ -613,21 +630,21 @@ msgstr "Ocultar" msgid "{{count}} org units" msgid_plural "{{count}} org units" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{count}} unidad organizativa" +msgstr[1] "{{count}} unidades de organización" +msgstr[2] "{{count}} unidades organizativas" msgid "{{count}} levels" msgid_plural "{{count}} levels" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{contar}} nivel" +msgstr[1] "{{contar}} niveles" +msgstr[2] "{{contar}} niveles" msgid "{{count}} groups" msgid_plural "{{count}} groups" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{contar}} grupo" +msgstr[1] "{{contar}} grupos" +msgstr[2] "{{contar}} grupos" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" msgstr "Seleccionado: {{commaSeparatedListOfOrganisationUnits}}" @@ -717,16 +734,16 @@ msgid "Yearly" msgstr "Anual" msgid "Financial year (Start November)" -msgstr "" +msgstr "Año fiscal (Inicio noviembre)" msgid "Financial year (Start October)" -msgstr "Año fiscal - Octubre" +msgstr "Año fiscal (inicio octubre)" msgid "Financial year (Start July)" -msgstr "Año fiscal - Julio" +msgstr "Año fiscal (inicio Julio)" msgid "Financial year (Start April)" -msgstr "Año fiscal - Abril" +msgstr "Año fiscal (inicio Abril)" msgid "Today" msgstr "Hoy" @@ -891,7 +908,7 @@ msgid "Choose a locale" msgstr "Elegir un idioma" msgid "Base locale reference" -msgstr "" +msgstr "Referencia de configuración regional base" msgid "Choose a locale to translate from the menu above" msgstr "Elegir un idioma para traducir desde el menú de arriba" @@ -933,13 +950,13 @@ msgid "Reporting rate" msgstr "Tasa de informes" msgid "Reporting rate on time" -msgstr "" +msgstr "Tasa de informes a tiempo" msgid "Actual reports" msgstr "Informes reales" msgid "Actual reports on time" -msgstr "" +msgstr "Informes reales a tiempo" msgid "Expected reports" msgstr "Informes esperados" @@ -1070,7 +1087,7 @@ msgid "Start" msgstr "Comienzo" msgid "Middle" -msgstr "" +msgstr "Medio" msgid "End" msgstr "Fin" @@ -1109,10 +1126,10 @@ msgid "{{thresholdFactor}} × IQR Q3" msgstr "{{thresholdFactor}} × IQR Q3" msgid "{{thresholdFactor}} × Modified Z-score low" -msgstr "{{thresholdFactor}} × Modificado Z-score bajo" +msgstr "{{thresholdFactor}} × Z-score modificado bajo" msgid "{{thresholdFactor}} × Modified Z-score high" -msgstr "{{thresholdFactor}} × Modificado Z-score alto" +msgstr "{{thresholdFactor}} × Z-score modificado alto" msgid "{{thresholdFactor}} × Z-score low" msgstr "{{thresholdFactor}} × Z-score bajo" @@ -1160,7 +1177,7 @@ msgid "Line" msgstr "Línea" msgid "Line list" -msgstr "" +msgstr "Listados" msgid "Year over year (line)" msgstr "Año tras año (línea)" @@ -1206,9 +1223,9 @@ msgstr "Eje {{axisId}}" msgid "{{count}} items" msgid_plural "{{count}} items" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "{{contar}} elemento" +msgstr[1] "{{contar}} artículos" +msgstr[2] "{{contar}} artículos" msgid "Reset zoom" msgstr "Restablecer zoom" diff --git a/i18n/fr.po b/i18n/fr.po index 2085f22e0..7b8e71382 100644 --- a/i18n/fr.po +++ b/i18n/fr.po @@ -1,21 +1,21 @@ # # Translators: # Bram Piot , 2021 -# Yayra Gomado , 2021 # Viktor Varland , 2021 # Gabriela Rodriguez , 2021 # tx_e2f_fr r25 , 2021 # Karoline Tufte Lien , 2022 # Edem Kossi , 2022 -# Yao Selom SAKA (HISP WCA) , 2023 # phil_dhis2, 2023 +# Yao Selom SAKA (HISP WCA) , 2023 +# Yayra Gomado , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Yayra Gomado , 2023\n" "Language-Team: French (https://app.transifex.com/hisp-uio/teams/100509/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -354,6 +354,9 @@ msgstr "Ecrire une réponse" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Échec de la suppression" + msgid "Could not update comment" msgstr "" @@ -386,15 +389,24 @@ msgstr "" msgid "Interpretations" msgstr "Interprétations" +msgid "Reply" +msgstr "Répondre" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} réponses" +msgstr[1] "{{count}} réponses" +msgstr[2] "{{count}} réponses" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Je n'aime plus" msgid "Like" msgstr "J'aime" -msgid "Reply" -msgstr "Répondre" - msgid "Share" msgstr "Partager" @@ -852,6 +864,9 @@ msgstr "Années fiscales" msgid "Years" msgstr "Années" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/id.po b/i18n/id.po index b78277d16..592793bf1 100644 --- a/i18n/id.po +++ b/i18n/id.po @@ -1,18 +1,19 @@ # # Translators: # phil_dhis2, 2021 -# Untoro Dwi Raharjo , 2021 # Carwoto Sa'an , 2022 # Guardian Sanjaya , 2022 # Aprisa Chrysantina , 2022 # Viktor Varland , 2023 +# Yusuf Setiawan , 2023 +# Untoro Dwi Raharjo , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Viktor Varland , 2023\n" +"Last-Translator: Untoro Dwi Raharjo , 2023\n" "Language-Team: Indonesian (https://app.transifex.com/hisp-uio/teams/100509/id/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -349,6 +350,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Hapus yang gagal" + msgid "Could not update comment" msgstr "" @@ -381,15 +385,22 @@ msgstr "" msgid "Interpretations" msgstr "Interpretasi" +msgid "Reply" +msgstr "Balas" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "balasan {{count}} " + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Batalkan Suka" msgid "Like" msgstr "Suka" -msgid "Reply" -msgstr "Balas" - msgid "Share" msgstr "Bagikan" @@ -854,6 +865,9 @@ msgstr "Keuangan tahunan" msgid "Years" msgstr "Tahun" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/km.po b/i18n/km.po index 426315c9b..187ebf364 100644 --- a/i18n/km.po +++ b/i18n/km.po @@ -2,13 +2,14 @@ # Translators: # Viktor Varland , 2022 # phil_dhis2, 2023 +# channara rin, 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-05-24T12:55:52.925Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: channara rin, 2023\n" "Language-Team: Khmer (https://app.transifex.com/hisp-uio/teams/100509/km/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -432,7 +433,7 @@ msgid "Searching for \"{{- searchText}}\"" msgstr "" msgid "No results found" -msgstr "" +msgstr "មិនមានលទ្ធផលបង្ហាញ" msgid "Not available offline" msgstr "" @@ -688,7 +689,7 @@ msgid "Today" msgstr "" msgid "Yesterday" -msgstr "" +msgstr "កាលពីម្សិលមិញ" msgid "Last 3 days" msgstr "" @@ -837,6 +838,9 @@ msgstr "" msgid "Years" msgstr "ឆ្នាំ" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" @@ -913,7 +917,7 @@ msgid "All groups" msgstr "" msgid "Indicator" -msgstr "" +msgstr "សួចនាករ" msgid "No indicator groups found" msgstr "" diff --git a/i18n/lo.po b/i18n/lo.po index 31f689fc5..b41993e0e 100644 --- a/i18n/lo.po +++ b/i18n/lo.po @@ -2,16 +2,16 @@ # Translators: # Viktor Varland , 2022 # Somkhit Bouavong , 2022 -# Saysamone Sibounma, 2022 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 # Phouthasinh PHEUAYSITHIPHONE, 2023 +# Saysamone Sibounma, 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Phouthasinh PHEUAYSITHIPHONE, 2023\n" +"Last-Translator: Saysamone Sibounma, 2023\n" "Language-Team: Lao (https://app.transifex.com/hisp-uio/teams/100509/lo/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -81,7 +81,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "ຂໍ້ຜິດພາດທາງເຄື່ອຂ່າຍ" msgid "Data / Edit calculation" msgstr "" @@ -90,7 +90,7 @@ msgid "Data / New calculation" msgstr "" msgid "Remove item" -msgstr "" +msgstr "ລົບລາຍການ" msgid "Check formula" msgstr "" @@ -348,6 +348,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "" + msgid "Could not update comment" msgstr "" @@ -374,21 +377,32 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "ການແປຂໍ້ມູນ" +msgid "Reply" +msgstr "ຕອບກັບ" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "ບໍ່ມັກ" msgid "Like" msgstr "ມັກ" -msgid "Reply" -msgstr "ຕອບກັບ" - msgid "Share" msgstr "ເຜີຍແຜ່" @@ -840,6 +854,9 @@ msgstr "" msgid "Years" msgstr "ປີ" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/nb.po b/i18n/nb.po index 05f6b1145..4b3e968d1 100644 --- a/i18n/nb.po +++ b/i18n/nb.po @@ -1,14 +1,15 @@ # # Translators: -# Karoline Tufte Lien , 2022 # Caroline Hesthagen Holen , 2023 +# Jen Jones Arnesen , 2023 +# Karoline Tufte Lien , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Caroline Hesthagen Holen , 2023\n" +"Last-Translator: Karoline Tufte Lien , 2023\n" "Language-Team: Norwegian Bokmål (https://app.transifex.com/hisp-uio/teams/100509/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -338,7 +339,7 @@ msgid "map" msgstr "kart" msgid "visualization" -msgstr "" +msgstr "visualisering" msgid "Edit" msgstr "Rediger" @@ -349,6 +350,9 @@ msgstr "Skriv et svar" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Kunne ikke slette" + msgid "Could not update comment" msgstr "" @@ -375,21 +379,33 @@ msgstr "" msgid "Write an interpretation" msgstr "Skriv en tolkning" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "Tolkninger" +msgid "Reply" +msgstr "Svar" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} svar" +msgstr[1] "{{count}} svar" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Fjern like" msgid "Like" msgstr "Like" -msgid "Reply" -msgstr "Svar" - msgid "Share" msgstr "Del" @@ -439,7 +455,7 @@ msgid "No results found" msgstr "Ingen resultater funnet" msgid "Not available offline" -msgstr "" +msgstr "Ikke tilgjengelig i frakoblet modus" msgid "Created by" msgstr "Opprettet av" @@ -846,6 +862,9 @@ msgstr "Regnskapsår" msgid "Years" msgstr "År" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/nl.po b/i18n/nl.po index 16c31c038..1c9c354f1 100644 --- a/i18n/nl.po +++ b/i18n/nl.po @@ -4,13 +4,14 @@ # Yury Rogachev , 2021 # Rica Zamora Duchateau, 2022 # Charel van den Elsen, 2023 +# Enzo Nicolas Rossi , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-05-24T12:55:52.925Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: Charel van den Elsen, 2023\n" +"Last-Translator: Enzo Nicolas Rossi , 2023\n" "Language-Team: Dutch (https://app.transifex.com/hisp-uio/teams/100509/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -19,196 +20,200 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgid "view only" -msgstr "" +msgstr "alleen bekijken" msgid "view and edit" -msgstr "" +msgstr "bekijken en bewerken" msgid "all users ({{accessLevel}})" -msgstr "" +msgstr "alle gebruikers ({{accessLevel}})" msgid "{{userOrGroup}} ({{accessLevel}})" -msgstr "" +msgstr "{{userOrGroup}} ({{accessLevel}})" msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" -msgstr "" +msgstr "Gedeeld met {{commaSeparatedListOfUsersAndGroups}}" msgid "Not shared with any users or groups" -msgstr "" +msgstr "Niet gedeeld met gebruikers of groepen" msgid "No description" msgstr "Geen beschrijving" msgid "Last updated {{time}}" -msgstr "" +msgstr "Laatst bijgewerkt {{time}}" msgid "Created {{time}} by {{author}}" -msgstr "" +msgstr "Gemaakt {{time}} door {{author}}" msgid "Created {{time}}" -msgstr "" +msgstr "Gemaakt {{time}}" msgid "Viewed {{count}} times" msgid_plural "Viewed {{count}} times" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "1 keer bekeken" +msgstr[1] "{{count}} keer bekeken" msgid "Notifications" -msgstr "" +msgstr "Meldingen" msgid "You're subscribed and getting updates about new interpretations." -msgstr "" +msgstr "Je bent geabonneerd en krijgt updates over nieuwe interpretaties." msgid "Unsubscribe" -msgstr "" +msgstr "Uitschrijven" msgid "Subscribe to get updates about new interpretations." -msgstr "" +msgstr "Abonneer u om updates over nieuwe interpretaties te ontvangen." msgid "Subscribe" -msgstr "" +msgstr "Abonneren" msgid "About this map" -msgstr "" +msgstr "Over deze kaart" msgid "About this line list" -msgstr "" +msgstr "Over deze lijnlijst" msgid "About this visualization" -msgstr "" +msgstr "Over deze visualisatie" msgid "This app could not retrieve required data." -msgstr "" +msgstr "Deze app kan de vereiste gegevens niet ophalen." msgid "Network error" -msgstr "" +msgstr "Netwerkfout" msgid "Data / Edit calculation" -msgstr "" +msgstr "Gegevens / Berekening bewerken" msgid "Data / New calculation" -msgstr "" +msgstr "Gegevens / Nieuwe berekening" msgid "Remove item" -msgstr "" +msgstr "Verwijder voorwerp" msgid "Check formula" -msgstr "" +msgstr "Formule controleren" msgid "Calculation name" -msgstr "" +msgstr "Berekening naam" msgid "Shown in table headers and chart axes/legends" -msgstr "" +msgstr "Weergegeven in tabelkoppen en diagramassen/legenda's" msgid "Delete calculation" -msgstr "" +msgstr "Berekening verwijderen" msgid "Cancel" msgstr "Annuleer" msgid "The calculation can only be saved with a valid formula" -msgstr "" +msgstr "De berekening kan alleen worden opgeslagen met een geldige formule" msgid "Add a name to save this calculation" -msgstr "" +msgstr "Voeg een naam toe om deze berekening op te slaan" msgid "Save calculation" -msgstr "" +msgstr "Berekening opslaan" msgid "" "Are you sure you want to delete this calculation? It may be used by other " "visualizations." msgstr "" +"Weet u zeker dat u deze berekening wilt verwijderen? Het kan worden gebruikt" +" door andere visualisaties." msgid "Yes, delete" -msgstr "" +msgstr "Ja, verwijderen" msgid "Totals only" -msgstr "" +msgstr "Alleen totalen" msgid "Details only" -msgstr "" +msgstr "Alleen details" msgid "Loading" -msgstr "" +msgstr "Bezig met laden" msgid "Data elements" msgstr "Gegevenselementen" msgid "Search by data element name" -msgstr "" +msgstr "Zoeken op naam van gegevenselement" msgid "No data elements found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "Geen gegevenselementen gevonden voor \"{{- searchTerm}}\"" msgid "No data elements found" -msgstr "" +msgstr "Geen gegevenselementen gevonden" msgid "" "Drag items here, or double click in the list, to start building a " "calculation formula" msgstr "" +"Sleep items hierheen, of dubbelklik in de lijst, om te beginnen met het " +"bouwen van een rekenformule" msgid "Math operators" -msgstr "" +msgstr "Wiskundige operatoren" msgid "Data Type" -msgstr "" +msgstr "Data type" msgid "All types" msgstr "Alle typen" msgid "Disaggregation" -msgstr "" +msgstr "desaggregatie" msgid "No data" msgstr "Geen gegevens" msgid "Search by data item name" -msgstr "" +msgstr "Zoeken op naam van gegevensitem" msgid "No items selected" msgstr "Geen items geselecteerd" msgid "Selected Items" -msgstr "" +msgstr "Geselecteerde voorwerpen" msgid "No indicators found" -msgstr "" +msgstr "Geen indicatoren gevonden" msgid "No data sets found" -msgstr "" +msgstr "Geen datasets gevonden" msgid "No event data items found" -msgstr "" +msgstr "Geen item met gebeurtenisgegevens gevonden" msgid "No program indicators found" -msgstr "" +msgstr "Geen programma-indicatoren gevonden" msgid "No indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "Geen indicatoren gevonden voor \"{{- searchTerm}}\"" msgid "No data sets found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "Geen datasets gevonden voor \"{{- searchTerm}}\"" msgid "No event data items found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "Geen gebeurtenisgegevensitems gevonden voor \"{{- searchTerm}}\"" msgid "No program indicators found for \"{{- searchTerm}}\"" -msgstr "" +msgstr "Geen programma-indicatoren gevonden voor \"{{- searchTerm}}\"" msgid "Nothing found for \"{{- searchTerm}}\"" msgstr "Niets gevonden voor \"{{- zoekTerm}}\"" msgid "Calculation" -msgstr "" +msgstr "Berekening" msgid "Metric type" -msgstr "" +msgstr "Metrische soort" msgid "All metrics" -msgstr "" +msgstr "Alle statistieken" msgid "Move to {{axisName}}" msgstr "Ga naar {{axisNaam}}" @@ -217,10 +222,10 @@ msgid "Add to {{axisName}}" msgstr "Voeg toe aan {{axisName}}" msgid "Not available for {{visualizationType}}" -msgstr "" +msgstr "Niet beschikbaar voor {{visualizationType}}" msgid "Remove Assigned Categories" -msgstr "" +msgstr "Verwijder toegewezen categorieën" msgid "Add Assigned Categories" msgstr "Voeg Toegewezen Categorieën toe" @@ -238,79 +243,83 @@ msgid "Your dimensions" msgstr "Uw dimensies" msgid "Dimension recommended with selected data" -msgstr "" +msgstr "Afmeting aanbevolen bij geselecteerde gegevens" msgid "All items" msgstr "Alle items" msgid "Automatically include all items" -msgstr "" +msgstr "Voeg automatisch alle items toe" msgid "" "Select all {{- dimensionTitle}} items. With this option, new items added in " "the future will be automatically included." msgstr "" +"Selecteer alle {{- dimensionTitle}} items. Met deze optie worden nieuwe " +"items die in de toekomst worden toegevoegd automatisch opgenomen." msgid "Manually select items..." -msgstr "" +msgstr "Items handmatig selecteren..." msgid "Nothing found in {{- dimensionTitle}}" -msgstr "" +msgstr "Niets gevonden in {{- dimensionTitle}}" msgid "Search" msgstr "Zoek" msgid "Nothing found for {{- searchTerm}}" -msgstr "" +msgstr "Niets gevonden voor {{- searchTerm}}" msgid "Delete {{fileType}}" -msgstr "" +msgstr "Verwijder {{fileType}}" msgid "" "This {{fileType}} and related interpretations will be deleted. Continue?" msgstr "" +"Deze {{fileType}} en gerelateerde interpretaties worden verwijderd. " +"Doorgaan?" msgid "Delete" msgstr "Verwijderen" msgid "File" -msgstr "" +msgstr "Bestand" msgid "New" msgstr "Nieuw" msgid "Open…" -msgstr "" +msgstr "Open…" msgid "Save" msgstr "Sla op" msgid "Save…" -msgstr "" +msgstr "Redden…" msgid "Save as…" -msgstr "" +msgstr "Opslaan als…" msgid "Rename…" -msgstr "" +msgstr "Hernoemen..." msgid "Translate…" -msgstr "" +msgstr "Vertalen…" msgid "Share…" -msgstr "" +msgstr "Deel…" msgid "Get link…" -msgstr "" +msgstr "Krijg link…" msgid "Open in this app" -msgstr "" +msgstr "Openen in deze app" msgid "Close" msgstr "Sluit" msgid "Rename {{fileType}}" -msgstr "" +msgstr "Hernoem {{fileType}}" msgid "Name" msgstr "Naam" @@ -319,120 +328,133 @@ msgid "Description" msgstr "Beschrijving" msgid "Rename" -msgstr "" +msgstr "Hernoemen" msgid "{{- objectName}} (copy)" -msgstr "" +msgstr "{{- objectName}} (kopiëren)" msgid "Save {{fileType}} as" -msgstr "" +msgstr "Bewaar {{fileType}} als" msgid "event report" -msgstr "" +msgstr "evenement verslag" msgid "line list" -msgstr "" +msgstr "lijn lijst" msgid "map" -msgstr "" +msgstr "kaart" msgid "visualization" -msgstr "" +msgstr "visualisatie" msgid "Edit" msgstr "Bewerk" msgid "Write a reply" -msgstr "" +msgstr "Schrijf een reactie" msgid "Post reply" -msgstr "" +msgstr "Reageer" + +msgid "Delete failed" +msgstr "Verwijderen mislukt" msgid "Could not update comment" -msgstr "" +msgstr "Reactie kan niet worden bijgewerkt" msgid "Enter comment text" -msgstr "" +msgstr "Voer commentaartekst in" msgid "Update" msgstr "Bijwerken" msgid "Viewing interpretation: {{- visualisationName}}" -msgstr "" +msgstr "Interpretatie bekijken: {{- visualisationName}}" msgid "Could not load interpretation" -msgstr "" +msgstr "Kan interpretatie niet laden" msgid "" "The interpretation couldn’t be displayed. Try again or contact your system " "administrator." msgstr "" +"De interpretatie kon niet worden weergegeven. Probeer het opnieuw of neem " +"contact op met uw systeembeheerder." msgid "Hide interpretation" -msgstr "" +msgstr "Interpretatie verbergen" msgid "Write an interpretation" -msgstr "" +msgstr "Schrijf een interpretatie" msgid "Post interpretation" -msgstr "" +msgstr "Interpretatie posten" msgid "Interpretations" msgstr "Interpretaties" +msgid "Reply" +msgstr "Antwoord" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} antwoord" +msgstr[1] "{{count}} antwoorden" + +msgid "View replies" +msgstr "Antwoorden bekijken" + msgid "Unlike" -msgstr "" +msgstr "in tegenstelling tot" msgid "Like" msgstr "Leuk vinden" -msgid "Reply" -msgstr "" - msgid "Share" msgstr "Deel" msgid "See interpretation" -msgstr "" +msgstr "Zie interpretatie" msgid "Manage sharing" -msgstr "" +msgstr "Beheer delen" msgid "Could not update interpretation" -msgstr "" +msgstr "Kan interpretatie niet updaten" msgid "Enter interpretation text" -msgstr "" +msgstr "Voer interpretatietekst in" msgid "Bold text" -msgstr "" +msgstr "Vetgedrukte tekst" msgid "Italic text" -msgstr "" +msgstr "Cursieve tekst" msgid "Link to a URL" -msgstr "" +msgstr "Link naar een URL" msgid "Mention a user" -msgstr "" +msgstr "Noem een gebruiker" msgid "Add emoji" -msgstr "" +msgstr "Emoji toevoegen" msgid "Preview" -msgstr "" +msgstr "Voorbeeld" msgid "Back to write mode" -msgstr "" +msgstr "Terug naar schrijfmodus" msgid "Too many results. Try refining the search." -msgstr "" +msgstr "Te veel resultaten. Probeer de zoekopdracht te verfijnen." msgid "Search for a user" -msgstr "" +msgstr "Zoek een gebruiker" msgid "Searching for \"{{- searchText}}\"" -msgstr "" +msgstr "Zoeken naar \"{{- searchText}}\"" msgid "No results found" msgstr "Geen resultaten gevonden" @@ -447,16 +469,16 @@ msgid "Anyone" msgstr "Iedereen" msgid "Only you" -msgstr "" +msgstr "Alleen jij" msgid "Others" -msgstr "" +msgstr "Anderen" msgid "Not supported by this app yet" -msgstr "" +msgstr "Nog niet ondersteund door deze app" msgid "Filter by name" -msgstr "" +msgstr "Filteren op naam" msgid "Created" msgstr "Gemaakt" @@ -471,104 +493,124 @@ msgid "Clear filters" msgstr "Wis filters" msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" -msgstr "" +msgstr "{{firstItemIndex}}-{{lastItemIndex}} van {{totalNumberOfItems}}" msgid "Open" msgstr "Open" msgid "Couldn't load items" -msgstr "" +msgstr "Kan items niet laden" msgid "" "There was a problem loading items. Try again or contact your system " "administrator." msgstr "" +"Er is een probleem opgetreden bij het laden van items. Probeer het opnieuw " +"of neem contact op met uw systeembeheerder." msgid "No items found. Create a new to get started." -msgstr "" +msgstr "Geen items gevonden. Maak een nieuwe aan om aan de slag te gaan." msgid "" "No items found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"Geen items gevonden. Probeer uw zoek- of filteropties aan te passen om te " +"vinden wat u zoekt." msgid "Create new" msgstr "Maak nieuw" msgid "Open a visualization" -msgstr "" +msgstr "Open een visualisatie" msgid "Loading visualizations" -msgstr "" +msgstr "Visualisaties laden" msgid "Couldn't load visualizations" -msgstr "" +msgstr "Kan visualisaties niet laden" msgid "" "There was a problem loading visualizations. Try again or contact your system" " administrator." msgstr "" +"Er is een probleem opgetreden bij het laden van visualisaties. Probeer het " +"opnieuw of neem contact op met uw systeembeheerder." msgid "No visualizations found. Click New visualization to get started." msgstr "" +"Geen visualisaties gevonden. Klik op Nieuwe visualisatie om aan de slag te " +"gaan." msgid "" "No visualizations found. Try adjusting your search or filter options to find" " what you're looking for." msgstr "" +"Geen visualisaties gevonden. Probeer uw zoek- of filteropties aan te passen " +"om te vinden wat u zoekt." msgid "New visualization" -msgstr "" +msgstr "Nieuwe visualisatie" msgid "Open a map" -msgstr "" +msgstr "Open een kaart" msgid "Loading maps" -msgstr "" +msgstr "Kaarten laden" msgid "Couldn't load maps" -msgstr "" +msgstr "Kan kaarten niet laden" msgid "" "There was a problem loading maps. Try again or contact your system " "administrator." msgstr "" +"Er is een probleem opgetreden bij het laden van kaarten. Probeer het opnieuw" +" of neem contact op met uw systeembeheerder." msgid "No maps found. Click New map to get started." -msgstr "" +msgstr "Geen kaarten gevonden. Klik op Nieuwe kaart om aan de slag te gaan." msgid "" "No maps found. Try adjusting your search or filter options to find what " "you're looking for." msgstr "" +"Geen kaarten gevonden. Probeer uw zoek- of filteropties aan te passen om te " +"vinden wat u zoekt." msgid "New map" -msgstr "" +msgstr "Nieuwe kaart" msgid "Open a line list" -msgstr "" +msgstr "Open een regellijst" msgid "Loading line lists" -msgstr "" +msgstr "Regellijsten laden" msgid "Couldn't load line lists" -msgstr "" +msgstr "Kan regellijsten niet laden" msgid "" "There was a problem loading line lists. Try again or contact your system " "administrator." msgstr "" +"Er is een probleem opgetreden bij het laden van regellijsten. Probeer het " +"opnieuw of neem contact op met uw systeembeheerder." msgid "No line lists found. Click New line list to get started." msgstr "" +"Geen regellijsten gevonden. Klik op Nieuwe regellijst om aan de slag te " +"gaan." msgid "" "No line lists found. Try adjusting your search or filter options to find " "what you're looking for." msgstr "" +"Geen regellijsten gevonden. Probeer uw zoek- of filteropties aan te passen " +"om te vinden wat u zoekt." msgid "New line list" -msgstr "" +msgstr "Nieuwe lijnlijst" msgid "Options" msgstr "Opties" @@ -578,24 +620,24 @@ msgstr "Verbergen" msgid "{{count}} org units" msgid_plural "{{count}} org units" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{{count}} organisatie-eenheid" +msgstr[1] "{{count}} organisatie-eenheden" msgid "{{count}} levels" msgid_plural "{{count}} levels" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{{count}} niveau" +msgstr[1] "{{count}} niveaus" msgid "{{count}} groups" msgid_plural "{{count}} groups" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{{count}} groep" +msgstr[1] "{{count}} groepen" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "Geselecteerd: {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "Niets geselecteerd" msgid "User organisation unit" msgstr "Gebruikersorganisatie-eenheid" @@ -610,10 +652,10 @@ msgid "Select a level" msgstr "Selecteer een niveau" msgid "Select a group" -msgstr "" +msgstr "Selecteer een groep" msgid "Deselect all" -msgstr "" +msgstr "Deselecteer alles" msgid "Period type" msgstr "Soort periode" @@ -622,22 +664,22 @@ msgid "Year" msgstr "Jaar" msgid "Select year" -msgstr "" +msgstr "Selecteer jaar" msgid "Period" msgstr "Periode" msgid "Relative periods" -msgstr "" +msgstr "Relatieve perioden" msgid "Fixed periods" -msgstr "" +msgstr "Vaste periodes" msgid "Selected Periods" -msgstr "" +msgstr "geselecteerde periodes" msgid "No periods selected" -msgstr "" +msgstr "Geen periodes geselecteerd" msgid "Daily" msgstr "Dagelijks" @@ -706,16 +748,16 @@ msgid "Last 14 days" msgstr "Laatste 14 dagen" msgid "Last 30 days" -msgstr "" +msgstr "Laatste 30 dagen" msgid "Last 60 days" -msgstr "" +msgstr "Laatste 60 dagen" msgid "Last 90 days" -msgstr "" +msgstr "Laatste 90 dagen" msgid "Last 180 days" -msgstr "" +msgstr "Laatste 180 dagen" msgid "This week" msgstr "Deze week" @@ -736,13 +778,13 @@ msgid "Weeks this year" msgstr "Weken dit jaar" msgid "This bi-week" -msgstr "" +msgstr "Deze tweewekelijkse" msgid "Last bi-week" -msgstr "" +msgstr "Afgelopen twee weken" msgid "Last 4 bi-weeks" -msgstr "" +msgstr "Laatste 4 twee weken" msgid "This month" msgstr "Deze maand" @@ -763,16 +805,16 @@ msgid "Months this year" msgstr "Maanden dit jaar" msgid "This bi-month" -msgstr "" +msgstr "Deze tweemaandelijkse" msgid "Last bi-month" -msgstr "" +msgstr "Laatste twee maanden" msgid "Last 6 bi-months" -msgstr "" +msgstr "Laatste 6 bi-maanden" msgid "Bi-months this year" -msgstr "" +msgstr "Tweemaandelijks dit jaar" msgid "This quarter" msgstr "Dit kwartier" @@ -793,7 +835,7 @@ msgid "Last six-month" msgstr "Laatste halfjaar" msgid "Last 2 six-month" -msgstr "" +msgstr "Laatste 2 zes maanden" msgid "This financial year" msgstr "Dit financieel jaar" @@ -814,7 +856,7 @@ msgid "Last 5 years" msgstr "Laatste 5 jaren" msgid "Last 10 years" -msgstr "" +msgstr "Laatste 10 jaar" msgid "Days" msgstr "Dagen" @@ -823,55 +865,55 @@ msgid "Weeks" msgstr "Weken" msgid "Bi-weeks" -msgstr "" +msgstr "Twee weken" msgid "Months" msgstr "Maanden" msgid "Bi-months" -msgstr "" +msgstr "Twee maanden" msgid "Quarters" -msgstr "" +msgstr "Kwartalen" msgid "Six-months" -msgstr "" +msgstr "Zes maanden" msgid "Financial Years" -msgstr "" +msgstr "Boekjaren" msgid "Years" msgstr "Jaren" msgid "Interpretations and details" -msgstr "" +msgstr "Interpretaties en details" msgid "Translating to" -msgstr "" +msgstr "Vertalen naar" msgid "Choose a locale" -msgstr "" +msgstr "Kies een locatie" msgid "Base locale reference" -msgstr "" +msgstr "Base locale-referentie" msgid "Choose a locale to translate from the menu above" -msgstr "" +msgstr "Kies een landinstelling om te vertalen in het bovenstaande menu" msgid "Translate: {{objectName}}" -msgstr "" +msgstr "Vertalen: {{objectName}}" msgid "Save translations" -msgstr "" +msgstr "Sla vertalingen op" msgid "Cannot save while offline" -msgstr "" +msgstr "Kan offline niet opslaan" msgid "Could not load translations" -msgstr "" +msgstr "Kan vertalingen niet laden" msgid "Retry" -msgstr "" +msgstr "Opnieuw proberen" msgid "Series" msgstr "Reeks" @@ -889,28 +931,28 @@ msgid "Rows" msgstr "Rijen" msgid "Points" -msgstr "" +msgstr "Punten" msgid "Reporting rate" -msgstr "" +msgstr "Rapportagepercentage" msgid "Reporting rate on time" -msgstr "" +msgstr "Rapportagepercentage op tijd" msgid "Actual reports" -msgstr "" +msgstr "Actuele rapporten" msgid "Actual reports on time" -msgstr "" +msgstr "Actuele rapporten op tijd" msgid "Expected reports" -msgstr "" +msgstr "Verwachte rapporten" msgid "Program" msgstr "Programma" msgid "Select a program" -msgstr "" +msgstr "Selecteer een programma" msgid "Indicators" msgstr "Indicatoren" @@ -919,16 +961,16 @@ msgid "Indicator group" msgstr "Indicatorgroep" msgid "All groups" -msgstr "" +msgstr "Alle groepen" msgid "Indicator" msgstr "Indicator" msgid "No indicator groups found" -msgstr "" +msgstr "Geen indicatorgroepen gevonden" msgid "Loading indicator groups" -msgstr "" +msgstr "Indicatorgroepen laden" msgid "Data element group" msgstr "Gegevenselementengroep" @@ -937,10 +979,10 @@ msgid "Data element" msgstr "informatie onderdeel" msgid "No data element groups found" -msgstr "" +msgstr "Geen gegevenselementgroepen gevonden" msgid "Loading data element groups" -msgstr "" +msgstr "Data-elementgroepen laden" msgid "Data sets" msgstr "Gegevensreeksen" @@ -949,25 +991,25 @@ msgid "Data set" msgstr "Gegevensreeks" msgid "All data sets" -msgstr "" +msgstr "Alle datasets" msgid "Loading data sets" -msgstr "" +msgstr "Datasets laden" msgid "Event data items" msgstr "Gebeurtenisgegevensitems" msgid "All programs" -msgstr "" +msgstr "Alle programma's" msgid "Event data item" msgstr "Gebeurtenisgegevensitem" msgid "No programs found" -msgstr "" +msgstr "Geen programma's gevonden" msgid "Loading programs" -msgstr "" +msgstr "Programma's laden" msgid "Program indicators" msgstr "Programmaindicators" @@ -976,109 +1018,111 @@ msgid "Program indicator" msgstr "Programmaindicator" msgid "Calculations" -msgstr "" +msgstr "Berekeningen" msgid "Number" msgstr "Nummer" msgid "Formula is empty. Add items to the formula from the lists on the left." msgstr "" +"Formule is leeg. Voeg items toe aan de formule uit de lijsten aan de " +"linkerkant." msgid "Consecutive math operators" -msgstr "" +msgstr "Opeenvolgende wiskundige operatoren" msgid "Consecutive data elements" -msgstr "" +msgstr "Opeenvolgende gegevenselementen" msgid "Starts or ends with a math operator" -msgstr "" +msgstr "Begint of eindigt met een wiskundige operator" msgid "Empty parentheses" -msgstr "" +msgstr "Lege haakjes" msgid "Missing right parenthesis )" -msgstr "" +msgstr "Rechter haakje ontbreekt)" msgid "Missing left parenthesis (" -msgstr "" +msgstr "Linker haakje ontbreekt (" msgid "Extra Small" -msgstr "" +msgstr "Extra klein" msgid "Small" msgstr "Klein" msgid "Regular" -msgstr "" +msgstr "Normaal" msgid "Large" msgstr "Groot" msgid "Extra Large" -msgstr "" +msgstr "Extra groot" msgid "Left" -msgstr "" +msgstr "Links" msgid "Center" -msgstr "" +msgstr "Centrum" msgid "Right" -msgstr "" +msgstr "Rechts" msgid "Start" -msgstr "" +msgstr "Begin" msgid "Middle" -msgstr "" +msgstr "Midden" msgid "End" -msgstr "" +msgstr "Einde" msgid "Top" -msgstr "" +msgstr "Bovenkant" msgid "Bottom" -msgstr "" +msgstr "Onderkant" msgid "{{dynamicOuNames}} and {{lastOuName}}" -msgstr "" +msgstr "{{dynamicOuNames}} en {{lastOuName}}" msgid "{{allDynamicOuNames}} levels" -msgstr "" +msgstr "{{allDynamicOuNames}} niveaus" msgid "{{allDynamicOuNames}} groups" -msgstr "" +msgstr "{{allDynamicOuNames}} groepen" msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" -msgstr "" +msgstr "{{allDynamicOuNames}} niveaus in {{staticOuNames}}" msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" -msgstr "" +msgstr "{{allDynamicOuNames}} groepen in {{staticOuNames}}" msgid "{{percentage}}% of total x values" -msgstr "" +msgstr "{{percentage}}% van totale x waarden" msgid "{{percentage}}% of total y values" -msgstr "" +msgstr "{{percentage}}% van totale y-waarden" msgid "{{thresholdFactor}} × IQR Q1" -msgstr "" +msgstr "{{thresholdFactor}} × IQR Q1" msgid "{{thresholdFactor}} × IQR Q3" -msgstr "" +msgstr "{{thresholdFactor}} × IQR Q3" msgid "{{thresholdFactor}} × Modified Z-score low" -msgstr "" +msgstr "{{thresholdFactor}} × Aangepaste Z-score laag" msgid "{{thresholdFactor}} × Modified Z-score high" -msgstr "" +msgstr "{{thresholdFactor}} × Aangepaste Z-score hoog" msgid "{{thresholdFactor}} × Z-score low" -msgstr "" +msgstr "{{thresholdFactor}} × Z-score laag" msgid "{{thresholdFactor}} × Z-score high" -msgstr "" +msgstr "{{thresholdFactor}} × Z-score hoog" msgid "Data" msgstr "Gegevens" @@ -1087,16 +1131,16 @@ msgid "Organisation unit" msgstr "Organisatieëenheid" msgid "Assigned Categories" -msgstr "" +msgstr "Toegewezen categorieën" msgid "Pivot table" -msgstr "" +msgstr "Draaitafel" msgid "Area" msgstr "Oppervlakte" msgid "Stacked area" -msgstr "" +msgstr "Gestapeld gebied" msgid "Bar" msgstr "Staaf" @@ -1120,7 +1164,7 @@ msgid "Line" msgstr "Lijn" msgid "Line list" -msgstr "" +msgstr "Lijn lijst" msgid "Year over year (line)" msgstr "Jaar over jaar (lijn)" @@ -1132,42 +1176,42 @@ msgid "Radar" msgstr "Radar" msgid "Scatter" -msgstr "" +msgstr "Verstrooien" msgid "Single value" -msgstr "" +msgstr "Enkele waarde" msgid "All charts" -msgstr "" +msgstr "Alle grafieken" msgid "{{seriesName}} (trend)" -msgstr "" +msgstr "{{seriesName}} (trend)" msgid "Trend" -msgstr "" +msgstr "Trend" msgid "No legend for this series" -msgstr "" +msgstr "Geen legende voor deze serie" msgid "and {{amount}} more..." -msgstr "" +msgstr "en nog {{amount}} meer..." msgid "Linear Regression" -msgstr "" +msgstr "Lineaire regressie" msgid "Target" -msgstr "" +msgstr "Doel" msgid "Base" -msgstr "" +msgstr "Baseren" msgid "Axis {{axisId}}" -msgstr "" +msgstr "As {{axisId}}" msgid "{{count}} items" msgid_plural "{{count}} items" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "{{count}} artikel" +msgstr[1] "{{count}} artikelen" msgid "Reset zoom" -msgstr "" +msgstr "Zoom resetten" diff --git a/i18n/pt.po b/i18n/pt.po index d1b69e4ef..aee7e4b4d 100644 --- a/i18n/pt.po +++ b/i18n/pt.po @@ -2,17 +2,18 @@ # Translators: # Sheila André , 2020 # Gabriela Rodriguez , 2022 -# Ge Joao , 2022 # Viktor Varland , 2022 # Fernando Jorge Bade, 2022 # phil_dhis2, 2023 +# David Júnior , 2023 +# Ge Joao , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Ge Joao , 2023\n" "Language-Team: Portuguese (https://app.transifex.com/hisp-uio/teams/100509/pt/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -351,6 +352,9 @@ msgstr "Escreva uma resposta" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Falha na exclusão" + msgid "Could not update comment" msgstr "" @@ -383,15 +387,24 @@ msgstr "" msgid "Interpretations" msgstr "Interpretações" +msgid "Reply" +msgstr "Responder" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Ao contrário" msgid "Like" msgstr "como" -msgid "Reply" -msgstr "Responder" - msgid "Share" msgstr "Partilha" @@ -447,7 +460,7 @@ msgid "Created by" msgstr "Criado por" msgid "Anyone" -msgstr "" +msgstr "Qualquer um" msgid "Only you" msgstr "" @@ -849,6 +862,9 @@ msgstr "Ano financeiro " msgid "Years" msgstr "Anos" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/ru.po b/i18n/ru.po index 6c11677b6..9e8428fc8 100644 --- a/i18n/ru.po +++ b/i18n/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: phil_dhis2, 2023\n" "Language-Team: Russian (https://app.transifex.com/hisp-uio/teams/100509/ru/)\n" @@ -352,6 +352,9 @@ msgstr "Написать ответ" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Не удалось удалить" + msgid "Could not update comment" msgstr "" @@ -384,15 +387,25 @@ msgstr "" msgid "Interpretations" msgstr "Interpretations" +msgid "Reply" +msgstr "Ответить" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Не нравится" msgid "Like" msgstr "Нравится" -msgid "Reply" -msgstr "Ответить" - msgid "Share" msgstr "Поделиться" @@ -853,6 +866,9 @@ msgstr "Финансовые годы" msgid "Years" msgstr "Годы" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/sv.po b/i18n/sv.po index afe88915f..4148939cc 100644 --- a/i18n/sv.po +++ b/i18n/sv.po @@ -1,14 +1,15 @@ # # Translators: # Viktor Varland , 2022 -# phil_dhis2, 2023 +# Philip Larsen Donnelly, 2023 +# Jason Pickering , 2024 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Jason Pickering , 2024\n" "Language-Team: Swedish (https://app.transifex.com/hisp-uio/teams/100509/sv/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -346,6 +347,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "" + msgid "Could not update comment" msgstr "" @@ -372,21 +376,33 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "tolkningar" +msgid "Reply" +msgstr "Svar" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "" msgid "Like" msgstr "" -msgid "Reply" -msgstr "Svar" - msgid "Share" msgstr "Dela med sig" @@ -611,7 +627,7 @@ msgid "Select a group" msgstr "" msgid "Deselect all" -msgstr "" +msgstr "Avmarkera alla" msgid "Period type" msgstr "Periodtyp" @@ -841,6 +857,9 @@ msgstr "" msgid "Years" msgstr "År" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/uk.po b/i18n/uk.po index 14d00b5d9..273f909b6 100644 --- a/i18n/uk.po +++ b/i18n/uk.po @@ -3,15 +3,15 @@ # Wanda , 2022 # Viktor Varland , 2022 # Nadiia , 2022 -# Éva Tamási, 2023 # phil_dhis2, 2023 +# Éva Tamási, 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Éva Tamási, 2023\n" "Language-Team: Ukrainian (https://app.transifex.com/hisp-uio/teams/100509/uk/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -351,6 +351,9 @@ msgstr "Написати відповідь" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Не вдалося видалити" + msgid "Could not update comment" msgstr "" @@ -383,15 +386,25 @@ msgstr "" msgid "Interpretations" msgstr "Інтерпретації" +msgid "Reply" +msgstr "Відповісти" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} відповідей" +msgstr[1] "{{count}} відповідей" +msgstr[2] "{{count}} відповідей" +msgstr[3] "{{count}} відповідей" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Прибрати вподобання" msgid "Like" msgstr "Вподобати" -msgid "Reply" -msgstr "Відповісти" - msgid "Share" msgstr "Поділитися" @@ -852,6 +865,9 @@ msgstr "" msgid "Years" msgstr "Роки" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/ur.po b/i18n/ur.po index d43274683..97a44182a 100644 --- a/i18n/ur.po +++ b/i18n/ur.po @@ -1,14 +1,14 @@ # # Translators: -# Viktor Varland , 2022 # phil_dhis2, 2023 +# Viktor Varland , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Viktor Varland , 2023\n" "Language-Team: Urdu (https://app.transifex.com/hisp-uio/teams/100509/ur/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -346,6 +346,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "حذف ناکام ہوگیا" + msgid "Could not update comment" msgstr "" @@ -378,15 +381,23 @@ msgstr "" msgid "Interpretations" msgstr "تشریحات" +msgid "Reply" +msgstr "جواب" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" +msgstr[1] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "برعکس" msgid "Like" msgstr "کی طرح" -msgid "Reply" -msgstr "جواب" - msgid "Share" msgstr "بانٹیں" @@ -841,6 +852,9 @@ msgstr "" msgid "Years" msgstr "سال" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/uz_Latn.po b/i18n/uz_Latn.po index 44b9ee9a8..d6871a81b 100644 --- a/i18n/uz_Latn.po +++ b/i18n/uz_Latn.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: Yury Rogachev , 2023\n" "Language-Team: Uzbek (Latin) (https://app.transifex.com/hisp-uio/teams/100509/uz@Latn/)\n" @@ -344,6 +344,9 @@ msgstr "Izoh yozing" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Oʼchirish amalga oshmadi" + msgid "Could not update comment" msgstr "" @@ -376,15 +379,22 @@ msgstr "" msgid "Interpretations" msgstr "Talqinlar" +msgid "Reply" +msgstr "Javob" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Аksincha" msgid "Like" msgstr "Kabi, oʼxshash" -msgid "Reply" -msgstr "Javob" - msgid "Share" msgstr "Улашиш" @@ -836,6 +846,9 @@ msgstr "Moliyaviy yillar" msgid "Years" msgstr "Yillar" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/uz.po b/i18n/uz_UZ_Cyrl.po similarity index 97% rename from i18n/uz.po rename to i18n/uz_UZ_Cyrl.po index 70f05028e..9b9dc5769 100644 --- a/i18n/uz.po +++ b/i18n/uz_UZ_Cyrl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: Ibatov , 2023\n" "Language-Team: Uzbek (Cyrillic) (https://app.transifex.com/hisp-uio/teams/100509/uz@Cyrl/)\n" @@ -77,7 +77,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "Тармоқда хатолик" msgid "Data / Edit calculation" msgstr "" @@ -237,7 +237,7 @@ msgid "Dimension recommended with selected data" msgstr "Танланган маълумотлар учун созламалар тавсия этилади" msgid "All items" -msgstr "" +msgstr "Барча элементлар" msgid "Automatically include all items" msgstr "" @@ -333,7 +333,7 @@ msgid "map" msgstr "харита" msgid "visualization" -msgstr "" +msgstr "Визуализация" msgid "Edit" msgstr "Таҳрирлаш" @@ -344,6 +344,9 @@ msgstr "Изоҳ ёзинг" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Ўчириш амалга ошмади" + msgid "Could not update comment" msgstr "" @@ -370,21 +373,32 @@ msgstr "" msgid "Write an interpretation" msgstr "Талқин ёзиш" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "Талқинлар" +msgid "Reply" +msgstr "Изоҳ" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}} изоҳлар" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Аксинча" msgid "Like" msgstr "Каби, ўхшаш" -msgid "Reply" -msgstr "Изоҳ" - msgid "Share" msgstr "Улашиш" @@ -585,10 +599,10 @@ msgid_plural "{{count}} groups" msgstr[0] "" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "Танланган: {{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "Ҳеч нима танланмаган" msgid "User organisation unit" msgstr "Ташкилий бўлим фойдаланувчиси" @@ -836,6 +850,9 @@ msgstr "Молиявий йиллар" msgid "Years" msgstr "Йиллар" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" @@ -909,7 +926,7 @@ msgid "Indicator group" msgstr "Индикатор гуруҳи" msgid "All groups" -msgstr "" +msgstr "Барча гуруҳлар" msgid "Indicator" msgstr "Индикатор" diff --git a/i18n/uz_UZ_Latn.po b/i18n/uz_UZ_Latn.po new file mode 100644 index 000000000..d6871a81b --- /dev/null +++ b/i18n/uz_UZ_Latn.po @@ -0,0 +1,1175 @@ +# +# Translators: +# Yury Rogachev , 2023 +# +msgid "" +msgstr "" +"Project-Id-Version: i18next-conv\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" +"PO-Revision-Date: 2020-04-28 22:05+0000\n" +"Last-Translator: Yury Rogachev , 2023\n" +"Language-Team: Uzbek (Latin) (https://app.transifex.com/hisp-uio/teams/100509/uz@Latn/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uz@Latn\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +msgid "view only" +msgstr "" + +msgid "view and edit" +msgstr "" + +msgid "all users ({{accessLevel}})" +msgstr "" + +msgid "{{userOrGroup}} ({{accessLevel}})" +msgstr "" + +msgid "Shared with {{commaSeparatedListOfUsersAndGroups}}" +msgstr "" + +msgid "Not shared with any users or groups" +msgstr "" + +msgid "No description" +msgstr "Tavsif yoʼq" + +msgid "Last updated {{time}}" +msgstr "" + +msgid "Created {{time}} by {{author}}" +msgstr "" + +msgid "Created {{time}}" +msgstr "" + +msgid "Viewed {{count}} times" +msgid_plural "Viewed {{count}} times" +msgstr[0] "" + +msgid "Notifications" +msgstr "" + +msgid "You're subscribed and getting updates about new interpretations." +msgstr "" + +msgid "Unsubscribe" +msgstr "" + +msgid "Subscribe to get updates about new interpretations." +msgstr "" + +msgid "Subscribe" +msgstr "" + +msgid "About this map" +msgstr "" + +msgid "About this line list" +msgstr "" + +msgid "About this visualization" +msgstr "" + +msgid "This app could not retrieve required data." +msgstr "" + +msgid "Network error" +msgstr "" + +msgid "Data / Edit calculation" +msgstr "" + +msgid "Data / New calculation" +msgstr "" + +msgid "Remove item" +msgstr "" + +msgid "Check formula" +msgstr "" + +msgid "Calculation name" +msgstr "" + +msgid "Shown in table headers and chart axes/legends" +msgstr "" + +msgid "Delete calculation" +msgstr "" + +msgid "Cancel" +msgstr "Бекор қилиш" + +msgid "The calculation can only be saved with a valid formula" +msgstr "" + +msgid "Add a name to save this calculation" +msgstr "" + +msgid "Save calculation" +msgstr "" + +msgid "" +"Are you sure you want to delete this calculation? It may be used by other " +"visualizations." +msgstr "" + +msgid "Yes, delete" +msgstr "" + +msgid "Totals only" +msgstr "" + +msgid "Details only" +msgstr "" + +msgid "Loading" +msgstr "Yuklanmoqda" + +msgid "Data elements" +msgstr "Maʼlumot elementlari" + +msgid "Search by data element name" +msgstr "" + +msgid "No data elements found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data elements found" +msgstr "" + +msgid "" +"Drag items here, or double click in the list, to start building a " +"calculation formula" +msgstr "" + +msgid "Math operators" +msgstr "" + +msgid "Data Type" +msgstr "Maʼlumot turi" + +msgid "All types" +msgstr "Barcha turlari" + +msgid "Disaggregation" +msgstr "" + +msgid "No data" +msgstr "Maʼlumot yoʼq" + +msgid "Search by data item name" +msgstr "" + +msgid "No items selected" +msgstr "Element tanlanmagan" + +msgid "Selected Items" +msgstr "Element tanlangan" + +msgid "No indicators found" +msgstr "" + +msgid "No data sets found" +msgstr "" + +msgid "No event data items found" +msgstr "" + +msgid "No program indicators found" +msgstr "" + +msgid "No indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No data sets found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No event data items found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "No program indicators found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Nothing found for \"{{- searchTerm}}\"" +msgstr "" + +msgid "Calculation" +msgstr "" + +msgid "Metric type" +msgstr "" + +msgid "All metrics" +msgstr "Barcha koʼrsatgichlar" + +msgid "Move to {{axisName}}" +msgstr "Harakatlaning {{axisName}} ga qarab" + +msgid "Add to {{axisName}}" +msgstr "{{axisName}} ga qoʼshing" + +msgid "Not available for {{visualizationType}}" +msgstr "{{visualizationType}} uchun mavjud emas" + +msgid "Remove Assigned Categories" +msgstr "Belgilangan kategoriyalar oʼchirilsin" + +msgid "Add Assigned Categories" +msgstr "Belgilangan kategoriyalar qoʼshilsin" + +msgid "Remove" +msgstr "Olib tashlash" + +msgid "Filter dimensions" +msgstr "Filtr sozlamalari" + +msgid "Main dimensions" +msgstr "Umumiy oʼlchamlar" + +msgid "Your dimensions" +msgstr "Sizning sozlamalaringiz" + +msgid "Dimension recommended with selected data" +msgstr "Tanlangan maʼlumotlar uchun sozlamalar tavsiya etiladi" + +msgid "All items" +msgstr "" + +msgid "Automatically include all items" +msgstr "" + +msgid "" +"Select all {{- dimensionTitle}} items. With this option, new items added in " +"the future will be automatically included." +msgstr "" + +msgid "Manually select items..." +msgstr "" + +msgid "Nothing found in {{- dimensionTitle}}" +msgstr "" + +msgid "Search" +msgstr "Izlash" + +msgid "Nothing found for {{- searchTerm}}" +msgstr "" + +msgid "Delete {{fileType}}" +msgstr "" + +msgid "" +"This {{fileType}} and related interpretations will be deleted. Continue?" +msgstr "" + +msgid "Delete" +msgstr "Oʼchirib tashlash" + +msgid "File" +msgstr "Fayl" + +msgid "New" +msgstr "Yangi" + +msgid "Open…" +msgstr "" + +msgid "Save" +msgstr "Saqlash" + +msgid "Save…" +msgstr "" + +msgid "Save as…" +msgstr "" + +msgid "Rename…" +msgstr "" + +msgid "Translate…" +msgstr "" + +msgid "Share…" +msgstr "" + +msgid "Get link…" +msgstr "" + +msgid "Open in this app" +msgstr "Ushbu ilovada oching" + +msgid "Close" +msgstr "Yopmoq" + +msgid "Rename {{fileType}}" +msgstr "" + +msgid "Name" +msgstr "Исми" + +msgid "Description" +msgstr "Tavsif" + +msgid "Rename" +msgstr "Қайта номлаш" + +msgid "{{- objectName}} (copy)" +msgstr "" + +msgid "Save {{fileType}} as" +msgstr "" + +msgid "event report" +msgstr "hodisa/tadbir hisoboti" + +msgid "line list" +msgstr "" + +msgid "map" +msgstr "xarita" + +msgid "visualization" +msgstr "" + +msgid "Edit" +msgstr "Tahrirlash" + +msgid "Write a reply" +msgstr "Izoh yozing" + +msgid "Post reply" +msgstr "" + +msgid "Delete failed" +msgstr "Oʼchirish amalga oshmadi" + +msgid "Could not update comment" +msgstr "" + +msgid "Enter comment text" +msgstr "" + +msgid "Update" +msgstr "Янгилаш" + +msgid "Viewing interpretation: {{- visualisationName}}" +msgstr "" + +msgid "Could not load interpretation" +msgstr "" + +msgid "" +"The interpretation couldn’t be displayed. Try again or contact your system " +"administrator." +msgstr "" + +msgid "Hide interpretation" +msgstr "" + +msgid "Write an interpretation" +msgstr "Talqin yozish" + +msgid "Post interpretation" +msgstr "" + +msgid "Interpretations" +msgstr "Talqinlar" + +msgid "Reply" +msgstr "Javob" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + +msgid "Unlike" +msgstr "Аksincha" + +msgid "Like" +msgstr "Kabi, oʼxshash" + +msgid "Share" +msgstr "Улашиш" + +msgid "See interpretation" +msgstr "" + +msgid "Manage sharing" +msgstr "Ulashishni boshqarish" + +msgid "Could not update interpretation" +msgstr "" + +msgid "Enter interpretation text" +msgstr "" + +msgid "Bold text" +msgstr "" + +msgid "Italic text" +msgstr "" + +msgid "Link to a URL" +msgstr "" + +msgid "Mention a user" +msgstr "" + +msgid "Add emoji" +msgstr "" + +msgid "Preview" +msgstr "" + +msgid "Back to write mode" +msgstr "" + +msgid "Too many results. Try refining the search." +msgstr "" + +msgid "Search for a user" +msgstr "" + +msgid "Searching for \"{{- searchText}}\"" +msgstr "" + +msgid "No results found" +msgstr "Hech qanday natija topilmadi" + +msgid "Not available offline" +msgstr "" + +msgid "Created by" +msgstr "Томонидан яратилган" + +msgid "Anyone" +msgstr "Kimdir" + +msgid "Only you" +msgstr "" + +msgid "Others" +msgstr "" + +msgid "Not supported by this app yet" +msgstr "" + +msgid "Filter by name" +msgstr "Nomi boʼyicha filtrlash" + +msgid "Created" +msgstr "Yaratilgan" + +msgid "Last updated" +msgstr "Oxirgi yangilangan" + +msgid "Type" +msgstr "Turi" + +msgid "Clear filters" +msgstr "Filtrlarni tozalash" + +msgid "{{firstItemIndex}}-{{lastItemIndex}} of {{totalNumberOfItems}}" +msgstr "" + +msgid "Open" +msgstr "Ochiq" + +msgid "Couldn't load items" +msgstr "" + +msgid "" +"There was a problem loading items. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No items found. Create a new to get started." +msgstr "" + +msgid "" +"No items found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "Create new" +msgstr "Yangisini yaratish" + +msgid "Open a visualization" +msgstr "" + +msgid "Loading visualizations" +msgstr "" + +msgid "Couldn't load visualizations" +msgstr "" + +msgid "" +"There was a problem loading visualizations. Try again or contact your system" +" administrator." +msgstr "" + +msgid "No visualizations found. Click New visualization to get started." +msgstr "" + +msgid "" +"No visualizations found. Try adjusting your search or filter options to find" +" what you're looking for." +msgstr "" + +msgid "New visualization" +msgstr "" + +msgid "Open a map" +msgstr "" + +msgid "Loading maps" +msgstr "" + +msgid "Couldn't load maps" +msgstr "" + +msgid "" +"There was a problem loading maps. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No maps found. Click New map to get started." +msgstr "" + +msgid "" +"No maps found. Try adjusting your search or filter options to find what " +"you're looking for." +msgstr "" + +msgid "New map" +msgstr "" + +msgid "Open a line list" +msgstr "" + +msgid "Loading line lists" +msgstr "" + +msgid "Couldn't load line lists" +msgstr "" + +msgid "" +"There was a problem loading line lists. Try again or contact your system " +"administrator." +msgstr "" + +msgid "No line lists found. Click New line list to get started." +msgstr "" + +msgid "" +"No line lists found. Try adjusting your search or filter options to find " +"what you're looking for." +msgstr "" + +msgid "New line list" +msgstr "" + +msgid "Options" +msgstr "Вариант" + +msgid "Hide" +msgstr "Berkitish" + +msgid "{{count}} org units" +msgid_plural "{{count}} org units" +msgstr[0] "" + +msgid "{{count}} levels" +msgid_plural "{{count}} levels" +msgstr[0] "" + +msgid "{{count}} groups" +msgid_plural "{{count}} groups" +msgstr[0] "" + +msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" +msgstr "" + +msgid "Nothing selected" +msgstr "" + +msgid "User organisation unit" +msgstr "Ташкилий бўлим фойдаланувчиси" + +msgid "User sub-units" +msgstr "Фойдаланувчига бўйсунувчи бирликлар" + +msgid "User sub-x2-units" +msgstr "Фойдаланувчига бўйсунувчи 2 даражали бирликлар" + +msgid "Select a level" +msgstr "Pogʼonani tanlang" + +msgid "Select a group" +msgstr "Guruhni tanlang" + +msgid "Deselect all" +msgstr "Barcha tanlanganni bekor qilish" + +msgid "Period type" +msgstr "Davr turi" + +msgid "Year" +msgstr "Yil" + +msgid "Select year" +msgstr "Yilni tanlang" + +msgid "Period" +msgstr "Davr" + +msgid "Relative periods" +msgstr "Nisbiy davrlar" + +msgid "Fixed periods" +msgstr "Beligalangan davrlar" + +msgid "Selected Periods" +msgstr "Tanlangan Davrlar" + +msgid "No periods selected" +msgstr "Davr tanlanmagan" + +msgid "Daily" +msgstr "Kunlik" + +msgid "Weekly" +msgstr "Haftalik" + +msgid "Weekly (Start Wednesday)" +msgstr "Haftalik (Boshlanishi Chorshanba)" + +msgid "Weekly (Start Thursday)" +msgstr "Haftalik (Boshlanishi Payshanba)" + +msgid "Weekly (Start Saturday)" +msgstr "Haftalik (Boshlanishi Shanba)" + +msgid "Weekly (Start Sunday)" +msgstr "Haftalik (Boshlanishi Yakshanba)" + +msgid "Bi-weekly" +msgstr "Juft haftalik" + +msgid "Monthly" +msgstr "Oylik" + +msgid "Bi-monthly" +msgstr "Juft oylik" + +msgid "Quarterly" +msgstr "Har kvartal" + +msgid "Six-monthly" +msgstr "Yarim yillik" + +msgid "Six-monthly April" +msgstr "Yarim yillik Аprel" + +msgid "Yearly" +msgstr "Yillik" + +msgid "Financial year (Start November)" +msgstr "Moliyaviy yil (Boshlanishi Noyabr)" + +msgid "Financial year (Start October)" +msgstr "Moliyaviy yil (boshlanishi Oktyabr)" + +msgid "Financial year (Start July)" +msgstr "Moliyaviy yil (boshlanishi Iyul)" + +msgid "Financial year (Start April)" +msgstr "Moliyaviy yil (boshlanishi Аprel)" + +msgid "Today" +msgstr "Bugun" + +msgid "Yesterday" +msgstr "Kecha" + +msgid "Last 3 days" +msgstr "Oxirgi 3 kun" + +msgid "Last 7 days" +msgstr "Oxirgi 7 kun" + +msgid "Last 14 days" +msgstr "Oxirgi 14 kun" + +msgid "Last 30 days" +msgstr "Oxirgi 30 kun" + +msgid "Last 60 days" +msgstr "Oxirgi 60 kun" + +msgid "Last 90 days" +msgstr "Oxirgi 90 kun" + +msgid "Last 180 days" +msgstr "Oxirgi 180 kun" + +msgid "This week" +msgstr "Ushbu hafta" + +msgid "Last week" +msgstr "Oxirgi hafta" + +msgid "Last 4 weeks" +msgstr "Oxirgi 4 hafta" + +msgid "Last 12 weeks" +msgstr "Oxirgi 12 hafta" + +msgid "Last 52 weeks" +msgstr "Oxirgi 52 hafta" + +msgid "Weeks this year" +msgstr "Haftalar ayni yilda" + +msgid "This bi-week" +msgstr "Ushbu juft hafta" + +msgid "Last bi-week" +msgstr "Oxirgi juft hafta" + +msgid "Last 4 bi-weeks" +msgstr "Oxirgi 4 juft haftalar" + +msgid "This month" +msgstr "Ushbu oy" + +msgid "Last month" +msgstr "Oxirgi oy" + +msgid "Last 3 months" +msgstr "Oxirgi 3 oy" + +msgid "Last 6 months" +msgstr "Oxirgi 6 oy" + +msgid "Last 12 months" +msgstr "Oxirgi 12 oy" + +msgid "Months this year" +msgstr "Oylar ayni yilda" + +msgid "This bi-month" +msgstr "Ushbu juft oy" + +msgid "Last bi-month" +msgstr "Oxirgi 2 oy" + +msgid "Last 6 bi-months" +msgstr "Oxirgi 6 juft oylar" + +msgid "Bi-months this year" +msgstr "Аyni yildagi juft oylar" + +msgid "This quarter" +msgstr "Ushbu kvartal" + +msgid "Last quarter" +msgstr "Oxirgi kvartal" + +msgid "Last 4 quarters" +msgstr "Oxirgi 4 kvartal" + +msgid "Quarters this year" +msgstr "Ushbu yildagi kvartallar" + +msgid "This six-month" +msgstr "Ushbu yarim yillik" + +msgid "Last six-month" +msgstr "Oxirgi 6 oy" + +msgid "Last 2 six-month" +msgstr "Oxirgi juft yarim yillik" + +msgid "This financial year" +msgstr "Ushbu moliyaviy yil" + +msgid "Last financial year" +msgstr "Oxirgi moliyaviy yil" + +msgid "Last 5 financial years" +msgstr "Oxirgi 5 moliyaviy yillar" + +msgid "This year" +msgstr "Ushbu yil" + +msgid "Last year" +msgstr "Oxirgi yil" + +msgid "Last 5 years" +msgstr "Oxirgi 5 yil" + +msgid "Last 10 years" +msgstr "Oxirgi 10 yil" + +msgid "Days" +msgstr "Kunlar" + +msgid "Weeks" +msgstr "Haftalar" + +msgid "Bi-weeks" +msgstr "Juft haftalar" + +msgid "Months" +msgstr "Oylar" + +msgid "Bi-months" +msgstr "2 oy" + +msgid "Quarters" +msgstr "Kvartal" + +msgid "Six-months" +msgstr "Yarim yillik" + +msgid "Financial Years" +msgstr "Moliyaviy yillar" + +msgid "Years" +msgstr "Yillar" + +msgid "Interpretations and details" +msgstr "" + +msgid "Translating to" +msgstr "" + +msgid "Choose a locale" +msgstr "" + +msgid "Base locale reference" +msgstr "" + +msgid "Choose a locale to translate from the menu above" +msgstr "" + +msgid "Translate: {{objectName}}" +msgstr "" + +msgid "Save translations" +msgstr "" + +msgid "Cannot save while offline" +msgstr "" + +msgid "Could not load translations" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "Series" +msgstr "Ketma-ketliklar" + +msgid "Category" +msgstr "Kategoriya" + +msgid "Filter" +msgstr "Filtr" + +msgid "Columns" +msgstr "Ustunlar" + +msgid "Rows" +msgstr "Qatorlar" + +msgid "Points" +msgstr "Nuqtalar" + +msgid "Reporting rate" +msgstr "Hisobotdagi stavka" + +msgid "Reporting rate on time" +msgstr "Hisobotdagi stavka oʼz vaqtida" + +msgid "Actual reports" +msgstr "Haqiqiy hisobotlar" + +msgid "Actual reports on time" +msgstr "Haqiqiy hisobotlar oʼz vaqtida" + +msgid "Expected reports" +msgstr "Kutilayotgan hisobotlar" + +msgid "Program" +msgstr "Programma" + +msgid "Select a program" +msgstr "Dasturni tanlang" + +msgid "Indicators" +msgstr "Indikatorlar" + +msgid "Indicator group" +msgstr "Koʼrsatgich guruhi" + +msgid "All groups" +msgstr "" + +msgid "Indicator" +msgstr "Indikator" + +msgid "No indicator groups found" +msgstr "" + +msgid "Loading indicator groups" +msgstr "" + +msgid "Data element group" +msgstr "Maʼlumotlar elementi guruhi" + +msgid "Data element" +msgstr "Maʼlumotlar elementi" + +msgid "No data element groups found" +msgstr "" + +msgid "Loading data element groups" +msgstr "" + +msgid "Data sets" +msgstr "Maʼlumotlar toʼplami" + +msgid "Data set" +msgstr "Maʼlumotlar toʼplami" + +msgid "All data sets" +msgstr "" + +msgid "Loading data sets" +msgstr "" + +msgid "Event data items" +msgstr "Hodisalar haqida maʼlumot elementlari" + +msgid "All programs" +msgstr "" + +msgid "Event data item" +msgstr "Hodisa/Tadbir maʼlumoti elementi" + +msgid "No programs found" +msgstr "" + +msgid "Loading programs" +msgstr "" + +msgid "Program indicators" +msgstr "Dastur indikatorlari" + +msgid "Program indicator" +msgstr "Dastur indikatori" + +msgid "Calculations" +msgstr "" + +msgid "Number" +msgstr "Tartib raqami" + +msgid "Formula is empty. Add items to the formula from the lists on the left." +msgstr "" + +msgid "Consecutive math operators" +msgstr "" + +msgid "Consecutive data elements" +msgstr "" + +msgid "Starts or ends with a math operator" +msgstr "" + +msgid "Empty parentheses" +msgstr "" + +msgid "Missing right parenthesis )" +msgstr "" + +msgid "Missing left parenthesis (" +msgstr "" + +msgid "Extra Small" +msgstr "Juda Kichik" + +msgid "Small" +msgstr "Kichik" + +msgid "Regular" +msgstr "Regulyar" + +msgid "Large" +msgstr "Katta" + +msgid "Extra Large" +msgstr "Juda Katta" + +msgid "Left" +msgstr "Chap" + +msgid "Center" +msgstr "Markaz" + +msgid "Right" +msgstr "Oʼng" + +msgid "Start" +msgstr "Boshlash" + +msgid "Middle" +msgstr "Oʼrtav" + +msgid "End" +msgstr "Oxiri" + +msgid "Top" +msgstr "Yuqoridagi" + +msgid "Bottom" +msgstr "Pastki" + +msgid "{{dynamicOuNames}} and {{lastOuName}}" +msgstr "{{dynamicOuNames}} va {{lastOuName}}" + +msgid "{{allDynamicOuNames}} levels" +msgstr "Barcha {{allDynamicOuNames}} pogʼonalar" + +msgid "{{allDynamicOuNames}} groups" +msgstr "{{allDynamicOuNames}} guruhlar" + +msgid "{{allDynamicOuNames}} levels in {{staticOuNames}}" +msgstr "{{allDynamicOuNames}} pogʼonalar {{staticOuNames}} ichida" + +msgid "{{allDynamicOuNames}} groups in {{staticOuNames}}" +msgstr "{{allDynamicOuNames}} guruhlar {{staticOuNames}} ichida" + +msgid "{{percentage}}% of total x values" +msgstr "" + +msgid "{{percentage}}% of total y values" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q1" +msgstr "" + +msgid "{{thresholdFactor}} × IQR Q3" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Modified Z-score high" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score low" +msgstr "" + +msgid "{{thresholdFactor}} × Z-score high" +msgstr "" + +msgid "Data" +msgstr "Maʼlumot" + +msgid "Organisation unit" +msgstr "Ташкилий бирлик" + +msgid "Assigned Categories" +msgstr "Belgilangan Kategoriyalar" + +msgid "Pivot table" +msgstr "Solishtirma jadval" + +msgid "Area" +msgstr "Maydon" + +msgid "Stacked area" +msgstr "Yigʼilgan maydon" + +msgid "Bar" +msgstr "Tizimcha" + +msgid "Stacked bar" +msgstr "Yigʼilgan tizimcha" + +msgid "Column" +msgstr "Ustun" + +msgid "Year over year (column)" +msgstr "Yildan yilga (ustun)" + +msgid "Stacked column" +msgstr "Yigʼilgan ustun" + +msgid "Gauge" +msgstr "Hisoblagich" + +msgid "Line" +msgstr "Qator" + +msgid "Line list" +msgstr "Qatorlar roʼyxati" + +msgid "Year over year (line)" +msgstr "Yildan yilga (qator)" + +msgid "Pie" +msgstr "Butun aylana" + +msgid "Radar" +msgstr "Radar" + +msgid "Scatter" +msgstr "Tarqoqlik" + +msgid "Single value" +msgstr "Yagona qiymat" + +msgid "All charts" +msgstr "" + +msgid "{{seriesName}} (trend)" +msgstr "" + +msgid "Trend" +msgstr "Yoʼnalish" + +msgid "No legend for this series" +msgstr "Ushbu seriya uchun taʼrif mavjud emas" + +msgid "and {{amount}} more..." +msgstr "" + +msgid "Linear Regression" +msgstr "" + +msgid "Target" +msgstr "Nishon" + +msgid "Base" +msgstr "Аsos" + +msgid "Axis {{axisId}}" +msgstr "Oʼqlar {{axisId}}" + +msgid "{{count}} items" +msgid_plural "{{count}} items" +msgstr[0] "" + +msgid "Reset zoom" +msgstr "" diff --git a/i18n/vi.po b/i18n/vi.po index 792fa3ce4..f8457df27 100644 --- a/i18n/vi.po +++ b/i18n/vi.po @@ -1,15 +1,15 @@ # # Translators: -# Mai Nguyen , 2022 -# Viktor Varland , 2022 # phil_dhis2, 2023 +# Viktor Varland , 2023 +# Mai Nguyen , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-07-06T08:30:33.216Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" -"Last-Translator: phil_dhis2, 2023\n" +"Last-Translator: Mai Nguyen , 2023\n" "Language-Team: Vietnamese (https://app.transifex.com/hisp-uio/teams/100509/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -346,6 +346,9 @@ msgstr "Viết phản hồi" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "Không thể xóa" + msgid "Could not update comment" msgstr "" @@ -378,15 +381,22 @@ msgstr "" msgid "Interpretations" msgstr "Diễn giải " +msgid "Reply" +msgstr "Trả lời" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{đếm}} câu trả lời" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "Không thích" msgid "Like" msgstr "Thích" -msgid "Reply" -msgstr "Trả lời" - msgid "Share" msgstr "Chia sẻ" @@ -838,6 +848,9 @@ msgstr "Năm tài chính" msgid "Years" msgstr "Năm" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/i18n/zh.po b/i18n/zh.po index 31ab090ae..90fabf54a 100644 --- a/i18n/zh.po +++ b/i18n/zh.po @@ -1,14 +1,14 @@ # # Translators: # Viktor Varland , 2021 -# phil_dhis2, 2022 +# Philip Larsen Donnelly, 2022 # 晓东 林 <13981924470@126.com>, 2023 # easylin , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-05-24T12:55:52.925Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: easylin , 2023\n" "Language-Team: Chinese (https://app.transifex.com/hisp-uio/teams/100509/zh/)\n" @@ -347,6 +347,9 @@ msgstr "书写应答" msgid "Post reply" msgstr "发表回复" +msgid "Delete failed" +msgstr "删除失败" + msgid "Could not update comment" msgstr "无法更新评论" @@ -373,21 +376,32 @@ msgstr "隐藏解释" msgid "Write an interpretation" msgstr "书写注释" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "将来查看此解释的其他人可能会看到更多数据。" + msgid "Post interpretation" msgstr "后解释" msgid "Interpretations" msgstr "解释" +msgid "Reply" +msgstr "应答" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "{{count}}条回复" + +msgid "View replies" +msgstr "查看回复" + msgid "Unlike" msgstr "不喜欢" msgid "Like" msgstr "喜欢" -msgid "Reply" -msgstr "应答" - msgid "Share" msgstr "分享" diff --git a/i18n/zh_CN.po b/i18n/zh_CN.po index 21a6c2c1d..654ffecea 100644 --- a/i18n/zh_CN.po +++ b/i18n/zh_CN.po @@ -1,12 +1,12 @@ # # Translators: -# 晓东 林 <13981924470@126.com>, 2022 +# 晓东 林 <13981924470@126.com>, 2023 # easylin , 2023 # msgid "" msgstr "" "Project-Id-Version: i18next-conv\n" -"POT-Creation-Date: 2023-04-18T08:41:27.838Z\n" +"POT-Creation-Date: 2023-09-27T14:15:13.876Z\n" "PO-Revision-Date: 2020-04-28 22:05+0000\n" "Last-Translator: easylin , 2023\n" "Language-Team: Chinese (China) (https://app.transifex.com/hisp-uio/teams/100509/zh_CN/)\n" @@ -78,7 +78,7 @@ msgid "This app could not retrieve required data." msgstr "" msgid "Network error" -msgstr "" +msgstr "网络错误" msgid "Data / Edit calculation" msgstr "" @@ -345,6 +345,9 @@ msgstr "" msgid "Post reply" msgstr "" +msgid "Delete failed" +msgstr "删除失败" + msgid "Could not update comment" msgstr "" @@ -371,21 +374,32 @@ msgstr "" msgid "Write an interpretation" msgstr "" +msgid "" +"Other people viewing this interpretation in the future may see more data." +msgstr "" + msgid "Post interpretation" msgstr "" msgid "Interpretations" msgstr "注释" +msgid "Reply" +msgstr "回复" + +msgid "{{count}} replies" +msgid_plural "{{count}} replies" +msgstr[0] "" + +msgid "View replies" +msgstr "" + msgid "Unlike" msgstr "" msgid "Like" msgstr "Like" -msgid "Reply" -msgstr "回复" - msgid "Share" msgstr "分享" @@ -586,10 +600,10 @@ msgid_plural "{{count}} groups" msgstr[0] "" msgid "Selected: {{commaSeparatedListOfOrganisationUnits}}" -msgstr "" +msgstr "已选择:{{commaSeparatedListOfOrganisationUnits}}" msgid "Nothing selected" -msgstr "" +msgstr "未选择任何内容" msgid "User organisation unit" msgstr "用户所在机构" @@ -601,7 +615,7 @@ msgid "User sub-x2-units" msgstr "二级下属机构" msgid "Select a level" -msgstr "" +msgstr "选择一个等级" msgid "Select a group" msgstr "" @@ -837,6 +851,9 @@ msgstr "" msgid "Years" msgstr "年" +msgid "Interpretations and details" +msgstr "" + msgid "Translating to" msgstr "" diff --git a/package.json b/package.json index 1d09a80b0..f64d82de3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dhis2/analytics", - "version": "26.0.7", + "version": "26.3.0", "main": "./build/cjs/index.js", "module": "./build/es/index.js", "exports": { @@ -37,9 +37,9 @@ "@dhis2/d2-i18n": "^1.1.0", "@dhis2/ui": "^8.13.13", "@sambego/storybook-state": "^2.0.1", - "@storybook/addons": "^6.5.9", + "@storybook/addons": "^6.5.16", "@storybook/preset-create-react-app": "^3.1.7", - "@storybook/react": "^6.1.14", + "@storybook/react": "^6.5.16", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^12.1.5", "enzyme": "^3.9.0", @@ -47,8 +47,7 @@ "fs-extra": "^10.1.0", "jest-enzyme": "^7.0.2", "prop-types": "^15", - "styled-jsx": "^4.0.1", - "typeface-roboto": "^0.0.75" + "styled-jsx": "^4.0.1" }, "peerDependencies": { "@dhis2/app-runtime": "^3", @@ -60,7 +59,7 @@ "styled-jsx": "^4.0.1" }, "dependencies": { - "@dhis2/d2-ui-rich-text": "^7.4.0", + "@dhis2/d2-ui-rich-text": "^7.4.1", "@dhis2/multi-calendar-dates": "1.0.0", "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", @@ -70,7 +69,7 @@ "crypto-js": "^4.1.1", "d2-utilizr": "^0.2.16", "d3-color": "^1.2.3", - "highcharts": "^10.2.0", + "highcharts": "^10.3.3", "lodash": "^4.17.21", "mathjs": "^9.4.2", "react-beautiful-dnd": "^10.1.1", diff --git a/src/__demo__/InterpretationsUnit.stories.js b/src/__demo__/InterpretationsUnit.stories.js new file mode 100644 index 000000000..f1c786f57 --- /dev/null +++ b/src/__demo__/InterpretationsUnit.stories.js @@ -0,0 +1,51 @@ +import { CustomDataProvider } from '@dhis2/app-runtime' +import { storiesOf } from '@storybook/react' +import React from 'react' +import { InterpretationsUnit } from '../components/Interpretations/InterpretationsUnit/index.js' + +storiesOf('IntepretationsUnit', module).add('Default', () => { + return ( + + + + ) +}) + +storiesOf('IntepretationsUnit', module).add( + 'With no time dimensions warning', + () => { + return ( + + + + ) + } +) diff --git a/src/__demo__/PivotTable.stories.js b/src/__demo__/PivotTable.stories.js index b4c46f346..93ca49ae9 100644 --- a/src/__demo__/PivotTable.stories.js +++ b/src/__demo__/PivotTable.stories.js @@ -784,6 +784,26 @@ storiesOf('PivotTable', module).add( } ) +storiesOf('PivotTable', module).add( + 'cumulative + empty columns (weekly) - shown', + (_, { pivotTableOptions }) => { + const visualization = { + ...weeklyColumnsVisualization, + ...pivotTableOptions, + hideEmptyColumns: false, + cumulativeValues: true, + } + return ( +
+ +
+ ) + } +) + storiesOf('PivotTable', module).add( 'empty columns (weekly) - hidden', (_, { pivotTableOptions }) => { @@ -803,6 +823,26 @@ storiesOf('PivotTable', module).add( } ) +storiesOf('PivotTable', module).add( + 'cumulative + empty columns (weekly) - hidden', + (_, { pivotTableOptions }) => { + const visualization = { + ...weeklyColumnsVisualization, + ...pivotTableOptions, + hideEmptyColumns: true, + cumulativeValues: true, + } + return ( +
+ +
+ ) + } +) + storiesOf('PivotTable', module).add( 'empty columns + assigned cats (shown)', (_, { pivotTableOptions }) => { @@ -1119,3 +1159,44 @@ storiesOf('PivotTable', module).add('DEGS', (_, { pivotTableOptions }) => { ) }) + +storiesOf('PivotTable', module).add( + 'Truncated header cell', + (_, { pivotTableOptions }) => { + const widths = [250, 200, 500] + const [width, setWidth] = useState(250) + const toggleWidth = () => + setWidth( + (currentWidth) => + widths[widths.indexOf(currentWidth) + 1] ?? widths[0] + ) + const visualization = { + ...narrativeVisualization, + ...visualizationReset, + ...pivotTableOptions, + columns: narrativeVisualization.filters, + filters: narrativeVisualization.columns, + rowTotals: true, + colTotals: true, + } + + const data = { + ...narrativeData, + rows: [narrativeData.rows[0]], + } + + return ( +
+ + +
+ ) + } +) diff --git a/src/api/expression.js b/src/api/expression.js index 2b7e85bb6..64bb61c30 100644 --- a/src/api/expression.js +++ b/src/api/expression.js @@ -11,11 +11,14 @@ export const createCalculationMutation = { } export const updateCalculationMutation = { - type: 'update', + type: 'json-patch', resource: 'expressionDimensionItems', - partial: true, id: ({ id }) => id, - data: ({ name, expression }) => ({ name, shortName: name, expression }), + data: ({ name, expression }) => [ + { op: 'add', path: '/name', value: name }, + { op: 'add', path: '/shortName', value: name }, + { op: 'add', path: '/expression', value: expression }, + ], } export const deleteCalculationMutation = { diff --git a/src/components/AboutAOUnit/AboutAOUnit.js b/src/components/AboutAOUnit/AboutAOUnit.js index 0fb7fb78e..76002a453 100644 --- a/src/components/AboutAOUnit/AboutAOUnit.js +++ b/src/components/AboutAOUnit/AboutAOUnit.js @@ -1,4 +1,8 @@ -import { useDataQuery, useDataMutation } from '@dhis2/app-runtime' +import { + useDataQuery, + useDataMutation, + useTimeZoneConversion, +} from '@dhis2/app-runtime' import i18n from '@dhis2/d2-i18n' import { Parser as RichTextParser } from '@dhis2/d2-ui-rich-text' import { @@ -57,6 +61,7 @@ const getUnsubscribeMutation = (type, id) => ({ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { const [isExpanded, setIsExpanded] = useState(true) + const { fromServerDate } = useTimeZoneConversion() const queries = useMemo(() => getQueries(type), [type]) @@ -208,7 +213,7 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { {i18n.t('Last updated {{time}}', { time: moment( - data.ao.lastUpdated + fromServerDate(data.ao.lastUpdated) ).fromNow(), })}

@@ -219,7 +224,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { 'Created {{time}} by {{author}}', { time: moment( - data.ao.created + fromServerDate( + data.ao.created + ) ).fromNow(), author: data.ao.createdBy .displayName, @@ -227,7 +234,9 @@ const AboutAOUnit = forwardRef(({ type, id, renderId }, ref) => { ) : i18n.t('Created {{time}}', { time: moment( - data.ao.created + fromServerDate( + data.ao.created + ) ).fromNow(), })}

diff --git a/src/components/FileMenu/RenameDialog.js b/src/components/FileMenu/RenameDialog.js index 9692e5838..fe8f64328 100644 --- a/src/components/FileMenu/RenameDialog.js +++ b/src/components/FileMenu/RenameDialog.js @@ -19,12 +19,25 @@ import { labelForFileType, } from './utils.js' +const formatPayload = (name, description) => { + const payload = [{ op: 'add', path: '/name', value: name }] + + if (description) { + payload.push({ + op: 'add', + path: '/description', + value: description, + }) + } + + return payload +} + const getMutation = (type) => ({ resource: endpointFromFileType(type), id: ({ id }) => id, - type: 'update', - partial: true, - data: ({ name, description }) => ({ name, description }), + type: 'json-patch', + data: ({ name, description }) => formatPayload(name, description), }) export const RenameDialog = ({ type, object, onClose, onRename, onError }) => { @@ -52,7 +65,7 @@ export const RenameDialog = ({ type, object, onClose, onRename, onError }) => { } return ( - + {i18n.t('Rename {{fileType}}', { @@ -67,6 +80,7 @@ export const RenameDialog = ({ type, object, onClose, onRename, onError }) => { required value={name} onChange={({ value }) => setName(value)} + dataTest="file-menu-rename-modal-name" /> { value={description} rows={3} onChange={({ value }) => setDescription(value)} + dataTest="file-menu-rename-modal-description" /> - - diff --git a/src/components/FileMenu/utils.js b/src/components/FileMenu/utils.js index 7cca04a9d..424f7f43e 100644 --- a/src/components/FileMenu/utils.js +++ b/src/components/FileMenu/utils.js @@ -39,3 +39,12 @@ export const appPathFor = (fileType, id) => { return `${window.location.search}${window.location.hash}` } } + +export const preparePayloadForSaveAs = ({ ...visualization }) => { + delete visualization.id + delete visualization.created + delete visualization.createdBy + delete visualization.user + + return visualization +} diff --git a/src/components/Interpretations/InterpretationModal/Comment.js b/src/components/Interpretations/InterpretationModal/Comment.js index 2e7e07637..e1fef4fe1 100644 --- a/src/components/Interpretations/InterpretationModal/Comment.js +++ b/src/components/Interpretations/InterpretationModal/Comment.js @@ -2,7 +2,12 @@ import i18n from '@dhis2/d2-i18n' import { IconEdit16 } from '@dhis2/ui' import PropTypes from 'prop-types' import React, { useState } from 'react' -import { Message, MessageIconButton, MessageStatsBar } from '../common/index.js' +import { + Message, + MessageIconButton, + MessageStatsBar, + getCommentAccess, +} from '../common/index.js' import { CommentDeleteButton } from './CommentDeleteButton.js' import { CommentUpdateForm } from './CommentUpdateForm.js' @@ -11,9 +16,12 @@ const Comment = ({ currentUser, interpretationId, onThreadUpdated, + canComment, }) => { const [isUpdateMode, setIsUpdateMode] = useState(false) + const commentAccess = getCommentAccess(comment, canComment, currentUser) + return isUpdateMode ? ( setIsUpdateMode(false)} @@ -29,22 +37,23 @@ const Comment = ({ created={comment.created} username={comment.createdBy.displayName} > - - {comment.access.update && ( + {commentAccess.edit && ( + setIsUpdateMode(true)} /> - )} - {comment.access.delete && ( - onThreadUpdated(true)} - /> - )} - + + {commentAccess.delete && ( + onThreadUpdated(true)} + /> + )} + + )} ) } @@ -54,6 +63,7 @@ Comment.propTypes = { currentUser: PropTypes.object.isRequired, interpretationId: PropTypes.string.isRequired, onThreadUpdated: PropTypes.func.isRequired, + canComment: PropTypes.bool, } export { Comment } diff --git a/src/components/Interpretations/InterpretationModal/CommentDeleteButton.js b/src/components/Interpretations/InterpretationModal/CommentDeleteButton.js index 228896126..363733235 100644 --- a/src/components/Interpretations/InterpretationModal/CommentDeleteButton.js +++ b/src/components/Interpretations/InterpretationModal/CommentDeleteButton.js @@ -1,8 +1,8 @@ import { useDataMutation } from '@dhis2/app-runtime' import i18n from '@dhis2/d2-i18n' -import { IconDelete16 } from '@dhis2/ui' +import { IconDelete16, colors } from '@dhis2/ui' import PropTypes from 'prop-types' -import React from 'react' +import React, { useState } from 'react' import { MessageIconButton } from '../common/index.js' const mutation = { @@ -13,17 +13,43 @@ const mutation = { } const CommentDeleteButton = ({ commentId, interpretationId, onComplete }) => { + const [deleteError, setDeleteError] = useState(null) const [remove, { loading }] = useDataMutation(mutation, { - onComplete, + onComplete: () => { + setDeleteError(null) + onComplete() + }, + onError: () => setDeleteError(i18n.t('Delete failed')), variables: { commentId, interpretationId }, }) + + const onDelete = () => { + setDeleteError(null) + remove() + } + return ( - +
+ + {deleteError && {deleteError}} + +
) } diff --git a/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js b/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js index 1b1dec89c..ea9d3812e 100644 --- a/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js +++ b/src/components/Interpretations/InterpretationModal/CommentUpdateForm.js @@ -33,9 +33,7 @@ export const CommentUpdateForm = ({ }, } ) - const errorText = error - ? error.message || i18n.t('Could not update comment') - : '' + const errorText = error ? i18n.t('Could not update comment') : '' return (
diff --git a/src/components/Interpretations/InterpretationModal/InterpretationModal.js b/src/components/Interpretations/InterpretationModal/InterpretationModal.js index f2d693838..5cc5050bd 100644 --- a/src/components/Interpretations/InterpretationModal/InterpretationModal.js +++ b/src/components/Interpretations/InterpretationModal/InterpretationModal.js @@ -24,14 +24,14 @@ const modalCSS = css.resolve` max-width: calc(100vw - 128px) !important; max-height: calc(100vh - 128px) !important; width: auto !important; - height: auto !important; + height: calc(100vh - 128px) !important; overflow-y: hidden; } aside.hidden { display: none; } aside > :global(div) > :global(div) { - max-height: none; + height: 100%; } ` @@ -39,6 +39,7 @@ function getModalContentCSS(width) { return css.resolve` div { width: ${width}px; + overflow-y: visible; } ` } @@ -49,14 +50,14 @@ const query = { id: ({ id }) => id, params: { fields: [ - 'access', + 'access[write,manage]', 'id', 'text', 'created', - 'user[id,displayName]', + 'createdBy[id,displayName]', 'likes', 'likedBy', - 'comments[access,id,text,created,createdBy[id,displayName]]', + 'comments[id,text,created,createdBy[id,displayName]]', ], }, }, @@ -216,12 +217,14 @@ const InterpretationModal = ({ .container { display: flex; flex-direction: column; + height: 100%; } .row { display: flex; flex-direction: row; gap: 16px; + height: 100%; } .visualisation-wrap { @@ -233,7 +236,6 @@ const InterpretationModal = ({ padding-right: ${spacers.dp4}; flex-basis: 300px; flex-shrink: 0; - overflow-y: auto; } `} diff --git a/src/components/Interpretations/InterpretationModal/InterpretationThread.js b/src/components/Interpretations/InterpretationModal/InterpretationThread.js index cf352317b..03686cd7b 100644 --- a/src/components/Interpretations/InterpretationModal/InterpretationThread.js +++ b/src/components/Interpretations/InterpretationModal/InterpretationThread.js @@ -1,9 +1,10 @@ +import { useTimeZoneConversion } from '@dhis2/app-runtime' import { IconClock16, colors } from '@dhis2/ui' import cx from 'classnames' import moment from 'moment' import PropTypes from 'prop-types' import React, { useRef, useEffect } from 'react' -import { Interpretation } from '../common/index.js' +import { Interpretation, getInterpretationAccess } from '../common/index.js' import { Comment } from './Comment.js' import { CommentAddForm } from './CommentAddForm.js' @@ -16,6 +17,7 @@ const InterpretationThread = ({ onThreadUpdated, downloadMenuComponent: DownloadMenu, }) => { + const { fromServerDate } = useTimeZoneConversion() const focusRef = useRef() useEffect(() => { @@ -26,51 +28,64 @@ const InterpretationThread = ({ } }, [initialFocus]) + const interpretationAccess = getInterpretationAccess( + interpretation, + currentUser + ) + return (
-
-
- - {moment(interpretation.created).format('LLL')} -
- {DownloadMenu && ( - - )} -
- focusRef.current?.focus()} - onUpdated={() => onThreadUpdated(true)} - onDeleted={onInterpretationDeleted} - /> -
- {interpretation.comments.map((comment) => ( - - ))} -
- onThreadUpdated(true)} - focusRef={focusRef} - /> +
+ + {moment(fromServerDate(interpretation.created)).format('LLL')} +
+ {DownloadMenu && ( + + )} +
+ focusRef.current?.focus() + : null + } + onUpdated={() => onThreadUpdated(true)} + onDeleted={onInterpretationDeleted} + isInThread={true} + /> +
+ {interpretation.comments.map((comment) => ( + + ))}
+ {interpretationAccess.comment && ( + onThreadUpdated(true)} + focusRef={focusRef} + /> + )} - -) + .footer { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: ${spacers.dp8}; + } + `} + + ) +} Message.propTypes = { children: PropTypes.node.isRequired, diff --git a/src/components/Interpretations/common/Message/MessageIconButton.js b/src/components/Interpretations/common/Message/MessageIconButton.js index 79054e7c5..bbe0e87b0 100644 --- a/src/components/Interpretations/common/Message/MessageIconButton.js +++ b/src/components/Interpretations/common/Message/MessageIconButton.js @@ -1,4 +1,4 @@ -import { Tooltip, colors, spacers } from '@dhis2/ui' +import { Tooltip, colors, spacers, theme } from '@dhis2/ui' import cx from 'classnames' import PropTypes from 'prop-types' import React from 'react' @@ -11,6 +11,7 @@ const MessageIconButton = ({ count, iconComponent: Icon, dataTest, + viewOnly, }) => ( {({ ref, onMouseOver, onMouseOut }) => ( @@ -25,7 +26,7 @@ const MessageIconButton = ({ event.stopPropagation() onClick() }} - className={cx('button', { selected })} + className={cx('button', { selected, viewOnly })} disabled={disabled} data-test={dataTest} > @@ -49,6 +50,10 @@ const MessageIconButton = ({ color: ${colors.grey700}; } + .viewOnly { + cursor: default; + } + .button.selected { color: ${colors.teal600}; font-weight: 500; @@ -69,6 +74,15 @@ const MessageIconButton = ({ .button.selected:hover :global(svg) { color: ${colors.teal700}; } + + .button:disabled { + color: ${theme.disabled}; + cursor: not-allowed; + } + + .button:disabled :global(svg) { + color: ${theme.disabled}; + } `} )} @@ -83,6 +97,7 @@ MessageIconButton.propTypes = { dataTest: PropTypes.string, disabled: PropTypes.bool, selected: PropTypes.bool, + viewOnly: PropTypes.bool, onClick: PropTypes.func, } diff --git a/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js b/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js index ba2eba9fe..e8ad9216d 100644 --- a/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js +++ b/src/components/Interpretations/common/RichTextEditor/RichTextEditor.js @@ -192,7 +192,7 @@ Toolbar.propTypes = { export const RichTextEditor = forwardRef( ( - { value, disabled, inputPlaceholder, onChange, errorText }, + { value, disabled, inputPlaceholder, onChange, errorText, helpText }, externalRef ) => { const [previewMode, setPreviewMode] = useState(false) @@ -234,7 +234,11 @@ export const RichTextEditor = forwardRef( {value}
) : ( - + { + describe('getInterpretationAccess', () => { + it('returns true for all accesses for superuser', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJoe, + } + + expect( + getInterpretationAccess(interpretation, superuser) + ).toMatchObject({ + share: true, + comment: true, + edit: true, + delete: true, + }) + }) + it('returns true for all accesses for creator', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJoe, + } + + expect( + getInterpretationAccess(interpretation, userJoe) + ).toMatchObject({ + share: true, + comment: true, + edit: true, + delete: true, + }) + }) + + it('returns false for edit/delete if user is not creator/superuser', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJane, + } + + expect( + getInterpretationAccess(interpretation, userJoe) + ).toMatchObject({ + share: true, + comment: true, + edit: false, + delete: false, + }) + }) + + it('returns false for comment/edit/delete if user is not creator/superuser and no write access', () => { + const interpretation = { + access: { + write: false, + manage: true, + }, + createdBy: userJane, + } + + expect( + getInterpretationAccess(interpretation, userJoe) + ).toMatchObject({ + share: true, + comment: false, + edit: false, + delete: false, + }) + }) + + it('returns false for share/comment/edit/delete if user is not creator/superuser and no write or manage access', () => { + const interpretation = { + access: { + write: false, + manage: false, + }, + createdBy: userJane, + } + + expect( + getInterpretationAccess(interpretation, userJoe) + ).toMatchObject({ + share: false, + comment: false, + edit: false, + delete: false, + }) + }) + + it('throws an error for all accesses when no currentUser provided', () => { + const interpretation = { + access: { + write: false, + manage: false, + }, + createdBy: userJane, + } + + expect(() => getInterpretationAccess(interpretation)).toThrow( + '"hasAuthority" requires "authorities" to be an array or set of authorities (strings)' + ) + }) + + it('throws an error when currentUser is missing authorities', () => { + const interpretation = { + access: { + write: false, + manage: false, + }, + createdBy: userJane, + } + + expect(() => + getInterpretationAccess(interpretation, { + id: 'usernoauthorties', + }) + ).toThrow( + '"hasAuthority" requires "authorities" to be an array or set of authorities (strings)' + ) + }) + }) + + describe('getInterpretationAccess using D2.currentUser', () => { + it('returns true for all accesses for superuser', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJoeD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, superuserD2CurrentUser) + ).toMatchObject({ + share: true, + comment: true, + edit: true, + delete: true, + }) + }) + it('returns true for all accesses for creator', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJoeD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: true, + comment: true, + edit: true, + delete: true, + }) + }) + + it('returns false for edit/delete if user is not creator/superuser', () => { + const interpretation = { + access: { + write: true, + manage: true, + }, + createdBy: userJaneD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: true, + comment: true, + edit: false, + delete: false, + }) + }) + + it('returns false for comment/edit/delete if user is not creator/superuser and no write access', () => { + const interpretation = { + access: { + write: false, + manage: true, + }, + createdBy: userJaneD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: true, + comment: false, + edit: false, + delete: false, + }) + }) + + it('returns false for share/comment/edit/delete if user is not creator/superuser and no write or manage access', () => { + const interpretation = { + access: { + write: false, + manage: false, + }, + createdBy: userJaneD2CurrentUser, + } + + expect( + getInterpretationAccess(interpretation, userJoeD2CurrentUser) + ).toMatchObject({ + share: false, + comment: false, + edit: false, + delete: false, + }) + }) + }) + + describe('getCommentAccess using D2.currentUser', () => { + it('returns true for all accesses for superuser', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJoeD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + superuserD2CurrentUser + ) + ).toMatchObject({ + edit: true, + delete: true, + }) + }) + + it('returns true for all accesses for creator when interpretation has write access', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJoeD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + userJoeD2CurrentUser + ) + ).toMatchObject({ + edit: true, + delete: true, + }) + }) + + it('returns true for edit and false for delete for creator when interpretation does not have write access', () => { + const interpretation = { + access: { + write: false, + }, + } + + const comment = { + createdBy: userJoeD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + userJoeD2CurrentUser + ) + ).toMatchObject({ + edit: true, + delete: false, + }) + }) + + it('returns false for edit/delete for user who is not creator or superuser', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJaneD2CurrentUser, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + userJoeD2CurrentUser + ) + ).toMatchObject({ + edit: false, + delete: false, + }) + }) + }) + + describe('getCommentAccess', () => { + it('returns true for all accesses for superuser', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJoe, + } + + expect( + getCommentAccess( + comment, + interpretation.access.write, + superuser + ) + ).toMatchObject({ + edit: true, + delete: true, + }) + }) + + it('returns true for all accesses for creator when interpretation has write access', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJoe, + } + + expect( + getCommentAccess(comment, interpretation.access.write, userJoe) + ).toMatchObject({ + edit: true, + delete: true, + }) + }) + + it('returns true for edit and false for delete for creator when interpretation does not have write access', () => { + const interpretation = { + access: { + write: false, + }, + } + + const comment = { + createdBy: userJoe, + } + + expect( + getCommentAccess(comment, interpretation.access.write, userJoe) + ).toMatchObject({ + edit: true, + delete: false, + }) + }) + + it('returns false for edit/delete for user who is not creator or superuser', () => { + const interpretation = { + access: { + write: true, + }, + } + + const comment = { + createdBy: userJane, + } + + expect( + getCommentAccess(comment, interpretation.access.write, userJoe) + ).toMatchObject({ + edit: false, + delete: false, + }) + }) + }) +}) diff --git a/src/components/Interpretations/common/getInterpretationAccess.js b/src/components/Interpretations/common/getInterpretationAccess.js new file mode 100644 index 000000000..11123bc63 --- /dev/null +++ b/src/components/Interpretations/common/getInterpretationAccess.js @@ -0,0 +1,50 @@ +// For backwards compatibility +// accept both Set (from the old d2.currentUser object) and array +const hasAuthority = (authorities, authority) => { + if (!authority || typeof authority !== 'string') { + throw new Error( + `"hasAuthority" requires "authority" to be a populated string but received ${authority}` + ) + } + if ( + !(Array.isArray(authorities) || typeof authorities?.has === 'function') + ) { + throw new Error( + `"hasAuthority" requires "authorities" to be an array or set of authorities (strings)` + ) + } + + return Array.isArray(authorities) + ? authorities.includes(authority) + : authorities.has(authority) +} + +const isSuperuser = (authorities) => hasAuthority(authorities, 'ALL') + +const isCreator = (object, currentUser) => + object?.createdBy.id === currentUser?.id + +export const getInterpretationAccess = (interpretation, currentUser) => { + const canEditDelete = + isCreator(interpretation, currentUser) || + isSuperuser(currentUser?.authorities) + return { + share: interpretation.access.manage, + comment: interpretation.access.write, + edit: canEditDelete, + delete: canEditDelete, + } +} + +export const getCommentAccess = ( + comment, + hasInterpretationReplyAccess, + currentUser +) => { + const canEditDelete = + isCreator(comment, currentUser) || isSuperuser(currentUser?.authorities) + return { + edit: canEditDelete, + delete: canEditDelete && hasInterpretationReplyAccess, + } +} diff --git a/src/components/Interpretations/common/index.js b/src/components/Interpretations/common/index.js index 0565ea3b2..562614fb1 100644 --- a/src/components/Interpretations/common/index.js +++ b/src/components/Interpretations/common/index.js @@ -1,3 +1,4 @@ export * from './Interpretation/index.js' export * from './Message/index.js' export * from './RichTextEditor/index.js' +export * from './getInterpretationAccess.js' diff --git a/src/components/Options/VisualizationOptions.js b/src/components/Options/VisualizationOptions.js index 3bb3e3174..c8eb10e72 100644 --- a/src/components/Options/VisualizationOptions.js +++ b/src/components/Options/VisualizationOptions.js @@ -18,6 +18,7 @@ import { modalContent, tabSection, tabSectionTitle, + tabSectionTitleDisabled, tabSectionTitleMargin, tabSectionOption, tabSectionOptionItem, @@ -95,6 +96,7 @@ const VisualizationOptions = ({ {tabContent.styles} {tabSection.styles} {tabSectionTitle.styles} + {tabSectionTitleDisabled.styles} {tabSectionTitleMargin.styles} {tabSectionOption.styles} {tabSectionOptionItem.styles} diff --git a/src/components/Options/styles/VisualizationOptions.style.js b/src/components/Options/styles/VisualizationOptions.style.js index bcd74f517..61c87803f 100644 --- a/src/components/Options/styles/VisualizationOptions.style.js +++ b/src/components/Options/styles/VisualizationOptions.style.js @@ -51,6 +51,12 @@ export const tabSectionTitle = css.resolve` } ` +export const tabSectionTitleDisabled = css.resolve` + span { + color: ${colors.grey600}; + } +` + export const tabSectionTitleMargin = css.resolve` span { margin-top: ${spacers.dp8}; diff --git a/src/components/PivotTable/PivotTableTitleRow.js b/src/components/PivotTable/PivotTableTitleRow.js index 681eaf1ab..ae9bfb576 100644 --- a/src/components/PivotTable/PivotTableTitleRow.js +++ b/src/components/PivotTable/PivotTableTitleRow.js @@ -1,5 +1,6 @@ +import { Tooltip } from '@dhis2/ui' import PropTypes from 'prop-types' -import React, { useState, useEffect } from 'react' +import React, { useRef, useState, useEffect } from 'react' import { PivotTableCell } from './PivotTableCell.js' import { usePivotTableEngine } from './PivotTableEngineContext.js' import { cell as cellStyle } from './styles/PivotTable.style.js' @@ -8,34 +9,66 @@ export const PivotTableTitleRow = ({ title, scrollPosition, containerWidth, - totalWidth, }) => { + const containerRef = useRef(null) + const [scrollWidth, setScrollWidth] = useState(0) + const [isTitleTruncated, setIsTitleTruncated] = useState(false) const engine = usePivotTableEngine() const columnCount = engine.width + engine.rowDepth + const maxWidth = containerWidth - (engine.cellPadding * 2 + 2) + const marginLeft = Math.max(0, scrollPosition?.x ?? 0) - const [position, setPosition] = useState(scrollPosition.x) useEffect(() => { - setPosition( - Math.max(0, Math.min(scrollPosition.x, totalWidth - containerWidth)) - ) - }, [containerWidth, scrollPosition.x, totalWidth]) + if (containerRef.current) { + /* Only set `scrollWidth` once, because during a CSS transition + * the reported value can sometimes be equal to `clientWidth` + * even though the text doesn't fit. Due to `white-space: nowrap` + * and `overflow: hidden` the `scrollWidth` should remain constant, + * so we can assume this initial value is correct. */ + if (!scrollWidth) { + setScrollWidth(containerRef.current.scrollWidth) + } + const currentScrollWidth = + scrollWidth ?? containerRef.current.scrollWidth + const newIsTitleTruncated = + currentScrollWidth > containerRef.current.clientWidth + if (newIsTitleTruncated !== isTitleTruncated) { + setIsTitleTruncated(newIsTitleTruncated) + } + } + }, [containerWidth, scrollWidth, isTitleTruncated]) + return (
- {title} + {isTitleTruncated ? ( + + {({ ref: tooltipRef, onMouseOver, onMouseOut }) => ( +
+ {title} +
+ )} +
+ ) : ( + title + )}
@@ -47,5 +80,4 @@ PivotTableTitleRow.propTypes = { scrollPosition: PropTypes.shape({ x: PropTypes.number.isRequired }) .isRequired, title: PropTypes.string.isRequired, - totalWidth: PropTypes.number.isRequired, } diff --git a/src/components/PivotTable/PivotTableTitleRows.js b/src/components/PivotTable/PivotTableTitleRows.js index 34ad04e33..8a3439c9d 100644 --- a/src/components/PivotTable/PivotTableTitleRows.js +++ b/src/components/PivotTable/PivotTableTitleRows.js @@ -13,10 +13,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { title={engine.options.title} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} {engine.options.subtitle ? ( @@ -24,10 +20,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { title={engine.options.subtitle} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} {engine.visualization.filters?.length ? ( @@ -38,10 +30,6 @@ export const PivotTableTitleRows = ({ clippingResult, width }) => { )} scrollPosition={clippingResult.scrollPosition} containerWidth={width} - totalWidth={ - engine.adaptiveClippingController.columns.totalSize + - engine.adaptiveClippingController.columns.headerSize - } /> ) : null} diff --git a/src/components/PivotTable/styles/PivotTable.style.js b/src/components/PivotTable/styles/PivotTable.style.js index 23cfab64b..00bf7c6a6 100644 --- a/src/components/PivotTable/styles/PivotTable.style.js +++ b/src/components/PivotTable/styles/PivotTable.style.js @@ -109,9 +109,25 @@ export const cell = css` align-items: center; justify-content: center; } - .title { + .title-cell { font-weight: bold; background-color: #cddaed; + padding: 0; + } + .title-cell-content { + text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + } + .title-cell.displaydensity-COMPACT > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_COMPACT}px; + } + .title-cell.displaydensity-NORMAL > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_NORMAL}px; + } + .title-cell.displaydensity-COMFORTABLE > .title-cell-content { + padding: ${DISPLAY_DENSITY_PADDING_COMFORTABLE}px; } .row-header { background-color: #dae6f8; diff --git a/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js b/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js index 259131be2..fbcdf146c 100644 --- a/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js +++ b/src/components/Toolbar/HoverMenuBar/HoverMenuDropdown.js @@ -6,7 +6,13 @@ import React, { useRef } from 'react' import menuButtonStyles from '../MenuButton.styles.js' import { useHoverMenubarContext } from './HoverMenuBar.js' -export const HoverMenuDropdown = ({ children, label, dataTest, disabled }) => { +export const HoverMenuDropdown = ({ + children, + className, + label, + dataTest, + disabled, +}) => { const buttonRef = useRef() const { onDropDownButtonClick, @@ -18,7 +24,7 @@ export const HoverMenuDropdown = ({ children, label, dataTest, disabled }) => { return ( <>