feat(nav,i18n): sticky footer with Back-to-Home + localized tool headers
Two unrelated UX issues addressed in one sweep across all nine tool
pages because they share the same edit surface.
(1) Sticky footer replaces the top + bottom back-link buttons.
Reported: a big white empty footer space at the bottom of every page;
the Back to Home button at the top scrolled out of view on long pages.
New ``render_sticky_footer()`` helper in ``components/_legacy.py``
injects a fixed-position bar at ``bottom: 0`` of the viewport with:
- A border-top so it visually reads as a non-movable bar.
- A semi-transparent background (rgba 0.96 + ``backdrop-filter: blur``)
so content underneath shows through faintly when the user scrolls.
- A styled ``<a href="home">`` anchor (not an ``st.button``) because
Streamlit widgets can't be CSS-positioned reliably — Streamlit owns
the widget's DOM container and re-mounts it on every rerun. A real
anchor sits exactly where the CSS puts it and triggers Streamlit's
URL routing to the home page.
- ``padding-bottom: 3.5rem`` on the main container so the last widget
isn't hidden behind the bar.
Called once per tool page, immediately after ``hide_streamlit_chrome()``
so it renders even on pages that ``st.stop()`` early before any other
content runs. The old top-and-bottom ``back_to_home_link()`` calls are
removed from every tool page; their entry/exit points were dropping
the button when the script short-circuited.
(2) Tool-page headers now localize.
Reported: switching the sidebar language picker to Spanish left the
tool page's title + caption in English. Root cause: every page had
hard-coded ``st.title("✂️ Clean Text")`` / ``st.caption("Trim
whitespace...")`` strings.
Added per-tool ``tools.<id>.page_title`` and
``tools.<id>.page_caption`` keys to ``en.json`` and ``es.json`` for
all nine tools. Routed each page's title/caption call through ``t()``.
Verified: with ``ui_lang=es`` set, the Clean Text page now renders
"✂️ Limpiar texto" + the Spanish caption.
Updated ``tests/gui/test_smoke.py::EXPECTED_SUBSTRINGS`` so the
``es`` column for each tool page asserts the actual Spanish string
(was a duplicate of the English string back when the page bodies
were English-only).
2220 tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -106,39 +106,57 @@
|
||||
"tools": {
|
||||
"01_deduplicator": {
|
||||
"name": "Buscar duplicados",
|
||||
"description": "Coincidencia difusa, normalización, selección de superviviente y revisión interactiva."
|
||||
"description": "Coincidencia difusa, normalización, selección de superviviente y revisión interactiva.",
|
||||
"page_title": "🔍 Buscar duplicados",
|
||||
"page_caption": "Encuentra y elimina filas duplicadas en archivos CSV, texto delimitado y Excel."
|
||||
},
|
||||
"02_text_cleaner": {
|
||||
"name": "Limpiar texto",
|
||||
"description": "Recorte de espacios, colapso de espacios múltiples, normalización Unicode, manejo de BOM y de finales de línea."
|
||||
"description": "Recorte de espacios, colapso de espacios múltiples, normalización Unicode, manejo de BOM y de finales de línea.",
|
||||
"page_title": "✂️ Limpiar texto",
|
||||
"page_caption": "Recorta espacios, normaliza comillas tipográficas, elimina caracteres invisibles y unifica saltos de línea. Se ejecuta localmente — tus datos nunca salen de este equipo."
|
||||
},
|
||||
"03_format_standardizer": {
|
||||
"name": "Estandarizar formatos",
|
||||
"description": "Estandariza fechas, monedas, nombres, números de teléfono y direcciones."
|
||||
"description": "Estandariza fechas, monedas, nombres, números de teléfono y direcciones.",
|
||||
"page_title": "📐 Estandarizar formatos",
|
||||
"page_caption": "Canoniza fechas, números de teléfono, monedas, nombres, direcciones y booleanos columna por columna. Se ejecuta localmente — tus datos nunca salen de este equipo."
|
||||
},
|
||||
"04_missing_handler": {
|
||||
"name": "Corregir valores faltantes",
|
||||
"description": "Detecta nulos disfrazados, analiza la ausencia de datos y aplica estrategias de imputación."
|
||||
"description": "Detecta nulos disfrazados, analiza la ausencia de datos y aplica estrategias de imputación.",
|
||||
"page_title": "🕳️ Corregir valores faltantes",
|
||||
"page_caption": "Detecta nulos disfrazados, perfila la ausencia de datos y aplica imputación o estrategias de descarte. Se ejecuta localmente — tus datos nunca salen de este equipo."
|
||||
},
|
||||
"05_column_mapper": {
|
||||
"name": "Mapear columnas",
|
||||
"description": "Renombra columnas, aplica un esquema objetivo y fuerza tipos de datos."
|
||||
"description": "Renombra columnas, aplica un esquema objetivo y fuerza tipos de datos.",
|
||||
"page_title": "🗂️ Mapear columnas",
|
||||
"page_caption": "Renombra columnas, aplica un esquema objetivo y fuerza tipos. Se ejecuta localmente — tus datos nunca salen de este equipo."
|
||||
},
|
||||
"06_outlier_detector": {
|
||||
"name": "Detectar valores atípicos",
|
||||
"description": "Detección por Z-score, IQR y MAD con reglas de dominio y winsorización."
|
||||
"description": "Detección por Z-score, IQR y MAD con reglas de dominio y winsorización.",
|
||||
"page_title": "📊 Detectar valores atípicos",
|
||||
"page_caption": "Detecta y trata valores atípicos en columnas numéricas."
|
||||
},
|
||||
"07_multi_file_merger": {
|
||||
"name": "Combinar archivos",
|
||||
"description": "Combina varios archivos CSV/Excel alineando sus esquemas."
|
||||
"description": "Combina varios archivos CSV/Excel alineando sus esquemas.",
|
||||
"page_title": "📎 Combinar archivos",
|
||||
"page_caption": "Combina varios archivos CSV y Excel en un único conjunto de datos."
|
||||
},
|
||||
"08_validator_reporter": {
|
||||
"name": "Verificación de calidad",
|
||||
"description": "Valida contra reglas y genera informes de calidad en PDF/Excel."
|
||||
"description": "Valida contra reglas y genera informes de calidad en PDF/Excel.",
|
||||
"page_title": "✅ Verificación de calidad",
|
||||
"page_caption": "Valida datos contra reglas y genera informes de calidad."
|
||||
},
|
||||
"09_pipeline_runner": {
|
||||
"name": "Flujos automatizados",
|
||||
"description": "Encadena herramientas en el orden recomendado y pasa la salida entre pasos."
|
||||
"description": "Encadena herramientas en el orden recomendado y pasa la salida entre pasos.",
|
||||
"page_title": "⚙️ Flujos automatizados",
|
||||
"page_caption": "Encadena pasos de limpieza de DataTools en un flujo repetible. La canalización recomienda un orden; tú mantienes el control."
|
||||
}
|
||||
},
|
||||
"nav": {
|
||||
|
||||
Reference in New Issue
Block a user