fix: externaliza los textos en español y completa las traducciones de todos los idiomas #12

Closed
HBB wants to merge 0 commits from HBB:fix/i18n-hardcoded-strings into main
First-time contributor

Sustituye a #7, que Forgejo marcó como "broken due to missing fork information" y que dejó de recoger los commits nuevos de la rama. Misma rama y mismo contenido, más dos commits añadidos después.

31fcd3e — Varias cadenas visibles estaban en español y fijas en el código Kotlin (o en español dentro del strings.xml por defecto, que es el que ven los usuarios en inglés y en cualquier idioma sin traducir). Se mueven todas a recursos, con el inglés como idioma por defecto y el español en values-es. HtmlUtils.formatRelativeDate pasa a usar android.text.format.DateUtils, que localiza el tiempo relativo automáticamente en lugar del texto español fijo. No se tocan las heurísticas del scraper que comparan el HTML en español del servidor.

a23aa75 — Ese cambio solo añadía las claves nuevas al inglés y al español, así que los otros 14 idiomas recaían en el inglés: se añaden traducidas a ca, cs, de, el, fi, fr, gl, it, nl, pl, pt, ro, sv y uk. Además, la entrada "Sistema" del selector de idioma estaba fija en español (se veía "Sistema" también con la app en inglés), y text_someone, text_no_name y share_on_bookwyrm seguían en español en el archivo por defecto.

ef8523c — Al pasar text_no_content al inglés, la comparación de HomeScreen dejó de coincidir con el literal "Sin contenido" que ponía el scraper, y el marcador se mostraba tal cual en la línea de tiempo, en todos los idiomas. Ahora el scraper deja el campo vacío y es la interfaz la que decide qué mostrar.

Probado en un dispositivo real.

Sustituye a #7, que Forgejo marcó como "broken due to missing fork information" y que dejó de recoger los commits nuevos de la rama. Misma rama y mismo contenido, más dos commits añadidos después. **31fcd3e** — Varias cadenas visibles estaban en español y fijas en el código Kotlin (o en español dentro del `strings.xml` por defecto, que es el que ven los usuarios en inglés y en cualquier idioma sin traducir). Se mueven todas a recursos, con el inglés como idioma por defecto y el español en `values-es`. `HtmlUtils.formatRelativeDate` pasa a usar `android.text.format.DateUtils`, que localiza el tiempo relativo automáticamente en lugar del texto español fijo. No se tocan las heurísticas del scraper que comparan el HTML en español del servidor. **a23aa75** — Ese cambio solo añadía las claves nuevas al inglés y al español, así que los otros 14 idiomas recaían en el inglés: se añaden traducidas a ca, cs, de, el, fi, fr, gl, it, nl, pl, pt, ro, sv y uk. Además, la entrada "Sistema" del selector de idioma estaba fija en español (se veía "Sistema" también con la app en inglés), y `text_someone`, `text_no_name` y `share_on_bookwyrm` seguían en español en el archivo por defecto. **ef8523c** — Al pasar `text_no_content` al inglés, la comparación de `HomeScreen` dejó de coincidir con el literal `"Sin contenido"` que ponía el scraper, y el marcador se mostraba tal cual en la línea de tiempo, en todos los idiomas. Ahora el scraper deja el campo vacío y es la interfaz la que decide qué mostrar. Probado en un dispositivo real.
Varias cadenas visibles estaban en español y fijas en el código Kotlin (o en
español dentro del strings.xml por defecto, que es el que ven los usuarios en
inglés y en cualquier idioma sin traducir). Se mueven todas a recursos, con el
inglés como idioma por defecto y el español en values-es, de modo que la app
pueda traducirse a más idiomas y el inglés y el español queden correctos.

Cambios:
- strings.xml (por defecto): 7 cadenas que estaban en español pasan a inglés
  (error_missing_session_data, error_loading_data, text_no_content, text_see_more,
  activity_type_cita, quotation_page_format, quotation_quote_prefix) y se añaden
  sus traducciones al español en values-es (antes solo existían en el archivo por
  defecto, en español).
- Se añaden nuevas claves (inglés + español) para los literales que estaban fijos
  en Kotlin: BookDetailsDialog, HomeScreen y TimelineRepository.
- HtmlUtils.formatRelativeDate ahora usa android.text.format.DateUtils, que
  localiza el tiempo relativo automáticamente en todos los idiomas, en lugar del
  texto español ("hace X minutos", "ayer"...) y el formato de fecha fijado a es-ES.
- TimelineRepository recibe un Context para poder resolver los recursos; se
  actualizan sus dos puntos de construcción (Hilt y BookDetailsDialog).

No se tocan las heurísticas del scraper que comparan el HTML en español del
servidor (no son texto de interfaz).
Al externalizar los textos fijos en código (31fcd3e) solo se añadieron las
claves nuevas al idioma por defecto (inglés) y a values-es, de modo que los
otros 14 idiomas recaían en el inglés. Además quedaban literales en español.

Cambios:
- Se añaden las 17 claves nuevas traducidas a ca, cs, de, el, fi, fr, gl, it,
  nl, pl, pt, ro, sv y uk. Todos los idiomas pasan a 249 cadenas.
- SettingsScreen: la entrada "Sistema" del selector de idioma estaba fija en
  español (se veía "Sistema" también en inglés); ahora usa la clave ya
  traducida settings_theme_system.
- strings.xml (por defecto): text_someone ("Alguien"), text_no_name
  ("Sin nombre") y share_on_bookwyrm (" en BookWyrm:") estaban en español;
  pasan a inglés y sus versiones en español se añaden a values-es.
Al pasar text_no_content al inglés, la comparación de HomeScreen
(item.content != getString(text_no_content)) dejó de coincidir con el literal
español que ponía el scraper, y el marcador "Sin contenido" se mostraba tal
cual en la línea de tiempo, en todos los idiomas.

En vez de traducir el marcador (que volvería a romper la comparación), el
scraper deja el campo vacío y la interfaz decide qué mostrar:
- BookWyrmScraper: content y actorName conservan el valor vacío; el descarte
  de ítems vacíos se hace ahora con isBlank() en lugar de comparar textos.
- HomeScreen: las comprobaciones contra text_no_content sobran (basta
  isNotBlank), y el detalle muestra text_no_content si el contenido va vacío.
Los nombres de actor vacíos ya recaían en text_someone / activity_unknown_user.
Owner

Incluido, Gracias

Incluido, Gracias
ferlagod closed this pull request 2026-07-22 12:59:09 +00:00

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ferlagod/rocinante_android!12
No description provided.