From a3350d26c9aebfd116131da53e734f61efed5ade Mon Sep 17 00:00:00 2001 From: HB9HIL Date: Mon, 8 Jul 2024 19:43:33 +0200 Subject: [PATCH] small adjustments --- install/includes/gettext/gettext.php | 326 +++++++++++---------------- install/index.php | 2 + 2 files changed, 136 insertions(+), 192 deletions(-) diff --git a/install/includes/gettext/gettext.php b/install/includes/gettext/gettext.php index 756ef7064..52d9768c5 100755 --- a/install/includes/gettext/gettext.php +++ b/install/includes/gettext/gettext.php @@ -35,10 +35,10 @@ LC_ALL 6 // LC_MESSAGES is not available if php-gettext is not loaded // while the other constants are already available from session extension. -defined('LC_MESSAGES') OR define('LC_MESSAGES', 5); +defined('LC_MESSAGES') or define('LC_MESSAGES', 5); -require ('inc/streams.php'); -require ('inc/gettext_reader.php'); +require('inc/streams.php'); +require('inc/gettext_reader.php'); // Variables @@ -57,8 +57,7 @@ $LC_CATEGORIES = array( $EMULATEGETTEXT = 0; $CURRENTLOCALE = ''; /* Class to hold a single domain included in $text_domains. */ -class domain -{ +class domain { var $l10n; var $path; var $codeset; @@ -70,64 +69,65 @@ class domain * Return a list of locales to try for any POSIX-style locale specification. */ - function get_list_of_locales($locale) - { - /* Figure out all possible locale names and start with the most +function get_list_of_locales($locale) { + /* Figure out all possible locale names and start with the most * specific ones. I.e. for sr_CS.UTF-8@latin, look through all of * sr_CS.UTF-8@latin, sr_CS@latin, sr@latin, sr_CS.UTF-8, sr_CS, sr. */ - $locale_names = array(); - $lang = NULL; - $country = NULL; - $charset = NULL; - $modifier = NULL; - if ($locale) { - if (preg_match("/^(?P[a-z]{2,3})" // language code - . "(?:_(?P[A-Z]{2}))?" // country code - . "(?:\.(?P[-A-Za-z0-9_]+))?" // charset - . "(?:@(?P[-A-Za-z0-9_]+))?$/", // @ modifier - $locale, $matches)) { - if (isset($matches["lang"])) $lang = $matches["lang"]; - if (isset($matches["country"])) $country = $matches["country"]; - if (isset($matches["charset"])) $charset = $matches["charset"]; - if (isset($matches["modifier"])) $modifier = $matches["modifier"]; - if ($modifier) { - if ($country) { - if ($charset) array_push($locale_names, $lang . "_" . $country . "." . $charset . "@" . $modifier); - array_push($locale_names, $lang . "_" . $country . "@" . $modifier); - } elseif ($charset) { - array_push($locale_names, $lang . "." . $charset . "@" . $modifier); - } - array_push($locale_names, $lang . "@" . $modifier); - } - - if ($country) { - if ($charset) array_push($locale_names, $lang . "_" . $country . "." . $charset); - array_push($locale_names, $lang . "_" . $country); - } elseif ($charset) { - array_push($locale_names, $lang . "." . $charset); - } - array_push($locale_names, $lang); - } - - // If the locale name doesn't match POSIX style, just include it as-is. - if (!in_array($locale, $locale_names)) { - array_push($locale_names, $locale); - } - } - - return $locale_names; - } + $locale_names = array(); + $lang = NULL; + $country = NULL; + $charset = NULL; + $modifier = NULL; + if ($locale) { + if (preg_match( + "/^(?P[a-z]{2,3})" // language code + . "(?:_(?P[A-Z]{2}))?" // country code + . "(?:\.(?P[-A-Za-z0-9_]+))?" // charset + . "(?:@(?P[-A-Za-z0-9_]+))?$/", // @ modifier + $locale, + $matches + )) { + if (isset($matches["lang"])) $lang = $matches["lang"]; + if (isset($matches["country"])) $country = $matches["country"]; + if (isset($matches["charset"])) $charset = $matches["charset"]; + if (isset($matches["modifier"])) $modifier = $matches["modifier"]; + if ($modifier) { + if ($country) { + if ($charset) array_push($locale_names, $lang . "_" . $country . "." . $charset . "@" . $modifier); + array_push($locale_names, $lang . "_" . $country . "@" . $modifier); + } elseif ($charset) { + array_push($locale_names, $lang . "." . $charset . "@" . $modifier); + } + array_push($locale_names, $lang . "@" . $modifier); + } + + if ($country) { + if ($charset) array_push($locale_names, $lang . "_" . $country . "." . $charset); + array_push($locale_names, $lang . "_" . $country); + } elseif ($charset) { + array_push($locale_names, $lang . "." . $charset); + } + array_push($locale_names, $lang); + } + + // If the locale name doesn't match POSIX style, just include it as-is. + if (!in_array($locale, $locale_names)) { + array_push($locale_names, $locale); + } + } + + return $locale_names; +} /** * Utility function to get a StreamReader for the given text domain. */ -function _get_reader($domain = null, $category = 5, $enable_cache = true) -{ +function _get_reader($domain = null, $category = 5, $enable_cache = true) { global $text_domains, $default_domain, $LC_CATEGORIES; - if ( ! isset($domain)) $domain = $default_domain; - if ( ! isset($text_domains[$domain]->l10n)) { + if (!isset($domain)) $domain = $default_domain; + if (!isset($text_domains[$domain]->l10n)) { // get the current locale @@ -136,26 +136,26 @@ function _get_reader($domain = null, $category = 5, $enable_cache = true) $subpath = $LC_CATEGORIES[$category] . "/$domain.mo"; $locale_names = get_list_of_locales($locale); $input = null; - foreach($locale_names as $locale) { + foreach ($locale_names as $locale) { $is_en = false; if (strpos($locale, 'en') === 0) { $is_en = true; } - $base_path = __DIR__ . '/locale/' . $locale . '/' . $subpath; + $base_path = __DIR__ . '/locale/' . $locale . '/' . $subpath; $full_path = realpath($base_path); // error_log("Fullpath: ".$full_path); if (file_exists($full_path)) { $input = new FileReader($full_path); break; } else { - if(!$is_en) { - error_log("Language Path '". $locale ."' does not exist. _get_reader() in gettext.php"); - error_log("Called path: ".$full_path); + if (!$is_en) { + error_log("Language Path '" . $locale . "' does not exist. _get_reader() in gettext.php"); + error_log("Called path: " . $full_path); } } } - if ( ! array_key_exists($domain, $text_domains)) { + if (!array_key_exists($domain, $text_domains)) { // Initialize an empty domain object. @@ -172,8 +172,7 @@ function _get_reader($domain = null, $category = 5, $enable_cache = true) * Returns whether we are using our emulated gettext API or PHP built-in one. */ -function locale_emulation() -{ +function locale_emulation() { global $EMULATEGETTEXT; return $EMULATEGETTEXT; } @@ -182,8 +181,7 @@ function locale_emulation() * Checks if the current locale is supported on this system. */ -function _check_locale_and_function($function = false) -{ +function _check_locale_and_function($function = false) { global $EMULATEGETTEXT; if ($function and !function_exists($function)) return false; return !$EMULATEGETTEXT; @@ -193,10 +191,9 @@ function _check_locale_and_function($function = false) * Get the codeset for the given domain. */ -function _get_codeset($domain = null) -{ +function _get_codeset($domain = null) { global $text_domains, $default_domain, $LC_CATEGORIES; - if ( ! isset($domain)) $domain = $default_domain; + if (!isset($domain)) $domain = $default_domain; return (isset($text_domains[$domain]->codeset)) ? $text_domains[$domain]->codeset : ini_get('mbstring.internal_encoding'); } @@ -204,12 +201,11 @@ function _get_codeset($domain = null) * Convert the given string to the encoding set by bind_textdomain_codeset. */ -function _encode($text) -{ +function _encode($text) { $target_encoding = _get_codeset(); - if ($target_encoding == "") { - $target_encoding = "UTF-8"; - } + if ($target_encoding == "") { + $target_encoding = "UTF-8"; + } if (function_exists("mb_detect_encoding")) { $source_encoding = mb_detect_encoding($text); if ($source_encoding != $target_encoding) $text = mb_convert_encoding($text, $target_encoding, $source_encoding); @@ -224,10 +220,9 @@ function _encode($text) * Returns passed in $locale, or environment variable $LANG if $locale == ''. */ -function _get_default_locale($locale) -{ +function _get_default_locale($locale) { if ($locale == '') // emulate variable support - return getenv('LANG'); + return getenv('LANG'); else return $locale; } @@ -235,35 +230,32 @@ function _get_default_locale($locale) * Sets a requested locale, if needed emulates it. */ -function _setlocale($category, $locale) -{ +function _setlocale($category, $locale) { global $CURRENTLOCALE, $EMULATEGETTEXT; if ($locale === 0) { // use === to differentiate between string "0" if ($CURRENTLOCALE != '') return $CURRENTLOCALE; else - // obey LANG variable, maybe extend to support all of LC_* vars - // even if we tried to read locale without setting it first + // obey LANG variable, maybe extend to support all of LC_* vars + // even if we tried to read locale without setting it first - return _setlocale($category, $CURRENTLOCALE); - } - else { + return _setlocale($category, $CURRENTLOCALE); + } else { if (function_exists('setlocale')) { $ret = setlocale($category, $locale); if (($locale == '' and !$ret) or // failed setting it by env - ($locale != '' and $ret != $locale)) { // failed setting it + ($locale != '' and $ret != $locale) + ) { // failed setting it // Failed setting it according to environment. $CURRENTLOCALE = _get_default_locale($locale); $EMULATEGETTEXT = 1; - } - else { + } else { $CURRENTLOCALE = $ret; $EMULATEGETTEXT = 0; } - } - else { + } else { // No function setlocale(), emulate it all. @@ -286,20 +278,18 @@ function _setlocale($category, $locale) * Sets the path for a domain. */ -function _bindtextdomain($domain, $path) -{ +function _bindtextdomain($domain, $path) { global $text_domains; // ensure $path ends with a slash ('/' should work for both, but lets still play nice) - if (substr(php_uname() , 0, 7) == "Windows") { - if ($path[strlen($path) - 1] != '\\' and $path[strlen($path) - 1] != '/') $path.= '\\'; - } - else { - if ($path[strlen($path) - 1] != '/') $path.= '/'; + if (substr(php_uname(), 0, 7) == "Windows") { + if ($path[strlen($path) - 1] != '\\' and $path[strlen($path) - 1] != '/') $path .= '\\'; + } else { + if ($path[strlen($path) - 1] != '/') $path .= '/'; } - if ( ! array_key_exists($domain, $text_domains)) { + if (!array_key_exists($domain, $text_domains)) { // Initialize an empty domain object. @@ -313,8 +303,7 @@ function _bindtextdomain($domain, $path) * Specify the character encoding in which the messages from the DOMAIN message catalog will be returned. */ -function _bind_textdomain_codeset($domain, $codeset) -{ +function _bind_textdomain_codeset($domain, $codeset) { global $text_domains; $text_domains[$domain]->codeset = $codeset; } @@ -323,8 +312,7 @@ function _bind_textdomain_codeset($domain, $codeset) * Sets the default domain. */ -function _textdomain($domain) -{ +function _textdomain($domain) { global $default_domain; $default_domain = $domain; } @@ -333,8 +321,7 @@ function _textdomain($domain) * Lookup a message in the current domain. */ -function _gettext($msgid) -{ +function _gettext($msgid) { $l10n = _get_reader(); return _encode($l10n->translate($msgid)); } @@ -343,8 +330,7 @@ function _gettext($msgid) * Alias for gettext. */ -function __($msgid) -{ +function __($msgid) { return _gettext($msgid); } @@ -352,8 +338,7 @@ function __($msgid) * Plural version of gettext. */ -function _ngettext($singular, $plural, $number) -{ +function _ngettext($singular, $plural, $number) { $l10n = _get_reader(); return _encode($l10n->ngettext($singular, $plural, $number)); } @@ -362,8 +347,7 @@ function _ngettext($singular, $plural, $number) * Override the current domain. */ -function _dgettext($domain, $msgid) -{ +function _dgettext($domain, $msgid) { $l10n = _get_reader($domain); return _encode($l10n->translate($msgid)); } @@ -372,8 +356,7 @@ function _dgettext($domain, $msgid) * Plural version of dgettext. */ -function _dngettext($domain, $singular, $plural, $number) -{ +function _dngettext($domain, $singular, $plural, $number) { $l10n = _get_reader($domain); return _encode($l10n->ngettext($singular, $plural, $number)); } @@ -382,8 +365,7 @@ function _dngettext($domain, $singular, $plural, $number) * Overrides the domain and category for a single lookup. */ -function _dcgettext($domain, $msgid, $category) -{ +function _dcgettext($domain, $msgid, $category) { $l10n = _get_reader($domain, $category); return _encode($l10n->translate($msgid)); } @@ -392,8 +374,7 @@ function _dcgettext($domain, $msgid, $category) * Plural version of dcgettext. */ -function _dcngettext($domain, $singular, $plural, $number, $category) -{ +function _dcngettext($domain, $singular, $plural, $number, $category) { $l10n = _get_reader($domain, $category); return _encode($l10n->ngettext($singular, $plural, $number)); } @@ -402,8 +383,7 @@ function _dcngettext($domain, $singular, $plural, $number, $category) * Context version of gettext. */ -function _pgettext($context, $msgid) -{ +function _pgettext($context, $msgid) { $l10n = _get_reader(); return _encode($l10n->pgettext($context, $msgid)); } @@ -412,8 +392,7 @@ function _pgettext($context, $msgid) * Override the current domain in a context gettext call. */ -function _dpgettext($domain, $context, $msgid) -{ +function _dpgettext($domain, $context, $msgid) { $l10n = _get_reader($domain); return _encode($l10n->pgettext($context, $msgid)); } @@ -422,8 +401,7 @@ function _dpgettext($domain, $context, $msgid) * Overrides the domain and category for a single context-based lookup. */ -function _dcpgettext($domain, $context, $msgid, $category) -{ +function _dcpgettext($domain, $context, $msgid, $category) { $l10n = _get_reader($domain, $category); return _encode($l10n->pgettext($context, $msgid)); } @@ -432,8 +410,7 @@ function _dcpgettext($domain, $context, $msgid, $category) * Context version of ngettext. */ -function _npgettext($context, $singular, $plural) -{ +function _npgettext($context, $singular, $plural) { $l10n = _get_reader(); return _encode($l10n->npgettext($context, $singular, $plural)); } @@ -442,8 +419,7 @@ function _npgettext($context, $singular, $plural) * Override the current domain in a context ngettext call. */ -function _dnpgettext($domain, $context, $singular, $plural) -{ +function _dnpgettext($domain, $context, $singular, $plural) { $l10n = _get_reader($domain); return _encode($l10n->npgettext($context, $singular, $plural)); } @@ -452,8 +428,7 @@ function _dnpgettext($domain, $context, $singular, $plural) * Overrides the domain and category for a plural context-based lookup. */ -function _dcnpgettext($domain, $context, $singular, $plural, $category) -{ +function _dcnpgettext($domain, $context, $singular, $plural, $category) { $l10n = _get_reader($domain, $category); return _encode($l10n->npgettext($context, $singular, $plural)); } @@ -463,19 +438,16 @@ function _dcnpgettext($domain, $context, $singular, $plural, $category) // Use the standard impl if the current locale is supported, use the // custom impl otherwise. -function T_setlocale($category, $locale) -{ +function T_setlocale($category, $locale) { return _setlocale($category, $locale); } -function T_bindtextdomain($domain, $path) -{ +function T_bindtextdomain($domain, $path) { if (_check_locale_and_function()) return bindtextdomain($domain, $path); else return _bindtextdomain($domain, $path); } -function T_bind_textdomain_codeset($domain, $codeset) -{ +function T_bind_textdomain_codeset($domain, $codeset) { // bind_textdomain_codeset is available only in PHP 4.2.0+ @@ -483,170 +455,140 @@ function T_bind_textdomain_codeset($domain, $codeset) else return _bind_textdomain_codeset($domain, $codeset); } -function T_textdomain($domain) -{ +function T_textdomain($domain) { if (_check_locale_and_function()) return textdomain($domain); else return _textdomain($domain); } -function T_gettext($msgid) -{ +function T_gettext($msgid) { if (_check_locale_and_function()) return gettext($msgid); else return _gettext($msgid); } -function T_($msgid) -{ +function T_($msgid) { if (_check_locale_and_function()) return _($msgid); return __($msgid); } -function T_ngettext($singular, $plural, $number) -{ +function T_ngettext($singular, $plural, $number) { if (_check_locale_and_function()) return ngettext($singular, $plural, $number); else return _ngettext($singular, $plural, $number); } -function T_dgettext($domain, $msgid) -{ +function T_dgettext($domain, $msgid) { if (_check_locale_and_function()) return dgettext($domain, $msgid); else return _dgettext($domain, $msgid); } -function T_dngettext($domain, $singular, $plural, $number) -{ +function T_dngettext($domain, $singular, $plural, $number) { if (_check_locale_and_function()) return dngettext($domain, $singular, $plural, $number); else return _dngettext($domain, $singular, $plural, $number); } -function T_dcgettext($domain, $msgid, $category) -{ +function T_dcgettext($domain, $msgid, $category) { if (_check_locale_and_function()) return dcgettext($domain, $msgid, $category); else return _dcgettext($domain, $msgid, $category); } -function T_dcngettext($domain, $singular, $plural, $number, $category) -{ +function T_dcngettext($domain, $singular, $plural, $number, $category) { if (_check_locale_and_function()) return dcngettext($domain, $singular, $plural, $number, $category); else return _dcngettext($domain, $singular, $plural, $number, $category); } -function T_pgettext($context, $msgid) -{ +function T_pgettext($context, $msgid) { if (_check_locale_and_function('pgettext')) return pgettext($context, $msgid); else return _pgettext($context, $msgid); } -function T_dpgettext($domain, $context, $msgid) -{ +function T_dpgettext($domain, $context, $msgid) { if (_check_locale_and_function('dpgettext')) return dpgettext($domain, $context, $msgid); else return _dpgettext($domain, $context, $msgid); } -function T_dcpgettext($domain, $context, $msgid, $category) -{ +function T_dcpgettext($domain, $context, $msgid, $category) { if (_check_locale_and_function('dcpgettext')) return dcpgettext($domain, $context, $msgid, $category); else return _dcpgettext($domain, $context, $msgid, $category); } -function T_npgettext($context, $singular, $plural, $number) -{ +function T_npgettext($context, $singular, $plural, $number) { if (_check_locale_and_function('npgettext')) return npgettext($context, $singular, $plural, $number); else return _npgettext($context, $singular, $plural, $number); } -function T_dnpgettext($domain, $context, $singular, $plural, $number) -{ +function T_dnpgettext($domain, $context, $singular, $plural, $number) { if (_check_locale_and_function('dnpgettext')) return dnpgettext($domain, $context, $singular, $plural, $number); else return _dnpgettext($domain, $context, $singular, $plural, $number); } -function T_dcnpgettext($domain, $context, $singular, $plural, $number, $category) -{ +function T_dcnpgettext($domain, $context, $singular, $plural, $number, $category) { if (_check_locale_and_function('dcnpgettext')) return dcnpgettext($domain, $context, $singular, $plural, $number, $category); else return _dcnpgettext($domain, $context, $singular, $plural, $number, $category); } // Wrappers used as a drop in replacement for the standard gettext functions -if ( ! function_exists('gettext')) { - function bindtextdomain($domain, $path) - { +if (!function_exists('gettext')) { + function bindtextdomain($domain, $path) { return _bindtextdomain($domain, $path); } - function bind_textdomain_codeset($domain, $codeset) - { + function bind_textdomain_codeset($domain, $codeset) { return _bind_textdomain_codeset($domain, $codeset); } - function textdomain($domain) - { + function textdomain($domain) { return _textdomain($domain); } - function gettext($msgid) - { + function gettext($msgid) { return _gettext($msgid); } - function _($msgid) - { + function _($msgid) { return __($msgid); } - function ngettext($singular, $plural, $number) - { + function ngettext($singular, $plural, $number) { return _ngettext($singular, $plural, $number); } - function dgettext($domain, $msgid) - { + function dgettext($domain, $msgid) { return _dgettext($domain, $msgid); } - function dngettext($domain, $singular, $plural, $number) - { + function dngettext($domain, $singular, $plural, $number) { return _dngettext($domain, $singular, $plural, $number); } - function dcgettext($domain, $msgid, $category) - { + function dcgettext($domain, $msgid, $category) { return _dcgettext($domain, $msgid, $category); } - function dcngettext($domain, $singular, $plural, $number, $category) - { + function dcngettext($domain, $singular, $plural, $number, $category) { return _dcngettext($domain, $singular, $plural, $number, $category); } - function pgettext($context, $msgid) - { + function pgettext($context, $msgid) { return _pgettext($context, $msgid); } - function npgettext($context, $singular, $plural, $number) - { + function npgettext($context, $singular, $plural, $number) { return _npgettext($context, $singular, $plural, $number); } - function dpgettext($domain, $context, $msgid) - { + function dpgettext($domain, $context, $msgid) { return _dpgettext($domain, $context, $msgid); } - function dnpgettext($domain, $context, $singular, $plural, $number) - { + function dnpgettext($domain, $context, $singular, $plural, $number) { return _dnpgettext($domain, $context, $singular, $plural, $number); } - function dcpgettext($domain, $context, $msgid, $category) - { + function dcpgettext($domain, $context, $msgid, $category) { return _dcpgettext($domain, $context, $msgid, $category); } - function dcnpgettext($domain, $context, $singular, $plural, $number, $category) - { + function dcnpgettext($domain, $context, $singular, $plural, $number, $category) { return _dcnpgettext($domain, $context, $singular, $plural, $number, $category); } } diff --git a/install/index.php b/install/index.php index 361dca514..893ce458e 100644 --- a/install/index.php +++ b/install/index.php @@ -25,6 +25,8 @@ if (file_exists('config_unattended.php')) { require_once('includes/gettext/gettext.php'); require_once('includes/gettext/gettext_conf.php'); + + // define('LOCALE_DIR', 'includes/gettext/locale'); define('DEFAULT_LOCALE', 'de_DE');