Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace OxidEsales\euro\langmanager\core;
- use OxidEsales\euro\langmanager\models;
- class Langmanager_Oxlang extends Langmanager_Oxlang_parent
- {
- /**
- * Appends module lang or options files if exists
- *
- * @param array $aLangFiles existing language files
- * @param array $aModulePaths module language file paths
- * @param string $sLang language abbreviation
- * @param bool $blForAdmin add files for admin
- *
- * @return array
- */
- protected function _appendModuleLangFiles($aLangFiles, $aModulePaths, $sLang, $blForAdmin = false)
- {
- if (is_array($aModulePaths)) {
- $oConfig = $this->getConfig();
- foreach ($aModulePaths as $sPath) {
- $sFullPath = $oConfig->getModulesDir() . $sPath;
- $sFullPath2 = $oConfig->getModulesDir() . $sPath;
- for ($i = 1; $i <= 2; $i++) {
- if ($i == 1) {
- $sFullPath .= ($blForAdmin) ? '/views/admin/' : '/translations/';
- $sFullPath .= $sLang;
- if (!is_dir($sFullPath)) {
- $sFullPath = $oConfig->getModulesDir() . $sPath;
- $sFullPath .= ($blForAdmin) ? '/out/admin/' : '/out/lang/';
- $sFullPath .= $sLang;
- }
- } elseif ($i == 2) {
- $sFullPath2 .= ($blForAdmin) ? '/application/views/admin/' : '/application/translations/';
- $sFullPath2 .= $sLang;
- if (!is_dir($sFullPath2)) {
- $sFullPath2 = $oConfig->getModulesDir() . $sPath;
- $sFullPath2 .= ($blForAdmin) ? '/out/admin/' : '/out/lang/';
- $sFullPath2 .= $sLang;
- }
- }
- // END deprecated
- $aLangFiles = $this->_appendLangFile($aLangFiles, $sFullPath);
- $aLangFiles2 = $this->_appendLangFile($aLangFiles, $sFullPath2);
- $aLangFiles = $aLangFiles + $aLangFiles2;
- $aLangFiles = array_unique($aLangFiles);
- }
- }
- }
- return $aLangFiles;
- }
- public function translateString($sStringToTranslate, $iLang = null, $blAdminMode = null)
- {
- $sIdent = $sStringToTranslate;
- // whethere to include translations from Lang files or not?
- $blUseLangfiledata = oxRegistry::getConfig()->getConfigParam('blUseLangfiledata');
- $iLang = $this->_getCacheLanguageId($blAdminMode, $iLang);
- $oModel = oxNew("ebox_langmanager_model");
- $sStringToTranslate1 = $oModel->getTranslatedString($sIdent, $iLang, $blAdminMode);
- if ($sStringToTranslate1) {
- if( $iLang == 2 )
- {
- return $sStringToTranslate1;
- }else{
- return mb_convert_encoding($sStringToTranslate1, 'UTF-8', 'ISO-8859-15');
- }
- } elseif (empty($sStringToTranslate1)) {
- // use language file translations
- if ($blUseLangfiledata) {
- // checking if in cache exist
- $aLang = $this->_getLangTranslationArray($iLang, $blAdminMode);
- if (isset($aLang[$sStringToTranslate])) {
- return $aLang[$sStringToTranslate];
- }
- // checking if in map exist
- $aMap = $this->_getLanguageMap($iLang, $blAdminMode);
- if (isset($aLang[$aMap[$sStringToTranslate]])) {
- return $aLang[$aMap[$sStringToTranslate]];
- }
- // checking if in theme options exist
- if (count($this->_aAdditionalLangFiles)) {
- $aLang = $this->_getLangTranslationArray($iLang, $blAdminMode, $this->_aAdditionalLangFiles);
- if (isset($aLang[$sStringToTranslate])) {
- return $aLang[$sStringToTranslate];
- }
- }
- }
- $sStringToTranslate = 'ERROR: Translation for ' . $sIdent . ' not found!';
- }
- return $sStringToTranslate;
- }
- }
- public function setLanguageFileData($iLang, $blAdmin)
- {
- $oDb = \OxidEsales\Eshop\Core\DatabaseProvider::getDb();
- if ($blAdmin) {
- $iType = 1;
- $aLangFiles = $this->_getAdminLangFilesPathArray($iLang);
- } else {
- $iType = 2;
- $aLangFiles = $this->_getLangFilesPathArray($iLang);
- }
- // foreach of the lang-files
- foreach ($aLangFiles as $langfile) {
- include $langfile;
- foreach ($aLang as $sIdent => $sValue) {
- // insert first only idents
- if ($sIdent != "charset" && $sIdent != "_aSeoReplaceChars") {
- $iQuery = "insert ignore into `ebox_langmanager` set `oxid` = md5('" . $sIdent . "'), `oxtype` = '" . $iType . "', `oxident` = '" . $sIdent . "', `oxcreated` = NOW()";
- $oDb->execute($iQuery);
- }
- // update the values for the idents
- $sColumn = "OXTRANSLATE_" . $iLang;
- $sValue = utf8_encode($sValue);
- $uQuery = "update `ebox_langmanager` set `" . $sColumn . "` = '" . addslashes($sValue) . "' where `oxident` = '" . $sIdent . "'";
- $oDb->execute($uQuery);
- }
- }
- }
- metadata - 'extend' => array(
- \OxidEsales\Eshop\Core\Language::class => \OxidEsales\euro\langmanager\core\Langmanager_Oxlang::class, )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement