You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The server fetches manifest.json once per hour (cached). Individual language files are fetched only on user-initiated install. The bcp47 field is what the future per-user dropdown will match against Accept-Language.
Backwards compatibility
For BTCPay versions hardcoded to fetch translations/<lang>.json directly (pre-manifest), the static files at the old URLs remain in place. New versions read from manifest.json and follow its entries.
The manifest top-level _redirect field is reserved for a future move to a standalone translations repo - clients follow it without coordinated server-side changes. The default manifest URL inside BTCPay Server source is updated on each release so the redirect is a fallback, not the primary path.
Dependencies
This page depends on these btcpayserver-translator PRs landing first:
#47 (1amKhush): core language-pack validation. Catches malformed language packs at install time.
This issue tracks Phase 1 of the BTCPay Server translations revamp roadmap.
Goal
Replace the current
/server/dictionariesraw CRUD surface with a/server/translationspage that:btcpayserver-translatorupstream.Data source
Single
manifest.jsonat the root ofbtcpayserver-translator, regenerated by CI on every merge tomain:{ "languages": [ { "code": "fr", "bcp47": "fr-FR", "name": "French", "native": "Francais", "file": "translations/french.json", "sha": "...", "maintainer": "teamssUTXO|https://github.com/teamssUTXO", "updated": "2026-04-12T10:30:00Z" } ], "_redirect": null }The server fetches
manifest.jsononce per hour (cached). Individual language files are fetched only on user-initiated install. Thebcp47field is what the future per-user dropdown will match againstAccept-Language.Backwards compatibility
For BTCPay versions hardcoded to fetch
translations/<lang>.jsondirectly (pre-manifest), the static files at the old URLs remain in place. New versions read frommanifest.jsonand follow its entries.The manifest top-level
_redirectfield is reserved for a future move to a standalone translations repo - clients follow it without coordinated server-side changes. The default manifest URL inside BTCPay Server source is updated on each release so the redirect is a fallback, not the primary path.Dependencies
This page depends on these
btcpayserver-translatorPRs landing first:#47(1amKhush): core language-pack validation. Catches malformed language packs at install time.#49(teamssUTXO): unit tests + CI workflow. Foundation for the manifest.json regeneration. Per its description, merges after Automating bundling of JS/CSS files #47.Both bundled into Phase 1 of the roadmap so the install path has working validation + the manifest comes online with CI behind it.
Target
Phase 1 target completion: 2026-05-04 (2 weeks from 2026-04-23).