Skip to content

feat(i18n): Fix duplicate key and align translation files (277 keys)#59

Open
rubenvdlinde wants to merge 7 commits into
developmentfrom
feature/i18n-complete-translations
Open

feat(i18n): Fix duplicate key and align translation files (277 keys)#59
rubenvdlinde wants to merge 7 commits into
developmentfrom
feature/i18n-complete-translations

Conversation

@rubenvdlinde
Copy link
Copy Markdown
Contributor

Summary

  • Wrap all user-facing strings in t() / $this->l10n->t() translation calls
  • Ensure English is the primary language for all translation keys (per ADR-007)
  • Convert any hardcoded Dutch strings to English keys with Dutch in nl.json
  • Complete l10n/en.json (identity-mapped) and l10n/nl.json (Dutch translations)
  • Fix <script setup> components missing direct t import from @nextcloud/l10n

Test plan

  • Verify app loads without JavaScript errors
  • Switch Nextcloud language to Dutch and verify translations display correctly
  • Switch back to English and verify English strings display correctly
  • Spot-check key pages (dashboard, settings, detail views) in both languages

🤖 Generated with Claude Code

- Extend base webpack config instead of replacing resolve/module
- Add NodePolyfillPlugin for process polyfill compatibility
- Add CnObjectSidebar + objectSidebarState for proper sidebar positioning
- Follows ADR-017 (component composition) and ADR-018 (header actions)
- webpack.config.js: disable splitChunks (NC serves chunks from wrong path),
  add SCSS rule, use NodePolyfillPlugin, extend base config not overwrite
- router/index.js: static imports instead of lazy import() — prevents
  ChunkLoadError from /apps/ vs /custom_apps/ path mismatch
- main.js: remove loadTranslations wrapper (blocks mount on l10n 404),
  use direct t/n imports matching procest pattern
- package.json: upgrade @nextcloud/l10n ^2→^3.4.1, @conduction/nextcloud-vue
  beta.3→beta.7, fix apexcharts override ^3.45.0
- Replace custom HTML dashboard with CnDashboardPage component
- KPI cards use CnStatsBlock with proper grid layout (4 cols each)
- Move 'Bekijk alle' links to widget header-actions
- Consistent with Procest/Pipelinq dashboard patterns
…Settings

- router: replaced SettingsView with AdminRoot (same component used by
  NC admin panel at /settings/admin/decidesk), keeping both surfaces in sync
- MainMenu: wrapped Settings link in NcAppNavigationSettings (gear icon widget)
  matching the Nextcloud UX convention for admin-only controls
Correct Nextcloud settings pattern (matching OpenCatalogi):
- Admin config: /settings/admin/decidesk (NC admin panel via AdminSettings.php)
- In-app settings: NcAppSettingsDialog modal from gear menu
- Gear foldout (NcAppNavigationSettings) holds admin items + Settings
- Settings click emits @open-settings, App.vue opens UserSettings modal
- Removed /settings route from Vue router
- Remove duplicate key in en.json
- Verify all 253 t() keys present in both l10n files
All translation keys now use sentence case per ADR-007.
Only first word capitalized, except proper nouns and acronyms.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant