fixes #16
* all PHP code is documented * admin/scripts/*php is added to apidoc and gettext generation in Makefile
This commit is contained in:
parent
f6be78bdcf
commit
379fffa19b
5 changed files with 56 additions and 8 deletions
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
/**
|
||||
* Internationalization code for DAVAdmin.
|
||||
* Internationalization code for DAVAdmin. Some ideas where taken from
|
||||
* Joomla CMS http://www.joomla.org/.
|
||||
*
|
||||
* @author Jan Dittberner <jan@dittberner.info>
|
||||
* @version $Id$
|
||||
|
@ -28,7 +29,11 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* Gets the language data.
|
||||
* Gets the language data for supported languages.
|
||||
*
|
||||
* @return array associative array of language descriptions at index 0
|
||||
* and associative array of language to default country mappings at
|
||||
* index 1
|
||||
*/
|
||||
function get_language_data() {
|
||||
static $supportedLanguages = array();
|
||||
|
@ -48,6 +53,17 @@ function get_language_data() {
|
|||
return array($supportedLanguages, $defaultCountry);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the locale for the given LC_* constant in $category to $locale
|
||||
* or a matching replacement.
|
||||
*
|
||||
* @param int $category one of the LC_* constants that PHP's setlocale
|
||||
* function accepts
|
||||
* @param string $locale locale name with or without country
|
||||
* specification and with or without character set name
|
||||
* @return string|boolean the locale actually set or FALSE if no
|
||||
* locale could be set at all
|
||||
*/
|
||||
function _setlocale($category, $locale) {
|
||||
if (($ret = setlocale($category, $locale)) !== false) {
|
||||
return $ret;
|
||||
|
@ -77,10 +93,20 @@ function _setlocale($category, $locale) {
|
|||
return $ret;
|
||||
}
|
||||
}
|
||||
echo "unable to select a valid locale code";
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a supported language code. If $fallback is true en_US is
|
||||
* returned as a last resort.
|
||||
*
|
||||
* @param string $code the language code which should be tested
|
||||
* @param boolean $fallback if set to true (default) always return a
|
||||
* valid language code
|
||||
* @return string|boolean language code with country specification or
|
||||
* false if $fallback is set to false and language code is not
|
||||
* supported
|
||||
*/
|
||||
function _get_supported_language_code($code, $fallback = true) {
|
||||
static $supportedLanguages;
|
||||
static $defaultCountry;
|
||||
|
@ -107,6 +133,12 @@ function _get_supported_language_code($code, $fallback = true) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Negotiate the locale based on the value of
|
||||
* $_SERVER['HTTP_ACCEPT_LANGUAGE'].
|
||||
*
|
||||
* @return string language code string or null
|
||||
*/
|
||||
function _http_negotiate_locale() {
|
||||
$accepted = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
|
||||
if (!empty($accepted)) {
|
||||
|
@ -120,15 +152,19 @@ function _http_negotiate_locale() {
|
|||
return null;
|
||||
}
|
||||
|
||||
// start the session
|
||||
session_start();
|
||||
$project = "davadmin";
|
||||
|
||||
// set the language based on a GET-Parameter.
|
||||
if (isset($_GET["language"])) {
|
||||
$languageCode = _get_supported_language_code($_GET["language"], false);
|
||||
if (isset($languageCode)) {
|
||||
$_SESSION["language"] = $languageCode;
|
||||
}
|
||||
}
|
||||
// if the current session has a language use it, negotiate from
|
||||
// HTTP-Header otherwise
|
||||
if ($_SESSION["language"]) {
|
||||
$language = $_SESSION["language"];
|
||||
} else {
|
||||
|
@ -138,11 +174,14 @@ if ($_SESSION["language"]) {
|
|||
putenv(sprintf("LANG=%s", $_SESSION["language"]));
|
||||
putenv(sprintf("LANGUAGE=%s", $_SESSION["language"]));
|
||||
$_SESSION["locale"] = _setlocale(LC_ALL, $_SESSION["language"]);
|
||||
// bind text domain for normal code
|
||||
bindtextdomain($project,
|
||||
realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR .
|
||||
".." . DIRECTORY_SEPARATOR . "po"));
|
||||
// bind text domain for JavaScript code
|
||||
bindtextdomain($project . "js",
|
||||
realpath(dirname(__FILE__) . DIRECTORY_SEPARATOR .
|
||||
".." . DIRECTORY_SEPARATOR . "po"));
|
||||
// set the default text domain to project name
|
||||
textdomain($project);
|
||||
?>
|
Loading…
Add table
Add a link
Reference in a new issue