// Refacto of lang functions (all code moved in Translate class)
This commit is contained in:
@@ -0,0 +1,181 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Open Software License (OSL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/osl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2011 PrestaShop SA
|
||||
* @version Release: $Revision$
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
/**
|
||||
* @since 1.5.0
|
||||
*/
|
||||
class TranslateCore
|
||||
{
|
||||
/**
|
||||
* Get a translation for an admin controller
|
||||
*
|
||||
* @param $string
|
||||
* @param string $class
|
||||
* @param bool $addslashes
|
||||
* @param bool $htmlentities
|
||||
* @return string
|
||||
*/
|
||||
public static function getAdminTranslation($string, $class = 'AdminTab', $addslashes = false, $htmlentities = true)
|
||||
{
|
||||
static $modules_tabs = null;
|
||||
|
||||
// @todo remove global keyword in translations files and use static
|
||||
global $_LANGADM;
|
||||
|
||||
if (!isset($modules_tabs))
|
||||
$modules_tabs = Tab::getModuleTabList();
|
||||
|
||||
if (!is_array($_LANGADM))
|
||||
{
|
||||
$iso = Context::getContext()->language->iso_code;
|
||||
include_once(_PS_TRANSLATIONS_DIR_.$iso.'/admin.php');
|
||||
}
|
||||
|
||||
if (isset($modules_tabs[strtolower($class)]))
|
||||
{
|
||||
$class_name_controller = $class.'controller';
|
||||
// if the class is extended by a module, use modules/[module_name]/xx.php lang file
|
||||
if (class_exists($class_name_controller) && Module::getModuleNameFromClass($class_name_controller))
|
||||
{
|
||||
$string = str_replace('\'', '\\\'', $string);
|
||||
return Translate::getModuleTranslation(Module::$classInModule[$class_name_controller], $string, $class);
|
||||
}
|
||||
}
|
||||
$key = md5(str_replace('\'', '\\\'', $string));
|
||||
// retrocomp : if value is not set, try with "AdminTab" as prefix.
|
||||
// @todo : change AdminTab to Helper
|
||||
|
||||
if (isset($_LANGADM[$class.$key]))
|
||||
$str = $_LANGADM[$class.$key];
|
||||
else if (isset($_LANGADM['AdminController'.$key]))
|
||||
$str = $_LANGADM['AdminController'.$key];
|
||||
else if (isset($_LANGADM['Helper'.$key]))
|
||||
$str = $_LANGADM['Helper'.$key];
|
||||
else if (isset($_LANGADM['AdminTab'.$key]))
|
||||
$str = $_LANGADM['AdminTab'.$key];
|
||||
else
|
||||
// note in 1.5, some translations has moved from AdminXX to helper/*.tpl
|
||||
$str = $string;
|
||||
|
||||
$str = $htmlentities ? htmlentities($str, ENT_QUOTES, 'utf-8') : $str;
|
||||
return str_replace('"', '"', ($addslashes ? addslashes($str) : stripslashes($str)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a translation for a module
|
||||
*
|
||||
* @param string|Module $module
|
||||
* @param string $string
|
||||
* @param string $source
|
||||
* @return string
|
||||
*/
|
||||
public static function getModuleTranslation($module, $string, $source)
|
||||
{
|
||||
global $_MODULES, $_MODULE;
|
||||
static $lang_cache = array();
|
||||
|
||||
if ($module instanceof Module)
|
||||
{
|
||||
$name = $module->name;
|
||||
$local_path = $module->getLocalPath();
|
||||
}
|
||||
else
|
||||
{
|
||||
$name = $module;
|
||||
$local_path = _PS_MODULE_DIR_.$module.'/';
|
||||
}
|
||||
|
||||
// @retrocompatibility with translations files in module root
|
||||
if (Tools::file_exists_cache($local_path.'/translations/'.Context::getContext()->language->iso_code.'.php'))
|
||||
$file = $local_path.'/translations/'.Context::getContext()->language->iso_code.'.php';
|
||||
else
|
||||
$file = $local_path.'/'.Context::getContext()->language->iso_code.'.php';
|
||||
|
||||
if (Tools::file_exists_cache($file) && include_once($file))
|
||||
$_MODULES = !empty($_MODULES) ? array_merge($_MODULES, $_MODULE) : $_MODULE;
|
||||
|
||||
$string = str_replace('\'', '\\\'', $string);
|
||||
|
||||
$cache_key = $name.'|'.$string.'|'.$source;
|
||||
if (!isset($lang_cache[$cache_key]))
|
||||
{
|
||||
if (!is_array($_MODULES))
|
||||
return str_replace('"', '"', $string);
|
||||
|
||||
// set array key to lowercase for 1.3 compatibility
|
||||
$_MODULES = array_change_key_case($_MODULES);
|
||||
$currentKey = '<{'.strtolower($name).'}'.strtolower(_THEME_NAME_).'>'.strtolower($source).'_'.md5($string);
|
||||
$defaultKey = '<{'.strtolower($name).'}prestashop>'.strtolower($source).'_'.md5($string);
|
||||
|
||||
if (isset($_MODULES[$currentKey]))
|
||||
$ret = stripslashes($_MODULES[$currentKey]);
|
||||
elseif (isset($_MODULES[Tools::strtolower($currentKey)]))
|
||||
$ret = stripslashes($_MODULES[Tools::strtolower($currentKey)]);
|
||||
elseif (isset($_MODULES[$defaultKey]))
|
||||
$ret = stripslashes($_MODULES[$defaultKey]);
|
||||
elseif (isset($_MODULES[Tools::strtolower($defaultKey)]))
|
||||
$ret = stripslashes($_MODULES[Tools::strtolower($defaultKey)]);
|
||||
else
|
||||
$ret = stripslashes($string);
|
||||
|
||||
$lang_cache[$cache_key] = str_replace('"', '"', $ret);
|
||||
}
|
||||
return $lang_cache[$cache_key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a translation for a PDF
|
||||
*
|
||||
* @param string $string
|
||||
* @return string
|
||||
*/
|
||||
public static function getPdfTranslation($string)
|
||||
{
|
||||
global $_LANGPDF;
|
||||
|
||||
$iso = Context::getContext()->language->iso_code;
|
||||
if (!Validate::isLanguageIsoCode($iso))
|
||||
throw PrestaShopException('Invalid iso lang!');
|
||||
|
||||
$filename = _PS_THEME_DIR_.'pdf/lang/'.$iso.'.php';
|
||||
|
||||
if (Tools::file_exists_cache($filename))
|
||||
@include_once($filename);
|
||||
|
||||
$key = 'PDF'.md5($string);
|
||||
$lang_array = $_LANGPDF;
|
||||
|
||||
$msg = $string;
|
||||
if (is_array($lang_array) && key_exists($key, $lang_array))
|
||||
$msg = $lang_array[$key];
|
||||
elseif (is_array($lang_array) && key_exists(Tools::strtolower($key), $lang_array))
|
||||
$msg = $lang_array[Tools::strtolower($key)];
|
||||
|
||||
return $msg;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user