Settle the page chips on the outlined pill and give authors a priority flag
The pill without fill is the chosen style, so it is the only one left: the
plain text run and the filled pill are deleted with their CSS, the
data-page-chips attribute is gone and the chips render whenever a page has
references. The switcher keeps only the API treatment and is labelled for it.
The pill outline was the one thing I had left below its accessibility target.
It now clears 3:1 against the page background in both themes, measured on the
composited colour: 50 % alpha dark for both categories, 80 and 90 % light,
where solid amber on white only reaches 3.99:1 to begin with. Nothing else
about the chip changed, so the approved size, padding, radius and spacing are
untouched.
Which sources survive the caps is no longer frontmatter order alone: a
reference marked primary: true is promoted within its category run, with
frontmatter order as the tiebreak, so a page with a long bibliography can
advertise the sources it leans on. The field is optional and documented in
the schema.
The ICAO Annex 16 entry on the aircraft-noise page carried an edition string
where its document number belongs, so that page derived no chip for the
standard it implements. Both language versions now name the document.
Spanish docs: UNE terminology, decimal commas, localized snippets and theory figures (#365)
* Normalize Spanish docs prose to UNE acoustic terminology
Sweep the Spanish pages for the non-UNE forms "presion sonora",
"potencia sonora" and "intensidad sonora" and normalize the prose to
the wording used by the official Spanish editions of the standards:
"presion acustica" (UNE-EN ISO 16283-2:2016, UNE-EN ISO 10052:2005,
UNE-EN ISO 3746:2011, UNE-ISO 226:2013), "potencia acustica"
(UNE-EN ISO 3746:2011, UNE-EN ISO 4871:2010, UNE-EN ISO 9614-1:2010),
"intensidad acustica" (UNE-EN 61043:1999, UNE-EN ISO 9614-1:2010) and
"nivel de presion acustica de impactos" (UNE-EN ISO 12354-2:2018,
UNE-EN ISO 717-2:2013). 92 replacements across 32 pages, prose only:
code snippets keep the labels they share with the generated figures.
Rename the intensity guide to "Intensidad acustica (p-p)" and the
structure-borne power guide to "Potencia acustica estructural de
equipos (EN 15657)", updating every cross-link text and the theory
anchor intensidad-sonora-iec-61043 accordingly. The API sidebar group
label becomes "Potencia acustica e intensidad" via api_taxonomy.py
with the generated sidebar regenerated.
* Use decimal commas in Spanish docs prose quantities
Sweep every Spanish page for decimal points leaking into prose numbers
and switch them to the comma the locale convention calls for: the
rotorcraft validation prose (fourteen tolerances such as 0,08 dB(A) and
0,5 s), the insulation-prediction worked example (53,6 dB / 53,8 dB),
the tone-audibility Annex E tone (137,3 Hz), the Mackenzie check value
(1550,744 m/s), the EPNL, loudness and absorption fiche descriptions
(98,3 EPNdB; 8,2 sonos and 70,4 fonios; 0,60 y 0,55), the junction
constants table and the third-octave band-edge table in the signal
analysis theory page. Code snippets, inline code, math, clause numbers
and quoted source text keep their points.
* Pass language="es" in Spanish figure-reproduction snippets
The <details> blocks under each localized figure in the Spanish guides
are meant to reproduce the _es variant shown on the page, but 82 of the
one-line result .plot() calls omitted the language="es" argument and
would render English axis labels instead. Add the argument across 33
guides, matching the pattern the intensity field-indicators snippet
already used. The three lab-insulation results whose plot() does not
take a language argument (lab airborne, lab impact and the
element-normalized intensity difference) are left as they were.
* Extend the UNE terminology sweep to sound absorption
Normalize "absorción sonora" to "absorción acústica" across the
Spanish pages (36 occurrences in 14 pages, including the EN 12354-6
guide title and the theory headings), the wording of UNE-EN ISO
3746:2011 and of the equivalent absorption area in UNE-EN ISO
10140-3:2011, UNE-EN ISO 12354-2:2018 and UNE-EN ISO 16283-2:2016, and
the same term the accredited report strings already use. Also restore
the accent in the theory index anchor to the renamed intensity heading,
since heading slugs keep accented characters.
* Theory pages: illustrate each section family with existing result figures
The seven theory pages carried no figures at all. Embed sixteen of the
existing generated figures (light and dark variants, Spanish variants on
the Spanish mirrors) where the concept matches the prose: weighting
curves, time integration and the p-p intensity estimator in the signal
analysis page; equal-loudness contours, the specific-loudness pattern
and the hearing-threshold panels in perception; NC/RC rating, the
Schroeder decay and the ISO 717-1 shifted reference in rooms and
buildings; the Lden profile, ISO 9613-1 absorption and the three sound
power routes in environment and transport; the scattering coefficient
and ISO 11654 rating in materials and surfaces; and the Wk weighting and
the resonator mobility triplet in vibration. Each embed reuses the alt
text of the guide that owns the figure and adds a one-line caption.
Also give the wave-simulation section hub the reading-order paragraph
its siblings already have, linking the closed-form pages the FDTD solver
cross-checks, in both languages.
* Address review findings from the Spanish locale sweeps
Second pass fixes flagged by review: five terminology occurrences the
line-based sweep missed because the noun and adjective were split by a
line wrap or emphasis markup (sound-power, rotorcraft-noise and two
section hubs); six Spanish pages that still embedded the English figure
variant although the _es variant exists (junction-transmission,
aircraft-noise airport contour, miso-coherence,
objective-intelligibility, psychoacoustic-annoyance twice); and 19 more
language="es" arguments on figure-reproduction plot calls the first
pass missed, chained-call receivers such as room.noise_criterion(spl)
.plot() and the axes-creating first call of the two-profile
atmospheric-refraction snippet among them. The lab-insulation plot
wrappers forward keyword arguments to the rating plot, so the three
calls excluded earlier now take the argument too. All Spanish python
fences re-checked to compile and EN/ES parity re-verified.
* Carry the UNE terminology into the generated-asset Spanish strings
Apply the same evidence-based decisions to every Spanish string source
that feeds generated assets: the translation tables of
generate_graphs.py and generate_diagrams.py, the _STRINGS tables of the
plot modules and the report i18n values. 35 strings change: "presión
acústica" (UNE-EN ISO 16283-2:2016, 10052:2005, 3746:2011),
"potencia acústica" (UNE-EN ISO 3746:2011, 4871:2010, 9614-1:2010),
"intensidad acústica" (UNE-EN 61043:1999, 9614-1:2010), "absorción
acústica" (UNE-EN ISO 3746:2011) and "nivel de presión acústica de
impactos" (UNE-EN ISO 12354-2:2018). Strings the UNE editions keep are
untouched: "emisión sonora", "exposición sonora", "campo sonoro",
"fuente sonora". Only Spanish values change; the English keys stay.
The two plot-i18n test assertions that pin the axis label follow, and
the eight Spanish doc fences that deliberately mirrored the old figure
labels now mirror the new ones.
* Regenerate the Spanish figure variants with the UNE terminology
make graphs after the string-source change: 48 files, all of them _es
or _es_dark variants (24 figure/diagram pairs), picking up "presión
acústica", "potencia acústica", "intensidad acústica", "absorción
acústica" and "nivel de presión acústica de impactos" in titles and
axis labels. The English variants are untouched. The committed example
fiches need no regeneration: every example in generate_reports.py
renders in English, so no changed Spanish report string reaches them.
* Align the intensity-fiche Spanish assertions with the UNE terminology
docs: refresh install extras and landing pages to current library scope (#274)
* docs: refresh install extras and landing pages to current library scope
The install docs listed only the plot, perf and full extras; add the report
extra (reportlab + svglib, required for the .report() PDF fiches) and fix the
stale 'both' comment on full in the site getting-started pages (EN/ES),
docs/getting-started.md and the README install line.
Refresh the landing pages, which predated most of the library:
- Site index (EN/ES): hero and cards now describe all fifteen domain
namespaces, the 371 conformance checks across 46 domains and 235 standards,
bilingual .plot() figures and the normative .report() PDF fiches.
- Getting started (EN/ES): note that the metrology core is one of fifteen
domains and link Why phonometry and the conformance report.
- Why phonometry (EN/ES): state the current conformance scale beyond the
metrology-core sample table.
- README: current toolkit description, missing domain highlights (hearing,
materials, vibration, aircraft, underwater, electroacoustics, noise control,
FDTD, fiches), five sound-power routes, G weighting, and twelve to fifteen
namespaces.
- Shorten the junction-transmission page titles (EN/ES) to satisfy the
70-character html-validate limit.
* docs: name all standards bodies on the landing description and tighten the ES card wording
Add ANSI, DIN and ECAC/CEAC to the standards-body enumeration in the site
index description (both languages), keep 'con estado' for the stateful block
processing in the Spanish card, and use the Spanish 'Doc 29/32 de la CEAC'
form already used by the Spanish guides.
Rework the front page, and add a mobile theme toggle and language detection
Front page. The landing was the README feature list as ten cards of 60 to 90
words: it stated everything and showed nothing, and its numbers were an
earlier release's (371 checks, 235 standards, against the 427 over 278 the
conformance report now produces). It is now five blocks that each answer one
question: the numbers with no adjectives, what this is with who it is for and
an explicit list of what it is not, one worked example beside the figure it
draws and one rating beside the PDF fiche it renders, the coverage of nine
areas as a table of standards, and a three-step path from nothing to a first
analysis. Text lives in src/data/home.ts, one object per locale sharing one
shape, so English and Spanish cannot drift apart; every number in it is
sourced from the repository and the file records where.
The splash column widens to 62rem, the sidebar gutter Starlight reserves is
zeroed so the page is centred, and the hero grid collapses to one column
since there is no hero image.
Mobile header. Below the md breakpoint Starlight hides the theme control
behind the hamburger. Header.astro now surfaces it next to the language
picker, in the desktop order, as an icon-and-caret stub. Starlight's own
updatePickers() already walks every theme select on the page, so the mobile
stub and the desktop control stay in sync with no extra code.
Language detection. LangSuggest.astro offers the other language on a first
visit, in banner mode by default, with redirect and off available from the
prototype switcher. An explicit locale in the URL wins, the language picker
records the choice, and once anything is stored nothing ever navigates on its
own again, so a deliberately opened English URL is never hijacked.
Redirection is guarded by a stored choice, a session flag and a target check,
so it cannot loop; crawlers are skipped by user agent; the English-only API
subtree opts out entirely; and none of it touches canonical or hreflang.
scripts/check-lang-suggest.mjs drives eleven scenarios in isolated browser
contexts: 0 failing.
Build with link check, html-validate, pa11y at WCAG2AA (46/46) and the EN/ES
parity gate all pass.