Changelog
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.5.0 - 2026-03-09
Added
JsonLocalizationRegistryBuilder.LoadFromJsonconvenience method for loading raw JSON strings directly on the builder without bypassing it- Circular reference detection in
LocalizationFormatter— nestedILocalizablecycles now throwLocalizationFormattingExceptioninstead of causing aStackOverflowException
Changed
- Breaking:
JsonLocalizationRegistryBuilderis now single-use — callingBuild()marks the builder as consumed; subsequentBuild()orAddFrom*calls throwInvalidOperationException - DI registration pattern replaced:
AddLocalizationno longer scansServiceDescriptor.ImplementationInstanceto find an internal configurator; instead, each call registers an individual action wrapper collected viaGetServices<>at resolution time, making it resilient to DI container decoration and shimming
Removed
LocalizationRegistryConfiguratorinternal class (replaced byLocalizationRegistryAction)
0.4.0 - 2026-02-20
Added
- Recursive/nested localization — when a property value implements
ILocalizable,FormatTemplateandBuildFallbacknow format it through the full resolution chain instead of callingToString() - Culture propagation through nested
ILocalizableformatting
Changed
FormatTemplateandBuildFallbackconverted frominternal statictoprivateinstance methods (not part of the public API surface)
0.3.0 - 2026-02-20
Added
- Additive
AddLocalization— multiple calls now accumulate configuration delegates instead of replacing the registry; later templates override earlier ones on a per-key/per-culture basis AddFromAssemblyTreemethod for scanning an assembly and all its transitive referenced assemblies with topological ordering (dependencies first, root last)[LoggerMessage]source-generated logging throughout the library: resource loading, assembly scanning, template override warnings, and resolution chain tracing- Override detection:
Warning-level log when a template key is replaced, including source descriptor for diagnostics sourceparameter onLoadFromJsonfor tracking template origin (assembly:Name:Resource,file:path,inline)
Changed
- Breaking:
AddFromAssemblyResourcesrenamed toAddFromAssembly - Breaking:
AddFromLoadedAssembliessignature changed fromparams string[] prefixestostring[] prefixes, params string[] patterns JsonLocalizationRegistrynow accepts an optionalILogger?constructor parameter for diagnostic logging
0.2.0 - 2026-02-20
Added
- New
Bogoware.Localization.AspNetCorepackage — per-request culture resolution, automatic JSON response localization, and ProblemDetails support for ASP.NET Core applications - CI/CD publishing for the AspNetCore package alongside the core library
0.1.1 - 2026-02-20
Added
- Custom exception hierarchy (
LocalizationException,LocalizationConfigurationException,LocalizationSerializationException) - Struct
ILocalizablesupport withNullable<T>handling - JSON serialization converters for nullable struct localizable types
Fixed
- Cached reflection in template formatting for improved performance
- Deterministic enumerable handling in property extraction
- Culture validation for registry lookups
0.1.0 - 2026-02-19
Added
- Initial release of Bogoware.Localization library
- FQDN-keyed template system mapping
Type.FullNameto localized format strings with{PropertyName}placeholders - Culture fallback chain: exact culture → parent culture → invariant culture
- Provider resolution chain: self → DI → registry → fallback → default format
- JSON-based localization registry with embedded resource support
- In-memory localization registry for testing
- DI integration via
IServiceCollectionextension methods - Comprehensive XML documentation