From cd17b038dc9cbaa8141db579a161eaac1fb9f65d Mon Sep 17 00:00:00 2001 From: Alex Garel Date: Wed, 21 Feb 2024 18:15:46 +0100 Subject: [PATCH 1/7] fix: add methods to escape quotes in templates --- lib/ProductOpener/Display.pm | 16 +++++++++++++++- lib/ProductOpener/Lang.pm | 21 +-------------------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/lib/ProductOpener/Display.pm b/lib/ProductOpener/Display.pm index 46d0e53a32095..41f39b8ba5560 100644 --- a/lib/ProductOpener/Display.pm +++ b/lib/ProductOpener/Display.pm @@ -396,6 +396,10 @@ sub process_template ($template_filename, $template_data_ref, $result_content_re $template_data_ref->{sep} = separator_before_colon($lc); $template_data_ref->{lang} = \⟨ $template_data_ref->{f_lang} = \&f_lang; + # escaping quotes for use in javascript or json + # using short names to favour readability + $template_data_ref->{esq} = sub { escape_char(@_, "\'") }; # esq as escape_single_quote + $template_data_ref->{edq} = sub { escape_char(@_, '"') }; # edq as escape_double_quote $template_data_ref->{lang_sprintf} = \&lang_sprintf; $template_data_ref->{lc} = $lc; $template_data_ref->{cc} = $cc; @@ -5736,18 +5740,28 @@ sub search_and_export_products ($request_ref, $query_ref, $sort_by) { return; } +sub escape_char($s, $char) { + if ($s && $char) { + # normalize already escaped chars to avoid double escaping + $s =~ s/\\$char/$char/g; + $s =~ s/$char/\\$char/g; + } + return $s; +} + sub escape_single_quote ($s) { - # some app escape single quotes already, so we have \' already if (not defined $s) { return ''; } + # some app escape single quotes already, so we have \' already $s =~ s/\\'/'/g; $s =~ s/'/\\'/g; $s =~ s/\n/ /g; return $s; } + @search_series = (qw/organic fairtrade with_sweeteners default/); my %search_series_colors = ( diff --git a/lib/ProductOpener/Lang.pm b/lib/ProductOpener/Lang.pm index c52bf444f5704..4d52a89fa22ed 100644 --- a/lib/ProductOpener/Lang.pm +++ b/lib/ProductOpener/Lang.pm @@ -119,26 +119,7 @@ In the .po translation files, we use the msgctxt field for the string id. =cut sub lang ($stringid) { - - my $short_l = undef; - if ($lang =~ /_/) { - $short_l = $`; # pt_pt - } - - # English values have been copied to languages that do not have defined values - - if (not defined $Lang{$stringid}) { - return ''; - } - elsif (defined $Lang{$stringid}{$lang}) { - return $Lang{$stringid}{$lang}; - } - elsif ((defined $short_l) and (defined $Lang{$stringid}{$short_l}) and ($Lang{$stringid}{$short_l} ne '')) { - return $Lang{$stringid}{$short_l}; - } - else { - return ''; - } + return lang_in_other_lc($lang, $stringid); } =head2 f_lang( $stringid, $variables_ref ) From 012b8f26aec7d919333cc62f32ddd731e673376d Mon Sep 17 00:00:00 2001 From: Alex Garel Date: Wed, 21 Feb 2024 18:28:37 +0100 Subject: [PATCH 2/7] fix: using quote escapes in templates --- .../contribution/contribution_card.tt.json | 2 +- .../contribution/data_quality_tags.tt.json | 6 +- .../environment/carbon_footprint.tt.json | 12 +-- .../environment/ecoscore/agribalyse.tt.json | 12 +-- .../environment/ecoscore/ecoscore.tt.json | 6 +- .../ecoscore/ecoscore_extended.tt.json | 4 +- .../ecoscore/ecoscore_not_applicable.tt.json | 4 +- .../ecoscore/ecoscore_unknown.tt.json | 4 +- .../ecoscore/origins_of_ingredients.tt.json | 28 +++--- .../environment/ecoscore/packaging.tt.json | 28 +++--- .../ecoscore/production_system.tt.json | 10 +-- .../ecoscore/threatened_species.tt.json | 8 +- .../environment/ecoscore/total.tt.json | 4 +- .../environment/environment_card.tt.json | 12 +-- .../environment/manufacturing_place.tt.json | 2 +- .../origins_of_ingredients.tt.json | 26 +++--- .../environment/packaging_components.tt.json | 4 +- .../environment/packaging_materials.tt.json | 12 +-- .../environment/packaging_recycling.tt.json | 8 +- .../environment/palm_oil.tt.json | 4 +- .../health/health_card.tt.json | 2 +- .../ingredients_analysis_details.tt.json | 4 +- .../health/ingredients/nova.tt.json | 4 +- .../health/ingredients_panels.tt.json | 8 +- .../health/nutriscore/nutriscore_2023.tt.json | 4 +- .../nutriscore/nutriscore_component.tt.json | 2 +- .../nutriscore/nutriscore_description.tt.json | 2 +- .../nutriscore/nutriscore_details.tt.json | 4 +- .../health/nutrition/nutrient_levels.tt.json | 2 +- .../nutrition/nutrition_facts_table.tt.json | 4 +- .../nutrition/physical_activities.tt.json | 4 +- .../health/nutrition_panels.tt.json | 2 +- .../health/world/who_alcohol.tt.json | 4 +- .../categories/packagings_materials.tt.json | 18 ++-- .../display_product_search_or_add.tt.html | 6 +- .../common/includes/list_of_products.tt.html | 10 +-- .../producers_platform_top_panel.tt.html | 4 +- templates/web/common/site_layout.tt.html | 88 +++++++++---------- .../export_products/export_products.tt.html | 2 +- .../import_file_process.tt.js | 8 +- .../import_file_select_format.tt.html | 4 +- .../import_file_select_format.tt.js | 50 +++++------ .../import_photos_upload.tt.html | 2 +- ...ct_categories_from_public_database.tt.html | 2 +- templates/web/pages/org_form/org_form.tt.html | 8 +- .../web/pages/org_profile/org_profile.tt.html | 2 +- .../product/includes/display_rev_info.tt.html | 6 +- .../product/includes/edit_history.tt.html | 2 +- .../product/includes/nutrient_levels.tt.html | 4 +- .../pages/product/includes/nutriscore.tt.html | 6 +- .../web/pages/product/product_page.tt.html | 8 +- .../product_edit/product_edit_form.tt.html | 2 +- .../product_edit_form_display.tt.html | 8 +- ...t_edit_form_display_user-moderator.tt.html | 2 +- .../products_map/map_of_products.tt.html | 2 +- .../remove_products/remove_products.tt.html | 2 +- .../web/pages/search_form/search_form.tt.html | 6 +- .../web/pages/session/sign_in_form.tt.html | 2 +- .../pages/user_form/user_form_page.tt.html | 7 +- .../pages/user_profile/user_profile.tt.html | 2 +- 60 files changed, 253 insertions(+), 252 deletions(-) diff --git a/templates/api/knowledge-panels/contribution/contribution_card.tt.json b/templates/api/knowledge-panels/contribution/contribution_card.tt.json index 3e7b25dca229c..af0599cb561d5 100644 --- a/templates/api/knowledge-panels/contribution/contribution_card.tt.json +++ b/templates/api/knowledge-panels/contribution/contribution_card.tt.json @@ -6,7 +6,7 @@ "contribution" ], "title_element": { - "title": "[% lang('contribution_panel_title') %]", + "title": "[% edq(lang('contribution_panel_title')) %]", }, "elements": [ [%# Panels displaying data_quality errors / warnings / info %] diff --git a/templates/api/knowledge-panels/contribution/data_quality_tags.tt.json b/templates/api/knowledge-panels/contribution/data_quality_tags.tt.json index b23ded774d5c2..a73943657ceb9 100644 --- a/templates/api/knowledge-panels/contribution/data_quality_tags.tt.json +++ b/templates/api/knowledge-panels/contribution/data_quality_tags.tt.json @@ -22,8 +22,8 @@ [% icon_name = "data-info" %] [% END %] "title_element": { - "title": "[% lang(panel.tags_type _ '_panel_title') %]", - "subtitle": "[% lang(panel.tags_type _ '_panel_subtitle') %]", + "title": "[% edq(lang(panel.tags_type _ '_panel_title')) %]", + "subtitle": "[% edq(lang(panel.tags_type _ '_panel_subtitle')) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/[% icon_name %].svg", "icon_color_from_evaluation": true, }, @@ -58,7 +58,7 @@ { "element_type": "action", "action_element": { - "html": `[% lang(action_name) %]`, + "html": `[% edq(lang(action_name)) %]`, "actions": [ "[% fix_action %]", ] diff --git a/templates/api/knowledge-panels/environment/carbon_footprint.tt.json b/templates/api/knowledge-panels/environment/carbon_footprint.tt.json index 4d55bf51dfb5f..d3dcfe9fa063e 100644 --- a/templates/api/knowledge-panels/environment/carbon_footprint.tt.json +++ b/templates/api/knowledge-panels/environment/carbon_footprint.tt.json @@ -16,9 +16,9 @@ [% END %] "title_element": { [% SET driving_100g_rounded = sprintf('%.1f', driving_100g) %] - "title": "[% f_lang('f_equal_to_driving_km_in_a_petrol_car', { 'kilometers' => driving_100g_rounded } ) %]", + "title": "[% edq(f_lang('f_equal_to_driving_km_in_a_petrol_car', { 'kilometers' => driving_100g_rounded } )) %]", [% SET co2_100g_rounded = sprintf('%.0f', co2_100g * 1000) %] - "subtitle": "[% f_lang('f_carbon_footprint_per_100g_of_product', { 'grams' => co2_100g_rounded }) %]", + "subtitle": "[% edq(f_lang('f_carbon_footprint_per_100g_of_product', { 'grams' => co2_100g_rounded })) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/car.svg", "icon_color_from_evaluation": true, }, @@ -40,14 +40,14 @@ "table_element": { "id": "ecoscore_carbon_impact_by_stages_table", "table_type": "percents", - "title": "[% lang('ecoscore_impact_detail_by_stages') %]", + "title": "[% edq(lang('ecoscore_impact_detail_by_stages')) %]", "columns": [ { - "text": "[% lang('ecoscore_stage') %]", + "text": "[% edq(lang('ecoscore_stage')) %]", "type": "text", }, { - "text": "[% lang('ecoscore_impact') %]", + "text": "[% edq(lang('ecoscore_impact')) %]", "type": "percent", } ], @@ -58,7 +58,7 @@ "values": [ { "icon_url": "[% static_subdomain %]/images/icons/dist/[% step %].svg", - "text": "[% lang("ecoscore_$step") %]" + "text": "[% edq(lang("ecoscore_$step")) %]" }, { [% co2_step = "co2_$step" %] diff --git a/templates/api/knowledge-panels/environment/ecoscore/agribalyse.tt.json b/templates/api/knowledge-panels/environment/ecoscore/agribalyse.tt.json index 9667e7c89cbd6..f68a93dec2397 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/agribalyse.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/agribalyse.tt.json @@ -7,8 +7,8 @@ "icon_url": "[% static_subdomain %]/images/icons/dist/lca.svg", "icon_color_from_evaluation": true, "icon_size": "small", - "title": "[% lang('average_impact_of_the_category') %][% sep %]: [% panel.agribalyse_grade FILTER upper %] (Score: [% panel.agribalyse_score %]/100)", - "subtitle": "[% lang('categories_s') FILTER ucfirst %][% sep %]: [% panel.agribalyse_category_name.dquote %]", + "title": "[% edq(lang('average_impact_of_the_category')) %][% sep %]: [% panel.agribalyse_grade FILTER upper %] (Score: [% panel.agribalyse_score %]/100)", + "subtitle": "[% edq(lang('categories_s')) FILTER ucfirst %][% sep %]: [% panel.agribalyse_category_name.dquote %]", "type": "grade", "grade": "[% panel.agribalyse_grade %]", }, @@ -39,14 +39,14 @@ "table_element": { "id": "ecoscore_lca_impacts_by_stages_table", "table_type": "percents", - "title": "[% lang('ecoscore_impact_detail_by_stages') %]", + "title": "[% edq(lang('ecoscore_impact_detail_by_stages')) %]", "columns": [ { - "text": "[% lang('ecoscore_stage') %]", + "text": "[% edq(lang('ecoscore_stage')) %]", "type": "text", }, { - "text": "[% lang('ecoscore_impact') %]", + "text": "[% edq(lang('ecoscore_impact')) %]", "type": "percent", } ], @@ -57,7 +57,7 @@ "values": [ { "icon_url": "[% static_subdomain %]/images/icons/dist/[% step %].svg", - "text": "[% lang("ecoscore_$step") %]" + "text": "[% edq(lang("ecoscore_$step")) %]" }, { [% ef_step = "ef_$step" %] diff --git a/templates/api/knowledge-panels/environment/ecoscore/ecoscore.tt.json b/templates/api/knowledge-panels/environment/ecoscore/ecoscore.tt.json index eba0a4d51523e..d367523697e86 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/ecoscore.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/ecoscore.tt.json @@ -41,7 +41,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('life_cycle_analysis') %]", + "title": "[% edq(lang('life_cycle_analysis')) %]", "panel_ids": [ "ecoscore_agribalyse", ], @@ -50,7 +50,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('ecoscore_bonuses_and_maluses') %]", + "title": "[% edq(lang('ecoscore_bonuses_and_maluses')) %]", "panel_ids": [ [% FOREACH adjustment IN ["production_system", "origins_of_ingredients", "threatened_species", "packaging"] %] [% IF (adjustment == "origins_of_ingredients") or (adjustment == "packaging") or (product.ecoscore_data.adjustments.$adjustment.value != 0) %] @@ -63,7 +63,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('ecoscore_for_this_product') %]", + "title": "[% edq(lang('ecoscore_for_this_product')) %]", "panel_ids": [ "ecoscore_total"], }, }, diff --git a/templates/api/knowledge-panels/environment/ecoscore/ecoscore_extended.tt.json b/templates/api/knowledge-panels/environment/ecoscore/ecoscore_extended.tt.json index e901760401317..eec437f3aefac 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/ecoscore_extended.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/ecoscore_extended.tt.json @@ -1,7 +1,7 @@ [% SET climate_change_ratio_to_category = panel.climate_change / panel.ecoscore_extended_data_for_category.climate_change %] - // "title": "[% f_lang('f_equal_to_driving_km_in_a_petrol_car', { 'kilometers' => driving_100g_rounded } ) %]", + // "title": "[% edq(f_lang('f_equal_to_driving_km_in_a_petrol_car', { 'kilometers' => driving_100g_rounded } )) %]", { "level" :"info", "topics": [ @@ -25,7 +25,7 @@ [% SET climate_change_ratio_percent_less = sprintf('%d', (1 - climate_change_ratio_to_category) * 100) %] "title": "Environmental impact of ingredients [% climate_change_ratio_percent_less %]% smaller than similar products", [% END %] - "subtitle": "Compared to: [% lang('categories_s') FILTER ucfirst %][% sep %]: [% panel.agribalyse_category_name.dquote %]", + "subtitle": "Compared to: [% edq(lang('categories_s')) FILTER ucfirst %][% sep %]: [% panel.agribalyse_category_name.dquote %]", "type": "grade", "icon_url": "[% static_subdomain %]/images/icons/dist/scale-balance.svg", "icon_color_from_evaluation": true, diff --git a/templates/api/knowledge-panels/environment/ecoscore/ecoscore_not_applicable.tt.json b/templates/api/knowledge-panels/environment/ecoscore/ecoscore_not_applicable.tt.json index 0d643d68c1ad9..3008ed05afe01 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/ecoscore_not_applicable.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/ecoscore_not_applicable.tt.json @@ -5,7 +5,7 @@ ], "title_element": { "icon_url": "[% static_subdomain %]/images/attributes/dist/ecoscore-not-applicable.svg", - "title": "[% lang("attribute_ecoscore_not_applicable_title") %]", + "title": "[% edq(lang('attribute_ecoscore_not_applicable_title')) %]", "subtitle": "[% panel.subtitle %]", "type": "grade", "grade": "unknown", @@ -15,7 +15,7 @@ "element_type": "text", "text_element": { "type": "summary", - "html": "[% lang("ecoscore_not_applicable_coming_soon") %]" + "html": "[% edq(lang('ecoscore_not_applicable_coming_soon')) %]" } }, ] diff --git a/templates/api/knowledge-panels/environment/ecoscore/ecoscore_unknown.tt.json b/templates/api/knowledge-panels/environment/ecoscore/ecoscore_unknown.tt.json index e1f718cb2de33..e8d5c86d84e2a 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/ecoscore_unknown.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/ecoscore_unknown.tt.json @@ -5,7 +5,7 @@ ], "title_element": { "icon_url": "[% static_subdomain %]/images/attributes/dist/ecoscore-unknown.svg", - "title": "[% lang("attribute_ecoscore_unknown_title") %] - [% lang("attribute_ecoscore_unknown_description_short") %]", + "title": "[% eqq(lang('attribute_ecoscore_unknown_title')) %] - [% edq(lang('attribute_ecoscore_unknown_description_short')) %]", "type": "grade", "grade": "unknown", }, @@ -14,7 +14,7 @@ "element_type": "text", "text_element": { "type": "summary", - "html": "[% lang("ecoscore_unknown_call_to_help") %]" + "html": "[% edq(lang('ecoscore_unknown_call_to_help')) %]" } }, { diff --git a/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json b/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json index fd419b80a0f19..5cdef725bd60c 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json @@ -6,8 +6,8 @@ [% IF product.ecoscore_data.adjustments.origins_of_ingredients.warning == "origins_are_100_percent_unknown" %] "evaluation": "unknown", "title_element": { - "title": "[% lang('ecoscore_origins_of_ingredients_missing_information') %]", - "subtitle": "[% lang('malus') %][% sep %]: [% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients_missing_information')) %]", + "subtitle": "[% edq(lang('malus')) %][% sep %]: [% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/public.svg", "icon_size": "small", @@ -28,20 +28,20 @@ [% IF product.ecoscore_data.adjustments.origins_of_ingredients.value <= 0 %] "evaluation": "bad", "title_element": { - "title": "[% lang('ecoscore_origins_of_ingredients_impact_high') %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_high')) %]", [% ELSIF product.ecoscore_data.adjustments.origins_of_ingredients.value <= 15 %] "evaluation": "average", "title_element": { - "title": "[% lang('ecoscore_origins_of_ingredients_impact_medium') %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_medium')) %]", [% ELSE %] "evaluation": "good", "title_element": { - "title": "[% lang('ecoscore_origins_of_ingredients_impact_low') %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_low')) %]", [% END %] [% IF product.ecoscore_data.adjustments.origins_of_ingredients.value > 0 %] - "subtitle": "[% lang('bonus') %][% sep %]: +[% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", + "subtitle": "[% edq(lang('bonus')) %][% sep %]: +[% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", [% ELSE %] - "subtitle": "[% lang('malus') %][% sep %]: [% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", + "subtitle": "[% edq(lang('malus')) %][% sep %]: [% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", [% END %] "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/public.svg", @@ -62,18 +62,18 @@ "element_type": "table", "table_element": { "id": "ecoscore_origins_of_ingredients_table", - "title": "[% lang('ecoscore_origins_of_ingredients') %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients')) %]", "columns": [ { - "text": "[% lang('origin') %]", + "text": "[% edq(lang('origin')) %]", "type": "text", }, { - "text": "[% lang('percent_of_ingredients') %]", + "text": "[% edq(lang('percent_of_ingredients')) %]", "type": "percent", }, { - "text": "[% lang('ecoscore_impact') %]", + "text": "[% edq(lang('ecoscore_impact')) %]", "type": "text", } ], @@ -100,13 +100,13 @@ }, { [% IF score >= 15 %] - "text": "[% lang('low') FILTER ucfirst %]", + "text": "[% edq(lang('low')) FILTER ucfirst %]", "evaluation": "good", [% ELSIF score <= 0 %] - "text": "[% lang('high') FILTER ucfirst %]", + "text": "[% edq(lang('high')) FILTER ucfirst %]", "evaluation": "bad", [% ELSE %] - "text": "[% lang('medium') FILTER ucfirst %]", + "text": "[% edq(lang('medium')) FILTER ucfirst %]", "evaluation": "neutral", [% END %] } diff --git a/templates/api/knowledge-panels/environment/ecoscore/packaging.tt.json b/templates/api/knowledge-panels/environment/ecoscore/packaging.tt.json index 8b89802e44ac0..a9d79f6cb4d3c 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/packaging.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/packaging.tt.json @@ -6,8 +6,8 @@ [% IF not (product.ecoscore_data.adjustments.packaging.packagings && product.ecoscore_data.adjustments.packaging.packagings.size) %] "evaluation": "unknown", "title_element": { - "title": "[% lang('ecoscore_packaging_missing_information') %]", - "subtitle": "[% lang('malus') %][% sep %]: [% product.ecoscore_data.adjustments.packaging.value %]", + "title": "[% edq(lang('ecoscore_packaging_missing_information')) %]", + "subtitle": "[% edq(lang('malus')) %][% sep %]: [% product.ecoscore_data.adjustments.packaging.value %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/packaging.svg", "icon_size": "small", @@ -26,17 +26,17 @@ [% IF product.ecoscore_data.adjustments.packaging.value <= -15 %] "evaluation": "bad", "title_element": { - "title": "[% lang('ecoscore_packaging_impact_high') %]", + "title": "[% edq(lang('ecoscore_packaging_impact_high')) %]", [% ELSIF product.ecoscore_data.adjustments.packaging.value <= -5 %] "evaluation": "average", "title_element": { - "title": "[% lang('ecoscore_packaging_impact_medium') %]", + "title": "[% edq(lang('ecoscore_packaging_impact_medium')) %]", [% ELSE %] "evaluation": "good", "title_element": { - "title": "[% lang('ecoscore_packaging_impact_low') %]", + "title": "[% edq(lang('ecoscore_packaging_impact_low')) %]", [% END %] - "subtitle": "[% lang('malus') %][% sep %]: [% product.ecoscore_data.adjustments.packaging.value %]", + "subtitle": "[% edq(lang('malus')) %][% sep %]: [% product.ecoscore_data.adjustments.packaging.value %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/packaging.svg", "icon_size": "small", @@ -46,22 +46,22 @@ "element_type": "table", "table_element": { "id": "ecoscore_packaging_components", - "title": "[% lang('packaging_parts') %]", + "title": "[% edq(lang('packaging_parts')) %]", "columns": [ { - "text": "[% lang('packaging_shape') %]", + "text": "[% edq(lang('packaging_shape')) %]", "type": "text", }, { - "text": "[% lang('packaging_material') %]", + "text": "[% edq(lang('packaging_material')) %]", "type": "text", }, { - "text": "[% lang('packaging_recycling') %]", + "text": "[% edq(lang('packaging_recycling')) %]", "type": "text", }, { - "text": "[% lang('ecoscore_impact') %]", + "text": "[% edq(lang('ecoscore_impact')) %]", "type": "text", } ], @@ -86,13 +86,13 @@ }, { [% IF score >= 75 %] - "text": "[% lang('low') FILTER ucfirst %]", + "text": "[% edq(lang('low')) FILTER ucfirst %]", "evaluation": "good", [% ELSIF score <= 25 %] - "text": "[% lang('high') FILTER ucfirst %]", + "text": "[% edq(lang('high')) FILTER ucfirst %]", "evaluation": "bad", [% ELSE %] - "text": "[% lang('medium') FILTER ucfirst %]", + "text": "[% edq(lang('medium')) FILTER ucfirst %]", "evaluation": "neutral", [% END %] } diff --git a/templates/api/knowledge-panels/environment/ecoscore/production_system.tt.json b/templates/api/knowledge-panels/environment/ecoscore/production_system.tt.json index ef541dac7e052..e5f692c31e007 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/production_system.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/production_system.tt.json @@ -6,7 +6,7 @@ [% IF product.ecoscore_data.adjustments.production_system.value == 0 %] "evaluation": "neutral", "title_element": { - "title": "[% lang('ecoscore_production_system_no_labels_with_environmental_benefits') %]", + "title": "[% edq(lang('ecoscore_production_system_no_labels_with_environmental_benefits')) %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/agriculture.svg", "icon_size": "small", @@ -17,13 +17,13 @@ "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/agriculture.svg", "icon_size": "small", - "subtitle": "[% lang('bonus') %][% sep %]: +[% product.ecoscore_data.adjustments.production_system.value %]", + "subtitle": "[% edq(lang('bonus')) %][% sep %]: +[% product.ecoscore_data.adjustments.production_system.value %]", [% IF product.ecoscore_data.adjustments.production_system.value >= 20 %] - "title": "[% lang('ecoscore_production_system_labels_with_environmental_benefits_very_high') %]", + "title": "[% edq(lang('ecoscore_production_system_labels_with_environmental_benefits_very_high')) %]", [% ELSIF product.ecoscore_data.adjustments.production_system.value >= 15 %] - "title": "[% lang('ecoscore_production_system_labels_with_environmental_benefits_high') %]", + "title": "[% edq(lang('ecoscore_production_system_labels_with_environmental_benefits_high')) %]", [% ELSE %] - "title": "[% lang('ecoscore_production_system_labels_with_environmental_benefits') %]", + "title": "[% edq(lang('ecoscore_production_system_labels_with_environmental_benefits')) %]", [% END %] }, "elements": [ diff --git a/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json b/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json index c87bbd30b1bfc..88b546b4b4380 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json @@ -6,7 +6,7 @@ [% IF product.ecoscore_data.adjustments.threatened_species.warning.defined %] "evaluation": "neutral", "title_element": { - "title": "[% lang('missing_ingredients_list') %]", + "title": "[% edq(lang('missing_ingredients_list')) %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/monkey_uncertain.svg", "icon_size": "small", @@ -27,8 +27,8 @@ [% ELSIF product.ecoscore_data.adjustments.threatened_species.value < 0 %] "evaluation": "bad", "title_element": { - "title": "[% lang('ecoscore_ingredients_whose_cultivation_threatens_species') %]", - "subtitle": "[% lang('malus') %][% sep %]: [% product.ecoscore_data.adjustments.threatened_species.value %]", + "title": "[% edq(lang('ecoscore_ingredients_whose_cultivation_threatens_species')) %]", + "subtitle": "[% edq(lang('malus')) %][% sep %]: [% product.ecoscore_data.adjustments.threatened_species.value %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/monkey_unhappy.svg", "icon_size": "small", @@ -48,7 +48,7 @@ [% ELSE %] "evaluation": "good", "title_element": { - "title": "[% lang('ecoscore_no_species_threatening_ingredients') %]", + "title": "[% edq(lang('ecoscore_no_species_threatening_ingredients')) %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/monkey_happy.svg", "icon_size": "small", diff --git a/templates/api/knowledge-panels/environment/ecoscore/total.tt.json b/templates/api/knowledge-panels/environment/ecoscore/total.tt.json index 906122a64970d..f3869ad73dc44 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/total.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/total.tt.json @@ -5,8 +5,8 @@ "environment" ], "title_element": { - "title": "[% lang('impact_for_this_product') %]: [% panel.grade FILTER upper %] (Score: [% panel.score %]/100)", - "subtitle": "[% lang("front_alt") %][% sep %]: [% product_name_brand_quantity(product) %]", + "title": "[% edq(lang('impact_for_this_product')) %]: [% panel.grade FILTER upper %] (Score: [% panel.score %]/100)", + "subtitle": "[% edq(lang('front_alt')) %][% sep %]: [% product_name_brand_quantity(product) %]", "type": "grade", "grade": "[% panel.grade %]", "icon_url": "[% static_subdomain %]/images/attributes/dist/ecoscore-[% panel.grade %].svg", diff --git a/templates/api/knowledge-panels/environment/environment_card.tt.json b/templates/api/knowledge-panels/environment/environment_card.tt.json index d06ce5aaccea4..c9c953d85a19b 100644 --- a/templates/api/knowledge-panels/environment/environment_card.tt.json +++ b/templates/api/knowledge-panels/environment/environment_card.tt.json @@ -5,7 +5,7 @@ "environment" ], "title_element": { - "title": "[% lang('environment_card_title') %]", + "title": "[% edq(lang('environment_card_title')) %]", }, "elements": [ { @@ -26,7 +26,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('carbon_footprint') %]", + "title": "[% edq(lang('carbon_footprint')) %]", "panel_ids": ["carbon_footprint"], }, }, @@ -35,7 +35,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('ecoscore_packaging') %]", + "title": "[% edq(lang('ecoscore_packaging')) %]", "panel_group_id": "packaging_recycling", "panel_ids": [ "packaging_recycling", @@ -49,7 +49,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('ecoscore_transportation') %]", + "title": "[% edq(lang('ecoscore_transportation')) %]", "panel_ids": [ [% IF panels.manufacturing_place.defined %]"manufacturing_place",[% END %] "origins_of_ingredients", @@ -60,7 +60,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('ecoscore_threatened_species') %]", + "title": "[% edq(lang('ecoscore_threatened_species')) %]", "panel_ids": [ "palm_oil" ], @@ -71,7 +71,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('labels_p') FILTER ucfirst %]", + "title": "[% edq(lang('labels_p')) FILTER ucfirst %]", "panel_ids": [ [% FOREACH label IN product.ecoscore_data.adjustments.production_system.labels %] "environment_label_[% label %]", diff --git a/templates/api/knowledge-panels/environment/manufacturing_place.tt.json b/templates/api/knowledge-panels/environment/manufacturing_place.tt.json index 29948f3f94ae9..92ea59cecd3c5 100644 --- a/templates/api/knowledge-panels/environment/manufacturing_place.tt.json +++ b/templates/api/knowledge-panels/environment/manufacturing_place.tt.json @@ -6,7 +6,7 @@ "evaluation": "neutral", "expanded": true, "title_element": { - "title": "[% lang('manufacturing_places_s') FILTER ucfirst %]", + "title": "[% edq(lang('manufacturing_places_s')) FILTER ucfirst %]", [% IF panel.packager_code_data.cc == 'fr' %] "subtitle": "[% panel.packager_code_data.commune %] - [% display_taxonomy_tag_name('countries', 'en:france') %]", [% ELSIF panel.packager_code_data.cc == 'ch' %] diff --git a/templates/api/knowledge-panels/environment/origins_of_ingredients.tt.json b/templates/api/knowledge-panels/environment/origins_of_ingredients.tt.json index 33f027e310360..e503530636293 100644 --- a/templates/api/knowledge-panels/environment/origins_of_ingredients.tt.json +++ b/templates/api/knowledge-panels/environment/origins_of_ingredients.tt.json @@ -7,8 +7,8 @@ [% IF product.ecoscore_data.adjustments.origins_of_ingredients.warning == "origins_are_100_percent_unknown" %] "evaluation": "unknown", "title_element": { - "title": "[% lang('ecoscore_origins_of_ingredients') %]", - "subtitle": "[% lang('ecoscore_origins_of_ingredients_missing_information') %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients')) %]", + "subtitle": "[% edq(lang('ecoscore_origins_of_ingredients_missing_information')) %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/public.svg", }, @@ -38,17 +38,17 @@ [% IF product.ecoscore_data.adjustments.origins_of_ingredients.value <= 0 %] "evaluation": "bad", "title_element": { - "subtitle": "[% lang('ecoscore_origins_of_ingredients_impact_high') %]", + "subtitle": "[% edq(lang('ecoscore_origins_of_ingredients_impact_high')) %]", [% ELSIF product.ecoscore_data.adjustments.origins_of_ingredients.value <= 15 %] "evaluation": "average", "title_element": { - "subtitle": "[% lang('ecoscore_origins_of_ingredients_impact_medium') %]", + "subtitle": "[% edq(lang('ecoscore_origins_of_ingredients_impact_medium')) %]", [% ELSE %] "evaluation": "good", "title_element": { - "subtitle": "[% lang('ecoscore_origins_of_ingredients_impact_low') %]", + "subtitle": "[% edq(lang('ecoscore_origins_of_ingredients_impact_low')) %]", [% END %] - "title": "[% lang('ecoscore_origins_of_ingredients') %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients')) %]", "icon_color_from_evaluation": true, "icon_url": "[% static_subdomain %]/images/icons/dist/public.svg", }, @@ -58,18 +58,18 @@ "table_element": { "id": "ecoscore_origins_of_ingredients_table", "table_type": "percents", - "title": "[% lang('ecoscore_origins_of_ingredients') %]", + "title": "[% edq(lang('ecoscore_origins_of_ingredients')) %]", "columns": [ { - "text": "[% lang('origin') %]", + "text": "[% edq(lang('origin')) %]", "type": "text", }, { - "text": "[% lang('percent_of_ingredients') %]", + "text": "[% edq(lang('percent_of_ingredients')) %]", "type": "percent", }, { - "text": "[% lang('ecoscore_impact') %]", + "text": "[% edq(lang('ecoscore_impact')) %]", "type": "text", } ], @@ -96,13 +96,13 @@ }, { [% IF score >= 15 %] - "text": "[% lang('low') FILTER ucfirst %]", + "text": "[% edq(lang('low')) FILTER ucfirst %]", "evaluation": "good", [% ELSIF score <= 0 %] - "text": "[% lang('high') FILTER ucfirst %]", + "text": "[% edq(lang('high')) FILTER ucfirst %]", "evaluation": "bad", [% ELSE %] - "text": "[% lang('medium') FILTER ucfirst %]", + "text": "[% edq(lang('medium')) FILTER ucfirst %]", "evaluation": "neutral", [% END %] } diff --git a/templates/api/knowledge-panels/environment/packaging_components.tt.json b/templates/api/knowledge-panels/environment/packaging_components.tt.json index d94c41b81678a..f491cae82f403 100644 --- a/templates/api/knowledge-panels/environment/packaging_components.tt.json +++ b/templates/api/knowledge-panels/environment/packaging_components.tt.json @@ -18,7 +18,7 @@ "environment" ], "title_element": { - "title": "[% lang('packaging_parts') %]", + "title": "[% edq(lang('packaging_parts')) %]", }, "expanded": true, "elements": [ @@ -40,7 +40,7 @@ [% ELSE %] "evaluation": "neutral", "icon_url": "[% static_subdomain %]/images/icons/dist/help.svg", - "icon_alt": "[% lang('unknown') %]", + "icon_alt": "[% edq(lang('unknown')) %]", [% END %] "html": ` [% FOREACH packaging IN product.packagings %] diff --git a/templates/api/knowledge-panels/environment/packaging_materials.tt.json b/templates/api/knowledge-panels/environment/packaging_materials.tt.json index bac17edafcff2..f553ff54b3c1e 100644 --- a/templates/api/knowledge-panels/environment/packaging_materials.tt.json +++ b/templates/api/knowledge-panels/environment/packaging_materials.tt.json @@ -4,7 +4,7 @@ "environment" ], "title_element": { - "title": "[% lang('packaging_materials') %]", + "title": "[% edq(lang('packaging_materials')) %]", }, "expanded": true, "elements": [ @@ -12,10 +12,10 @@ "element_type": "table", "table_element": { "id": "packaging_materials", - "title": "[% lang('packaging_materials') %]", + "title": "[% edq(lang('packaging_materials')) %]", "columns": [ { - "text": "[% lang('packaging_material') %]", + "text": "[% edq(lang('packaging_material')) %]", "type": "text", }, { @@ -23,13 +23,13 @@ "type": "text", }, { - "text": "[% lang('packaging_weight_total') %]", + "text": "[% edq(lang('packaging_weight_total')) %]", "type": "text", }, // packaging weight per 100g of product is computed only if we have a quantity [% IF product.product_quantity %] { - "text": "[% lang('packaging_weight_100g') %]", + "text": "[% edq(lang('packaging_weight_100g')) %]", "type": "text", }, [% END %] @@ -49,7 +49,7 @@ "values": [ { [% IF parent_material == 'all' %] - "text": "[% lang('total') %]", + "text": "[% edq(lang('total')) %]", [% ELSE %] "text": "[% display_taxonomy_tag_name('packaging_materials',parent_material) %]" [% END %] diff --git a/templates/api/knowledge-panels/environment/packaging_recycling.tt.json b/templates/api/knowledge-panels/environment/packaging_recycling.tt.json index f123d49cb119e..f60f97f2eba25 100644 --- a/templates/api/knowledge-panels/environment/packaging_recycling.tt.json +++ b/templates/api/knowledge-panels/environment/packaging_recycling.tt.json @@ -6,7 +6,7 @@ [% IF NOT (product.ecoscore_data.adjustments.packaging.packagings AND product.ecoscore_data.adjustments.packaging.packagings.size) %] "evaluation": "unknown", "title_element": { - "title": "[% lang('ecoscore_packaging_missing_information') %]", + "title": "[% edq(lang('ecoscore_packaging_missing_information')) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/packaging.svg", "icon_color_from_evaluation": true, "evaluation": "neutral", @@ -35,15 +35,15 @@ [% IF product.ecoscore_data.adjustments.packaging.value <= -15 %] "evaluation": "bad", "title_element": { - "title": "[% lang('ecoscore_packaging_impact_high') %]", + "title": "[% edq(lang('ecoscore_packaging_impact_high')) %]", [% ELSIF product.ecoscore_data.adjustments.packaging.value <= -5 %] "evaluation": "average", "title_element": { - "title": "[% lang('ecoscore_packaging_impact_medium') %]", + "title": "[% edq(lang('ecoscore_packaging_impact_medium')) %]", [% ELSE %] "evaluation": "good", "title_element": { - "title": "[% lang('ecoscore_packaging_impact_low') %]", + "title": "[% edq(lang('ecoscore_packaging_impact_low')) %]", [% END %] "icon_url": "[% static_subdomain %]/images/icons/dist/packaging.svg", "icon_color_from_evaluation": true, diff --git a/templates/api/knowledge-panels/environment/palm_oil.tt.json b/templates/api/knowledge-panels/environment/palm_oil.tt.json index 83f0a01fff51e..36146224a43fb 100644 --- a/templates/api/knowledge-panels/environment/palm_oil.tt.json +++ b/templates/api/knowledge-panels/environment/palm_oil.tt.json @@ -5,8 +5,8 @@ ], "evaluation": "bad", "title_element": { - "title": "[% lang('contains_palm_oil') %]", - "subtitle": "[% lang('contains_palm_oil_subtitle') %]", + "title": "[% edq(lang('contains_palm_oil')) %]", + "subtitle": "[% edq(lang('contains_palm_oil_subtitle')) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/palm-oil.svg", "icon_color_from_evaluation": true, }, diff --git a/templates/api/knowledge-panels/health/health_card.tt.json b/templates/api/knowledge-panels/health/health_card.tt.json index c03e0ab77e16a..2ad8abb669d3e 100644 --- a/templates/api/knowledge-panels/health/health_card.tt.json +++ b/templates/api/knowledge-panels/health/health_card.tt.json @@ -5,7 +5,7 @@ "health" ], "title_element": { - "title": "[% lang('health') %]", + "title": "[% edq(lang('health')) %]", }, "elements": [ [% IF panels.recommendation_health.defined %] diff --git a/templates/api/knowledge-panels/health/ingredients/ingredients_analysis_details.tt.json b/templates/api/knowledge-panels/health/ingredients/ingredients_analysis_details.tt.json index 32f744884de12..6487176c7342e 100644 --- a/templates/api/knowledge-panels/health/ingredients/ingredients_analysis_details.tt.json +++ b/templates/api/knowledge-panels/health/ingredients/ingredients_analysis_details.tt.json @@ -12,12 +12,12 @@ "evaluation": "unknown", [% END %] "title_element": { - "title":"[% lang("ingredients_analysis_details") %]", + "title":"[% edq(lang('ingredients_analysis_details')) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/off-magnifying-glass.svg", "icon_size": "small", "icon_color_from_evaluation": true, [% IF panel.unknown_ingredients %] - "subtitle": "[% lang("we_need_your_help") %]", + "subtitle": "[% edq(lang('we_need_your_help')) %]", [% END %] }, "elements": [ diff --git a/templates/api/knowledge-panels/health/ingredients/nova.tt.json b/templates/api/knowledge-panels/health/ingredients/nova.tt.json index cfc8edc75105f..709bcd429447f 100644 --- a/templates/api/knowledge-panels/health/ingredients/nova.tt.json +++ b/templates/api/knowledge-panels/health/ingredients/nova.tt.json @@ -7,10 +7,10 @@ [% IF product.nova_group.defined && product.nova_group > 0 %] [% SET nova_group = product.nova_group %] "icon_url": "[% static_subdomain %]/images/attributes/dist/nova-group-[% product.nova_group %].svg", - "title": "[% lang('attribute_nova_' _ nova_group _ '_description_short') %]", + "title": "[% edq(lang('attribute_nova_' _ nova_group _ '_description_short')) %]", [% ELSE %] "icon_url": "[% static_subdomain %]/images/attributes/dist/nova-group-unknown.svg", - "title": "[% lang('attribute_nova_unknown_description_short') %]", + "title": "[% edq(lang('attribute_nova_unknown_description_short')) %]", [%# why are there parenthesis around the name ? %] [% END %] }, "elements": [ diff --git a/templates/api/knowledge-panels/health/ingredients_panels.tt.json b/templates/api/knowledge-panels/health/ingredients_panels.tt.json index ce2f9b147b7e7..36cf6db17a7b3 100644 --- a/templates/api/knowledge-panels/health/ingredients_panels.tt.json +++ b/templates/api/knowledge-panels/health/ingredients_panels.tt.json @@ -2,7 +2,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('ingredients') %]", + "title": "[% edq(lang('ingredients')) %]", "type": "subcard", "panel_group_id": "ingredients", "panel_ids": ["ingredients"], @@ -16,7 +16,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('attribute_group_processing_name').ucfirst %]", + "title": "[% edq(lang('attribute_group_processing_name')).ucfirst %]", "panel_ids": ["nova"], }, }, @@ -25,7 +25,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('additives_p').ucfirst %]", + "title": "[% edq(lang('additives_p')).ucfirst %]", "panel_ids": ["additives"], }, }, @@ -34,7 +34,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang("ingredients_analysis") %]", + "title": "[% edq(lang('ingredients_analysis')) %]", "panel_ids": [ "ingredients_analysis", [% IF panels.ingredients_analysis_details.defined %] diff --git a/templates/api/knowledge-panels/health/nutriscore/nutriscore_2023.tt.json b/templates/api/knowledge-panels/health/nutriscore/nutriscore_2023.tt.json index 139a31440808b..19fc75247da86 100644 --- a/templates/api/knowledge-panels/health/nutriscore/nutriscore_2023.tt.json +++ b/templates/api/knowledge-panels/health/nutriscore/nutriscore_2023.tt.json @@ -44,7 +44,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('nutriscore_negative_points') %][% sep %]: [% product.nutriscore.2023.data.negative_points %]/[% product.nutriscore.2023.data.negative_points_max %]", + "title": "[% edq(lang('nutriscore_negative_points')) %][% sep %]: [% product.nutriscore.2023.data.negative_points %]/[% product.nutriscore.2023.data.negative_points_max %]", "evaluation": "bad", "icon_url": "[% static_subdomain %]/images/icons/dist/circle-minus.svg", "icon_size": "small", @@ -62,7 +62,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('nutriscore_positive_points') %][% sep %]: [% product.nutriscore.2023.data.positive_points %]/[% product.nutriscore.2023.data.positive_points_max %]", + "title": "[% edq(lang('nutriscore_positive_points')) %][% sep %]: [% product.nutriscore.2023.data.positive_points %]/[% product.nutriscore.2023.data.positive_points_max %]", "evaluation": "good", "icon_url": "[% static_subdomain %]/images/icons/dist/circle-plus.svg", "icon_size": "small", diff --git a/templates/api/knowledge-panels/health/nutriscore/nutriscore_component.tt.json b/templates/api/knowledge-panels/health/nutriscore/nutriscore_component.tt.json index f7b34298da99f..84f7d08230855 100644 --- a/templates/api/knowledge-panels/health/nutriscore/nutriscore_component.tt.json +++ b/templates/api/knowledge-panels/health/nutriscore/nutriscore_component.tt.json @@ -6,7 +6,7 @@ "size": "small", "title_element": { "icon_url": "[% static_subdomain %]/images/attributes/dist/points-[% panel.type %]-[% panel.points %]-[% panel.points_max %].svg", - "title": "[% lang("nutriscore_component_" _ panel.id) %]", + "title": "[% edq(lang('nutriscore_component_' _ panel.id)) %]", "subtitle": "[% panel.points %]/[% panel.points_max %] points ([% panel.value %][% panel.space_before_unit %][% panel.unit %])", }, "elements": [ diff --git a/templates/api/knowledge-panels/health/nutriscore/nutriscore_description.tt.json b/templates/api/knowledge-panels/health/nutriscore/nutriscore_description.tt.json index 3026a3c066a61..411575556259d 100644 --- a/templates/api/knowledge-panels/health/nutriscore/nutriscore_description.tt.json +++ b/templates/api/knowledge-panels/health/nutriscore/nutriscore_description.tt.json @@ -6,7 +6,7 @@ "title_element": { "icon_url": "[% static_subdomain %]/images/icons/dist/info.svg", "icon_size": "small", - "title": "[% lang("nutriscore_explanation_title") %]", + "title": "[% edq(lang('nutriscore_explanation_title')) %]", "type": "info", }, "elements": [ diff --git a/templates/api/knowledge-panels/health/nutriscore/nutriscore_details.tt.json b/templates/api/knowledge-panels/health/nutriscore/nutriscore_details.tt.json index f0363e87a188e..8a175ba8c852f 100644 --- a/templates/api/knowledge-panels/health/nutriscore/nutriscore_details.tt.json +++ b/templates/api/knowledge-panels/health/nutriscore/nutriscore_details.tt.json @@ -6,8 +6,8 @@ "title_element": { "icon_url": "[% static_subdomain %]/images/icons/dist/info.svg", "icon_size": "small", - "title": "[% lang("nutriscore_calculation_details") %]", - "type": "info", + "title": "[% edq(lang('nutriscore_calculation_details')) %]", + "type": "info" }, "elements": [ // Display warnings diff --git a/templates/api/knowledge-panels/health/nutrition/nutrient_levels.tt.json b/templates/api/knowledge-panels/health/nutrition/nutrient_levels.tt.json index 37973a3e573b4..f447878e864ad 100644 --- a/templates/api/knowledge-panels/health/nutrition/nutrient_levels.tt.json +++ b/templates/api/knowledge-panels/health/nutrition/nutrient_levels.tt.json @@ -8,7 +8,7 @@ "evaluation": "unknown", "title_element": { "icon_url": "[% static_subdomain %]/images/icons/dist/nutrition.svg", - "title": "[% lang('nutrient_levels_p') FILTER ucfirst %]", + "title": "[% edq(lang('nutrient_levels_p')) FILTER ucfirst %]", "icon_color_from_evaluation": true, }, "elements": [ diff --git a/templates/api/knowledge-panels/health/nutrition/nutrition_facts_table.tt.json b/templates/api/knowledge-panels/health/nutrition/nutrition_facts_table.tt.json index f2c29f6f398a7..2174889c46388 100644 --- a/templates/api/knowledge-panels/health/nutrition/nutrition_facts_table.tt.json +++ b/templates/api/knowledge-panels/health/nutrition/nutrition_facts_table.tt.json @@ -7,7 +7,7 @@ "expand_for": "large", "evaluation": "unknown", "title_element": { - "title": "[% lang('nutrition_data_table') %]", + "title": "[% edq(lang('nutrition_data_table')) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/scale-balance.svg", "icon_color_from_evaluation": true, }, @@ -16,7 +16,7 @@ "element_type": "table", "table_element": { "id": "nutrition_facts_table", - "title": "[% lang('nutrition_data_table') %]", + "title": "[% edq(lang('nutrition_data_table')) %]", // Create a structure to check if we already have seen a column for a given scope // so that we can mark the first one as the default column for the group [% SET scopes = {} %] diff --git a/templates/api/knowledge-panels/health/nutrition/physical_activities.tt.json b/templates/api/knowledge-panels/health/nutrition/physical_activities.tt.json index e125aa258cf4b..a7f34b9fb128e 100644 --- a/templates/api/knowledge-panels/health/nutrition/physical_activities.tt.json +++ b/templates/api/knowledge-panels/health/nutrition/physical_activities.tt.json @@ -6,8 +6,8 @@ "expanded": false, "evaluation": "[% panel.evaluation %]", "title_element": { - "title": "[% f_lang('f_energy_per_100g', { 'kj' => panel.energy }) %]", - "subtitle": "[% f_lang('f_equal_to_walking_minutes_or_steps', { 'minutes' => round(panel.walking_minutes), 'steps' => round(panel.walking_steps) } ) %]", + "title": "[% edq(f_lang('f_energy_per_100g', { 'kj' => panel.energy })) %]", + "subtitle": "[% edq(f_lang('f_equal_to_walking_minutes_or_steps', { 'minutes' => round(panel.walking_minutes), 'steps' => round(panel.walking_steps) } )) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/activity-walking.svg", "icon_color_from_evaluation": true, }, diff --git a/templates/api/knowledge-panels/health/nutrition_panels.tt.json b/templates/api/knowledge-panels/health/nutrition_panels.tt.json index d095eabe127b8..994611f9452ed 100644 --- a/templates/api/knowledge-panels/health/nutrition_panels.tt.json +++ b/templates/api/knowledge-panels/health/nutrition_panels.tt.json @@ -1,7 +1,7 @@ { "element_type": "panel_group", "panel_group_element": { - "title": "[% lang('nutrition') %]", + "title": "[% edq(lang('nutrition')) %]", "type": "subcard", "panel_group_id": "nutrition", [% IF panel.nutrition_image.defined %] diff --git a/templates/api/knowledge-panels/recommendations/health/world/who_alcohol.tt.json b/templates/api/knowledge-panels/recommendations/health/world/who_alcohol.tt.json index 67761de90ead9..644ac6725ae1e 100644 --- a/templates/api/knowledge-panels/recommendations/health/world/who_alcohol.tt.json +++ b/templates/api/knowledge-panels/recommendations/health/world/who_alcohol.tt.json @@ -5,8 +5,8 @@ ], "evaluation": "bad", "title_element": { - "title": "[% lang('recommendation_who_reduce_or_stop_drinking_alcohol_title') %]", - "subtitle": "[% lang('recommendation_who_reduce_or_stop_drinking_alcohol_subtitle') %]", + "title": "[% edq(lang('recommendation_who_reduce_or_stop_drinking_alcohol_title')) %]", + "subtitle": "[% edq(lang('recommendation_who_reduce_or_stop_drinking_alcohol_subtitle')) %]", "icon_url": "[% static_subdomain %]/images/icons/dist/arrow-bottom-right-thick.svg", "icon_color_from_evaluation": true, "evaluation": "bad", diff --git a/templates/api/knowledge-panels/tags/categories/packagings_materials.tt.json b/templates/api/knowledge-panels/tags/categories/packagings_materials.tt.json index ac81a68c104ae..c42c457e151a2 100644 --- a/templates/api/knowledge-panels/tags/categories/packagings_materials.tt.json +++ b/templates/api/knowledge-panels/tags/categories/packagings_materials.tt.json @@ -4,7 +4,7 @@ "environment" ], "title_element": { - "title": "[% lang('packaging_materials') %]", + "title": "[% edq(lang('packaging_materials')) %]", }, "expanded": true, "elements": [ @@ -12,30 +12,30 @@ "element_type": "table", "table_element": { "id": "packaging_materials", - "title": "[% lang('packaging_materials') %]", + "title": "[% edq(lang('packaging_materials')) %]", "columns": [ { - "text": "[% lang('packaging_material') %]", + "text": "[% edq(lang('packaging_material')) %]", "type": "text", }, { - "text": "[% lang('packaging_material_products_percent_main') %]", + "text": "[% edq(lang('packaging_material_products_percent_main')) %]", "type": "text", }, { - "text": "[% lang('packaging_weight_100g_mean') %] ([% lang('relative_to_products_containing_mostly_the_material') %])", + "text": "[% edq(lang('packaging_weight_100g_mean')) %] ([% edq(lang('relative_to_products_containing_mostly_the_material')) %])", "type": "text", }, { - "text": "[% lang('packaging_material_products_percent') %]", + "text": "[% edq(lang('packaging_material_products_percent')) %]", "type": "text", }, { - "text": "[% lang('packaging_weight_100g_mean') %] ([% lang('relative_to_products_containing_the_material') %])", + "text": "[% edq(lang('packaging_weight_100g_mean')) %] ([% edq(lang('relative_to_products_containing_the_material')) %])", "type": "text", }, { - "text": "[% lang('packaging_weight_100g_mean') %] ([% lang('relative_to_all_products') %])", + "text": "[% edq(lang('packaging_weight_100g_mean')) %] ([% edq(lang('relative_to_all_products')) %])", "type": "text", }, ], @@ -51,7 +51,7 @@ "values": [ [% IF material == 'all' %] { - "text": "[% lang('total') %]", + "text": "[% edq(lang('total')) %]", }, { "text": "-" diff --git a/templates/web/common/includes/display_product_search_or_add.tt.html b/templates/web/common/includes/display_product_search_or_add.tt.html index d94912591a54f..722e03180a0e0 100644 --- a/templates/web/common/includes/display_product_search_or_add.tt.html +++ b/templates/web/common/includes/display_product_search_or_add.tt.html @@ -8,14 +8,14 @@
- +
- +
- + diff --git a/templates/web/common/includes/list_of_products.tt.html b/templates/web/common/includes/list_of_products.tt.html index 3ed150df20408..e40e2c6ef9a16 100755 --- a/templates/web/common/includes/list_of_products.tt.html +++ b/templates/web/common/includes/list_of_products.tt.html @@ -8,16 +8,16 @@ [% IF (current_link.defined) && !(jqm.defined) %] [% IF !(server_options_producers_platform) %] [% IF country != 'en:world' %] -

[% lang('view_results_from_the_entire_world') %]

+

[% edq(lang('view_results_from_the_entire_world')) %]

[% END %] [% END %] [% IF current_link.match('/(search|search.pl)') %] -

[% lang('search_link') %]

+

[% edq(lang('search_link')) %]

[% END %] [% END %] [% IF (current_link_query_edit.defined) && !(jqm.defined) %] -

[% lang('search_edit') %]

+

[% edq(lang('search_edit')) %]

[% END %] @@ -29,11 +29,11 @@ [% IF count <= export_limit %] diff --git a/templates/web/common/includes/producers_platform_top_panel.tt.html b/templates/web/common/includes/producers_platform_top_panel.tt.html index 5ee97ec83f53f..a89e580547620 100644 --- a/templates/web/common/includes/producers_platform_top_panel.tt.html +++ b/templates/web/common/includes/producers_platform_top_panel.tt.html @@ -20,8 +20,8 @@

[% lang('producers_platform_moderation_title') %]

- - + + diff --git a/templates/web/common/site_layout.tt.html b/templates/web/common/site_layout.tt.html index 02a3ce4e1ccc6..7f14d7a0a2063 100644 --- a/templates/web/common/site_layout.tt.html +++ b/templates/web/common/site_layout.tt.html @@ -1,7 +1,7 @@ - + [% title %] @@ -16,10 +16,10 @@ [% options_favicons %] - + - + [% header %]