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