| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-05-07 | 1.6 kB | |
| v2.9.20 -- i18n perf_ per-locale lazy chunks (~96_ boot reduction) source code.tar.gz | 2026-05-07 | 458.7 MB | |
| v2.9.20 -- i18n perf_ per-locale lazy chunks (~96_ boot reduction) source code.zip | 2026-05-07 | 460.4 MB | |
| Totals: 3 Items | 919.1 MB | 0 | |
Highlights
Per-locale lazy i18n chunks. The 5.5 MB / 90,119-line monolithic i18n-fallbacks.ts was split into 26 per-locale files under frontend/src/app/locales/{code}.ts. The runtime bundles English synchronously (~45 KB gzip) as i18next's fallbackLng and lazy-loads the resolved locale via dynamic import() on boot and on every languageChanged event.
Before / after
| Before | After | |
|---|---|---|
| Boot i18n payload (EN user) | 1284 KB gzip | ~45 KB gzip |
| Boot i18n payload (DE/ES/FR/etc.) | 1284 KB gzip | ~45 + ~50 KB gzip = ~95 KB gzip |
| Reduction | — | ~96% EN, ~92% non-EN |
What shipped
- 26 new files:
frontend/src/app/locales/{en,de,fr,es,pt,ru,zh,ar,hi,tr,it,nl,pl,cs,ja,ko,sv,no,da,fi,bg,hr,id,ro,th,vi}.ts— auto-generated from the previous monolith viafrontend/scripts/split-i18n-fallbacks.mjs. - New
loadLocaleResource(code)helper exported fromapp/i18n.ts— idempotent,addResourceBundleon success, logs and falls back to English on failure. vite.config.tsmanualChunksupdated: eachlocales/{code}.tslands in its owni18n-{code}.jschunk with stable name (cache survives unrelated edits).i18n-fallbacks.tsretained as a test-only aggregator.boqResourceTypes.test.tsstill imports it to walk every locale; production bundles tree-shake it because no runtime entrypoint reaches it.
Install
pip install --upgrade openconstructionerp
Verify
VPS deployment: https://openconstructionerp.com (live, /api/health returns 2.9.20) PyPI: https://pypi.org/project/openconstructionerp/2.9.20/