Migrate /lp/es/barcelona to design tokens + shared components (FIL-856) - #106
Merged
filipagr merged 8 commits intoJul 31, 2026
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
gmoranxyz
approved these changes
Jul 30, 2026
filecoinfoundation-inf
approved these changes
Jul 30, 2026
filecoinfoundation-inf
left a comment
There was a problem hiding this comment.
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
force-pushed
the
filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components
branch
from
July 30, 2026 21:50
c620841 to
a18c0f0
Compare
Base automatically changed from
filipa/fil-854-migrate-lpbarcelona-to-design-tokens-shared-components
to
main
July 30, 2026 21: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
force-pushed
the
filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components
branch
from
July 30, 2026 21:51
a18c0f0 to
ccbdc29
Compare
filipagr
deleted the
filipa/fil-856-migrate-lpesbarcelona-to-design-tokens-shared-components
branch
July 31, 2026 12:37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Spanish twin of
/lp/barcelona, now structurally identical to the EN page from PR #105.Closes FIL-856.
The page
style={{}}fontFamilySame section order and same components as the EN page:
Hero,FeaturedInBar,StatCard,FeatureCard,PriceComparisonTable,IntegrationsSection,CtaBanner.useLang("es")and thelang/supportHref/contactSalesHrefprops 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:
IntegrationsSectionhad 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.CtaBannerhardcoded a 480px heading cap; the Spanish heading needs 620. Now aheadingMaxWidthprop, default 480.PriceComparisonTablecoloured cells by parsing with a dot-decimal assumption, so1,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 andPRICE_PER_TB_SHORT_EUR_ES/EUR_USD_RATE_ES/EUR_USD_RATE_SOURCE_ESin the pricing constants, used by both the page androuteMeta.mjs. The page previously contradicted itself: the hero said4,99 €/TBwhile the stat card said€4.99/TBand the footnote said4.99 €/TB.This alters visible table figures (
€49.90becomes49,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:Egressin the table header,egressin the title and meta,tráfico de salidain the hero and section copy, and baresalidain 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 AmsterdamasÁmsterdam, Wasabi'seu-west-2 ParisasParí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:
SDKstoSDK, "tu flujo" to "tu flujo de trabajo", a space before%per SI/RAE convention, "manipulación" to "manipulaciones"Hero
titleMaxWidthis 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
<main>: no AA failures0 €success,790 €danger,1,83 €neutrallang="es"with the Spanish price format; EN meta byte-identicalKnown, not addressed
FeatureCarddescriptions 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