Maschinelle Übersetzung

Die Localization Admin-Seite kann eine Lokalisierungs-JSON-Datei in einem einzigen Durchgang maschinell in eine oder mehrere Sprachen übersetzen. Es basiert auf einer provider-agnostischen Abstraktion – Azure AI Translator, DeepL und Google Cloud Translation, jedes Schiff eingebaut – und verwendet einen Dataverse-gestützten Übersetzungsspeicher, sodass man nur einmal für jede Übersetzung bezahlt. Die Ergebnisse werden pro Sprache oder als einzelne Zip heruntergeladen, wobei jede mit Anmerkungen annotiert ist, wie viele neu übersetzte Zeichenketten im Vergleich zur Wiederverwendung aus dem Speicher verwendet wurden.

Übersetzung einer Datei

Sobald die Funktion konfiguriert ist (siehe Setup unten), erscheint auf der Localization Admin-Seite des Frameworks ein Übersetzungspanel:

  1. Laden Sie eine Datei hoch – Drag & Drop oder durchsuchen Sie eine Lokalisierungs-JSON-Datei wie app.en.json.
  2. Bestätigen Sie die Quellsprache – sie wird automatisch aus dem Kultursegment (app.en.json) des Dateinamens erkannt und bleibt bearbeitbar.
  3. Wählen Sie Zielsprachen aus – jede Kultur, die Ihr Portal unterstützt und die der Anbieter übersetzen kann, wird angeboten; Kulturen, die der Anbieter nicht übersetzen kann, werden als behindert dargestellt.
  4. Übersetzen — Zeichenketten werden in Chargen gesendet, die die Grenzen pro Anfrage des Anbieters respektieren, und die gewählten Sprachen werden gleichzeitig übersetzt.
  5. Laden Sie herunter – nehmen Sie jede Sprache einzeln oder alle als Zip-Zahl. Jede Zeile berichtet, wie viele Zeichenketten übersetzt wurden und wie viele aus dem Gedächtnis wiederverwendet wurden.

Übersetzungsgedächtnis

Jede Zeichenkette, die der Anbieter übersetzt, wird in Dataverse gespeichert und nach Quelltext, Quellsprache und Zielsprache kodiert. Das nächste Mal, wenn derselbe String durchkommt – in einer anderen Datei, einem weiteren Durchlauf oder einer unberührten Bearbeitung – wird er aus dem Gedächtnis bereitgestellt, anstatt erneut gesendet zu werden. Da Anbieter pro Zeichen abrechnen, bleiben Wiederholungen und inkrementelle Neuübersetzungen im Grunde kostenlos, und das Ergebnis pro Sprache zeigt die Aufteilung, sodass man genau sehen kann, was neu war.

Aufbau

Das Übersetzungspanel erscheint nur, wenn beide darunterliegenden Teile an ihrem Platz sind; Ansonsten lässt die Admin-Seite es weg (oder zeigt eine einzeilige Eingabe an, die erklärt, was fehlt).

1. Installation der Übersetzungsspeicherlösung

Der Übersetzungsspeicher befindet sich in zwei Dataverse-Tabellen, die von der verwalteten PowerPortalsProLocalization Lösung bereitgestellt werden. Lade die neueste verwaltete Lösung aus den GitHub-Versionen herunter und importiere sie in deine Umgebung. Die Admin-Seite erkennt die Lösung anhand ihres einzigartigen Namens und bietet Übersetzungen nur an, wenn sie vorliegt.

2. Registrieren Sie einen Übersetzungsanbieter

Drei Anbieter liefern einsatzbereit – Azure AI Translator, DeepL und Google Cloud Translation – jeweils in einem eigenen NuGet-Paket, sodass das Kernframework keine Abhängigkeit von Übersetzungsanbietern hat. Füge das Paket für den Service, für den du einen Schlüssel hast, hinzu und registriere es neben AddPowerPortalsProWebServer(). Für Azure erstellen Sie eine kostenlose (F0) oder kostenpflichtige Azure AI Translator-Ressource und registrieren Sie sie dann mit Ihrem Schlüssel und Ihrer Region:

Für DeepL fügen Sie das PowerPortalsPro.Web.Server.Translation.DeepL Paket hinzu und registrieren Sie es mit Ihrem Authentifizierungsschlüssel (Free-Tier-Schlüssel, die automatisch auf :fx Route zum kostenlosen Endpunkt enden):

Für Google Cloud Translation fügen Sie das PowerPortalsPro.Web.Server.Translation.Google Paket hinzu und registrieren Sie es mit einem API-Schlüssel, der die Cloud Translation API aktiviert hat:

Anmerkung

Den Schlüssel leer zu lassen ist sicher: Der Anbieter ist einfach nicht registriert und das Übersetzungspanel bleibt verborgen, sodass derselbe Build mit oder ohne konfigurierte Übersetzung läuft.

Bringen Sie Ihren eigenen Anbieter mit

Übersetzung ist anbieterunabhängig. Die integrierten Azure-, DeepL- und Google-Anbieter sind jeweils eine Implementierung von ITranslationProvider, die in eigenen PowerPortalsPro.Web.Server.Translation.* Paketen ausgeliefert werden, sodass das Kernframework keine Abhängigkeit von Übersetzungsanbietern aufweist. Um einen anderen Dienst zu nutzen – Amazon Translate, ein On-Prem-Modell, ein LLM – ITranslationProvider implementiere und registriere es anstelle der eingebauten Dienste. Alles darüber (die Admin-Benutzeroberfläche, der Übersetzungsspeicher, das Batching und die Übersetzungs- vs-wiederverwendeten Zählungen) bleibt gleich.

Blazor und React

Das Übersetzungspanel ist eine eigenständige Komponente auf beiden Stacks, sodass du es auf deiner eigenen Admin-Seite hosten kannst, statt auf der des Frameworks. Jeder lädt seine eigenen Verfügbarkeitsdaten und rendert nichts, bis die Übersetzung konfiguriert ist:

React
Blazor

Anmerkung

Übersetzungsläufe sind automatisch begrenzt: Anfragen werden so aufgeteilt, dass sie unter den Größenbegrenzungen pro Anfrage des Anbieters bleiben, Zielsprachen laufen mit begrenzter Nebenläufigkeit, und gedrosselte (HTTP 429) Antworten werden mit exponentiellem Backoff erneut versucht – so bleibt ein großer mehrsprachiger Job auf jeder Provider-Ebene ohne zusätzliche Konfiguration innerhalb der Ratenbegrenzungen.