art-d-sign
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 15.01.2004, 19:50   #1
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe

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
theo ist offline   Mit Zitat antworten


Alt 15.01.2004, 20:01   #2
TP-Veteran
 
Benutzerbild von jonemo
 
Registriert seit: Dec 2002
Ort: london
jonemo macht sich hier sehr viel Mühe
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
__________________
the daily london photo
jonemo ist offline   Mit Zitat antworten
Alt 15.01.2004, 20:05   #3
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
Wink

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?
theo ist offline   Mit Zitat antworten
Alt 15.01.2004, 22:55   #4
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
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], 2100);
        }
        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).
theo ist offline   Mit Zitat antworten
Alt 16.01.2004, 00:29   #5
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg
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...
steff ist offline   Mit Zitat antworten
Alt 16.01.2004, 09:05   #6
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
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
mike ist offline   Mit Zitat antworten
Alt 16.01.2004, 09:56   #7
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
Wink

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], 21000);
        }
        
        
// 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).
theo ist offline   Mit Zitat antworten
Alt 16.01.2004, 10:56   #8
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
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.
theo ist offline   Mit Zitat antworten
Alt 16.01.2004, 13:15   #9
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
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
mike ist offline   Mit Zitat antworten
Alt 16.01.2004, 13:37   #10
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
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.
theo ist offline   Mit Zitat antworten
Alt 17.01.2004, 09:43   #11
TP-Veteran
 
Benutzerbild von steff
 
Registriert seit: Mar 2001
Ort: wein4tel (ö)
steff ist auf einem guten Weg
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>
        "
;
?>
steff ist offline   Mit Zitat antworten
Alt 17.01.2004, 10:15   #12
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
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
theo ist offline   Mit Zitat antworten
Alt 17.01.2004, 10:50   #13
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
ich klink da noch immer aus.

haben deine links bereits alle einen parameter, der die sprache weitergibt?
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 17.01.2004, 21:57   #14
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
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
theo ist offline   Mit Zitat antworten
Alt 18.01.2004, 16:36   #15
TP-Specialist
 
Benutzerbild von theo
 
Registriert seit: Apr 2002
Ort: 743, evergreen terrace
theo macht sich hier sehr viel Mühe
Post

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], 21000);
        }
        
        
$rev_first strrev($uri[0]);
        
$last_type substr($rev_first04);
        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;
 } 
theo ist offline   Mit Zitat antworten
Antwort