Sprachen Editor: Unterschied zwischen den Versionen
Aus Contao Community Documentation
Tril (Diskussion | Beiträge) (→Für Entwickler: Variablen im Index definieren) |
Tril (Diskussion | Beiträge) (→Sprachvariablen suchen) |
||
Zeile 65: | Zeile 65: | ||
[[Bild:Language_Editor_search.png|center|frame|Sprachvariable suchen]] | [[Bild:Language_Editor_search.png|center|frame|Sprachvariable suchen]] | ||
− | In das Feld '''Zeichenkette''' gibt man den Text/HTML Code ein, den man suchen möchte. Will man seine Suche verfeinern, kann man mit dem Wildcard * | + | In das Feld '''Zeichenkette''' gibt man den Text/HTML Code ein, den man suchen möchte. Will man seine Suche verfeinern, kann man sich mit dem Wildcard * behelfen. So sucht '''foo*''' nur nach Variablen, die mit '''foo''' anfangen, während '''*foo''' Variablen sucht, die mit '''foo''' enden und '''foo*bar''' Variablen, die mit '''foo''' anfangen und auf '''bar''' enden. Standardmäßig wird einfach nur auf die Existenz innerhalb des Inhalts geprüft (entspricht '''*foo*'''). Zusätzlich kann man noch die Sprache in der man suchen möchte bestimmen und wenn man zumindest weiß in welcher Gruppe sich die Variable befindet, kann man auch diese Einschränken. |
[[Bild:Language_Editor_search_result.png|center|frame|Sprachvariable suchen]] | [[Bild:Language_Editor_search_result.png|center|frame|Sprachvariable suchen]] |
Aktuelle Version vom 8. Februar 2012, 11:47 Uhr
Mit dem Sprachen Editor (language-editor) lassen sich die Sprachvariablen $GLOBALS['TL_LANG']
bequem aus dem Backend bearbeiten.
Erweiterungs-Übersicht | |
---|---|
Name des Entwicklers | Tristan Lins |
Version der Erweiterung | 1.0.0 |
Kompatibilität mit Contao Version | 2.10+ |
Link zum Extension Repository | http://www.contao.org/de/extension-list/view/language-editor.html |
Link zum Tracker | https://github.com/InfinitySoft/contao-language-editor/issues |
Abhängig von ff. Erweiterungen | MetaPalettes, hiddenfield |
Inhaltsverzeichnis
Der Sprachen Editor
Der Sprachen Editor erlaubt es die Sprachvariablen $GLOBALS['TL_LANG']
aus dem Backend heraus zu bearbeiten.
Diese Variablen werden vielfach in Contao und Erweiterungen zur Internationalisierung verwendet.
Zum Beispiel verbirgt sich hinter $GLOBALS['TL_LANG']['MOD']['avisota_translation']
die Bezeichnung des Menüpunktes Newslettersystem -> Sprachvariablen aus dem Avisota Newslettersystem. Ändert man die Variable ab, was man z.B. über die system/config/langconfig.php
machen kann, ändert sich auch die Bezeichnung des Menüpunktes. Es ist kein Zufall, das gerade dieser Menüpunkt erwähnt wird, denn der Sprachen Editor ist die Weiterentwicklung eben dieser [Sprachvariablen] Funktion aus Avisota.
Installation
Der Sprachen Editor ist unter dem Namen language-editor im Extension Repository zu finden und kann über den Erweiterungskatalog / die Erweiterungsverwaltung installiert werden. Nach der Installation steht im Bereich System ein neuer Menüpunkt Sprachen Editor zur Verfügung.
Der Index
Zuerst muss man wissen, dass $GLOBALS['TL_LANG']
eine sehr große Anzahl an Einträgen beinhaltet die niemals alle geladen werden. Das wäre auch nicht nötig. Deshalb arbeitet der Sprachen Editor mit einem Index der Einträge, die sich in $GLOBALS['TL_LANG']
befinden. Der Index wird in der globalen Variable $GLOBALS['TL_TRANSLATION']
gespeichert. Diese Variable kann von Erweiterungsentwicklern auch vorbefüllt werden. So ist es einem Entwickler möglich, die Bearbeitung seiner Sprachevariablen zu erleichtern, in dem er eine Beschreibung hinzufügt oder bestimmte Variablen einfach ausblendet.
Für Entwickler: Variablen im Index definieren
Für Benutzer: Den Index dynamisch aufbauen
Standardmäßig stehen nur die Variablen zur Verfügung, die in der globalen Variable $GLOBALS['TL_TRANSLATION']
gespeichert sind. Es ist davon auszugehen, dass nur ein kleiner Teil an Entwicklern den Sprachen Editor unterstützen wird, deshalb kann der Sprachen Editor den Index dynamsich aufbauen. Dies geschieht mit der Funktion .
Die Übersicht zeigt die aktuell im Index befindlichen Gruppen und Variablen. Bei einer frischen Installation sind dies sehr weniger. Wurden erstmal alle erfast, kann der Index bis über 100 Gruppen und mehrere Tausend Variablen umfassen. Normalerweise wird der Index inkrementel aufbebaut, d.h. nur unbekannte Sprachgruppen werden neu erfasst. Mit der Option Alle Sprachvariablen erfassen werden alle Gruppen neu erfasst. Mit einem Klick auf Sprachvariablen erfassen wird der Vorgang gestartet.
Dieser Vorgang kann Anfangs sehr lange dauern, ich empfehle eine Tasse Kaffee zu holen und den RSS Reader durchzugehen, bis der Vorgang abgeschlossen ist (Alle Punkte haben ein grünes "abgehakt" Symbol).
Wenn man sich anschaut, wie lange dieser Vorgang dauert wird schnell klar, warum der Index notwendig ist, ansonsten wäre dieser Zeitliche Aufwand bei jedem Vorgang innerhalb des Sprachen Editors notwendig, was ihn schlichtweg unbenutzbar machen würde.
Sprachvariablen bearbeiten
Nachdem der Index aufgebaut ist, können nun die verfügbaren Sprachvariablen bearbeitet werden. Geht dazu zurück zum Sprachen Editor und wählt den Eintrag Neue Sprachvariable. Im folgenden Beispiel verwende ich die Variable MOD.avisota_translation, diese entspricht $GLOBALS['TL_LANG']['MOD']['avisota_translation']
. Die Syntax ist recht einfach zu verstehen, ein Punkt trennt das folgende Element als neues Array vom vorherigen Element ab, alle Elemente sind grundsätzlich unter $GLOBALS['TL_LANG']
eingegliedert.
Die Auswahlbox Sprachvariable erlaubt die Auswahl einer Variable, die man bearbeiten möchte.
Die Auswahlbox Sprache erlaubt die Auswahl der Sprache, in der man die Variable bearbeiten möchte.
Mit Im Backend anwenden und Im Frontend anwenden lässt sich eine Modifikation auf das Backend oder Frontend beschränken. Wird hier kein Eintrag ausgewählt ist die Modifikation deaktiviert.
Das Feld Standardwert zeigt an, welcher Wert Standardmäßig in der Variable steht. So kann man sich immer leicht an dem vorgegebenen Inhalt orientieren, wenn man eine Variable bearbeitet.
Im Feld Inhalt gibt man den neuen Inhalt der Sprachvariable an. Dieses Feld kann sich je nach Sprachvariable ändern. Z.B. in ein Doppeleingabefeld, ein einfaches Textfeld oder eine Textarea.
Die Änderungen werden (außerhalb des Sprachen Editors) sofort angewendet.
Sprachvariablen suchen
Mit der Funktion kann man auch nach Variablen suchen. Dies ist ganz wichtig, weil man eigentlich niemals weiß, in welcher Variable genau das drin steht, was man ändern möchte.
In das Feld Zeichenkette gibt man den Text/HTML Code ein, den man suchen möchte. Will man seine Suche verfeinern, kann man sich mit dem Wildcard * behelfen. So sucht foo* nur nach Variablen, die mit foo anfangen, während *foo Variablen sucht, die mit foo enden und foo*bar Variablen, die mit foo anfangen und auf bar enden. Standardmäßig wird einfach nur auf die Existenz innerhalb des Inhalts geprüft (entspricht *foo*). Zusätzlich kann man noch die Sprache in der man suchen möchte bestimmen und wenn man zumindest weiß in welcher Gruppe sich die Variable befindet, kann man auch diese Einschränken.
Wurden ein oder mehr Einträge gefunden unterbricht die Suche. Ist man fündig geworden, reicht ein Klick auf den entsprechenden Eintrag und man kann die Variable direkt bearbeiten. Ansonsten sucht mit mit Weitersuchen einfach weiter.
Performance
Die Änderungen werden in PHP Generiert und über die system/config/langconfig.php
geladen. Für das Anwenden der Änderungen wird also keine Datenbankverbindung benötigt. Der einzige Overhead entsteht, weil der Sprachen Editor zusätzliche PHP Dateien generiert, die geladen werden. Contao muss also ein paar mehr PHP Dateien laden, ansonsten entsteht kein weiterer Overhead.
Einschränkungen und "Unschönheiten"
Die veränderten Sprachvariablen werden innerhalb des Sprachen Editors selbst nicht angewendet. Dies ist notwendig, weil es sonst nicht möglich ist auf den Standardwert zurück zu greifen.
Ändert man Sprachvariablen in einer anderen Sprache, kann sich möglicherweise die Sprache des Interfaces temporär ändern. Das liegt daran, dass die Gruppe der Sprachvariable die man bearbeitet in der zu bearbeitenden Sprache geladen wird und möglicherweise die lokale Sprache überschreibt.