Translations
UI languages (application shell)
Pulsevia ships with English, German, and Spanish interface catalogs.
- Built-in strings live in
App\Domain\I18n\UiCatalog - Runtime overrides are stored in
ui_translations - Admins with
translations.manageedit them under Settings → Translations - Users pick a language in the top bar (saved to
users.preferred_locale+ cookie)
API:
| Endpoint | Purpose |
|---|---|
GET /api/locales |
Locale list |
GET /api/i18n?locale=de |
Merged catalog for the SPA |
GET /api/translations |
Admin editor rows |
PUT /api/translations |
Save a custom string |
POST /api/translations/reset |
Restore built-in value |
PUT /api/user/locale |
Persist preference |
Seed / refresh built-ins:
php artisan db:seed --class=UiTranslationSeeder --force
Campaign content locales
Configured locales include: en, de, es, fr, it (see config/pulsevia.php).
Translated per campaign:
- Title / thank-you title & message
- Question labels and help text
- Option labels
Each campaign has a default locale. Public forms accept ?locale=.
Tips
- Write the default language first, then add translations
- Keep NPS scales consistent across languages for analytics comparability
- Prefer editorial UI copy; use the Translations module for product-specific wording