Jump to:

23376 Posts in 18295 Topics by 2867 members

General Questions

SilverStripe Forums » General Questions » detect browser language

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, biapar, Willr, Ingo, swaiba, simon_w

Page: 1
Go to End
Author Topic: 1500 Views
  • snaip
    Avatar
    Community Member
    180 Posts

    detect browser language Link to this post

    hi

    i have problem when i want to change location after detect language

    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']='pl';

    // 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: http://www.your_site.com/index_'.lixlpixel_detect_lang().'.php'); // Example Implementation
    //echo 'The Language detected is: '.lixlpixel_detect_lang(); // For Demonstration
    if(lixlpixel_detect_lang() == 'pl') header('location: http://www.mysilverstripesite.net/etravel/');
    if(lixlpixel_detect_lang() == 'en') header('location: http://www.mysilverstripesite.net/etravel/tours/');

    i get http 302 error

    code is good , when i change address

    if(lixlpixel_detect_lang() == 'pl') header('location: http://www.mysilverstripesite.net/etravel/');

    to

    if(lixlpixel_detect_lang() == 'pl') header('location: http://www.onet.pl');


    everything works fine

    i have the same problem when i want to do this by modify .htaccess file http://silverstripe.org/general-questions/show/255687#post255687

    1500 Views
Page: 1
Go to Top

Want to know more about the company that brought you SilverStripe? Then check out SilverStripe.com

Comments on this website? Please give feedback.