Вход Регистрация
Файл: contao-3.5.8/system/modules/devtools/modules/ModuleLabels.php
Строк: 113
<?php

/**
 * Contao Open Source CMS
 *
 * Copyright (c) 2005-2016 Leo Feyer
 *
 * @license LGPL-3.0+
 */

namespace Contao;


/**
 * Back end module "missing labels".
 *
 * @author Leo Feyer <https://github.com/leofeyer>
 */
class ModuleLabels extends BackendModule
{

    
/**
     * Template
     * @var string
     */
    
protected $strTemplate = 'dev_labels';


    
/**
     * Generate the module
     */
    
protected function compile()
    {
        
System::loadLanguageFile('tl_labels');

        
$this->Template->label = $GLOBALS['TL_LANG']['tl_labels']['label'][0];
        
$this->Template->headline = sprintf($GLOBALS['TL_LANG']['tl_labels']['headline'], Input::get('id'));
        
$this->Template->help = (Config::get('showHelp') && strlen($GLOBALS['TL_LANG']['tl_labels']['label'][1])) ? $GLOBALS['TL_LANG']['tl_labels']['label'][1] : '';
        
$this->Template->submit = specialchars($GLOBALS['TL_LANG']['tl_labels']['submitBT']);

        
$strOptions = '';
        
$arrLanguages = $this->getLanguages();

        
// Get languages
        
foreach (scan(TL_ROOT . '/system/modules/core/languages') as $strLanguage)
        {
            if (
$strLanguage != 'en' && strncmp($strLanguage, '.', 1) !== 0)
            {
                
$strOptions .= sprintf('<option value="%s"%s>%s</option>', $strLanguage, (($strLanguage == Input::post('language') || $strLanguage == $GLOBALS['TL_LANGUAGE']) ? ' selected="selected"' : ''), $arrLanguages[$strLanguage]);
            }
        }

        
$this->Template->options = $strOptions;
        
$this->Template->base = Environment::get('base');
        
$this->Template->button = $GLOBALS['TL_LANG']['MSC']['backBT'];
        
$this->Template->selectAll = $GLOBALS['TL_LANG']['MSC']['selectAll'];
        
$this->Template->title = specialchars($GLOBALS['TL_LANG']['MSC']['backBTTitle']);
        
$this->Template->href = (Input::post('FORM_SUBMIT') == 'tl_labels') ? Environment::get('request') : $this->getReferer(true);
        
$this->Template->action = ampersand(Environment::get('request'));
        
$this->Template->warning = $GLOBALS['TL_LANG']['tl_labels']['warning'];
        
$this->Template->error = $GLOBALS['TL_LANG']['tl_labels']['error'];
        
$this->Template->ok = $GLOBALS['TL_LANG']['tl_labels']['ok'];

        
// Find missing labels
        
if (Input::post('FORM_SUBMIT') == 'tl_labels')
        {
            
$arrLang = array();
            
$lng = Input::post('language');

            foreach (
scan(TL_ROOT . '/system/modules') as $strDir)
            {
                
$strPath = 'system/modules/' . $strDir . '/languages/en';
                
$strLang = 'system/modules/' . $strDir . '/languages/' . $lng;

                
// Continue if language folder does not exists
                
if (!is_dir(TL_ROOT . '/' . $strPath))
                {
                    continue;
                }

                
// Scan folder
                
foreach (scan(TL_ROOT . '/' . $strPath) as $strFile)
                {
                    
// Continue if the file is not a language file
                    
if (substr($strFile, -4) != '.xlf')
                    {
                        continue;
                    }

                    
// Log missing files
                    
if (!file_exists(TL_ROOT . '/' . $strLang . '/' . $strFile))
                    {
                        
$arrLang[$strDir][$strFile] = null;
                        continue;
                    }

                    
$arrLang[$strDir][$strFile] = array();

                    
// Buffer the current labels
                    
$arrBuffer = $GLOBALS['TL_LANG'];

                    
// Include English file
                    
$GLOBALS['TL_LANG'] = array();
                    
System::convertXlfToPhp($strPath . '/' . $strFile, 'en', true);
                    
$arrOld = $GLOBALS['TL_LANG'];

                    
// Include foreign file
                    
$GLOBALS['TL_LANG'] = array();
                    
System::convertXlfToPhp($strLang . '/' . $strFile, $lng, true);
                    
$arrNew = $GLOBALS['TL_LANG'];

                    
// Restore the former labels
                    
$GLOBALS['TL_LANG'] = $arrBuffer;
                    unset(
$arrBuffer);

                    
// Check labels
                    
foreach ($arrOld as $k=>$v)
                    {
                        foreach (
$v as $kk=>$vv)
                        {
                            if (!
is_array($arrNew[$k]) || !array_key_exists($kk, $arrNew[$k]))
                            {
                                
$arrLang[$strDir][$strFile]["$GLOBALS['TL_LANG']['$k']['$kk']"] = $vv;
                            }
                        }
                    }
                }
            }

            
$this->Template->files = $arrLang;
            
$this->Template->headline .= ' - ' . $arrLanguages[Input::post('language')];
        }
    }
}
Онлайн: 1
Реклама