Skip to content

Add German website and news translations - #247

Open
aholbreich wants to merge 25 commits into
omacom:masterfrom
aholbreich:add-german-translation
Open

aholbreich wants to merge 25 commits into
omacom:masterfrom
aholbreich:add-german-translation

Conversation

@aholbreich

Copy link
Copy Markdown

Adds German (de-DE) translations for the website and all 22 current news articles. Uses informal “du”; commands, product names, and actual Omarchy menu labels stay unchanged. The manual still links to the English site.

Proposes de.omarchy.org for the German edition. DNS and hosting would need to be set up by the maintainers; nothing has been deployed there.

While checking the pages, I found that the translation checker skipped the imported meetup rules, the “Everywhere” filter, and the download-period labels. The first commit covers those gaps and adds regression tests. The second adds German.

Checked locally:

  • German and English builds
  • Strict German site/news translation validation
  • Lint, typecheck, formatting, and all 52 tests
  • Site parity: all 3,926 addresses respond, all 1,229 passthrough files match
  • Desktop and mobile layouts, search, meetup filters, language selection, and English manual links

@dhh dhh mentioned this pull request Sep 9, 2026
@dhh

dhh commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

This is the preferred base for the German edition: structural checks pass, and the meetup-rule/download-period extraction fixes are useful. Please coordinate with #263 to avoid conflicting catalogue and domain changes. The remaining release prerequisite is maintainer-side deployment and HTTPS/language verification of de.omarchy.org before its selector entry goes live.

@relativkreativ

Copy link
Copy Markdown

Hey!

Since @dhh called this the preferred base for the German translation, let's go with your PR (instead of mine) and coordinate here.

I have one small fix in #263 for the “Omarchy herunterladen 4.x” word-order issue, using a VERSION placeholder so it can be translated as “Omarchy 4.x herunterladen”. DHH specifically mentioned that the download-version placeholder improvement is worth retaining.

How would you prefer to get that change — should I open a PR against your branch, or would you rather cherry-pick the commit?

aholbreich and others added 2 commits September 9, 2026 22:49
Resolve the language count in docs/translations.md: master had raised it
to 31 for Norwegian, this branch had dropped the number entirely. German
makes 32, so state that and keep both new rows in the domain table.

Master introduced bundled social-card font subsets after this branch was
opened. Map de to the Latin subset, re-subset that font so it carries the
German Z and ß, and generate the 22 German cards under
public/brand/social/de/. The other subsets are byte-identical apart from
their head timestamps and are left untouched.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BJ8DFAyYMb5UZrF2hqM2C
The version was concatenated after the translated label, which forces
every language into English word order: German rendered "Omarchy
herunterladen 4.0.3". Take the version as a VERSION placeholder inside
the translated string instead, so German can say "Omarchy 4.0.3
herunterladen" and other languages can place it where their grammar
wants it.

This retires the "Download Omarchy" key. The other 30 locales pick the
new one up on the next hourly translation run; they join an existing
backlog of 488 pending UI/prose strings, so the 30 extra are marginal.

Taken from omacom#263 by Michael Trojanek, who stood that PR down in favour of
this one at DHH's request.

Co-Authored-By: Michael Trojanek <michael.trojanek@relativkreativ.at>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012BJ8DFAyYMb5UZrF2hqM2C
@aholbreich

Copy link
Copy Markdown
Author

Thanks for coordinating, and for standing #263 down — appreciated.

I've cherry-picked the VERSION placeholder rather than taking the commit wholesale, since 2a3101f also carries your full de.json catalogue and would have replaced this branch's. So it's just the two pieces: t('Download Omarchy VERSION').replace('VERSION', release.version) in HomePage.tsx, and "Download Omarchy VERSION": "Omarchy VERSION herunterladen" in src/i18n/messages/de.json. You're credited as co-author on the commit. The German homepage now renders "Omarchy 4.0.3 herunterladen".

One note for reviewers: this retires the Download Omarchy key, so the other 30 locales need the new one. npm run site:pending goes from 488 to 518 entries, i.e. the rename adds 30 strings to an already-existing backlog that the hourly run works through. Nothing breaks in the meantime — npm run check:translations stays clean.

Also rebased onto current master. The only conflict was the language count in docs/translations.md, now 32. Master's bundled social-card fonts landed after this PR opened, so I've mapped de to the Latin subset, re-subset it to carry Z and ß (both had been subset out), and generated the 22 German cards under public/brand/social/de/. The other 11 font subsets are byte-identical apart from their head timestamps and are left alone. npm test, typecheck, lint, check:translations and npm run build:locale -- de all pass.

Still outstanding: German has 5 pending news items (the two new September articles, plus three that went stale from master's edits). Those are queued for the translation bot unless you'd rather they be in the PR.

@aholbreich

Copy link
Copy Markdown
Author

let me know if t pending news are part of this PR. Or i rather addon

@aholbreich

Copy link
Copy Markdown
Author

Ok i just update to articles to make it release ready..
@dhh lets bring it into live?

Adds the 71 German UI/prose strings that were still missing from
src/i18n/messages/de.json, mostly from the Meetups and Doctrine
pages, which appear to have landed on master after this branch was
last rebased. Verified against the current da.json catalogue that no
key remains missing.

Peter Wilfahrt <pw@pw.is>
@p-w

p-w commented Sep 10, 2026

Copy link
Copy Markdown

While reviewing this PR I noticed de.json was missing 71 UI strings that every other locale already has (mostly Meetups-page and Doctrine-page copy that seems to have landed on master after the last rebase here). Opened aholbreich#1 against this branch to fill them in, verified against current da.json that nothing else is missing.

p-w and others added 6 commits September 11, 2026 07:34
add-german-translation still special-cased the Meetups page for
extraction (rules and country list from the imported HTML, minus the
calendar widget). Master has since moved Meetups to a fully
React-rendered page, same as Teams, and both are now skipped by the
generic extractor. Took master's version of that hunk since it
reflects the current architecture; kept the rest of this branch as is.

Updated the one test that exercised the old Meetups special case to
match the new skip behavior, mirroring the existing Teams coverage.
All translation-sources tests pass; the one unrelated failing test on
this machine (dev-passthrough.test.mjs) needs a symlink privilege this
sandbox does not have and is unaffected by this change.

Note for follow-up: master's new extractor logic does not appear to
capture the Meetups rules/country copy through any other path anymore,
so that content may no longer be tracked for translation at all, for
any language, going forward. Worth flagging upstream rather than
working around here.

Peter Wilfahrt <pw@pw.is>
Master added the full ten-principle Doctrine page, two new Foundation
hires (Krzysztof Wilczynski, Emir Beganović) with bios, an updated
Quickshell sponsorship section, and a news article, since this branch
was last brought up to date. Fills in the resulting 37 pending German
UI/prose strings plus the new news article.

Also corrects an earlier translation: outfoxxed's staff role now
reads 'Leiter Omarchy Shell' rather than the untranslated 'Head of
Omarchy Shell', matching how the existing outfoxxed hire announcement
already translates the same title.
Emir now also serves on Omarchy Core, so master replaced his bio with a
longer source string. Translate the new one, reusing the wording that was
already reviewed, and drop the superseded key.
Covers the Omacom Foundation staff page, the outfoxxed and Krzysztof
Wilczynski bios, the Quickshell description, and the country names and
pagination labels the teams and patrons pages render.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JwzhBoeaayQeBRLtBWNtFg
…ation

# Conflicts:
#	scripts/translation-sources.mjs
Master added the Doctrine page, the command menu, Omarchy M, and two news
posts since this branch last tracked it. Covers the 44 site strings and the
two articles German was missing:

- the ten Doctrine principles and their in-page navigation
- the command menu's Start, Gehe zu, and Zurück labels
- Omarchy M, its team description, and the Apple hardware contact line
- the remaining country names on the teams and patrons pages
- "Wir stellen vor: Omarchy M" and the Emir Beganović hiring announcement

Informal du throughout, matching the rest of the German edition. Product,
team, and menu labels stay unchanged, as do all links and code literals.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JwzhBoeaayQeBRLtBWNtFg
@aholbreich

Copy link
Copy Markdown
Author

Thanks! Three things.

#263 is resolved. relativkreativ closed it in favour of this PR on Sep 9, and
the VERSION placeholder fix is here in 1097663. No catalogue or domain changes
remain in conflict.

Rebased onto current master. The only conflict was scripts/translation-sources.mjs,
where the meetups/title change met d0c7835's seoTitle/description additions.
Resolved as the union of both: meetups keeps its authored rules with the replaced
calendar stripped, and the two new page fields are extracted. German now also covers
everything master added since — the Doctrine page, the command menu, Omarchy M, the
staff page, and the two new news posts.

  • npm run check:translations and --strict-news both clean
  • --pending-site reports 0 for German
  • lint, typecheck, 44 node tests and 34 python tests pass
  • npm run build and npm run build:locale -- de both succeed

One thing worth flagging. The extraction fix exposes 16 strings that were never
extracted before: the nine meetup rules, the download-period labels, and
Download Omarchy VERSION. German has all of them, but this means 30 other editions
now show as pending on --strict-site where they previously passed. They were always
untranslated — the old regex just never looked at them. npm run check:translations
still exits 0, so nothing breaks. Happy to run site:translate across the other
locales in a separate PR if you'd like that backlog cleared alongside, or to leave it
to the per-locale owners.

On de.omarchy.org: I looked at whether the selector entry could be held back
separately, but src/i18n/locales.json is the locale registry, not just the picker —
without the de entry the German site doesn't build and drops out of translation
validation. So it stays in, and the deploy sequencing is yours as you described.

aholbreich translated the Doctrine page, staff page, country names,
and the new Omarchy M (Mac) content independently on this branch while
this PR was open, overlapping with a lot of what was translated here.
Where both sides translated the same source string, kept aholbreich's
wording throughout (messages/de.json, de/blocks.json, de/news.json,
and the Emir Beganović article, which he also translated separately -
took his version wholesale). Kept this branch's own strings that his
side doesn't have yet (mostly Meetups-page copy).

For scripts/translation-sources.mjs, took his side too: it still
special-cases the Meetups page for extraction (rules and country list
from the imported HTML minus the calendar widget), rather than the
skip-everything behavior current master moved to. That keeps Meetups
content translatable, which is the better outcome regardless of whose
branch it came from.
@aholbreich

Copy link
Copy Markdown
Author

@p-w what would you say now?

p-w added 2 commits September 14, 2026 14:21
Master added four new automatically generated patron tiers (8K, 2K,
256B, 16B) on the Patrons page, and DHH revised the Omarchy M article
to add Ryan Murray and rewrite the Drivers-and-kernel paragraph and
the team-size count. Translated the new tiers following the existing
USD-amount convention, and refreshed the news translation's stale
source hash along with the changed paragraphs.
@p-w

p-w commented Sep 14, 2026

Copy link
Copy Markdown

Looks good from here. Just pushed the last bit on #1 (aholbreich#1) to catch up with what landed on master today — the four new automatically-generated patron tiers on /patrons/ and the Omarchy M article refresh (Ryan Murray, the rewritten drivers/kernel paragraph, team size 14→15).

Current state on my branch:

  • check:translations --strict-site --strict-news clean for de, 0 pending either way
  • full test suite passes (aside from an unrelated, pre-existing Windows sandbox symlink-permission failure that isn't specific to this branch)
  • merges cleanly onto both add-german-translation and current master

On the other-locales backlog you flagged on the 11th: no objection to clearing it in a separate PR if you want to, but that's really a call for you and the per-locale owners, not something German needs.

So: ready to merge from my side. 👍

@aholbreich aholbreich left a comment

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

Reviewed locally at f23e343d2699 and found no blocking issues.

Verified:

  • npm test
  • npm run lint
  • npm run typecheck
  • npm run check
  • npm run check:translations -- de --strict-site --strict-news
  • npm run build:locale -- de

I also checked that the German news HTML preserves the source tag structure and numeric facts. The locale registration, complete site/news catalogs, fallback regression fixture, and regenerated social-font subset are internally consistent, and the font tests confirm identical rendering from the subset and source fonts.

p-w added 4 commits September 23, 2026 08:53
… Cloud/Brian Cartmell announcements

Also refreshes the four existing patron-funding articles whose figures
shifted with these new pledges, including Anthropic's removal as a
token patron in two of them, and adds the new patron tier (25K),
Snapdragon team description, and Switzerland to the UI catalogue.
Adds the new premier-sponsorship entry on the Sponsorships page, the
updated multi-year-sponsorships summary on the Foundation overview,
and the full announcement article.
@p-w

p-w commented Sep 24, 2026

Copy link
Copy Markdown

Quick progress update. Just translated the Sybil Solutions/0xSero sponsorship announcement that landed on master yesterday — the new sponsorship section, the updated Foundation summary, and the full article (aholbreich#1).

Since my last update here, German also picked up: the Doctrine page and staff bios (merged with aholbreich's own parallel translation work on the same content, keeping his wording where we'd both translated the same string), and the Alibaba Cloud, Omarchy Dragon, OrcaRouter, and Brian Cartmell/American Cloud announcements, including the Anthropic token-patron correction reflected accurately in the funding totals.

Still fully caught up: check:translations --strict-site --strict-news reports 0 pending for de, full test suite passes, merges cleanly onto current master. Ready whenever you are.

aholbreich and others added 6 commits September 27, 2026 00:13
Also restores the generated meetup map to master's copy; a build had
committed a local regeneration of it in an earlier merge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The version was concatenated after the translated label, which forces
every language into English word order: German rendered "Omarchy
herunterladen 4.0.3". Take the version as a VERSION placeholder inside
the translated string instead, so German can say "Omarchy 4.0.3
herunterladen" and other languages can place it where their grammar
wants it.

This retires the "Download Omarchy" key. The other locales pick the
new one up on the next hourly translation run.

Taken from omacom#263 by Michael Trojanek.

Co-Authored-By: Michael Trojanek <michael.trojanek@relativkreativ.at>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rman-translation

# Conflicts:
#	scripts/lib/translation-sources.test.mjs
@aholbreich

Copy link
Copy Markdown
Author

Caught up with master (0 behind) and merged @p-w 's work.

German is complete: check:translations -- de --strict-site --strict-news reports 0 pending and 32/32 articles, including ThePrimeagen and Emir's new start date. :)
Tests, lint, typecheck and build:locale -- de pass.

The non-German fixes (meetup rules, download labels, the VERSION placeholder) are now split into #469 so they can land on their own.

@aholbreich

Copy link
Copy Markdown
Author

@dhh #377 seem to adds a de edition with its own machine-translated German. Would you rather:

  1. merge this one and have Expand omarchy.org to 50 languages #377 keep this German text, or
  2. have me move this German onto Expand omarchy.org to 50 languages #377's registry format (englishName, script) so it goes in there?

Either works for me

This branch has not been deployed

No deployments
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