Export der GUI-Texte
Author: Prinzessin
Publication Date: 6/25/2013 13:07
Hallo, ist es möglich alle Texte zu den GUI-Elementen, die sich in einem CMS-Projekt (Seitenvorlagen, Absatzvorlagen, Linkvorlagen, etc) befinden, zu exportieren?
Beispiel:
<CMS_INPUT_TEXT name="st_title" hFill="yes" length="40" singleLine="no" useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="*" label="Title for picture" description="Please enter the picture title."/>
<LANGINFO lang="DE" label="Bildtitel" description="Bitte tragen Sie hier einen Titel ein."/>
</LANGINFOS>
</CMS_INPUT_TEXT>
Hier möchte ich folgende Texte erhalten:
- * = Title for picture
- DE = Bildtitel
Gibt es hier eine Funktion von FirsSpirit oder ist das per Script möglich?
Tags: export, fs5.0, gui_element, gui_language, gui_text, gui_texte, language_text, languages
-
Author: mbergmann - 6/25/2013 15:00
Hallo,
wenn es nur um das Formular-XML geht, könnte man das per Skript lösen, das über die entsprechenden Vorlagen läuft und sich deren XML holt.
Hinweis:
de.espirit.firstspirit.access.store.templatestore.GomSourceProvider#getGomSource()
[Edit]
Ich sehe gerade, dass es nur um die Labels geht und gar nicht um die komplette XML-Definition. In diesem Fall muss man natürlich nicht das XML parsen sondern kommt direkt über die API an die Labels. Mal ein Beispiel für ein entsprechendes Kontextmenüskript (ausführen mit Rechtsklick auf ein Template):
import de.espirit.firstspirit.agency.OperationAgent;
import de.espirit.firstspirit.agency.LanguageAgent;
import de.espirit.firstspirit.ui.operations.RequestOperation;
showInfo(String message){
opAgent=context.requireSpecialist(OperationAgent.TYPE);
reqOp=opAgent.getOperation(RequestOperation.TYPE);
reqOp.setKind(RequestOperation.Kind.INFO);
reqOp.perform(message);
}
e=context.getStoreElement();
langAgent=context.requireSpecialist(LanguageAgent.TYPE);
sb=new StringBuilder();
sb.append("\n\n====== Explizite Namen ======");
for(gomFormElement:e.getGomProvider().forms()){
sb.append("\n+++")
.append(gomFormElement.getName())
.append("+++\n");
for(langinfo:gomFormElement.getLangInfos()){
sb.append(langinfo.getLang())
.append(":")
.append(langinfo.getLabel())
.append("\n");
}
}
sb.append("\n\n====== Alle Sprachen (inkl. Fallback-Namen) ======");
for(gomFormElement:e.getGomProvider().forms()){
sb.append("\n\n---")
.append(gomFormElement.getName())
.append("---\n");
for(lang:langAgent.getLanguages()){
sb.append(lang.abbreviation)
.append(":")
.append(gomFormElement.label(lang.abbreviation))
.append("\n");
}
}
showInfo(sb.toString());
Hier kann man natürlich dann eine Iteration über die diversen Templates drum herum bauen und das Ganze beliebig weiterverarbeiten.
Wichtig ist der Unterschied, ob man an den explizit definierten Labels oder an allen Labels interessiert ist (also inkl. des Fallbacks):
GomFormElement#label(String langAbbreviation)
vs.
GomLangInfos#get(String langAbbreviation)
0
Vous devez vous connecter pour laisser un commentaire.
Commentaires
1 commentaire