8 Commits

Author SHA1 Message Date
a6847447e8 feat: Drop Dutch as a supported UI/translation language
Dutch is no longer offered as a UI culture or translation target. The
ISO 639-3 "nld" entry and LanguageBySoftwareRelease rows are kept
intact since that lookup also tags the actual original language of a
catalog item (e.g. a release genuinely published in Dutch), which is
unrelated to UI translation support.

- Remove "nl"/"nld" from supported-culture lists (Startup.cs,
  EmailCulture.cs), all two-letter-to-ISO-639-3 mapping switches
  (UiLanguage, LanguageResolver, SoftwareBrowsingService, SeoMeta),
  the TranslationService language dictionary, the auto-translation
  disclaimer map, and the AllowedLanguageCodes whitelist in all 10
  *SuggestionApplier classes (plus their doc comments).
- Delete the 48 *.nl.resx resource files across Marechai and
  Marechai.Email.
- Add migration RemoveDutchTranslations to delete any existing
  LanguageCode='nld' rows from the 18 per-entity translation tables
  (descriptions, synopses, and Software*Translation tables).
2026-06-26 16:40:46 +01:00
bdb5b6013a Add configurable parallel background translations
Introduce a server-only Translation:MaxParallelTranslations option and bind it through IOptionsMonitor so background translation concurrency can be changed live without a restart.

Add shared BackgroundTranslationSettings helpers to normalize the configured value, pause background translation work when the value is 0, and coordinate bounded translation waves across workers and providers.

Update all short-text translation providers to translate missing rows in bounded waves while preserving existing batch-flush semantics, truncation rules, logging, and cache upserts.

Update DescriptionTranslationWorker to schedule bounded waves during slumber while still allowing in-flight translations to finish and save before yielding back to the primary TranslationWorker.

Refresh the ITranslationProvider contract comments to reflect bounded provider-level parallelism and add the default appsettings entry for MaxParallelTranslations = 1.
2026-06-26 14:00:50 +01:00
2d68ced147 feat: add condition to skip domain context for thinking models to prevent reasoning loops 2026-06-08 02:21:23 +01:00
68a99e7450 feat: enhance translation model handling and improve markdown processing logic 2026-06-07 21:30:46 +01:00
160e827f9d feat: remove Latin language support and add configuration for disabling internal reasoning in translations 2026-06-07 20:38:01 +01:00
67e3c8e034 Enhance TranslationService to support reasoning-model channels and improve JSON parsing for translation extraction 2026-06-02 23:26:25 +01:00
990a5c465d Add automatic software attribute translation system.
- Updated SoftwareAttributesService to include language parameter in DistinctKeys and DistinctValues API calls.
- Enhanced SoftwareService to pass language parameter when fetching software specifications and attributes for specific software and releases.
2026-05-14 20:41:53 +01:00
30147bf7a9 Add automatic software genre translation system.
- Removed a large number of unused genre entries from French and Italian resource files for SoftwareService.
- Updated SoftwareService to include language parameter when fetching genres from the API.
- Removed TranslationService registration from the DI container in Register.cs.
- Added MarechaiTranslation service registration in Startup.cs for improved translation handling.
- Updated _Imports.razor to include the new Translation namespace.
2026-05-14 19:30:29 +01:00