Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden

IBM Connections Custom Activity Stream Templates

Bei der Entwicklung des Activity Stream Plugins zur Integration von Atlassian Confluence in IBM Connections wur­den für die Erstellung und Darstellung der Activity Stream Einträge Vorlagen ein­ge­setzt. Diese Event Title Templates sor­gen dafür, dass loka­li­sier­bare Bestandteile in den Titeln der Einträge, wie z.B. "hat kom­men­tiert", bei dem Aufruf des Activity Streams in die jewei­li­gen Anzeigesprache des Nutzers über­setzt wer­den. Hierbei konn­ten wir bei der Entwicklung größ­ten­teils stan­dard­mä­ßig vor­han­dene Vorlagen wie­der­ver­wen­den (Übersicht siehe unten). Beim Erstellen der Confluence Like Events fand sich jedoch kein pas­sen­des Template, so dass es not­wen­dig wurde, eigene Vorlagen in Connections zu hin­ter­le­gen. Das Vorgehen soll hier am Beispiel kurz erläu­tert werden.

1. Öffnen des fol­gen­den Verzeichnisses im Shared Folder von IBM Connections: /data/shared/customization/strings/

2. Erstellen oder Erweitern der Datei com.ibm.lconn.news.nls.templatePlaceholders.properties mit fol­gen­dem Inhalt:

EXTERNAL.communardo.c2connect.comment.extended.target={Actor} liked {Target}'s comment on page {Object}. 
EXTERNAL.communardo.c2connect.page.extended.target={Actor} liked {Object} in Space {Target}.

3. Erweitern oder Erstellen der loka­li­sier­ten Varianten, wel­che jeweils durch den hint­an­ge­stell­ten Landescode gekenn­zeich­net wer­den - für Deutsch wäre das dem­zu­folge die Datei com.ibm.lconn.news.nls.templatePlaceholders_de.pro­per­ties:

EXTERNAL.communardo.c2connect.comment.extended.target={Actor} hat {Target}'s Kommentar auf der Seite {Object} empfohlen. 
EXTERNAL.communardo.c2connect.page.extended.target={Actor} hat {Object} im Bereich {Target} empfohlen.

4. Neustart der Anwendung News in der IBM WebSphere Administrationskonsole

Ab jetzt wer­den Activity Stream Events, die eine der defi­nier­ten Properties als Title-Attribut tra­gen, in der Darstellung mit dem kor­rekt loka­li­sier­ten Titel ver­se­hen. Der Präfix "EXTERNAL." darf dabei in den Platzhaltern nicht mit ange­ge­ben werden.

{
    "title": "${communardo.c2connect.comment.extended.target}",
    "verb": "like",
    "updated": "2014-09-19T14:45:22.607Z",
    "target": {
        "id": "6E3DE8D4-DCF3-4002-82B9-655626A66330",
        "displayName": "Max Mustermann",
        "objectType": "person"
    }, ...

Hier noch die deut­schen Properties mit Titel-Vorlagen aus IBM Connections - der Präfix "GENERAL." braucht im Activity Stream Event eben­falls nicht mit ange­ge­ben werden:

GENERAL.add={Actor} hat {Object} hinzugef\u00fcgt.
GENERAL.add.target={Actor} hat {Object} zu {Target} hinzugef\u00fcgt.
GENERAL.create={Actor} hat {Object} erstellt.
GENERAL.create.target={Actor} hat {Object} in {Target} erstellt.
GENERAL.post={Actor} hat {Object} ver\u00f6ffentlicht.
GENERAL.post.target={Actor} hat {Object} in {Target} ver\u00f6ffentlicht.
GENERAL.comment={Actor} hat einen Kommentar erstellt.
GENERAL.comment.target={Actor} hat {Target} kommentiert.
GENERAL.like={Actor} hat {Object} empfohlen.
GENERAL.like.target={Actor} hat {Object} in {Target} empfohlen.
GENERAL.update={Actor} hat {Object} aktualisiert.
GENERAL.update.target={Actor} hat {Object} in {Target} aktualisiert.
GENERAL.share={Actor} hat {Object} geteilt.
GENERAL.share.target={Actor} hat {Object} mit {Target} geteilt.
GENERAL.share.in.target={Actor} hat {Object} in {Target} geteilt.
GENERAL.follow={Actor} folgt nun {Object}.
GENERAL.stopFollowing={Actor} hat aufgeh\u00f6rt, {Object} zu folgen.
GENERAL.tag={Actor} hat {Object} mit den Tags {Target} versehen.
GENERAL.tag.target={Actor} hat {Object} mit den Tags {Target} versehen.
GENERAL.join={Actor} ist nun Mitglied von {Object}.
GENERAL.join.target={Actor} ist jetzt ein Mitglied von {Object} in {Target}.
GENERAL.invite={Actor} hat {Object} eingeladen.
GENERAL.invite.target={Actor} hat {Object} zu {Target} eingeladen.
GENERAL.access={Actor} hatte Zugriff auf {Object}.
GENERAL.access.target={Actor} hatte Zugriff auf {Object} in {Target}.
GENERAL.assign={Actor} hat {Object} {Target} zugeordnet.
GENERAL.accept={Actor} hat {Object} akzeptiert.
GENERAL.reject={Actor} hat {Object} zur\u00fcckgewiesen.
GENERAL.upload={Actor} hat {Object} hochgeladen.
GENERAL.upload.target={Actor} hat {Object} nach {Target} hochgeladen.
GENERAL.publish={Actor} hat {Object} ver\u00f6ffentlicht.
GENERAL.publish.target={Actor} hat {Object} in {Target} ver\u00f6ffentlicht.
GENERAL.lock.target={Actor} hat {Object} in {Target} gesperrt.
GENERAL.unlock.target={Actor} hat {Object} in {Target} entsperrt.
GENERAL.review.in.target={Actor} hat {Object} in {Target} zur Pr\u00fcfung eingereicht.
GENERAL.review.to.target={Actor} hat {Object} bei {Target} zur Pr\u00fcfung eingereicht.
GENERAL.approve={Actor} hat {Object} genehmigt.
GENERAL.approve.target={Actor} hat {Object} in {Target} genehmigt.
GENERAL.review.cancel={Actor} hat die Pr\u00fcfungsanforderung von {Object} storniert.
GENERAL.review.cancel.target={Actor} hat die Pr\u00fcfungsanforderung von {Object} in {Target} storniert.
GENERAL.reject.target={Actor} hat {Object} in {Target} zur\u00fcckgewiesen.
GENERAL.review.withdraw={Actor} hat die Pr\u00fcfung von {Object} zur\u00fcckgezogen.
GENERAL.review.withdraw.target={Actor} hat die Pr\u00fcfung von {Object} in {Target} zur\u00fcckgezogen.
GENERAL.complete={Actor} hat {Object} beendet.
GENERAL.complete.target={Actor} hat {Object} in {Target} beendet.
GENERAL.stop={Actor} hat {Object} gestoppt.
GENERAL.stop.target={Actor} hat {Object} in {Target} gestoppt.
GENERAL.delete={Actor} hat {Object} gel\u00f6scht.
GENERAL.delete.target={Actor} hat {Object} in {Target} gel\u00f6scht.
GENERAL.start={Actor} hat {Object} gestartet.
GENERAL.start.target={Actor} hat {Object} in {Target} gestartet.
GENERAL.mention={Actor} hat {Object} erw\u00e4hnt.
GENERAL.mention.in.target={Actor} hat {Object} in {Target} erw\u00e4hnt.
GENERAL.mention.you={Actor} hat Sie erw\u00e4hnt.
GENERAL.mention.you.in.target={Actor} hat Sie in {Target} erw\u00e4hnt.
GENERAL.survey.add={Actor} hat die Befragung {Object} hinzugef\u00fcgt.
GENERAL.survey.add.target={Actor} hat die Befragung {Object} zu {Target} hinzugef\u00fcgt.
GENERAL.survey.create={Actor} hat die Befragung {Object} erstellt.
GENERAL.survey.create.target={Actor} hat die Befragung {Object} in {Target} erstellt.
GENERAL.survey.post={Actor} hat die Befragung {Object} ver\u00f6ffentlicht.
GENERAL.survey.post.target={Actor} hat die Befragung {Object} in {Target} ver\u00f6ffentlicht.
GENERAL.survey.comment={Actor} hat einen Kommentar erstellt.
GENERAL.survey.comment.target={Actor} hat die Befragung {Target} kommentiert.
GENERAL.survey.like={Actor} hat die Befragung {Object} empfohlen.
GENERAL.survey.like.target={Actor} hat die Befragung {Object} in {Target} empfohlen.
GENERAL.survey.update={Actor} hat die Befragung {Object} aktualisiert.
GENERAL.survey.update.target={Actor} hat die Befragung {Object} in {Target} aktualisiert.
GENERAL.survey.share={Actor} hat die Befragung {Object} geteilt.
GENERAL.survey.share.target={Actor} hat die Befragung {Object} mit {Target} geteilt.
GENERAL.survey.share.in.target={Actor} hat die Befragung {Object} in {Target} geteilt.
GENERAL.survey.follow={Actor} folgt nun der Befragung {Object}.
GENERAL.survey.stopFollowing={Actor} hat aufgeh\u00f6rt, der Befragung {Object} zu folgen.
GENERAL.survey.tag={Actor} hat die Befragung {Object} mit den Tags {Target} versehen.
GENERAL.survey.tag.target={Actor} hat die Befragung {Object} mit den Tags {Target} versehen.
GENERAL.survey.publish={Actor} hat die Befragung {Object} ver\u00f6ffentlicht.
GENERAL.survey.publish.target={Actor} hat die Befragung {Object} in {Target} ver\u00f6ffentlicht.
GENERAL.survey.lock.target={Actor} hat die Befragung {Object} in {Target} gesperrt.
GENERAL.survey.unlock.target={Actor} hat die Befragung {Object} in {Target} entsperrt.
GENERAL.survey.complete={Actor} hat die Befragung {Object} beendet.
GENERAL.survey.complete.target={Actor} hat die Befragung {Object} in {Target} beendet.
GENERAL.survey.stop={Actor} hat die Befragung {Object} gestoppt.
GENERAL.survey.stop.target={Actor} hat die Befragung {Object} in {Target} gestoppt.
GENERAL.survey.delete={Actor} hat die Befragung {Object} gel\u00f6scht.
GENERAL.survey.delete.target={Actor} hat die Befragung {Object} in {Target} gel\u00f6scht.
GENERAL.survey.start={Actor} hat die Befragung {Object} gestartet.
GENERAL.survey.start.target={Actor} hat die Befragung {Object} in {Target} gestartet. 
EXTERNAL.repost={Actor} hat erneut ver\u00f6ffentlicht: {repostIcon}
EXTERNAL.repost.notification={Actor} hat Folgendes erneut ver\u00f6ffentlicht: {repostIcon} Nachricht von {author}
8. Oktober 2014

Pin It on Pinterest