• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

probleme mit übersetzungsscript

T

ToM80

Guest
Hi,
ich verzweifel gerade an einer Funktion die zur Übersetzung von Wörtern gedacht ist. Folgendes ist der Code:

XML-Datei mit Platzhalter:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<elements>
    <element id="1">
        <item>
            <title>
                <![CDATA[
                [!{{ACC_SHOW}}!]
                ]]>
            </title>
        </item>
    </element>
...

XML mit Übersetzung:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<contents>
	<content>
		<NAME><![CDATA[ACC_SHOW]]></NAME>
		<TRANSLATING><![CDATA[Übersicht]]></TRANSLATING>
	</content>
...

hier das php-script welches die übersetzung anfordert:
PHP:
$xml=simplexml_load_file('mein.xml');
$returnmentArr=array();
$e=0;
foreach ($xml->element as $ele) {
	$returnmentArr[$e]['title1']=replaceSh("utf8_decode($ele->item->title)",$modul,'[!{{','}}!]');
	$e++;
}

hier die übersetzungsfunktion:
PHP:
function replaceSh($spaceholder,$modul,$oT='',$cT='') {
	$xml=simplexml_load_file('meinanderes.xml');
	$replacementArr=array();
	foreach ($xml->content as $msg) {
		if ($oT.utf8_decode($msg->NAME).$cT==$spaceholder) {
			$replacementArr['name']=utf8_decode($msg->NAME);
			$replacementArr['replace']=utf8_decode($msg->TRANSLATING);
			break;
		}
	}
	$content=str_replace($oT.$replacementArr['name'].$cT, $replacementArr['replace'], $spaceholder);
	return $content;
}

Nun das was mich verzweifeln lässt. Bislang hat alles wunderbar geklappt. Jedoch bekomme ich bei genau der oben geschrieben Konstellation folgenden Output:

[!{{ACC_SHOW}}!]

Nun das (für mich) verrückte und nicht nachvollziehbare:
Ersetzte ich:
PHP:
$returnmentArr[$e]['title1']=replaceSh("utf8_decode($ele->item->title)",$modul,'[!{{','}}!]');
durch:
PHP:
$returnmentArr[$e]['title1']=replaceSh("[!{{ACC_SHOW}}!] ",$modul,'[!{{','}}!]');
kommt die völlig korrekte Ausgabe

Übersicht

Ich versteh das nicht. Habe es schon mit parse_str, mit und ohne Anführungszeichen vor dem Aufruf und mit und ohne utf8_decode versucht und mit ich weiß gar nicht mehr was. das Ergebnis ändert sich nicht solange ich das ganze aus der XML ziehe :(

Was übersehe ich oder mache ich falsch?
 
$returnmentArr[$e]['title1']=replaceSh(utf8_decode($ele->item->title),$modul,'[!{{','}}!]');
 
Hi skooli, das hatte ich auch schon. Same same. Die Ausgabe bleibt: [!{{ACC_SHOW}}!]
 
PHP:
function replaceSh($spaceholder,$modul,$oT='',$cT='') {
	$xml=simplexml_load_file('meinanderes.xml');
	$replacementArr=array();
	foreach ($xml->content as $msg) {
		if ($oT.utf8_decode($msg->NAME).$cT==$spaceholder) {
			$replacementArr['name']=utf8_decode($msg->NAME);
			$replacementArr['replace']=utf8_decode($msg->TRANSLATING);
			break;
		}
	}
	$content=str_replace($oT.$replacementArr['name'].$cT, $replacementArr['replace'], $spaceholder);
	return $content;
}
Zuerst machst du ein "== $spaceholder" und dann ein str_replace in $spaceholder? Sinnfrei und erzeugt bei dir das Problem, da in deiner XML-Datei im title noch Zeilenumbrüche und Leerzeichen enthalten sind.
 
Zurück
Oben