Language - (lang.class.php)

new lang() - Object

$string code = null ISO 639-1 Sprachcode in Kleinbuchstaben (z. B. 'de', 'en') nach ISO 639-1
$string localCode = null vollständiger Locale-Code inkl. Ländercode (z. B. 'de-DE', 'en-US') bzw. nur Sprachcode, falls kein Land gesetzt ist
$bool isLocalCode = false gibt an, ob ein Ländercode enthalten und aktiv ist
$array language = null assoziatives Array mit Sprachübersetzungen aus der XML-Definition
[
'de' => 'Deutsch',
'en' => 'German',
'context' => 'language name'
]
$string countryCode = null ISO 3166-1 Alpha-2 Ländercode in Großbuchstaben (z. B. 'DE', 'US') nach ISO 3166-1
$array country = null assoziatives Array mit Länderübersetzungen aus der XML-Definition
[
'de' => 'Deutschland',
'en' => 'Germany',
'context' => 'country name'
]
$bool isDefault = false gibt an, ob auf die Fallback-Standardsprache (lang.default) zurückgegriffen wurde
$bool isLang = false gibt an, ob ein gültiger Sprachcode erfolgreich aufgelöst und validiert wurde
$float weight = 1.0 Qualitätsfaktor (q-Wert zwischen 0.0 und 1.0) für HTTP Content-Negotiation; über __set modifizierbar
__construct ([$mixed $context = null[, $bool $search = false]])
$context optional; Sprachcode (z. B. 'de'), Locale-String (z. B. 'de-DE'), Accept-Language-Header (z. B. 'de-DE;q=0.9'), Sprachbezeichnung (z. B. 'deutsch' bei aktiver Suche), bestehende lang-Instanz oder null; default ist null
$search optional; aktiviert bei ungenauer Eingabe eine unscharfe Volltextsuche (Fuzzy-Search) nach der Sprachbezeichnung; default ist false
erstellt eine neue lang-Instanz und löst Sprachcode, Ländercode, Übersetzungen und Qualitätsfaktor dynamisch auf; fällt bei ungültiger Eingabe auf die Standardsprache zurück
$lang = new lang('de');
$lang = new lang('de-DE');
$lang = new lang('en-US;q=0.8');
$fuzzy = new lang('deutsch', true); // Unscharfe Volltextsuche
$clone = new lang($lang); // Kopiert bestehende Instanz
__get ($string $name)
$name Name der abzufragenden Eigenschaft (code, localCode, isLocalCode, language, countryCode, country, isDefault, isLang, weight); Pflicht
schreibgeschützter Zugriff auf die internen und berechneten Eigenschaften; bei unbekannter Eigenschaft wird ein Fehler protokolliert und null zurückgegeben
$lang = new lang('de-DE');
echo $lang->code; // 'de'
echo $lang->countryCode; // 'DE'
echo $lang->localCode; // 'de-DE'
print_r($lang->language); // ['de' => 'Deutsch', 'en' => 'German', ...]
__set ($string $name, $mixed $val)
$name Name der zu modifizierenden Eigenschaft (nur weight ist schreibbar); Pflicht
$val neuer Qualitätsfaktor als numerischer Wert im Bereich 0.0 < $val ≤ 1.0; Pflicht
erlaubt das kontrollierte Ändern der Gewichtung (weight); alle anderen Eigenschaften sind schreibgeschützt und geben false zurück
$lang = new lang('de');
$lang->weight = 0.8;
$lang->code = 'en'; // Schreibgeschützt! Wird ignoriert (Rückgabe: false)
__toString ()
gibt den formatierten Sprachcode-String für HTTP-Header zurück (Format: localCode bzw. localCode;q=... bei Werten unter 1.0); gibt bei ungültigem Zustand einen leeren String zurück
$lang = new lang('de');
echo $lang; // 'de'

$custom = new lang('de-DE;q=0.6');
echo $custom; // 'de-DE;q=0.6'
__invoke ()
ermöglicht den direkten Aufruf des Objekts als Funktion ($lang()); gibt den formatierten Sprachcode-String direkt per echo aus und liefert true zurück
$lang = new lang('de-DE');
$lang(); // Direkte Ausgabe: de-DE
__debugInfo ()
angepasste Debug-Informationen für var_dump() und print_r(); gibt ein assoziatives Array mit allen relevanten Objekteigenschaften zurück
$lang = new lang('de-DE');
var_dump($lang);

Überprüfung

static lang::isLang ([$mixed $item = null])
$item optional; zu prüfende Variable oder Objekt; default ist null
gibt true zurück, wenn es sich um eine gültige Instanz von lang handelt und die Eigenschaft isLang ebenfalls true ist; ansonsten false
lang::isLang('de'); // false (nur ein String)
lang::isLang(new lang('de')); // true
lang::isLang(new lang('DE')); // false (nur Land ohne Sprache erkannt)
lang::isLang(new lang('de-DE')); // true
static lang::isLangCode ([$string $code = null[, $bool $localCode = false[, $bool $caseSensitive = false]]])
$code optional; zu prüfender ISO 639-1 Sprachcode als String (z. B. 'de', 'en'); default ist null
$localCode optional; wenn true, sind auch zusammengesetzte Codes mit Länderkürzel (z. B. 'de-DE', 'en-US') nach ISO 3166-1 zulässig; default ist false
$caseSensitive optional; wenn true, wird strikte Groß-/Kleinschreibung verlangt (Sprachcode muss kleingeschrieben sein, Länderkürzel groß); default ist false
gibt true zurück, wenn der Sprachcode in der offiziellen Sprachen-Matrix existiert und gültig ist; ansonsten false
lang::isLangCode('de'); // true
lang::isLangCode('DE'); // true (caseSensitive = false)
lang::isLangCode('DE', false, true); // false (Großschreibung abgewiesen)
lang::isLangCode('de-DE', true); // true
lang::isLangCode('de-DE', false); // false (localCode nicht erlaubt)
static lang::isCntryCode ([$string $code = null[, $bool $caseSensitive = false]])
$code optional; zu prüfender ISO 3166-1 Alpha-2 Ländercode als String (z. B. 'DE', 'US'); default ist null
$caseSensitive optional; wenn true, muss der Ländercode zwingend großgeschrieben sein; default ist false
gibt true zurück, wenn der Ländercode in der offiziellen Länder-Matrix existiert und gültig ist; ansonsten false
lang::isCntryCode('us'); // true
lang::isCntryCode('US'); // true
lang::isCntryCode('us', true); // false (muss großgeschrieben sein)
static lang::isLangCodeArray ([$array $codeArray = null[, $bool $localCode = false[, $bool $caseSensitive = false]]])
$codeArray optional; numerisch indiziertes Array mit zu prüfenden Sprachcodes; default ist null
$localCode optional; wenn true, dürfen auch zusammengesetzte Local-Codes (z. B. 'en-US') enthalten sein; default ist false
$caseSensitive optional; wenn true, wird strikt auf korrekte Groß-/Kleinschreibung geprüft; default ist false
gibt true zurück, wenn alle Elemente im Array gültige Sprachcodes sind und das Array nicht-assoziativ ist; ansonsten false
lang::isLangCodeArray(['de', 'en']); // true
lang::isLangCodeArray(['de', 'en-US']); // false
lang::isLangCodeArray(['de', 'en-US'], true); // true
lang::isLangCodeArray(['de', 'en-us'], true, true); // false (en-us statt en-US)
static lang::compare ($object $first, $object $second[, $bool $localCode = false[, $bool $checkWeight = false]])
$first erstes zu vergleichendes new lang()-Objekt; Pflicht
$second zweites zu vergleichendes new lang()-Objekt; Pflicht
$localCode optional; wenn true, muss auch das Länderkürzel (z. B. 'DE') übereinstimmen; default ist false
$checkWeight optional; wenn true, muss auch die Gewichtung (weight) exakt übereinstimmen; default ist false
gibt true zurück, wenn beide Instanzen gültige lang-Objekte sind und die geforderten Kriterien übereinstimmen; ansonsten false
$de = new lang('de');
$deDe = new lang('de-DE');

lang::compare($de, $deDe); // true (Basis-Sprachcode 'de' stimmt überein)
lang::compare($de, $deDe, true); // false (Ländercode unterscheidet sich)

Header & Parsing

static lang::parseString ([$string $header = null])
$header optional; zu analysierender String (z. B. 'de', 'de-DE', 'en-US;q=0.8'); default ist null
zerlegt den String via Regex in seine Einzelbestandteile und gibt immer ein assoziatives array zurück (Gültigkeit der Codes wird hierbei noch nicht geprüft):
[
  'lang'      => 'de',    // Sprachcode in Kleinbuchstaben oder null
  'localCode' => 'de-DE', // vollständiger Locale-Code oder null
  'cntry'     => 'DE',    // ISO-Ländercode in Großbuchstaben oder null
  'weight'    => 0.8      // Qualitätsfaktor (float) oder null
]
print_r(lang::parseString('de'));
print_r(lang::parseString('en-us;q=0.8'));
static lang::removeCntry ($object $item)
$item Quell-Sprachobjekt als new lang(); Pflicht
erstellt und gibt eine neue lang-Instanz zurück, bei der die Länderkennung entfernt wurde (countryCode und country sind null); im Fehlerfall null
$local = new lang('de-DE');
$clean = lang::removeCntry($local);
echo $clean->localCode; // 'de'

Informationsausgabe

static lang::getDefault ()
liefert den ISO 639-1 Sprachcode der konfigurierten Standardsprache (aus config::get('lang.default')) oder den Klassen-Fallback 'en'
echo lang::getDefault(); // z. B. 'de'
static lang::detect ([$string $text = null])
$text optional; Text, dessen Sprache automatisch ermittelt werden soll; default ist null
erkennt die Sprache des übergebenen Textes über die externe DeepL-API (api\deepl::detectLang) und gibt bei Erfolg eine neue Instanz von lang zurück; fällt die Erkennung auf die Standardsprache zurück oder schlägt fehl, wird null zurückgegeben
$detected = lang::detect('Dies ist ein deutscher Beispieltext.');
echo $detected->code; // 'de'
static lang::getLang ([$mixed $context = null])
$context optional; ISO 639-1 Sprachcode (z. B. 'de'), bestehendes new lang()-Objekt oder null; default ist null
gibt ein assoziatives array mit den mehrsprachigen Bezeichnungen der Sprache aus der XML-Definition inklusive ['context' => 'language name'] zurück; im Fehlerfall null
$names = lang::getLang('de');
print_r($names);
// Ausgabe:
// ['de' => 'Deutsch', 'en' => 'German', 'fr' => 'allemand', 'context' => 'language name']
static lang::getCntry ([$mixed $context = null])
$context optional; ISO 3166-1 Ländercode (z. B. 'DE'), bestehendes new lang()-Objekt oder null; default ist null
gibt ein assoziatives array mit den mehrsprachigen Bezeichnungen des Landes aus der XML-Definition inklusive ['context' => 'country name'] zurück; im Fehlerfall null
$names = lang::getCntry('DE');
print_r($names);
// Ausgabe:
// ['de' => 'Deutschland', 'en' => 'Germany', 'context' => 'country name']

Suche

static lang::searchLang ([$mixed $searchString = null])
$searchString optional; gesuchte Sprachbezeichnung als String oder Zahl (z. B. 'deutsch', 'germanisch'); default ist null
durchsucht über eine unscharfe Volltextsuche (new search()) alle hinterlegten Sprachbezeichnungen und gibt den passenden ISO 639-1 Sprachcode in Kleinbuchstaben zurück; wird kein Treffer erzielt, wird null zurückgegeben
echo lang::searchLang('germanisch'); // 'de'
echo lang::searchLang('English'); // 'en'
static lang::searchCntry ([$mixed $searchString = null])
$searchString optional; gesuchte Länderbezeichnung als String oder Zahl (z. B. 'Deutschland', 'United States'); default ist null
durchsucht über eine unscharfe Volltextsuche (new search()) alle hinterlegten Länderbezeichnungen und gibt den passenden ISO 3166-1 Ländercode in Großbuchstaben zurück; wird kein Treffer erzielt, wird null zurückgegeben
echo lang::searchCntry('Deutschland'); // 'DE'
echo lang::searchCntry('United States'); // 'US'

Listen & Definitionen

static lang::getLangList ()
lädt beim ersten Aufruf die Sprach-XML (config::get('lang.lang_xml')) und gibt eine vollständige, statisch gecachte Matrix aller ISO 639-1 Sprachen mit ihren Übersetzungen als array zurück; im Fehlerfall null
$langList = lang::getLangList();
print_r($langList['de']);
// Ausgabe: ['de' => 'Deutsch', 'en' => 'German', ...]
static lang::getCntryList ()
lädt beim ersten Aufruf die Länder-XML (config::get('lang.country_xml')) und gibt eine vollständige, statisch gecachte Matrix aller ISO 3166-1 Länder mit ihren Übersetzungen als array zurück; im Fehlerfall null
$cntryList = lang::getCntryList();
print_r($cntryList['de']);
// Ausgabe: ['de' => 'Deutschland', 'en' => 'Germany', ...]