diff --git a/.github/workflows/CI-CD.yml b/.github/workflows/CI-CD.yml index f659777..49614d2 100644 --- a/.github/workflows/CI-CD.yml +++ b/.github/workflows/CI-CD.yml @@ -39,8 +39,8 @@ jobs: - name: Build and Pack run: dotnet build --configuration Release - - name: Test (Windows only, Framework 4.6.1) - run: dotnet test --configuration Release --no-build output\Release\net461\*Tests.dll -- NUnit.TestOutputXml=TestResults + - name: Test (Windows only, Framework 4.6.2) + run: dotnet test --configuration Release --no-build output\Release\net462\*Tests.dll -- NUnit.TestOutputXml=TestResults if: matrix.os == 'windows-latest' - name: Test (Windows only, all TFMs) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c9a930..c80cab0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,10 +16,21 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +## [11.0.0] - 2026-09-03 + ### Added - [L10NSharp] Added pseudolocalization support: lookups for the standard `qps-ploc` pseudo-locale (`LocalizationManager.PseudoLocalizationLanguageId`) return the English text pseudolocalized at runtime (e.g. `[Tîitlée Mîissîing]`), so testers can spot non-internationalized strings and layout problems. Set `LocalizationManager.OfferPseudoLocalization = true` to include it in the offered UI languages; `LocalizationManager.PseudoLocalize(string)` exposes the transform directly. The SampleApp turns this on, so you can see it in action. See `src/L10NSharp/Pseudo/README.md`. +### Changed + +- BREAKING CHANGE: [L10NSharp] [L10NSharp.Windows.Forms] [SampleApp] [CheckOrFixXliff] [ExtractXliff] Replaced the `net461` target framework with `net462`. The `System.Resources.Extensions` version raised transitively by the `SIL.ReleaseTasks` upgrade (above) no longer ships a `net461`-specific assembly, so `net461` is no longer a supported or tested target. Projects that still need to target `net461` should continue using the last release built for it, or upgrade to at least `net462`. + +### Security + +- [L10NSharp] [L10NSharp.Windows.Forms] [CheckOrFixXliff] [ExtractXliff] Upgraded `SIL.ReleaseTasks` from 2.5.0 to 3.3.0. This also raises the resolved version of `System.Resources.Extensions` (a transitive dependency of `SIL.ReleaseTasks`) from 6.0.0 to 10.0.11. Note: `SIL.ReleaseTasks` 3.3.0 has a known, build-time-only dependency on a vulnerable `Newtonsoft.Json` (via a temporary revert of its own `SIL.Core` dependency, pending an upstream `Mono.Unix` packaging issue) — per the upstream maintainers this is not an exploitable runtime risk, since the package is build-tool-only and never ships in L10nSharp's own output, and no L10nSharp or SIL.ReleaseTasks build step feeds it untrusted JSON. See [sillsdev/SIL.BuildTasks#88](https://github.com/sillsdev/SIL.BuildTasks/pull/88) for details. +- [L10NSharp.Windows.Forms] Upgraded `System.ServiceModel.Http` and `System.ServiceModel.Primitives` from 6.2.0 to 8.1.2, and added a direct `System.Security.Cryptography.Xml` reference pinned to 8.0.4. `System.ServiceModel.Primitives` 8.1.2 resolves a vulnerable 8.0.2 of `System.Security.Cryptography.Xml` transitively on `net8.0-windows`; the direct reference overrides it with the latest patched 8.0.x release. + ## [10.0.0] - 2026-08-27 ### Added @@ -39,7 +50,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - [L10NSharp.Windows.Forms] Removed emailForSubmissions parameter (8th parameter) from LocalizationManagerWinforms.Create. Since the localization dialog was jettisoned, it no longer makes sense to store this information on the localization manager. - [L10NSharp] Replaced the .NET 8.0 target with .NET Standard 2.0 for broader compatibility. - [L10NSharp] `GetDynamicString`, `GetDynamicStringOrEnglish`, and `GetString` now return the English fallback text immediately when called with a null, empty, or whitespace string ID, rather than attempting a cache lookup or write. - + ### Fixed - [L10NSharp.Windows.Forms] Restored project-local Resources support for `FallbackLanguagesDlgBase` button images (`Move`, `Move_up`, and `Move_down`). @@ -65,7 +76,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ## [9.0.0] - 2026-02-02 -### Changed +### Changed - BREAKING CHANGE: Move code that depends on Windows.Forms or System.Drawing into an L10NSharp.Windows.Forms namespace. Rename L10NSharp.UI as L10NSharp.Windows.Forms.UIComponents. Move L10NExtender out of UI subfolder into L10NSharp.Windows.Forms. Move Winforms related tests to L10NSharp.Windows.Forms.Tests. Change the folder for L10NSharp tests to match its namespace L10NSharp.Tests. @@ -88,7 +99,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). CHANGED: Remove static designation from the LocalizationManager class in order for LocalizationManagerWinforms to subclass it and share its properties. CHANGED: The Icon argument is removed from the Create methods in LocalizationManager. Create methods for LocalizationManagerWinforms are available with and without the Icon argument. (The two obsolete create methods in LocalizationManager, which included a TranslationMemory argument, are removed.) - + CHANGED: SetUILanguage in LocalizationManager no longer reapplies localizations based on a reapplyLocalizationsToAllObjectsInAllManagers argument, since reapplying localizations is a Winforms method. SetUILanguage in LocalizationManagerWinforms retains this argument and reapplies localizations depending on its value. MOVED: The methods ReapplyLocalizationsToAllObjectsInAllManagers, ReapplyLocalizationsToAllObjects, and GetLocalisedToolTipForControl are moved to LocalizationManagerWinforms. @@ -105,7 +116,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). CHANGED: In LocalizationManagerInternalWinforms, GetLocalizationManagerForComponent and GetLocalizationManagerForString, return type ILocalizationManagerInternalWinforms\ instead of ILocalizationManagerInternal\. - MOVED: The methods ReapplyLocalizationsToAllObjectsInAllManagers, ReapplyLocalizationsToAllObjects, GetLocalizedToolTipForControl, and GetRealTopLevelControl are moved to LocalizationManagerInternalWinforms. + MOVED: The methods ReapplyLocalizationsToAllObjectsInAllManagers, ReapplyLocalizationsToAllObjects, GetLocalizedToolTipForControl, and GetRealTopLevelControl are moved to LocalizationManagerInternalWinforms. - Split LocalizingInfo into LocalizingInfo and LocalizingInfoWinforms. @@ -118,7 +129,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). MOVED: The methods SendMessage, SendMessageWindows and SetWindowRedraw are moved to UtilsWinforms. - Split XliffLocalizationManager into XliffLocalizationManager and XliffLocalizationManagerWinforms. - + MOVED: The following are moved to XliffLocalizationManagerWinforms: - The properties ApplicationIcon, ToolTipCtrls, LocalizableComponents and StringCache. @@ -127,15 +138,15 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Split XliffLocalizedStringCache into XliffLocalizedStringCacheWinforms and XliffLocalizedStringCache. MOVED: The LeafNodeList property and the methods LoadGroupNodes and GetShortcutKeys are moved to XliffLocalizedStringCacheWinforms. - + ### Removed - BREAKING CHANGE: Remove code related to doing one's own localization at runtime. Also remove obsolete create methods from LocalizationManager. In particular: - - Remove the LocalizeItemDlg designer, cs, resx, and viewmodel. - - Remove ShowLocalizationDialogBox from LocalizationManager and LocalizationManagerInternal. + - Remove the LocalizeItemDlg designer, cs, resx, and viewmodel. + - Remove ShowLocalizationDialogBox from LocalizationManager and LocalizationManagerInternal. - Remove the following runtime-localization related methods from XliffLocalizationManager: PrepareComponentForRuntimeLocalization, HandleToolStripItemMouseDown, DoHandleMouseDown, HandeToolStripItemDisposed, HandleControlMouseDouwn, HandleControlDisposed, HandleTabPageDisposed, HandleDataGridViewDisposed, HandleListViewColumnHeaderClicked, HandleListViewDisposed, HandleListViewColumnDisposed, HandleDataGridViewCellMouseDown, HandleColumnDisposed, and ShowLocalizationDialogBox. - Remove obsolete Create methods from LocalizationManager. These are the two Create methods that included a TranslationMemory argument. @@ -276,7 +287,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). - Create nuget package - Strong-name assembly -[Unreleased]: https://github.com/sillsdev/l10nsharp/compare/v10.0.0...HEAD +[Unreleased]: https://github.com/sillsdev/l10nsharp/compare/v11.0.0...HEAD +[11.0.0]: https://github.com/sillsdev/l10nsharp/compare/v10.0.0...v11.0.0 [10.0.0]: https://github.com/sillsdev/l10nsharp/compare/v9.0.0...v10.0.0 [9.0.0]: https://github.com/sillsdev/l10nsharp/compare/v8.0.0.0...v9.0.0 [8.0.0]: https://github.com/sillsdev/l10nsharp/compare/v7.0.0...v8.0.0.0 diff --git a/Directory.Build.props b/Directory.Build.props index ba8b3d8..0602157 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,6 +1,6 @@ - net461;net48 + net462;net48 SIL SIL Global L10NSharp diff --git a/src/CheckOrFixXliff/App.config b/src/CheckOrFixXliff/App.config index bae5d6d..8d23437 100644 --- a/src/CheckOrFixXliff/App.config +++ b/src/CheckOrFixXliff/App.config @@ -1,6 +1,6 @@ - + diff --git a/src/CheckOrFixXliff/CheckOrFixXliff.csproj b/src/CheckOrFixXliff/CheckOrFixXliff.csproj index a0d0049..1bd80b0 100644 --- a/src/CheckOrFixXliff/CheckOrFixXliff.csproj +++ b/src/CheckOrFixXliff/CheckOrFixXliff.csproj @@ -12,9 +12,9 @@ $(NoWarn);NU5128;NU5118 - - - + + + diff --git a/src/ExtractXliff/App.config b/src/ExtractXliff/App.config index bae5d6d..8d23437 100644 --- a/src/ExtractXliff/App.config +++ b/src/ExtractXliff/App.config @@ -1,6 +1,6 @@ - + diff --git a/src/ExtractXliff/ExtractXliff.csproj b/src/ExtractXliff/ExtractXliff.csproj index 4bc1974..5290447 100644 --- a/src/ExtractXliff/ExtractXliff.csproj +++ b/src/ExtractXliff/ExtractXliff.csproj @@ -13,12 +13,12 @@ $(NoWarn);NU5128;NU5118 - - + + All - - + + diff --git a/src/L10NSharp.Tests/L10NSharp.Tests.csproj b/src/L10NSharp.Tests/L10NSharp.Tests.csproj index 4ddab4d..3f90a93 100644 --- a/src/L10NSharp.Tests/L10NSharp.Tests.csproj +++ b/src/L10NSharp.Tests/L10NSharp.Tests.csproj @@ -10,8 +10,8 @@ - - - + + + diff --git a/src/L10NSharp.Windows.Forms.Tests/L10NSharp.Windows.Forms.Tests.csproj b/src/L10NSharp.Windows.Forms.Tests/L10NSharp.Windows.Forms.Tests.csproj index b1f71fe..01dc307 100644 --- a/src/L10NSharp.Windows.Forms.Tests/L10NSharp.Windows.Forms.Tests.csproj +++ b/src/L10NSharp.Windows.Forms.Tests/L10NSharp.Windows.Forms.Tests.csproj @@ -13,11 +13,11 @@ - - - + + + - + diff --git a/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj b/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj index 0c5f376..32e0d44 100644 --- a/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj +++ b/src/L10NSharp.Windows.Forms/L10NSharp.Windows.Forms.csproj @@ -1,4 +1,4 @@ - + true $(TargetFrameworks);net8.0-windows @@ -8,27 +8,28 @@ L10NSharp.Windows.Forms True - + - - + + + - - + + All - - - + + + - + diff --git a/src/L10NSharp.Windows.Forms/Service References/BingTranslatorService/Reference.cs b/src/L10NSharp.Windows.Forms/Service References/BingTranslatorService/Reference.cs index c150d5a..0ce15bd 100644 --- a/src/L10NSharp.Windows.Forms/Service References/BingTranslatorService/Reference.cs +++ b/src/L10NSharp.Windows.Forms/Service References/BingTranslatorService/Reference.cs @@ -40,20 +40,30 @@ public partial class LanguageServiceClient : System.ServiceModel.ClientBasehttps://github.com/sillsdev/l10nsharp - - + + All - - - + + + diff --git a/src/L10NSharp/app.config b/src/L10NSharp/app.config index 9ca4d14..026523c 100644 --- a/src/L10NSharp/app.config +++ b/src/L10NSharp/app.config @@ -31,4 +31,4 @@ - + diff --git a/src/SampleApp/SampleApp.csproj b/src/SampleApp/SampleApp.csproj index c659ab0..531bb4b 100644 --- a/src/SampleApp/SampleApp.csproj +++ b/src/SampleApp/SampleApp.csproj @@ -8,7 +8,7 @@ false false - + @@ -16,6 +16,6 @@ - + diff --git a/src/SampleApp/app.config b/src/SampleApp/app.config index 6a754e2..276c243 100644 --- a/src/SampleApp/app.config +++ b/src/SampleApp/app.config @@ -18,4 +18,5 @@ - + +