DarkFlippers / DarkFlippers/qUnleashed
Obsolete Crowdin strings are never removed
- Dominant language
- C
- Stars
- 111
- Forks
- 8
- Avg merge
- 3h 41m
- Merged PRs (30d)
- 37
Description
`crowdin-tx.yml` runs `upload_sources: true` with no obsolete-string handling, and `crowdin.yml` sets only `preserve_hierarchy`. The Crowdin CLI does not remove strings that have disappeared from the source file unless `--delete-obsolete` is passed, so every key ever deleted from `translations/app_en.arb` is still in the project.
Cost compounds quietly:
- Translators spend effort on strings the app no longer has.
- Completion percentages are measured against a denominator that includes dead keys, so "100%" stops meaning the app is fully translated.
- `crowdin_summary.py` reports those same inflated numbers into the PR body and the job summary.
ChameleonUltraGUI handles this explicitly: `updateCrowdin.py` diffs `app_en.arb` against `main~1` and issues deletes through the strings API for keys that vanished.
- [ ] Confirm the input `crowdin/github-action@v2` exposes for `--delete-obsolete` (the CLI flag on `crowdin upload sources`)
- [ ] Enable it, or add a scheduled reconciliation that reports orphans without deleting
- [ ] Audit how many orphans exist today before turning deletion on — it is destructive, and a bad `.arb` in history could have registered keys worth keeping
Prefer a report-only first pass. Deleting a string in Crowdin discards its translations across every locale.
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.