Skip to content

Migrate /lp/es/barcelona to design tokens + shared components (FIL-856) - #106

Merged
filipagr merged 8 commits into
mainfrom
filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components
Jul 31, 2026
Merged

Migrate /lp/es/barcelona to design tokens + shared components (FIL-856)#106
filipagr merged 8 commits into
mainfrom
filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components

Conversation

@filipagr

@filipagr filipagr commented Jul 30, 2026

Copy link
Copy Markdown
Collaborator

The Spanish twin of /lp/barcelona, now structurally identical to the EN page from PR #105.

Closes FIL-856.

Stacked on #105 — it depends on PriceComparisonTable and the StatCard note prop. Base is the FIL-854 branch; retarget to main once that merges.

The page

before after
lines 637 269
hardcoded hex 59 0
inline style={{}} 65 0
inline fontFamily 18 0

Same section order and same components as the EN page: Hero, FeaturedInBar, StatCard, FeatureCard, PriceComparisonTable, IntegrationsSection, CtaBanner. useLang("es") and the lang / supportHref / contactSalesHref props on the navbar and footer are preserved.

Shared components needed three small extensions

Rather than keep translated duplicates, the components now take the Spanish copy:

  • IntegrationsSection had English copy hardcoded, which is why this page inlined its own translated duplicate of the whole section. Copy is now overridable via optional props defaulting to the current English strings, and the duplicate is deleted.
  • CtaBanner hardcoded a 480px heading cap; the Spanish heading needs 620. Now a headingMaxWidth prop, default 480.
  • PriceComparisonTable coloured cells by parsing with a dot-decimal assumption, so 1,83 € parsed as 183 and rendered red as a large charge. Parsing now handles both conventions. This was a latent bug in Migrate /lp/barcelona to design tokens + shared components (FIL-854) #105 that only the Spanish figures expose.

All three land with English defaults, so no existing caller changes. Verified: the EN page still shows English integrations copy and a 480px CTA heading.

Localisation

Number formatting is now Spanish throughout, via a shared eurEs() formatter and PRICE_PER_TB_SHORT_EUR_ES / EUR_USD_RATE_ES / EUR_USD_RATE_SOURCE_ES in the pricing constants, used by both the page and routeMeta.mjs. The page previously contradicted itself: the hero said 4,99 €/TB while the stat card said €4.99/TB and the footnote said 4.99 €/TB.

This alters visible table figures (€49.90 becomes 49,90 €) and is the one change beyond a like-for-like migration. Spanish convention is a decimal comma with the symbol trailing, so it is part of "in Spanish", but it is easy to revert.

Terminology was unified on the untranslated egress. The page had used four different phrasings for the same concept: Egress in the table header, egress in the title and meta, tráfico de salida in the hero and section copy, and bare salida in the stat card and CTA. The pricing subhead said "10 TB de tráfico de salida" three words from a column header reading "Egress". This matches the other loanwords the page already keeps in English (endpoint, stack, SDK, Object Lock), and leaves the title, meta and column header untouched, so nothing SEO-relevant moves.

Over-translation fixed: vendor region labels had been rendered with Spanish exonyms (Backblaze's eu-central-003 Amsterdam as Ámsterdam, Wasabi's eu-west-2 Paris as París). These sit next to machine identifiers and should match what a reader sees in their own console. Reverted to the vendor spelling.

Copy revisions

Seven commits of Spanish copy review sit on top of the migration:

  • CTA is now "Empieza con 30 días gratis" across all three call sites
  • "Costes por egress" rather than "de", matching "sin cargos por egress" used elsewhere; applied to the CTA subhead too so the page does not split between the two prepositions
  • Stat note "Con 10 TB de almacenamiento y 10 TB de egress"
  • Pricing subhead "Un equipo en Barcelona con 10 TB de almacenamiento, 10 TB de egress al mes y 500.000 operaciones sobre objetos."
  • Conversion footnote names both currencies: "convertido de USD a EUR utilizando un tipo de cambio de 1 € = 1,17 $ (BCE, mayo de 2026)". It previously read "Los precios de la competencia", which risked parsing as precios competitivos, i.e. a claim about our own pricing; now "Los precios de los demás proveedores"
  • Feature cards: SDKs to SDK, "tu flujo" to "tu flujo de trabajo", a space before % per SI/RAE convention, "manipulación" to "manipulaciones"
  • Docs link "Ver documentación"; CTA note "No necesitas tarjeta de crédito." instead of the impersonal "No se requiere...", matching the address used throughout

Hero titleMaxWidth is 900, not the EN page's 760 — the Spanish second line measures 881px at the 62px display size and was wrapping to three lines.

Verification

  • Contrast sweep of all 134 text nodes in <main>: no AA failures
  • Table colouring confirmed on Spanish figures: 0 € success, 790 € danger, 1,83 € neutral
  • Prerendered ES meta renders lang="es" with the Spanish price format; EN meta byte-identical
  • Types, lint (0 errors), 21 tests, full production build all pass

Known, not addressed

FeatureCard descriptions are meant to fit two lines max. The Spanish ones run to three (241px cards vs the EN page's 218px). This is inherent to Spanish being longer, not caused by this PR — the pre-migration copy was the same length — and the grid stays even because all six wrap identically. Trimming each description by roughly 20 to 25 characters would bring them back to two lines.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fil-one Ready Ready Preview Jul 30, 2026 9:53pm

Request Review

@filecoinfoundation-inf filecoinfoundation-inf left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed the diff — clean refactor consolidating the Barcelona ES landing page into shared components with proper Spanish EUR pricing formatting. No security concerns found.

@filipagr
filipagr force-pushed the filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components branch from c620841 to a18c0f0 Compare July 30, 2026 21:50
Base automatically changed from filipa/fil-854-migrate-lpbarcelona-to-design-tokens-shared-components to main July 30, 2026 21:51
filipa-filecoin and others added 8 commits July 30, 2026 18:51
The Spanish twin of /lp/barcelona, now structurally identical to the EN
page migrated in FIL-854. 637 to 269 lines, with 59 hardcoded hex, 65
inline style blocks and 18 inline fontFamily declarations all to zero.

Three shared components needed small extensions so the ES page could use
them rather than keeping translated copies:

- IntegrationsSection had its English copy hardcoded, so this page inlined
  its own translated duplicate. Copy is now overridable via optional props
  defaulting to the current English, and the duplicate is gone.
- CtaBanner hardcoded a 480px heading cap; the Spanish heading needs 620.
  Now a headingMaxWidth prop with 480 as the default.
- PriceComparisonTable coloured values by parsing with a dot-decimal
  assumption, so "1,83 €" parsed as 183 and rendered as a large charge in
  red. Parsing now handles both the English and Spanish conventions.

Number formatting on this page was previously inconsistent: the hero used
Spanish convention ("4,99 €/TB") while the stat card ("€4.99/TB") and the
footnote ("4.99 €/TB") used English. It is now Spanish throughout, via a
shared eurEs() formatter and PRICE_PER_TB_SHORT_EUR_ES in pricing
constants, used by the page and by routeMeta.mjs.

The stat card carries the same workload qualifier as the EN page, since
the 20x is total-bill and therefore egress-driven.

Verified: EN page and the other IntegrationsSection / CtaBanner consumers
are unchanged by the new props. Table value colouring confirmed correct
on Spanish figures. Contrast sweep of all 134 text nodes in main reports
no AA failures. Prerendered ES meta renders lang="es" with the Spanish
price format.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The page used four different phrasings for the same concept, all
inherited from the pre-migration copy: "Egress" in the table header,
"egress" in the title and meta, "tráfico de salida" in the hero and
section copy, and bare "salida" in the stat card and CTA. The pricing
subhead said "10 TB de tráfico de salida" three words from a column
header reading "Egress".

Unified on the untranslated "egress", matching the table header and the
SEO title, and consistent with the other loanwords the page already keeps
in English (endpoint, stack, SDKs, Object Lock). Title, meta description
and column header were already correct and are untouched, so nothing
SEO-relevant moves.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three corrections found reviewing the Spanish copy.

Vendor region labels were over-translated: I had rendered Backblaze's
"eu-central-003 Amsterdam" and Wasabi's "eu-west-2 Paris" with Spanish
exonyms. These are vendor region labels sitting next to machine
identifiers, so a reader cross-checking their console sees the unaccented
form. Reverted to the vendor spelling.

"Los precios de la competencia" risked reading as "precios competitivos",
i.e. a claim about our own pricing rather than the other providers'. Now
"Los precios de los demás proveedores", which points at the table rows
directly. The sentence also said "tipo de cambio" twice; the second is
dropped.

The dollar figure in that footnote was still English-formatted ("$1.17")
on a page that is otherwise Spanish throughout. Added EUR_USD_RATE_ES
("1,17 $") and EUR_USD_RATE_SOURCE_ES ("BCE, mayo de 2026") to the
pricing constants so the rate, its format and its provenance stay in one
place rather than being retyped per page.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Applied to all three call sites: the hero, the mid-page button after the
pricing table, and the closing CTA banner.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"Costes de egress" to "Costes por egress", matching the "sin cargos por
egress" phrasing used in the hero, positioning subhead and features card.
Applied the same preposition to the CTA subhead, which still read "sin
costes de egress", so the page does not split between the two forms.

Stat note is now "Con 10 TB de almacenamiento y 10 TB de egress", which
parallels the two halves instead of switching from participle to noun.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"Un equipo en Barcelona con 10 TB de almacenamiento, 10 TB de egress al
mes y 500.000 operaciones sobre objetos." Puts the three workload figures
in one parallel list instead of splitting the team size from the rest,
and uses "operaciones sobre objetos".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"convertido de USD a EUR utilizando un tipo de cambio de..." — the
previous wording jumped from "de USD" straight to the rate without
naming the target currency.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Feature cards: "SDKs" to "SDK" (Spanish does not take the -s on
initialisms), "tu flujo" to "tu flujo de trabajo", a space before the
percent sign per SI/RAE convention, and "manipulación" to
"manipulaciones".

Docs link is now "Ver documentación", and the CTA note "No necesitas
tarjeta de crédito." instead of the impersonal "No se requiere...",
matching the tú address used everywhere else on the page.

Hero titleMaxWidth raised from the EN page's 760 to 900: the Spanish
second line measures 881px at the 62px display size and was wrapping to
three lines.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@filipagr
filipagr force-pushed the filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components branch from a18c0f0 to ccbdc29 Compare July 30, 2026 21:51
@filipagr
filipagr merged commit be77038 into main Jul 31, 2026
5 checks passed
@filipagr
filipagr deleted the filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components branch July 31, 2026 12:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants