Start · Sprachen · JavaScript · Referenz · Notification.lang

Notification.lang

Eigenschaft

Schreibgeschützte Eigenschaft, die das Sprach-Tag (BCP 47) einer Benachrichtigung liefert, wie es in der <code>lang</code>-Option des <code>Notification()</code>-Konstruktors angegeben wurde.

seit JavaScript Baseline: Chrome, Edge, Firefox, Safari (Desktop); Kategorie: webapi

Signatur

Notification.prototype.lang

Beschreibung

Die Eigenschaft lang einer Notification-Instanz gibt die Sprache zurück, in der Titel und Text der Benachrichtigung verfasst sind. Der Wert stammt direkt aus der Option lang, die beim Erzeugen über new Notification(title, options) oder ServiceWorkerRegistration.showNotification() übergeben wurde.

Als Wert wird ein gültiges BCP-47-Sprach-Tag erwartet, z. B. "de", "de-DE", "en-US" oder "fr-CA". Wurde keine Sprache angegeben, ist der Wert ein leerer String "". Ungültige Sprach-Tags werden laut Spezifikation ebenfalls zu "" normalisiert.

Das Betriebssystem bzw. der Browser kann die Sprachangabe nutzen, um z. B. die passende Schriftart, Silbentrennung oder Sprachausgabe für Bildschirmleser zu wählen. In der Praxis liest man lang vor allem aus, um in click- oder close-Handlern bzw. beim Auflisten über getNotifications() sprachabhängige Logik zu steuern.

Rückgabewert

Typ
string
Beschreibung
Das BCP-47-Sprach-Tag der Benachrichtigung, z. B. "de-DE", oder ein leerer String "", wenn keine (gültige) Sprache angegeben wurde.

Beispiele

Sprache beim Erzeugen setzen und auslesen

const zeigeHinweis = async () => {
  const erlaubnis = await Notification.requestPermission();
  if (erlaubnis !== 'granted') return;

  const n = new Notification('Neue Nachricht', {
    body: 'Sie haben eine neue Nachricht erhalten.',
    lang: 'de-DE'
  });

  console.log(n.lang);
};

zeigeHinweis();
de-DE

Sprache automatisch aus der Seite übernehmen

const seitenSprache = document.documentElement.lang || navigator.language;

const n = new Notification('Update verfügbar', {
  body: 'Bitte laden Sie die Seite neu.',
  lang: seitenSprache
});

console.log(`Benachrichtigung in Sprache: ${n.lang || '(nicht gesetzt)'}`);
Benachrichtigung in Sprache: de

Standardwert ohne lang-Option

const n = new Notification('Hallo');
console.log(JSON.stringify(n.lang)); // leerer String

// Schreibversuch hat keine Wirkung
n.lang = 'en';
console.log(JSON.stringify(n.lang));
"" ""

Benachrichtigungen im Service Worker nach Sprache filtern

// im Service Worker oder mit navigator.serviceWorker.ready
const registrierung = await navigator.serviceWorker.ready;

await registrierung.showNotification('Termin morgen', {
  body: 'Vergessen Sie Ihren Termin nicht.',
  lang: 'de',
  tag: 'termin'
});

const alle = await registrierung.getNotifications();
const deutsche = alle.filter((n) => n.lang.startsWith('de'));
console.log(deutsche.length);
1

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung an n.lang wird im nicht-strikten Modus stillschweigend ignoriert (im Strict Mode ggf. TypeError). Die Sprache lässt sich nur beim Erzeugen festlegen.
  • Keine Übersetzung: lang übersetzt nichts – es beschreibt nur die Sprache des bereits übergebenen Texts. Titel und body müssen Sie selbst lokalisieren.
  • Leerer String als Standard: Ohne Angabe oder bei ungültigem Tag ist der Wert "", nicht undefined. Prüfen Sie daher mit if (n.lang).
  • Darstellung variiert: Ob und wie das Betriebssystem die Sprachangabe tatsächlich berücksichtigt, ist plattformabhängig; viele Systeme ignorieren sie visuell.
  • Kompatibilität: Die Notifications-API erfordert einen sicheren Kontext (HTTPS) und eine Nutzererlaubnis. Auf Android ist der Konstruktor new Notification() nicht verfügbar – dort nur ServiceWorkerRegistration.showNotification() verwenden. Safari auf iOS unterstützt Benachrichtigungen erst ab 16.4 für zum Home-Bildschirm hinzugefügte Web-Apps.