daniel_philippi
Occasional Collector

#global.language liefert falsche Klasse zurück mit fehlenden funktionen

Jump to solution

Hallo zusammen.

Zu einer bestimmten Sprache in FirstSpirit möchte ich den Anzeigenamen auslesen und ausgeben.

Der Aufruf von #global.language.class liefert immer folgende Klasse zurück:

de.espirit.firstspirit.server.projectmanagement.LanguageImpl

Die Doku sagt aber es wird folgende Klasse zurückgeliefert:

de.espirit.firstspirit.access.language

Das ist ansich noch kein Problem. Allerdings gibt es in der erst genannten Klasse z.B. die Methode getDisplayName() nicht. Leider gibt es auch in der API keine Doku dieser Klasse.

Hat hier jemand eine Idee?!

Gruß,

Daniel

1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Daniel,

ein .getClass() (entspricht im Template der verkürzten Syntax .class) liefert immer die tatsächlich implementierende Klasse zurück.

Eine API beschreibt idealerweise (fast) ausschließlich Interfaces.

de.espirit.firstspirit.server.projectmanagement.LanguageImpl ist eine (interne!) Implementierung von de.espirit.firstspirit.access.Language, garantiert verfügbar sind hier lediglich die im Interface (Language) definierten Methoden.

Und dort gibt es eine Methode .getDisplayName(Language language). D.h. Du musst hier eine weitere Sprache als Parameter hereingeben die angibt in welcher Sprache Du den Namen der Sprache haben möchtest.

Das hat den Hintergrund dass eine Sprache ja nicht nur einen Namen hat, sondern der Name selbst wieder sprachabhängig ist, z.B.:

DE: Deutsch, German, Allemand

EN: Englisch, English, Anglais

FR: Französisch, French, Francais

Viele Grüße

Michael

View solution in original post

2 Replies
Radigewski
Occasional Collector

Hallo Daniel,

in welcher Version tritt der Fehler auf?

Viele Grüße

Thomas

0 Kudos
mbergmann
Crownpeak employee

Hallo Daniel,

ein .getClass() (entspricht im Template der verkürzten Syntax .class) liefert immer die tatsächlich implementierende Klasse zurück.

Eine API beschreibt idealerweise (fast) ausschließlich Interfaces.

de.espirit.firstspirit.server.projectmanagement.LanguageImpl ist eine (interne!) Implementierung von de.espirit.firstspirit.access.Language, garantiert verfügbar sind hier lediglich die im Interface (Language) definierten Methoden.

Und dort gibt es eine Methode .getDisplayName(Language language). D.h. Du musst hier eine weitere Sprache als Parameter hereingeben die angibt in welcher Sprache Du den Namen der Sprache haben möchtest.

Das hat den Hintergrund dass eine Sprache ja nicht nur einen Namen hat, sondern der Name selbst wieder sprachabhängig ist, z.B.:

DE: Deutsch, German, Allemand

EN: Englisch, English, Anglais

FR: Französisch, French, Francais

Viele Grüße

Michael