Multilingual site - Directory based language selection
I'm building a multilingual site, and for the user to select the language I want to use the directory (or url-prefix) based approach (e.g., "/en/content.php" for english and "/nl/content.php" for the dutch page).
My content.php page is the same php page in both cases, so I don't want to have it duplicated, for example having one copy in the "/en" directory and the other in the "/nl" directory. The content itself is loaded using a dictionary file (or database).
So, for example, whenever a user clicks on "www.example.com/en/content.php" the php will identify the language by parsing the url, load the single content.php page and display the content in english (by using a dictionary, for example using gettext() or using Smarty configuration files).
I've searched everywhere for a way to do this, but to no avail (except for using queries, like "www.example.com/content.php?lang=en", which I prefer not to for SEO reasons and readability of the URL.
I'm not sure I understand your question. Is the content.php normally a static page in one language?
For example, do you have a set page in nl, and if you need to convert it to english you instead grab the content from the database?
If so, it might be best to just create two separate files.
But regarding using www.example.com/en/content.php or nl VS using www.example.com/content.php?lang=en:
In the second url, the one you don't like, there is only one file. In the first example, AFAIK there MUST be two folders, one (en) and one (nl) each having a different content.php file in it.
Based on that, the easiest thing would be to code each content.php page differently.
However, if I've completely misunderstood your problem, the way a php script knows its location:
$cur_host = $_SERVER['HTTP_HOST'];
$cur_uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
You can play around with those to get the current location
Note - you must make sure that your server supports mod_rewrite. My server, for example, supports it but I had to add the following extra line to my .htaccess file:
You should find this information on your host's website.