Php Lang Detect

6
<?php /* Script Name: Full Operating system language detection Author: Harald Hope, Website: http://techpatterns.com/ Script Source URI: http://techpatterns.com/downloads/php_language_detection.php Version 0.3.6 Copyright (C) 8 December 2008 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later versi on. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Get the full text of the GPL here: http://www.gnu.org/licenses/gpl.txt Coding conventions: http://cvs.sourceforge.net/viewcvs.py/phpbb/phpBB2/docs/codingstandards.htm?rev= 1.3 */ /* Changes: 0.3.6 - added possible $feature values to comment header section */ /****************************************** Script is currently set to accept 2 parameters, triggered by $feature value. for example, get_languages( 'data' ): 1. 'header' - sets header values, for redirects etc. No data is returned 2. 'data' - for language data handling, ie for stats, etc. Returns an array of the following 4 item array for each language the os supports: 1. full language abbreviation, like en-ca 2. primary language, like en 3. full language string, like English (Canada) 4. primary language string, like English *******************************************/ // choice of redirection header or just getting language data // to call this you only need to use the $feature parameter function get_languages( $feature, $spare='' ) { // get the languages $a_languages = languages(); $index = ''; $complete = ''; $found = false;// set to default value //prepare user language array $user_languages = array(); //check to see if language is set if ( isset( $_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ) { $languages = strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] ); // $languages = ' fr-ch;q=0.3, da, en-us;q=0.8, en;q=0.5, fr;q=0 .3';

Transcript of Php Lang Detect

5/12/2018 Php Lang Detect - slidepdf.com

http://slidepdf.com/reader/full/php-lang-detect 1/6

<?php/*Script Name: Full Operating system language detectionAuthor: Harald Hope, Website: http://techpatterns.com/Script Source URI: http://techpatterns.com/downloads/php_language_detection.phpVersion 0.3.6Copyright (C) 8 December 2008

This program is free software; you can redistribute it and/or modify it underthe terms of the GNU General Public License as published by the Free SoftwareFoundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUTANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESSFOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Get the full text of the GPL here: http://www.gnu.org/licenses/gpl.txt

Coding conventions:http://cvs.sourceforge.net/viewcvs.py/phpbb/phpBB2/docs/codingstandards.htm?rev=1.3*/

/*Changes:0.3.6 - added possible $feature values to comment header section*/

/******************************************Script is currently set to accept 2 parameters, triggered by $feature value.for example, get_languages( 'data' ):

1. 'header' - sets header values, for redirects etc. No data is returned2. 'data' - for language data handling, ie for stats, etc.

Returns an array of the following 4 item array for each language the ossupports:

1. full language abbreviation, like en-ca2. primary language, like en3. full language string, like English (Canada)4. primary language string, like English

*******************************************/

// choice of redirection header or just getting language data// to call this you only need to use the $feature parameter

function get_languages( $feature, $spare='' ){// get the languages$a_languages = languages();$index = '';$complete = '';$found = false;// set to default value//prepare user language array$user_languages = array();

//check to see if language is setif ( isset( $_SERVER["HTTP_ACCEPT_LANGUAGE"] ) ){

$languages = strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] );// $languages = ' fr-ch;q=0.3, da, en-us;q=0.8, en;q=0.5, fr;q=0

.3';

5/12/2018 Php Lang Detect - slidepdf.com

http://slidepdf.com/reader/full/php-lang-detect 2/6

// need to remove spaces from strings to avoid error$languages = str_replace( ' ', '', $languages );$languages = explode( ",", $languages );//$languages = explode( ",", $test);// this is for testing purpo

ses only

foreach ( $languages as $language_list )

{// pull out the language, place languages into array of

full and primary// string structure:$temp_array = array();// slice out the part before ; on first step, the part b

efore - on second, place into array$temp_array[0] = substr( $language_list, 0, strcspn( $la

nguage_list, ';' ) );//full language$temp_array[1] = substr( $language_list, 0, 2 );// cut o

ut primary language//place this array into main $user_languages language ar

ray $user_languages[] = $temp_array;}

//start going through each onefor ( $i = 0; $i < count( $user_languages ); $i++ ){

foreach ( $a_languages as $index => $complete ){

if ( $index == $user_languages[$i][0] ){

// complete language, like english (canada)

$user_languages[$i][2] = $complete;// extract working language, like englis

h$user_languages[$i][3] = substr( $comple

te, 0, strcspn( $complete, ' (' ) );}

}}

}else// if no languages found{

$user_languages[0] = array( '','','','' ); //return blank array.

}// print_r($user_languages);// return parametersif ( $feature == 'data' ){

return $user_languages;}

// this is just a sample, replace target language and file names with your own.

elseif ( $feature == 'header' ){

switch ( $user_languages[0][1] )// get default primary language,

the first one in array that is{

case 'en':

5/12/2018 Php Lang Detect - slidepdf.com

http://slidepdf.com/reader/full/php-lang-detect 3/6

$location = 'retaileng/';$found = true;break;

case 'sp':$location = 'retailspanish/';$found = true;break;

case 'es':$location = 'retailspanish/';$found = true;break;

default:break;

}if ( $found ){

header("Location: $location");}else// make sure you have a default page to send them to

{ header("Location: retaileng/");}

}}

function languages(){// pack abbreviation/language array// important note: you must have the default language as the last item in each major language, after all the// en-ca type entries, so en would be last in that case

$a_languages = array(

'af' => 'Afrikaans','sq' => 'Albanian','ar-dz' => 'Arabic (Algeria)','ar-bh' => 'Arabic (Bahrain)','ar-eg' => 'Arabic (Egypt)','ar-iq' => 'Arabic (Iraq)','ar-jo' => 'Arabic (Jordan)','ar-kw' => 'Arabic (Kuwait)','ar-lb' => 'Arabic (Lebanon)','ar-ly' => 'Arabic (libya)','ar-ma' => 'Arabic (Morocco)','ar-om' => 'Arabic (Oman)',

'ar-qa' => 'Arabic (Qatar)','ar-sa' => 'Arabic (Saudi Arabia)','ar-sy' => 'Arabic (Syria)','ar-tn' => 'Arabic (Tunisia)','ar-ae' => 'Arabic (U.A.E.)','ar-ye' => 'Arabic (Yemen)','ar' => 'Arabic','hy' => 'Armenian','as' => 'Assamese','az' => 'Azeri','eu' => 'Basque','be' => 'Belarusian','bn' => 'Bengali',

'bg' => 'Bulgarian','ca' => 'Catalan','zh-cn' => 'Chinese (China)',

5/12/2018 Php Lang Detect - slidepdf.com

http://slidepdf.com/reader/full/php-lang-detect 4/6

'zh-hk' => 'Chinese (Hong Kong SAR)','zh-mo' => 'Chinese (Macau SAR)','zh-sg' => 'Chinese (Singapore)','zh-tw' => 'Chinese (Taiwan)','zh' => 'Chinese','hr' => 'Croatian','cs' => 'Czech',

'da' => 'Danish','div' => 'Divehi','nl-be' => 'Dutch (Belgium)','nl' => 'Dutch (Netherlands)','en-au' => 'English (Australia)','en-bz' => 'English (Belize)','en-ca' => 'English (Canada)','en-ie' => 'English (Ireland)','en-jm' => 'English (Jamaica)','en-nz' => 'English (New Zealand)','en-ph' => 'English (Philippines)','en-za' => 'English (South Africa)',

'en-tt' => 'English (Trinidad)','en-gb' => 'English (United Kingdom)','en-us' => 'English (United States)','en-zw' => 'English (Zimbabwe)','en' => 'English','us' => 'English (United States)','et' => 'Estonian','fo' => 'Faeroese','fa' => 'Farsi','fi' => 'Finnish','fr-be' => 'French (Belgium)','fr-ca' => 'French (Canada)','fr-lu' => 'French (Luxembourg)',

'fr-mc' => 'French (Monaco)','fr-ch' => 'French (Switzerland)','fr' => 'French (France)','mk' => 'FYRO Macedonian','gd' => 'Gaelic','ka' => 'Georgian','de-at' => 'German (Austria)','de-li' => 'German (Liechtenstein)','de-lu' => 'German (Luxembourg)','de-ch' => 'German (Switzerland)','de' => 'German (Germany)','el' => 'Greek',

'gu' => 'Gujarati','he' => 'Hebrew','hi' => 'Hindi','hu' => 'Hungarian','is' => 'Icelandic','id' => 'Indonesian','it-ch' => 'Italian (Switzerland)','it' => 'Italian (Italy)','ja' => 'Japanese','kn' => 'Kannada','kk' => 'Kazakh','kok' => 'Konkani','ko' => 'Korean',

'kz' => 'Kyrgyz','lv' => 'Latvian','lt' => 'Lithuanian',

5/12/2018 Php Lang Detect - slidepdf.com

http://slidepdf.com/reader/full/php-lang-detect 5/6

'ms' => 'Malay','ml' => 'Malayalam','mt' => 'Maltese','mr' => 'Marathi','mn' => 'Mongolian (Cyrillic)','ne' => 'Nepali (India)','nb-no' => 'Norwegian (Bokmal)',

'nn-no' => 'Norwegian (Nynorsk)','no' => 'Norwegian (Bokmal)','or' => 'Oriya','pl' => 'Polish','pt-br' => 'Portuguese (Brazil)','pt' => 'Portuguese (Portugal)','pa' => 'Punjabi','rm' => 'Rhaeto-Romanic','ro-md' => 'Romanian (Moldova)','ro' => 'Romanian','ru-md' => 'Russian (Moldova)','ru' => 'Russian',

'sa' => 'Sanskrit','sr' => 'Serbian','sk' => 'Slovak','ls' => 'Slovenian','sb' => 'Sorbian','es-ar' => 'Spanish (Argentina)','es-bo' => 'Spanish (Bolivia)','es-cl' => 'Spanish (Chile)','es-co' => 'Spanish (Colombia)','es-cr' => 'Spanish (Costa Rica)','es-do' => 'Spanish (Dominican Republic)','es-ec' => 'Spanish (Ecuador)','es-sv' => 'Spanish (El Salvador)',

'es-gt' => 'Spanish (Guatemala)','es-hn' => 'Spanish (Honduras)','es-mx' => 'Spanish (Mexico)','es-ni' => 'Spanish (Nicaragua)','es-pa' => 'Spanish (Panama)','es-py' => 'Spanish (Paraguay)','es-pe' => 'Spanish (Peru)','es-pr' => 'Spanish (Puerto Rico)','es-us' => 'Spanish (United States)','es-uy' => 'Spanish (Uruguay)','es-ve' => 'Spanish (Venezuela)','es' => 'Spanish (Traditional Sort)',

'sx' => 'Sutu','sw' => 'Swahili','sv-fi' => 'Swedish (Finland)','sv' => 'Swedish','syr' => 'Syriac','ta' => 'Tamil','tt' => 'Tatar','te' => 'Telugu','th' => 'Thai','ts' => 'Tsonga','tn' => 'Tswana','tr' => 'Turkish','uk' => 'Ukrainian',

'ur' => 'Urdu','uz' => 'Uzbek','vi' => 'Vietnamese',

5/12/2018 Php Lang Detect - slidepdf.com

http://slidepdf.com/reader/full/php-lang-detect 6/6

'xh' => 'Xhosa','yi' => 'Yiddish','zu' => 'Zulu' );

return $a_languages;}?>