phpci/PHPCI/Helper/Lang.php

97 lines
2.3 KiB
PHP
Raw Normal View History

2014-12-04 11:23:10 +01:00
<?php
/**
* PHPCI - Continuous Integration for PHP
*
* @copyright Copyright 2014, Block 8 Limited.
* @license https://github.com/Block8/PHPCI/blob/master/LICENSE.md
* @link https://www.phptesting.org/
*/
namespace PHPCI\Helper;
use b8\Config;
class Lang
{
protected static $language = null;
protected static $strings = array();
public static function get($string)
{
$vars = func_get_args();
if (array_key_exists($string, self::$strings)) {
$vars[0] = self::$strings[$string];
return call_user_func_array('sprintf', $vars);
}
return '%%MISSING STRING: ' . $string . '%%';
}
2014-12-04 12:14:04 +01:00
public static function out()
{
print call_user_func_array(array('PHPCI\Helper\Lang', 'get'), func_get_args());
}
public static function getLanguage()
{
return self::$language;
}
2014-12-04 11:23:10 +01:00
public static function getStrings()
{
return self::$strings;
}
public static function init(Config $config)
{
2014-12-04 12:14:04 +01:00
// Try user language:
2014-12-04 12:42:21 +01:00
if (isset($_SERVER) && array_key_exists('HTTP_ACCEPT_LANGUAGE', $_SERVER)) {
$langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
2014-12-04 12:14:04 +01:00
foreach ($langs as $lang) {
$parts = explode(';', $lang);
self::$language = strtolower($parts[0]);
2014-12-04 12:42:21 +01:00
self::$strings = self::loadLanguage();
2014-12-04 11:23:10 +01:00
2014-12-04 12:42:21 +01:00
if (!is_null(self::$strings)) {
return;
}
2014-12-04 12:14:04 +01:00
}
}
// Try the installation default language:
self::$language = $config->get('phpci.default_language', null);
if (!is_null(self::$language)) {
2014-12-04 11:23:10 +01:00
self::$strings = self::loadLanguage();
2014-12-04 12:14:04 +01:00
if (!is_null(self::$strings)) {
return;
}
2014-12-04 11:23:10 +01:00
}
2014-12-04 12:14:04 +01:00
// Fall back to en-GB:
self::$language = 'en-gb';
self::$strings = self::loadLanguage();
2014-12-04 11:23:10 +01:00
}
protected static function loadLanguage()
{
$langFile = PHPCI_DIR . 'PHPCI/Languages/lang.' . self::$language . '.php';
if (!file_exists($langFile)) {
return null;
}
require_once($langFile);
if (is_null($strings) || !is_array($strings) || !count($strings)) {
return null;
}
return $strings;
}
2014-12-04 14:08:48 +01:00
}