Start · Sprachen · JavaScript · Referenz · Translator.sourceLanguage

Translator.sourceLanguage

Eigenschaft

Schreibgeschützte Eigenschaft, die die Sprache des Eingabetextes als BCP-47-Sprachcode liefert, auf die eine <code>Translator</code>-Instanz festgelegt ist.

seit JavaScript Chrome/Edge 138+ (Desktop), experimentell – keine Kategorie: webapi

Signatur

get Translator.prototype.sourceLanguage

Beschreibung

Die Eigenschaft sourceLanguage einer Translator-Instanz gibt die Ausgangssprache zurück, also die Sprache, in der der Text an translate() bzw. translateStreaming() übergeben werden soll. Der Wert ist ein BCP-47-Sprachcode wie "en", "de" oder "pt-BR".

Festgelegt wird der Wert einmalig beim Erzeugen über Translator.create({ sourceLanguage, targetLanguage }). Danach lässt er sich nicht mehr ändern. Brauchst du ein anderes Sprachpaar, erzeugst du eine neue Instanz. Die Eigenschaft hilft dir vor allem, wenn du mehrere Übersetzer verwaltest (z. B. in einem Cache pro Sprachpaar), Instanzen in der Oberfläche beschriftest oder prüfst, ob ein vorhandener Übersetzer zu einem erkannten Eingabetext passt.

Wichtig: Der Übersetzer erkennt die Sprache nicht selbst. Er geht einfach davon aus, dass der Eingabetext in sourceLanguage geschrieben ist. Ist die tatsächliche Sprache unbekannt, ermittelst du sie vorher mit der LanguageDetector-API und erzeugst danach einen passenden Übersetzer.

Rückgabewert

Typ
string
Beschreibung
Der BCP-47-Sprachcode der Ausgangssprache, so wie er beim Aufruf von Translator.create() als sourceLanguage angegeben wurde, z. B. "en".

Beispiele

Übersetzer erzeugen und Sprachpaar auslesen

if ('Translator' in self) {
  const translator = await Translator.create({
    sourceLanguage: 'en',
    targetLanguage: 'de'
  });

  console.log(`Übersetze von ${translator.sourceLanguage} nach ${translator.targetLanguage}`);
  console.log(await translator.translate('Hello world!'));
} else {
  console.log('Translator-API nicht verfügbar');
}
Übersetze von en nach de Hallo Welt!

Cache für Übersetzer pro Sprachpaar

const translators = new Map();

const getTranslator = async (sourceLanguage, targetLanguage) => {
  const key = `${sourceLanguage}->${targetLanguage}`;
  if (!translators.has(key)) {
    const availability = await Translator.availability({ sourceLanguage, targetLanguage });
    if (availability === 'unavailable') {
      throw new Error(`Sprachpaar ${key} wird nicht unterstützt`);
    }
    translators.set(key, await Translator.create({ sourceLanguage, targetLanguage }));
  }
  return translators.get(key);
};

const t = await getTranslator('fr', 'de');
console.log(t.sourceLanguage); // 'fr'
fr

Erkannte Sprache mit vorhandenem Übersetzer abgleichen

const detector = await LanguageDetector.create();
let translator = await Translator.create({ sourceLanguage: 'en', targetLanguage: 'de' });

const translateText = async (text) => {
  const [best] = await detector.detect(text);
  if (best.detectedLanguage !== translator.sourceLanguage) {
    translator.destroy();
    translator = await Translator.create({
      sourceLanguage: best.detectedLanguage,
      targetLanguage: 'de'
    });
  }
  return translator.translate(text);
};

console.log(translator.sourceLanguage);
await translateText('Bonjour tout le monde');
console.log(translator.sourceLanguage);
en fr

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung wie translator.sourceLanguage = 'es' hat keine Wirkung (im Strict Mode gibt es einen TypeError). Für ein anderes Sprachpaar musst du eine neue Instanz erzeugen.
  • Keine automatische Erkennung: Wenn der Text nicht in sourceLanguage vorliegt, wird er falsch oder gar nicht übersetzt. Ist die Sprache unklar, ermittle sie vorher mit LanguageDetector.
  • Kompatibilität: Die Translator-API ist experimentell. Sie läuft in Chrome und Edge ab Version 138 auf dem Desktop, Firefox und Safari unterstützen sie bisher nicht. Prüfe deshalb immer mit 'Translator' in self, ob sie vorhanden ist. Die API setzt einen sicheren Kontext (HTTPS) voraus und kann per Permissions Policy (translator) gesperrt sein.
  • Sprachpakete: Muss das Sprachmodell erst heruntergeladen werden (availability() liefert dann 'downloadable'), braucht Translator.create() eine Nutzerinteraktion, etwa einen Klick.
  • Der Browser kann den übergebenen Sprachcode normalisieren. Vergleiche Codes deshalb am besten ohne Beachtung der Groß-/Kleinschreibung oder über Intl.getCanonicalLocales().