fix(l10n): load app translations so Dutch displays in Procest (2)#7
Closed
WilcoLouwerse wants to merge 48 commits intodevelopmentfrom
Closed
fix(l10n): load app translations so Dutch displays in Procest (2)#7WilcoLouwerse wants to merge 48 commits intodevelopmentfrom
WilcoLouwerse wants to merge 48 commits intodevelopmentfrom
Conversation
Document the promotion-based branching model (feature→development→beta→main), hotfix policy, required quality checks, and local development workflow with a mermaid flow diagram. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds NcAppSettingsDialog-based user settings accessible from sidebar Configuration menu. Consolidates UserPreferencesController into SettingsController. Backend uses OCP\IConfig for per-user storage. Updates register schema JSON and repair step. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New modal dialog for creating tasks from list view. Dashboard KPI card hover fixes. Case and task list views updated with consistent filtering. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…rary AdminRoot uses CnSettingsSection for Case Type Management section. Settings wraps form in CnSettingsSection with doc-url and loading state. Webpack dedup aliases use $ suffix for exact-match. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…webpack alias Makes the shared library work in both monorepo dev (local source alias) and CI/production builds (npm package from git). The alias only activates when ../nextcloud-vue/src exists. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replaces github:ConductionNL/nextcloud-vue#main with ^0.1.0-beta.1 from npm registry. Faster installs, no git clone + build step. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Nextcloud App Store schema does not accept EUPL-1.2 as a valid licence value, causing all release uploads to fail with HTTP 400. Revert to 'agpl' which is in the accepted set. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add vimeo/psalm ^5.26 + psalm.xml config - Add phpstan/phpstan ^1.10 + phpstan.neon config - Add nextcloud/coding-standard, phpcsstandards/phpcsextra - Add roave/security-advisories, edgedesign/phpqa - Add psalm, phpstan, phpmetrics:violations, phpcs:output, phpqa scripts - Fix phpmetrics:violations flag to --violations-xml (matching OpenRegister) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e coverage Replaces the one-liner README with a comprehensive document covering: - Logo and CI badges header - Screenshots table (dashboard, cases, admin) - Detailed feature sections organized by category - Mermaid architecture diagram - Data model table with CMMN 1.1 and ZGW API mappings - Directory structure - Requirements, installation, and development guide - Tech stack and standards/compliance Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tcloud-vue Replaces manual currentView/currentRoute navigation with vue-router. App.vue now renders <router-view /> and mounts CnIndexSidebar globally. CaseList and TaskList are refactored to use CnIndexPage with schema- driven columns and built-in CRUD dialogs. Adds src/router/ for route definitions. Updates procest_register.json schema and bumps dependencies. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: Migrate to Vue Router and refactor views to @conduction/nextcloud-vue
- Add @conduction/nextcloud-vue to import/ignore and import/no-unresolved ignore list (package is resolved via webpack alias at build time; published npm version may lag behind local source) - Fix vue/no-mutating-props in UserSettings.vue: replace :open.sync with :open + @update:open emit pattern - Regenerate package-lock.json to include @conduction/nextcloud-vue (was missing from lock file, causing npm ci failure in CI) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fixes indentation and formatting issues flagged by vue/html-indent and vue/singleline-html-element-content-newline rules that are enforced consistently in the CI environment. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: Resolve ESLint errors and update package-lock.json
…ud-vue@0.1.0-beta.3 @conduction/nextcloud-vue@0.1.0-beta.3 now ships css/index.css at the package root, so the css/index.css import and all named exports resolve correctly. Removes the temporary import/ignore and import/no-unresolved ignore rules. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix: Standardize logos, fix ESLint errors, upgrade to @conduction/nextcloud-vue@0.1.0-beta.3
…sable
Replace boilerplate setup/teardown sidebar methods, fetchCases/fetchTasks,
and computed store refs with useListView(objectType, { sidebarState,
defaultSort }) in setup().
- CaseList.vue: useListView('case', { sidebarState, defaultSort: deadline asc })
Supplementary loadCaseTypes/loadStatusTypes remain in mounted() since
they load independent reference data for template formatters.
- TaskList.vue: useListView('task', { sidebarState, defaultSort: dueDate asc })
loadCaseTitle helper preserved in methods; calls useObjectStore() directly.
All entity-specific logic (deadline/status formatting, row classes,
quick-status dropdown, case title resolution) is unchanged.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add phpunit.xml with PHPUnit 10.5 configuration - Add tests/bootstrap.php with OCP class autoloader - Add tests/unit/Controller/SettingsControllerTest.php (2 tests) - Update .github/workflows/code-quality.yml to run PHPUnit on every PR - Fix composer.json test:unit script to use correct vendor binary Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Psalm (Static Analysis) step to code-quality.yml php-quality job Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…lateParam in Psalm Add DeepLinkRegistrationEvent to UndefinedClass suppressions (runtime OpenRegister dependency) and add MissingTemplateParam suppressor for IEventListener generic param to reach 0 Psalm errors. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
# Conflicts: # .github/workflows/code-quality.yml # composer.json # psalm.xml
complete-l10n:
- Add ~250 missing keys to l10n/en.json and l10n/nl.json (302 total)
- Archive complete-l10n change
fix-settings-bug:
- Replace settings dropdown with single Settings button in MainMenu.vue
- Remove /case-types route from router
- Archive fix-settings-bug change
fix-dutch-display:
- Load app translations via loadTranslations('procest') before Vue mount
(Nextcloud does not inject Procest's l10n)
- Use translate as t, translatePlural as n from @nextcloud/l10n
(package exports translate/translatePlural, not t/n)
- Apply to main.js and settings.js
- Archive fix-dutch-display change
openspec:
- Add verify-l10n.js for l10n validation (JSON, key sync, placeholders)
- Add phpstan-bootstrap.php to register OCP/NCU autoloading (nextcloud/ocp has no composer autoload) - Add ignoreErrors for OCP unknown classes, invalid types, and OpenRegister runtime dependency - Fixes 76 PHPStan errors in CI Made-with: Cursor
- Move AI/IDE config and workflows to parent apps-extra folder - Add to .gitignore to prevent re-adding Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
Enforces line ending normalization and binary file detection to prevent cross-platform issues and accidental corruption. Improves codebase consistency and reduces merge conflicts.
- Replace non-existent CnDashboardPage with custom dashboard layout - Add getCurrentUserId() helper, replace deprecated OC.currentUser - Remove v-html in ActivityFeed, use Unicode chars for icons Made-with: Cursor
- Archived 3 completed OpenSpec changes (zgw-autorisaties-api, zgw-newman-test-suite, zgw-notificaties-api) to openspec/changes/archive/ - Synced their specs to openspec/specs/ (zgw-autorisaties, zgw-newman, zgw-notificaties) - Added full multi-perspective test results (functional, UX, accessibility, performance, security, API) + summary README - Updated feature-counsel report and comprehensive test results - Added test-results/screenshots to .gitignore
a8fb52d to
b21f61a
Compare
…ration spec - Archive fix-settings-url-bug change to openspec/changes/archive/2026-03-17-fix-settings-url-bug/ - Add REQ-OREG-014 (Frontend API URL Construction) to main openregister-integration spec - Update administration.md feature doc to document generateUrl() pattern
- Resolve all merge conflicts - l10n: merge both key sets (373 en, 378 nl keys total) - phpstan.neon: merge ignoreErrors from both branches - src/main.js: combine loadTranslations (fix-dutch-display) with initializeStores (development) - openspec specs, PHP config, Vue files: take development version
Contributor
Quality Report
Summary
PHP Quality
Vue Quality
Security
License Compliance
composer dependencies (100 total)
npm dependencies (241 total)
PHPUnit TestsPHPUnit tests were not enabled for this run. Integration Tests (Newman)Newman integration tests were not enabled for this run. Generated automatically by the Quality workflow.
|
- PHP: convert inline ternaries to if/else (PEAR standard) - PHP: change elseif to else if - PHP: strip em-dash from @SuppressWarnings tags - PHP: change phpstan inline doc comments to single-line format - Vue: wrap multiple template roots in single div (vue/no-multiple-template-root) - Vue: migrate plain style blocks to scoped with :deep() (vue/enforce-style-attribute) - Vue: fix max-attributes-per-line in App.vue - eslint: disable import/named for @conduction/nextcloud-vue - stylelint: add required rules property to config
- Convert all remaining inline ternary operators to if/else blocks - Align equals signs in consecutive assignment groups - Fix inline doc block comment format - Affected files: ZtcController, DrcController, ZrcController, ZgwService, ZgwZtcRulesService, ZgwZrcRulesService
- Remove over-padded equals alignment on non-grouped assignments - Change single-line block comment to inline comment - Add end comment for long if block (PEAR requirement) - Fix iot variable padding
Contributor
|
Closing — i18n/l10n fixes have already been applied directly to development. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Procest: l10n completeness, Dutch display fix, and settings cleanup
fix-dutch-display
Root cause: Nextcloud does not auto-inject translations for apps like Procest. The Vue app mounted before translations were loaded, causing all UI text to fall back to raw keys.
new Vue(...).$mount()insideloadTranslations('procest', callback)inmain.jsandsettings.jsso the locale bundle is fetched before the app renderstranslate as tandtranslatePlural as nfrom@nextcloud/l10n(the package exports these names, not the shorthandt/ndirectly)complete-l10n
With Dutch display now working, all translation keys needed to exist.
l10n/en.jsonandl10n/nl.json(302 total keys each), covering dashboard stats, dialogs, form fields, validation messages, ZGW-specific labels, and priority levelsfix-settings-bug
NcAppNavigationSettingsdropdown (which contained "Case Types" and "Configuration") with a single direct Settings navigation item/case-typesnamed route; it now redirects toSettingsto avoid broken linksNcAppNavigationSettingsandShapeOutlineimportsopenspec
openspec/verify-l10n.js: a Node script that validates JSON syntax, key parity between locale files, placeholder consistency ({placeholder}matching), and coverage of translation keys used in source — runnable from the app root withnode openspec/verify-l10n.jsopenspec/archive/