TF338 Posted November 13, 2011 Share Posted November 13, 2011 Hi, I'm currently in the process of making my first website. The problem is that I'm trying to change the language the website will be in by pressing a button that will call the setlocale() function. But I can't seem to get it to work. From what I read on the internet you can't use php in javascript because it's serverside. But I can't really think of an alternative way of doing this. Any sugestions? This is my code btw for what it's worth. <form action="SetLangEN()" > <input type="image" src="../images/ENflag.jpg" alt= "EN" width="20px" height="15px" onclick="SetLangEN()" /> </form> </form> </div> <script type="text/javascript"> function SetLangEN() { <?php setlocale(LC_ALL, "en_US"); ?> } </script> Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/ Share on other sites More sharing options...
silkfire Posted November 13, 2011 Share Posted November 13, 2011 setlocale is not used to change a page language. Calling PHP with JavaScript is called AJAX. But you dont need it in this case, just create a dropdown that redirects a user to the corresponding site. Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/#findComment-1287887 Share on other sites More sharing options...
TF338 Posted November 14, 2011 Author Share Posted November 14, 2011 setlocale is not used to change a page language. http://mel.melaxis.com/devblog/2005/08/06/localizing-php-web-sites-using-gettext/ that is what is implied on this site i think tho? should i maybe work with a cookie to store the value i want to set locale too? Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/#findComment-1287961 Share on other sites More sharing options...
Adam Posted November 14, 2011 Share Posted November 14, 2011 You can't put PHP within a JavaScript function like that. PHP is processed by the web server when you first request a page. The response - the result of the PHP - is the HTML/CSS/JS that's handed back to the client (browser), but doesn't contain any PHP or knowledge of the server. The JavaScript is then executed much later by the browser itself on certain client events, such as onclick of an input. I would go with the cookie idea to retain the user's language, as JS and PHP both have access. Before using the value of the cookie though, I would first check if a GET parameter was sent to overwrite it. If there's no GET parameter or cookie, then I would assume a default. Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/#findComment-1287988 Share on other sites More sharing options...
TF338 Posted November 14, 2011 Author Share Posted November 14, 2011 Ok I'm trying to work with a cookie now, but i still get an error... this is what gets called when i press the button now, but it says object not found on server. <script type="text/javascript"> function SetLangNL() { alert("Hallo Wereld!"); setcookie("locale", "nl_NL", time()+60*60*24*30, "/");// save a cookie (will expire after 30 days) } </script> Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/#findComment-1288045 Share on other sites More sharing options...
ManiacDan Posted November 14, 2011 Share Posted November 14, 2011 Ok, these are the points you need to understand: 1) You cannot mix PHP and javascript. You've been told twice already and you're still doing it. setcookie() is a PHP function, and therefore cannot be inside your javascript. Ok? Read it again. Ok now move on. 2) PHP is a language used to generate strings. Some of those strings are HTML and javascript, and in that sense you can mix PHP/JS syntax inside your PHP script, but once the JS makes it to the user's browser it cannot execute PHP functions. This is confusing, I know, but you have to understand that a PHP script runs in the PHP interpreter on your server, and all the output of that script forms an HTML/JavaScript document that it sent, in whole, to your user's browser where it it parsed inside an HTML/JavaScript processing engine that is ignorant of PHP. 3) setlocale() in PHP does nothing for your site text, it will only change the output of built-in functions like date(). The article you linked to specifically mentions that you have to store all your translations in a special array and access them through a templating system. They use the locale as the key to that array, but that's all. 4) this is what gets called when i press the button now, but it says object not found on server. This cannot be the error. Always ALWAYS copy and paste errors to us. You have it right there on your screen. Copy and paste it. Your solution is to make a page which can change its output language (using a set of language files/tables that you design by hand) based on a global variable like a cookie or the locale. Then, put a language selector on your website which POSTs or otherwise redirects the user to whatever page they're currently on, but with a new language selected. Your templating system should handle printing the proper translation. -Dan Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/#findComment-1288049 Share on other sites More sharing options...
phporcaffeine Posted November 14, 2011 Share Posted November 14, 2011 Think of it in spatial terms; code execution is an intangible, spatial area in a computer's memory where OPCODE (operational or machine code - the runtime code of your syntax). Each language has its own 'space'. Generally, one language's space cannot interact, dynamically, with another language's space. In your particular example, there are even more obstacles. Javascript, being a client-side language (executes on the user's computer) and PHP, being a server-side language (executes on the web server), have their respective spaces not only separated by the boundaries of spatial execution in memory, but are also geographically separated (both spaces do not execute on the same computer, in practical example. Using a localhost environment, that wouldn't technically be true, but would be in principle). Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/#findComment-1288066 Share on other sites More sharing options...
TF338 Posted November 14, 2011 Author Share Posted November 14, 2011 Well I took the easy way out and just redirected the user to a page with ?locale=en_US / nl_NL in the link, everything works fine now. I did learn some important (and i guess basic) things regarding the interaction of PHP and JS tho. Thx for helping me out all (The error I got was error 404 btw. ) Quote Link to comment https://forums.phpfreaks.com/topic/251069-calling-php-in-javascript/#findComment-1288109 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.