Gunnar Bittersmann: Platzhalter in Strings

Beitrag lesen

@@ChrisB:

nuqneH

Und wie im Manual auch steht, ist das bspw. praktisch, wenn man Internationalisierung betreiben will, und dabei andere Satzstrukturen in anderen Sprachen berücksichtigen muss - damit kann man die Platzierung von Werten innerhalb der Ausgabe simpel im Formatstring anpassen, ohne die Reihenfolge der Funktionsparameter ändern zu müssen.

Was man meist gar nicht tun kann, denn man möchte ja die Programmlogik für alle Sprachen dieselbe sein, man möchte da nichts mehrfach implementieren.

Und die Strings kommen of aus einer Datenbank (was eine Datei sein kann, nicht unbedingt ein DBMS), bspw;

$message = Array(  
  'de' => 'Datei %2$s enthält %1$d Rechtschreibfehler.',  
  'en' => 'There were %1$d spelling mistakes in file %2$s.',  
);

Irgenwo ist dann $lang = 'de'; gesetzt, irgendwo anders werden $spellerrors und $filename mit Werten befüllt.

Zur Ausgabe heißt es dann <p><?php [code lang=php]printf($message[$lang], $spellerrors, $filename); ?></p>[/code]

Ohne '%1$d' und '%2$s' ginge das gar nicht.

s.a. Working with Composite Messages > Variables that cannot be reordered.

Oops, denen sind die $$ ausgegangen.

Qapla'

--
Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
(Mark Twain)