bludit/bl-kernel/dblanguage.class.php

145 lines
3.2 KiB
PHP
Raw Normal View History

2015-05-05 01:00:01 +00:00
<?php defined('BLUDIT') or die('Bludit CMS.');
class dbLanguage extends dbJSON
{
2015-07-14 01:41:32 -03:00
public $data;
public $db;
public $currentLanguage;
public $dates;
2018-01-21 16:35:47 +01:00
public $specialChars;
2015-05-05 01:00:01 +00:00
function __construct($currentLanguage)
2015-05-05 01:00:01 +00:00
{
2015-06-28 23:51:48 -03:00
$this->data = array();
2015-07-14 01:41:32 -03:00
$this->db = array();
$this->currentLanguage = $currentLanguage;
2018-01-21 16:35:47 +01:00
$this->dates = array();
$this->specialChars = array();
2015-05-05 01:00:01 +00:00
// Load default language
$filename = PATH_LANGUAGES.DEFAULT_LANGUAGE_FILE;
if (Sanitize::pathFile($filename)) {
2015-07-14 01:41:32 -03:00
$Tmp = new dbJSON($filename, false);
2015-07-15 22:34:16 -03:00
$this->db = array_merge($this->db, $Tmp->db);
2015-06-28 23:51:48 -03:00
}
// If the user defined a new language replace the content of the default language
// If the new dictionary has missing keys this are going to take from the default language
$filename = PATH_LANGUAGES.$currentLanguage.'.json';
if (Sanitize::pathFile($filename) && (DEFAULT_LANGUAGE_FILE!==$currentLanguage.'.json')) {
2015-07-14 01:41:32 -03:00
$Tmp = new dbJSON($filename, false);
2015-07-15 22:34:16 -03:00
$this->db = array_merge($this->db, $Tmp->db);
2015-06-28 23:51:48 -03:00
}
2015-07-03 17:44:26 -03:00
// Language-data
2015-07-14 01:41:32 -03:00
$this->data = $this->db['language-data'];
2015-07-03 17:44:26 -03:00
unset($this->db['language-data']);
// Dates
2018-01-21 16:35:47 +01:00
if (isset($this->db['dates'])) {
$this->dates = $this->db['dates'];
unset($this->db['dates']);
}
// Special chars
if (isset($this->db['special-chars'])) {
$this->specialChars = $this->db['special-chars'];
unset($this->db['special-chars']);
}
2015-06-28 23:51:48 -03:00
}
public function locale()
2015-08-16 21:24:22 -03:00
{
if (isset($this->data['locale'])) {
return $this->data['locale'];
}
return $this->currentLanguage;
2015-08-16 21:24:22 -03:00
}
2017-09-05 23:46:45 +02:00
public function currentLanguage()
{
return $this->currentLanguage;
}
// Return the translation, if the translation doesn't exist returns the English translation
2015-07-03 19:36:37 -03:00
public function get($string)
2015-05-05 01:00:01 +00:00
{
2015-07-03 19:36:37 -03:00
$key = Text::lowercase($string);
2015-05-30 22:06:55 -03:00
$key = Text::replace(' ', '-', $key);
2015-05-05 01:00:01 +00:00
//file_put_contents(DEBUG_FILE, $key.PHP_EOL, FILE_APPEND);
2017-05-03 21:10:03 +02:00
if (isset($this->db[$key])) {
2015-05-05 01:00:01 +00:00
return $this->db[$key];
2015-07-14 01:41:32 -03:00
}
2015-05-05 01:00:01 +00:00
2017-10-04 00:00:54 +02:00
//file_put_contents(DEBUG_FILE, $key.PHP_EOL, FILE_APPEND);
return $string;
2015-05-05 01:00:01 +00:00
}
// Returns translation
2015-07-03 19:36:37 -03:00
public function g($string)
{
return $this->get($string);
}
// Print translation
2015-07-24 00:28:25 -03:00
public function printMe($string)
{
echo $this->get($string);
}
// Print translation
2015-07-03 19:36:37 -03:00
public function p($string)
2015-05-05 01:00:01 +00:00
{
2015-07-03 19:56:24 -03:00
echo $this->get($string);
2015-05-05 01:00:01 +00:00
}
// Add keys=>values to the current dicionary
// This method overwrite the key=>value
2015-07-03 17:44:26 -03:00
public function add($array)
{
2016-06-05 23:24:15 -03:00
$this->db = array_merge($array, $this->db);
2015-07-03 17:44:26 -03:00
}
2017-09-15 21:26:06 +02:00
/*
// Returns the item from language-data
2015-07-14 01:41:32 -03:00
public function getData($key)
{
if (isset($this->data[$key])) {
2015-07-14 01:41:32 -03:00
return $this->data[$key];
}
return false;
2015-07-14 01:41:32 -03:00
}
2017-09-15 21:26:06 +02:00
*/
2015-07-14 01:41:32 -03:00
// Returns an array with all dictionaries
2015-07-14 01:41:32 -03:00
public function getLanguageList()
{
2015-09-14 20:07:15 -03:00
$files = Filesystem::listFiles(PATH_LANGUAGES, '*', 'json');
2015-07-14 01:41:32 -03:00
$tmp = array();
foreach($files as $file) {
2015-07-14 01:41:32 -03:00
$t = new dbJSON($file, false);
if (isset($t->db['language-data']['native'])) {
$native = $t->db['language-data']['native'];
$locale = basename($file, '.json');
$tmp[$locale] = $native;
}
2015-07-14 01:41:32 -03:00
}
return $tmp;
}
// Returns array with all the dates and months
public function getDates()
{
return $this->dates;
}
2018-01-21 16:35:47 +01:00
// Returns array with all the special characters from this language
public function getSpecialChars()
{
return $this->specialChars;
}
}