diff --git a/include/class.i18n.php b/include/class.i18n.php index 51cedf9a8eb3d4a9c198cf68ef474c2783ad056f..0ddc78e810d98b22759c3b879d6c90465d5cf39a 100644 --- a/include/class.i18n.php +++ b/include/class.i18n.php @@ -295,7 +295,7 @@ class Internationalization { // User-specific translations function _N($msgid, $plural, $count) { - return TextDomain::lookup()->getTranslation(LC_MESSAGES, $locale) + return TextDomain::lookup()->getTranslation(LC_MESSAGES) ->ngettext($msgid, $plural, $count); } diff --git a/include/class.signal.php b/include/class.signal.php index bb174a9aaf01d657ff83193694a771b9ec0f55aa..a98d4cf63a39979382bd668d857994db0afbeb12 100644 --- a/include/class.signal.php +++ b/include/class.signal.php @@ -58,7 +58,7 @@ class Signal { if (!isset(self::$subscribers[$signal])) self::$subscribers[$signal] = array(); // XXX: Ensure $object if set is a class if ($object && !is_string($object)) - trigger_error(sprintf(_S("Invalid object: %s: Expected class"), $class)); + trigger_error(sprintf(_S("Invalid object: %s: Expected class"), $object)); elseif ($check && !is_callable($check)) { trigger_error(_S("Invalid check function: Must be callable")); $check = null; diff --git a/include/class.translation.php b/include/class.translation.php index cc33b8a1a73a8b75b058b2733cebc666037950d1..1a050167fd6c791a9b9974d794bc8b5b65d7b2c7 100644 --- a/include/class.translation.php +++ b/include/class.translation.php @@ -331,6 +331,7 @@ class gettext_reader { * @return string verbatim plural form header field */ function extract_plural_forms_header_from_po_header($header) { + $regs = array(); if (preg_match("/(^|\n)plural-forms: ([^\n]*)\n/i", $header, $regs)) $expr = $regs[2]; else @@ -647,7 +648,7 @@ class TextDomain { } function getTranslation($category=LC_MESSAGES, $locale=false) { - $locale = $locale ?: self::setlocale(LC_MESSAGES, 0); + $locale = $locale ?: self::setLocale(LC_MESSAGES, 0); if (!isset($this->l10n[$locale])) { // get the current locale $bound_path = @$this->path ?: './'; @@ -668,7 +669,8 @@ class TextDomain { break; } } - $this->l10n[$locale] = new Translation($input, $charset); + // TODO: Handle charset hint from the environment + $this->l10n[$locale] = new Translation($input); } return $this->l10n[$locale]; } @@ -724,7 +726,7 @@ class TextDomain { } $locale_names[] = "{$m['lang']}@{$m['modifier']}"; } - if ($country) { + if ($m['country']) { $locale_names[] = "{$m['lang']}_{$m['country']}"; } $locale_names[] = $m['lang']; @@ -744,7 +746,7 @@ class TextDomain { else // obey LANG variable, maybe extend to support all of LC_* vars // even if we tried to read locale without setting it first - return self::setlocale($category, static::$current_locale); + return self::setLocale($category, static::$current_locale); } else { if (function_exists('setlocale')) { $ret = setlocale($category, $locale); diff --git a/include/client/accesslink.inc.php b/include/client/accesslink.inc.php index 44c2135af16dd98836c4a96e42fc1c2ec9561b60..30c50d4d63c46f28f72414eddba6aafc4a6cdf36 100644 --- a/include/client/accesslink.inc.php +++ b/include/client/accesslink.inc.php @@ -39,7 +39,7 @@ else </div> <div style="display:table-cell;padding-left: 2em;padding-right:90px;"> <?php if ($cfg && $cfg->getClientRegistrationMode() !== 'disabled') { ?> - <?pho echo __('Have an account with us?'); ?> + <?php echo __('Have an account with us?'); ?> <a href="login.php"><?php echo __('Sign In'); ?></a> <?php if ($cfg->isClientRegistrationEnabled()) { ?> <?php echo sprintf(__('or %s register for an account %s to access all your tickets.'), diff --git a/setup/test/run-tests.php b/setup/test/run-tests.php index 1b641a8926686bf30b33ffb1b1f3edbc384271db..2cf780068159380012cb28331b1a65c6b8aa0126 100644 --- a/setup/test/run-tests.php +++ b/setup/test/run-tests.php @@ -14,6 +14,9 @@ ini_set('include_path', './'.PATH_SEPARATOR.INCLUDE_DIR.PATH_SEPARATOR.PEAR_DIR) $fails = array(); +require_once INCLUDE_DIR . 'class.i18n.php'; +Internationalization::bootstrap(); + function show_fails() { global $fails, $root; if ($fails) { diff --git a/setup/test/tests/stubs.php b/setup/test/tests/stubs.php index 9479e274486467ffd000bbe7be06690911faa39e..4cb1e9bcc8113b3dd97987ea69f0b7790bc3e6c5 100644 --- a/setup/test/tests/stubs.php +++ b/setup/test/tests/stubs.php @@ -92,6 +92,7 @@ class DateTimeZone { class Phar { static function isValidPharFilename() {} + function setStub() {} } class ZipArchive { diff --git a/testlang.php b/testlang.php deleted file mode 100644 index 52a36620377e5486efbf86d5b2597f7c7081e022..0000000000000000000000000000000000000000 --- a/testlang.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php -######################################################### -# Copyright © 2008 Darrin Yeager # -# http://www.dyeager.org/ # -# Licensed under BSD license. # -# http://www.dyeager.org/downloads/license-bsd.txt # -######################################################### - -function getDefaultLanguage() { - if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) - return parseDefaultLanguage($_SERVER["HTTP_ACCEPT_LANGUAGE"]); - else - return parseDefaultLanguage(NULL); - } - -function parseDefaultLanguage($http_accept, $deflang = "en") { - if(isset($http_accept) && strlen($http_accept) > 1) { - # Split possible languages into array - $x = explode(",",$http_accept); - foreach ($x as $val) { - #check for q-value and create associative array. No q-value means 1 by rule - if(preg_match("/(.*);q=([0-1]{0,1}\.\d{0,4})/i",$val,$matches)) - $lang[$matches[1]] = (float)$matches[2]; - else - $lang[$val] = 1.0; - } - - #return default language (highest q-value) - $qval = 0.0; - foreach ($lang as $key => $value) { - if ($value > $qval) { - $qval = (float)$value; - $deflang = $key; - } - } - } - return strtolower($deflang); -} -$language=getDefaultLanguage(); -echo "Your browser preferred language is: '".$language."'<br>"; - -//get the first and second part of the language code -if(strpos($language,'_')!==false) -{ - $language=substr($language,0,strpos($language,'_')); - $lang_dialect=substr($language,strpos($language,'_')); -} -elseif(strpos($language,'-')!==false) -{ - $language=substr($language,0,strpos($language,'-')); - $lang_dialect=substr($language,strpos($language,'-')); -} -if(!isset($lang_dialect)) -{ - $lang_dialect=$language; -} -$tmplangcode=$language.'-'.strtolower($lang_dialect); -if(!file_exists('include/locale/'.$tmplangcode)||!is_dir('include/locale/'.$tmplangcode)) -{ - $tmplangcode=$language.'_'.strtolower($lang_dialect); - if(!file_exists('include/locale/'.$tmplangcode)||!is_dir('include/locale/'.$tmplangcode)) - { - $tmplangcode=$language.'_'.strtoupper($lang_dialect); - if(!file_exists('include/locale/'.$tmplangcode)||!is_dir('include/locale/'.$tmplangcode)) - { - $tmplangcode=$language.'-'.strtoupper($lang_dialect); - if(!file_exists('include/locale/'.$tmplangcode)||!is_dir('include/locale/'.$tmplangcode)) - { - if(!file_exists('include/locale/'.$language)||!is_dir('include/locale/'.$language)) //check short langcode - { - $language='en'; //set as default - } - } - else - { - $language=$tmplangcode; - } - } - else - { - $language=$tmplangcode; - } - } - else - { - $language=$tmplangcode; - } -} -else -{ - $language=$tmplangcode; -} -//check if a redirect file is in there -if(file_exists('include/locale/'.$language.'/redirect')) -{ - $f = fopen('include/locale/'.$language.'/redirect','r'); - if($f!==false) - { - $line = fgets($f); - if(strlen($line)>=2) //safety check - { - echo "using the redirect file include/locale/".$language."/redirect<br>"; - $language=$line; //redirect language - echo "redirecting to '".$language."'<br>"; - } - fclose($f); - } -} - -echo "The following folder will be used to translate your osticket: '".$language."'"; - - -$old_error_reporting = error_reporting(); -error_reporting (E_ERROR); -$f = fopen('include/locale/'.$language.'/LC_MESSAGES/messages.mo', 'r'); -$meta = stream_get_meta_data($f); -if($meta['mode']==NULL) -{ - echo '<br><b>ERROR: The translation file "include/locale/'.$language.'/LC_MESSAGES/messages.mo" isn\'t readable, check permissions.</b><br>'; -} -else -{ - fclose($f); -} -error_reporting($old_error_reporting); -?> \ No newline at end of file