[ros-diffs] [cfinck] 36598: - Get rid of the new language detection code incompatible to everything else - Outsource and simplify the "check_lang" function, so we finally have only one version of it This fixes the auto-selection of languages in RosCMS and some other language-related issues people were experiencing

cfinck at svn.reactos.org cfinck at svn.reactos.org
Tue Sep 30 12:15:39 CEST 2008


Author: cfinck
Date: Tue Sep 30 05:15:39 2008
New Revision: 36598

URL: http://svn.reactos.org/svn/reactos?rev=36598&view=rev
Log:
- Get rid of the new language detection code incompatible to everything else
- Outsource and simplify the "check_lang" function, so we finally have only one version of it

This fixes the auto-selection of languages in RosCMS and some other language-related issues people were experiencing

Added:
    trunk/web/reactos.org/htdocs/roscms/inc/language_detection.php   (with props)
Removed:
    trunk/web/reactos.org/htdocs/roscms/logon/language_detection.php
Modified:
    trunk/web/reactos.org/htdocs/index.php
    trunk/web/reactos.org/htdocs/roscms/index.php
    trunk/web/reactos.org/htdocs/roscms/lang.php
    trunk/web/reactos.org/htdocs/roscms/logon/user_profil_edit.php
    trunk/web/reactos.org/htdocs/roscms/logon/user_register.php

Modified: trunk/web/reactos.org/htdocs/index.php
URL: http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/index.php?rev=36598&r1=36597&r2=36598&view=diff
==============================================================================
--- trunk/web/reactos.org/htdocs/index.php [iso-8859-1] (original)
+++ trunk/web/reactos.org/htdocs/index.php [iso-8859-1] Tue Sep 30 05:15:39 2008
@@ -20,54 +20,7 @@
 	$roscms_page_format = ".html";
 	 
 	// Language detection
-	function check_lang($lang)
-	{
-		if (preg_match('/^([a-zA-Z]+)(-[a-zA-Z]+)?$/', $lang, $matches)) {
-			$checked_lang = strtolower($matches[1]);
-			switch($checked_lang) {
-				case 'ar':
-				case 'bg':
-				case 'ca':
-				case 'cz':
-				case 'da':
-				case 'de':
-				case 'el':
-				case 'en':
-				case 'es':
-				case 'fr':
-				case 'he':
-				case 'hu':
-				case 'id':
-				case 'it':
-				case 'ja':
-				case 'ko':
-				case 'lt':
-				case 'nl':
-				case 'no':
-				case 'pl':
-				case 'pt':
-				case 'ru':
-				case 'sv':
-				case 'uk':
-				case 'zh':
-				case 'ro':
-				case 'tw':
-				case 'sk':
-				case 'vi':
-					break;
-				default:
-					$checked_lang = '';
-			}
-		}
-		else if ($lang == '*') {
-			$checked_lang = 'en';
-		}
-		else {
-			$checked_lang = '';
-		}
-	
-		return $checked_lang;
-	}
+	require_once("roscms/inc/language_detection.php");
 	
 	if (array_key_exists("page", $_GET)) $rpm_page=htmlspecialchars($_GET["page"]);
 	$rpm_lang = check_lang($_REQUEST['lang']);

Added: trunk/web/reactos.org/htdocs/roscms/inc/language_detection.php
URL: http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/roscms/inc/language_detection.php?rev=36598&view=auto
==============================================================================
--- trunk/web/reactos.org/htdocs/roscms/inc/language_detection.php (added)
+++ trunk/web/reactos.org/htdocs/roscms/inc/language_detection.php [iso-8859-1] Tue Sep 30 05:15:39 2008
@@ -1,0 +1,45 @@
+<?php
+	function check_lang($lang)
+	{
+		$lang = substr($lang, 0, 2);
+		
+		switch($lang)
+		{
+			case 'ar':
+			case 'bg':
+			case 'ca':
+			case 'cz':
+			case 'da':
+			case 'de':
+			case 'el':
+			case 'en':
+			case 'es':
+			case 'fr':
+			case 'he':
+			case 'hu':
+			case 'id':
+			case 'it':
+			case 'ja':
+			case 'ko':
+			case 'lt':
+			case 'nl':
+			case 'no':
+			case 'pl':
+			case 'pt':
+			case 'ru':
+			case 'sv':
+			case 'uk':
+			case 'zh':
+			case 'ro':
+			case 'tw':
+			case 'sk':
+			case 'vi':
+				return $lang;
+		}
+		
+		if($lang == "*")
+			return "en";
+		
+		return "";
+	}
+?>

Propchange: trunk/web/reactos.org/htdocs/roscms/inc/language_detection.php
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: trunk/web/reactos.org/htdocs/roscms/index.php
URL: http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/roscms/index.php?rev=36598&r1=36597&r2=36598&view=diff
==============================================================================
--- trunk/web/reactos.org/htdocs/roscms/index.php [iso-8859-1] (original)
+++ trunk/web/reactos.org/htdocs/roscms/index.php [iso-8859-1] Tue Sep 30 05:15:39 2008
@@ -123,6 +123,7 @@
 
 	//$rpm_lang = "en";
 	//require("inc/lang/en.php"); // preload the english language text
+	require_once("inc/language_detection.php");
 	require("lang.php"); // lang code outsourced
 	require("custom.php"); // custom on-screen information
 	
@@ -204,7 +205,6 @@
 					break;
 				case "edit":
 				case "activate":
-					include("logon/language_detection.php");
 					require("logon/user_profil_edit.php");
 					break;
 			}
@@ -223,7 +223,6 @@
 			require("inc/header.php");
 			create_header("", "logon");
 			require("logon/user_profil_menubar.php");
-			include("logon/language_detection.php");
 			require("logon/user_profil_public.php");
 			require("inc/footer_closetable.php");
 			require("inc/footer.php");
@@ -253,7 +252,6 @@
 			}
 			else {
 				require("inc/header.php");
-				include("logon/language_detection.php");
 				require("logon/user_register.php");
 				require("inc/footer.php");
 			}

Modified: trunk/web/reactos.org/htdocs/roscms/lang.php
URL: http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/roscms/lang.php?rev=36598&r1=36597&r2=36598&view=diff
==============================================================================
--- trunk/web/reactos.org/htdocs/roscms/lang.php [iso-8859-1] (original)
+++ trunk/web/reactos.org/htdocs/roscms/lang.php [iso-8859-1] Tue Sep 30 05:15:39 2008
@@ -1,55 +1,6 @@
 <?php
 
 // Language detection
-function check_lang($lang)
-{
-	if (preg_match('/^([a-zA-Z]+)(-[a-zA-Z]+)?$/', $lang, $matches)) {
-		$checked_lang = strtolower($matches[1]);
-		switch($checked_lang) {
-			case 'ar':
-			case 'bg':
-			case 'ca':
-			case 'cz':
-			case 'da':
-			case 'de':
-			case 'el':
-			case 'en':
-			case 'es':
-			case 'fr':
-			case 'he':
-			case 'hu':
-			case 'id':
-			case 'it':
-			case 'ja':
-			case 'ko':
-			case 'lt':
-			case 'nl':
-			case 'no':
-			case 'pl':
-			case 'pt':
-			case 'ru':
-			case 'sv':
-			case 'uk':
-			case 'zh':
-			case 'ro':
-			case 'tw':
-			case 'sk':
-			case 'vi':
-				break;
-			default:
-				$checked_lang = '';
-		}
-	}
-	else if ($lang == '*') {
-		$checked_lang = 'en';
-	}
-	else {
-		$checked_lang = '';
-	}
-
-	return $checked_lang;
-}
-
 if ($rpm_lang == '' && isset($_COOKIE['roscms_usrset_lang'])) {
 	$rpm_lang = $_COOKIE['roscms_usrset_lang'];
 	if (substr($rpm_lang, -1) == '/') {

Removed: trunk/web/reactos.org/htdocs/roscms/logon/language_detection.php
URL: http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/roscms/logon/language_detection.php?rev=36597&view=auto
==============================================================================
--- trunk/web/reactos.org/htdocs/roscms/logon/language_detection.php [iso-8859-1] (original)
+++ trunk/web/reactos.org/htdocs/roscms/logon/language_detection.php (removed)
@@ -1,229 +1,0 @@
-<?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.4
-	Copyright (C) 29 November 2007
-	GNU GPL
-*/
-
-//$tmp = get_languages();
-//echo "<p>LANG: ".$tmp[0][0]."</p>";
-
-
-// choice of redirection header or just getting language data
-// to call this you only need to use the $feature parameter
-function get_languages()
-{
-	// 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"] ) ) 
-	{
-		//explode languages into array
-		$languages = strtolower( $_SERVER["HTTP_ACCEPT_LANGUAGE"] );
-		$languages = explode( ",", $languages );
-
-		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 before - on second, place into array
-			$temp_array[0] = substr( $language_list, 0, strcspn( $language_list, ';' ) );//full language
-			$temp_array[1] = substr( $language_list, 0, 2 );// cut out primary language
-			//place this array into main $user_languages language array
-			$user_languages[] = $temp_array;
-		}
-
-		//start going through each one
-		for ( $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 english
-					$user_languages[$i][3] = substr( $complete, 0, strcspn( $complete, ' (' ) );
-				}
-			}
-		}
-	}
-	else // if no languages found
-	{
-		$user_languages[0] = array( '','','','' ); //return blank array.
-	}
-
-	return $user_languages;
-}
-
-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)',
-	'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',
-	'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',
-	'xh' => 'Xhosa',
-	'yi' => 'Yiddish',
-	'zu' => 'Zulu' );
-
-	return $a_languages;
-}
-?>

Modified: trunk/web/reactos.org/htdocs/roscms/logon/user_profil_edit.php
URL: http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/roscms/logon/user_profil_edit.php?rev=36598&r1=36597&r2=36598&view=diff
==============================================================================
--- trunk/web/reactos.org/htdocs/roscms/logon/user_profil_edit.php [iso-8859-1] (original)
+++ trunk/web/reactos.org/htdocs/roscms/logon/user_profil_edit.php [iso-8859-1] Tue Sep 30 05:15:39 2008
@@ -142,12 +142,10 @@
 										!$existemail)
 									{
 										// user language (browser settings)
-										$userlang = get_languages();
-										$userlang2 = "en";
-										if (strlen($userlang[0][0]) > 0 || strlen($userlang[0][0]) <= 5) {
-											$userlang2 = $userlang[0][0];
-										}
-										
+										$userlang = check_lang($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
+										
+										if(!$userlang)
+											$userlang = "en";
 										
 										// email address activation code
 										$s = "";
@@ -193,7 +191,7 @@
 														user_fullname = '".mysql_real_escape_string($_POST['userfullname'])."',
 														".$updatemail."
 														user_website = '".mysql_real_escape_string($_POST['userwebsite'])."',
-														user_language = '".mysql_real_escape_string($userlang2)."',
+														user_language = '".mysql_real_escape_string($userlang)."',
 														user_country = '".mysql_real_escape_string($_POST['country'])."',
 														user_timezone = '".mysql_real_escape_string($_POST['tzone'])."',
 														user_occupation = '".mysql_real_escape_string($_POST['useroccupation'])."',

Modified: trunk/web/reactos.org/htdocs/roscms/logon/user_register.php
URL: http://svn.reactos.org/svn/reactos/trunk/web/reactos.org/htdocs/roscms/logon/user_register.php?rev=36598&r1=36597&r2=36598&view=diff
==============================================================================
--- trunk/web/reactos.org/htdocs/roscms/logon/user_register.php [iso-8859-1] (original)
+++ trunk/web/reactos.org/htdocs/roscms/logon/user_register.php [iso-8859-1] Tue Sep 30 05:15:39 2008
@@ -152,12 +152,10 @@
 										$safename == "true" && $safepwd == "true" && !$existname && !$existemail)
 									{										
 										// user language (browser settings)
-										$userlang = get_languages();
-										$userlang2 = "en";
-										if (strlen($userlang[0][0]) > 0 && strlen($userlang[0][0]) <= 5) {
-											$userlang2 = $userlang[0][0];
-										}
-										
+										$userlang = check_lang($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
+										
+										if(!$userlang)
+											$userlang = "en";
 										
 										// account activation code
 										$s = "";
@@ -184,7 +182,7 @@
 																NOW( ) , 
 																'".mysql_real_escape_string($account_act_code)."', 
 																'".mysql_real_escape_string($_POST['useremail'])."', 
-																'".mysql_real_escape_string($userlang2)."');";
+																'".mysql_real_escape_string($userlang)."');";
 										$insert_new_account = mysql_query($sql_new_account);
 
 



More information about the Ros-diffs mailing list