diff --git a/config/core.entity_form_display.paragraph.donors.default.yml b/config/core.entity_form_display.paragraph.donors.default.yml index 839a27fc..d861b755 100644 --- a/config/core.entity_form_display.paragraph.donors.default.yml +++ b/config/core.entity_form_display.paragraph.donors.default.yml @@ -6,11 +6,14 @@ dependencies: - field.field.paragraph.donors.field_country_donors - field.field.paragraph.donors.field_figures_footnote - field.field.paragraph.donors.field_presence_donors + - field.field.paragraph.donors.field_text + - field.field.paragraph.donors.field_title - field.field.paragraph.donors.field_url - paragraphs.paragraphs_type.donors module: - link - ocha_key_figures + - text id: paragraph.donors.default targetEntityType: paragraph bundle: donors @@ -18,14 +21,14 @@ mode: default content: field_country_donors: type: key_figure - weight: 0 + weight: 2 region: content settings: allow_manual: 'no' third_party_settings: { } field_figures_footnote: type: string_textarea - weight: 3 + weight: 5 region: content settings: rows: 5 @@ -33,14 +36,30 @@ content: third_party_settings: { } field_presence_donors: type: key_figure_presence - weight: 1 + weight: 3 region: content settings: allow_manual: 'no' third_party_settings: { } + field_text: + type: text_textarea + weight: 1 + region: content + settings: + rows: 5 + placeholder: '' + third_party_settings: { } + field_title: + type: string_textfield + weight: 0 + region: content + settings: + size: 60 + placeholder: '' + third_party_settings: { } field_url: type: link_default - weight: 2 + weight: 4 region: content settings: placeholder_url: '' @@ -48,13 +67,13 @@ content: third_party_settings: { } status: type: boolean_checkbox - weight: 5 + weight: 7 region: content settings: display_label: true third_party_settings: { } translation: - weight: 4 + weight: 6 region: content settings: { } third_party_settings: { } diff --git a/config/core.entity_view_display.paragraph.donors.default.yml b/config/core.entity_view_display.paragraph.donors.default.yml index c85eef96..b1482ee4 100644 --- a/config/core.entity_view_display.paragraph.donors.default.yml +++ b/config/core.entity_view_display.paragraph.donors.default.yml @@ -6,10 +6,13 @@ dependencies: - field.field.paragraph.donors.field_country_donors - field.field.paragraph.donors.field_figures_footnote - field.field.paragraph.donors.field_presence_donors + - field.field.paragraph.donors.field_text + - field.field.paragraph.donors.field_title - field.field.paragraph.donors.field_url - paragraphs.paragraphs_type.donors module: - link + - text - unocha_donors id: paragraph.donors.default targetEntityType: paragraph @@ -25,14 +28,14 @@ content: currency_symbol: 'yes' percentage: 'yes' third_party_settings: { } - weight: 0 + weight: 2 region: content field_figures_footnote: type: basic_string label: hidden settings: { } third_party_settings: { } - weight: 2 + weight: 4 region: content field_presence_donors: type: unocha_donors @@ -43,8 +46,23 @@ content: currency_symbol: 'yes' percentage: 'yes' third_party_settings: { } + weight: 3 + region: content + field_text: + type: text_default + label: hidden + settings: { } + third_party_settings: { } weight: 1 region: content + field_title: + type: string + label: hidden + settings: + link_to_entity: false + third_party_settings: { } + weight: 0 + region: content field_url: type: link label: hidden @@ -55,6 +73,6 @@ content: rel: '' target: '' third_party_settings: { } - weight: 3 + weight: 5 region: content hidden: { } diff --git a/config/core.entity_view_display.paragraph.donors.preview.yml b/config/core.entity_view_display.paragraph.donors.preview.yml index 1f18afe3..152ca5cb 100644 --- a/config/core.entity_view_display.paragraph.donors.preview.yml +++ b/config/core.entity_view_display.paragraph.donors.preview.yml @@ -7,11 +7,14 @@ dependencies: - field.field.paragraph.donors.field_country_donors - field.field.paragraph.donors.field_figures_footnote - field.field.paragraph.donors.field_presence_donors + - field.field.paragraph.donors.field_text + - field.field.paragraph.donors.field_title - field.field.paragraph.donors.field_url - paragraphs.paragraphs_type.donors module: - layout_builder - link + - text - unocha_donors third_party_settings: layout_builder: @@ -31,14 +34,14 @@ content: currency_symbol: 'yes' percentage: 'yes' third_party_settings: { } - weight: 0 + weight: 2 region: content field_figures_footnote: type: basic_string label: above settings: { } third_party_settings: { } - weight: 2 + weight: 4 region: content field_presence_donors: type: unocha_donors @@ -49,8 +52,23 @@ content: currency_symbol: 'yes' percentage: 'yes' third_party_settings: { } + weight: 3 + region: content + field_text: + type: text_default + label: hidden + settings: { } + third_party_settings: { } weight: 1 region: content + field_title: + type: string + label: hidden + settings: + link_to_entity: false + third_party_settings: { } + weight: 0 + region: content field_url: type: link label: above @@ -61,6 +79,6 @@ content: rel: '' target: '' third_party_settings: { } - weight: 3 + weight: 5 region: content hidden: { } diff --git a/config/field.field.paragraph.donors.field_text.yml b/config/field.field.paragraph.donors.field_text.yml new file mode 100644 index 00000000..35df60e0 --- /dev/null +++ b/config/field.field.paragraph.donors.field_text.yml @@ -0,0 +1,27 @@ +uuid: c956a0e3-26e3-4e90-a6a8-d7b88551aaa0 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_text + - paragraphs.paragraphs_type.donors + module: + - allowed_formats + - text +third_party_settings: + allowed_formats: + allowed_formats: + - ckeditor +id: paragraph.donors.field_text +field_name: field_text +entity_type: paragraph +bundle: donors +label: Text +description: 'Use the "@year" placeholder in the text to have it replaced by the current year (ex: "Some text @year and some other text.") when displayed.' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: + allowed_formats: { } +field_type: text_long diff --git a/config/field.field.paragraph.donors.field_title.yml b/config/field.field.paragraph.donors.field_title.yml new file mode 100644 index 00000000..55b9a070 --- /dev/null +++ b/config/field.field.paragraph.donors.field_title.yml @@ -0,0 +1,19 @@ +uuid: fe1f05aa-76ee-4925-989d-934d288cd387 +langcode: en +status: true +dependencies: + config: + - field.storage.paragraph.field_title + - paragraphs.paragraphs_type.donors +id: paragraph.donors.field_title +field_name: field_title +entity_type: paragraph +bundle: donors +label: Title +description: 'Use the "@year" placeholder in the title to have it replaced by the current year (ex: "Funding in @year") when displayed.' +required: false +translatable: true +default_value: { } +default_value_callback: '' +settings: { } +field_type: string diff --git a/html/modules/custom/unocha_donors/src/Plugin/Field/FieldFormatter/Donors.php b/html/modules/custom/unocha_donors/src/Plugin/Field/FieldFormatter/Donors.php index 41879499..72104fa6 100644 --- a/html/modules/custom/unocha_donors/src/Plugin/Field/FieldFormatter/Donors.php +++ b/html/modules/custom/unocha_donors/src/Plugin/Field/FieldFormatter/Donors.php @@ -86,12 +86,14 @@ public function viewElements(FieldItemListInterface $items, $langcode) { '#theme' => 'unocha_donors_list__' . $type . '__' . $view_mode, '#id' => Html::getUniqueId($type . '-' . $items->getEntity()->id() . '-' . $delta), '#type' => $type, - '#title' => $item->getFigureLabel() ?: $this->t('Top donors'), + // The title is handled in the template. + '#title' => '', '#year' => $data['year'] ?? NULL, '#list' => $donors, '#format' => $format, '#precision' => $precision, '#currency_symbol' => $currency_symbol, + '#item' => $item, '#cache' => [ 'max-age' => $this->ochaKeyFiguresApiClient->getMaxAge(), 'tags' => $this->ochaKeyFiguresApiClient->getCacheTags([ diff --git a/html/modules/custom/unocha_donors/templates/unocha-donors-list.html.twig b/html/modules/custom/unocha_donors/templates/unocha-donors-list.html.twig index 062d0aee..c683863d 100644 --- a/html/modules/custom/unocha_donors/templates/unocha-donors-list.html.twig +++ b/html/modules/custom/unocha_donors/templates/unocha-donors-list.html.twig @@ -11,18 +11,25 @@ * - level: heading level for the title * - title: list's title * - title_attributes: title attributes + * - description: list's description + * - description_attributes: description attributes * - year: the year of the data * - list: list of donors/sectors with name and optional pledged/paid amounts * - list_attributes: attributes for the list * - item_attributes: attributes for the list items * - format: number format * - precision: number format precision + * - item: KeyFigure or KeyFigurePresence item */ #} {% if list is not empty %} +{% set title = title ?: (item.getFigureLabel() ? '@label (@provider)'|t({'@label': item.getFigureLabel(), '@provider': item.getFigureProvider()|upper}) : 'Top donors'|t) %} {{ title }} + {% if description %} + {{ description }} + {% endif %} {% for item in list %} {{ item.name }} diff --git a/html/modules/custom/unocha_donors/unocha_donors.module b/html/modules/custom/unocha_donors/unocha_donors.module index f9ceb847..61e9d9d1 100644 --- a/html/modules/custom/unocha_donors/unocha_donors.module +++ b/html/modules/custom/unocha_donors/unocha_donors.module @@ -25,6 +25,10 @@ function unocha_donors_theme() { 'title' => NULL, // Title attributes. 'title_attributes' => NULL, + // Description. + 'description' => NULL, + // Description attributes. + 'description_attributes' => NULL, // The year of the data. 'year' => NULL, // List of donors/sectors with name and optional pledged/paid amounts. @@ -37,6 +41,8 @@ function unocha_donors_theme() { 'format' => NULL, // Number format precision. 'precision' => NULL, + // KeyFigure or KeyFigurePresence item. + 'item' => NULL, ], ], ]; diff --git a/html/themes/custom/common_design_claro/css/styles.css b/html/themes/custom/common_design_claro/css/styles.css index 786740df..e871ecf9 100644 --- a/html/themes/custom/common_design_claro/css/styles.css +++ b/html/themes/custom/common_design_claro/css/styles.css @@ -54,7 +54,7 @@ } /* Matches .cd-block-title */ -.field--name-field-title { +.field--name-field-title:not(.form-wrapper) { margin: 0 0 1rem 0; margin-top: 0; margin-bottom: 1rem; @@ -114,6 +114,11 @@ blockquote::before { content: none; } +/* Prevent excessive spacing between text widget and description. */ +.field--widget-text-textarea .filter-wrapper { + float: right; +} + /** * Style adjustments for the preview of the paragraphs. */ diff --git a/html/themes/custom/common_design_subtheme/components/uno-donors/uno-donors.css b/html/themes/custom/common_design_subtheme/components/uno-donors/uno-donors.css index 04a1dff0..fe67b862 100644 --- a/html/themes/custom/common_design_subtheme/components/uno-donors/uno-donors.css +++ b/html/themes/custom/common_design_subtheme/components/uno-donors/uno-donors.css @@ -266,3 +266,17 @@ ul.uno-donors__list--with-figures .uno-donors__amount { .uno-donors--oct-top-donors .uno-donors__donor { padding: 0; } + +.node--view-mode-full .paragraph .field--name-field-text, +p.uno-donors__description { + margin: 1rem 0; +} + +@media (min-width: 768px) { + /* When content.field_text has content, remove the padding for consistent + vertical rhythm. + */ + .field--name-field-text + .field--name-field-country-donors .uno-donors { + padding-top: 0; + } +} diff --git a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--cbpf-top-donors.html.twig b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--cbpf-top-donors.html.twig index 17f17a1c..7cf52679 100644 --- a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--cbpf-top-donors.html.twig +++ b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--cbpf-top-donors.html.twig @@ -11,21 +11,27 @@ * - level: heading level for the title * - title: list's title * - title_attributes: title attributes + * - description: list's description + * - description_attributes: description attributes * - year: the year of the data * - list: list of donors/sectors with name and optional pledged/paid amounts * - list_attributes: attributes for the list * - item_attributes: attributes for the list items * - format: number format * - precision: number format precision + * - item: KeyFigure or KeyFigurePresence item */ #} {% if list is not empty %} {{ attach_library('common_design_subtheme/uno-donors') }} -{% set title = 'Top 5 donors'|t %} +{% set title = title ?: 'Top 5 donors'|t %}
{{ title }} + {% if description %} + {{ description }} + {% endif %}
{% apply spaceless %} diff --git a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-donors.html.twig b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-donors.html.twig index dcfcf642..91ff003b 100644 --- a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-donors.html.twig +++ b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-donors.html.twig @@ -11,21 +11,27 @@ * - level: heading level for the title * - title: list's title * - title_attributes: title attributes + * - description: list's description + * - description_attributes: description attributes * - year: the year of the data * - list: list of donors/sectors with name and optional pledged/paid amounts * - list_attributes: attributes for the list * - item_attributes: attributes for the list items * - format: number format * - precision: number format precision + * - item: KeyFigure or KeyFigurePresence item */ #} {% if list is not empty %} {{ attach_library('common_design_subtheme/uno-donors') }} -{% set title = 'Top 5 donors'|t %} +{% set title = title ?: 'Top 5 donors'|t %}
{{ title }} + {% if description %} + {{ description }} + {% endif %}
{% apply spaceless %} diff --git a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-sectors.html.twig b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-sectors.html.twig index 9050a2f1..d8e3b5c3 100644 --- a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-sectors.html.twig +++ b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--fts-top-sectors.html.twig @@ -11,21 +11,27 @@ * - level: heading level for the title * - title: list's title * - title_attributes: title attributes + * - description: list's description + * - description_attributes: description attributes * - year: the year of the data * - list: list of donors/sectors with name and optional pledged/paid amounts * - list_attributes: attributes for the list * - item_attributes: attributes for the list items * - format: number format * - precision: number format precision + * - item: KeyFigure or KeyFigurePresence item */ #} {% if list is not empty %} {{ attach_library('common_design_subtheme/uno-donors') }} -{% set title = 'Top 5 funded sectors'|t %} +{% set title = title ?: 'Top 5 funded sectors'|t %}
{{ title }} + {% if description %} + {{ description }} + {% endif %}
{% apply spaceless %} diff --git a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-earmarked-donors.html.twig b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-earmarked-donors.html.twig index c90f9f95..e32c078a 100644 --- a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-earmarked-donors.html.twig +++ b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-earmarked-donors.html.twig @@ -11,21 +11,27 @@ * - level: heading level for the title * - title: list's title * - title_attributes: title attributes + * - description: list's description + * - description_attributes: description attributes * - year: the year of the data * - list: list of donors/sectors with name and optional pledged/paid amounts * - list_attributes: attributes for the list * - item_attributes: attributes for the list items * - format: number format * - precision: number format precision + * - item: KeyFigure or KeyFigurePresence item */ #} {% if list is not empty %} {{ attach_library('common_design_subtheme/uno-donors') }} -{% set title = 'Earmarked contributions'|t %} +{% set title = title ?: 'Earmarked contributions'|t %}
{{ title }} + {% if description %} + {{ description }} + {% endif %}
{% apply spaceless %} diff --git a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-top-donors.html.twig b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-top-donors.html.twig index 93ba12c4..c70d8b71 100644 --- a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-top-donors.html.twig +++ b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-top-donors.html.twig @@ -12,36 +12,33 @@ * - title: list's title * - title_attributes: title attributes * - year: the year of the data + * - description: list's description + * - description_attributes: description attributes * - list: list of donors/sectors with name and optional pledged/paid amounts * - list_attributes: attributes for the list * - item_attributes: attributes for the list items * - format: number format * - precision: number format precision + * - item: KeyFigure or KeyFigurePresence item */ #} {% if list is not empty %} {{ attach_library('common_design_subtheme/uno-donors') }} -{% set year = year ?? date('Y') %} -{% set title = 'Funding for OCHA in @year'|t({'@year': year}) %} +{% set title = title ?: 'Funding for OCHA in @year'|t({'@year': year ?? date('Y')}) %} {% set title_id = id ~ '-title' %} {% set list_id = id ~ '-list' %} -{# We use t() for the URL so that, in theory, we could have different URLs for - different languages. #} -{% set url = 'https://fts.unocha.org'|t %} -{% set link = link(url, url)|render %} - - {{ title }} -

- {% trans %} - The graphic below shows the top 10 OCHA donors for this year. The bar represents the percentage of earmarked vs. unearmarked funds per donor. For a complete listing of OCHA's donors, please click the button below. For a comprehensive overview of humanitarian funding, visit: {{ link }}. - {% endtrans %} -

-

- {{ 'Unearmarked %'|t }} - {{ 'Earmarked %'|t }} -

+
+ {{ title }} + {% if description %} + {{ description }} + {% endif %} +

+ {{ 'Unearmarked %'|t }} + {{ 'Earmarked %'|t }} +

+
{% apply spaceless %} {# Sort by total funding descending. #} diff --git a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-unearmarked-donors.html.twig b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-unearmarked-donors.html.twig index 7c9c7d23..1db8f4cd 100644 --- a/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-unearmarked-donors.html.twig +++ b/html/themes/custom/common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-unearmarked-donors.html.twig @@ -12,20 +12,26 @@ * - title: list's title * - title_attributes: title attributes * - year: the year of the data + * - description: list's description + * - description_attributes: description attributes * - list: list of donors/sectors with name and optional pledged/paid amounts * - list_attributes: attributes for the list * - item_attributes: attributes for the list items * - format: number format * - precision: number format precision + * - item: KeyFigure or KeyFigurePresence item */ #} {% if list is not empty %} {{ attach_library('common_design_subtheme/uno-donors') }} -{% set title = 'Unearmarked contributions'|t %} +{% set title = title ? 'Unearmarked contributions'|t %}
{{ title }} + {% if description %} + {{ description }} + {% endif %}
{% apply spaceless %} diff --git a/html/themes/custom/common_design_subtheme/templates/paragraphs/paragraph--donors.html.twig b/html/themes/custom/common_design_subtheme/templates/paragraphs/paragraph--donors.html.twig index 1d95adb6..62ff9057 100644 --- a/html/themes/custom/common_design_subtheme/templates/paragraphs/paragraph--donors.html.twig +++ b/html/themes/custom/common_design_subtheme/templates/paragraphs/paragraph--donors.html.twig @@ -46,14 +46,29 @@ not paragraph.isPublished() ? 'paragraph--unpublished' ] %} +{% set donors = content.field_country_donors.0 ?? content.field_presence_donors.0 %} +{% if donors %} {% block paragraph %} {% block content %} - {{ content.donors }} - {{ content|without('donors', 'field_url', 'field_figures_footnote') }} + {# + We render the title and description to be able to replace the `@year` + with the year variable because they may be renderable arrays. We then + wrap the result in a '#markup' to avoid double escaping when printed. + #} + {% set year = donors['#year'] ?: date('Y') %} + {% set title = (content.field_title.0 ?: donors['#title'])|render|replace({'@year': year}) %} + {% set description = (content.field_text.0 ?: donors['#description'])|render|replace({'@year': year}) %} + {{ + donors|merge({ + '#title': title ? {'#markup': title}, + '#description': description ? {'#markup': description} + }) + }} - {% set donor_type = content.field_country_donors.0['#type'] ?? content.field_presence_donors.0['#type'] %} - {% if donor_type == 'oct_unearmarked_donors' %} + {{ content|without('field_title', 'field_text', 'field_country_donors', 'field_presence_donors', 'field_url', 'field_figures_footnote') }} + + {% if donors['#type'] == 'oct_unearmarked_donors' %}
{{ content.field_figures_footnote }}

@@ -86,3 +101,4 @@ {% endblock %}

{% endblock paragraph %} +{% endif %} diff --git a/html/themes/custom/common_design_subtheme/translations/ar-common-design.po b/html/themes/custom/common_design_subtheme/translations/ar-common-design.po index caa7ddb1..570c2093 100644 --- a/html/themes/custom/common_design_subtheme/translations/ar-common-design.po +++ b/html/themes/custom/common_design_subtheme/translations/ar-common-design.po @@ -187,12 +187,6 @@ msgid "Earmarked contributions" msgstr "" # common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-top-donors.html.twig # -msgid "The graphic below shows the top 10 OCHA donors for this year. The bar represents the percentage of earmarked vs. unearmarked funds per donor. For a complete listing of OCHA's donors, please click the button below. For a comprehensive overview of humanitarian funding, visit: @link" -msgstr "" - -msgid "https://fts.unocha.org" -msgstr "" - msgid "Show all donors" msgstr "" diff --git a/html/themes/custom/common_design_subtheme/translations/es-common-design.po b/html/themes/custom/common_design_subtheme/translations/es-common-design.po index fcec205d..b47ba617 100644 --- a/html/themes/custom/common_design_subtheme/translations/es-common-design.po +++ b/html/themes/custom/common_design_subtheme/translations/es-common-design.po @@ -182,12 +182,6 @@ msgid "Earmarked contributions" msgstr "" # common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-top-donors.html.twig # -msgid "The graphic below shows the top 10 OCHA donors for this year. The bar represents the percentage of earmarked vs. unearmarked funds per donor. For a complete listing of OCHA's donors, please click the button below. For a comprehensive overview of humanitarian funding, visit: @link" -msgstr "" - -msgid "https://fts.unocha.org" -msgstr "" - msgid "Show all donors" msgstr "" diff --git a/html/themes/custom/common_design_subtheme/translations/fr-common-design.po b/html/themes/custom/common_design_subtheme/translations/fr-common-design.po index d648e1c5..f9cf90db 100644 --- a/html/themes/custom/common_design_subtheme/translations/fr-common-design.po +++ b/html/themes/custom/common_design_subtheme/translations/fr-common-design.po @@ -182,12 +182,6 @@ msgid "Earmarked contributions" msgstr "" # common_design_subtheme/templates/modules/unocha_donors/unocha-donors-list--oct-top-donors.html.twig # -msgid "The graphic below shows the top 10 OCHA donors for this year. The bar represents the percentage of earmarked vs. unearmarked funds per donor. For a complete listing of OCHA's donors, please click the button below. For a comprehensive overview of humanitarian funding, visit: @link" -msgstr "" - -msgid "https://fts.unocha.org" -msgstr "" - msgid "Show all donors" msgstr ""