Werbung / Banner buchen
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Javascript, französischer Ausdruck wird nicht erkannt

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Hallo Community.

    Stehe gerade auf dem Schlauch.
    Habe ein Javascript für eine Fehelrmeldung wenn ein Kunde keine Option aus einem Drop-Down auswählt.
    Dieses Skript muß in vier Sprachen laufen und jeweils erkennen, wenn der default-Wert nicht geändert wurde.
    Es funktioniert wunderbar in allen Sprachen, nur nicht in Französisch.
    Der default-Wert ist in den Sprachdateien festgelegt.

    In frz. lautet dieser default-Wert "choisir s'il vous plaît".
    Ich vermute es liegt an den Sonderzeichen, habe aber alles ausprobiert:
    Code: PHP  [Auswählen]
    define('DEFAULT_PULL_VAL', 'choisir s\'il vous plaît');
    Code: PHP  [Auswählen]
    define('DEFAULT_PULL_VAL', "choisir s'il vous plaît");
    Code: PHP  [Auswählen]
    define('DEFAULT_PULL_VAL', 'choisir s'il vous plaît');
    (wobei & nur wegen des Forums so codiert ist, im Original steht da schlicht das Ampersand)

    Im Backend ist das Attribut einfach ohne Codierung eingegeben, also so:
    "choisir s'il vous plaît".

    Im Quelltext sehe ich, daß alle drei oben genannten Varianten erkannt werden, die Funktion greift aber nicht.

    Hat da irgendjemand eine Eingebung ?

    Grüsse,
    noRiddle


    Linkback: https://www.modified-shop.org/forum/index.php?topic=19120.0

    Modulfux

    • Experte
    • Beiträge: 3.590
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #1 am: 24. März 2012, 15:43:31
    Guck doch mal in die inc/xtc_js_lang.inc.php mit eingebunden ist? Denn hier werden alle Umlaute in diese komische Javascript-Schreibweise umgewandelt.

    Gruß
    Ronny

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #2 am: 24. März 2012, 15:56:14
    Hi Webkiste.
    Mann bei dem Wetter iss man doch draussen...  ;-)

    Nee, das wird ja nicht mit Javascript ausgegeben.
    Es wird einfach eine Javascript-Funktion bei Klick auf den Warenkorb-Button aufgerufen;
    und zwar genau dann, wenn die ausgewählte Option, (hier eben keine ausgewählt), identisch mit dem DEFAULT_PULL_VAL ist.
    Wie gesagt, funktioniert in allen Sprachen wunderbar, nur nicht in franz.; und das obwohl ich ja im Firebug sehe, daß die Konstante korrekt erkannt wurde (in allen drei Fällen).
    Deshalb dachte ich es könne sich lediglich um ein Codierungs-Problem handeln,
    aber, wenn ja, welches ?

    Gruß,
    noRiddle

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #3 am: 24. März 2012, 16:14:58
    Ich denke mal es liegt am '. Versuch auch das Escape-Zeichen (Backslash) zu escapen.
    Code: PHP  [Auswählen]
        define('DEFAULT_PULL_VAL', 'choisir s\\\'il vous plaît');

    Kurz erklärt: Das einzelne \ dient dazu in dem String oben, welches ja auch mit einfachen Anführungsstrichen umschlossen ist, das Hochkomma zu escapen. Wie es scheint, arbeitet Deine Fehlermeldung auch mit solchen Anführungsstrichen. Es bekommt den Text dann aber ohne das Escape-Char, weil dieses ja nur im define benötigt wird. Deswegen muss das eigentliche "Schutzzeichen" auch nochmal mitgeschickt werden \\ (woraus dann \ wird).

    P.S.: Wenn ich Dein Problem falsch verstanden habe, wäre ein Link sehr nützlich wo man/ich es life sehen kann.
    Viele Grüße,
    Tekin Birdüzen - Zend Certified Engineer

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #4 am: 24. März 2012, 16:28:40
    Hey Mann, cYbercOsmOnauT .
    Du bist der Beste. Das funktioniert.
    Dein Sachverstand ist mir hier im Forum schon öfter aufgefallen, wenn ich das mal so sagen darf.

    Leider habe ich deine Erklärung aber nicht verstanden.
    • hatte ich ja auch Varianten ohne Escapen versucht (s.o.)
    • was meinst du mit "arbeitet Deine Fehlermeldung auch mit solchen Anführungsstrichen" ?
    • okay, ich schicke also das Escape-Zeichen auch nochmal mit, was man im Quelltext dann auch gut an einem Escape-Zeichen sieht, aber warum ?
      Ist der Grund, daß die in den Attributen angelegte Option "choisir s'il vous plaît" (ja clean einfach eingegeben), intern das ' auch escapet ?

    Vielen Dank nochmals.

    Gruß,
    noRiddle

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #5 am: 24. März 2012, 16:33:11
    Ach, ich Spacko !
    Alles klar, hab's verstanden.
    Gibt ja folgendes im form-tag:
    Code: XML  [Auswählen]
    onsubmit="return optionCheck('choisir s\'il vous plaît')"

    und ohne escaptes ' geht das natürlich nicht,
    ich Idiii...

    Vielen Dank nochmals.
    noRiddle

    cYbercOsmOnauT

    • modified Team
    • Beiträge: 914
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #6 am: 24. März 2012, 16:43:05
    Ich erkläre es trotzdem nochmal damit es wirklich alle kapieren, die es lesen. ;)

    In PHP ist Dein Text mit ' ' umfasst. Wenn in diesem Text Hochkommata (also einfache Anführungsstriche) vorkommen, muss man diese natürlich mit einem \ escapen, da sonst PHP denkt, das dort der String zuende ist und einen unexpected T_STRING Fehler ausgibt. Dieses \ dient nur dem Schutz des '. Intern wird der String aber ohne das \ verarbeitet (es steht dort s'il und nicht s\'il).

    Der String wiederum wandert nun so zum JavaScript und das Resultat hast Du oben selber aufgeführt. Da das Escape-Zeichen intern entfernt wurde, fehlt es nun im JavaScript um dort wiederum das ' zu escapen. Deswegen muss das Backslash als Schutzzeichen auch mitgeschickt werden.

    Somit wird aus s'il zum Schutz in PHP s\'il und um es auch später im JavaScript zu schützen s\\\'il, was dann im JavaScript als s\'il ankommt.

    Liest sich schwerer als es ist. ;)

    except

    • Fördermitglied
    • Beiträge: 69
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #7 am: 12. September 2013, 14:02:01
    Nur eine kleine Frage, obwohl du ja wahrscheinlich schon die Lösung hast:
    Wäre das nicht einfacher mit    ´ gegangen, denn das ergibt ein '
    Gruss

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #8 am: 12. September 2013, 15:37:12
    Nöö.
    Ein ´ ergibt ein accent aigu = é.
    Was du meinst wäre ', das ergäbe ein Apostroph.

    In meinem ersten Post (Thread-Beginn) siehst du, daß ich auch das getestet hatte.
    Die Erklärung von cYbercOsmOnauT erklärt warum es so funktioniert:
    Code: PHP  [Auswählen]
    define('DEFAULT_PULL_VAL', 'choisir s\\\'il vous plaît');

    Evtl. würde es vielleicht auch so gehen (nicht getestet):
    define('DEFAULT_PULL_VAL', 'choisir s\\'il vous plaît');
    (ohne code-tags weil ansonsten das '&' vom Code-Highlighter in & umgewandelt wird)

    Gruß,
    noRiddle

    except

    • Fördermitglied
    • Beiträge: 69
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #9 am: 12. September 2013, 17:19:14
    Klar, da hast du recht - mein Fehler.

    Kleine Frage, da ich auch gerade in Französisch etwas umschreiben muss, wo finde ich den den Text von der Checkout Confirmation und zwar die, die ich Bild gehilightet habe?
    Hab mich jetzt schon dumm und dämlich gesucht.

    Danke schon mal

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #10 am: 12. September 2013, 18:44:51
    Müsste das sein
    Code: PHP  [Auswählen]
    define('SHIPPING_TIME','Lieferzeit: ');
    in /lang/SPRACHE/SPRACHE.php, hier am Beispiel german.

    Gruß,
    noRiddle

    except

    • Fördermitglied
    • Beiträge: 69
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #11 am: 13. September 2013, 08:42:43
    Ja, das ist es, hatte es auch da gefunden, aber die anderen wie Zuschlag oder Fee oder auch Sub_total, Compris sind eben nicht da ich bin wohl zu doff ;-)
    Noch eine Idee?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.988
    • Geschlecht:
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #12 am: 13. September 2013, 12:19:32
    Das ist doch ganz einfach:
    Suche mit z.B. notepad++ den kompletten lang-Ordner durch nach den gesuchten Begriffen und: Bingo.

    Dauert ein paar Sekunden.

    Gruß,
    noRiddle

    except

    • Fördermitglied
    • Beiträge: 69
    Re: Javascript, französischer Ausdruck wird nicht erkannt
    Antwort #13 am: 13. September 2013, 12:31:26
    noRiddle - vielen Dank!!!
    Habs schon mit einer Suchfunktion probiert, aber damit gehts wirklich einfach.
    Gruss
    Ralph
    Werbung / Banner buchen
    0 Antworten
    1803 Aufrufe
    14. März 2012, 15:46:03 von Bcoola
    9 Antworten
    4410 Aufrufe
    22. September 2010, 16:29:59 von h-h-h
    1 Antworten
    2351 Aufrufe
    28. Dezember 2011, 23:38:50 von Tomcraft
    9 Antworten
    4139 Aufrufe
    21. August 2016, 15:35:00 von noRiddle (revilonetz)
               
    anything