Jump to content

Recommended Posts

I've been trying to display a simple & short message in viewer's own language for which I'm using the following script, right at the top of their screen i.e. just above the banner (in my website on: members.lycos.co.uk/darsh25/ .................. select "contact.php"

Although, in my browser, this script identifies that my browser being set to "English" & hence displays "Hello", as it can be seen from:

[code=php:0]<?php

function lixlpixel_get_env_var($Var)
{
if(empty($GLOBALS[$Var]))
{
$GLOBALS[$Var]=(!empty($GLOBALS['_SERVER'][$Var]))?
$GLOBALS['_SERVER'][$Var] : (!empty($GLOBALS['HTTP_SERVER_VARS'][$Var])) ? $GLOBALS['HTTP_SERVER_VARS'][$Var]:'';
}
}

function lixlpixel_detect_lang()
{
// Detect HTTP_ACCEPT_LANGUAGE & HTTP_USER_AGENT.
lixlpixel_get_env_var('HTTP_ACCEPT_LANGUAGE');
lixlpixel_get_env_var('HTTP_USER_AGENT');

$_AL=strtolower($GLOBALS['HTTP_ACCEPT_LANGUAGE']);
$_UA=strtolower($GLOBALS['HTTP_USER_AGENT']);

// Try to detect Primary language if several languages are accepted.
foreach($GLOBALS['_LANG'] as $K)
{
if(strpos($_AL, $K)===0)
return $K;
}

// Try to detect any language if not yet detected.
foreach($GLOBALS['_LANG'] as $K)
{
if(strpos($_AL, $K)!==false)
return $K;
}
foreach($GLOBALS['_LANG'] as $K)
{
if(preg_match("/[\[\( ]{$K}[;,_\-\)]/",$_UA))
return $K;
}

// Return default language if language is not yet detected.
return $GLOBALS['_DLANG'];
}

// Define default language.
$GLOBALS['_DLANG']='en';

// Define all available languages.
// WARNING: uncomment all available languages

$GLOBALS['_LANG'] = array(
'af', // afrikaans.
'ar', // arabic.
'bg', // bulgarian.
'ca', // catalan.
'cs', // czech.
'da', // danish.
'de', // german.
'el', // greek.
'en', // english.
'es', // spanish.
'et', // estonian.
'fi', // finnish.
'fr', // french.
'gl', // galician.
'he', // hebrew.
'hi', // hindi.
'hr', // croatian.
'hu', // hungarian.
'id', // indonesian.
'it', // italian.
'ja', // japanese.
'ko', // korean.
'ka', // georgian.
'lt', // lithuanian.
'lv', // latvian.
'ms', // malay.
'nl', // dutch.
'no', // norwegian.
'pl', // polish.
'pt', // portuguese.
'ro', // romanian.
'ru', // russian.
'sk', // slovak.
'sl', // slovenian.
'sq', // albanian.
'sr', // serbian.
'sv', // swedish.
'th', // thai.
'tr', // turkish.
'uk', // ukrainian.
'zh' // chinese.
);

// Redirect to the correct location.

//header('location: [a href=\"http://www.your_site.com/index_'.lixlpixel_detect_lang().'.php');\" target=\"_blank\"]http://www.your_site.com/index_'.lixlp...#39;.php');[/a] // Example Implementation

if ($GLOBALS['_LANG'] = 'en') {
echo '<span class="colorTextRed">"Hello"';
}
else if ($GLOBALS['_LANG'] = 'fr') {
echo '<span class="colorTextRed">"Bonjour"';
}
else {
echo '<span class="colorTextRed">"Hello"';
}

//echo '<span class="colorTextRed">The Language detected is: '.lixlpixel_detect_lang(); // For Demonstration
?>
[/code]

I managed to get this script from somewhere over the Internet, however, I added "if.....else" right at the end, since I want this script identify the browser language (or something like that) & then based on the language identified, I wish to simply display the equivalent of "Hello" in user's own language.

I tried changing my browser's language to French, in order to TEST this script as if it displays "Bonjour" but that didn't work.

Could anyone around help me ???
Link to comment
https://forums.phpfreaks.com/topic/12236-php-hello-in-different-languages/
Share on other sites

Try this:

[code]<?php

function getLang() {
   $pref=array();
   foreach(split(',', $_SERVER["HTTP_ACCEPT_LANGUAGE"]) as $lang) {
       if (preg_match('/^([a-z]+).*?(?:;q=([0-9.]+))?/i', $lang.';q=1.0', $split)) {
           $pref[]=strtolower($split[1]);
       }
   }
   ksort($pref);
   return $pref;
}

$lang = getLang();

switch ($lang[0]) {

case 'fr':
   echo 'Bonjour';
   break;

case 'de':
   echo 'Hallo';
   break;

case 'es':
   echo 'Hola';
   break;
  
default:
   echo 'Hello';
   break;

}

?>[/code]
[!--quoteo(post=384988:date=Jun 17 2006, 08:01 AM:name=aebstract)--][div class=\'quotetop\']QUOTE(aebstract @ Jun 17 2006, 08:01 AM) [snapback]384988[/snapback][/div][div class=\'quotemain\'][!--quotec--]
I don't think what you said would work though, poirot. I mean for hello yes, and if thats all he wants it will.. but if he wants it to be more advanced, like eventually translating his whole website depending on language?
[/quote]
No problem.

getLang() will return an array with the browser's languages, then he or she can use that and display different content based on them if he or she wants to.

But I think he needs that for greetings only... Besides, if he needs to translate the whole site; sure this is a start only - PHP can't translate the whole thing.
This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.