PHP in een Javascript File

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Roos G

Roos G

18/04/2020 13:42:13
Quote Anchor link
Ik heb een coming soon pagina in twee talen (zie topic: https://www.phphulp.nl/php/forum/topic/opgelost-phparrays-multilanguage-htmlwebpagina/103463/). Het enige dat nog vertaald moet worden is de tekst in de 'Notify me' javascript file (van nieuwsbrief formulier Mail Chimp).

Is het mogelijk om onderstaande in te voeren met de methode hieronder.
Zo nee, weet iemand een andere correcte en veilige oplossing?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
    $lang
= array(
        "title" => "tekst",
        "description" => "tekst",
        "lang_en" => "English",
        "lang_nl" => "Nederlands"
    );
    $lang['subscribe_and_updated'] = "Subscribe and stay updated!";
    $lang['signing_up'] = "Signing up to our newsletter gives you exclusive access to our opening!";
    $lang['join_waiting_list'] = "Join Waiting List";
    $lang['get_notified'] = "Get Notified";
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $lang['subscribe_and_updated']; ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $lang['signing_up']; ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $lang['get_notified']; ?>
Gewijzigd op 18/04/2020 13:59:08 door Roos G
 
PHP hulp

PHP hulp

28/11/2024 10:15:17
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 13:46:17
Quote Anchor link
Huh? Waarom ga je eerst een array maken, en later vanaf lijn 8 over op losse array-elementen?
Ik zou zelf het laatste prefereren in plaats van een mengelmoes.
Gewijzigd op 18/04/2020 13:49:05 door - Ariën -
 
Roos G

Roos G

18/04/2020 13:49:55
Quote Anchor link
Omdat ik helemaal niet thuis ben in php.
Ik neem iets over. Of het totaalplaatje dan klopt weet ik niet.
Hoe moet ik het dan doen?
je hulp wordt gewaardeerd:)

Toevoeging op 18/04/2020 13:58:07:

bedoel je zo?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
    $lang
['title'] = "tekst";
    $lang['description'] = "tekst";
    $lang['lang_en'] = "English";
    $lang['lang_nl'] = "Nederlands";        
    $lang['subscribe_and_updated'] = "Subscribe and stay updated!";
    $lang['signing_up'] = "Signing up to our newsletter gives you exclusive access to our opening!";
    $lang['join_waiting_list'] = "Join Waiting List";
    $lang['get_notified'] = "Get Notified";
?>
Gewijzigd op 18/04/2020 13:59:41 door Roos G
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 13:59:50
Quote Anchor link
Ja, dat is de beste opzet voor een array in een taal-bestand.

Programmeren met PHP is wel leuk, maar zorg dat je wel weet wat je doet.
Voor hetzelfde geld sta je met kopiëren en plakken opeens je code om zeep te helpen en mogelijk zelfs onveilig te maken, met een gehackte site tot gevolg! En daar doe je jouw hosting ook geen plezier mee!
Gelukkig is dit hier nog onschuldig, maar zorg dat je goede richtlijnen volgt, voordat je 'spaghetti-code' krijgt waar je later niet meer wijs uit wordt.

Over je vraag:
Je kan niet zomaar PHP in je Javascript-file plaatsen, omdat .js normaal geen PHP verwerkt.
Maar je kan wel met variabelen werken via een doorgeefluikje.

In je HTML-document kan je wel gewoon met PHP werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<script type="text/javascript">
var lang = [];
lang['notify_me'] = "<?php echo $lang['get_notified'];?>";
</script>

En dan staat er (afhankelijk van de gekozen taal) in je HTML-uitvoer als het goed is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<script type="text/javascript">
var lang = [];
lang['notify_me'] = "Houd me op de hoogte!";
</script>


En dan kan je lang['notify_me'] in je javascript-file gebruiken.
Gewijzigd op 18/04/2020 14:23:48 door - Ariën -
 
Roos G

Roos G

18/04/2020 14:10:46
Quote Anchor link
Bedankt Ariën. Nee, dat wil ik ook niet. Daarom vraag ik hulp.
In Mijn HTML file staat die code niet, wel een .js file

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<script src="js/notifyMe.js"></script>


NotifyMe.js:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
 notifyMe jQuery Plugin v1.0.0
 Copyright (c)2014 Sergey Serafimovich
 Licensed under The MIT License.
*/
(function(e) {
    e.fn.notifyMe = function(t) {
        var r = e(this);
        var i = e(this).find("input[name=email]");
        var s = e(this).attr("action");
        var o = e(this).find(".note");
        e(this).on("submit", function(t) {
            t.preventDefault();
            var h = i.val();
            var p = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            if (p.test(h)) {
                $(".message").removeClass("error bad-email success-full");
                $(".message").hide().html('').fadeIn();
                $(".fa-spinner").addClass("fa-spin").removeClass("opacity-0");
                o.show();
                e.ajax({
                    type: "POST",
                    url: s,
                    data: {
                        email: h
                    },
                    dataType: "json",
                    error: function(e) {
                        o.hide();
                        $(".fa-spinner").addClass("opacity-0").removeClass("fa-spin");
                        $(".block-message").addClass("show-block-error").removeClass("show-block-valid");
                        if (e.status == 404) {
                            $(".message").html('<p class="notify-valid">Service is not available at the moment.<br>Please check your internet connection or try again later.</p>').fadeIn();
                        } else {
                            $(".message").html('<p class="notify-valid">Oops. Looks like something went wrong.<br>Please try again later.</p>').fadeIn();
                        }
                    }
                }).done(function(e) {
                    o.hide();
                    if (e.status == "success") {
                        $(".fa-spinner").addClass("opacity-0").removeClass("fa-spin");
                        $(".message").removeClass("bad-email").addClass("success-full");
                        $(".block-message").addClass("show-block-valid").removeClass("show-block-error");
                        $(".message").html('<p class="notify-valid">Thank you for signing up. <br>You are now on our Waiting list. <br>You will receive your first e-mail within the next 24 hours.</p>').fadeIn();
                    } else {
                        if (e.type == "ValidationError") {
                            $(".fa-spinner").addClass("opacity-0").removeClass("fa-spin");
                            $(".message").html('<p class="notify-valid">This email address looks fake or invalid.<br>Please enter a real email address.</p>').fadeIn();
                        } else {
                            $(".fa-spinner").addClass("opacity-0").removeClass("fa-spin");
                            $(".message").html('<p class="notify-valid">Oops. Looks like something went wrong.<br>Please try again later.</p>').fadeIn();
                        }
                    }
                })
            } else {
                $(".fa-spinner").addClass("opacity-0").removeClass("fa-spin");
                $(".message").addClass("bad-email").removeClass("success-full");
                $(".block-message").addClass("show-block-error").removeClass("show-block-valid");
                $(".message").html('<p class="notify-valid">Your e-mail address is incorrect.<br>Please check it and try again.</p>').fadeIn();
                o.hide();
            }

            // Reset and hide all messages on .keyup()
            $("#notifyMe input").keyup(function() {
                $(".block-message").addClass("").removeClass("show-block-valid show-block-error");
                $(".message").fadeOut();
            });
        })
    }

    

})(jQuery)
Gewijzigd op 18/04/2020 14:12:58 door Roos G
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:13:24
Quote Anchor link
Als die code er niet staan dan maak je dat 'doorgeefluikje' toch aan?
Hoe wil je anders de vaste waardes uit dat js-bestand automatisch vertaald hebben?

Je zou ook met .htaccess je .js bestand ook door PHP kunnen laten uitvoeren, maar ik raad dat liever weer af. Want dit wil je gewoon statisch houden en cachen om de snelheid te behouden.
Gewijzigd op 18/04/2020 14:15:09 door - Ariën -
 
Roos G

Roos G

18/04/2020 14:20:00
Quote Anchor link
Ik vind het top dat je me helpt. Maar je legt het uit met veel jargon. Ik ben een nitwit op het gebied van php.
Ik wil ook geen zooitje van mijn html file maken.
Ik begrijp niet wat je bedoeld. Graag in eenvoudige taal met duidelijke instructies.
Gewijzigd op 18/04/2020 14:21:12 door Roos G
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:22:59
Quote Anchor link
Waar loop je op vast? Ik geef toch duidelijke instructies wat je moet doen.
Gewijzigd op 18/04/2020 14:23:08 door - Ariën -
 
Roos G

Roos G

18/04/2020 14:24:00
Quote Anchor link
in de javascript file zie je dat het om vele teksten gaat dat vertaald moet worden

ps: Voor mij is dat niet duidelijk
Gewijzigd op 18/04/2020 14:25:24 door Roos G
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:26:21
Quote Anchor link
Die teksten voor je javascript-file kan je dan prima in je HTML-document plaatsen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<script type="text/javascript">
var lang = [];
lang['notify_me'] = "<?php echo $lang['get_notified'];?>";
lang['invalid_mail'] = "<?php echo $lang['invalid_mail'];?>";
lang['something_wrong'] = "<?php echo $lang['something_wrong'];?>";
</script>


Ik zou zeggen: Werk stapje voor stapje, en kijk steeds wat er gebeurt. En kijk ook in de broncode van je HTML-pagina die bereikbaar is via een rechtsklik en dan via "Bron Weergeven" (of iets in die trant)
Zo houd je controle over wat je doet.

Het komt er op neer dat je dus een tweede lijst maakt voor de vertaling, maar dan met de vertaalde teksten van de gekozen taal. Dit is je juiste weg omdat Javascript niks met PHP van doen heeft.
Gewijzigd op 18/04/2020 14:32:59 door - Ariën -
 
Roos G

Roos G

18/04/2020 14:34:29
Quote Anchor link
Oké, stap-voor-stap. Waar plaats ik dit in mijn html file, helemaal onder?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<script type="text/javascript">
var lang = [];
lang['notify_me'] = "<?php echo $lang['get_notified'];?>";
lang['invalid_mail'] = "<?php echo $lang['invalid_mail'];?>";
lang['something_wrong'] = "<?php echo $lang['something_wrong'];?>";
</script>
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:36:24
Quote Anchor link
Ik zou het plaatsen vóórdat je het js-bestand inlaadt. Ik vermoed dat dit in je head-sectie is?

Je kan tussentijds altijd op http://validator.w3.org de opbouw van je HTML-document uittesten. Dan weet je prima of het klopt.
Gewijzigd op 18/04/2020 14:36:51 door - Ariën -
 
Roos G

Roos G

18/04/2020 14:40:04
Quote Anchor link
Oké, gedaan. En nu?
Bedankt voor die link trouwens.
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:41:06
Quote Anchor link
Kijk eens in de broncode in je browser of de vertalingen zichtbaar zijn?
 
Roos G

Roos G

18/04/2020 14:42:44
Quote Anchor link
Ik krijg deze melding:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Warning: The type attribute is unnecessary for JavaScript resources.

From line 28, column 1; to line 28, column 31

cript>?        ?<script type="text/javascript">?var l
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:43:31
Quote Anchor link
Dan kan je dat type-attribuut weghalen.
 
Roos G

Roos G

18/04/2020 14:45:58
Quote Anchor link
- Ariën - op 18/04/2020 14:43:31:
Dan kan je dat type-attribuut weghalen.


oké.

En gelukt.
Gewijzigd op 18/04/2020 14:48:19 door Roos G
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:49:11
Quote Anchor link
- Staat die vertaling in je PHP-taalbestanden?
- Staan de toegepaste vertalingen al in je HTML-document? (check je broncode!)
- Heb je de Javascript-variabelen al toegepast in je javascriptbestand??
Gewijzigd op 18/04/2020 14:49:37 door - Ariën -
 
Roos G

Roos G

18/04/2020 14:52:05
Quote Anchor link
Had dit bericht net toch geplaatst...
Nog een keer:

Op Nederlandse versie krijg ik het volgende te zien na invoer verkeerd mailadres:

"Your e-mail address is incorrect.
Please check it and try again."

En na aanmelding:

'Thank you for signing up.
You are now on our Waiting list.
You will receive your first e-mail within the next 24 hours."

Ariën, als je me verteld wat ik moet doen, hou erdan rekening mee dat ik niet weet wat ik heb gedaan.


Toevoeging op 18/04/2020 14:53:58:

kijk, dit begrijp ik niet.

"Heb je de Javascript-variabelen al toegepast in je javascriptbestand??"

Maar stoppen? Wil je tijd niet verdoen. Stuur je wel een bericht - als dit kan dan hoor je zo van me.
Gewijzigd op 18/04/2020 14:52:18 door Roos G
 
- Ariën  -
Beheerder

- Ariën -

18/04/2020 14:54:23
Quote Anchor link
Als je mijn vragen even kan beantwoorden, zou dat fijn zijn. Ik heb wel uitleg gegeven, maar het Javascript-bestand moet ook weten wat de vertalingen zijn. Die vertaalt zich niet op magische wijze.

Je hebt in PHP eerst een lijst gemaakt met te vertalen teksten, welke je met een variabele kan ophalen, hé?

Hetzelfde doe je nu met Javascript. Je hebt immers al de vertaalde teksten, dus die javascript-variabelen die je in je HTML-document hebt geplaatst gebruik je nu in je javascript-bestand. Dus lang['mailadress_incorrect']


Dit heb je dan bijvoorbeeld in je javascript-bestand staanop lijn 59:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$(".message").html('<p class="notify-valid">'+lang['mailadress_incorrect']).fadeIn();


Je moet gewoon zorgen dat lang['mailadress_incorrect'] vertaald is in de gekozen vertaling in je HTML-document.

PS: Ik ga overigens niet op privéberichten in, zoals in mijn profiel staat. Dat kost mij helaas teveel tijd.
Gewijzigd op 18/04/2020 15:02:17 door - Ariën -
 
Roos G

Roos G

18/04/2020 15:14:01
Quote Anchor link
Quote:
PS: Ik ga overigens niet op privéberichten in, zoals in mijn profiel staat. Dat kost mij helaas teveel tijd.


Alle begrip. Misschien toch nog de moeite om naar mijn pb te kijken. Zo nee, dan hoe je dit niet weer uit te leggen. Boodschap dan duidelijk.

Voor nu: Ik zal het proberen te begrijpen. Alvast een antwoord op je vragen:

"- Staat die vertaling in je PHP-taalbestanden?"


Hoe doe ik dit? Zoals ik al had gedaan?


"- Staan de toegepaste vertalingen al in je HTML-document? (check je broncode!)"


Wat moet ik dan zien?


"- Heb je de Javascript-variabelen al toegepast in je javascriptbestand??"

Wat bedoel je. Hoe doe ik dat? Graag simpel uitleggen


Ik ga onderstaande vanavond nog een keer proberen. Bedankt.

Quote:
Als je mijn vragen even kan beantwoorden, zou dat fijn zijn. Ik heb wel uitleg gegeven, maar het Javascript-bestand moet ook weten wat de vertalingen zijn. Die vertaalt zich niet op magische wijze.

Je hebt in PHP eerst een lijst gemaakt met te vertalen teksten, welke je met een variabele kan ophalen, hé?

Hetzelfde doe je nu met Javascript. Je hebt immers al de vertaalde teksten, dus die javascript-variabelen die je in je HTML-document hebt geplaatst gebruik je nu in je javascript-bestand. Dus lang['mailadress_incorrect']


Dit heb je dan bijvoorbeeld in je javascript-bestand staanop lijn 59:
Code (php)PHP script in nieuw venster Selecteer het PHP script
1
$(".message").html('<p class="notify-valid">'+lang['mailadress_incorrect']).fadeIn();


Je moet gewoon zorgen dat lang['mailadress_incorrect'] vertaald is in de gekozen vertaling in je HTML-document.
Gewijzigd op 18/04/2020 15:16:39 door Roos G
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.