Start · Sprachen · PHP · Referenz · enchant_dict_describe

enchant_dict_describe

Funktion

Gibt beschreibende Informationen über ein einzelnes Enchant-Wörterbuch als assoziatives Array zurück.

seit PHP 5.3.0 Kategorie: string

Signatur

enchant_dict_describe(EnchantDictionary $dictionary): array

Beschreibung

enchant_dict_describe liefert Metadaten zu einem zuvor geöffneten Enchant-Wörterbuch. Das zurückgegebene Array enthält Informationen wie den Provider-Namen, die Provider-Beschreibung, den Dateinamen der Provider-Bibliothek sowie die Sprachen-Tag (Locale) des Wörterbuchs.

Die Funktion ist nützlich, wenn man zur Laufzeit prüfen möchte, welches Backend (z. B. Aspell, Hunspell, Ispell) tatsächlich für ein bestimmtes Wörterbuch verwendet wird, oder um Debug-Ausgaben und Benutzerinformationen bereitzustellen.

Um ein Wörterbuch-Handle zu erhalten, muss zuvor ein Enchant-Broker mit enchant_broker_init() erzeugt und anschließend das Wörterbuch mit enchant_broker_request_dict() angefordert werden.

Ab PHP 8.0 wird statt einer Ressource ein EnchantDictionary-Objekt übergeben. Das Rückgabe-Array enthält die Schlüssel lang, provider_name, provider_desc und provider_file.

Parameter

Name Typ Default Beschreibung
$dictionary Pflicht EnchantDictionary Ein gültiges Enchant-Wörterbuch-Handle, das zuvor mit enchant_broker_request_dict() oder einer ähnlichen Funktion erzeugt wurde.

Rückgabewert

Typ
array
Beschreibung
Gibt ein assoziatives Array mit folgenden Schlüsseln zurück:
  • lang – Sprach-Tag / Locale des Wörterbuchs (z. B. de_DE)
  • provider_name – Name des verwendeten Providers (z. B. aspell)
  • provider_desc – Beschreibung des Providers
  • provider_file – Pfad zur Provider-Bibliotheksdatei
Im Fehlerfall wird false zurückgegeben.

Beispiele

Wörterbuch-Informationen ausgeben

<?php
$broker = enchant_broker_init();

if (enchant_broker_dict_exists($broker, 'de_DE')) {
    $dict = enchant_broker_request_dict($broker, 'de_DE');
    $info = enchant_dict_describe($dict);

    echo 'Sprache:           ' . $info['lang'] . PHP_EOL;
    echo 'Provider:          ' . $info['provider_name'] . PHP_EOL;
    echo 'Provider-Beschr.:  ' . $info['provider_desc'] . PHP_EOL;
    echo 'Provider-Datei:    ' . $info['provider_file'] . PHP_EOL;

    enchant_broker_free_dict($dict);
} else {
    echo 'Wörterbuch de_DE nicht verfügbar.' . PHP_EOL;
}

enchant_broker_free($broker);
Sprache: de_DE Provider: hunspell Provider-Beschr.: Hunspell Provider Provider-Datei: /usr/lib/enchant-2/enchant_hunspell.so

Mehrere Wörterbücher vergleichen

<?php
$broker = enchant_broker_init();
$locales = ['de_DE', 'en_US', 'fr_FR'];

foreach ($locales as $locale) {
    if (enchant_broker_dict_exists($broker, $locale)) {
        $dict = enchant_broker_request_dict($broker, $locale);
        $info = enchant_dict_describe($dict);
        printf(
            "%-8s wird bereitgestellt von: %s\n",
            $info['lang'],
            $info['provider_name']
        );
        enchant_broker_free_dict($dict);
    } else {
        echo "$locale nicht verfügbar.\n";
    }
}

enchant_broker_free($broker);
de_DE wird bereitgestellt von: hunspell en_US wird bereitgestellt von: hunspell fr_FR wird bereitgestellt von: hunspell

// Wichtig · Fallstricke

Die Enchant-Extension muss beim PHP-Build aktiviert worden sein (seit PHP 8.0 ist sie standardmäßig im Core enthalten). Ohne installierte Wörterbuch-Backends (z. B. Hunspell-Pakete) liefert enchant_broker_dict_exists() false und enchant_broker_request_dict() schlägt fehl.

Vor PHP 8.0 wurden Enchant-Handles als Ressourcen übergeben; ab PHP 8.0 handelt es sich um EnchantBroker- und EnchantDictionary-Objekte. Code, der Ressourcen-Checks wie is_resource() verwendet, muss entsprechend angepasst werden.