plane
plane copied to clipboard
feat(i18n): add type-safe translations with AST-based key validation
- Rewrite @plane/i18n package with type-safe t() function
- Generate TypeScript types from English translation JSON
- Fix ICU plural format parsing in type generator
- Add 'as const' assertions to i18n fields in constants
- Create AST-based check:i18n script for each app
- Add turbo task for parallel i18n validation
- Convert translation files from TS to JSON format
- Rename locale directories (ua→uk, vi-VN→vi, tr-TR→tr)
- Add missing translation keys and fix key mismatches
- Export KeysWithoutParams type for dynamic key handling
Scripts:
- pnpm check:i18n (per app) - AST-based missing key detection
- pnpm i18n:validate - Cross-locale validation
- pnpm i18n:generate-types - Generate TS types from JSON
All apps pass type checking with 0 errors.
Description
Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] Feature (non-breaking change which adds functionality)
- [x] Improvement (change that would cause existing functionality to not work as expected)
- [ ] Code refactoring
- [ ] Performance improvements
- [ ] Documentation update
Screenshots and Media (if applicable)
Test Scenarios
References
[!IMPORTANT]
Review skipped
Draft detected.
Please check the settings in the CodeRabbit UI or the
.coderabbit.yamlfile in this repository. To trigger a single review, invoke the@coderabbitai reviewcommand.You can disable this status message by setting the
reviews.review_statustofalsein the CodeRabbit configuration file.
✨ Finishing touches
🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests
- [ ] Post copyable unit tests in a comment
- [ ] Commit unit tests in branch
feat/i18n-type-safety
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.