Dokumentation
IPS_Translate
string IPS_Translate (int $InstanzID, string $Text)
Parameterliste
| InstanzID | ID der Instanz, deren Modul die Übersetzungen liefert |
| Text | Zu übersetzender Text (in der Regel der englische Originaltext) |
Rückgabewert
Übersetzter Text oder Text unverändert, falls keine Übersetzung existiert
Beschreibung
Die Funktion übersetzt Text mit den Übersetzungen des Moduls der Instanz mit der ID InstanzID in die Systemsprache (IPS_GetSystemLanguage). Sie entspricht damit dem Aufruf von Translate innerhalb eines Moduls, kann aber von außerhalb genutzt werden, z.B. um Texte eines Moduls in einem Skript in der gleichen Sprache auszugeben.
Gesucht wird ein Eintrag, dessen Schlüssel exakt Text entspricht. Bei PHP-Modulen stammen die Übersetzungen aus der locale.json des Moduls, bei eingebauten Modulen aus den mitgelieferten Übersetzungen des Moduls. Für die Systemsprache wird zuerst die vollständige Sprachangabe (z.B. de_AT), dann die Sprache mit gleichlautendem Ländercode (de_DE) und zuletzt nur der Sprachcode (de) gesucht.
Existiert keine locale.json, keine Übersetzung für die Systemsprache oder kein passender Eintrag, wird Text unverändert zurückgegeben. Ist die locale.json eines PHP-Moduls kein gültiges JSON, schlägt die Funktion mit "Cannot parse locale.json" fehl. Platzhalter wie %s werden nicht ersetzt; dies kann nach der Übersetzung z.B. mit sprintf erfolgen.
Beispiel
echo IPS_Translate(12345, "Users");
// liefert z.B.: Benutzer
// (ohne passende Übersetzung wird "Users" unverändert zurückgegeben)
printf(IPS_Translate(12345, "The current time is %s"), date("H:i"));