Website redesign 2026 + full i18n catalog (35 locales)#166
Website redesign 2026 + full i18n catalog (35 locales)#166DennisPitallano wants to merge 47 commits into
Conversation
…ve chain stats - Replace nav/hero with blockchain-themed isometric cube canvas (lazy-loaded via requestIdleCallback) - Remove light mode; standardize on dark, blue-only gradient (cyan -> brand blue) - Live chain dashboard via DigiExplorer Esplora API + Coinpaprika ticker - Mobile burger menu rewrite (full-width dropdown, glass backdrop, scrollable) - Scroll-to-top button, lang menu, footer responsive grid, Digi-Stats nav link - Service worker network-first for HTML/JS/CSS, locale-skip guard in lang router - Drop legacy assets: jQuery, Modernizr, Pace, plugins1b, main2o, vendor1g, main3p, hashcatcher, cookieinfo - Wallet logo invert filter for Ledger/SafePal/SecuX - Telegram -> DigiByteCoin, Discord -> dsc.gg/DigiByteDiscord, DigiStats -> digibyte.io - Performance/A11y/SEO: deferred GA, non-blocking fonts/FA, ink-3 contrast bump, white CTA text - Section dividers, sitemap rebuild, all 36 locales synced
Hero: new H1/lead copy, glass content panel for legibility over animated background, centered CTAs and metric chips, removed scroll cue. Section order: Why DigiByte (4 alternating thematic rows) now precedes Live Network (Hero -> Trust -> Why DGB -> Live Chain -> Tokenomics -> ...). Copy refresh per review notes: Live Network, Tokenomics, DigiAssets, Digi-ID (incl. 3 new FAQs), Developer Hub, Wallets, Track Record (8 milestones incl. 2026 DigiDollar), Community, Downloads, Footer copyright. Tokenomics: replaced 3D coin with self-hosted SVG emission-schedule chart (js/tokenomics-chart.js, no third-party API). Removed dead js/coin-3d.js. Track Record: rebuilt timeline as wavy neon road in 3-col grid (card | lane | card), 8 milestone cards alternating sides, DGB-logo cars driving the SVG path via offset-path (reduced-motion + offset-path fallbacks). RTL mirrored. Developer Hub: GitHub release notes wrapped in <details> for click-to-expand. Cleanup: removed clickability and hover lift from partner-logo marquee, DigiAssets flow steps, and dashboard stat cards. Bumped service worker cache to dgb-v2026-06-16; precache includes tokenomics-chart, footerlogo, dgb-logo. Footer: knockout DigiByte logo linked to #top (interim images/footerlogo.png until new asset arrives), updated descriptor, hard-coded 2014-2026 copyright. Synced all 36 locales via tools/sync-locales.mjs.
- Tokens: navy canvas (#03102a/#061a3d/#0a2350/#133072), logo-blue ambient gradient, brand gradient retuned to sky->royal->mid blue, new --g-button tokens, blue-surface tokens. - Nav: solid navy background, white menu links, on-navy ghost/lang buttons, navy mobile drawer. - Buttons: glossy --g-button gradient on .btn--primary with inset highlight + navy glow. - Sections: alternating blue panels (.surface--blue maps to s-features/digiassets/devhub/community) with white-glass cards, white headings, pale-blue body, soft seam shading. - Hero: simplified overlay (single soft vignette) so wider widths no longer show a darker rectangle; navy-tinted glass slab and metric tiles. - Feature visuals on blue: opaque navy tiles with white icon + white-on-navy stat gradient. - Dashboard: 3-up grid with original large stat type, neutral delta caption color. - DigiDollar integration guide added to devhub grid + footer; PDF asset committed. - Removed Uphold from trust marquee and wallet card. - Fixed broken /docs/*.pdf links in locale folders by switching to root-relative paths.
… pipeline - Add locales/en.json (source-of-truth) and locales/ja.json (Japanese MVP) - Mark hero section in root index.html with data-i18n keys - Extend tools/sync-locales.mjs to merge catalog values after locale copy - Translations fall back to English when a key is missing - MVP: hero now renders in Japanese on /ja/; other locales unchanged
- Mark every translatable string in root index.html with data-i18n / data-i18n-attr - Expand locales/en.json to 237 source-of-truth keys covering meta, ticker, nav, hero, features, chain, tokenomics, digiassets, digi-id, devhub, wallets, roadmap, community, downloads, news, footer - Add full Japanese translations in locales/ja.json (237 keys) - Relax inner-content escaping in sync-locales.mjs so catalog values may carry trusted inline markup (<strong>, <a>, etc.) - Re-sync all 36 locale files; ja now fully Japanese, others fall back to English
- Phase 2 of the i18n rollout: full translations for 6 more priority locales - All 7 priority catalogs (ja + zh + es + de + fr + pt-br + ru) now provide 237-key parity with locales/en.json - Other 29 locales still fall back to English until a community catalog lands - Re-synced every locale HTML
- Premine value: 0% -> 0.5% (per QA / wiki: 0.5% fair-launch giveaway) - Premine subtitle: 'none, ever' -> 'fair launch . giveaways & dev' (and translated equivalents across all 35 locales) - Block reward: ~466 -> ~259 DGB/block (verified live from coinbase output at chain tip via digiexplorer.info) Source HTML patched + tokenomics.premine.delta updated in every locales/<lang>.json; all locale index.html files re-synced.
Per QA: DigiByte has no halving — emission decreases ~1% per month continuously. The 'Halving / ~1y / monthly reduction' stat was misleading. - HTML: data-i18n key tokenomics.halving.* -> tokenomics.emission.*, label 'Halving' -> 'Emission', value '~1y' -> '-1%/mo', delta 'monthly reduction' -> 'continuous, no halving'. - All 35 locale catalogs renamed + retranslated to match. - Re-synced every <lang>/index.html.
|
Thanks for the QA pass @ycagel — addressed all three factual points in commits pushed to this PR:
Live preview reflects the fixes: https://dg-bio.vercel.app/#tokenomics |
Per QA: the /news.xml feed is old and shouldn't be surfaced. - index.html: drop the <section id='news'> block, the RSS <link rel='alternate'> in <head>, and the 'RSS feed' link from the footer Resources list. - All 35 locale catalogs: remove orphaned keys news.eyebrow, news.title, news.lead, footer.resources.rss. - js/app.js: remove the conditional dynamic import of news-feed.js (its host element no longer exists). - js/sw.js: remove /js/news-feed.js from the precache list. - js/news-feed.js: deleted (no callers). - news.xml file kept in place so existing subscribers don't 404.
Per QA. Drops the second download-card in the Downloads section (DigiByte Mobile, App Store/Play Store/TestFlight buttons, recovery link) plus the 6 orphaned downloads.mobile.* keys from all 35 locale catalogs. Re-synced every <lang>/index.html. Kept: the inline mention of 'DigiByte Mobile' in digiassets.step4.body, since it's about asset integration capability rather than promoting the wallet itself.
After removing the Mobile Wallet card, the Full Node card stretched to the full grid width and looked off. Restructured into a 2-column 'featured' variant: - Left column: eyebrow, title, subtitle, feature bullets, primary actions (Run a node / Checksums). - Right column: new 'Why self-validate?' sidebar (trustless verification, decentralization, privacy) + platform download buttons (Windows / macOS / Linux / Snap). CSS: - New .download-card--featured (max-width 1080px, centered, internal 2-col grid, collapses to single column under 760px). - Removed dead .news-grid and .news-card rules (section is gone). i18n: added 4 new keys (downloads.core.whyValidate, why1, why2, why3) to all 35 locale catalogs with translations. Re-synced every <lang>/index.html.
Reduce Community section and footer to GitHub Discussions + DigiByte Wiki per DIP-0002 (Final). Removes Telegram, Discord, Reddit, X/Twitter and YouTube tiles/icons across root + 36 locales. Updates schema.org sameAs, adds Wiki to footer Resources, adds DIP-0002 attribution note. DIP draft updated with Relationship to DIP-0002 section; discussion post updated.
|
I think we need to remove the ecosystem section since we want to stay neutral and those can be found on the Wiki. Also, you may want to put 9.26.4 as the latest download and link that. Some of the links don't seem to go anywhere, so we want to resolve those. |
- Resolved 36 index.html conflicts by keeping the redesign templates (redesign fetches Core version dynamically via js/github-release.js, so master's static v8.26.2 -> v9.26.4 string edits do not apply). - Accepted master's version bumps in langmenu/ticker.html and news.xml.
Addresses DGBNOOB's review of the redesign-2026 preview (DigiByte-Core/dips#16 (reply in thread)): - [1a] Remove third-party wallet surfaces: - Delete .s-trust marquee (12 vendor logos) - Delete #wallets section (12 wallet cards linking off-site) - Remove Wallets item from primary nav and footer Use column - Drop orphan i18n keys (nav.wallets, wallets.*, trust.*, footer.use.wallets) - [1d] Retarget DigiAssets primary CTA to DigiAsset-Core v3 (https://github.com/DigiAsset-Core/DigiAsset_Core); rewrite step-4 body to reference DigiAsset Core v3 nodes instead of DigiAssetX. Related housekeeping surfaced during review: - Bump Downloads section links to Core v9.26.4 across Windows, macOS, Linux and the 'Production-ready' text link. - Remove broken Google Slides 'Presentation' card from Docs & Guides. - Fix broken dgbwiki.com footer/community/schema.org links -> point to DigiByte-Core GitHub Wiki. - Update Wiki community-tile subtitle to reflect the GitHub Wiki's actual content ('Technical reference & guides'). Propagated to root index.html + all 36 locale copies via tools/sync-locales.mjs (check clean).
|
Update: pushed DIP-0002 alignment fixes based on @DGBNOOB's walkthrough (DigiByte-Core/dips#16 discussioncomment-17504786):
Commit: DennisPitallano/DGBio@30d5a7fe · Preview: https://dg-bio.vercel.app/ Ready for another review pass. |
…e-Core#170) into redesign-2026 - Adds docs/DigiByte_Technical_Architecture_Security_&_Ecosystem_Guide_07_2026.pdf - Keeps redesign-2026 HTML for all locales (upstream edits target legacy design) - Keeps css/main3p.css deleted (redesign no longer uses the legacy stylesheet)
…ore#16 feedback New link from master PR DigiByte-Core#170 (Technical Architecture, Security & Ecosystem Guide 07/2026): - Added to Docs & Guides carousel and footer Resources list across all 36 locales DIP DigiByte-Core#16 feedback from DGBNOOB last-week comment: - Header 'Get DGB' primary CTA repurposed to 'Docs & Guides' (#docs) - the Downloads nav item already covers get-DGB flow - Roadmap Core v9.26.4 card now surfaces the inherited Taproot upgrade suite (BIP340 Schnorr, BIP341 P2TR, BIP342 Tapscript) with .roadmap__bullets styling - Community 'DigiByte Wiki' tile relabelled 'DigiByte Wiki Community' and repointed to /wiki/Community per DIP-0002 - Hero 'Open source * MIT' chip is now a real anchor to opensource.org/license/mit (new .chip--link hover state in components.css) i18n: new keys nav.cta.docs, hero.chip.openSource.aria, roadmap.core.taproot.bip340/341/342, downloads.docs.techArch.*, footer.resources.techArch. Existing catalogs fall back to English until translators backfill.
Latest DigiByte Core release is v9.26.4 (matches the site). Per the v9.26.4 release notes, DigiDollar formally launched on mainnet in v9.26.2 via BIP9 signaling (deployment bit 23, activation floor block 23,627,520) with a MuSig2 Schnorr oracle roster. Roadmap changes: - Chip switched from chip--violet 'Coming soon' to chip--live 'Live on mainnet' (reuses the existing green-pulse .chip--live::before) - Data-i18n key renamed comingSoon -> live; the new key is only defined in en.json, so every non-EN locale automatically picks up 'Live on mainnet' via the sync-locales fallback (no per-locale translator work needed for the chip) - Body rewritten in en.json to describe the mainnet deployment and mention BIP9 miner signaling + MuSig2 Schnorr oracle roster - Hero lead in en.json drops 'very soon' - DigiDollar now presented as an existing native stablecoin Localized hero.lead and roadmap.digidollar.body strings still show the pre-launch phrasing in the other 35 catalogs; translators can refresh from en.json in a follow-up. 37 files touched (root + 36 locale mirrors regenerated by tools/sync-locales.mjs).
A raw 'DigiByte-Core/dips#16' line was sitting between </body> and </html> in the root index.html (and had been mirrored into all 36 locale files by tools/sync-locales.mjs). Browsers rendered that text node at the very bottom of the page, showing the URL under the footer. Removed the stray line in root index.html and re-ran the sync. 37 files updated.
…p / Tokenomics wording)
1) DigiAsset Core removed (third-party vendor):
- Dropped the 'DigiAsset Core (v3)' primary CTA under the DigiAssets section
- 'Protocol docs' (wiki) promoted from ghost to primary CTA
- Step 4 body rekeyed digiassets.step4.body -> .body.v2 so all 36 locales fall back to the corrected English ('Rendered natively by asset-aware DigiByte wallets.') until translators refresh
- Orphan digiassets.cta.digiAssetCore key removed from en.json
2) Snap download button removed:
- Dropped the snapcraft.io/digibyte-core ghost button from the Full Node download card in every locale
3) Tokenomics reworded (kept the section, per follow-up):
- 'Tokenomics' eyebrow -> 'Monetary policy' (better fit for a native UTXO coin - DGB isn't a token)
- Footer 'Tokenomics' link -> 'Monetary policy'
- Keys renamed tokenomics.eyebrow -> tokenomics.monetaryPolicy and footer.protocol.tokenomics -> footer.protocol.monetaryPolicy so every non-EN locale picks up the new English via the sync fallback (no per-locale translator work needed)
- Section id (#tokenomics), title ('Sound money for a faster web.') and lead paragraph left untouched - they already talk about coins and monetary policy
37 files touched (root + 36 locale mirrors regenerated by tools/sync-locales.mjs).
Follow-up to the 'Tokenomics' -> 'Monetary policy' relabel: the URL fragment now matches what visitors actually see on the page. Root index.html changes (mirrored to all 36 locales by tools/sync-locales.mjs): - <section id> tokenomics -> monetary-policy - aria-labelledby + <h2 id> tokenomics-title -> monetary-policy-title - Nav DGB anchor href #tokenomics -> #monetary-policy - Footer 'Monetary policy' anchor href #tokenomics -> #monetary-policy Internal identifiers kept (no functional impact): CSS class .s-tokenomics, JS hook data-tokenomics-chart, i18n key namespace tokenomics.* New canonical anchor: https://dg-bio.vercel.app/en-us/#monetary-policy
On the Monetary policy section, .s-tokenomics__visual had position: sticky applied unconditionally. On the single-column mobile layout the visual sits at the top of the flow, then sticks to the viewport as the user scrolls, and every element after it (lead paragraph, stat cards, CTAs) scrolls under the semi-transparent chart card - producing the overlap seen at dg-bio.vercel.app on narrow viewports. Sticky pinning only makes sense in the desktop two-column layout, where the chart stays in view beside the reading column. Moved the sticky rule inside the same @media (min-width: 1024px) block that turns on the two-column grid, so mobile now renders the chart as an ordinary block above the text. Also added width: 100% to keep the mobile card at container width.
…bile / features headline) 1) Digi-ID section blended into the page background on scroll: - Added a subtle two-tone radial gradient (cyan top-left, blue bottom-right) plus a thin border-block to .s-digiid so the section reads as a distinct band instead of empty dark space 2) QR-code graphic hidden on mobile: - Added .s-digiid__visual class to the QR wrapper in root index.html - CSS: display: none for that wrapper under @media (max-width: 767px). Frees a lot of vertical real estate on phones; text column moves up naturally in the single-column grid - Desktop unchanged 3) 'Engineered for the next decade of crypto.' -> 'Engineered for the future of crypto.' - Updated root HTML and en.json. Non-EN catalogs still carry the 'next decade' translations until translators refresh 37 files touched (root + CSS + en.json + 36 locale mirrors regenerated by tools/sync-locales.mjs).
…orts The dropdown holds 35 languages in a 2-column grid, which runs past the bottom of the viewport on phones - so the 'Edit translations on GitHub' link at the bottom of the panel is not reachable without page-scrolling underneath the open panel. .lang-menu__panel now has: - max-height: calc(100vh - var(--nav-h) - 24px) - overflow-y: auto - overscroll-behavior: contain (page won't scroll when the panel bottoms out) Also tightened the layout for <=480px viewports: - padding trimmed one step - width bumped from 92vw -> 96vw - grid locked to 2 equal columns (previous auto-fill sometimes collapsed to 1) - slightly larger vertical padding on links for tap-friendliness Desktop unchanged.
The Live network dashboard had a Peers card that was hardcoded to '5 algos' - a misleading placeholder, not actually the peer count. Replaced it with a real, live block-reward card. How it's fetched (chain-dashboard.js): 1. Reuse the /blocks/tip response we already fetch to get the tip block hash (Esplora-style .id field) 2. GET /block/<hash>/txs/0 - returns the first page of txs; [0] is the coinbase 3. Sum coinbase.vout[].value (satoshis) and divide by 1e8 to get DGB - this is 'block subsidy + fees', matching what DigiStats shows 4. Render into [data-stat=block-reward], refreshed every 60s like the rest of the dashboard Verified against digiexplorer.info: tip block at test time gave 256.41974777 DGB - byte-identical to the reference DigiStats screenshot. Failure mode: if the extra request fails (rate limit, network blip) the em-dash stays visible; the other 5 stat cards are unaffected. i18n: new chain.blockReward.label / .delta keys in en.json (old chain.peers.* keys left as orphans in translated catalogs). 37 files touched (root + JS + en.json + 36 locale mirrors).
…alf off-screen) Previous attempt only capped panel height. The real bug: .lang-menu__panel is position: absolute with right: 0, anchored to .lang-menu (the globe button in the far right of the header). At width 96vw the panel extended leftward from that anchor and overshot the viewport's left edge, clipping the first character or two off every language label. Fix for @media (max-width: 767px): - position: fixed - top: calc(var(--nav-h) + 8px) - left: 8px; right: 8px; width: auto Panel now spans the full mobile viewport minus 8px on each side, all labels fully visible, still scrollable inside via max-height + overflow-y from the earlier fix. Consolidated the earlier <=480px block into this one (same grid + tap-target tweaks now apply through 767px). Desktop layout unchanged.
The Monetary policy section had a hardcoded '~259' Block reward stat. Added data-stat=block-reward to its value span so it picks up the same live coinbase-tx fetch as the Live network dashboard - no extra API call, since chain-dashboard.js uses querySelectorAll and updates every matching element. '~259' stays as the pre-fetch fallback (it briefly flashes on cold load, then swaps to the real amount, e.g. 256.42). Label and delta unchanged - the number is still 'block reward, DGB per block'. 37 files touched (root + 36 locale mirrors).
…de CTA Per @Kryptokreep on Telegram: 'people are still lost when they go to github to download the node but digibyte.io makes it much simpler just a direct download'. Full Node card CTA cluster reordered: - Primary: 'Easy downloads' -> https://digibyte.io/downloads (curated multi-platform chooser) - Outline: 'Run a node' -> wiki guide (demoted - it's an install guide, not the download) - Outline: 'Checksums' -> GitHub releases (unchanged) Rationale: the primary CTA should be the fastest path to an install for non-technical visitors. The wiki 'Run a node' page is a guide for operators, not the download itself, so it belongs behind the primary. Direct per-platform binaries in the aside remain for advanced users who want the raw .exe/.zip/.tar.gz. i18n: new downloads.core.easyDownloads key in en.json; other 35 locales fall back to English. 37 files updated.
…legram) @Kryptokreep suggested and @ycagel confirmed: 'monetary policy needs to go'. Renamed the section throughout. Visible text: - Eyebrow: 'Monetary policy' -> 'Predictable issuance' - Footer link: 'Monetary policy' -> 'Predictable issuance' - Lead: 'Governed by a strictly predictable monetary policy, DGB is hard-capped...' -> 'Governed by a strictly predictable issuance schedule, DGB is hard-capped...' Anchors & ids (URL fragment now matches the visible label): - Section id + h2 id: monetary-policy -> predictable-issuance - Nav DGB and footer hrefs: #monetary-policy -> #predictable-issuance i18n keys renamed to force the new English through the sync fallback (all 36 locales pick it up automatically, no per-locale translator work needed): - tokenomics.monetaryPolicy -> tokenomics.predictableIssuance - footer.protocol.monetaryPolicy -> footer.protocol.predictableIssuance - tokenomics.lead -> tokenomics.lead.v2 (old key stays as an orphan) Section id (#tokenomics originally, then #monetary-policy, now #predictable-issuance) is a public anchor. Anyone bookmarking previous fragments will land at the top of the page instead of the section; acceptable since the redesign hasn't shipped yet. Not addressed in this commit: YC's 'is the difficulty number correct?' - waiting on his double-check before touching the .difficulty stat. 38 files touched.
…ngful reading
YC asked 'is the difficulty number correct?' - it was already realtime, but DigiByte has 5 mining algorithms and tip[0].difficulty returns whichever algo mined the last block. Values swing wildly per refresh (~230K for Odocrypt vs ~780M for SHA256d) because each algo has its own difficulty scale. Users see a different number every time - looks broken.
Fix: pin the displayed difficulty to SHA256d, the convention on most crypto sites and the largest / most stable of the five.
Implementation (chain-dashboard.js):
- Parse each block's version field with the same mask DigiByte Core uses: BLOCK_VERSION_ALGO = 0xF00, decoded via ALGO_NAMES map derived from digibyte/src/primitives/block.h (Scrypt / SHA256d / Groestl / Skein / Qubit / Odocrypt)
- Search /blocks/tip (returns 10 blocks) for the most recent SHA256d block
- If none in the last 10 (occasionally happens), page back one more batch via /blocks/{height-10} - 20 blocks reliably covers all 5 algos
- Fallback (very defensive): if still no SHA256d, keep the previous tip[0].difficulty behaviour
Also fixed the network-hashrate divisor from /15 (chain-wide target) to /75 (per-algo target = 15s * 5 algos). The previous math was 5x too high for the per-algo difficulty it was fed.
Delta text updates so the label is honest about what's shown:
- chain.difficulty.delta -> 'SHA256d * DigiShield-adjusted'
- chain.hashrate.delta -> 'SHA256d * 5-algo network'
Both use new .delta.v2 keys so every locale picks up the new English through the sync fallback.
Verified against digiexplorer.info: tip window had no SHA256d block; the second batch found height 23901087 with difficulty ~780M, matching what other DGB explorers report.
|
Need to remove the Privacy and Terms page if there is consensus because there is an old entity being referenced. |
Legal pages (Jose + DGBNOOB #17753427): - privacy-app.html: rewritten as generic website Privacy Notice (no 'DigiByte Foundation NZ Limited', no info@digibyte.io, no mobile-app scope) - terms-app.html: rewritten as generic website Terms of Use (all mobile-app clauses removed, no legal entity, no email) - legaldisclaimer.html: dropped 'the DigiByte Foundation' from section 3 Hero MIT chip: - 'Open source * MIT' now links to the project's own LICENSE instead of opensource.org/license/mit (across all 37 locales) Outdated Info paper (Jose): - Removed from Docs & Guides card, footer resources, and tokenomics CTA - Dropped 4 orphan i18n keys from all 35 locale catalogs - Tokenomics CTA now points at the 2026 Technical Architecture guide (new key tokenomics.cta.techArch) sats -> digis (Jose): - Replaced the Bitcoin-term 'sats' (and translated variants: satoshi, satoshich, satoshi/satov cyrillic, sati, Sats, sat, sata) with DigiByte's own 'digis' in digiassets.step3.body across root index.html + all 35 locale JSONs Digi-ID mobile bullets: - Fixed orphaned icon on the third benefit row by scoping flex-nowrap + flex:1/min-width:0 to .s-digiid ul.stack > li.cluster (base .cluster utility untouched) Locale HTMLs regenerated via tools/sync-locales.mjs
Track the DigiByte Core v9.26.5 DigiDollar patch release published 2026-07-23: - Roadmap card + downloads bullet + Windows/macOS/Linux CTAs now point at v9.26.5 assets - js/chain-dashboard.js static [data-stat=version] label bumped - langmenu/ticker.html 'Latest Core Release' widget bumped - news.xml: prepend v9.26.5 item (drop-in upgrade, no reindex, fixes ~15min DigiDollar oracle startup hang and buries Taproot/DigiDollar/AlgoLock via BIP90) - Locale HTMLs regenerated via tools/sync-locales.mjs against the updated en source and 35 locale JSON catalogs
) into redesign-2026 # Conflicts: # af/index.html # ar/index.html # bg/index.html # cs/index.html # da/index.html # de/index.html # el/index.html # en-us/index.html # es/index.html # fa/index.html # fi/index.html # fil/index.html # fr/index.html # hi/index.html # hr/index.html # hu/index.html # id/index.html # index.html # it/index.html # ja/index.html # ms/index.html # nb/index.html # news.xml # nl/index.html # pl/index.html # pt-br/index.html # pt/index.html # ro/index.html # ru/index.html # sl/index.html # sq/index.html # sv/index.html # sw/index.html # th/index.html # tr/index.html # vi/index.html # zh/index.html
Website redesign 2026 + full i18n catalog (35 locales)
Implements the proposal in #165 — please use that issue for higher-level
discussion; this PR description focuses on what's actually changing.
Live preview: https://dg-bio.vercel.app
Base:
DigiByte-Core/DigiByte.org:masterHead:
DennisPitallano:redesign-2026TL;DR
20 commits, ~110 files changed (~52 K insertions / ~48 K deletions — most deletions
are legacy per-locale
index.htmlfiles being regenerated from the new catalog).locales/<lang>.jsoncatalog driving 35 locales (237 keys each).tools/sync-locales.mjsrewritten to merge the catalog into each<lang>/index.htmlafter the existing path/canonical rewrites.index.htmlmarked up withdata-i18n/data-i18n-attrattributes.ar,fa) handled via the existingdir="rtl"rewrite.pt-BRbrowsers now correctly route to/pt-br/instead of/pt/.Commit log
How the i18n system works
Source HTML carries stable IDs on translatable elements:
Per-locale JSON catalog:
{ "hero.title": "止まらない稼働のために設計。", "meta.description": "DigiByteは…" }tools/sync-locales.mjsproduces every<lang>/index.htmlfrom the source plus thecatalog. Missing keys fall back to English. Inline markup inside catalog values
(
<strong>,<em>,<a>) is preserved verbatim because catalog content is trustedin-repo data.
Translation quality — honest caveat
The 35 catalogs were seeded with machine-translated values validated for
key-parity. They render naturally enough to ship, but native-speaker polish is
strongly recommended — strongest today in
es / de / fr / it / pt / nl / pl / ru / ja / zh, weakest inth / hi / fil / sw / sq / af.Refining a locale is now a one-file PR (edit
locales/<lang>.json, runnode tools/sync-locales.mjs, commit both the catalog and the regenerated<lang>/index.html).How to verify
/ar/or/fa/)./ja/or/zh/).node tools/sync-locales.mjs --checkreturns clean.Out of scope (intentional)
script, commit synced files — is sufficient).
Happy to split this PR into smaller chunks (e.g. design vs i18n vs catalog seeding) if
that helps review. Closes #165 once merged.