AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Fastreport, mehrsprachige Reports

Fastreport, mehrsprachige Reports

Ein Thema von EarlyBird · begonnen am 14. Feb 2013 · letzter Beitrag vom 16. Feb 2013
Antwort Antwort
Seite 1 von 2  1 2   
EarlyBird

Registriert seit: 29. Mär 2007
234 Beiträge
 
#1

Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 10:26
Hallo,
ich überlege gerade wie ich meine mit Fast-Report (4.7) erstellten Reports am besten Mehrsprachig gestalte.
Im Augenblick arbeite ich mit Templates.
Mein Mastertemplate ist in deutsch und daraus erstelle ich dann die verschiedenen Sprachen.
Der z.B. spanische Report basiert auf dem deutschen Template.
In dem spanischen Report übersetze ich dann alle deutschen Beschriftungen ins spanische.
(Die Daten aus der Datenbank werden schon in der richtigen Sprache angezeigt)
Das ganze gefällt mir aber nicht so richtig.
Ich würde die Beschriftungen lieber auch aus der Datenbank oder einer Ini-Datei auslesen.

Wie geht Ihr bei solchen Reports vor?
Über ein paar Anregungen würde ich mich freuen.

Gruß
EarlyBird
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 10:49
was mir gerade einfällt du könntest mit der uses Klausel eine Sprachdatei einbinden in dem Textkonstanten vorhanden sind und diese dann verwenden.
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.313 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 10:53
Hi,

ich habe die Reports versucht mit Übersetzungstools zu bearbeiten (Sizulizer) - hatte damit aber das Problem, dass jeder Report einzeln dem Projekt hinzugefügt werden muss. War jeden falls kompliziert und fehleranfällig. Dein Weg mit dem Mastertemplate gefällt mir dagegen schon recht gut

GRüße
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
234 Beiträge
 
#4

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 11:47
Dein Weg mit dem Mastertemplate gefällt mir dagegen schon recht gut
Danke aber das ist mir zu umständlich, da ich bei Änderungen immer so viele Dateien änder muss.
Auch auf verschiedenen Servern.

was mir gerade einfällt du könntest mit der uses Klausel eine Sprachdatei einbinden in dem Textkonstanten vorhanden sind und diese dann verwenden.
Das muss ich mal zu ende Denken ob es mir wirklich weiterhilft.


je mehr ich darüber nachdenke scheint mir Lösung mit der Datenbank die die flexibelste zu sein.
Ich könnte die Objektnamen aus dem Report in einer Tabelle speichern und dann in "Sprachfeldern" die jeweilige Übersetzung
Nach dem Laden des Reports kann ich dann in einer Schleife alle Reportobjecte suchen und den Text anpassen.
Was meint Ihr dazu?

Weitere Anregungen und Meinungen sind herzlich Willkommen
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
184 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 11:52
Wir machen das, indem die beschriftungsfelder eigene Funktionen erhalten, welche dann vom programm übersetzt werden.

Stichworte "AddFunction" bzw. "TfrxReport.OnUserFunction"

Die Variante mit Templates und Ableitungen ist gut, hat aber den Nachteil das man 2 Scripte hat, da nur das Layout und nicht das Script vererbt ist (das könnte man aber selbst implementieren).
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
234 Beiträge
 
#6

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 12:15
Wir machen das, indem die beschriftungsfelder eigene Funktionen erhalten, welche dann vom programm übersetzt werden.

Stichworte "AddFunction" bzw. "TfrxReport.OnUserFunction"

Die Variante mit Templates und Ableitungen ist gut, hat aber den Nachteil das man 2 Scripte hat, da nur das Layout und nicht das Script vererbt ist (das könnte man aber selbst implementieren).
Das habe ich nicht ganz verstanden.
Kannst Du es mir bitte ein bisschen genauer erklären?
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
184 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 12:37
du kannst in FR ja callbacks implementieren. Dann kannst Du aus dem Listengestalter heraus funktionen aufrufen, die Programmseitig abgearbeitet werden und dann ein ergebnis in den Listengestalter zurückgeben.

Du kannst zB im FR eine Funktion registrieren "translate(konstante: String) : string)"

In dein Memo schreibst Du dann den Funktionsaufruf "[translate('artikel')]"

FR ruft dann zum Zeitpunkt des Drucks Deine Delphi Funktion auf, darin kannst Du dann zB dinge machen wie
"If Kunde = EN then Result:='article no.'"
"If Kunde = D then Result:='Artikel'"

Dadurch hast du zur DesignTime der Liste überall konstanten, die dann von deiner Software in Abhängigkeit andere Werte zurückgeben. Wir haben zB immer ein Wörterbuch (Dictionary) aus der DB im Cache geladen, welches alle Konstanten hält.
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 13:08
beim Erstellen des TfrxReport auf die Variablen zugreifen & die Texte entsprechend setzen:

Delphi-Quellcode:
var
  i : Integer;
  Variable : TfrxVariable;
  MemoFeld : TfrxMemoView;
begin
  i := Report.Variables.IndexOf('ReportVariable');
  if i <> -1 then
  begin
    Variable := Report.Variables.Items[i];
    Variable.Value := QuotedStr('Anzeigetext');
  end;

...

Report.ShowReport();
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#9

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 13:12
könnte man doch auch innerhalb des Reportes steuern, hätte den Vorteil dass es nur für den jeweiligen Report angepasst werden müsste. Bei der Steuerung vom aufrufenden Programm müsste das ja jedes mal angepasst werden wenn etwas ergänzt oder verändert wird...
  Mit Zitat antworten Zitat
ensaron

Registriert seit: 29. Aug 2008
Ort: 10369 Berlin
63 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Fastreport, mehrsprachige Reports

  Alt 14. Feb 2013, 13:25
Ähnlich wie user0815 mit den Variablen nutze ich folgende Funktion um die Komponenten eines Reports zu übersetzen (mittels der gnugettext):

Delphi-Quellcode:
for i := 0 to Report.ComponentCount - 1 do
begin
  if Report.Components[i] is TfrxMemoView then
  begin
    TranslateMemo := TStringList.Create;
    try
      TranslateMemo.Text := TfrxMemoView(lComponent).Memo.Text;
      for j := 0 to TranslateMemo.Count - 1 do
        TranslateMemo[j] := _(TranslateMemo[j]); //Übersetzungsfunktion der gnuggettext
      TfrxMemoView(lComponent).Memo.Text := TranslateMemo.Text;
    finally
      TranslateMemo.Free;
    end;
  end;
end;
Report.ShowReport;
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf