add support of "modern" language filenames (without language tag prefix)

This commit is contained in:
Denis Ryabov 2023-07-28 09:30:46 +04:00
parent 4d59cc6c87
commit 16cb7c71c5
1 changed files with 17 additions and 11 deletions

View File

@ -268,12 +268,12 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
* Locate and load extension's .sys.ini translation file
*
* @param SimpleXMLElement $xml Extension's XML manifest
* @param string $langDir The basepath
* @param string $rootDir The basepath
* @param string $langTag The language to load
*
* @return void
*/
protected function loadExtensionLanguage($xml, $langDir, $langTag = 'en-GB')
protected function loadExtensionLanguage($xml, $rootDir, $langTag = 'en-GB')
{
// Get extension's element name (simulates work of Joomla's installer)
$extension = JEDCheckerHelper::getElementName($xml);
@ -334,19 +334,25 @@ class JedcheckerRulesXMLinfo extends JEDcheckerRule
$lookupLangDirs = array_unique($lookupLangDirs);
$lookupLangFiles = array(
$langTag. '.' . $extension . '.sys.ini', // classical filename
$extension . '.sys.ini', // modern filename
);
// Looking for language file in specified directories
foreach ($lookupLangDirs as $dir)
{
$langSysFile =
$langDir . '/' .
($dir === '' ? '' : $dir . '/') .
$langTag. '.' . $extension . '.sys.ini';
if (is_file($langSysFile))
foreach ($lookupLangFiles as $file)
{
$loadLanguage = new ReflectionMethod($lang, 'loadLanguage');
$loadLanguage->setAccessible(true);
$loadLanguage->invoke($lang, $langSysFile, $extension);
break;
$langSysFile = $rootDir . '/' . ($dir === '' ? '' : $dir . '/') . $file;
if (is_file($langSysFile))
{
$loadLanguage = new ReflectionMethod($lang, 'loadLanguage');
$loadLanguage->setAccessible(true);
$loadLanguage->invoke($lang, $langSysFile, $extension);
return;
}
}
}
}