chore: remove crowdin i18n integration - #3088
Conversation
The Crowdin sync has been broken since May 2025 — the scheduled download workflow has failed on every run since (git auth failure, exit 128), so no translations have flowed in for ~14 months. Remove the integration and keep the catalogs in-repo: - delete crowdin.yml and the download/upload workflows - document the Lingui-only flow in CONTRIBUTING.md - strip stale X-Crowdin-* headers from the non-English catalogs No runtime change: translations still ship from the committed .po files. i18n-check.yml was already Crowdin-independent and is now the sole i18n CI guard. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Mjolnir Security Review
10 PRs reviewed |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
📦 Next.js Bundle Analysis for aave-uiThis analysis was generated by the Next.js Bundle Analysis action. 🤖
|
| Page | Size (compressed) |
|---|---|
global |
1.32 MB (🟡 +90 B) |
Details
The global bundle is the javascript bundle that loads alongside every page. It is in its own category because its impact is much higher - an increase to its size means that every page on your website loads slower, and a decrease means every page loads faster.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
If you want further insight into what is behind the changes, give @next/bundle-analyzer a try!
Six Pages Changed Size
The following pages changed size from the code in this PR compared to its base branch:
| Page | Size (compressed) | First Load |
|---|---|---|
/ |
96.01 KB (🟡 +2 B) |
1.42 MB |
/dashboard |
85.59 KB (🟡 +2 B) |
1.41 MB |
/markets |
54.89 KB (🟡 +2 B) |
1.38 MB |
/safety-module |
56.45 KB (🟡 +2 B) |
1.38 MB |
/sgho |
92.99 KB (🟡 +2 B) |
1.41 MB |
/v3-migration |
52.64 KB (🟡 +2 B) |
1.37 MB |
Details
Only the gzipped size is provided here based on an expert tip.
First Load is the size of the global bundle plus the bundle for the individual page. If a user were to show up to your website and land on a given page, the first load size represents the amount of javascript that user would need to download. If next/link is used, subsequent page loads would only need to download that page's bundle (the number in the "Size" column), since the global bundle has already been downloaded.
Any third party scripts you have added directly to your app using the <script> tag are not accounted for in this analysis
Next to the size is how much the size has increased or decreased compared with the base branch of this PR. If this percentage has increased by 20% or more, there will be a red status indicator applied, indicating that special attention should be given to this.
Summary
Removes the Crowdin integration. The sync has been broken since May 2025 — the last successful sync commit was
2025-05-30, and the scheduled download workflow has failed on every run since withfatal: could not read Username for 'https://github.com': terminal prompts disabled(exit 128) inside the Crowdin action's git step. That's a job firing every 6 hours for ~14 months and never succeeding, so no translations have actually flowed in during that time.Rather than fix the credentials, this drops the integration and keeps the catalogs maintained in-repo via Lingui.
Changes
crowdin.yml,.github/workflows/crowdin-download.yml,.github/workflows/crowdin-upload.ymlCONTRIBUTING.mdto document the Lingui-only flow (pnpm i18n= extract + compile) instead of thecrowdin upload sources/crowdin downloadcommandsX-Crowdin-*header metadata (project ID, file IDs) from the six non-English.pocatalogs — header lines only, no translation content touchedImpact
No runtime change. Translations still ship from the committed
.pofiles and are compiled by Lingui at build time exactly as before. The language switcher andSUPPORTED_LANGUAGES(en, es, fr, el) are untouched.i18n-check.ymlhad no Crowdin coupling — it just runspnpm i18nand fails if the tree is dirty — and is now the sole i18n CI guard.Verification
Ran
pnpm i18nlocally (the exact commandi18n-check.ymlruns). It compiles cleanly, does not re-add the strippedX-Crowdin-*headers, and leaves the tree with no changes beyond this diff — so that check will pass.Follow-ups (deliberately not in this PR)
src/locales/still containsde,ru, andzhcatalogs that aren't inlingui.config.jsorSUPPORTED_LANGUAGES. They're dead weight, but pruning them is a separate call from removing Crowdin.CROWDIN_TOKENrepo secret is now unreferenced and can be revoked in GitHub settings.🤖 Generated with Claude Code