Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

### Added
- Consume translations from the central `@escalated-dev/locale` npm package. The package is loaded as the base layer, this package's `resources/lang/{locale}/messages.json` files are deep-merged on top as overrides, and host apps can drop further overrides into `resources/lang/overrides/{locale}/messages.json`. See `resources/lang/overrides/README.md` for the layering rules and a sample `config/i18n.ts` chain for `@adonisjs/i18n` v3+.

### Changed
- **BREAKING**: Upgraded to AdonisJS v7. Host applications must be on AdonisJS Core ^7.0, Lucid ^22.0, Auth ^10.0, Inertia ^4.0, Drive ^4.0, Mail ^10.0, and Node.js 24+. Bundles Dependabot updates #58 (auth 10.1), #59 (drive 4.0), #60 (lucid 22.4), #62 (session 8.1).
- Internal: replaced `response.redirect().toRoute(name)` with a small `redirectToRoute` helper to bypass v7's strict, host-augmented `RoutesList` types in plugin code (runtime semantics unchanged).
Expand Down
22 changes: 21 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ authorization: {
- **SSO:** SAML and JWT-based single sign-on
- **RBAC:** Role-based access control with granular permissions
- **Automation:** Configurable automation rules with conditions and actions
- **i18n:** Multi-language support (EN, ES, FR, DE)
- **i18n:** Multi-language support sourced from the central `@escalated-dev/locale` npm package, with optional per-host overrides under `resources/lang/overrides/`
- **Plugin System:** Extensible via TypeScript SDK plugins
- **REST API:** Token-authenticated API with rate limiting
- **Import Framework:** Bulk data import support
Expand Down Expand Up @@ -443,6 +443,26 @@ const assignmentService = await app.container.make('escalated.assignmentService'
await assignmentService.autoAssign(ticket)
```

## Translations (i18n)

Translations are sourced from the central [`@escalated-dev/locale`](https://github.com/escalated-dev/escalated-locale)
npm package and shared with every Escalated host plugin (Laravel, Rails,
Django, Spring, etc.). Three layers are merged at runtime, with later
layers winning on key conflict:

1. **Central package** — `@escalated-dev/locale/locales/{locale}/`
2. **Bundled local** — `resources/lang/{locale}/messages.json` (this package)
3. **Host overrides** — `resources/lang/overrides/{locale}/messages.json`

To override a single string in your host app, create a file under
`resources/lang/overrides/{locale}/messages.json` containing only the keys
you want to change — everything else falls through to the central package.

If your host app uses `@adonisjs/i18n` v3+ directly (in addition to the
plugin's own `t()` helper), see `resources/lang/overrides/README.md` for a
sample `config/i18n.ts` that chains `loaders.fs()` against the central
package and your host's `app.languageFilesPath()`.

## Frontend Package

This package serves only the backend API via Inertia.js. The shared Vue 3 frontend components are provided by the `@escalated-dev/escalated` package, which is framework-agnostic and works with all Escalated backends (AdonisJS, Laravel, Rails, Django).
Expand Down
Loading