[Mapbender-commits] r3093 - trunk/mapbender/http/classes
svn_mapbender at osgeo.org
svn_mapbender at osgeo.org
Wed Oct 1 09:51:31 EDT 2008
Author: christoph
Date: 2008-10-01 09:51:31 -0400 (Wed, 01 Oct 2008)
New Revision: 3093
Modified:
trunk/mapbender/http/classes/class_locale.php
Log:
merged from 2.5
Modified: trunk/mapbender/http/classes/class_locale.php
===================================================================
--- trunk/mapbender/http/classes/class_locale.php 2008-10-01 13:50:57 UTC (rev 3092)
+++ trunk/mapbender/http/classes/class_locale.php 2008-10-01 13:51:31 UTC (rev 3093)
@@ -1,216 +1,218 @@
-<?php
-# $Id$
-# http://www.mapbender.org/index.php/class_locale.php
-# Copyright (C) 2002 CCGIS
-#
-# 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 2, or (at your option)
-# any later version.
-#
-# 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.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
-
-require_once(dirname(__FILE__)."/../../core/globalSettings.php");
-
-/**
- * sets the locale, depending on various settings:
- * 1) a language ID passed to the constructor
- * 2) the browser settings $_SERVER["HTTP_ACCEPT_LANGUAGE"]
- * 3) a default language ID
- *
- */
-class Mb_locale {
- var $knownLanguages = null;
- var $systemLocales = null;
- var $browserLanguages = null;
- var $os = null;
- var $name = null;
- var $defaultLanguage = "en";
- var $status = "No locale set.";
-
- function Mb_locale($languageId) {
- if (!$languageId) {
- $languageId = LANGUAGE;
- }
- $e = new Mb_notice("class_locale: setting locale to " . $languageId);
- if (USE_I18N) {
- if (!$this->setCurrentLocale($languageId)) {
- $e = new Mb_exception("Locale could not be set. Language ID: '" . $languageId . "'");
- }
- }
- else {
- $this->setCurrentLocale($this->defaultLanguage);
- }
- }
-
- /**
- * Get the current locale, evaluating GET/POST variables, browser languages
- * and a default locale (in that preference)
- *
- * @returns current locale
- */
- function setCurrentLocale($languageId) {
-
- // try to set the locale to $languageId
- if ($this->checkAndSetLocale($languageId)) {
- return true;
- }
- else {
- $e = new Mb_notice("class_locale: no input parameter specified.");
- }
-
- // determine the browser setting and try to set locale according to that
- if ($this->browserLanguage == null) {
- $this->setBrowserLanguages();
- }
- foreach ($this->browserLanguages as $lang) {
- $e = new Mb_notice("trying browser setting " . $lang);
- if ($this->checkAndSetLocale($lang)) {
- return true;
- }
- }
-
- // set to default language
- $e = new Mb_notice("trying default language " . $this->defaultLanguage);
- return $this->checkAndSetLocale($this->defaultLanguage);
- }
-
- /**
- * checks if a locale is available; if yes, it is set via setlocale
- *
- * @returns true if the the locale is set successfully; otherwise false
- */
- function checkAndSetLocale($languageId) {
- if ($this->os == null) {
- $this->os = $this->guessHostOS();
- }
-
- if (!USE_I18N || ($this->os != null && isset($languageId))) {
- if ($this->isKnownLanguage($languageId)) {
-
- if ($this->systemLocales == null) {
- $this->setSystemLocales();
- }
-
- $locale = $this->systemLocales[$this->knownLanguages[$languageId]][$this->os];
- $selectedLocale = setlocale(LC_MESSAGES, $locale);
- if ($selectedLocale) {
- $this->name = $selectedLocale;
- $_SESSION["mb_lang"] = $languageId;
- $_SESSION["mb_locale"] = $this->name;
- $e = new Mb_notice("locale " . $this->name . " ok on " . $this->os);
- // from http://de3.php.net/manual/de/function.gettext.php
- $path = bindtextdomain("Mapbender", dirname(__FILE__)."/../../resources/locale/");
- $enc = bind_textdomain_codeset("Mapbender", "UTF-8");
- $dom = textdomain("Mapbender");
- return true;
- }
- }
- }
- $e = new Mb_notice("locale " . $locale . " not found.");
- return false;
- }
-
- /**
- * Guess the operating system which on which this code is running
- * multiple methods are tested for reliably guessing the os
- *
- * @private
- * @returns string with os name
- */
- function guessHostOS(){
- if (strncasecmp(php_uname(), 'Windows', 7) == 0)
- return 'windows';
- else if (strncasecmp(php_uname(), 'Linux', 5) == 0)
- return 'linux';
- else if (strncasecmp(php_uname(), 'OpenBSD', 7) == 0)
- return 'bsd';
- else if (strncasecmp(php_uname(), 'FreeBSD', 7) == 0)
- return 'bsd';
- else {
- $e = new mb_exception('unknown platform: could not interpret uname. php_uname() returned '. php_uname().'. Please report to MB developers');
- return null;
- }
- }
-
- /**
- * checks if a language is supported
- *
- * @returns true if the language is supported; otherwise false
- */
- function isKnownLanguage($languageId) {
- if ($this->knownLocales == null) {
- $this->setKnownLanguages();
- }
- if (array_key_exists($languageId, $this->knownLanguages)) {
- return true;
- }
- else {
- $e = new Mb_notice("language " . $languageId . " not supported.");
- }
- return false;
- }
-
-
-
- /**
- * determines the available Locales on this system
- */
- function setSystemLocales() {
- $this->systemLocales['it_IT'] = array('linux' => 'it_IT.utf8',
- 'windows' => 'Italian_Italy.1252',
- 'bsd' => 'it_IT',
- 'posix' => 'it_IT');
- $this->systemLocales['de_DE'] = array('linux' => 'de_DE.utf8',
- 'windows' => 'German_Germany.1252',
- 'bsd' => 'de_DE',
- 'posix' => 'it_IT');
- $this->systemLocales['en_US'] = array('linux' => 'en_US.utf8',
- 'windows' => 'English_United States.1252',
- 'bsd' => 'en_US',
- 'posix' => 'it_IT');
- }
-
- /**
- * set the known languages
- */
- function setKnownLanguages() {
- $this->knownLanguages = array('en_US' => 'en_US',
- 'en' => 'en_US',
- 'de_DE' => 'de_DE',
- 'de' => 'de_DE',
- 'bg_BG' => 'bg_BG',
- 'bg' => 'bg_BG',
- 'es_ES' => 'es_ES',
- 'es' => 'es_ES',
- 'nl_NL' => 'nl_NL',
- 'nl' => 'nl_NL',
- 'gr_GR' => 'gr_GR',
- 'gr' => 'gr_GR',
- 'it_IT' => 'it_IT',
- 'it' => 'it_IT');
- }
-
- /**
- * sets the languages accepted by the client browser
- */
- function setBrowserLanguages () {
- $this->browserLanguages = array();
-
- $bLangs = split(',', $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
- foreach ($bLangs as $lang) {
- if (strpos($lang, ';') === false)
- array_push($this->browserLanguages, $lang);
- else
- array_push($this->browserLanguages, substr($lang, 0, strpos($lang, ';')));
- }
- }
-}
-?>
+<?php
+# $Id$
+# http://www.mapbender.org/index.php/class_locale.php
+# Copyright (C) 2002 CCGIS
+#
+# 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 2, or (at your option)
+# any later version.
+#
+# 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+
+require_once(dirname(__FILE__)."/../../core/globalSettings.php");
+
+/**
+ * sets the locale, depending on various settings:
+ * 1) a language ID passed to the constructor
+ * 2) the browser settings $_SERVER["HTTP_ACCEPT_LANGUAGE"]
+ * 3) a default language ID
+ *
+ */
+class Mb_locale {
+ var $knownLanguages = null;
+ var $systemLocales = null;
+ var $browserLanguages = null;
+ var $os = null;
+ var $name = null;
+ var $defaultLanguage = "en";
+ var $status = "No locale set.";
+
+ function Mb_locale($languageId) {
+ if (!$languageId) {
+ $languageId = LANGUAGE;
+ }
+ $e = new Mb_notice("class_locale: setting locale to " . $languageId);
+ if (USE_I18N) {
+ if (!$this->setCurrentLocale($languageId)) {
+ $e = new Mb_exception("Locale could not be set. Language ID: '" . $languageId . "'");
+ }
+ }
+ else {
+ $this->setCurrentLocale($this->defaultLanguage);
+ }
+ }
+
+ /**
+ * Get the current locale, evaluating GET/POST variables, browser languages
+ * and a default locale (in that preference)
+ *
+ * @returns current locale
+ */
+ function setCurrentLocale($languageId) {
+
+ // try to set the locale to $languageId
+ if ($this->checkAndSetLocale($languageId)) {
+ return true;
+ }
+ else {
+ $e = new Mb_notice("class_locale: no input parameter specified.");
+ }
+
+ // determine the browser setting and try to set locale according to that
+ if ($this->browserLanguage == null) {
+ $this->setBrowserLanguages();
+ }
+ foreach ($this->browserLanguages as $lang) {
+ $e = new Mb_notice("trying browser setting " . $lang);
+ if ($this->checkAndSetLocale($lang)) {
+ return true;
+ }
+ }
+
+ // set to default language
+ $e = new Mb_notice("trying default language " . $this->defaultLanguage);
+ return $this->checkAndSetLocale($this->defaultLanguage);
+ }
+
+ /**
+ * checks if a locale is available; if yes, it is set via setlocale
+ *
+ * @returns true if the the locale is set successfully; otherwise false
+ */
+ function checkAndSetLocale($languageId) {
+ if ($this->os == null) {
+ $this->os = $this->guessHostOS();
+ }
+
+ if (!USE_I18N || ($this->os != null && isset($languageId))) {
+ if ($this->isKnownLanguage($languageId)) {
+
+ if ($this->systemLocales == null) {
+ $this->setSystemLocales();
+ }
+
+ $locale = $this->systemLocales[$this->knownLanguages[$languageId]][$this->os];
+ $selectedLocale = setlocale(LC_MESSAGES, $locale);
+ if ($selectedLocale) {
+ $this->name = $selectedLocale;
+ $_SESSION["mb_lang"] = $languageId;
+ $_SESSION["mb_locale"] = $this->name;
+ $e = new Mb_notice("locale " . $this->name . " ok on " . $this->os);
+ // from http://de3.php.net/manual/de/function.gettext.php
+ $path = bindtextdomain("Mapbender", dirname(__FILE__)."/../../resources/locale/");
+ $enc = bind_textdomain_codeset("Mapbender", "UTF-8");
+ $dom = textdomain("Mapbender");
+ return true;
+ }
+ }
+ }
+ $e = new Mb_notice("locale " . $locale . " not found.");
+ return false;
+ }
+
+ /**
+ * Guess the operating system which on which this code is running
+ * multiple methods are tested for reliably guessing the os
+ *
+ * @private
+ * @returns string with os name
+ */
+ function guessHostOS(){
+ if (strncasecmp(php_uname(), 'Windows', 7) == 0)
+ return 'windows';
+ else if (strncasecmp(php_uname(), 'Linux', 5) == 0)
+ return 'linux';
+ else if (strncasecmp(php_uname(), 'OpenBSD', 7) == 0)
+ return 'bsd';
+ else if (strncasecmp(php_uname(), 'FreeBSD', 7) == 0)
+ return 'bsd';
+ else {
+ throw new Mb_exception('unknown platform: could not interpret uname. php_uname() returned '. php_uname().'. Please report to MB developers');
+ return null;
+ }
+ }
+
+ /**
+ * checks if a language is supported
+ *
+ * @returns true if the language is supported; otherwise false
+ */
+ function isKnownLanguage($languageId) {
+ if ($this->knownLocales == null) {
+ $this->setKnownLanguages();
+ }
+ if (array_key_exists($languageId, $this->knownLanguages)) {
+ return true;
+ }
+ else {
+ $e = new Mb_notice("language " . $languageId . " not supported.");
+ }
+ return false;
+ }
+
+
+
+ /**
+ * determines the available Locales on this system
+ */
+ function setSystemLocales() {
+ $this->systemLocales['it_IT'] = array('linux' => 'it_IT.utf8',
+ 'windows' => 'Italian_Italy.1252',
+ 'bsd' => 'it_IT',
+ 'posix' => 'it_IT');
+ $this->systemLocales['de_DE'] = array('linux' => 'de_DE.utf8',
+ 'windows' => 'German_Germany.1252',
+ 'bsd' => 'de_DE',
+ 'posix' => 'de_DE');
+ $this->systemLocales['en_US'] = array('linux' => 'en_US.utf8',
+ 'windows' => 'English_United States.1252',
+ 'bsd' => 'en_US',
+ 'posix' => 'en_US');
+ }
+
+ /**
+ * set the known languages
+ */
+ function setKnownLanguages() {
+ $this->knownLanguages = array('en_US' => 'en_US',
+ 'en' => 'en_US',
+ 'de_DE' => 'de_DE',
+ 'de' => 'de_DE',
+ 'bg_BG' => 'bg_BG',
+ 'bg' => 'bg_BG',
+ 'es_ES' => 'es_ES',
+ 'es' => 'es_ES',
+ 'nl_NL' => 'nl_NL',
+ 'nl' => 'nl_NL',
+ 'fr_FR' => 'fr_FR',
+ 'fr' => 'fr_FR',
+ 'gr_GR' => 'gr_GR',
+ 'gr' => 'gr_GR',
+ 'it_IT' => 'it_IT',
+ 'it' => 'it_IT');
+ }
+
+ /**
+ * sets the languages accepted by the client browser
+ */
+ function setBrowserLanguages () {
+ $this->browserLanguages = array();
+
+ $bLangs = split(',', $_SERVER["HTTP_ACCEPT_LANGUAGE"]);
+ foreach ($bLangs as $lang) {
+ if (strpos($lang, ';') === false)
+ array_push($this->browserLanguages, $lang);
+ else
+ array_push($this->browserLanguages, substr($lang, 0, strpos($lang, ';')));
+ }
+ }
+}
+?>
\ No newline at end of file
More information about the Mapbender_commits
mailing list