Start · Sprachen · PHP · Referenz · enchant_broker_list_dicts

enchant_broker_list_dicts

Funktion

Gibt eine Liste aller verfügbaren Enchant-Wörterbücher zurück, die über den angegebenen Broker zugänglich sind.

seit PHP 5.3.0 Kategorie: string

Signatur

enchant_broker_list_dicts(EnchantBroker $broker): array

Beschreibung

enchant_broker_list_dicts() fragt den Enchant-Broker nach allen installierten und zugänglichen Wörterbüchern ab und liefert diese als Array von assoziativen Arrays zurück. Jedes Element enthält Metadaten zum jeweiligen Wörterbuch, darunter den Sprachcode, den Anbieter-Namen, eine Beschreibung und die Dateiposition des Wörterbuchs.

Die Funktion ist besonders nützlich, wenn man dem Benutzer eine Auswahl der auf dem System installierten Sprachen anbieten möchte oder prüfen will, ob ein bestimmtes Wörterbuch verfügbar ist, bevor man es mit enchant_broker_request_dict() öffnet.

Die zurückgegebenen Daten hängen von den auf dem Host-System installierten Enchant-Backends (z. B. Hunspell, Aspell, Myspell) ab und können daher je nach Umgebung variieren.

Parameter

Name Typ Default Beschreibung
$broker Pflicht EnchantBroker Eine gültige Enchant-Broker-Ressource bzw. ein EnchantBroker-Objekt, das zuvor mit enchant_broker_init() erstellt wurde.

Rückgabewert

Typ
array
Beschreibung
Gibt ein Array von assoziativen Arrays zurück. Jedes Element enthält folgende Schlüssel:
  • lang_tag – Sprachcode des Wörterbuchs (z. B. de_DE)
  • provider_name – Name des Backends (z. B. hunspell)
  • provider_desc – Beschreibung des Anbieters
  • provider_file – Dateipfad des Wörterbuchs
Ist kein Wörterbuch verfügbar, wird ein leeres Array zurückgegeben.

Beispiele

Alle verfügbaren Wörterbücher ausgeben

<?php
$broker = enchant_broker_init();

$dicts = enchant_broker_list_dicts($broker);

if (empty($dicts)) {
    echo "Keine Wörterbücher gefunden.\n";
} else {
    foreach ($dicts as $dict) {
        echo "Sprache:    " . $dict['lang_tag'] . "\n";
        echo "Anbieter:   " . $dict['provider_name'] . "\n";
        echo "Beschreibung: " . $dict['provider_desc'] . "\n";
        echo "Datei:      " . $dict['provider_file'] . "\n";
        echo str_repeat('-', 40) . "\n";
    }
}

enchant_broker_free($broker);
Sprache: de_DE Anbieter: hunspell Beschreibung: Hunspell Provider Datei: /usr/share/hunspell/de_DE.dic ---------------------------------------- Sprache: en_US Anbieter: hunspell Beschreibung: Hunspell Provider Datei: /usr/share/hunspell/en_US.dic ----------------------------------------

Prüfen, ob ein bestimmtes Wörterbuch vorhanden ist

<?php
$broker = enchant_broker_init();
$gesuchteSpache = 'fr_FR';

$dicts = enchant_broker_list_dicts($broker);
$gefunden = false;

foreach ($dicts as $dict) {
    if ($dict['lang_tag'] === $gesuchteSpache) {
        $gefunden = true;
        break;
    }
}

if ($gefunden) {
    echo "Wörterbuch für '{$gesuchteSpache}' ist verfügbar.\n";
    $woerterbuch = enchant_broker_request_dict($broker, $gesuchteSpache);
    // Wörterbuch verwenden ...
    enchant_broker_free_dict($woerterbuch);
} else {
    echo "Wörterbuch für '{$gesuchteSpache}' ist NICHT verfügbar.\n";
}

enchant_broker_free($broker);
Wörterbuch für 'fr_FR' ist verfügbar.

// Wichtig · Fallstricke

Ab PHP 8.0 wird statt einer Ressource ein EnchantBroker-Objekt verwendet. Code, der noch mit der alten Ressourcen-API arbeitet, sollte auf die Objekt-API migriert werden.

Die Verfügbarkeit von Wörterbüchern ist vollständig vom Host-System abhängig. In Docker-Containern oder minimalen Server-Umgebungen sind möglicherweise keine Wörterbücher installiert — in diesem Fall gibt die Funktion ein leeres Array zurück.

Alternativ kann enchant_broker_dict_exists() genutzt werden, um die Existenz eines einzelnen Wörterbuchs effizienter zu prüfen, ohne alle Wörterbücher auflisten zu müssen.