bluesky-explorer / app /ui /language.py
jccolon's picture
Update app/ui/language.py
5a27480 verified
LANGUAGES = {
"Español": "es",
"English": "en",
}
TEXTS = {
"es": {
# General
"title": "🔎 Bluesky Explorer",
"ok": "Operación correcta",
# Language
"language": "Idioma",
"select_language": "Selecciona idioma",
# Login
"login_header": "Acceso a Bluesky",
"login": "Iniciar sesión",
"logout": "Cerrar sesión",
"handle": "Usuario",
"password": "Contraseña",
"invalid_credentials": "Credenciales inválidas",
# CSV
"import_csv": "Importar CSV",
"select_csv": "Selecciona un CSV exportado por la app",
"csv_loaded": "CSV cargado correctamente",
"csv_error": "Error al leer el CSV",
"preview_csv": "Previsualizar CSV",
"merge_csv": "Usar este CSV como base / unir resultados",
"missing_columns": "Faltan columnas",
# Search
"search_config": "Configuración de búsqueda",
"search": "Buscar",
"default_topic": "apagón",
"days_back": "Días atrás",
"max_posts": "Máximo de publicaciones",
"operator": "Operador",
"analysis_mode": "Modo de análisis",
"fast": "Rápido",
"precise": "Preciso",
"large_request": "La solicitud puede ser lenta",
"confirm": "Entiendo y quiero continuar",
# CSV uploader UI
"csv_drop_here": "Arrastra y suelta el archivo aquí",
"csv_limit": "Límite de 200 MB por archivo • CSV",
# BERT
"preload_bert": "Precargar modelo BERT",
"loading_bert": "Cargando modelo BERT...",
# Results
"no_posts": "No se encontraron publicaciones",
"no_results": "Realiza una búsqueda para ver resultados",
"total_posts": "Posts totales",
# Charts
"charts_panel": "Panel de gráficos",
"add_chart": "Añadir gráfico",
"charts_title": "📊 Panel de gráficos",
"no_data_chart": "No hay datos suficientes para este gráfico",
"export_error": "No se pudo exportar el gráfico",
"unsupported_chart": "Tipo de salida no soportado",
# PDF
"pdf_title": "Informe de Análisis - Bluesky Explorer",
"pdf_total_posts": "Total de publicaciones analizadas",
"pdf_charts": "Gráficos incluidos",
"download_pdf": "📄 Descargar informe en PDF",
"pdf_filename": "informe_bluesky.pdf",
# UI
"build_panel": "Selecciona un tipo de gráfico en la barra lateral y pulsa Añadir para construir tu panel",
"operator_help": "AND → las publicaciones deben contener todas las palabras. Puedes separarlas por espacios o por comas.\n\nOR → separa las palabras con coma para buscar cualquiera de ellas.\nEjemplo: pingüino emperador, foca, morsa",
"analysis_mode_help": "Rápido → análisis de sentimiento con un modelo ligero (más rápido).\nPreciso → análisis con modelo BERT (más lento pero más preciso).",
# Spinners
"fetching_posts": "Obteniendo publicaciones...",
"analyzing_sentiment": "Analizando sentimiento...",
# Panel / Charts UI
"charts_sidebar": "📈 Visualizaciones",
"charts_select_info": "Marca una o varias visualizaciones en la barra lateral.",
"charts_panel_title": "📊 Panel de gráficos",
"select_date_range": "📅 Selecciona un rango de fechas",
"messages_range": "📝 Mensajes del {start} al {end} ({count} mensajes)",
"no_messages_range": "No hay mensajes en ese rango.",
"chart_export_error": "No se pudo exportar '{name}'.",
"no_data_chart": "No hay datos suficientes para este gráfico.",
"unsupported_type": "Tipo no soportado: {type}",
"download_pdf": "📄 Descargar informe en PDF",
"pdf_filename": "informe_bluesky.pdf",
# Chart labels
"chart_posts_per_day": "📈 Posts por día + media móvil",
"chart_sentiment_count": "📊 Recuento por sentimiento",
"chart_sentiment_area": "🧭 Sentimiento (área apilada)",
"chart_wordcloud": "☁️ Nube de palabras",
"chart_heatmap_day_hour": "🗓️ Calor Día×Hora",
"chart_top_hashtags": "🏷️ Top hashtags",
"chart_hashtag_sentiment": "🏷️ Hashtag × Sentimiento",
"chart_top_mentions": "👤 Top menciones",
"chart_text_length": "📏 Longitud del texto",
"chart_top_domains": "🔗 Top dominios (URLs)",
# Chart helps
"chart_help_posts_per_day": "Muestra el número de publicaciones por día para identificar picos de actividad y cambios en la conversación.",
"chart_help_sentiment_count": "Distribución de las publicaciones según su sentimiento (muy negativo a muy positivo).",
"chart_help_sentiment_area": "Evolución temporal del sentimiento agregado a lo largo del tiempo.",
"chart_help_wordcloud": "Nube de palabras con los términos más frecuentes en las publicaciones analizadas.",
"chart_help_heatmap_day_hour": "Mapa de calor que muestra cuándo se publican más mensajes según día y hora.",
"chart_help_top_hashtags": "Hashtags más utilizados en el conjunto de publicaciones analizadas.",
"chart_help_hashtag_sentiment": "Sentimiento asociado a los hashtags más frecuentes.",
"chart_help_top_mentions": "Cuentas más mencionadas en las publicaciones.",
"chart_help_text_length": "Distribución de la longitud de las publicaciones según número de palabras.",
"chart_help_top_domains": "Dominios web más compartidos en los enlaces de las publicaciones.",
},
"en": {
# General
"title": "🔎 Bluesky Explorer",
"ok": "Operation successful",
# Language
"language": "Language",
"select_language": "Select language",
# Login
"login_header": "Bluesky Access",
"login": "Sign in",
"logout": "Sign out",
"handle": "User",
"password": "Password",
"invalid_credentials": "Invalid credentials",
# CSV
"import_csv": "Import CSV",
"select_csv": "Select CSV exported by the app",
"csv_loaded": "CSV loaded successfully",
"csv_error": "Error reading CSV",
"preview_csv": "Preview CSV",
"merge_csv": "Use this CSV as base / merge results",
"missing_columns": "Missing columns",
# Search
"search_config": "Search configuration",
"search": "Search",
"default_topic": "blackout",
"days_back": "Days back",
"max_posts": "Max posts",
"operator": "Operator",
"analysis_mode": "Analysis mode",
"fast": "Fast",
"precise": "Precise",
"large_request": "Large request may be slow",
"confirm": "I understand",
# CSV uploader UI
"csv_drop_here": "Drag and drop the file here",
"csv_limit": "Up to 200 MB per file • CSV",
# BERT
"preload_bert": "Preload BERT model",
"loading_bert": "Loading BERT model...",
# Results
"no_posts": "No posts found",
"no_results": "Run a search to see results",
"total_posts": "Total posts",
# Charts
"charts_panel": "Charts panel",
"add_chart": "Add chart",
"charts_title": "📊 Charts panel",
"no_data_chart": "Not enough data for this chart",
"export_error": "Could not export chart",
"unsupported_chart": "Unsupported output type",
# PDF
"pdf_title": "Analysis Report - Bluesky Explorer",
"pdf_total_posts": "Total posts analyzed",
"pdf_charts": "Charts included",
"download_pdf": "📄 Download PDF report",
"pdf_filename": "bluesky_report.pdf",
# UI
"build_panel": "Select a chart type from the sidebar and click Add to build your panel",
"operator_help": "AND → posts must contain all keywords. You can separate them with spaces or commas.\n\nOR → separate keywords with commas to match any of them.\nExample: emperor penguin, seal, walrus",
"analysis_mode_help": "Rápido → análisis de sentimiento con un modelo ligero (más rápido).\nPreciso → análisis con modelo BERT (más lento pero más preciso).",
# Spinners
"fetching_posts": "Fetching posts...",
"analyzing_sentiment": "Analyzing sentiment...",
# Panel / Charts UI
"charts_sidebar": "📈 Visualizations",
"charts_select_info": "Select one or more visualizations from the sidebar.",
"charts_panel_title": "📊 Charts panel",
"select_date_range": "📅 Select a date range",
"messages_range": "📝 Messages from {start} to {end} ({count} messages)",
"no_messages_range": "No messages in this range.",
"chart_export_error": "Could not export '{name}'.",
"no_data_chart": "Not enough data for this chart.",
"unsupported_type": "Unsupported type: {type}",
"download_pdf": "📄 Download PDF report",
"pdf_filename": "bluesky_report.pdf",
# Chart labels
"chart_posts_per_day": "📈 Posts per day + moving average",
"chart_sentiment_count": "📊 Sentiment count",
"chart_sentiment_area": "🧭 Sentiment (stacked area)",
"chart_wordcloud": "☁️ Word cloud",
"chart_heatmap_day_hour": "🗓️ Day × Hour heatmap",
"chart_top_hashtags": "🏷️ Top hashtags",
"chart_hashtag_sentiment": "🏷️ Hashtag × sentiment",
"chart_top_mentions": "👤 Top mentions",
"chart_text_length": "📏 Text length",
"chart_top_domains": "🔗 Top domains (URLs)",
# Chart helps
"chart_help_posts_per_day": "Shows the number of posts per day to identify activity peaks and conversation trends.",
"chart_help_sentiment_count": "Distribution of posts by sentiment (very negative to very positive).",
"chart_help_sentiment_area": "Temporal evolution of the aggregated sentiment over time.",
"chart_help_wordcloud": "Word cloud showing the most frequent terms in the analyzed posts.",
"chart_help_heatmap_day_hour": "Heatmap showing when posts are published by day and hour.",
"chart_help_top_hashtags": "Most frequently used hashtags in the dataset.",
"chart_help_hashtag_sentiment": "Sentiment associated with the most frequent hashtags.",
"chart_help_top_mentions": "Accounts most frequently mentioned in the posts.",
"chart_help_text_length": "Distribution of post length measured in number of words.",
"chart_help_top_domains": "Most shared web domains in the posts.",
},
}