Skip to content

i18n(academy): NL/EN translation pairs for Hydra, OpenSpec, Claude Skills#113

Open
WilcoLouwerse wants to merge 10 commits into
developmentfrom
tutorial/leerlijn-translations
Open

i18n(academy): NL/EN translation pairs for Hydra, OpenSpec, Claude Skills#113
WilcoLouwerse wants to merge 10 commits into
developmentfrom
tutorial/leerlijn-translations

Conversation

@WilcoLouwerse
Copy link
Copy Markdown
Contributor

@WilcoLouwerse WilcoLouwerse commented May 21, 2026

Summary

Builds out the missing Dutch/English pairs for the academy posts that
were drafted in only one language. Every academy post now has both
academy/<slug>/ (English) and i18n/nl/.../<slug>/ (Dutch) with
matching slugs so the locale switcher resolves consistently.

English translations (from Dutch sources that were sitting in academy/):

  • Hydra leerlijn parts 1–6
  • OpenSpec leerlijn parts 1–2
  • Claude Skills leerlijn parts 1–4
  • openwoo-community-meetings

Dutch translations of EN-original posts:

  • deskdesk-tutorial-0-three-paths
  • deskdesk-tutorial-5-advanced-manifest
  • the-platform-moment

Dutch copies of the Dutch-sourced posts (now properly under i18n/nl/):

  • All 12 Hydra/OpenSpec/Claude Skills posts

Link localization sweep (separate but co-located):

  • /academy/<slug>/nl/academy/<slug> in href attributes and markdown
    links across all 23 NL blog posts (61 occurrences). Authored absolute
    links don't auto-localize the way Docusaurus's <Link>/paginator do,
    so each NL page must point at /nl/ explicitly. This also fixes the
    same latent bug in pre-existing NL files.
  • Same fix in i18n/nl/.../docusaurus-plugin-content-pages/connext.mdx

Theme i18n string in i18n/nl/code.json:

Dependency on #38

This branch was cut from tutorial/openspec-introductie after the locale-aware
useBaseUrl() theme fixes landed (commit 4e6bdc8e). The link sweep on the
NL files relies on those theme fixes to make breadcrumbs and the "View all"
button locale-aware. Once #38 merges, this PR's diff narrows to just the
i18n content.

Test plan

  • npm run build succeeds for both locales
  • npm run servelocalhost:3000/academy/<slug>/ (EN) and
    localhost:3000/nl/academy/<slug>/ (NL) both render
  • In any NL post, in-page links to other academy posts go to
    /nl/academy/... not /academy/...
  • Locale switcher (top-right) jumps to the EN/NL equivalent of the current page

🤖 Generated with Claude Code

WilcoLouwerse and others added 10 commits May 19, 2026 10:42
Two short Dutch tutorials for conduction.nl/academy that introduce
OpenSpec to new developers and partners, per ConductionNL/.github#51:

- Part 1: "Wat is OpenSpec?" — core concepts (spec, requirement,
  scenario, change), repo layout, when to spec-first.
- Part 2: "Je eerste OpenSpec change" — /opsx-new, spec-delta with
  ADDED requirement + scenario, proposal/design/tasks, /opsx-verify.

Each part has five Pluvo questions and cross-links to the Hydra
leerlijn, the workstation tutorials, and the official OpenSpec site.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Apply the same closing-quiz treatment as the Hydra leerlijn (PR
preceding this one) to both OpenSpec tutorials: replace the static
"Pluvo-vragen" list with "Test jezelf" sections where each question
sits in a .tutorial-quiz card with click-to-expand Hint and Antwoord
spoilers (Docusaurus <Details> with summary prop).

Adds two CSS blocks to src/css/site.css that come over from the Hydra
branch:
- .tutorial-quiz styling, including overrides for Infima's
  .alert--info colours and Docusaurus' built-in Details chevron, so
  the marker flows inline and the open body has readable contrast.
- A brand-aligned blockquote treatment (cobalt palette, callout look)
  so the existing `> Naamgevingsregel` blockquote in tutorial 2 picks
  up the brand styling instead of Infima's washed-out gray default.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…pec-introductie

# Conflicts:
#	src/css/site.css
…+ misc updates

OpenSpec leerlijn (primary work this session):
- Tutorial 1: corrected mappenstructuur (openspec/architecture/ restored
  with app-specific vs company-wide ADR distinction), added visual
  ASCII pipeline diagram, fixed /opsx-new vs /opsx-ff explanation
- Tutorial 2: new Stap 0 for /opsx-explore, reorganized steps 4-6 to
  follow canonical dependency chain (proposal → specs → design → tasks),
  /opsx-ff promoted to align with canonical path, replaced /opsx-verify
  with openspec validate --strict for spec validation, added Stap 10-11
  for /opsx-plan-to-issues + /opsx-apply + /opsx-verify + /opsx-archive

DeskDesk leerlijn:
- Renumbered tutorial 5 → 6 (integrate) to make room for advanced manifest
- Updated tutorials 0-4 + i18n/nl translations

Other updates:
- Hydra tutorial 6 (troubleshooting escalatie)
- Claude skills tutorial 1
- WOO tutorials (bestanden uploaden, register opzetten)
- Build-an-app tutorial
- ConNext landing page (src + i18n)
- BlogListPage theme component
- package.json + .nvmrc

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
BlogListPage (filter / series-focus improvements):
- Add `series` query param to dedicated focus mode: skip module-collapse
  and the Featured slot when a series is active, sort parts by partNumber
  ascending so Part 0 → N reads in natural order
- Hide the series chip row outside the "Everything" and "Tutorials" views
  (it was noise on blog/guide/case-study/webinar filters)
- Extract "DeskDesk" → "Build a Nextcloud app" series label into a
  translate() call so the chip can be localized

Locale-aware links (works correctly when viewing /nl/academy/*):
- BlogListPage empty-state "View everything" link uses useBaseUrl()
- BlogPostPage breadcrumb (Academy + content-type filter) and "View all"
  in Keep learning… footer use useBaseUrl()
  Without this the breadcrumb on a Dutch post sent you to the English
  academy index, and the type chip on the breadcrumb went to the EN
  filtered view.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…skDesk filler

EN translations (academy/) for posts originally drafted in Dutch:
- Hydra leerlijn parts 1-6 (was Dutch-in-academy)
- OpenSpec leerlijn parts 1-2 (was Dutch-in-academy)
- Claude Skills leerlijn parts 1-4 (was Dutch-in-academy)
- openwoo-community-meetings (was Dutch body with EN title)

NL translations (i18n/nl/.../docusaurus-plugin-content-blog/):
- All twelve "Dutch-in-academy" posts above, copied verbatim
- New NL translations for: deskdesk-tutorial-0-three-paths,
  deskdesk-tutorial-5-advanced-manifest, the-platform-moment
- Slugs identical between EN/NL across all pairs so the locale
  switcher resolves consistently

NL link localization (separate sweep, same files):
- /academy/<slug> → /nl/academy/<slug> in href attrs and markdown links
  inside i18n/nl content (61 occurrences across 23 files including
  pre-existing pairs that had the same latent bug)
- /academy/<slug> → /nl/academy/<slug> in i18n/nl/.../connext.mdx
  Authored absolute links don't auto-localize the way Docusaurus
  <Link>/paginator do, so each NL page must point at /nl/ explicitly.

Theme i18n string:
- code.json: "theme.academy.seriesLabel.deskdesk" → "Bouw een Nextcloud-app"
  (matches the translate() call in BlogListPage; without it the Dutch
  series chip would render the English default)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…ijn-translations

# Conflicts:
#	src/css/site.css
Supervisor won't dispatch retry:queued or rebuild:queued while needs-input or
fail labels are still set — add the explicit cleanup command sequence (incl.
HYDRA_LABEL_PREFIX variants) to tutorial 6 and cross-reference from tutorial 2.
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.

1 participant