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?

<?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";
?>

<?php echo $lang['subscribe_and_updated']; ?>
<?php echo $lang['signing_up']; ?>
<?php echo $lang['get_notified']; ?>
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.
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:)

[size=xsmall]Toevoeging op 18/04/2020 13:58:07:[/size]

bedoel je zo?

<?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";
?>
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:

<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:

<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.

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


<script src="js/notifyMe.js"></script>


NotifyMe.js:

/*
 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)


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.
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.
Waar loop je op vast? Ik geef toch duidelijke instructies wat je moet doen.

in de javascript file zie je dat het om vele teksten gaat dat vertaald moet worden

ps: Voor mij is dat niet duidelijk
Die teksten voor je javascript-file kan je dan prima in je HTML-document plaatsen:

<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.
Oké, stap-voor-stap. Waar plaats ik dit in mijn html file, helemaal onder?


<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> 

Reageren