feat(design) : intégration dans l'Observatoire des Polycrises
This commit is contained in:
parent
2846403860
commit
a9bf92a4bc
@ -1,332 +1,332 @@
|
|||||||
{
|
{
|
||||||
"app": {
|
"app": {
|
||||||
"title": "Fabnum – Chain Analysis",
|
"title": "Fabnum – Chain Analysis",
|
||||||
"description": "Ecosystem exploration and vulnerability identification.",
|
"description": "Ecosystem exploration and vulnerability identification.",
|
||||||
"dev_mode": "You are in the development environment."
|
"dev_mode": "You are in the development environment."
|
||||||
|
},
|
||||||
|
"header": {
|
||||||
|
"title": "FabNum - Digital Manufacturing Chain",
|
||||||
|
"subtitle": "Ecosystem exploration and vulnerability identification.\n -> This site is still under development <-"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"copyright": "FabNum@Polycrisis Observatory © 2025",
|
||||||
|
"contact": "Contact",
|
||||||
|
"license": "License",
|
||||||
|
"license_text": "CC BY-NC-ND",
|
||||||
|
"eco_note": "🌱 CO₂ calculations via",
|
||||||
|
"eco_provider": "The Green Web Foundation",
|
||||||
|
"powered_by": "🚀 Powered by",
|
||||||
|
"powered_by_name": "Streamlit"
|
||||||
|
},
|
||||||
|
"sidebar": {
|
||||||
|
"menu": "Main Menu",
|
||||||
|
"navigation": "Main Navigation",
|
||||||
|
"theme": "Theme",
|
||||||
|
"theme_light": "Light",
|
||||||
|
"theme_dark": "Dark",
|
||||||
|
"theme_instructions_only": "Theme changes can only be made from the Instructions tab.",
|
||||||
|
"impact": "Environmental Impact",
|
||||||
|
"loading": "Loading..."
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"title": "Authentication",
|
||||||
|
"username": "Username_token",
|
||||||
|
"token": "Gitea Personal Access Token",
|
||||||
|
"login": "Login",
|
||||||
|
"logout": "Logout",
|
||||||
|
"logged_as": "Logged in as",
|
||||||
|
"error": "❌ Access denied.",
|
||||||
|
"gitea_error": "❌ Unable to verify user with Gitea.",
|
||||||
|
"success": "Successfully logged out."
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"instructions": "Instructions",
|
||||||
|
"personnalisation": "Customization",
|
||||||
|
"analyse": "Analysis",
|
||||||
|
"ia_nalyse": "AI'nalysis",
|
||||||
|
"plan_d_action": "Actions plan",
|
||||||
|
"visualisations": "Visualizations",
|
||||||
|
"fiches": "Cards"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"instructions": {
|
||||||
|
"title": "Instructions"
|
||||||
},
|
},
|
||||||
"header": {
|
"personnalisation": {
|
||||||
"title": "FabNum - Digital Manufacturing Chain",
|
"title": "Final Product Customization",
|
||||||
"subtitle": "Ecosystem exploration and vulnerability identification."
|
"help": "How to use this tab?",
|
||||||
|
"help_content": [
|
||||||
|
"1. Click on \"Add a final product\" to create a new product",
|
||||||
|
"2. Give your product a name",
|
||||||
|
"3. Select an appropriate assembly operation (if relevant)",
|
||||||
|
"4. Choose the components that make up your product from the list provided",
|
||||||
|
"5. Save your configuration for future reuse",
|
||||||
|
"6. You will be able to modify or delete your custom products later"
|
||||||
|
],
|
||||||
|
"add_new_product": "Add a new final product",
|
||||||
|
"new_product_name": "New product name (unique)",
|
||||||
|
"assembly_operation": "Assembly operation (optional)",
|
||||||
|
"product_exists": "This product already exists",
|
||||||
|
"none": "-- None --",
|
||||||
|
"components_to_link": "Components to link",
|
||||||
|
"create_product": "Create product",
|
||||||
|
"added": "added",
|
||||||
|
"modify_product": "Modify an added final product",
|
||||||
|
"products_to_modify": "Products to modify",
|
||||||
|
"delete": "Delete",
|
||||||
|
"linked_assembly_operation": "Linked assembly operation",
|
||||||
|
"components_linked_to": "Components linked to",
|
||||||
|
"update": "Update",
|
||||||
|
"updated": "updated",
|
||||||
|
"deleted": "deleted",
|
||||||
|
"save_restore_config": "Save or restore configuration",
|
||||||
|
"export_config": "Export configuration",
|
||||||
|
"download_json": "Download (JSON)",
|
||||||
|
"import_config": "Import a JSON configuration (max 100 KB)",
|
||||||
|
"file_too_large": "File too large (max 100 KB).",
|
||||||
|
"no_products_found": "No products found in the file.",
|
||||||
|
"select_products_to_restore": "Select products to restore",
|
||||||
|
"products_to_restore": "Products to restore",
|
||||||
|
"restore_selected": "Restore selected items",
|
||||||
|
"config_restored": "Partial configuration successfully restored.",
|
||||||
|
"import_error": "Import error:"
|
||||||
},
|
},
|
||||||
"footer": {
|
"analyse": {
|
||||||
"copyright": "Fabnum © 2025",
|
"title": "Graph Analysis",
|
||||||
"contact": "Contact",
|
"help": "How to use this tab?",
|
||||||
"license": "License",
|
"help_content": [
|
||||||
"license_text": "CC BY-NC-ND",
|
"1. Select the starting level (final product, component, or mineral)",
|
||||||
"eco_note": "🌱 CO₂ calculations via",
|
"2. Choose the desired destination level",
|
||||||
"eco_provider": "The Green Web Foundation",
|
"3. Refine your selection by specifying either one or more specific minerals to target or specific items at each level (optional)",
|
||||||
"powered_by": "🚀 Powered by",
|
"4. Define the analysis criteria by selecting the relevant vulnerability indices",
|
||||||
"powered_by_name": "Streamlit"
|
"5. Choose the index combination mode (AND/OR) according to your analysis needs",
|
||||||
|
"6. Explore the generated graph using zoom and panning controls; you can switch to full screen mode for the graph"
|
||||||
|
],
|
||||||
|
"selection_nodes": "Selection of start and end nodes",
|
||||||
|
"select_level": "-- Select a level --",
|
||||||
|
"start_level": "Start level",
|
||||||
|
"end_level": "End level",
|
||||||
|
"select_minerals": "Select one or more minerals",
|
||||||
|
"filter_by_minerals": "Filter by minerals (optional)",
|
||||||
|
"fine_selection": "Fine selection of items",
|
||||||
|
"filter_start_nodes": "Filter by start nodes (optional)",
|
||||||
|
"filter_end_nodes": "Filter by end nodes (optional)",
|
||||||
|
"vulnerability_filters": "Selection of filters to identify vulnerabilities",
|
||||||
|
"filter_ics": "Filter paths containing at least one critical mineral for a component (ICS > 66%)",
|
||||||
|
"filter_ivc": "Filter paths containing at least one critical mineral in relation to sectoral competition (IVC > 30)",
|
||||||
|
"filter_ihh": "Filter paths containing at least one critical operation in relation to geographical or industrial concentration (IHH countries or actors > 25)",
|
||||||
|
"apply_ihh_filter": "Apply IHH filter on:",
|
||||||
|
"countries": "Countries",
|
||||||
|
"actors": "Actors",
|
||||||
|
"filter_isg": "Filter paths containing an unstable country (ISG ≥ 60)",
|
||||||
|
"filter_logic": "Filter logic",
|
||||||
|
"or": "OR",
|
||||||
|
"and": "AND",
|
||||||
|
"run_analysis": "Run analysis",
|
||||||
|
"sankey": {
|
||||||
|
"no_paths": "No paths found for the specified criteria.",
|
||||||
|
"no_matching_paths": "No paths match the criteria.",
|
||||||
|
"filtered_hierarchy": "Hierarchy filtered by levels and nodes",
|
||||||
|
"download_dot": "Download filtered DOT file",
|
||||||
|
"relation": "Relation"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"ia_nalyse": {
|
||||||
"menu": "Main Menu",
|
"title": "Graph Analysis by AI",
|
||||||
"navigation": "Main Navigation",
|
"help": "How to use this tab?",
|
||||||
"theme": "Theme",
|
"help_content": [
|
||||||
"theme_light": "Light",
|
"The graph covers all levels, from end products to geographic countries.\n",
|
||||||
"theme_dark": "Dark",
|
"1. You can select minerals through which the paths go.",
|
||||||
"theme_instructions_only": "Theme changes can only be made from the Instructions tab.",
|
"2. You can choose end products to perform an analysis tailored to your context.\n",
|
||||||
"impact": "Environmental Impact",
|
"These two selections are optional, but strongly recommended for a more relevant analysis.",
|
||||||
"loading": "Loading..."
|
"The analysis is carried out using a private AI on a minimalist server. The result is therefore not immediate (approximately 30 minutes) and you will be notified of the progress."
|
||||||
|
],
|
||||||
|
"select_minerals": "Select one or more minerals",
|
||||||
|
"filter_by_minerals": "Filter by minerals (optional, but highly recommended)",
|
||||||
|
"fine_selection": "End product selection",
|
||||||
|
"filter_start_nodes": "Filter by start nodes (optional, but recommended)",
|
||||||
|
"run_analysis": "Run analysis",
|
||||||
|
"confirm_download": "Confirm download",
|
||||||
|
"submit_request": "Submit your request",
|
||||||
|
"empty_graph": "The graph is empty. Please make another selection."
|
||||||
},
|
},
|
||||||
"auth": {
|
"plan_d_action": {
|
||||||
"title": "Authentication",
|
"title": "Graph analysis for action",
|
||||||
"username": "Username_token",
|
"help": "How to use this tab?",
|
||||||
"token": "Gitea Personal Access Token",
|
"help_content": [
|
||||||
"login": "Login",
|
"The graph covers all levels, from end products to geographic countries.\n",
|
||||||
"logout": "Logout",
|
"1. You can select minerals through which the paths go.",
|
||||||
"logged_as": "Logged in as",
|
"2. You can choose end products to perform an analysis tailored to your context.\n",
|
||||||
"error": "❌ Access denied.",
|
"These two selections are optional, but strongly recommended for a more relevant analysis.",
|
||||||
"gitea_error": "❌ Unable to verify user with Gitea.",
|
"The recommendations for actions and indicator monitoring are generic. They must therefore be adapted to the context.",
|
||||||
"success": "Successfully logged out."
|
"The proposed actions or indicators depend on the type of organization concerned and can be applied directly or required of digital providers."
|
||||||
|
],
|
||||||
|
"select_minerals": "Select one or more minerals",
|
||||||
|
"filter_by_minerals": "Filter by minerals (optional, but highly recommended)",
|
||||||
|
"fine_selection": "End product selection",
|
||||||
|
"filter_start_nodes": "Filter by start nodes",
|
||||||
|
"run_analysis": "Run analysis",
|
||||||
|
"confirm_download": "Confirm download",
|
||||||
|
"submit_request": "Submit your request",
|
||||||
|
"empty_graph": "The graph is empty. Please make another selection."
|
||||||
},
|
},
|
||||||
"navigation": {
|
"visualisations": {
|
||||||
"instructions": "Instructions",
|
"title": "Visualizations",
|
||||||
"personnalisation": "Customization",
|
"help": "How to use this tab?",
|
||||||
"analyse": "Analysis",
|
"help_content": [
|
||||||
"ia_nalyse": "AI'nalysis",
|
"1. Explore the graphs presenting the Herfindahl-Hirschmann Index (IHH)",
|
||||||
"plan_d_action": "Actions plan",
|
"2. Analyze its relationship with the average criticality of minerals or their Competitive Vulnerability Index (IVC)",
|
||||||
"visualisations": "Visualizations",
|
"3. Zoom in on the graphs to better discover the information",
|
||||||
"fiches": "Cards"
|
"",
|
||||||
|
"It is important to remember that the IHH has two thresholds:",
|
||||||
|
"* below 15, concentration is considered to be low",
|
||||||
|
"* above 25, it is considered to be high",
|
||||||
|
"",
|
||||||
|
"Thus, the higher a point is positioned in the top right of the graphs, the higher the risks.",
|
||||||
|
"The graphs present 2 horizontal and vertical lines to mark these thresholds."
|
||||||
|
],
|
||||||
|
"ihh_criticality": "Herfindahl-Hirschmann Index - IHH vs Criticality",
|
||||||
|
"ihh_criticality_desc": "The size of the points indicates the substitutability criticality of the mineral.",
|
||||||
|
"ihh_ivc": "Herfindahl-Hirschmann Index - IHH vs IVC",
|
||||||
|
"ihh_ivc_desc": "The size of the points indicates the competitive criticality of the mineral.",
|
||||||
|
"launch": "Launch",
|
||||||
|
"no_data": "No data to display.",
|
||||||
|
"categories": {
|
||||||
|
"assembly": "Assembly",
|
||||||
|
"manufacturing": "Manufacturing",
|
||||||
|
"processing": "Processing",
|
||||||
|
"extraction": "Extraction"
|
||||||
|
},
|
||||||
|
"axis_titles": {
|
||||||
|
"ihh_countries": "IHH Countries (%)",
|
||||||
|
"ihh_actors": "IHH Actors (%)",
|
||||||
|
"ihh_extraction": "IHH Extraction (%)",
|
||||||
|
"ihh_reserves": "IHH Reserves (%)"
|
||||||
|
},
|
||||||
|
"chart_titles": {
|
||||||
|
"concentration_criticality": "Concentration and Criticality – {0}",
|
||||||
|
"concentration_resources": "Concentration of Critical Resources vs IVC Vulnerability"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"pages": {
|
"fiches": {
|
||||||
"instructions": {
|
"title": "Card Discovery",
|
||||||
"title": "Instructions"
|
"help": "How to use this tab?",
|
||||||
},
|
"help_content": [
|
||||||
"personnalisation": {
|
"1. Browse the list of available cards by category",
|
||||||
"title": "Final Product Customization",
|
"2. Select a card to display its full content",
|
||||||
"help": "How to use this tab?",
|
"3. Consult detailed data, graphs, and additional analyses",
|
||||||
"help_content": [
|
"4. Use this information to deepen your understanding of the identified vulnerabilities",
|
||||||
"1. Click on \"Add a final product\" to create a new product",
|
"",
|
||||||
"2. Give your product a name",
|
"The categories are as follows:",
|
||||||
"3. Select an appropriate assembly operation (if relevant)",
|
"* Assembly: operation of assembling final products from components",
|
||||||
"4. Choose the components that make up your product from the list provided",
|
"* Related: various operations necessary to manufacture digital technology, but not directly entering its composition",
|
||||||
"5. Save your configuration for future reuse",
|
"* Criticalities: indices used to identify and evaluate vulnerabilities",
|
||||||
"6. You will be able to modify or delete your custom products later"
|
"* Manufacturing: operation of manufacturing components from minerals",
|
||||||
],
|
"* Mineral: description and operations of extraction and processing of minerals"
|
||||||
"add_new_product": "Add a new final product",
|
],
|
||||||
"new_product_name": "New product name (unique)",
|
"no_files": "No cards available at the moment.",
|
||||||
"assembly_operation": "Assembly operation (optional)",
|
"choose_category": "Choose a card category",
|
||||||
"product_exists": "This product already exists",
|
"select_folder": "-- Select a folder --",
|
||||||
"none": "-- None --",
|
"choose_file": "Choose a card",
|
||||||
"components_to_link": "Components to link",
|
"select_file": "-- Select a card --",
|
||||||
"create_product": "Create product",
|
"loading_error": "Error loading the card:",
|
||||||
"added": "added",
|
"download_pdf": "Download this card as PDF",
|
||||||
"modify_product": "Modify an added final product",
|
"pdf_unavailable": "The PDF file for this card is not available.",
|
||||||
"products_to_modify": "Products to modify",
|
"ticket_management": "Ticket management for this card",
|
||||||
"delete": "Delete",
|
"tickets": {
|
||||||
"linked_assembly_operation": "Linked assembly operation",
|
"create_new": "Create a new ticket linked to this card",
|
||||||
"components_linked_to": "Components linked to",
|
"model_load_error": "Unable to load the ticket template.",
|
||||||
"update": "Update",
|
"contribution_type": "Contribution type",
|
||||||
"updated": "updated",
|
"specify": "Specify",
|
||||||
"deleted": "deleted",
|
"other": "Other",
|
||||||
"save_restore_config": "Save or restore configuration",
|
"concerned_card": "Concerned card",
|
||||||
"export_config": "Export configuration",
|
"subject": "Subject of the proposal",
|
||||||
"download_json": "Download (JSON)",
|
"preview": "Preview ticket",
|
||||||
"import_config": "Import a JSON configuration (max 100 KB)",
|
|
||||||
"file_too_large": "File too large (max 100 KB).",
|
|
||||||
"no_products_found": "No products found in the file.",
|
|
||||||
"select_products_to_restore": "Select products to restore",
|
|
||||||
"products_to_restore": "Products to restore",
|
|
||||||
"restore_selected": "Restore selected items",
|
|
||||||
"config_restored": "Partial configuration successfully restored.",
|
|
||||||
"import_error": "Import error:"
|
|
||||||
},
|
|
||||||
"analyse": {
|
|
||||||
"title": "Graph Analysis",
|
|
||||||
"help": "How to use this tab?",
|
|
||||||
"help_content": [
|
|
||||||
"1. Select the starting level (final product, component, or mineral)",
|
|
||||||
"2. Choose the desired destination level",
|
|
||||||
"3. Refine your selection by specifying either one or more specific minerals to target or specific items at each level (optional)",
|
|
||||||
"4. Define the analysis criteria by selecting the relevant vulnerability indices",
|
|
||||||
"5. Choose the index combination mode (AND/OR) according to your analysis needs",
|
|
||||||
"6. Explore the generated graph using zoom and panning controls; you can switch to full screen mode for the graph"
|
|
||||||
],
|
|
||||||
"selection_nodes": "Selection of start and end nodes",
|
|
||||||
"select_level": "-- Select a level --",
|
|
||||||
"start_level": "Start level",
|
|
||||||
"end_level": "End level",
|
|
||||||
"select_minerals": "Select one or more minerals",
|
|
||||||
"filter_by_minerals": "Filter by minerals (optional)",
|
|
||||||
"fine_selection": "Fine selection of items",
|
|
||||||
"filter_start_nodes": "Filter by start nodes (optional)",
|
|
||||||
"filter_end_nodes": "Filter by end nodes (optional)",
|
|
||||||
"vulnerability_filters": "Selection of filters to identify vulnerabilities",
|
|
||||||
"filter_ics": "Filter paths containing at least one critical mineral for a component (ICS > 66%)",
|
|
||||||
"filter_ivc": "Filter paths containing at least one critical mineral in relation to sectoral competition (IVC > 30)",
|
|
||||||
"filter_ihh": "Filter paths containing at least one critical operation in relation to geographical or industrial concentration (IHH countries or actors > 25)",
|
|
||||||
"apply_ihh_filter": "Apply IHH filter on:",
|
|
||||||
"countries": "Countries",
|
|
||||||
"actors": "Actors",
|
|
||||||
"filter_isg": "Filter paths containing an unstable country (ISG ≥ 60)",
|
|
||||||
"filter_logic": "Filter logic",
|
|
||||||
"or": "OR",
|
|
||||||
"and": "AND",
|
|
||||||
"run_analysis": "Run analysis",
|
|
||||||
"sankey": {
|
|
||||||
"no_paths": "No paths found for the specified criteria.",
|
|
||||||
"no_matching_paths": "No paths match the criteria.",
|
|
||||||
"filtered_hierarchy": "Hierarchy filtered by levels and nodes",
|
|
||||||
"download_dot": "Download filtered DOT file",
|
|
||||||
"relation": "Relation"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ia_nalyse": {
|
|
||||||
"title": "Graph Analysis by AI",
|
|
||||||
"help": "How to use this tab?",
|
|
||||||
"help_content": [
|
|
||||||
"The graph covers all levels, from end products to geographic countries.\n",
|
|
||||||
"1. You can select minerals through which the paths go.",
|
|
||||||
"2. You can choose end products to perform an analysis tailored to your context.\n",
|
|
||||||
"These two selections are optional, but strongly recommended for a more relevant analysis.",
|
|
||||||
"The analysis is carried out using a private AI on a minimalist server. The result is therefore not immediate (approximately 30 minutes) and you will be notified of the progress."
|
|
||||||
],
|
|
||||||
"select_minerals": "Select one or more minerals",
|
|
||||||
"filter_by_minerals": "Filter by minerals (optional, but highly recommended)",
|
|
||||||
"fine_selection": "End product selection",
|
|
||||||
"filter_start_nodes": "Filter by start nodes (optional, but recommended)",
|
|
||||||
"run_analysis": "Run analysis",
|
|
||||||
"confirm_download": "Confirm download",
|
|
||||||
"submit_request": "Submit your request",
|
|
||||||
"empty_graph": "The graph is empty. Please make another selection."
|
|
||||||
},
|
|
||||||
"plan_d_action": {
|
|
||||||
"title": "Graph analysis for action",
|
|
||||||
"help": "How to use this tab?",
|
|
||||||
"help_content": [
|
|
||||||
"The graph covers all levels, from end products to geographic countries.\n",
|
|
||||||
"1. You can select minerals through which the paths go.",
|
|
||||||
"2. You can choose end products to perform an analysis tailored to your context.\n",
|
|
||||||
"These two selections are optional, but strongly recommended for a more relevant analysis.",
|
|
||||||
"The recommendations for actions and indicator monitoring are generic. They must therefore be adapted to the context.",
|
|
||||||
"The proposed actions or indicators depend on the type of organization concerned and can be applied directly or required of digital providers."
|
|
||||||
],
|
|
||||||
"select_minerals": "Select one or more minerals",
|
|
||||||
"filter_by_minerals": "Filter by minerals (optional, but highly recommended)",
|
|
||||||
"fine_selection": "End product selection",
|
|
||||||
"filter_start_nodes": "Filter by start nodes",
|
|
||||||
"run_analysis": "Run analysis",
|
|
||||||
"confirm_download": "Confirm download",
|
|
||||||
"submit_request": "Submit your request",
|
|
||||||
"empty_graph": "The graph is empty. Please make another selection."
|
|
||||||
},
|
|
||||||
"visualisations": {
|
|
||||||
"title": "Visualizations",
|
|
||||||
"help": "How to use this tab?",
|
|
||||||
"help_content": [
|
|
||||||
"1. Explore the graphs presenting the Herfindahl-Hirschmann Index (IHH)",
|
|
||||||
"2. Analyze its relationship with the average criticality of minerals or their Competitive Vulnerability Index (IVC)",
|
|
||||||
"3. Zoom in on the graphs to better discover the information",
|
|
||||||
"",
|
|
||||||
"It is important to remember that the IHH has two thresholds:",
|
|
||||||
"* below 15, concentration is considered to be low",
|
|
||||||
"* above 25, it is considered to be high",
|
|
||||||
"",
|
|
||||||
"Thus, the higher a point is positioned in the top right of the graphs, the higher the risks.",
|
|
||||||
"The graphs present 2 horizontal and vertical lines to mark these thresholds."
|
|
||||||
],
|
|
||||||
"ihh_criticality": "Herfindahl-Hirschmann Index - IHH vs Criticality",
|
|
||||||
"ihh_criticality_desc": "The size of the points indicates the substitutability criticality of the mineral.",
|
|
||||||
"ihh_ivc": "Herfindahl-Hirschmann Index - IHH vs IVC",
|
|
||||||
"ihh_ivc_desc": "The size of the points indicates the competitive criticality of the mineral.",
|
|
||||||
"launch": "Launch",
|
|
||||||
"no_data": "No data to display.",
|
|
||||||
"categories": {
|
|
||||||
"assembly": "Assembly",
|
|
||||||
"manufacturing": "Manufacturing",
|
|
||||||
"processing": "Processing",
|
|
||||||
"extraction": "Extraction"
|
|
||||||
},
|
|
||||||
"axis_titles": {
|
|
||||||
"ihh_countries": "IHH Countries (%)",
|
|
||||||
"ihh_actors": "IHH Actors (%)",
|
|
||||||
"ihh_extraction": "IHH Extraction (%)",
|
|
||||||
"ihh_reserves": "IHH Reserves (%)"
|
|
||||||
},
|
|
||||||
"chart_titles": {
|
|
||||||
"concentration_criticality": "Concentration and Criticality – {0}",
|
|
||||||
"concentration_resources": "Concentration of Critical Resources vs IVC Vulnerability"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fiches": {
|
|
||||||
"title": "Card Discovery",
|
|
||||||
"help": "How to use this tab?",
|
|
||||||
"help_content": [
|
|
||||||
"1. Browse the list of available cards by category",
|
|
||||||
"2. Select a card to display its full content",
|
|
||||||
"3. Consult detailed data, graphs, and additional analyses",
|
|
||||||
"4. Use this information to deepen your understanding of the identified vulnerabilities",
|
|
||||||
"",
|
|
||||||
"The categories are as follows:",
|
|
||||||
"* Assembly: operation of assembling final products from components",
|
|
||||||
"* Related: various operations necessary to manufacture digital technology, but not directly entering its composition",
|
|
||||||
"* Criticalities: indices used to identify and evaluate vulnerabilities",
|
|
||||||
"* Manufacturing: operation of manufacturing components from minerals",
|
|
||||||
"* Mineral: description and operations of extraction and processing of minerals"
|
|
||||||
],
|
|
||||||
"no_files": "No cards available at the moment.",
|
|
||||||
"choose_category": "Choose a card category",
|
|
||||||
"select_folder": "-- Select a folder --",
|
|
||||||
"choose_file": "Choose a card",
|
|
||||||
"select_file": "-- Select a card --",
|
|
||||||
"loading_error": "Error loading the card:",
|
|
||||||
"download_pdf": "Download this card as PDF",
|
|
||||||
"pdf_unavailable": "The PDF file for this card is not available.",
|
|
||||||
"ticket_management": "Ticket management for this card",
|
|
||||||
"tickets": {
|
|
||||||
"create_new": "Create a new ticket linked to this card",
|
|
||||||
"model_load_error": "Unable to load the ticket template.",
|
|
||||||
"contribution_type": "Contribution type",
|
|
||||||
"specify": "Specify",
|
|
||||||
"other": "Other",
|
|
||||||
"concerned_card": "Concerned card",
|
|
||||||
"subject": "Subject of the proposal",
|
|
||||||
"preview": "Preview ticket",
|
|
||||||
"cancel": "Cancel",
|
|
||||||
"preview_title": "Ticket preview",
|
|
||||||
"summary": "Summary",
|
|
||||||
"title": "Title",
|
|
||||||
"labels": "Labels",
|
|
||||||
"confirm": "Confirm ticket creation",
|
|
||||||
"created": "Ticket created and form cleared.",
|
|
||||||
"model_error": "Template loading error:",
|
|
||||||
"no_linked_tickets": "No tickets linked to this card.",
|
|
||||||
"associated_tickets": "Tickets associated with this card",
|
|
||||||
"moderation_notice": "ticket(s) awaiting moderation are not displayed.",
|
|
||||||
"status": {
|
|
||||||
"awaiting": "Awaiting processing",
|
|
||||||
"in_progress": "In progress",
|
|
||||||
"completed": "Completed",
|
|
||||||
"rejected": "Rejected",
|
|
||||||
"others": "Others"
|
|
||||||
},
|
|
||||||
"no_title": "No title",
|
|
||||||
"unknown": "unknown",
|
|
||||||
"subject_label": "Subject",
|
|
||||||
"no_labels": "none",
|
|
||||||
"comments": "Comment(s):",
|
|
||||||
"no_comments": "No comments.",
|
|
||||||
"comment_error": "Error retrieving comments:",
|
|
||||||
"opened_by": "Opened by",
|
|
||||||
"on_date": "on",
|
|
||||||
"updated": "UPDATED",
|
|
||||||
"continue": "Continuer",
|
|
||||||
"created_success": "Ticket created and placed in moderation",
|
|
||||||
"created_error": "Ticket creation failed. Please try later",
|
|
||||||
"see_ticket": "See ticket"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_levels": {
|
|
||||||
"0": "Final product",
|
|
||||||
"1": "Component",
|
|
||||||
"2": "Mineral",
|
|
||||||
"10": "Operation",
|
|
||||||
"11": "Operation country",
|
|
||||||
"12": "Operation actor",
|
|
||||||
"99": "Geographic country"
|
|
||||||
},
|
|
||||||
"errors": {
|
|
||||||
"log_read_error": "Log reading error:",
|
|
||||||
"graph_preview_error": "Graph preview error:",
|
|
||||||
"graph_creation_error": "Error creating the graph:",
|
|
||||||
"ihh_criticality_error": "Error in IHH vs Criticality visualization:",
|
|
||||||
"ihh_ivc_error": "Error in IHH vs IVC visualization:",
|
|
||||||
"comment_fetch_error": "Error retrieving comments:",
|
|
||||||
"template_load_error": "Template loading error:",
|
|
||||||
"import_error": "Import error:"
|
|
||||||
},
|
|
||||||
"buttons": {
|
|
||||||
"download": "Download",
|
|
||||||
"run": "Run",
|
|
||||||
"save": "Save",
|
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
"confirm": "Confirm",
|
"preview_title": "Ticket preview",
|
||||||
"filter": "Filter",
|
"summary": "Summary",
|
||||||
"search": "Search",
|
"title": "Title",
|
||||||
"create": "Create",
|
"labels": "Labels",
|
||||||
"update": "Update",
|
"confirm": "Confirm ticket creation",
|
||||||
"delete": "Delete",
|
"created": "Ticket created and form cleared.",
|
||||||
"preview": "Preview",
|
"model_error": "Template loading error:",
|
||||||
"export": "Export",
|
"no_linked_tickets": "No tickets linked to this card.",
|
||||||
"import": "Import",
|
"associated_tickets": "Tickets associated with this card",
|
||||||
"restore": "Restore",
|
"moderation_notice": "ticket(s) awaiting moderation are not displayed.",
|
||||||
"refresh": "Refresh",
|
"status": {
|
||||||
"browse_files": "Browse files"
|
"awaiting": "Awaiting processing",
|
||||||
},
|
"in_progress": "In progress",
|
||||||
"ui": {
|
"completed": "Completed",
|
||||||
"file_uploader": {
|
"rejected": "Rejected",
|
||||||
"drag_drop_here": "Drag and drop file here",
|
"others": "Others"
|
||||||
"size_limit": "100 KB limit per file • JSON"
|
},
|
||||||
}
|
"no_title": "No title",
|
||||||
},
|
"unknown": "unknown",
|
||||||
"batch": {
|
"subject_label": "Subject",
|
||||||
"in_queue": "In queue",
|
"no_labels": "none",
|
||||||
"in_progress": "Analysis in progress",
|
"comments": "Comment(s):",
|
||||||
"failure": "Error",
|
"no_comments": "No comments.",
|
||||||
"unknwon_error": "unknown error",
|
"comment_error": "Error retrieving comments:",
|
||||||
"no_task": "No task wainting or in progress",
|
"opened_by": "Opened by",
|
||||||
"complete": "Analysis complete. Download the result in zip format, which contains the detailed report and analysis.",
|
"on_date": "on",
|
||||||
"step": "Step"
|
"updated": "UPDATED",
|
||||||
|
"continue": "Continuer",
|
||||||
|
"created_success": "Ticket created and placed in moderation",
|
||||||
|
"created_error": "Ticket creation failed. Please try later",
|
||||||
|
"see_ticket": "See ticket"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_levels": {
|
||||||
|
"0": "Final product",
|
||||||
|
"1": "Component",
|
||||||
|
"2": "Mineral",
|
||||||
|
"10": "Operation",
|
||||||
|
"11": "Operation country",
|
||||||
|
"12": "Operation actor",
|
||||||
|
"99": "Geographic country"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"log_read_error": "Log reading error:",
|
||||||
|
"graph_preview_error": "Graph preview error:",
|
||||||
|
"graph_creation_error": "Error creating the graph:",
|
||||||
|
"ihh_criticality_error": "Error in IHH vs Criticality visualization:",
|
||||||
|
"ihh_ivc_error": "Error in IHH vs IVC visualization:",
|
||||||
|
"comment_fetch_error": "Error retrieving comments:",
|
||||||
|
"template_load_error": "Template loading error:",
|
||||||
|
"import_error": "Import error:"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"download": "Download",
|
||||||
|
"run": "Run",
|
||||||
|
"save": "Save",
|
||||||
|
"cancel": "Cancel",
|
||||||
|
"confirm": "Confirm",
|
||||||
|
"filter": "Filter",
|
||||||
|
"search": "Search",
|
||||||
|
"create": "Create",
|
||||||
|
"update": "Update",
|
||||||
|
"delete": "Delete",
|
||||||
|
"preview": "Preview",
|
||||||
|
"export": "Export",
|
||||||
|
"import": "Import",
|
||||||
|
"restore": "Restore",
|
||||||
|
"refresh": "Refresh",
|
||||||
|
"browse_files": "Browse files"
|
||||||
|
},
|
||||||
|
"ui": {
|
||||||
|
"file_uploader": {
|
||||||
|
"drag_drop_here": "Drag and drop file here",
|
||||||
|
"size_limit": "100 KB limit per file • JSON"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"batch": {
|
||||||
|
"in_queue": "In queue",
|
||||||
|
"in_progress": "Analysis in progress",
|
||||||
|
"failure": "Error",
|
||||||
|
"unknwon_error": "unknown error",
|
||||||
|
"no_task": "No task wainting or in progress",
|
||||||
|
"complete": "Analysis complete. Download the result in zip format, which contains the detailed report and analysis.",
|
||||||
|
"step": "Step"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,332 +1,332 @@
|
|||||||
{
|
{
|
||||||
"app": {
|
"app": {
|
||||||
"title": "Fabnum – Analyse de chaîne",
|
"title": "Fabnum – Analyse de chaîne",
|
||||||
"description": "Parcours de l'écosystème et identification des vulnérabilités.",
|
"description": "Parcours de l'écosystème et identification des vulnérabilités.",
|
||||||
"dev_mode": "Vous êtes dans l'environnement de développement."
|
"dev_mode": "Vous êtes dans l'environnement de développement."
|
||||||
|
},
|
||||||
|
"header": {
|
||||||
|
"title": "FabNum - Chaîne de fabrication du numérique",
|
||||||
|
"subtitle": "Parcours de l'écosystème et identification des vulnérabilités.\n-> Ce site est encore en cours de développement <-"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"copyright": "FabNum@Polycrisis Observatory © 2025",
|
||||||
|
"contact": "Contact",
|
||||||
|
"license": "Licence",
|
||||||
|
"license_text": "CC BY-NC-ND",
|
||||||
|
"eco_note": "🌱 Calculs CO₂ via",
|
||||||
|
"eco_provider": "The Green Web Foundation",
|
||||||
|
"powered_by": "🚀 Propulsé par",
|
||||||
|
"powered_by_name": "Streamlit"
|
||||||
|
},
|
||||||
|
"sidebar": {
|
||||||
|
"menu": "Menu principal",
|
||||||
|
"navigation": "Navigation principale",
|
||||||
|
"theme": "Thème",
|
||||||
|
"theme_light": "Clair",
|
||||||
|
"theme_dark": "Sombre",
|
||||||
|
"theme_instructions_only": "Le changement de thème ne peut se faire que depuis l'onglet Instructions.",
|
||||||
|
"impact": "Impact environnemental",
|
||||||
|
"loading": "Chargement en cours…"
|
||||||
|
},
|
||||||
|
"auth": {
|
||||||
|
"title": "Authentification",
|
||||||
|
"username": "Identifiant_token",
|
||||||
|
"token": "Token d'accès personnel Gitea",
|
||||||
|
"login": "Se connecter",
|
||||||
|
"logout": "Se déconnecter",
|
||||||
|
"logged_as": "Connecté en tant que",
|
||||||
|
"error": "❌ Accès refusé.",
|
||||||
|
"gitea_error": "❌ Impossible de vérifier l'utilisateur auprès de Gitea.",
|
||||||
|
"success": "Déconnecté avec succès."
|
||||||
|
},
|
||||||
|
"navigation": {
|
||||||
|
"instructions": "Instructions",
|
||||||
|
"personnalisation": "Personnalisation",
|
||||||
|
"analyse": "Analyse",
|
||||||
|
"ia_nalyse": "IA'nalyse",
|
||||||
|
"plan_d_action": "Plan d'action",
|
||||||
|
"visualisations": "Visualisations",
|
||||||
|
"fiches": "Fiches"
|
||||||
|
},
|
||||||
|
"pages": {
|
||||||
|
"instructions": {
|
||||||
|
"title": "Instructions"
|
||||||
},
|
},
|
||||||
"header": {
|
"personnalisation": {
|
||||||
"title": "FabNum - Chaîne de fabrication du numérique",
|
"title": "Personnalisation des produits finaux",
|
||||||
"subtitle": "Parcours de l'écosystème et identification des vulnérabilités."
|
"help": "Comment utiliser cet onglet ?",
|
||||||
|
"help_content": [
|
||||||
|
"1. Cliquez sur « Ajouter un produit final » pour créer un nouveau produit",
|
||||||
|
"2. Donnez un nom à votre produit",
|
||||||
|
"3. Sélectionnez une opération d'assemblage appropriée (si pertinent)",
|
||||||
|
"4. Choisissez les composants qui constituent votre produit dans la liste proposée",
|
||||||
|
"5. Sauvegardez votre configuration pour une réutilisation future",
|
||||||
|
"6. Vous pourrez par la suite modifier ou supprimer vos produits personnalisés"
|
||||||
|
],
|
||||||
|
"add_new_product": "Ajouter un nouveau produit final",
|
||||||
|
"new_product_name": "Nom du nouveau produit (unique)",
|
||||||
|
"assembly_operation": "Opération d'assemblage (optionnelle)",
|
||||||
|
"product_exists": "Ce produit existe déjà.",
|
||||||
|
"none": "-- Aucune --",
|
||||||
|
"components_to_link": "Composants à lier",
|
||||||
|
"create_product": "Créer le produit",
|
||||||
|
"added": "ajouté",
|
||||||
|
"modify_product": "Modifier un produit final ajouté",
|
||||||
|
"products_to_modify": "Produits à modifier",
|
||||||
|
"delete": "Supprimer",
|
||||||
|
"linked_assembly_operation": "Opération d'assemblage liée",
|
||||||
|
"components_linked_to": "Composants liés à",
|
||||||
|
"update": "Mettre à jour",
|
||||||
|
"updated": "mis à jour",
|
||||||
|
"deleted": "supprimé",
|
||||||
|
"save_restore_config": "Sauvegarder ou restaurer la configuration",
|
||||||
|
"export_config": "Exporter configuration",
|
||||||
|
"download_json": "Télécharger (JSON)",
|
||||||
|
"import_config": "Importer une configuration JSON (max 100 Ko)",
|
||||||
|
"file_too_large": "Fichier trop volumineux (max 100 Ko).",
|
||||||
|
"no_products_found": "Aucun produit trouvé dans le fichier.",
|
||||||
|
"select_products_to_restore": "Sélection des produits à restaurer",
|
||||||
|
"products_to_restore": "Produits à restaurer",
|
||||||
|
"restore_selected": "Restaurer les éléments sélectionnés",
|
||||||
|
"config_restored": "Configuration partielle restaurée avec succès.",
|
||||||
|
"import_error": "Erreur d'import :"
|
||||||
},
|
},
|
||||||
"footer": {
|
"analyse": {
|
||||||
"copyright": "Fabnum © 2025",
|
"title": "Analyse du graphe",
|
||||||
"contact": "Contact",
|
"help": "Comment utiliser cet onglet ?",
|
||||||
"license": "Licence",
|
"help_content": [
|
||||||
"license_text": "CC BY-NC-ND",
|
"1. Sélectionnez le niveau de départ (produit final, composant ou minerai)",
|
||||||
"eco_note": "🌱 Calculs CO₂ via",
|
"2. Choisissez le niveau d'arrivée souhaité",
|
||||||
"eco_provider": "The Green Web Foundation",
|
"3. Affinez votre sélection en spécifiant soit un ou des minerais à cibler spécifiquement ou des items précis à chaque niveau (optionnel)",
|
||||||
"powered_by": "🚀 Propulsé par",
|
"4. Définissez les critères d'analyse en sélectionnant les indices de vulnérabilité pertinents",
|
||||||
"powered_by_name": "Streamlit"
|
"5. Choisissez le mode de combinaison des indices (ET/OU) selon votre besoin d'analyse",
|
||||||
|
"6. Explorez le graphique généré en utilisant les contrôles de zoom et de déplacement ; vous pouvez basculer en mode plein écran pour le graphe"
|
||||||
|
],
|
||||||
|
"selection_nodes": "Sélection des nœuds de départ et d'arrivée",
|
||||||
|
"select_level": "-- Sélectionner un niveau --",
|
||||||
|
"start_level": "Niveau de départ",
|
||||||
|
"end_level": "Niveau d'arrivée",
|
||||||
|
"select_minerals": "Sélectionner un ou plusieurs minerais",
|
||||||
|
"filter_by_minerals": "Filtrer par minerais (optionnel)",
|
||||||
|
"fine_selection": "Sélection fine des items",
|
||||||
|
"filter_start_nodes": "Filtrer par noeuds de départ (optionnel)",
|
||||||
|
"filter_end_nodes": "Filtrer par noeuds d'arrivée (optionnel)",
|
||||||
|
"vulnerability_filters": "Sélection des filtres pour identifier les vulnérabilités",
|
||||||
|
"filter_ics": "Filtrer les chemins contenant au moins minerai critique pour un composant (ICS > 66 %)",
|
||||||
|
"filter_ivc": "Filtrer les chemins contenant au moins un minerai critique par rapport à la concurrence sectorielle (IVC > 30)",
|
||||||
|
"filter_ihh": "Filtrer les chemins contenant au moins une opération critique par rapport à la concentration géographique ou industrielle (IHH pays ou acteurs > 25)",
|
||||||
|
"apply_ihh_filter": "Appliquer le filtre IHH sur :",
|
||||||
|
"countries": "Pays",
|
||||||
|
"actors": "Acteurs",
|
||||||
|
"filter_isg": "Filtrer les chemins contenant un pays instable (ISG ≥ 60)",
|
||||||
|
"filter_logic": "Logique de filtrage",
|
||||||
|
"or": "OU",
|
||||||
|
"and": "ET",
|
||||||
|
"run_analysis": "Lancer l'analyse",
|
||||||
|
"sankey": {
|
||||||
|
"no_paths": "Aucun chemin trouvé pour les critères spécifiés.",
|
||||||
|
"no_matching_paths": "Aucun chemin ne correspond aux critères.",
|
||||||
|
"filtered_hierarchy": "Hiérarchie filtrée par niveaux et noeuds",
|
||||||
|
"download_dot": "Télécharger le fichier DOT filtré",
|
||||||
|
"relation": "Relation"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"sidebar": {
|
"ia_nalyse": {
|
||||||
"menu": "Menu principal",
|
"title": "Analyse du graphe par IA",
|
||||||
"navigation": "Navigation principale",
|
"help": "Comment utiliser cet onglet ?",
|
||||||
"theme": "Thème",
|
"help_content": [
|
||||||
"theme_light": "Clair",
|
"Le graphe intègre l'ensemble des niveaux, des produits finaux aux pays géographiques.\n",
|
||||||
"theme_dark": "Sombre",
|
"1. Vous pouvez sélectionner des minerais par lesquels passent les chemins.",
|
||||||
"theme_instructions_only": "Le changement de thème ne peut se faire que depuis l'onglet Instructions.",
|
"2. Vous pouvez choisir des produits finaux pour faire une analyse adaptée à votre contexte.\n",
|
||||||
"impact": "Impact environnemental",
|
" Ces deux sélections sont optionnelles, mais fortement recommandées pour avoir une meilleure pertinence de l'analyse.",
|
||||||
"loading": "Chargement en cours…"
|
"L'analyse se réalise à l'aide d'une IA privée, sur un serveur minimaliste. Le résultat n'est donc pas immédiat (ordre de grandeur : 30 minutes) et vous serez informé de l'avancement."
|
||||||
|
],
|
||||||
|
"select_minerals": "Sélectionner un ou plusieurs minerais",
|
||||||
|
"filter_by_minerals": "Filtrer par minerais (optionnel, mais recommandé)",
|
||||||
|
"fine_selection": "Sélection des produits finaux",
|
||||||
|
"filter_start_nodes": "Filtrer par noeuds de départ (optionnel, mais recommandé)",
|
||||||
|
"run_analysis": "Lancer l'analyse",
|
||||||
|
"confirm_download": "Confirmer le téléchargement",
|
||||||
|
"submit_request": "Soumettre votre demande",
|
||||||
|
"empty_graph": "Le graphe est vide. Veuillez faire une autre sélection."
|
||||||
},
|
},
|
||||||
"auth": {
|
"plan_d_action": {
|
||||||
"title": "Authentification",
|
"title": "Analyse du graphe pour action",
|
||||||
"username": "Identifiant_token",
|
"help": "Comment utiliser cet onglet ?",
|
||||||
"token": "Token d'accès personnel Gitea",
|
"help_content": [
|
||||||
"login": "Se connecter",
|
"Le graphe intègre l'ensemble des niveaux, des produits finaux aux pays géographiques.\n",
|
||||||
"logout": "Se déconnecter",
|
"1. Vous pouvez sélectionner des minerais par lesquels passent les chemins.",
|
||||||
"logged_as": "Connecté en tant que",
|
"2. Vous pouvez choisir des produits finaux pour faire une analyse adaptée à votre contexte.\n",
|
||||||
"error": "❌ Accès refusé.",
|
" Ces deux sélections sont optionnelles, mais fortement recommandées pour avoir une meilleure pertinence de l'analyse.",
|
||||||
"gitea_error": "❌ Impossible de vérifier l'utilisateur auprès de Gitea.",
|
"Les préconisations d'actions et de suivi d'indicateurs sont génériques. Elles doivent donc être adaptées au contexte.",
|
||||||
"success": "Déconnecté avec succès."
|
"Les actions ou les indicateurs proposés dépendent du type d'organisation concernée et peuvent être appliquées directement ou exigées des fournisseurs de numérique."
|
||||||
|
],
|
||||||
|
"select_minerals": "Sélectionner un ou plusieurs minerais",
|
||||||
|
"filter_by_minerals": "Filtrer par minerais (optionnel, mais recommandé)",
|
||||||
|
"fine_selection": "Sélection des produits finaux",
|
||||||
|
"filter_start_nodes": "Filtrer par noeuds de départ",
|
||||||
|
"run_analysis": "Lancer l'analyse",
|
||||||
|
"confirm_download": "Confirmer le téléchargement",
|
||||||
|
"submit_request": "Soumettre votre demande",
|
||||||
|
"empty_graph": "Le graphe est vide. Veuillez faire une autre sélection."
|
||||||
},
|
},
|
||||||
"navigation": {
|
"visualisations": {
|
||||||
"instructions": "Instructions",
|
"title": "Visualisations",
|
||||||
"personnalisation": "Personnalisation",
|
"help": "Comment utiliser cet onglet ?",
|
||||||
"analyse": "Analyse",
|
"help_content": [
|
||||||
"ia_nalyse": "IA'nalyse",
|
"1. Explorez les graphiques présentant l'Indice de Herfindahl-Hirschmann (IHH)",
|
||||||
"plan_d_action": "Plan d'action",
|
"2. Analysez sa relation avec la criticité moyenne des minerais ou leur Indice de Vulnérabilité Concurrentielle (IVC)",
|
||||||
"visualisations": "Visualisations",
|
"3. Zoomer dans les graphes pour mieux découvrir les informations",
|
||||||
"fiches": "Fiches"
|
"",
|
||||||
|
"Il est important de se rappeler que l'IHH a deux seuils :",
|
||||||
|
"* en-dessous de 15, la concentration est considérée comme étant faible",
|
||||||
|
"* au-dessus de 25, elle est considérée comme étant forte",
|
||||||
|
"",
|
||||||
|
"Ainsi plus le positionnement d'un point est en haut à droite des graphiques, plus les risques sont élevés.",
|
||||||
|
"Les graphiques présentent 2 droites horizontales et vetrticales pour matérialiser ces seuils."
|
||||||
|
],
|
||||||
|
"ihh_criticality": "Indice de Herfindahl-Hirschmann - IHH vs Criticité",
|
||||||
|
"ihh_criticality_desc": "La taille des points donne l'indication de la criticité de substituabilité du minerai.",
|
||||||
|
"ihh_ivc": "Indice de Herfindahl-Hirschmann - IHH vs IVC",
|
||||||
|
"ihh_ivc_desc": "La taille des points donne l'indication de la criticité concurrentielle du minerai.",
|
||||||
|
"launch": "Lancer",
|
||||||
|
"no_data": "Aucune donnée à visualiser.",
|
||||||
|
"categories": {
|
||||||
|
"assembly": "Assemblage",
|
||||||
|
"manufacturing": "Fabrication",
|
||||||
|
"processing": "Traitement",
|
||||||
|
"extraction": "Extraction"
|
||||||
|
},
|
||||||
|
"axis_titles": {
|
||||||
|
"ihh_countries": "IHH Pays (%)",
|
||||||
|
"ihh_actors": "IHH Acteurs (%)",
|
||||||
|
"ihh_extraction": "IHH Extraction (%)",
|
||||||
|
"ihh_reserves": "IHH Réserves (%)"
|
||||||
|
},
|
||||||
|
"chart_titles": {
|
||||||
|
"concentration_criticality": "Concentration et criticité – {0}",
|
||||||
|
"concentration_resources": "Concentration des ressources critiques vs vulnérabilité IVC"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"pages": {
|
"fiches": {
|
||||||
"instructions": {
|
"title": "Découverte des fiches",
|
||||||
"title": "Instructions"
|
"help": "Comment utiliser cet onglet ?",
|
||||||
},
|
"help_content": [
|
||||||
"personnalisation": {
|
"1. Parcourez la liste des fiches disponibles par catégorie",
|
||||||
"title": "Personnalisation des produits finaux",
|
"2. Sélectionnez une fiche pour afficher son contenu complet",
|
||||||
"help": "Comment utiliser cet onglet ?",
|
"3. Consultez les données détaillées, graphiques et analyses supplémentaires",
|
||||||
"help_content": [
|
"4. Utilisez ces informations pour approfondir votre compréhension des vulnérabilités identifiées",
|
||||||
"1. Cliquez sur « Ajouter un produit final » pour créer un nouveau produit",
|
"",
|
||||||
"2. Donnez un nom à votre produit",
|
"Les catégories sont les suivantes :",
|
||||||
"3. Sélectionnez une opération d'assemblage appropriée (si pertinent)",
|
"* Assemblage : opération d'assemblage des produits finaux à partir des composants",
|
||||||
"4. Choisissez les composants qui constituent votre produit dans la liste proposée",
|
"* Connexe : opérations diverses nécessaires pour fabriquer le numérique, mais n'entrant pas directement dans sa composition",
|
||||||
"5. Sauvegardez votre configuration pour une réutilisation future",
|
"* Criticités : indices utilisés pour identifier et évaluer les vulnérabilités",
|
||||||
"6. Vous pourrez par la suite modifier ou supprimer vos produits personnalisés"
|
"* Fabrication : opération de fabrication des composants à partir de minerais",
|
||||||
],
|
"* Minerai : description et opérations d'extraction et de traitement des minerais"
|
||||||
"add_new_product": "Ajouter un nouveau produit final",
|
],
|
||||||
"new_product_name": "Nom du nouveau produit (unique)",
|
"no_files": "Aucune fiche disponible pour le moment.",
|
||||||
"assembly_operation": "Opération d'assemblage (optionnelle)",
|
"choose_category": "Choisissez une catégorie de fiches",
|
||||||
"product_exists": "Ce produit existe déjà.",
|
"select_folder": "-- Sélectionner un dossier --",
|
||||||
"none": "-- Aucune --",
|
"choose_file": "Choisissez une fiche",
|
||||||
"components_to_link": "Composants à lier",
|
"select_file": "-- Sélectionner une fiche --",
|
||||||
"create_product": "Créer le produit",
|
"loading_error": "Erreur lors du chargement de la fiche :",
|
||||||
"added": "ajouté",
|
"download_pdf": "Télécharger cette fiche en PDF",
|
||||||
"modify_product": "Modifier un produit final ajouté",
|
"pdf_unavailable": "Le fichier PDF de cette fiche n'est pas disponible.",
|
||||||
"products_to_modify": "Produits à modifier",
|
"ticket_management": "Gestion des tickets pour cette fiche",
|
||||||
"delete": "Supprimer",
|
"tickets": {
|
||||||
"linked_assembly_operation": "Opération d'assemblage liée",
|
"create_new": "Créer un nouveau ticket lié à cette fiche",
|
||||||
"components_linked_to": "Composants liés à",
|
"model_load_error": "Impossible de charger le modèle de ticket.",
|
||||||
"update": "Mettre à jour",
|
"contribution_type": "Type de contribution",
|
||||||
"updated": "mis à jour",
|
"specify": "Précisez",
|
||||||
"deleted": "supprimé",
|
"other": "Autre",
|
||||||
"save_restore_config": "Sauvegarder ou restaurer la configuration",
|
"concerned_card": "Fiche concernée",
|
||||||
"export_config": "Exporter configuration",
|
"subject": "Sujet de la proposition",
|
||||||
"download_json": "Télécharger (JSON)",
|
"preview": "Prévisualiser le ticket",
|
||||||
"import_config": "Importer une configuration JSON (max 100 Ko)",
|
|
||||||
"file_too_large": "Fichier trop volumineux (max 100 Ko).",
|
|
||||||
"no_products_found": "Aucun produit trouvé dans le fichier.",
|
|
||||||
"select_products_to_restore": "Sélection des produits à restaurer",
|
|
||||||
"products_to_restore": "Produits à restaurer",
|
|
||||||
"restore_selected": "Restaurer les éléments sélectionnés",
|
|
||||||
"config_restored": "Configuration partielle restaurée avec succès.",
|
|
||||||
"import_error": "Erreur d'import :"
|
|
||||||
},
|
|
||||||
"analyse": {
|
|
||||||
"title": "Analyse du graphe",
|
|
||||||
"help": "Comment utiliser cet onglet ?",
|
|
||||||
"help_content": [
|
|
||||||
"1. Sélectionnez le niveau de départ (produit final, composant ou minerai)",
|
|
||||||
"2. Choisissez le niveau d'arrivée souhaité",
|
|
||||||
"3. Affinez votre sélection en spécifiant soit un ou des minerais à cibler spécifiquement ou des items précis à chaque niveau (optionnel)",
|
|
||||||
"4. Définissez les critères d'analyse en sélectionnant les indices de vulnérabilité pertinents",
|
|
||||||
"5. Choisissez le mode de combinaison des indices (ET/OU) selon votre besoin d'analyse",
|
|
||||||
"6. Explorez le graphique généré en utilisant les contrôles de zoom et de déplacement ; vous pouvez basculer en mode plein écran pour le graphe"
|
|
||||||
],
|
|
||||||
"selection_nodes": "Sélection des nœuds de départ et d'arrivée",
|
|
||||||
"select_level": "-- Sélectionner un niveau --",
|
|
||||||
"start_level": "Niveau de départ",
|
|
||||||
"end_level": "Niveau d'arrivée",
|
|
||||||
"select_minerals": "Sélectionner un ou plusieurs minerais",
|
|
||||||
"filter_by_minerals": "Filtrer par minerais (optionnel)",
|
|
||||||
"fine_selection": "Sélection fine des items",
|
|
||||||
"filter_start_nodes": "Filtrer par noeuds de départ (optionnel)",
|
|
||||||
"filter_end_nodes": "Filtrer par noeuds d'arrivée (optionnel)",
|
|
||||||
"vulnerability_filters": "Sélection des filtres pour identifier les vulnérabilités",
|
|
||||||
"filter_ics": "Filtrer les chemins contenant au moins minerai critique pour un composant (ICS > 66 %)",
|
|
||||||
"filter_ivc": "Filtrer les chemins contenant au moins un minerai critique par rapport à la concurrence sectorielle (IVC > 30)",
|
|
||||||
"filter_ihh": "Filtrer les chemins contenant au moins une opération critique par rapport à la concentration géographique ou industrielle (IHH pays ou acteurs > 25)",
|
|
||||||
"apply_ihh_filter": "Appliquer le filtre IHH sur :",
|
|
||||||
"countries": "Pays",
|
|
||||||
"actors": "Acteurs",
|
|
||||||
"filter_isg": "Filtrer les chemins contenant un pays instable (ISG ≥ 60)",
|
|
||||||
"filter_logic": "Logique de filtrage",
|
|
||||||
"or": "OU",
|
|
||||||
"and": "ET",
|
|
||||||
"run_analysis": "Lancer l'analyse",
|
|
||||||
"sankey": {
|
|
||||||
"no_paths": "Aucun chemin trouvé pour les critères spécifiés.",
|
|
||||||
"no_matching_paths": "Aucun chemin ne correspond aux critères.",
|
|
||||||
"filtered_hierarchy": "Hiérarchie filtrée par niveaux et noeuds",
|
|
||||||
"download_dot": "Télécharger le fichier DOT filtré",
|
|
||||||
"relation": "Relation"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ia_nalyse": {
|
|
||||||
"title": "Analyse du graphe par IA",
|
|
||||||
"help": "Comment utiliser cet onglet ?",
|
|
||||||
"help_content": [
|
|
||||||
"Le graphe intègre l'ensemble des niveaux, des produits finaux aux pays géographiques.\n",
|
|
||||||
"1. Vous pouvez sélectionner des minerais par lesquels passent les chemins.",
|
|
||||||
"2. Vous pouvez choisir des produits finaux pour faire une analyse adaptée à votre contexte.\n",
|
|
||||||
" Ces deux sélections sont optionnelles, mais fortement recommandées pour avoir une meilleure pertinence de l'analyse.",
|
|
||||||
"L'analyse se réalise à l'aide d'une IA privée, sur un serveur minimaliste. Le résultat n'est donc pas immédiat (ordre de grandeur : 30 minutes) et vous serez informé de l'avancement."
|
|
||||||
],
|
|
||||||
"select_minerals": "Sélectionner un ou plusieurs minerais",
|
|
||||||
"filter_by_minerals": "Filtrer par minerais (optionnel, mais recommandé)",
|
|
||||||
"fine_selection": "Sélection des produits finaux",
|
|
||||||
"filter_start_nodes": "Filtrer par noeuds de départ (optionnel, mais recommandé)",
|
|
||||||
"run_analysis": "Lancer l'analyse",
|
|
||||||
"confirm_download": "Confirmer le téléchargement",
|
|
||||||
"submit_request": "Soumettre votre demande",
|
|
||||||
"empty_graph": "Le graphe est vide. Veuillez faire une autre sélection."
|
|
||||||
},
|
|
||||||
"plan_d_action": {
|
|
||||||
"title": "Analyse du graphe pour action",
|
|
||||||
"help": "Comment utiliser cet onglet ?",
|
|
||||||
"help_content": [
|
|
||||||
"Le graphe intègre l'ensemble des niveaux, des produits finaux aux pays géographiques.\n",
|
|
||||||
"1. Vous pouvez sélectionner des minerais par lesquels passent les chemins.",
|
|
||||||
"2. Vous pouvez choisir des produits finaux pour faire une analyse adaptée à votre contexte.\n",
|
|
||||||
" Ces deux sélections sont optionnelles, mais fortement recommandées pour avoir une meilleure pertinence de l'analyse.",
|
|
||||||
"Les préconisations d'actions et de suivi d'indicateurs sont génériques. Elles doivent donc être adaptées au contexte.",
|
|
||||||
"Les actions ou les indicateurs proposés dépendent du type d'organisation concernée et peuvent être appliquées directement ou exigées des fournisseurs de numérique."
|
|
||||||
],
|
|
||||||
"select_minerals": "Sélectionner un ou plusieurs minerais",
|
|
||||||
"filter_by_minerals": "Filtrer par minerais (optionnel, mais recommandé)",
|
|
||||||
"fine_selection": "Sélection des produits finaux",
|
|
||||||
"filter_start_nodes": "Filtrer par noeuds de départ",
|
|
||||||
"run_analysis": "Lancer l'analyse",
|
|
||||||
"confirm_download": "Confirmer le téléchargement",
|
|
||||||
"submit_request": "Soumettre votre demande",
|
|
||||||
"empty_graph": "Le graphe est vide. Veuillez faire une autre sélection."
|
|
||||||
},
|
|
||||||
"visualisations": {
|
|
||||||
"title": "Visualisations",
|
|
||||||
"help": "Comment utiliser cet onglet ?",
|
|
||||||
"help_content": [
|
|
||||||
"1. Explorez les graphiques présentant l'Indice de Herfindahl-Hirschmann (IHH)",
|
|
||||||
"2. Analysez sa relation avec la criticité moyenne des minerais ou leur Indice de Vulnérabilité Concurrentielle (IVC)",
|
|
||||||
"3. Zoomer dans les graphes pour mieux découvrir les informations",
|
|
||||||
"",
|
|
||||||
"Il est important de se rappeler que l'IHH a deux seuils :",
|
|
||||||
"* en-dessous de 15, la concentration est considérée comme étant faible",
|
|
||||||
"* au-dessus de 25, elle est considérée comme étant forte",
|
|
||||||
"",
|
|
||||||
"Ainsi plus le positionnement d'un point est en haut à droite des graphiques, plus les risques sont élevés.",
|
|
||||||
"Les graphiques présentent 2 droites horizontales et vetrticales pour matérialiser ces seuils."
|
|
||||||
],
|
|
||||||
"ihh_criticality": "Indice de Herfindahl-Hirschmann - IHH vs Criticité",
|
|
||||||
"ihh_criticality_desc": "La taille des points donne l'indication de la criticité de substituabilité du minerai.",
|
|
||||||
"ihh_ivc": "Indice de Herfindahl-Hirschmann - IHH vs IVC",
|
|
||||||
"ihh_ivc_desc": "La taille des points donne l'indication de la criticité concurrentielle du minerai.",
|
|
||||||
"launch": "Lancer",
|
|
||||||
"no_data": "Aucune donnée à visualiser.",
|
|
||||||
"categories": {
|
|
||||||
"assembly": "Assemblage",
|
|
||||||
"manufacturing": "Fabrication",
|
|
||||||
"processing": "Traitement",
|
|
||||||
"extraction": "Extraction"
|
|
||||||
},
|
|
||||||
"axis_titles": {
|
|
||||||
"ihh_countries": "IHH Pays (%)",
|
|
||||||
"ihh_actors": "IHH Acteurs (%)",
|
|
||||||
"ihh_extraction": "IHH Extraction (%)",
|
|
||||||
"ihh_reserves": "IHH Réserves (%)"
|
|
||||||
},
|
|
||||||
"chart_titles": {
|
|
||||||
"concentration_criticality": "Concentration et criticité – {0}",
|
|
||||||
"concentration_resources": "Concentration des ressources critiques vs vulnérabilité IVC"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"fiches": {
|
|
||||||
"title": "Découverte des fiches",
|
|
||||||
"help": "Comment utiliser cet onglet ?",
|
|
||||||
"help_content": [
|
|
||||||
"1. Parcourez la liste des fiches disponibles par catégorie",
|
|
||||||
"2. Sélectionnez une fiche pour afficher son contenu complet",
|
|
||||||
"3. Consultez les données détaillées, graphiques et analyses supplémentaires",
|
|
||||||
"4. Utilisez ces informations pour approfondir votre compréhension des vulnérabilités identifiées",
|
|
||||||
"",
|
|
||||||
"Les catégories sont les suivantes :",
|
|
||||||
"* Assemblage : opération d'assemblage des produits finaux à partir des composants",
|
|
||||||
"* Connexe : opérations diverses nécessaires pour fabriquer le numérique, mais n'entrant pas directement dans sa composition",
|
|
||||||
"* Criticités : indices utilisés pour identifier et évaluer les vulnérabilités",
|
|
||||||
"* Fabrication : opération de fabrication des composants à partir de minerais",
|
|
||||||
"* Minerai : description et opérations d'extraction et de traitement des minerais"
|
|
||||||
],
|
|
||||||
"no_files": "Aucune fiche disponible pour le moment.",
|
|
||||||
"choose_category": "Choisissez une catégorie de fiches",
|
|
||||||
"select_folder": "-- Sélectionner un dossier --",
|
|
||||||
"choose_file": "Choisissez une fiche",
|
|
||||||
"select_file": "-- Sélectionner une fiche --",
|
|
||||||
"loading_error": "Erreur lors du chargement de la fiche :",
|
|
||||||
"download_pdf": "Télécharger cette fiche en PDF",
|
|
||||||
"pdf_unavailable": "Le fichier PDF de cette fiche n'est pas disponible.",
|
|
||||||
"ticket_management": "Gestion des tickets pour cette fiche",
|
|
||||||
"tickets": {
|
|
||||||
"create_new": "Créer un nouveau ticket lié à cette fiche",
|
|
||||||
"model_load_error": "Impossible de charger le modèle de ticket.",
|
|
||||||
"contribution_type": "Type de contribution",
|
|
||||||
"specify": "Précisez",
|
|
||||||
"other": "Autre",
|
|
||||||
"concerned_card": "Fiche concernée",
|
|
||||||
"subject": "Sujet de la proposition",
|
|
||||||
"preview": "Prévisualiser le ticket",
|
|
||||||
"cancel": "Annuler",
|
|
||||||
"preview_title": "Prévisualisation du ticket",
|
|
||||||
"summary": "Résumé",
|
|
||||||
"title": "Titre",
|
|
||||||
"labels": "Labels",
|
|
||||||
"confirm": "Confirmer la création du ticket",
|
|
||||||
"created": "Ticket créé et formulaire vidé.",
|
|
||||||
"model_error": "Erreur chargement modèle :",
|
|
||||||
"no_linked_tickets": "Aucun ticket lié à cette fiche.",
|
|
||||||
"associated_tickets": "Tickets associés à cette fiche",
|
|
||||||
"moderation_notice": "ticket(s) en attente de modération ne sont pas affichés.",
|
|
||||||
"status": {
|
|
||||||
"awaiting": "En attente de traitement",
|
|
||||||
"in_progress": "En cours",
|
|
||||||
"completed": "Terminés",
|
|
||||||
"rejected": "Non retenus",
|
|
||||||
"others": "Autres"
|
|
||||||
},
|
|
||||||
"no_title": "Sans titre",
|
|
||||||
"unknown": "inconnu",
|
|
||||||
"subject_label": "Sujet",
|
|
||||||
"no_labels": "aucun",
|
|
||||||
"comments": "Commentaire(s) :",
|
|
||||||
"no_comments": "Aucun commentaire.",
|
|
||||||
"comment_error": "Erreur lors de la récupération des commentaires :",
|
|
||||||
"opened_by": "Ouvert par",
|
|
||||||
"on_date": "le",
|
|
||||||
"updated": "MAJ",
|
|
||||||
"continue": "Continuer",
|
|
||||||
"created_success": "Ticket créé et placé en modération",
|
|
||||||
"created_error": "Échec de la création du ticket. Veuillez réessayer plus tard",
|
|
||||||
"see_ticket": "Voir le ticket"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_levels": {
|
|
||||||
"0": "Produit final",
|
|
||||||
"1": "Composant",
|
|
||||||
"2": "Minerai",
|
|
||||||
"10": "Opération",
|
|
||||||
"11": "Pays d'opération",
|
|
||||||
"12": "Acteur d'opération",
|
|
||||||
"99": "Pays géographique"
|
|
||||||
},
|
|
||||||
"errors": {
|
|
||||||
"log_read_error": "Erreur lecture log:",
|
|
||||||
"graph_preview_error": "Erreur de prévisualisation du graphe :",
|
|
||||||
"graph_creation_error": "Erreur lors de la création du graphique :",
|
|
||||||
"ihh_criticality_error": "Erreur dans la visualisation IHH vs Criticité :",
|
|
||||||
"ihh_ivc_error": "Erreur dans la visualisation IHH vs IVC :",
|
|
||||||
"comment_fetch_error": "Erreur lors de la récupération des commentaires :",
|
|
||||||
"template_load_error": "Erreur chargement modèle :",
|
|
||||||
"import_error": "Erreur d'import :"
|
|
||||||
},
|
|
||||||
"buttons": {
|
|
||||||
"download": "Télécharger",
|
|
||||||
"run": "Lancer",
|
|
||||||
"save": "Enregistrer",
|
|
||||||
"cancel": "Annuler",
|
"cancel": "Annuler",
|
||||||
"confirm": "Confirmer",
|
"preview_title": "Prévisualisation du ticket",
|
||||||
"filter": "Filtrer",
|
"summary": "Résumé",
|
||||||
"search": "Rechercher",
|
"title": "Titre",
|
||||||
"create": "Créer",
|
"labels": "Labels",
|
||||||
"update": "Mettre à jour",
|
"confirm": "Confirmer la création du ticket",
|
||||||
"delete": "Supprimer",
|
"created": "Ticket créé et formulaire vidé.",
|
||||||
"preview": "Prévisualiser",
|
"model_error": "Erreur chargement modèle :",
|
||||||
"export": "Exporter",
|
"no_linked_tickets": "Aucun ticket lié à cette fiche.",
|
||||||
"import": "Importer",
|
"associated_tickets": "Tickets associés à cette fiche",
|
||||||
"restore": "Restaurer",
|
"moderation_notice": "ticket(s) en attente de modération ne sont pas affichés.",
|
||||||
"refresh": "Rafraîchir",
|
"status": {
|
||||||
"browse_files": "Parcourir les fichiers"
|
"awaiting": "En attente de traitement",
|
||||||
},
|
"in_progress": "En cours",
|
||||||
"ui": {
|
"completed": "Terminés",
|
||||||
"file_uploader": {
|
"rejected": "Non retenus",
|
||||||
"drag_drop_here": "Glissez-déposez votre fichier ici",
|
"others": "Autres"
|
||||||
"size_limit": "Limite 100 Ko par fichier • JSON"
|
},
|
||||||
}
|
"no_title": "Sans titre",
|
||||||
},
|
"unknown": "inconnu",
|
||||||
"batch": {
|
"subject_label": "Sujet",
|
||||||
"in_queue": "En attente",
|
"no_labels": "aucun",
|
||||||
"in_progress": "Analyse en cours",
|
"comments": "Commentaire(s) :",
|
||||||
"failure": "Échec",
|
"no_comments": "Aucun commentaire.",
|
||||||
"unknwon_error": "erreur inconnue",
|
"comment_error": "Erreur lors de la récupération des commentaires :",
|
||||||
"no_task": "Aucune tâche en attente ou en cours",
|
"opened_by": "Ouvert par",
|
||||||
"complete": "Analyse terminée. Télécharger le résultat au format zip, qui contient le rapport détaillé et l'analyse.",
|
"on_date": "le",
|
||||||
"step": "Étape"
|
"updated": "MAJ",
|
||||||
|
"continue": "Continuer",
|
||||||
|
"created_success": "Ticket créé et placé en modération",
|
||||||
|
"created_error": "Échec de la création du ticket. Veuillez réessayer plus tard",
|
||||||
|
"see_ticket": "Voir le ticket"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"node_levels": {
|
||||||
|
"0": "Produit final",
|
||||||
|
"1": "Composant",
|
||||||
|
"2": "Minerai",
|
||||||
|
"10": "Opération",
|
||||||
|
"11": "Pays d'opération",
|
||||||
|
"12": "Acteur d'opération",
|
||||||
|
"99": "Pays géographique"
|
||||||
|
},
|
||||||
|
"errors": {
|
||||||
|
"log_read_error": "Erreur lecture log:",
|
||||||
|
"graph_preview_error": "Erreur de prévisualisation du graphe :",
|
||||||
|
"graph_creation_error": "Erreur lors de la création du graphique :",
|
||||||
|
"ihh_criticality_error": "Erreur dans la visualisation IHH vs Criticité :",
|
||||||
|
"ihh_ivc_error": "Erreur dans la visualisation IHH vs IVC :",
|
||||||
|
"comment_fetch_error": "Erreur lors de la récupération des commentaires :",
|
||||||
|
"template_load_error": "Erreur chargement modèle :",
|
||||||
|
"import_error": "Erreur d'import :"
|
||||||
|
},
|
||||||
|
"buttons": {
|
||||||
|
"download": "Télécharger",
|
||||||
|
"run": "Lancer",
|
||||||
|
"save": "Enregistrer",
|
||||||
|
"cancel": "Annuler",
|
||||||
|
"confirm": "Confirmer",
|
||||||
|
"filter": "Filtrer",
|
||||||
|
"search": "Rechercher",
|
||||||
|
"create": "Créer",
|
||||||
|
"update": "Mettre à jour",
|
||||||
|
"delete": "Supprimer",
|
||||||
|
"preview": "Prévisualiser",
|
||||||
|
"export": "Exporter",
|
||||||
|
"import": "Importer",
|
||||||
|
"restore": "Restaurer",
|
||||||
|
"refresh": "Rafraîchir",
|
||||||
|
"browse_files": "Parcourir les fichiers"
|
||||||
|
},
|
||||||
|
"ui": {
|
||||||
|
"file_uploader": {
|
||||||
|
"drag_drop_here": "Glissez-déposez votre fichier ici",
|
||||||
|
"size_limit": "Limite 100 Ko par fichier • JSON"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"batch": {
|
||||||
|
"in_queue": "En attente",
|
||||||
|
"in_progress": "Analyse en cours",
|
||||||
|
"failure": "Échec",
|
||||||
|
"unknwon_error": "erreur inconnue",
|
||||||
|
"no_task": "Aucune tâche en attente ou en cours",
|
||||||
|
"complete": "Analyse terminée. Télécharger le résultat au format zip, qui contient le rapport détaillé et l'analyse.",
|
||||||
|
"step": "Étape"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,33 +4,33 @@
|
|||||||
1. Reset et base
|
1. Reset et base
|
||||||
========================================== */
|
========================================== */
|
||||||
.stAppHeader {
|
.stAppHeader {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
body,
|
body,
|
||||||
html {
|
html {
|
||||||
font-family:
|
font-family:
|
||||||
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial,
|
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial,
|
||||||
sans-serif;
|
sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
body,
|
body,
|
||||||
.stApp,
|
.stApp,
|
||||||
.block-container {
|
.block-container {
|
||||||
background-color: var(--bg-color) !important;
|
background-color: var(--bg-color) !important;
|
||||||
color: var(--text-color) !important;
|
color: var(--text-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================
|
/* ==========================================
|
||||||
2. Layout et containers
|
2. Layout et containers
|
||||||
========================================== */
|
========================================== */
|
||||||
.block-container {
|
.block-container {
|
||||||
max-width: 1024px !important;
|
max-width: 1024px !important;
|
||||||
padding: 0 1rem 10rem;
|
padding: 0 1rem 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stVerticalBlock {
|
.stVerticalBlock {
|
||||||
gap: 0.5rem !important;
|
gap: 0.5rem !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================
|
/* ==========================================
|
||||||
@ -42,97 +42,97 @@ body,
|
|||||||
.stDownloadButton > button,
|
.stDownloadButton > button,
|
||||||
.stFormSubmitButton > button,
|
.stFormSubmitButton > button,
|
||||||
.stSlider > div > div {
|
.stSlider > div > div {
|
||||||
background-color: darkgreen !important;
|
background-color: #072c6e !important;
|
||||||
color: white !important;
|
color: white !important;
|
||||||
border: 1px solid grey;
|
border: 1px solid grey;
|
||||||
}
|
}
|
||||||
|
|
||||||
.st-key-FormSubmitter-auth_form-Se-connecter {
|
.st-key-FormSubmitter-auth_form-Se-connecter {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:not([data-testid="stSidebar"])
|
section:not([data-testid="stSidebar"])
|
||||||
button[data-testid="stBaseButton-primary"],
|
button[data-testid="stBaseButton-primary"],
|
||||||
section:not([data-testid="stSidebar"])
|
section:not([data-testid="stSidebar"])
|
||||||
button[data-testid="stBaseButton-secondary"] {
|
button[data-testid="stBaseButton-secondary"] {
|
||||||
color: white !important;
|
color: white !important;
|
||||||
background: darkgreen !important;
|
background: #072c6e !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:not([data-testid="stSidebar"])
|
section:not([data-testid="stSidebar"])
|
||||||
button[data-testid="stBaseButton-primary"]
|
button[data-testid="stBaseButton-primary"]
|
||||||
p,
|
p,
|
||||||
section:not([data-testid="stSidebar"])
|
section:not([data-testid="stSidebar"])
|
||||||
button[data-testid="stBaseButton-secondary"]
|
button[data-testid="stBaseButton-secondary"]
|
||||||
p {
|
p {
|
||||||
color: white !important;
|
color: white !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bouton-fictif {
|
.bouton-fictif {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
-moz-box-align: center;
|
-moz-box-align: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
-moz-box-pack: center;
|
-moz-box-pack: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 0.25rem 0.75rem;
|
padding: 0.25rem 0.75rem;
|
||||||
border-radius: 0.5rem;
|
border-radius: 0.5rem;
|
||||||
min-height: 2.5rem;
|
min-height: 2.5rem;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
font-size: x-large;
|
font-size: x-large;
|
||||||
font-family: inherit;
|
font-family: inherit;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
border: 1px solid rgba(49, 51, 63, 0.2);
|
border: 1px solid rgba(49, 51, 63, 0.2);
|
||||||
background-color: darkgrey !important;
|
background-color: darkgrey !important;
|
||||||
color: darkgreen !important;
|
color: #072c6e !important;
|
||||||
font-weight: bold !important;
|
font-weight: bold !important;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
letter-spacing: 0.2em;
|
letter-spacing: 0.2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
button[data-testid="stBaseButton-headerNoPadding"] svg {
|
button[data-testid="stBaseButton-headerNoPadding"] svg {
|
||||||
fill: var(--text-color) !important;
|
fill: var(--text-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- 3.2 Onglets et radiogroup --- */
|
/* --- 3.2 Onglets et radiogroup --- */
|
||||||
div[role="radiogroup"] > label {
|
div[role="radiogroup"] > label {
|
||||||
padding: 0.5em 1em;
|
padding: 0.5em 1em;
|
||||||
border-radius: 0.4em;
|
border-radius: 0.4em;
|
||||||
margin-right: 0.5em;
|
margin-right: 0.5em;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
border: 1px solid #fff;
|
border: 1px solid #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
div[role="radiogroup"] > label[data-selected="true"] {
|
div[role="radiogroup"] > label[data-selected="true"] {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
border: 2px solid #145a1a;
|
border: 2px solid #145a1a;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:not([data-testid="stSidebar"]) div[role="radiogroup"] > label p {
|
section:not([data-testid="stSidebar"]) div[role="radiogroup"] > label p {
|
||||||
background-color: var(--radio-bg) !important;
|
background-color: var(--radio-bg) !important;
|
||||||
color: var(--radio-text) !important;
|
color: var(--radio-text) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:not([data-testid="stSidebar"])
|
section:not([data-testid="stSidebar"])
|
||||||
div[role="radiogroup"]
|
div[role="radiogroup"]
|
||||||
> label[data-selected="true"] {
|
> label[data-selected="true"] {
|
||||||
background-color: var(--radio-selected-bg) !important;
|
background-color: var(--radio-selected-bg) !important;
|
||||||
color: var(--radio-selected-text) !important;
|
color: var(--radio-selected-text) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- 3.3 Champs de formulaire --- */
|
/* --- 3.3 Champs de formulaire --- */
|
||||||
div[data-baseweb="select"],
|
div[data-baseweb="select"],
|
||||||
section:not([data-testid="stSidebar"]) div[data-baseweb="base-input"],
|
section:not([data-testid="stSidebar"]) div[data-baseweb="base-input"],
|
||||||
section[data-testid="stFileUploaderDropzone"] {
|
section[data-testid="stFileUploaderDropzone"] {
|
||||||
border: 1px solid var(--input-border) !important;
|
border: 1px solid var(--input-border) !important;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
small {
|
small {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:not([data-testid="stSidebar"]) div[data-testid="stSelectbox"] p,
|
section:not([data-testid="stSidebar"]) div[data-testid="stSelectbox"] p,
|
||||||
@ -142,7 +142,7 @@ section:not([data-testid="stSidebar"]) div[data-testid="stCheckbox"] p,
|
|||||||
section:not([data-testid="stSidebar"]) div[data-testid="stTextInput"] p,
|
section:not([data-testid="stSidebar"]) div[data-testid="stTextInput"] p,
|
||||||
section:not([data-testid="stSidebar"]) div[data-testid="stTextArea"] p,
|
section:not([data-testid="stSidebar"]) div[data-testid="stTextArea"] p,
|
||||||
section:not([data-testid="stSidebar"]) div[data-testid="stAlertContentInfo"] p {
|
section:not([data-testid="stSidebar"]) div[data-testid="stAlertContentInfo"] p {
|
||||||
color: var(--text-color) !important;
|
color: var(--text-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================
|
/* ==========================================
|
||||||
@ -151,98 +151,98 @@ section:not([data-testid="stSidebar"]) div[data-testid="stAlertContentInfo"] p {
|
|||||||
|
|
||||||
/* --- 4.1 Header --- */
|
/* --- 4.1 Header --- */
|
||||||
.wide-header {
|
.wide-header {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
margin-left: calc(-50vw + 50%);
|
margin-left: calc(-50vw + 50%);
|
||||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||||
border-bottom: 1px solid #ddd;
|
border-bottom: 1px solid #ddd;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
margin-top: -1.25em;
|
margin-top: -1.25em;
|
||||||
background-color: var(--header-bg);
|
background-color: var(--header-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.titre-header {
|
.titre-header {
|
||||||
font-size: 2rem !important;
|
font-size: 2rem !important;
|
||||||
font-weight: bolder !important;
|
font-weight: bolder !important;
|
||||||
color: var(--header-title);
|
color: var(--header-title);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- 4.2 Footer --- */
|
/* --- 4.2 Footer --- */
|
||||||
.wide-footer {
|
.wide-footer {
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
margin-left: calc(-50vw + 50%);
|
margin-left: calc(-50vw + 50%);
|
||||||
margin-top: 3rem;
|
margin-top: 3rem;
|
||||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||||
border-top: 1px solid #ddd;
|
border-top: 1px solid #ddd;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 1rem;
|
padding-top: 1rem;
|
||||||
background-color: var(--footer-bg);
|
background-color: var(--footer-bg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.info-footer {
|
.info-footer {
|
||||||
font-size: 1rem !important;
|
font-size: 1rem !important;
|
||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
color: var(--footer-text);
|
color: var(--footer-text);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================
|
/* ==========================================
|
||||||
5. Sidebar
|
5. Sidebar
|
||||||
========================================== */
|
========================================== */
|
||||||
section[data-testid="stSidebar"] {
|
section[data-testid="stSidebar"] {
|
||||||
background-color: #ccc !important;
|
background-color: #ccc !important;
|
||||||
color: #111 !important;
|
color: #111 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
section[data-testid="stSidebar"] .stButton > button {
|
section[data-testid="stSidebar"] .stButton > button {
|
||||||
background-color: darkgreen !important;
|
background-color: #072c6e !important;
|
||||||
color: white !important;
|
color: white !important;
|
||||||
font-weight: bold !important;
|
font-weight: bold !important;
|
||||||
border: 1px solid #ccc !important;
|
border: 1px solid #ccc !important;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
section[data-testid="stSidebar"] .decorative-heading {
|
section[data-testid="stSidebar"] .decorative-heading {
|
||||||
font-size: 1.25rem;
|
font-size: 1.25rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #145a1a;
|
color: #072c6e;
|
||||||
}
|
}
|
||||||
|
|
||||||
section[data-testid="stSidebar"] div[role="radiogroup"] {
|
section[data-testid="stSidebar"] div[role="radiogroup"] {
|
||||||
justify-content: center !important;
|
justify-content: center !important;
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================
|
/* ==========================================
|
||||||
6. Tables
|
6. Tables
|
||||||
========================================== */
|
========================================== */
|
||||||
table {
|
table {
|
||||||
border: 1px solid var(--table-border) !important;
|
border: 1px solid var(--table-border) !important;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-bottom: 1.5em;
|
margin-bottom: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
th,
|
th,
|
||||||
td {
|
td {
|
||||||
border: 1px solid var(--table-border) !important;
|
border: 1px solid var(--table-border) !important;
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
caption {
|
caption {
|
||||||
caption-side: top;
|
caption-side: top;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
caption-side: bottom;
|
caption-side: bottom;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
table[role="table"] th[scope="col"] {
|
table[role="table"] th[scope="col"] {
|
||||||
background-color: var(--background-color);
|
background-color: var(--background-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================
|
/* ==========================================
|
||||||
@ -254,99 +254,99 @@ table[role="table"] th[scope="col"] {
|
|||||||
|
|
||||||
/* --- 7.2 Graphiques --- */
|
/* --- 7.2 Graphiques --- */
|
||||||
.stPlotlyChart text {
|
.stPlotlyChart text {
|
||||||
fill: var(--plot-text) !important;
|
fill: var(--plot-text) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stPlotlyChart text {
|
.stPlotlyChart text {
|
||||||
fill: black !important;
|
fill: black !important;
|
||||||
text-shadow: none !important;
|
text-shadow: none !important;
|
||||||
font-weight: bold !important;
|
font-weight: bold !important;
|
||||||
font-size: 14px !important;
|
font-size: 14px !important;
|
||||||
font-family: Verdana, sans-serif !important;
|
font-family: Verdana, sans-serif !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cache complètement la section d'actions Vega */
|
/* Cache complètement la section d'actions Vega */
|
||||||
.vega-actions {
|
.vega-actions {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Et aussi le <details> parent, s'il faut tout masquer */
|
/* Et aussi le <details> parent, s'il faut tout masquer */
|
||||||
details[title="Click to view actions"] {
|
details[title="Click to view actions"] {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- 7.3 Détails et paragraphes --- */
|
/* --- 7.3 Détails et paragraphes --- */
|
||||||
details {
|
details {
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
margin-bottom: 0.5em;
|
margin-bottom: 0.5em;
|
||||||
background-color: var(--background-color);
|
background-color: var(--background-color);
|
||||||
border-color: var(--details-border) !important;
|
border-color: var(--details-border) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:not([data-testid="stSidebar"])
|
section:not([data-testid="stSidebar"])
|
||||||
div:not[data-testid="stElementContainer"]
|
div:not[data-testid="stElementContainer"]
|
||||||
p:not(#Authentification):not(#Theme) {
|
p:not(#Authentification):not(#Theme) {
|
||||||
color: var(--paragraph-color) !important;
|
color: var(--paragraph-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
section:not([data-testid="stSidebar"]) hr {
|
section:not([data-testid="stSidebar"]) hr {
|
||||||
background-color: var(--hr-color) !important;
|
background-color: var(--hr-color) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- 7.4 Conteneurs de commentaires et tickets --- */
|
/* --- 7.4 Conteneurs de commentaires et tickets --- */
|
||||||
.conteneur_commentaire,
|
.conteneur_commentaire,
|
||||||
.conteneur_ticket {
|
.conteneur_ticket {
|
||||||
background: var(--background-color);
|
background: var(--background-color);
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
margin-bottom: 1em;
|
margin-bottom: 1em;
|
||||||
border: 1px solid #ccc;
|
border: 1px solid #ccc;
|
||||||
}
|
}
|
||||||
|
|
||||||
.commentaire_auteur,
|
.commentaire_auteur,
|
||||||
.ticket_auteur {
|
.ticket_auteur {
|
||||||
color: var(--text-color) !important;
|
color: var(--text-color) !important;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.commentaire_contenu,
|
.commentaire_contenu,
|
||||||
.ticket_contenu {
|
.ticket_contenu {
|
||||||
color: var(--text-color) !important;
|
color: var(--text-color) !important;
|
||||||
margin: 0.5rem 0 0;
|
margin: 0.5rem 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- 7.5 Blocs mathématiques --- */
|
/* --- 7.5 Blocs mathématiques --- */
|
||||||
.math-block {
|
.math-block {
|
||||||
display: block;
|
display: block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 1em 0;
|
margin: 1em 0;
|
||||||
border: 1px solid var(--math-block-border);
|
border: 1px solid var(--math-block-border);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
background: var(--math-block-bg);
|
background: var(--math-block-bg);
|
||||||
font-size: x-large;
|
font-size: x-large;
|
||||||
color: var(--text-color);
|
color: var(--text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.math-block math {
|
.math-block math {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ==========================================
|
/* ==========================================
|
||||||
8. Éléments spécifiques
|
8. Éléments spécifiques
|
||||||
========================================== */
|
========================================== */
|
||||||
div.stElementContainer.element-container.st-key-nom_utilisateur {
|
div.stElementContainer.element-container.st-key-nom_utilisateur {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.st-key-telecharger_fiche_pdf {
|
.st-key-telecharger_fiche_pdf {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
margin-right: auto;
|
margin-right: auto;
|
||||||
margin-top: 1rem;
|
margin-top: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.details_introduction {
|
.details_introduction {
|
||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,9 @@ def afficher_pied_de_page():
|
|||||||
<div role='contentinfo' aria-labelledby='footer-appli' class='wide-footer'>
|
<div role='contentinfo' aria-labelledby='footer-appli' class='wide-footer'>
|
||||||
<div class='info-footer'>
|
<div class='info-footer'>
|
||||||
<p id='footer-appli' class='info-footer'>
|
<p id='footer-appli' class='info-footer'>
|
||||||
{_("footer.copyright")} – <a href='mailto:stephan-pro@peccini.fr'>{_("footer.contact")}</a> – {_("footer.license")} <a href='https://creativecommons.org/licenses/by-nc-nd/4.0/deed.fr' target='_blank'>{_("footer.license_text")}</a>
|
{_("footer.copyright")} – <a href='mailto:stephan.peccini@polycrisis-observatory.org'>{_("footer.contact")}</a> – {_("footer.license")} <a href='https://creativecommons.org/licenses/by-nc-nd/4.0/deed.fr' target='_blank'>{_("footer.license_text")}</a>
|
||||||
|
</p>
|
||||||
|
<a href="https://www.polycrisis-observatory.org/" target="_blank"><img src="/app/static/images/polycrisis_observatory.webp" alt="Logo de l'Observatoire des Polycrises"></a>
|
||||||
</p>
|
</p>
|
||||||
<p class='footer-note'>
|
<p class='footer-note'>
|
||||||
{_("footer.eco_note")} <a href='https://www.thegreenwebfoundation.org/' target='_blank'>{_("footer.eco_provider")}</a><br>
|
{_("footer.eco_note")} <a href='https://www.thegreenwebfoundation.org/' target='_blank'>{_("footer.eco_provider")}</a><br>
|
||||||
|
|||||||
@ -125,7 +125,7 @@ def afficher_impact(total_bytes):
|
|||||||
font-size: 1.25rem;
|
font-size: 1.25rem;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
color: #145a1a;
|
color: #072c6e;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}}
|
}}
|
||||||
span {{
|
span {{
|
||||||
|
|||||||
BIN
static/images/polycrisis_observatory.webp
Normal file
BIN
static/images/polycrisis_observatory.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Loading…
x
Reference in New Issue
Block a user