Skip to content

feat: localized /gads/get-started/ landing pages in 20 languages#18769

Open
sicarul wants to merge 2 commits intomasterfrom
gads-get-started-i18n
Open

feat: localized /gads/get-started/ landing pages in 20 languages#18769
sicarul wants to merge 2 commits intomasterfrom
gads-get-started-i18n

Conversation

@sicarul
Copy link
Copy Markdown
Contributor

@sicarul sicarul commented May 2, 2026

Summary

Adds a Pulumi-generic /gads/get-started/ landing page (English) plus 20 localized variants for the top non-English locales by user traffic. Intended to back paid Google Ads campaigns in each of these languages.

The page funnel: hero + value prop → install Pulumi (OS chooser: brew/curl/choco) → click into the existing English /docs/iac/get-started/{aws,azure,gcp,kubernetes}/ step-by-step guides.

All pages set block_external_search_index: true so they emit <meta name=\"robots\" content=\"noindex\"> and won't compete with /docs/ for organic search.

Why these languages

Top non-English languages by distinct users from site telemetry (last 6 months):

Lang Users
pt (Portuguese) 770
de (German) 716
fr (French) 693
es (Spanish) 665
he (Hebrew) 443
ja (Japanese) 417
zh (Chinese) 384
ru (Russian) 352
ko (Korean) 265
pl (Polish) 193
it (Italian) 170
nl (Dutch) 143
ar (Arabic) 134

Plus an additional Nordic / European / SEA tier present in telemetry below the cutoff but worth covering for ad-spend coverage: nb (Norwegian Bokmål), sv (Swedish), uk (Ukrainian), vi (Vietnamese), fi (Finnish), tr (Turkish), da (Danish).

Total: 20 localized pages + English source.

What's in the diff

  • layouts/gads/gads-get-started.html — new layout. Reads cta_label and install: block (title / intro / options_note / test_intro / restart_note) from frontmatter so all surface text is localizable. RTL handled via dir: rtl frontmatter → wraps content in <div dir=\"rtl\"> (used by he and ar).
  • content/gads/get-started/index.md — English source.
  • content/gads/get-started-{pt-br,de,fr,he,ja,es,zh,ru,ko,pl,it,nl,ar,nb,sv,uk,vi,fi,tr,da}/index.md — 20 translations.

Translation review

Each translation was reviewed by a per-language native-speaker pass (technical-term naturalness, grammar/case, register, number formatting, RTL handling, brand-name preservation). High-value polish was applied: e.g. fixed Polish case-grammar in stats labels, Korean restart_note semantics, Arabic «و» spacing, Hebrew gender-neutralization, Russian verb-government chain, Turkish `siz`-form CTA consistency, etc.

Numbers formatted per locale (350.000+ vs 350 000+ vs 350,000+), CTAs translated per language, technical terms (stack, cluster, deploy, engine, open source) kept English where idiomatic.

URLs:

  • `/gads/get-started/`
  • `/gads/get-started-{pt-br,de,fr,he,ja,es,zh,ru,ko,pl,it,nl,ar,nb,sv,uk,vi,fi,tr,da}/`

🤖 Generated with Claude Code

Adds /gads/get-started/ landing page plus translated variants for the top
non-English locales by user traffic: pt-BR, de, fr, he, ja, es, zh, ru, ko,
pl, it, nl, ar, nb, sv, uk, vi, fi, tr, da. Each page is blocked from
search indexing (block_external_search_index) and links into the existing
English /docs/iac/get-started/{aws,azure,gcp,kubernetes}/ guides.

New layout layouts/gads/gads-get-started.html renders the install
instructions and CTA from per-page frontmatter (cta_label + install block)
so all surface text localizes cleanly. Hebrew + Arabic set dir: rtl which
the layout wraps in <div dir="rtl">. Each translation was reviewed by a
per-language native-speaker subagent and polished.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@claude
Copy link
Copy Markdown
Contributor

claude Bot commented May 2, 2026

Docs review

Reviewed: layout layouts/gads/gads-get-started.html, English source content/gads/get-started/index.md, plus 11 localized variants (de, es, fr, he, ar, ja, zh, pt-br, ru, pl, ko, tr, it). Spot-checked the remaining locales (da, fi, nb, sv, uk, vi, nl) at the diff level only — please give those a closer translation pass if not yet done.

Overall this is well-structured: clean parameterization in the layout, RTL handled via a single dir frontmatter knob, consistent shape across all 21 files, block_external_search_index: true set everywhere, brand names preserved, and locale-appropriate digit grouping (350.000+ / 350 000+ / 350,000+).

Issues to address

1. Hebrew — second-person agreement is inconsistent (content/gads/get-started-he/index.md:25)

The page uses second-person plural (שלכם / בחירתכם) throughout (lines 13, 17, 22, 27, 63), but continue.title switches to second-person singular masculine:

    title: המשך עם הענן שלך

Suggested fix to match the rest of the page:

    title: המשיכו עם הענן שלכם

2. English overview.title mixes title case into an H2 (content/gads/get-started/index.md:19)

The layout renders overview.title as <h2> (layouts/gads/gads-get-started.html:15). Per AGENTS.md, H2+ should be sentence case. The current value capitalizes Language and Cloud as common nouns:

    title: Infrastructure as Code in any Language, on any Cloud

Other H2s on this same English page (continue.title: Continue with your cloud, stats.title: \"Trusted by thousands of companies\") already use sentence case, so this one is the outlier. Suggested:

    title: Infrastructure as code in any language, on any cloud

(The Italian translation copies the stylized Infrastructure as Code brand-y phrasing; that's fine if intentional, but the English source should still be internally consistent.)

Worth noting (not blocking)

  • meta_desc length: most translations come in around 180–215 characters (e.g. get-started-de/index.md:3 ≈ 213, get-started-pt-br/index.md:3 ≈ 200). Search engines truncate around ~155–160 chars and so do most social-card renderers. With block_external_search_index: true set, organic SERP snippets aren't a concern, but LinkedIn/X share previews on paid clicks still use this description and will get cut off. Consider trimming to ≤160 chars where you can.
  • Spanish CTA mismatch (minor): cta_label: \"Comenzar\" (infinitive) vs heading: \"Comienza con Pulumi\" (imperative tú). Both are valid Spanish, but imperative Comienza would be more consistent with the heading, and reads more direct as a button.
  • CTA href is hardcoded to app.pulumi.com/signup (layouts/gads/gads-get-started.html:6) — that signup flow is English-only. Acknowledged in the PR description, just flagging that a localized landing page → English signup is the seam users will feel first. Same applies to the /docs/install/ and /docs/iac/get-started/... outbound links.
  • Trailing newlines: confirmed present on every file I read fully (en, de, es, fr, he, ar, ja, zh, pt-br, ru, pl, ko, tr, it). Did not verify the remaining seven.

Mention me (@claude) if you'd like me to take another pass after fixes, or do a closer translation read on the locales I didn't fully open.

@pulumi-bot
Copy link
Copy Markdown
Collaborator

pulumi-bot commented May 2, 2026

@pulumi-bot
Copy link
Copy Markdown
Collaborator

pulumi-bot commented May 2, 2026

Lighthouse Performance Report

Commit: fe3913f | Metric definitions

Page Device Score FCP LCP TBT CLS SI
Homepage Mobile 🟡 73 2.5s 2.6s 530ms 0.018 7.0s
Homepage Desktop 🟢 94 0.8s 1.1s 22ms 0.081 1.6s
Install Pulumi Mobile 🔴 37 4.2s 7.1s 226ms 0.438 7.6s
Install Pulumi Desktop 🟡 85 1.1s 1.6s 20ms 0.024 2.9s
AWS Get Started Mobile 🟡 52 4.0s 7.0s 321ms 0.083 7.4s
AWS Get Started Desktop 🟢 90 1.1s 1.6s 0ms 0.024 1.6s

- Hebrew continue.title: switch from singular masculine שלך to plural שלכם
  for consistency with rest of page (already plural throughout).
- English overview.title: sentence case per AGENTS.md (rendered as <h2>).
- Spanish cta_label: imperative "Comienza" matches imperative heading
  "Comienza con Pulumi" instead of mixing infinitive "Comenzar".

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@CamSoper CamSoper left a comment

Choose a reason for hiding this comment

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

LGTM. All three issues from the prior review are fixed:

  • Hebrew continue.title → plural שלכם
  • English overview.title → sentence case
  • Spanish cta_label → imperative Comienza (matches heading)

Spot-checked the seven locales I hadn't fully opened last pass (da, fi, nb, sv, uk, vi, nl) — all read fluently, brand names preserved, locale-appropriate digit grouping. Structure is uniform across all 21 files, RTL handled correctly for he and ar, Hugo build clean, CI green.

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.

3 participants