glaterza opened a new pull request, #45958:
URL: https://github.com/apache/superset/pull/45958
### SUMMARY
This PR corrects 61 entries in the Spanish catalog. Most of them are fuzzy
entries that Babel's fuzzy matcher copied from a different msgid. Superset
serves fuzzy entries, so Spanish users see the copies. For example, the Themes
page title reads «Hora/fecha» ("Time/date"). The dashboard properties section
"Access" reads «correcto» ("correct").
Each group below covers a whole control or screen, so that related options
stay consistent. Of the 61 entries, 50 had the fuzzy flag, 8 had no translation
and 3 had a reviewed translation. All 61 become non-fuzzy. No other entry
changes.
`msgfmt --statistics` for `es`: translated 3952 -> 4010, fuzzy 895 -> 845,
untranslated 1071 -> 1063.
#### Strandings on single screens (23)
| English | Before | After |
| --- | --- | --- |
| Styling | «CADENA» | «Estilo» |
| Access | «correcto» | «Acceso» |
| Refresh settings | «Ajustes de archivo» | «Actualización automática» |
| Advanced settings | «Análisis avanzados» | «Ajustes avanzados» |
| Series settings | «Ajustes de archivo» | «Ajustes de series» |
| Folders | «Filtros» | «Carpetas» |
| Auto-detect | «Autocompletar» | «Detección automática» |
| Theme | «Hora/fecha» | «Tema» |
| Themes | «Hora/fecha» | «Temas» |
| theme | «Hora/fecha» | «tema» |
| System | «transmitir» | «Sistema» |
| Why do I need to create a database? | «¿Quieres añadir una nueva base de
datos?» | «¿Por qué tengo que crear una base de datos?» |
| Enter a part of the object name | «Si se deben rellenar los objetos» |
«Introduce parte del nombre del objeto» |
| string | «CADENA» | «texto» |
| numeric | «NUMÉRICO» | «numérico» |
| boolean | «BOOLEANO» | «booleano» |
| timestamp | «Mostrar marca de tiempo» | «fecha y hora» |
| STRING | «CADENA» | «TEXTO» |
| Formatting column | «Formateando» | «Columna a formatear» |
| Formatting object | «Formateando» | «Elemento a formatear» |
| Select object name | «Seleccionar asunto» | «Seleccionar elemento» |
| Use gradient | «Granularidad temporal» | «Usar gradiente» |
| Formatting | «Formateando» | «Formato» |
"timestamp", "string", "numeric" and "boolean" are the column type labels in
the column tooltip. The tooltip shows them only for a column without a database
type. The msgid `STRING` is an option of the column type select in the dataset
editor. Its sibling `DATETIME` has the reviewed msgstr `FECHA Y HORA`. So
"timestamp" becomes «fecha y hora», and both string labels become «texto».
"Refresh settings" is the title of the dashboard properties section that
holds the refresh frequency. Its subtitle reads "Configure automatic dashboard
refresh". «Actualización automática» names that feature, as in the reviewed
«Establecer intervalo de actualización automática».
#### Label positions (18)
This is a terminology decision. "Inside" becomes «Interior», followed by the
direction words that the catalog already uses for "Top", "Bottom", "Left" and
"Right". "Right" changes from «Derecho» to «Derecha», to match «Izquierda».
| English | Before | After |
| --- | --- | --- |
| Inside | «Índice» | «Interior» |
| Inside top | «Interior superior» | «Interior arriba» |
| Inside bottom | «inferior» | «Interior abajo» |
| Inside left | «Anclar a la izquierda» | «Interior izquierda» |
| Inside right | «Anclar a la derecha» | «Interior derecha» |
| Inside top left | «Arriba a la izquierda» | «Interior arriba a la
izquierda» |
| Inside top right | «Arriba a la derecha» | «Interior arriba a la derecha» |
| Inside bottom left | «Abajo a la izquierda» | «Interior abajo a la
izquierda» |
| Inside bottom right | «Abajo a la derecha» | «Interior abajo a la derecha»
|
| Inside End | untranslated | «Extremo interno» |
| Outside End | untranslated | «Extremo externo» |
| Inside Center | untranslated | «Centro» |
| Inside Base | untranslated | «Base interior» |
| Right | «Derecho» | «Derecha» |
| Label Position | untranslated | «Posición de la etiqueta» |
| Value label position | untranslated | «Posición de la etiqueta de valor» |
| Position of the data label relative to the data point | untranslated |
«Posición de la etiqueta de datos respecto al punto de datos» |
| Choose where to display values relative to the bars | untranslated |
«Elige dónde mostrar los valores respecto a las barras» |
Rejected options:
- «Interior superior» reads as a noun phrase, not as a position.
- «Dentro, arriba» is longer, and the comma reads oddly in a dropdown.
The four options of the bar chart "Value label position" control name a
point on the bar. "End" is the tip of the bar, and "Base" is the end on the
axis. These English names are the data label positions of Microsoft Excel.
Spanish Excel guides name them «Extremo interno», «Extremo externo», «Centro»
and «Base interior»
([source](https://exceltotal.com/agregar-etiquetas-de-datos-a-un-grafico/)).
This PR uses the same names. I rejected «Interior final» and «Interior base»,
because they read as directions.
Superset's Select sorts options by label. With this change the 9 "Inside"
positions in the Radar chart sort together.
#### deck.gl GeoJSON point labels and icons (20)
This is a terminology decision. GIS "feature" becomes «entidad». Esri uses
this term in its Spanish documentation. The ArcGIS Online GeoJSON page says:
«Los objetos de FeatureCollection contienen conjuntos de entidades.»
([source](https://doc.arcgis.com/es/arcgis-online/reference/geojson.htm)). Two
entries use the term.
Rejected options:
- «elemento» is the generic UI word in this catalog. It does not mark the
GIS term.
- «objeto espacial» is the term of the `QGIS` manual. It is longer.
- «fenómeno» appears only in the Spanish edition of ISO 19110.
«entidad» already translates "entity" in 6 reviewed strings, for example
"Add tag to entities". The GIS strings appear only in the deck.gl GeoJSON
controls, and that control panel shows none of those 6 strings.
Most other labels in this group were strandings too, for example "Enable
icons" read «Columnas de la tabla» ("Table columns").
| English | Before | After |
| --- | --- | --- |
| Enable labels | «Etiquetas de intervalo» | «Habilitar etiquetas» |
| Label property name | «Nombre de la alerta» | «Nombre de la propiedad de
la etiqueta» |
| The feature property to use for point labels | «La propiedad de elemento a
usar para las etiquetas de puntos» | «La propiedad de la entidad que se usa
para las etiquetas de los puntos» |
| Label color | «Color de relleno» | «Color de la etiqueta» |
| The color of the point labels | «El color de la isolínea» | «El color de
las etiquetas de los puntos» |
| Label size | «Línea de la etiqueta» | «Tamaño de la etiqueta» |
| The font size of the point labels | «Si se debe mostrar el puntero» | «El
tamaño de fuente de las etiquetas de los puntos» |
| Label size unit | «Línea de la etiqueta» | «Unidad del tamaño de la
etiqueta» |
| Meters | «metros» | «Metros» |
| Enable icons | «Columnas de la tabla» | «Habilitar iconos» |
| Icon URL | «Copiar URL» | «URL del icono» |
| Icon size | «Tamaño de fuente» | «Tamaño del icono» |
| The size of the point icons | «La anchura de la isolínea en píxeles» | «El
tamaño de los iconos de los puntos» |
| Icon size unit | «Tamaño de fuente» | «Unidad del tamaño del icono» |
| The unit for icon size | «Tamaño de fuente del subtítulo» | «La unidad del
tamaño del icono» |
| The radius of point features, in the units specified belo... | «El radio
de las entidades de punto, en las unidades especificadas a continuación. El
tamaño final renderizado es este valor multiplicado por la escala del radio de
punto.» | «El radio de las entidades de punto, en las unidades indicadas abajo.
El tamaño final es este valor multiplicado por la escala del radio del punto.» |
| A multiplier applied to the point radius. Use this to uni... | «Un
multiplicador aplicado al radio del punto. Úselo para escalar uniformemente
todos los puntos.» | «Un multiplicador aplicado al radio del punto. Úsalo para
escalar todos los puntos por igual.» |
| Point Radius Units | «Unidades del radio de punto» | «Unidades del radio
del punto» |
| The unit for point radius. Use "pixels" for consistent sc... | «La unidad
para el radio de punto. Use "píxeles" para un tamaño consistente en el espacio
de pantalla independientemente del nivel de zoom.» | «La unidad del radio del
punto. Usa "píxeles" para que el tamaño en pantalla no cambie con el nivel de
zoom.» |
| Common (unit per pixel at zoom 0) | «Común (unidad por píxel en zoom 0)» |
«Común (unidad por píxel en zoom 0)» |
Four entries of this control group are not in this PR. #45847 promotes them
with their current text.
### BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
Captured from a local production build. Each image shows master's catalog on
the left and this branch on the right. Both sides come from the same build and
database. Only the compiled `es` catalog differs.
Dashboard properties, section titles («Acceso», «Estilo», «Actualización
automática», «Ajustes avanzados»):
IMG:A1-dashboard-properties-sections
Themes page: title, add button and system badge:
IMG:A2-themes-page
Conditional formatting popover («Columna a formatear», «Elemento a
formatear», «Usar gradiente»):
IMG:A4-conditional-formatting-gradient
Dataset editor, column type select of a calculated column (the `STRING`
option):
IMG:A3-dataset-column-type
Radar chart, label position («Interior» + direction):
IMG:B-radar-label-position
Bar chart, value label position (Excel's names):
IMG:B-bar-value-label-position
deck.gl GeoJSON, point labels:
IMG:C-geojson-labels
The script captured 20 more screens with the same layout. They are available
on request.
Four changes have no screenshot. "Select object name" is the accessible name
of a select, which screen readers announce. The script checked its
`aria-label`. "Auto-detect" appears in the currency format select only when the
dataset has a currency code column. The script set one in the local database
and checked the option text. The tooltip shows its column type labels only for
a column without a database type name. I did not set up such a column. The
dataset editor screenshot shows the `STRING` option in the same column type
family. The lowercase "theme" fills in the resource messages of the Themes
page, such as the import dialog and error toasts. I did not trigger those.
### TESTING INSTRUCTIONS
1. Build the frontend and compile the Spanish catalog: `npm run
build-translation` in `superset-frontend`, then `pybabel compile --use-fuzzy -d
superset/translations -l es`.
2. Set `LANGUAGES` to include `es`, then switch the UI to Spanish.
3. Open Settings, then Themes. The page title reads «Temas», and the button
reads «Tema».
4. Edit a dashboard and open its properties. The sections read «Acceso»,
«Estilo», «Actualización automática» and «Ajustes avanzados».
5. Open the Radar chart in Explore, enable labels, and open "Posición de la
etiqueta". The options read «Interior», «Interior arriba» and so on.
6. Run `msgfmt -c --statistics
superset/translations/es/LC_MESSAGES/messages.po`. It reports 4010 translated
and 845 fuzzy.
A Playwright script opened each screen and checked that the rendered text
equals the served catalog's msgstr. It passed 28 of 29 checks against master's
catalog and 28 of 29 against this branch. The Drill to detail check did not
run, because the local database held no example data. That screenshot comes
from an earlier run of the same entry, and this revision does not change it.
### ADDITIONAL INFORMATION
- [ ] Has associated issue:
- [ ] Required feature flags:
- [x] Changes UI
- [ ] Includes DB Migration (follow approval process in
[SIP-59](https://github.com/apache/superset/issues/13351))
- [ ] Migration is atomic, supports rollback & is backwards-compatible
- [ ] Confirm DB migration upgrade and downgrade tested
- [ ] Runtime estimates and downtime expectations provided
- [ ] Introduces new feature or API
- [ ] Removes existing feature or API
This PR and #45847 change different entries. A three-way merge of both
branches has no conflicts.
The same screens hold more strandings, for example in the theme editor and
the dataset folders editor. They need their own PRs. Strings that mention
"dashboard" wait for the dashboard term decision.
Local checks skipped: pytest, Jest and the frontend toolchain check, because
no Python or frontend source changed. I also skipped the catalog-propagation
check, because `messages.pot` did not change.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]