I have a problem with this code <? Header( "HTTP/1.1 301 Moved Permanently" ); Header( "Location: http://www.example.com" ); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Untitled Document</title> </head> <body> <?php $language="fr_FR"; putenv("LC_ALL=$language"); setlocale(LC_ALL, $language); bindtextdomain("messages", "./locale"); textdomain("messages"); print "<p>"._("hi! This website is written in English.")."</p>\n"; ?> </body> </html> Code (markup): No matter what string I set the variable $language with that gettext will always look for a translation in the folder locale\es_ES\LC_MESSAGES whether the language is Spanish (es_ES) or not. For example, in the above code, gettext will not look for the French translation as it should in locale\fr_FR\LC_MESSAGES but it will look for the translation into the folder corresponding to Spanish language, that is to say, locale\es_ES\LC_MESSAGES. Moreover, if gettext does not find the folder locale\es_ES\LC_MESSAGES then it will display the string in the original language(English) even if $language equals "fr_FR" and at the same time there is a locale\fr_FR\LC_MESSAGES folder created and the corresponding messages.mo and messages.po files created in this folder. I made sure that I re-run Apache and MySql under Xampp whenever I change anything in the code but it keeps having this undesired behaviour anyways. Do you have any idea about why only translations in .po files in the Spanish folder locale\es_ES\LC_MESSAGES are considered and not those translations corresponding to other languages and their corresponding folders? Thanks in advance.