phpbar.de logo

Mailinglisten-Archive

[php] Sprachanpassungen

[php] Sprachanpassungen

Michael Koch php_(at)_phpcenter.de
Tue, 6 Nov 2001 11:08:16 +0100


Am Donnerstag, 6. Dezember 2001 10:54 schrieben Sie:
> tmd> das erscheint mir aber alles nicht elegant genug :) wie löst ihr das
> in tmd> euren projekten?
> hi,
> ich hoffe, dass wir das gleiche meinen!!!!
> alle sprachkonstrukte werden dabei in arrays gespeichert und durch den
> parameter "$language" zur Laufzeit ausgegeben.
>
>
> if(empty($language)) $language = 'de';
> $hasentered[$language] = "$chatuser in deutscher sprache";
> $hasentered[$language] = "$chatuser in englischer sprache";
> $hasentered[$language] = "$chatuser in spanischer sprache";
> .
> .
> .
>
> $msgsent[$language] = "du hast eine nachricht an $msgto geschickt";
> .
> .
> $msgrec[$language] = "$msgfrom hat dir um $sentdate folgende nachricht
> geschickt";

ich habe ein zweidimensionales Array:

Dimension eins wählt die Sprache, Dimension zwei den String anhand eines 
identifiers.

$string = $lang[ 'de' ][ 'identifier' ];

Im String sind nun Platzhalter für Varibalen:

"Jetzt kommt der Platzhalter %%1, und hier noch einer %%2"

mit folgender funktion benutze ich das:

function i18n( $key )
{
	global $lang,$language;
	$result = isset( $lang[ $language ][ $key ] ) ? $lang[ $language ][ $key ] : 
'Unknown text string in language file: ' . $key;
	$array = func_get_args();
	unset( $array[ 0 ] );
	foreach( $array as $key => $value )
	{
		$result = str_replace( "%%$key", $value, $result );
	}
	return $result;
}


Damit hast du eine unbegrenzte anzhal an Parametern für den String.


Gruss,
Michael

-- 
Bremische Hafenvertretung e.V.                      tel: +49 (421) 3090148
IT-Abteilung                                        fax: +49 (421) 3090150
World Trade Center Bremen                      mail: mkoch_(at)_bremen-ports.de
Birkenstrasse 15                           www: http://www.bremen-ports.de
D-28201 Bremen


php::bar PHP Wiki   -   Listenarchive