--- phase: 05-distribution-and-hardening plan: 02 subsystem: ui tags: [resx, localization, french, publish, single-file, win-x64] # Dependency graph requires: - phase: 04-bulk-operations-and-provisioning provides: Phase 4 UI strings (Transfer, BulkMembers, BulkSites, FolderStruct, Templates) all added to Strings.fr.resx without accents provides: - Corrected French locale with proper diacritics for all 27 Phase 4 string keys - Single-file self-contained publish configuration (win-x64, ~200 MB EXE, zero loose DLLs) affects: [05-distribution-and-hardening, deployment, QA] # Tech tracking tech-stack: added: [] patterns: - "Conditional PropertyGroup for publish-only MSBuild properties — avoids polluting regular build/test with RuntimeIdentifier" key-files: created: [] modified: - SharepointToolbox/Localization/Strings.fr.resx - SharepointToolbox/SharepointToolbox.csproj key-decisions: - "PublishSingleFile PropertyGroup is conditional on '$(PublishSingleFile)' == 'true' — regular dotnet build and dotnet test are unaffected" - "IncludeNativeLibrariesForSelfExtract=true required — PnP.Framework has native binaries that must bundle into the EXE" - "PublishTrimmed remains false — PnP.Framework and MSAL use reflection; trimming breaks at runtime" patterns-established: - "Conditional PropertyGroup pattern for publish-only properties — activate via CLI flag, not default build" requirements-completed: [FOUND-11] # Metrics duration: 3min completed: 2026-04-03 --- # Phase 5 Plan 02: French Locale Fix and Single-File Publish Summary **27 French diacritic corrections across all Phase 4 UI string keys, plus conditional win-x64 single-file publish producing one ~200 MB EXE with zero loose DLLs** ## Performance - **Duration:** ~3 min - **Started:** 2026-04-03T11:53:46Z - **Completed:** 2026-04-03T11:56:06Z - **Tasks:** 2 - **Files modified:** 2 ## Accomplishments - Fixed all 27 French strings missing diacritics (accents, cedillas) across Transfer, BulkMembers, BulkSites, FolderStruct, Templates, and shared bulk-operation keys - Added conditional `` to csproj enabling `dotnet publish -p:PublishSingleFile=true` to produce a single self-contained EXE for win-x64 - Full test suite remains green: 134 pass, 22 skip (interactive MSAL tests — expected) ## Task Commits Each task was committed atomically: 1. **Task 1: Fix French diacritic-missing strings** - `f7829f0` (fix) 2. **Task 2: Add self-contained single-file publish configuration** - `39517d8` (feat) ## Files Created/Modified - `SharepointToolbox/Localization/Strings.fr.resx` — 27 string values corrected with proper French diacritics - `SharepointToolbox/SharepointToolbox.csproj` — Added conditional PropertyGroup for PublishSingleFile + SelfContained + IncludeNativeLibrariesForSelfExtract ## Decisions Made - `PublishSingleFile` PropertyGroup uses condition `'$(PublishSingleFile)' == 'true'` so normal builds and test runs are unaffected — no RuntimeIdentifier lock-in during development - `IncludeNativeLibrariesForSelfExtract=true` is necessary because PnP.Framework includes native binaries that must be bundled - `PublishTrimmed` stays false (pre-established project decision — PnP.Framework and MSAL rely on reflection) ## Deviations from Plan None - plan executed exactly as written. Also corrected `bulk.confirm.title` ("Confirmer l'operation" -> "Confirmer l'opération") and `templates.empty` ("Aucun modele enregistre." -> "Aucun modèle enregistré.") and `templates.opt.settings` ("Parametres du site" -> "Paramètres du site") which were not in the plan's numbered list but were clearly broken diacritics in the same file. These fell under Rule 1 (auto-fix bugs) as they were defects in the same file being edited. ## Issues Encountered None. ## User Setup Required None - no external service configuration required. ## Next Phase Readiness - French locale is now complete with proper diacritics across all 4 phases of UI strings - Single-file publish is ready: `dotnet publish SharepointToolbox/SharepointToolbox.csproj -c Release -p:PublishSingleFile=true -o ./publish` - Two Phase 5 success criteria (French locale + single EXE) now satisfied - Remaining Phase 5 work: Plan 01 (tests), Plan 03 (installer/README), Plan 04 (final QA) --- *Phase: 05-distribution-and-hardening* *Completed: 2026-04-03*