New in version 1.1.1
BricksMembers language packs are separate WordPress translation artifacts delivered by the license update service. The main plugin ZIP ships languages/brm.pot only; locale .po and .mo files are built into language-pack ZIPs.
Canonical Owners
TranslationSettingsServiceownsbrm_translation_mode, mode normalization, and whether official language packs should be loaded or requested.GeneralSettingsServicepersists the option from the existing General Settings save path.bricksmembers.phpowns textdomain candidate ordering during bootstrap.LicenseTranslationUpdatesowns sanitized locale context and WordPress translation transient entries.
Runtime Modes
site_language: load custom/Loco files first, then official WordPress language packs, then bundled fallback catalogs if present. Update checks include locale metadata.custom_only: load only custom/Loco files fromwp-content/languages/loco/plugins/. Update checks send an empty locale list.english: skip BRM textdomain loading. Update checks send an empty locale list.
Build and Distribution
Run composer build:translations to generate date-versioned translation releases such as build/translations/2026.05.23.1/brm-{locale}.zip, matching .sha256 files, and manifest.json. Upload those artifacts to the matching R2 translation prefix and register them in the License Service with source plugin version, translation release version, and coverage-through version.
Compatibility Contract
A translation pack can cover later plugin versions when the translated string set is still valid. The License Service compares the target plugin version with the pack’s source and coverage-through versions, then skips offers when the installed translation release is already current.