Questions & Answers

SOLVED
Prinzessin
I'm new here

Export der GUI-Texte

Jump to solution

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?

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

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)

View solution in original post

0 Kudos
3 Replies
mbergmann
Crownpeak employee

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 Kudos

Hallo Yvonne,

hat dir Michaels Antwort geholfen und kann deine Frage damit als beantwortet markiert werden?

GrรผรŸe

Jan

0 Kudos

Ja, die Antwort hat mir erstmal geholfen. Vielen Dank!

0 Kudos

Type a product name