 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
15.01.2004, 19:50
|
#1
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
seite uebersetzen
hallo zusammen,
ich moechte gern eine seite uebersetzen lassen. dafuer hab ich eine variable geschrieben.
PHP-Code:
$uri = $REQUEST_URI;
und jetzt will ich gern den lng-teil ersetzen lassen. und da komme ich nicht mehr weiter.
PHP-Code:
$uri = str_replace("lng=??", "lng=".$flagge, $uri);
wie kann ich dem script jetzt beibringen, dass er nach dem lng= noch die naechsten beiden zeichen noch mitnehmen soll?
gruss
hardy
|
|
|
15.01.2004, 20:01
|
#2
|
|
TP-Veteran
Registriert seit: Dec 2002
Ort: london
|
1. Ich gehe davon aus, dass du die Seite in beiden Sprachen hast.
2. Du weißt nicht, was die ursprüngliche Sprache ist.
3. Du weißt wie die gewünschte Sprache heißt.
Häng einfach den Parameter lang= nochmal an die URL hinten ran. Es zählt immer der Wert des Parameter der in der URL am weitesten rechts gesetzt wurde. Im arabischen und chinesisch-japanischen Sprachraum dürfte es hingegen der am weitesten rechts sein 
|
|
|
15.01.2004, 20:05
|
#3
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
was fuer ein fieser trick
hallo jonemo,
sieht dann aber doch nicht wirklich sauber aus, wenn oben in der adressleiste zweimal lng=... steht. vor allem, wenn es einmal lng=de und einmal lng=en steht.
kann man das nicht etwas "sauberer" loesen?
|
|
|
15.01.2004, 22:55
|
#4
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
ok,
nach unzaehligen versuchen bin ich jetzt an der stelle (und am ende  ):
PHP-Code:
$uri = explode("lng=", $uri);
if (!empty($uri[1])) {
$rest = substr($uri[1], 2, 100);
}
if (!in_array("?", $uri)) {
$bruecke = "";
} else {
$bruecke = "&";
}
$uri = $uri[0].$bruecke."lng=".$flagge.$rest;
die 100 ist aber eben nur verlegenheit. gibt es da einen joker? so ein * oder % oder so?
hardy
EDIT
ich weiss, dass da noch ein fehler drin ist
Geändert von theo (15.01.2004 um 23:17 Uhr).
|
|
|
16.01.2004, 00:29
|
#5
|
|
TP-Veteran
Registriert seit: Mar 2001
Ort: wein4tel (ö)
|
es kann sein, dass es an der fortgeschrittenen zeit liegt oder an dem bier und rotwein, den ich grad getrunken hab - aber ich check net ganz, was du möchtest....
die beiden buchstaben nach dem lng solltest du doch mit $_GET[lng] bekommen und auch so weitergeben.
aber wie gesagt - ich glaub, ich check net, was du genau möchtest...
|
|
|
16.01.2004, 09:05
|
#6
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
mei red
in einer zentralen Datei, die überall eingebunden wurde:
$lng = ($_GET['lng'])? 'de':$_GET['lng']; //default lng setzen...
Dann in dein anderen dateien:
im code dann halt bei jedem Link ?lng=$lng&par2=....
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
16.01.2004, 09:56
|
#7
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
also dann der ganze script-hammer
PHP-Code:
function getLang($local, $area, $uri, $sub_dir='icons/', $kind='flaggs') {
global $_NAVIGATION, $VHCONF_SYSTEM, $NAVIGATION;
$flaggen = explode("|", $_NAVIGATION[$local][$kind]); // de|en|fr|es|...
foreach($flaggen as $flagge) {
$textString = explode("|", $NAVIGATION[$local][$kind][$flagge]); //de|Seite übersetzen|link (also sprache|onmouseover|link oder nicht)
$uri = explode("lng=", $uri);
if (!empty($uri[1])) {
$rest = substr($uri[1], 2, 1000);
}
// hier ist der wurm drin!
// eigentlich muss er nach dem ersten zeichen im $uri[1]
// schauen und je nach dem, ob es ein "?" oder "&" ist
if (empty($uri[1])) {
if (in_array("?", $uri)) {
$bruecke = "?";
} else {
$bruecke = "&";
}
}
$uri = $uri[0].$bruecke."lng=".$flagge.$rest;
($textString[2] == 'link') ?
$lngFlaggs[] = "<a href=\"".$uri."\" onfocus='blur()'
alt=\"".$textString[1]."\"
title=\"".$textString[1]."\"
onmouseover=\"window.status='".$textString[1]."';return true\"
onmouseout=\"window.status='';return true\">
<img src=\"".$_VHCONF_SYSTEM[server_path].$VHCONF_SYSTEM[image_dir].$sub_dir.$flagge.".jpg\"
border=\"0\"></a>" : $lngFlaggs[] =
"<img src=\"".$_VHCONF_SYSTEM[server_path].$VHCONF_SYSTEM[image_dir].$sub_dir.$flagge.".jpg\"
border=\"0\" alt=\"".$textString[1]."\" title=\"".$textString[1]."\">";
}
$lngFlaggs = implode(" | ", $lngFlaggs);
return $lngFlaggs;
}
kein get. kein post. die kleine navi uebersetzt eben einfach die seite. egal, wo man gerade ist.
jetzt klarer?
hardy
Geändert von theo (16.01.2004 um 10:00 Uhr).
|
|
|
16.01.2004, 10:56
|
#8
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
sorry, ich hab mal wieder nicht richtig aufgepasst.
natuerlich muss er nicht nach dem ersten zeichen im $uri[1] sondern nach dem letzten zeichen im $uri[0] schauen. und da wirds nicht mehr so ganz einfach.
|
|
|
16.01.2004, 13:15
|
#9
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
ich will (und hoffentlich muss) deinen code gar nicht verstehen, bzw. warum du das so machst. Das entzieht sich wohl meinem begrenzent Vorstellungsvermögen der scriptingTHEOrie
versuch mal deine 'Schlampigkeitsfehler' wie
$_VHCONF_SYSTEM ->$VHCONF_SYSTEM
auszubessern.
p.s. zwei Vars, die sich sooo ähnlich sind laden geradezu ein den Code unleserlich und fehleranfällig zu machen:
$_NAVIGATION - $NAVIGATION
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
16.01.2004, 13:37
|
#10
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
hallo mike,
danke fuer die fehlerkorrektur und den hinweis.
dafuer erklaer ich dir auch mein script.
das ding kommt oben in die navi (die seite hattest du schon mal gesehen). und ueber ein eine cfg_navi.inc.php kann ich jetzt weitere sprachen hinzufuegen bzw. bei umbauten kurz mal rausnehmen (link oder eben nicht).
nur bisher hatte ich die flaggen einzeln eingebunden (html eben) und man konnte per link nur die sprache der seite wechseln. jetzt moechte ich eben erreichen, dass man auf der seite, auf der man sich gerade befindet, die sprache wechseln kann und dabei nicht wieder auf die index zurueckgeschickt wird.
also erfuellt mein "kleines" script gleich zwei aufgaben auf einmal und das ist doch schon was. 
|
|
|
17.01.2004, 09:43
|
#11
|
|
TP-Veteran
Registriert seit: Mar 2001
Ort: wein4tel (ö)
|
ok. jetzt dürfte es auch ich geschnallt haben.
ich hab das prob mal so gelöst - folgendes includier ich in die zu übersetzenden seiten:
PHP-Code:
<?
function dateiname() {
$datei = $_SERVER['SCRIPT_FILENAME'];
$datei = strrchr("$datei", "/");
$dateiname = str_replace("/", "", $datei);
return $dateiname;
}
$link = dateiname();
foreach($_GET as $key=>$val){
if ($key != "lng") {
$anhang .= $key."=".$val."&";
}
}
echo "<a href='".$link."?".$anhang."lng=de'>de</a> |
<a href='".$link."?".$anhang."lng=en'>en</a> |
<a href='".$link."?".$anhang."lng=cz'>cz</a>
";
?>
|
|
|
17.01.2004, 10:15
|
#12
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
hi steff,
danke fuer den tip. ich werd es mir in einer ruhigen minute zu gemuete fuehren. doch auf den ersten blick passt es nicht in meine art, die daten weiterzugeben. aber vielleicht stelle ich ja was um.
fehler sollen ja dazu da sein, um sie nicht nur beim naechsten mal wiederzuerkennen, sondern auch, um aus ihnen zu lernen. und ich habe schonmal nicht auf jan gehoert und ... naja
hardy
|
|
|
17.01.2004, 10:50
|
#13
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
ich klink da noch immer aus.
haben deine links bereits alle einen parameter, der die sprache weitergibt?
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
17.01.2004, 21:57
|
#14
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
na. am anfang net.
wenn ich eine seite zum ersten mal aufrufe nicht. den kriegen sie erst, wenn man auf den button mit der flagge klickt. dann bekommen sie ihn erst. danach haben sie ihn und geben ihn auch weiter.
das funzt. glaub mir 
|
|
|
18.01.2004, 16:36
|
#15
|
|
TP-Specialist
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
|
der vollstaendigkeit halber
PHP-Code:
function getLang($local, $area, $uri, $sub_dir='icons/', $kind='flaggs') {
global $_NAVIGATION, $VHCONF_SYSTEM, $NAVIGATION;
$flaggen = explode("|", $_NAVIGATION[$local][$kind]);
foreach($flaggen as $flagge) {
$textString = explode("|", $NAVIGATION[$local][$kind][$flagge]);
$uri = explode("&lng=", $uri);
if (!empty($uri[1])) {
$rest = substr($uri[1], 2, 1000);
}
$rev_first = strrev($uri[0]);
$last_type = substr($rev_first, 0, 4);
if ($last_type == "php.") {
$bridge = "?";
} else
if ($last_type == "&%" || $last_type == "?%") {
$bridge = "";
} else {
$bridge = "&";
}
$uri = $uri[0].$bridge."lng=".$flagge.$rest;
($textString[2] == 'link') ?
$lngFlaggs[] = "<a href=\"".$uri."\" onfocus='blur()'
alt=\"".$textString[1]."\"
title=\"".$textString[1]."\"
onmouseover=\"window.status='".$textString[1]."';return true\"
onmouseout=\"window.status='';return true\">
<img src=\"".$VHCONF_SYSTEM[server_path].$VHCONF_SYSTEM[image_dir].$sub_dir.$flagge.".jpg\"
border=\"0\"></a>" : $lngFlaggs[] =
"<img src=\"".$VHCONF_SYSTEM[server_path].$VHCONF_SYSTEM[image_dir].$sub_dir.$flagge.".jpg\"
border=\"0\" alt=\"".$textString[1]."\" title=\"".$textString[1]."\">";
}
$lngFlaggs = implode(" | ", $lngFlaggs);
return $lngFlaggs;
}
|
|
|
| |