Gå til indhold

Ecreo.Essentials.Translation

Ecreo.Essentials.Translation giver type-safe adgang til Umbraco dictionary items. I stedet for frie string keys kan projektet definere et key-hierarki med klasser, der arver fra DictionaryKeysBase, og derefter bruge ITranslationService til opslag.

Installer pakken i dit Umbraco-projekt:

Terminal window
dotnet add package Ecreo.Essentials.Translation

Pakken registrerer sine services via en Umbraco composer, så den kræver normalt ikke ændringer i Program.cs.

Definer dictionary keys som typer:

using Ecreo.Essentials.Translation;
public class DictionaryKeys : DictionaryKeysBase
{
public class Global
{
public class Cancel { }
public class Save { }
}
}

Inject ITranslationService og hent oversættelsen via typen:

public class MyService(ITranslationService translationService)
{
public string CancelText(CultureInfo culture)
{
return translationService.GetWithCulture<DictionaryKeys.Global.Cancel>(culture);
}
}

DictionaryKeys.Global.Cancel bliver til dictionary key Global.Cancel.

Hvis dictionary-værdien mangler eller er tom, returnerer servicen en fallback.

var label = translationService.GetWithFallback<DictionaryKeys.Global.Save>("Save");

For underkeys kan du bruge GetByKey*:

var label = translationService.GetByKeyWithFallback<DictionaryKeys.Global.Save>(
"Button",
"Save"
);

Det slår op på Global.Save.Button.

Hvis Umbraco-sproget har fallback language, prøver servicen fallback-sproget før defaultværdien. Cycles stoppes, så lookup ikke kan køre uendeligt.

Hvis en key ikke findes i Umbraco dictionary, opretter servicen den automatisk.

Alle sync-metoder har async-wrappers:

var label = await translationService.GetAsync<DictionaryKeys.Global.Cancel>();

Pakken registrerer:

  • ITranslationService som scoped service.
  • ITranslationStatisticsService som singleton.
  • Hosted service til at gemme translation usage statistics.
  • Health checks for manglende dictionary keys og ubrugte dictionary items.
  • Cache clearing ved ændringer i languages og dictionary items.

Missing dictionary items finder keys fra typer der arver fra DictionaryKeysBase, men som ikke findes i Umbraco dictionary. Checket kan oprette én eller flere manglende keys.

Unused dictionary items viser dictionary items, der ikke er blevet hentet gennem ITranslationService i de seneste 7 eller 30 dage, eller aldrig er blevet hentet.