Add force reload param to load method

This commit is contained in:
John Botella 2020-09-10 10:41:16 +02:00
parent 87d9dfa009
commit 59d5391c2a
2 changed files with 14 additions and 63 deletions

View File

@ -163,18 +163,19 @@ class Translate
*
* Value for hash are: 1:Loaded from disk, 2:Not found, 3:Loaded from cache
*
* @param string $domain File name to load (.lang file). Must be "file" or "file@module" for module language files:
* If $domain is "file@module" instead of "file" then we look for module lang file
* in htdocs/custom/modules/mymodule/langs/code_CODE/file.lang
* then in htdocs/module/langs/code_CODE/file.lang instead of htdocs/langs/code_CODE/file.lang
* @param integer $alt 0 (try xx_ZZ then 1), 1 (try xx_XX then 2), 2 (try en_US)
* @param int $stopafterdirection Stop when the DIRECTION tag is found (optimize speed)
* @param int $forcelangdir To force a different lang directory
* @param int $loadfromfileonly 1=Do not load overwritten translation from file or old conf.
* @return int <0 if KO, 0 if already loaded or loading not required, >0 if OK
* @param string $domain File name to load (.lang file). Must be "file" or "file@module" for module language files:
* If $domain is "file@module" instead of "file" then we look for module lang file
* in htdocs/custom/modules/mymodule/langs/code_CODE/file.lang
* then in htdocs/module/langs/code_CODE/file.lang instead of htdocs/langs/code_CODE/file.lang
* @param integer $alt 0 (try xx_ZZ then 1), 1 (try xx_XX then 2), 2 (try en_US)
* @param int $stopafterdirection Stop when the DIRECTION tag is found (optimize speed)
* @param int $forcelangdir To force a different lang directory
* @param int $loadfromfileonly 1=Do not load overwritten translation from file or old conf.
* @param int $forceloadifalreadynotfound Force attempt to reload lang file if it was previously not found
* @return int <0 if KO, 0 if already loaded or loading not required, >0 if OK
* @see loadLangs()
*/
public function load($domain, $alt = 0, $stopafterdirection = 0, $forcelangdir = '', $loadfromfileonly = 0)
public function load($domain, $alt = 0, $stopafterdirection = 0, $forcelangdir = '', $loadfromfileonly = 0, $forceloadifalreadynotfound = 0)
{
global $conf,$db;
@ -205,7 +206,8 @@ class Translate
}
// Check cache
if (! empty($this->_tab_loaded[$newdomain])) // File already loaded for this domain
if (! empty($this->_tab_loaded[$newdomain])
&& ($this->_tab_loaded[$newdomain] != 2 || empty($forceloadifalreadynotfound)) ) // File already loaded and found and not forced for this domain
{
//dol_syslog("Translate::Load already loaded for newdomain=".$newdomain);
return 0;
@ -388,55 +390,6 @@ class Translate
return 1;
}
/**
* re-load translation key-value for a particular file, into a memory array.
* If data for file already loaded, do nothing.
* All data in translation array are stored in UTF-8 format.
* tab_loaded is completed with $domain key.
* rule "we keep first entry found with we keep last entry found" so it is probably not what you want to do.
*
* Value for hash are: 1:Loaded from disk, 2:Not found, 3:Loaded from cache
*
* @param string $domain File name to load (.lang file). Must be "file" or "file@module" for module language files:
* If $domain is "file@module" instead of "file" then we look for module lang file
* in htdocs/custom/modules/mymodule/langs/code_CODE/file.lang
* then in htdocs/module/langs/code_CODE/file.lang instead of htdocs/langs/code_CODE/file.lang
* @param integer $alt 0 (try xx_ZZ then 1), 1 (try xx_XX then 2), 2 (try en_US)
* @param int $stopafterdirection Stop when the DIRECTION tag is found (optimize speed)
* @param int $forcelangdir To force a different lang directory
* @param int $loadfromfileonly 1=Do not load overwritten translation from file or old conf.
* @return int <0 if KO, 0 if loading not required, >0 if OK
* @see loadLangs()
*/
public function reload($domain, $alt = 0, $stopafterdirection = 0, $forcelangdir = '', $loadfromfileonly = 0)
{
// Check parameters
if (empty($domain)) {
dol_print_error('', get_class($this) . "::Load ErrorWrongParameters");
return -1;
}
if ($this->defaultlang == 'none_NONE') return 0; // Special language code to not translate keys
$newdomain = $domain;
// Search if a module directory name is provided into lang file name
$regs = array();
if (preg_match('/^([^@]+)@([^@]+)$/i', $domain, $regs)) {
$newdomain = $regs[1];
}
// Check cache and remove it
if (!empty($this->_tab_loaded[$newdomain])) // File already loaded for this domain
{
unset($this->_tab_loaded[$newdomain]);
}
return $this->load($domain, $alt, $stopafterdirection, $forcelangdir, $loadfromfileonly);
}
/**
* Load translation key-value from database into a memory array.
* If data already loaded, do nothing.

View File

@ -1057,9 +1057,7 @@ class Cronjob extends CommonObject
if (!$error)
{
$result = $langs->load($this->module_name);
if($result<0){
$result = $langs->reload($this->module_name.'@'.$this->module_name);
}
$result = $langs->load($this->module_name.'@'.$this->module_name, 0, 0, '', 0, 1);
if ($result < 0) // If technical error
{