From f269960adcbe7f80ad052d207df62130661568a6 Mon Sep 17 00:00:00 2001 From: cgfhtw Date: Fri, 2 Aug 2024 14:13:41 +0200 Subject: [PATCH] FHC_Lang core class 1st draft --- application/core/FHC_Lang.php | 87 +++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 application/core/FHC_Lang.php diff --git a/application/core/FHC_Lang.php b/application/core/FHC_Lang.php new file mode 100644 index 000000000..e1548b409 --- /dev/null +++ b/application/core/FHC_Lang.php @@ -0,0 +1,87 @@ +_phrases[$language])) + $this->_phrases[$language] = []; + + $categories = []; + + if (is_array($langfile)) { + foreach ($langfile as $cat) + if (!isset($this->_phrases[$language][$cat])) + $categories[] = 'ci_' . $cat; + } else { + $categories[] = 'ci_' . $langfile; + } + + if ($categories) { + $ci =& get_instance(); + $ci->load->model('system/Phrase_model', 'PhraseModel'); + + $phrases = $ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, $language); + + $loadedPhrases = array_fill_keys($categories, []); + + foreach ($phrases->retval as $phrase) + if (!is_null($phrase->text) && in_array($phrase->category, $categories)) + $loadedPhrases[$phrase->category][$phrase->phrase] = $phrase->text; + + if ($language != DEFAULT_LANGUAGE) { + $defaultPhrases = $ci->PhraseModel->getPhrasesByCategoryAndLanguage($categories, DEFAULT_LANGUAGE); + if (hasData($phrases) && hasData($defaultPhrases)) { + foreach ($defaultPhrases->retval as $phrase) + if (!isset($loadedPhrases[$phrase->category][$phrase->phrase])) + $loadedPhrases[$phrase->category][$phrase->phrase] = $phrase->text; + } elseif (hasData($defaultPhrases)) { + foreach ($defaultPhrases->retval as $phrase) + if (!is_null($phrase->text) && in_array($phrase->category, $categories)) + $loadedPhrases[$phrase->category][$phrase->phrase] = $phrase->text; + } + } + foreach ($loadedPhrases as $cat => $phrases) + $this->_phrases[$language][$cat] = $phrases; + } + + $result = parent::load($langfile, strtolower($language), $return, $add_suffix, $alt_path); + + if ($return) { + if (is_array($langfile)) + foreach ($langfile as $cat) + $result = array_merge($result, $this->_phrases[$language]['ci_' . $cat]); + else + $result = array_merge($result, $this->_phrases[$language]['ci_' . $langfile]); + + } else { + if (is_array($langfile)) + foreach ($langfile as $cat) + $this->language = array_merge($this->language, $this->_phrases[$language]['ci_' . $cat]); + else + $this->language = array_merge($this->language, $this->_phrases[$language]['ci_' . $langfile]); + } + return $result; + } +}