Jaja.. das gute Cake.. immer wieder lecker ;-)

Ich brauchte gerade ein Tool zur automatischen Übersetzung von Text. Ich dachte ein Helper is da sicherlich nicht schlecht. Also hier ist er.. TransHelper. Entscheidet anhand der vom Benutzer favorisierten Spracheinstellung welche vorhandene Übersetzung angezeigt werden soll. Ich empfehle allerdings eine Datenbank dranzuhängen um nicht in Arrays innerhalb des Views zu versinken.

Die Sache läuft so:

PHP:
  1. <?php e($trans->text(array('default'=>'Title',
  2.                      'de_de'=>'Titel',
  3.                      'fr_fr'=>'Titre',
  4.                      'it_it'=>'Titolo'))); ?>

Der Helper entscheidet selber was am besten ist. Gerade bei en_EN und en_US von Vorteil. Sollte nur die Sprache (en) überinstimmen wird das nächst beste geliefert. Wenn beides stimmt wird genau dessen Übersetzung zurückgegeben.

Source | Zipped PHP

Bevor ich mit CakePHP anfing gehörte die Smarty Template Klasse von PHP.net zu meiner Standardausrüstung. Ich habe damit früher quasi meinen eigenes MVC gebastelt. Für mich war es damals ein riesiger Schritt nach vorne als ich Smarty zum erstene Mal in meine Programme gepackt habe. Nun haben wir bei CakePHP allerdings ein etwas "roheres Material".. die thtml-Dateien. Okay.. man hört oft: "Warum eine Templateengine mit eigener Sprache? PHP ist ja quasi auch eine Templatesprache.. ". Da stimme ich auch zu, aber man macht sich damit nur das Leben schwer. Jeder der sich schonmal durch einen Wald von php-tags gemixt mit HTML schlagen durfte wird mir da zustimmen.. spätestens wenn man nach 4 Monaten oder mehr mal eben was ändern will, oder sogar ein komplettes Redesign ansteht..

Lange Rede.. hier mal ein Beispiel zum Vergleich. Was lässt sich besser lesen?

HTML:
  1. <td><?php echo $note['Note']['id'] ?></td>
  2.     <td><?php echo $note['Note']['title'] ?></td>
  3.     <td><?php echo $note['Note']['body'] ?></td>
  4.     <td><?php echo $note['Note']['created'] ?></td>
  5.     <td><?php echo $note['Note']['modified'] ?></td>

oder...

HTML:
  1. <td>{$note.Note.id}</td>
  2.     <td>{$note.Note.title}</td>
  3.     <td>{$note.Note.body}</td>
  4.     <td>{$note.Note.created}</td>
  5.     <td>{$note.Note.modified}</td>

Und das ist noch ein einfaches Beispiel. Oft hat man ja noch if(!empty) oder foreach etc.. und alles mit den php tags.. Ich bin zwar schon dazu übergegangen die Shortcuts von CakePHP zu benutzen aber ich kann dem <?php e($html->link()); ?> auch nicht wirklich was abgewinnen..

Read the rest of this entry »