🆕 Localization Contributions
For additional language support, contributors only need to edit Resources/sample.plist. The runtime defaults and generated plist/mobileconfig output are derived from that localization surface. See Language Translation: Italian for a real-world example.
31-Mar-2026
- Applied the in-process DDM resolver parsing improvements from the Jamf Pro Extension Attributes to
reminderDialog.zsh, reducing subprocess churn in the runtime conflict/no-match detection path. - Bumped
reminderDialog.zsh,launchDaemonManagement.zsh,assemble.zsh, and the pending-update Jamf Pro Extension Attributes to3.1.0b8.
Version 3.1.0b7 (31-Mar-2026)
- Changed
reminderDialog.zshto ship English built-in fallback text only; non-English interfaces now require localized*Localized_<code>keys in managed or local preferences.reminderDialog.zshis now nearly 14 percent leaner, reducing maintenance overhead while preserving localized deployment flexibility through plist-driven translations.
- Updated
reminderDialog.zshDDM resolver classification so contradictory declaration state is tracked explicitly asconflict, while clean scan failures continue to classify asnoMatchand missing/invalid declaration state is logged distinctly. - Updated
Resources/JamfEA-Pending_OS_Update_Date.zshto map non-resolved states to documented sentinel date codes so it remains valid for a Jamf ProDatedata type. - Updated
Resources/JamfEA-Pending_OS_Update_Version.zshto return specific resolver states (conflict,noMatch,missing,invalidVersion) instead of collapsing all trust failures toNone. - Optimized the two pending-update Jamf Pro Extension Attributes by replacing per-line external parsing in the DDM resolver hot path with in-process Zsh parsing, substantially reducing execution time on large
install.logfiles. - Hardened the shared contradiction check so a declaration that reappears after
No updates found for DDM to enforcenow classifies asconflict, including repeated identical declarations.- clean non-failure
Nonestate is preserved internally; the version EA returnsNoneliterally while the date EA maps it to a documented sentinel date code.
- clean non-failure
Version 3.1.0b6 (31-Mar-2026)
- Re-attempted to address Issue #87, thanks for the detailed testing feedback, @DamianFornagiel!)
- Updated
assemble.zshprior-plist validation to accept either legacyHelpMessageor one-or-moreHelpMessageLocalized_<code>keys, so localized-only profiles are no longer rejected as invalid upgrade sources. - Updated Knowledge Base suppression in
assemble.zshto remove the Knowledge Base row from every present help-message variant, includingHelpMessageLocalized_*, instead of rewriting only the legacyHelpMessagekey. - Clarified README guidance so Mac Admins use base text keys for shared cross-language copy and reserve
*Localized_<code>keys for explicit per-language overrides.
- Updated
Version 3.1.0b5 (31-Mar-2026)
- Added shipped Italian (
it) localization toResources/sample.plist, regenerated sample-derived deployment artifacts, and refreshed README / issue-template examples so the documented language set matches the repo state. - Replaced hard-coded dialog language allowlists in
reminderDialog.zshwith dynamic localization detection, so any language with aTitleLocalized_<code>key in managed or local preferences is now recognized without additional script edits. - Added a second localized-preference loading pass so previously unknown
*Localized_<code>keys are imported from/Library/Managed Preferencesand/Library/Preferencesusing the existing local-then-managed precedence model. - Updated dialog locale fallback behavior so unknown language codes no longer force
en_US.UTF-8, allowing weekday and date rendering to fall back to the system default locale when no explicit mapping exists. - Updated locale resolution to prefer any installed locale matching the active dialog language code, allowing plist-only translations to localize weekday names and
%a/%bdeadline dates without adding per-language script mappings. - Updated
Resources/createPlist.zshto preserve additional*_Localized_<code>keys fromResources/sample.plist, so optional plist/mobileconfig regeneration no longer drops new languages that are not hardcoded in the script. - Updated the Language Translation issue template to document the new auto-detection behavior and clarify the supported plist locations for demo testing.
Version 3.1.0b4 (30-Mar-2026)
- Fixed localized text fallback so explicitly configured base scalar keys such as
HelpMessage,Message, and related*Localized_*preference families are no longer silently overwritten by shipped localized defaults when no per-language override is present. This restores backward compatibility for older profiles while preserving explicit localized overrides. (Addresses Issue #87, thanks for the heads-up, @DamianFornagiel!) - Updated string preference loading to treat explicit plist keys as authoritative even when their value is an empty string, aligning runtime behavior with generated plist values such as
SupportAssistanceMessage=""when Knowledge Base surfaces are disabled.
Version 3.1.0b3 (30-Mar-2026)
- Polished German localization across
reminderDialog.zshandResources/sample.plist, switching the default user-facing copy to informal second-person phrasing and restoring umlauts in the shipped German strings. (Pull Request #86; thanks, @AirBookMac!) - Added first-class Dutch (
nl) localization support across runtime language detection, locale-aware deadline rendering, generated plist/mobileconfig output, and sample configuration defaults. (Pull Request #85; thanks, @JordyThery!) - Externalized the remaining hard-coded localized runtime strings into plist-backed preferences, including update/upgrade vocabulary, relative deadline phrases, infobox labels, deadline enforcement messaging, and past-deadline restart dialog copy.
- Updated
Resources/sample.plist,Resources/createPlist.zsh, and release metadata so translators can work from the plist surface instead of code-localized strings. - Fixed DDM declaration resolution for newer macOS softwareupdate log patterns (thanks for the assist, @phillnz!)
Full Changelog: v3.0.1...v3.1.0b8