PHP in een Javascript File
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?
Ik heb een coming soon pagina in twee talen (zie topic: Is het mogelijk om onderstaande in te voeren met de methode hieronder.
Zo nee, weet iemand een andere correcte en veilige oplossing?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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";
?>
$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";
?>
Gewijzigd op 18/04/2020 13:59:08 door Roos G
Ik zou zelf het laatste prefereren in plaats van een mengelmoes.
Gewijzigd op 18/04/2020 13:49:05 door - Ariën -
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)
1
2
3
4
5
6
7
8
9
10
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";
?>
$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
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)
1
2
3
4
2
3
4
<script type="text/javascript">
var lang = [];
lang['notify_me'] = "<?php echo $lang['get_notified'];?>";
</script>
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)
1
2
3
4
2
3
4
<script type="text/javascript">
var lang = [];
lang['notify_me'] = "Houd me op de hoogte!";
</script>
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 -
In Mijn HTML file staat die code niet, wel een .js file
NotifyMe.js:
Code (php)
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
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)
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
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 -
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
instructies wat je moet doen.
Waar loop je op vast? Ik geef toch duidelijke Gewijzigd op 18/04/2020 14:23:08 door - Ariën -
Code (php)
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 -
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 -
Bedankt voor die link trouwens.
Kijk eens in de broncode in je browser of de vertalingen zichtbaar zijn?
Dan kan je dat type-attribuut weghalen.
- 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
- 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 -
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
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:
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 -
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.
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