Author Topic: Platzhalter in Template-Variablen?  (Read 1140 times)

0 Members and 1 Guest are viewing this topic.

sister_sourcecode

  • Guest
Platzhalter in Template-Variablen?
on: Thu, 15. January 2004 - 21:16:02
Hallo,
nach langer Zeit mal wieder.  8)

Gibt es in VLib eigentlich die Möglichkeit, in Templatevariablen Platzhalter einzubauen?

Ein Beispiel:
Ich möchte auf einer zweisprachigen Seite einen Text ausgeben, in deutsch:

Hallo, du bist der 56. Besucher dieser Seite! Herzlich Willkommen!

und in englisch:

Hi, you are visitor No. 56! Welcome!

Das Ganze über eine includete Sprachdatei, in der die Templatevariablen deklariert werden ($counter kommt aus einer anderen Datei).

in deutsch lautet meine Templatevariable:
$tmpl->setVar('text1_visitors', 'Hallo, du bist der ');
$tmpl->setVar('couter_visitors', $counter);
$tmpl->setVar('text2_visitors', 'Besucher dieser Seite! Herzlich Willkommen');

und in englisch:
$tmpl->setVar('text1_visitors', 'Hi, you are visitor No. ');
$tmpl->setVar('couter_visitors', $counter);
$tmpl->setVar('text2_visitors', '! Welcome!');

Ziemlich hölzern irgendwie. Mir schwebt vor, dass man für die $counter eine Art Platzhalter in den Text einbauen kann und so nur eine einzige Template-Variable braucht, in etwa so:

$tmpl->setVar('text_visitors', 'Hallo, du bist der %c Besucher dieser Seite! Herzlich Willkommen');

Leider habe ich dazu nichts gefunden, aber das ist doch bestimmt in ähnlicher Form möglich?

VG
sister_s

Offline ClausVB

  • Administrator
  • Hero Member
  • *****
  • Posts: 566
    • Homepage: clausvb.de
Platzhalter in Template-Variablen?
Reply #1 on: Thu, 15. January 2004 - 22:07:42
Ich arbeite mit LANG-Dateien, so wie es die meisten Projekte machen:
Code: [Select]
// Patterns in {} have to be str_replaced after assigning the lang-variable
lang_case_assigned_admin   = Case #{CASE_ID} has been assigned to a new admin ;
lang_case_assigned_user    = HelpDesk #{CASE_ID} Case has been assigned to a new admin ;
lang_case_changed_admin    = Case #{CASE_ID} has changed;
lang_case_changed_user     = HelpDesk #{CASE_ID} Case has changed;
lang_case_new_user         = HelpDesk #{CASE_ID} New Case opened {OPEN};

Code: [Select]
// Patterns in {} have to be str_replaced after assigning the lang-variable
lang_case_assigned_admin   = Case #{CASE_ID} wurde einem neuen Bearbeiter zugewiesen ;
lang_case_assigned_user    = HelpDesk #{CASE_ID} Case wurde einem neuen Bearbeiter zugewiesen ;
lang_case_changed_admin    = Case #{CASE_ID} wurde geändert;
lang_case_new_user         = HelpDesk #{CASE_ID} Ihr Case vom {OPEN};

Benutzt wird das dann so:

userSubject = lang_case_new_user;
userSubject = str_replace({OPEN}, format_date(row[c_open]), userSubject);
userSubject  = str_replace({CASE_ID}, case_id, userSubject);

Es müsste theoretisch auch möglich sein, das ganze mit verschiedenen TMPL_INCLUDES zu machen, aber dazu braucht man dieses neue Feature, das ich noch nie benutzt habe.

Gruß
Claus
Last Edit: Fri, 25. March 2005 - 13:46:36 by ClausVB

sister_sourcecode

  • Guest
Platzhalter in Template-Variablen?
Reply #2 on: Sat, 17. January 2004 - 18:39:07
Jo,

kapiert und funktioniert (mit der Version, die du auch anwendest).

Danke Claus!

Gruß
Sister_S