Also various fixes for clean phan run Update config base for array type host settings and no long single entries
157 lines
3.9 KiB
PHP
157 lines
3.9 KiB
PHP
<?php declare(strict_types=1);
|
|
/*********************************************************************
|
|
* AUTHOR: Clemens Schwaighofer
|
|
* CREATED: 2004/11/18
|
|
* VERSION: 1.0.0
|
|
* RELEASED LICENSE: GNU GPL 3
|
|
* SHORT DESCRIPTION:
|
|
* init class for gettext. Original was just a function & var setting include for wordpress.
|
|
* I changed that to a class to be more portable with my style of coding
|
|
*
|
|
* PUBLIC VARIABLES
|
|
*
|
|
* PRIVATE VARIABLES
|
|
*
|
|
* PUBLIC METHODS
|
|
* __: returns string (translated or original if not found)
|
|
* __e: echos out string (translated or original if not found)
|
|
* __ngettext: should return plural. never tested this.
|
|
*
|
|
* PRIVATE METHODS
|
|
*
|
|
* HISTORY:
|
|
* 2005/10/17 (cs) made an on the fly switch method (reload of lang)
|
|
*********************************************************************/
|
|
|
|
namespace CoreLibs\Language;
|
|
|
|
use \CoreLibs\Language\Core\FileReader;
|
|
use \CoreLibs\Language\Core\GetTextReader;
|
|
|
|
class L10n extends \CoreLibs\Basic
|
|
{
|
|
private $lang = '';
|
|
private $mofile = '';
|
|
private $input;
|
|
private $l10n;
|
|
|
|
/**
|
|
* class constructor call for language getstring
|
|
* @param string $lang language name (optional), fallback is en
|
|
* @param string $path path, if empty fallback on default internal path
|
|
* @param int|integer $set_control_flag control flags for Basic class set/get checks
|
|
*/
|
|
public function __construct(string $lang = '', string $path = '', int $set_control_flag = 0)
|
|
{
|
|
parent::__construct($set_control_flag);
|
|
if (!$lang) {
|
|
$this->lang = 'en';
|
|
} else {
|
|
$this->lang = $lang;
|
|
}
|
|
|
|
// override path check
|
|
if (!is_dir($path)) {
|
|
$path = BASE.INCLUDES.LANG.CONTENT_PATH;
|
|
}
|
|
|
|
$this->mofile = $path.$this->lang.".mo";
|
|
|
|
// check if get a readable mofile
|
|
if (is_readable($this->mofile)) {
|
|
$this->input = new FileReader($this->mofile);
|
|
} else {
|
|
$this->input = false;
|
|
}
|
|
$this->l10n = new GetTextReader($this->input);
|
|
}
|
|
|
|
/**
|
|
* reloads the mofile, if the location of the lang file changes
|
|
* @param string $lang language to reload data
|
|
* @param string $path optional path, if not set fallback on internal
|
|
* @return bool successfull reload true/false
|
|
*/
|
|
public function l10nReloadMOfile(string $lang, string $path = ''): bool
|
|
{
|
|
$success = false;
|
|
$old_mofile = $this->mofile;
|
|
$old_lang = $this->lang;
|
|
|
|
$this->lang = $lang;
|
|
|
|
// override path check
|
|
if (!is_dir($path)) {
|
|
$path = BASE.INCLUDES.LANG.CONTENT_PATH;
|
|
}
|
|
|
|
$this->mofile = $path.$this->lang.".mo";
|
|
|
|
// check if get a readable mofile
|
|
if (is_readable($this->mofile)) {
|
|
$this->input = new FileReader($this->mofile);
|
|
$this->l10n = new GetTextReader($this->input);
|
|
// we successfully loaded
|
|
$success = true;
|
|
} else {
|
|
// else fall back to the old ones
|
|
$this->mofile = $old_mofile;
|
|
$this->lang = $old_lang;
|
|
}
|
|
return $success;
|
|
}
|
|
|
|
/**
|
|
* translates a string and returns translated text
|
|
* @param string $text text to translate
|
|
* @return string translated text
|
|
*/
|
|
public function __($text): string
|
|
{
|
|
return $this->l10n->translate($text);
|
|
}
|
|
|
|
/**
|
|
* prints translated string out to the screen
|
|
* @param string $text text to translate
|
|
* @return void has no return
|
|
*/
|
|
public function __e($text): void
|
|
{
|
|
echo $this->l10n->translate($text);
|
|
}
|
|
|
|
// Return the plural form.
|
|
/**
|
|
* Return the plural form.
|
|
* @param string $single string for single word
|
|
* @param string $plural string for plural word
|
|
* @param string $number number value
|
|
* @return string translated plural string
|
|
*/
|
|
public function __ngettext($single, $plural, $number)
|
|
{
|
|
return $this->l10n->ngettext($single, $plural, $number);
|
|
}
|
|
|
|
/**
|
|
* get current set language
|
|
* @return string current set language string
|
|
*/
|
|
public function __getLang()
|
|
{
|
|
return $this->lang;
|
|
}
|
|
|
|
/**
|
|
* get current set mo file
|
|
* @return string current set mo language file
|
|
*/
|
|
public function __getMoFile()
|
|
{
|
|
return $this->mofile;
|
|
}
|
|
}
|
|
|
|
// __END__
|