31
2
mirror of https://github.com/joomla-extensions/jedchecker.git synced 2024-09-28 04:59:04 +00:00

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

View File

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