Phalcon Framework 3.4.0

PDOException: SQLSTATE[HY000] [2002] Connection refused

/produccion/private/app/config/services.php (45)
#0PDO->__construct(mysql:host=devlearnydb.c2hp3t6punwt.sa-east-1.rds.amazonaws.com;dbname=c2_learny_produccion, admin, LearnyEc2SPdb, Array([1002] => SET NAMES 'UTF8', [3] => 2))
#1Phalcon\Db\Adapter\Pdo->connect(Array([host] => devlearnydb.c2hp3t6punwt.sa-east-1.rds.amazonaws.com, [username] => admin, [password] => LearnyEc2SPdb, [dbname] => c2_learny_produccion, [options] => Array([1002] => SET NAMES 'UTF8')))
#2Phalcon\Db\Adapter\Pdo->__construct(Array([host] => devlearnydb.c2hp3t6punwt.sa-east-1.rds.amazonaws.com, [username] => admin, [password] => LearnyEc2SPdb, [dbname] => c2_learny_produccion, [options] => Array([1002] => SET NAMES 'UTF8')))
/produccion/private/app/config/services.php (45)
<?php
 
use Core\Filter\HtmlToMarkdown;
use Core\Filter\MarkdownToHtml;
use Core\Filter\MultiEmail;
use Core\Filter\RemoveExtraBreakLines;
use Core\Filter\Sluggable;
use Core\Filter\ToNullOrInteger;
use Core\Filter\ValoresSeparadosPorComa;
use Core\Tag;
use Phalcon\Events\Event;
 
$di['tag'] = function () {
    Tag::setDocType(Tag::HTML5);
    Tag::setTitleSeparator(' - ');
 
    return new Tag();
};
 
$di['session'] = function () use ($config) {
    $session = new \Phalcon\Session\Adapter\Files(['uniqueId' => $config->session->unique_id]);
    $session->start();
 
    return $session;
};
 
$di['security'] = function () use ($di) {
    $security = new \Phalcon\Security();
    $security->setDI($di);
    $security->setWorkFactor(12);
 
    return $security;
};
 
$di['auth'] = function () {
    return new \Core\Security\Auth();
};
 
$di['url'] = function () {
    return new \Core\Mvc\Url();
};
 
$di['db'] = function () use ($config, $di) {
    $connection = new \Phalcon\Db\Adapter\Pdo\Mysql([
        "host"     => $config->database->host,
        "username" => $config->database->username,
        "password" => $config->database->password,
        "dbname"   => $config->database->dbname,
        "options"  => [
            \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
        ],
    ]);
 
    $connection->execute("SET time_zone = '-03:00'");
 
    $connection->setDialect(new \Phalcon\Db\Dialect\MysqlExtended());
 
    // agregamos un profiler
    if (isset($config->database->profiler) && $config->database->profiler === true) {
        $eventsManager = new \Phalcon\Events\Manager();
 
        if (!is_dir(APPLICATION_PATH . '/../logs/sql-profiler')) {
            mkdir(APPLICATION_PATH . '/../logs/sql-profiler', 0755, true);
        }
 
        $logger = new \Phalcon\Logger\Adapter\File(
            APPLICATION_PATH . '/../logs/sql-profiler/' . date("Y-m-d") . '.log',
            ['mode' => 'a+']
        );
        $profiler = $di->get('profiler');
 
        $eventsManager->attach(
            "db",
            function (Event $event, $connection) use ($logger, $profiler) {
                /* @var \Phalcon\Db\Adapter\Pdo\Mysql $connection */
                if ($event->getType() === "beforeQuery") {
                    $profiler->startProfile($connection->getSQLStatement(), $connection->getSqlVariables());
                }
 
                if ($event->getType() === "afterQuery") {
                    $profiler->stopProfile();
                    $profile = $profiler->getLastProfile();
 
                    $vars = arrayToString($profile->getSqlVariables(), ' - ');
 
                    $logger->info(
                        $connection->getSQLStatement()
                        . ' - ' . $profile->getTotalElapsedSeconds()
                        . ' ms. - ' . $vars
                    );
                }
            }
        );
        $connection->setEventsManager($eventsManager);
    }
 
    return $connection;
};
 
$di['translator'] = function () use ($di) {
    return new \Phalcon\Translate\Adapter\Database([
        'db'                     => $di->get('db'), // Here we're getting the database from DI
        'table'                  => 'idiomas_traducciones', // The table that is storing the translations
        'language'               => 'es', // Now we're getting the best language for the user
        'useIcuMessageFormatter' => true,
    ]);
};
 
// user components
$di['arrayFont'] = function () {
    return new \Core\Component\ArrayFont();
};
$di['configuracion'] = function () {
    return new \Core\Component\Configuracion();
};
$di['excel'] = function () {
    return new \Core\Component\Excel();
};
$di['fecha'] = function () {
    return new \Core\Component\Fecha();
};
 
$di['geoplugin'] = function () {
    return \Core\Component\Geoplugin::getInstance();
};
 
$di['headMeta'] = function () {
    return new \Core\Component\HeadMeta();
};
$di['mail'] = function () {
    return new \Core\Component\Mail();
};
$di['mensajes'] = function () {
    return new \Core\Component\Mensajes();
};
$di['serverInfo'] = function () {
    return new \Core\Component\ServerInfo();
};
$di['serverUrl'] = function () {
    return new \Core\Component\ServerUrl();
};
$di['thumbnail'] = function () {
    return new \Core\Component\Thumbnail();
};
$di['tokens'] = function () {
    return new \Core\Component\Token();
};
$di['traduccion'] = function () {
    return new \Core\Component\Traduccion();
};
$di['jobs'] = function () {
    return new \Core\Component\Jobs();
};
$di['workers'] = function () {
    return new \Core\Component\Workers();
};
 
$di['voltService'] = function ($view, $di) use ($config) {
 
    $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
 
    if (!is_dir($config->view->cache->dir)) {
        mkdir($config->view->cache->dir, 0755, true);
    }
 
    $volt->setOptions([
        "compiledPath"      => $config->view->cache->dir,
        "compiledSeparator" => "-",
        "compileAlways"     => true,
    ]);
 
    // funciones de traducción
    $volt->getCompiler()
        ->addFunction('_', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->simple(" . $translateKey . ")";
        })
        ->addFunction('__', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->plural(" . $translateKey . ")";
        });
 
    // traducción para fechas y horas
    $volt->getCompiler()
        ->addFunction('_date', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->fecha(" . $translateKey . ")";
        })
        ->addFunction('_time', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->hora(" . $translateKey . ")";
        })
        ->addFunction('_datetime', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->fechaYHora(" . $translateKey . ")";
        });
 
    // join keys
    $volt->getCompiler()->addFunction('joinKeysAndShiftFirstToLast', function ($arrays, $expression) {
        return 'joinKeysAndShiftFirstToLast(' . $arrays . ')';
    });
 
    // join keys
    $volt->getCompiler()->addFunction('currentAndNext', function ($arrays, $expression) {
        return 'currentAndNext(' . $arrays . ')';
    });
 
    // unset()
    $volt->getCompiler()->addFunction('unset', function ($arrays, $expression) {
        return 'unset(' . $arrays . ')';
    });
 
    // quitar saltos de linea
    $volt->getCompiler()->addFilter('nonl', function ($value) {
        return "preg_replace('/(\r|\n|\r\n)+/', ' ', " . $value . ")";
    });
 
    // aplicar comodines
    $volt->getCompiler()->addFilter('comodines', function ($value) {
        return "\$this->traduccion->aplicarComodines(" . $value . ")";
    });
 
    // inyectar widgets
    $volt->getCompiler()->addFilter('widgets', function ($value) {
        return "\$this->helper->widget->aplicar(" . $value . ")";
    });
 
    // cortar texto
    $volt->getCompiler()->addFilter('cut', function ($value) {
        return "cortarTexto(" . $value . ")";
    });
 
    // muestra decimales
    $volt->getCompiler()->addFilter('decimal', function ($argumentos, $expresion) {
 
        $valor = isset($expresion[0]['expr']['value']) ? $expresion[0]['expr']['value'] : $argumentos;
        $decimales = isset($expresion[1]['expr']['value']) ? (int) $expresion[1]['expr']['value'] : 2;
 
        return "number_format(" . $valor . ", " . $decimales . ", ',', '.')";
    });
 
    // convertir bytes a un valor entendible por humanos
    $volt->getCompiler()->addFilter('humanBytes', function ($value) {
        return "humanBytesConvert(" . $value . ")";
    });
 
    return $volt;
};
 
$di['log'] = function () use ($config, $di) {
    return new \Phalcon\Logger\Adapter\Database(
        'web',
        [
            'db'    => $di->get('db'),
            'table' => \Core\Model\Entity\Log::TABLE_NAME,
        ]
    );
};
 
$di['profiler'] = function () {
    return new \Phalcon\Db\Profiler();
};
 
$di['collectionManager'] = function () {
    return new Phalcon\Mvc\Collection\Manager();
};
 
$di['assets'] = function () {
    return new \Core\Assets\Manager();
};
 
$di['filter'] = function () {
    $filter = new \Phalcon\Filter();
    $filter->add(HtmlToMarkdown::class, new HtmlToMarkdown());
    $filter->add(MarkdownToHtml::class, new MarkdownToHtml());
    $filter->add(MultiEmail::class, new MultiEmail());
    $filter->add(RemoveExtraBreakLines::class, new RemoveExtraBreakLines());
    $filter->add(Sluggable::class, new Sluggable());
    $filter->add(ToNullOrInteger::class, new ToNullOrInteger());
    $filter->add(ValoresSeparadosPorComa::class, new ValoresSeparadosPorComa());
 
    return $filter;
};
 
$di['crypt'] = function () use ($config) {
    $crypt = new \Phalcon\Crypt();
    $crypt->setKey($config->secretKey);
 
    return $crypt;
};
 
$di['helper'] = function () {
    return new \Frontend\View\Helper();
};
#3App\Bootstrap->{closure}()
#4Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#5Phalcon\Di->get(db)
/produccion/private/app/config/services.php (102)
<?php
 
use Core\Filter\HtmlToMarkdown;
use Core\Filter\MarkdownToHtml;
use Core\Filter\MultiEmail;
use Core\Filter\RemoveExtraBreakLines;
use Core\Filter\Sluggable;
use Core\Filter\ToNullOrInteger;
use Core\Filter\ValoresSeparadosPorComa;
use Core\Tag;
use Phalcon\Events\Event;
 
$di['tag'] = function () {
    Tag::setDocType(Tag::HTML5);
    Tag::setTitleSeparator(' - ');
 
    return new Tag();
};
 
$di['session'] = function () use ($config) {
    $session = new \Phalcon\Session\Adapter\Files(['uniqueId' => $config->session->unique_id]);
    $session->start();
 
    return $session;
};
 
$di['security'] = function () use ($di) {
    $security = new \Phalcon\Security();
    $security->setDI($di);
    $security->setWorkFactor(12);
 
    return $security;
};
 
$di['auth'] = function () {
    return new \Core\Security\Auth();
};
 
$di['url'] = function () {
    return new \Core\Mvc\Url();
};
 
$di['db'] = function () use ($config, $di) {
    $connection = new \Phalcon\Db\Adapter\Pdo\Mysql([
        "host"     => $config->database->host,
        "username" => $config->database->username,
        "password" => $config->database->password,
        "dbname"   => $config->database->dbname,
        "options"  => [
            \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
        ],
    ]);
 
    $connection->execute("SET time_zone = '-03:00'");
 
    $connection->setDialect(new \Phalcon\Db\Dialect\MysqlExtended());
 
    // agregamos un profiler
    if (isset($config->database->profiler) && $config->database->profiler === true) {
        $eventsManager = new \Phalcon\Events\Manager();
 
        if (!is_dir(APPLICATION_PATH . '/../logs/sql-profiler')) {
            mkdir(APPLICATION_PATH . '/../logs/sql-profiler', 0755, true);
        }
 
        $logger = new \Phalcon\Logger\Adapter\File(
            APPLICATION_PATH . '/../logs/sql-profiler/' . date("Y-m-d") . '.log',
            ['mode' => 'a+']
        );
        $profiler = $di->get('profiler');
 
        $eventsManager->attach(
            "db",
            function (Event $event, $connection) use ($logger, $profiler) {
                /* @var \Phalcon\Db\Adapter\Pdo\Mysql $connection */
                if ($event->getType() === "beforeQuery") {
                    $profiler->startProfile($connection->getSQLStatement(), $connection->getSqlVariables());
                }
 
                if ($event->getType() === "afterQuery") {
                    $profiler->stopProfile();
                    $profile = $profiler->getLastProfile();
 
                    $vars = arrayToString($profile->getSqlVariables(), ' - ');
 
                    $logger->info(
                        $connection->getSQLStatement()
                        . ' - ' . $profile->getTotalElapsedSeconds()
                        . ' ms. - ' . $vars
                    );
                }
            }
        );
        $connection->setEventsManager($eventsManager);
    }
 
    return $connection;
};
 
$di['translator'] = function () use ($di) {
    return new \Phalcon\Translate\Adapter\Database([
        'db'                     => $di->get('db'), // Here we're getting the database from DI
        'table'                  => 'idiomas_traducciones', // The table that is storing the translations
        'language'               => 'es', // Now we're getting the best language for the user
        'useIcuMessageFormatter' => true,
    ]);
};
 
// user components
$di['arrayFont'] = function () {
    return new \Core\Component\ArrayFont();
};
$di['configuracion'] = function () {
    return new \Core\Component\Configuracion();
};
$di['excel'] = function () {
    return new \Core\Component\Excel();
};
$di['fecha'] = function () {
    return new \Core\Component\Fecha();
};
 
$di['geoplugin'] = function () {
    return \Core\Component\Geoplugin::getInstance();
};
 
$di['headMeta'] = function () {
    return new \Core\Component\HeadMeta();
};
$di['mail'] = function () {
    return new \Core\Component\Mail();
};
$di['mensajes'] = function () {
    return new \Core\Component\Mensajes();
};
$di['serverInfo'] = function () {
    return new \Core\Component\ServerInfo();
};
$di['serverUrl'] = function () {
    return new \Core\Component\ServerUrl();
};
$di['thumbnail'] = function () {
    return new \Core\Component\Thumbnail();
};
$di['tokens'] = function () {
    return new \Core\Component\Token();
};
$di['traduccion'] = function () {
    return new \Core\Component\Traduccion();
};
$di['jobs'] = function () {
    return new \Core\Component\Jobs();
};
$di['workers'] = function () {
    return new \Core\Component\Workers();
};
 
$di['voltService'] = function ($view, $di) use ($config) {
 
    $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
 
    if (!is_dir($config->view->cache->dir)) {
        mkdir($config->view->cache->dir, 0755, true);
    }
 
    $volt->setOptions([
        "compiledPath"      => $config->view->cache->dir,
        "compiledSeparator" => "-",
        "compileAlways"     => true,
    ]);
 
    // funciones de traducción
    $volt->getCompiler()
        ->addFunction('_', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->simple(" . $translateKey . ")";
        })
        ->addFunction('__', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->plural(" . $translateKey . ")";
        });
 
    // traducción para fechas y horas
    $volt->getCompiler()
        ->addFunction('_date', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->fecha(" . $translateKey . ")";
        })
        ->addFunction('_time', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->hora(" . $translateKey . ")";
        })
        ->addFunction('_datetime', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->fechaYHora(" . $translateKey . ")";
        });
 
    // join keys
    $volt->getCompiler()->addFunction('joinKeysAndShiftFirstToLast', function ($arrays, $expression) {
        return 'joinKeysAndShiftFirstToLast(' . $arrays . ')';
    });
 
    // join keys
    $volt->getCompiler()->addFunction('currentAndNext', function ($arrays, $expression) {
        return 'currentAndNext(' . $arrays . ')';
    });
 
    // unset()
    $volt->getCompiler()->addFunction('unset', function ($arrays, $expression) {
        return 'unset(' . $arrays . ')';
    });
 
    // quitar saltos de linea
    $volt->getCompiler()->addFilter('nonl', function ($value) {
        return "preg_replace('/(\r|\n|\r\n)+/', ' ', " . $value . ")";
    });
 
    // aplicar comodines
    $volt->getCompiler()->addFilter('comodines', function ($value) {
        return "\$this->traduccion->aplicarComodines(" . $value . ")";
    });
 
    // inyectar widgets
    $volt->getCompiler()->addFilter('widgets', function ($value) {
        return "\$this->helper->widget->aplicar(" . $value . ")";
    });
 
    // cortar texto
    $volt->getCompiler()->addFilter('cut', function ($value) {
        return "cortarTexto(" . $value . ")";
    });
 
    // muestra decimales
    $volt->getCompiler()->addFilter('decimal', function ($argumentos, $expresion) {
 
        $valor = isset($expresion[0]['expr']['value']) ? $expresion[0]['expr']['value'] : $argumentos;
        $decimales = isset($expresion[1]['expr']['value']) ? (int) $expresion[1]['expr']['value'] : 2;
 
        return "number_format(" . $valor . ", " . $decimales . ", ',', '.')";
    });
 
    // convertir bytes a un valor entendible por humanos
    $volt->getCompiler()->addFilter('humanBytes', function ($value) {
        return "humanBytesConvert(" . $value . ")";
    });
 
    return $volt;
};
 
$di['log'] = function () use ($config, $di) {
    return new \Phalcon\Logger\Adapter\Database(
        'web',
        [
            'db'    => $di->get('db'),
            'table' => \Core\Model\Entity\Log::TABLE_NAME,
        ]
    );
};
 
$di['profiler'] = function () {
    return new \Phalcon\Db\Profiler();
};
 
$di['collectionManager'] = function () {
    return new Phalcon\Mvc\Collection\Manager();
};
 
$di['assets'] = function () {
    return new \Core\Assets\Manager();
};
 
$di['filter'] = function () {
    $filter = new \Phalcon\Filter();
    $filter->add(HtmlToMarkdown::class, new HtmlToMarkdown());
    $filter->add(MarkdownToHtml::class, new MarkdownToHtml());
    $filter->add(MultiEmail::class, new MultiEmail());
    $filter->add(RemoveExtraBreakLines::class, new RemoveExtraBreakLines());
    $filter->add(Sluggable::class, new Sluggable());
    $filter->add(ToNullOrInteger::class, new ToNullOrInteger());
    $filter->add(ValoresSeparadosPorComa::class, new ValoresSeparadosPorComa());
 
    return $filter;
};
 
$di['crypt'] = function () use ($config) {
    $crypt = new \Phalcon\Crypt();
    $crypt->setKey($config->secretKey);
 
    return $crypt;
};
 
$di['helper'] = function () {
    return new \Frontend\View\Helper();
};
#6App\Bootstrap->{closure}()
#7Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#8Phalcon\Di->get(translator)
/produccion/private/app/modules/Core/Component/Traduccion.php (1164)
<?php
 
namespace Core\Component;
 
use Core\Model\Entity\Idioma;
use Core\Model\Manager\Idiomas;
use Exception;
use Phalcon\Mvc\User\Component;
use Phalcon\Translate\Adapter\Database;
 
/**
 * Class Traduccion
 * Componente de traducción para el sistema
 * Índice de elementos a ser traducidos por cada idioma
 *
 * @package Core\Component
 */
class Traduccion extends Component
{
    // generales
    const SITIO_NOMBRE = 'sitio_nombre';
    const SITIO_NOMBRE_EXTENDIDO = 'sitio_nombre_extendido';
    const SITIO_CERRADO_MENSAJE = 'sitio_cerrado_mensaje';
 
    // pie del sitio
    const SITIO_PIE_COPYRIGHT = 'sitio_pie_copyright';
    const SITIO_PIE_REDES_SOCIALES_TITULO = 'sitio_pie_redes_sociales_titulo';
 
    // Paginado
    const PAGINADO_PRIMERA = 'paginado_primera';
    const PAGINADO_ANTERIOR = 'paginado_anterior';
    const PAGINADO_SIGUIENTE = 'paginado_siguiente';
    const PAGINADO_ULTIMA = 'paginado_ultima';
    const PAGINADO_MODIFICADOR_DE_TITULO = 'paginado_modificador_de_titulo';
    const PAGINADO_MODIFICADOR_DE_DESCRIPTION = 'paginado_modificador_de_description';
 
    // Compartir en redes
    const COMPARTIR_EN_REDES_TITULO = 'compartir_en_redes_titulo';
 
    // Seguridad
    const ANTIBOT_TOKEN_UNICO = 'antibot_token_unico';
    const ANTIBOT_SIEMPRE_CAMBIA = 'antibot_siempre_cambia';
    const ANTIBOT_SIEMPRE_VACIO = 'antibot_siempre_vacio';
 
    // Ayuda
    const SITIO_BARRA_AYUDA_TITULO = 'sitio_barra_ayuda_titulo';
    const SITIO_BARRA_AYUDA_BOTON = 'sitio_barra_ayuda_boton';
    const SITIO_CONTACTO_BOTON_FLOTANTE = 'sitio_contacto_boton_flotante';
    const SITIO_GIRAR_MOVIL = 'sitio_girar_movil';
 
    // Errores
    const ERRORES_TITULO = 'errores_titulo';
    const ERRORES_403_TITULO = 'errores_403_titulo';
    const ERRORES_403_DESCRIPCION = 'errores_403_descripcion';
    const ERRORES_404_TITULO = 'errores_404_titulo';
    const ERRORES_404_DESCRIPCION = 'errores_404_descripcion';
    const ERRORES_500_TITULO = 'errores_500_titulo';
    const ERRORES_500_DESCRIPCION = 'errores_500_descripcion';
    const ERRORES_503_TITULO = 'errores_503_titulo';
    const ERRORES_503_DESCRIPCION = 'errores_503_descripcion';
    const ERRORES_IR_HOME_LABEL = 'errores_ir_home_label';
    const ERRORES_DESCONOCIDO = 'errores_desconocido';
 
    // glosarios
    const GLOSARIO_CLASE = 'glosario_clase';
    const GLOSARIO_CURSO = 'glosario_curso';
    const GLOSARIO_DIPLOMA = 'glosario_diploma';
    const GLOSARIO_EVALUACION = 'glosario_evaluacion';
    const GLOSARIO_MATERIAL = 'glosario_material';
    const GLOSARIO_MODULO = 'glosario_modulo';
    const GLOSARIO_PROFESOR = 'glosario_profesor';
    const GLOSARIO_TRAILER = 'glosario_trailer';
    const GLOSARIO_VIDEO = 'glosario_video';
    const GLOSARIO_PLURAL_CLASE = 'glosario_clases';
    const GLOSARIO_PLURAL_CURSO = 'glosario_cursos';
    const GLOSARIO_PLURAL_DIPLOMA = 'glosario_diplomas';
    const GLOSARIO_PLURAL_EVALUACION = 'glosario_evaluaciones';
    const GLOSARIO_PLURAL_MATERIAL = 'glosario_materiales';
    const GLOSARIO_PLURAL_MODULO = 'glosario_modulos';
    const GLOSARIO_PLURAL_PROFESOR = 'glosario_profesores';
    const GLOSARIO_PLURAL_TRAILERS = 'glosario_trailers';
    const GLOSARIO_PLURAL_VIDEO = 'glosario_videos';
 
    /********************************************
     *                MULTIMEDIA
     ********************************************/
    // cargas
    const MULTIMEDIA_CARGAR_OK = 'multimedia_cargar_ok';
    const MULTIMEDIA_CARGAR_ERROR = 'multimedia_cargar_error';
    const MULTIMEDIA_CARGAR_ERROR_NO_SE_ENVIARON_ARCHIVOS = 'multimedia_cargar_error_no_se_enviaron_archivos';
    const MULTIMEDIA_CARGAR_ERROR_TIPO_DE_ARCHIVO_NO_SOPORTADO = 'multimedia_cargar_error_tipo_de_archivo_no_soportado';
 
    // elementos comunes
    const MULTIMEDIA_BOTON_BORRAR = 'multimedia_boton_borrar';
    const MULTIMEDIA_BOTON_CANCELAR = 'multimedia_boton_cancelar';
    const MULTIMEDIA_BORRAR_OK = 'multimedia_borrar_ok';
    const MULTIMEDIA_BORRAR_ERROR = 'multimedia_borrar_error';
    const MULTIMEDIA_BORRAR_ERROR_NO_LE_PERTENECE = 'multimedia_borrar_error_no_le_pertenece';
    const MULTIMEDIA_BORRAR_ERROR_NO_ENCONTRADO = 'multimedia_borrar_error_no_encontrado';
    const MULTIMEDIA_BORRAR_ERROR_NO_ASIGNADA = 'multimedia_borrar_error_no_asignada';
 
    // imágenes
    const MULTIMEDIA_IMAGENES_SUBIDA_NO_HABILITADA = 'multimedia_imagenes_subida_no_habilitada';
 
    /********************************************
     *            PÁGINA PRINCIPAL
     ********************************************/
 
    // pagina principal
    const HOME_SLOGAN = 'home_slogan';
    const HOME_SLOGAN_SUBTITULO = 'home_slogan_subtitulo';
    const HOME_IR_EXPLICACION = 'home_ir_a_explicacion';
    const HOME_IR_A_CURSOS = 'home_ir_a_cursos';
    const HOME_IR_A_BOTON_1_DESCRIPCION = 'home_ir_a_boton_1_descripcion';
    const HOME_IR_A_BOTON_1_URL = 'home_ir_a_boton_1_url';
    const HOME_IR_A_BOTON_2_DESCRIPCION = 'home_ir_a_boton_2_descripcion';
    const HOME_IR_A_BOTON_2_URL = 'home_ir_a_boton_2_url';
    const HOME_IMAGENES = 'home_imagenes';
    const HOME_LISTADO_DE_CURSOS_TITULO = 'home_listado_de_cursos_titulo';
    const HOME_LISTADO_DE_CURSOS_SUBTITULO = 'home_listado_de_cursos_subtitulo';
    const HOME_LISTADO_DE_CURSOS_MAS_INFO_BOTON = 'home_listado_de_cursos_mas_info_boton';
    const HOME_LISTADO_DE_CURSOS_MAS_INFO_CONTENIDO = 'home_listado_de_cursos_mas_info_contenido';
 
    // pagina principal introducción
    const HOME_INTRODUCCION_PRETITULO = 'home_introduccion_pretitulo';
    const HOME_INTRODUCCION_TITULO = 'home_introduccion_titulo';
    const HOME_INTRODUCCION_DESCRIPCION = 'home_introduccion_descripcion';
    const HOME_INTRODUCCION_TITUTLO_LISTADO = 'home_introduccion_titulo_listado';
    const HOME_INTRODUCCION_1_TITULO = 'home_introduccion_1_titulo';
    const HOME_INTRODUCCION_1_DESCRIPCION = 'home_introduccion_1_descripcion';
    const HOME_INTRODUCCION_1_URL = 'home_introduccion_1_url';
    const HOME_INTRODUCCION_2_TITULO = 'home_introduccion_2_titulo';
    const HOME_INTRODUCCION_2_DESCRIPCION = 'home_introduccion_2_descripcion';
    const HOME_INTRODUCCION_2_URL = 'home_introduccion_2_url';
    const HOME_INTRODUCCION_3_TITULO = 'home_introduccion_3_titulo';
    const HOME_INTRODUCCION_3_DESCRIPCION = 'home_introduccion_3_descripcion';
    const HOME_INTRODUCCION_3_URL = 'home_introduccion_3_url';
    const HOME_INTRODUCCION_4_TITULO = 'home_introduccion_4_titulo';
    const HOME_INTRODUCCION_4_DESCRIPCION = 'home_introduccion_4_descripcion';
    const HOME_INTRODUCCION_4_URL = 'home_introduccion_4_url';
 
    /***************************************************
     *                  CATEGORÍAS
     ***************************************************/
    const CATEGORIAS_MENU_PRINCIPAL = 'categorias_menu_principal';
 
    /***************************************************
     *                  COMPRAS
     ***************************************************/
    const COMPRAS_INSCRIPTO_EN_CURSO_GRATIS_CORRECTAMENTE = 'compras_inscripto_en_curso_gratis_correctamente';
    const COMPRAS_INSCRIPTO_EN_CURSO_GRATIS_ERROR = 'compras_inscripto_en_curso_gratis_error';
    const COMPRAS_COBROS_ONLINE_NO_ESTAN_HABILIADOS_TITULO = 'compras_cobros_online_no_estan_habiliados_titulo';
    const COMPRAS_COBROS_ONLINE_NO_ESTAN_HABILIADOS_DESCRIPCION = 'compras_cobros_online_no_estan_habiliados_descripcion';
    const COMPRAS_COBROS_ONLINE_MEDIOS_DE_PAGO_DISPONIBLES_TITULO = 'compras_cobros_online_medios_de_pago_disponibles_titulo';
    const COMPRAS_COBROS_ONLINE_MEDIOS_DE_PAGO_DISPONIBLES_DESCRIPCION = 'compras_cobros_online_medios_de_pago_disponibles_descripcion';
    const COMPRAS_COBROS_ONLINE_MEDIOS_DE_PAGO_PERSONALIZADO_BOTON_ENVIAR = 'compras_cobros_online_medios_de_pago_personalizado_boton_enviar';
    const COMPRAS_COBROS_ONLINE_NO_HAY_MEDIOS_DE_PAGO_DISPONIBLES_TITULO = 'compras_cobros_online_no_hay_medios_de_pago_disponibles_titulo';
    const COMPRAS_COBROS_ONLINE_NO_HAY_MEDIOS_DE_PAGO_DISPONIBLES_DESCRIPCION = 'compras_cobros_online_no_hay_medios_de_pago_disponibles_descripcion';
 
    // resultados
    const COMPRAS_COBROS_ONLINE_RESULTADO_APROBADO = 'compras_cobros_online_resultado_aprobado';
    const COMPRAS_COBROS_ONLINE_RESULTADO_PENDIENTE = 'compras_cobros_online_resultado_pendiente';
    const COMPRAS_COBROS_ONLINE_RESULTADO_CANCELADO = 'compras_cobros_online_resultado_cancelado';
    const COMPRAS_COBROS_ONLINE_RESULTADO_CORRECTO_REGALO = 'compras_cobros_online_resultado_correcto_regalo';
    const COMPRAS_COBROS_ONLINE_RESULTADO_CORRECTO_COMPRA = 'compras_cobros_online_resultado_correcto_compra';
    const COMPRAS_COBROS_ONLINE_RESULTADO_DESCONOCIDO = 'compras_cobros_online_resultado_desconocido';
    const COMPRAS_COBROS_ONLINE_RESULTADO_BOTON_CONTINUAR = 'compras_cobros_online_resultado_boton_continuar';
    const COMPRAS_COBROS_ONLINE_OPERACION_MANUAL = 'compras_cobros_online_operacion_manual';
 
    // Flow.cl: estados
    const API_FLOW_ESTADO_PENDING = 'api_flow_estado_pending';
    const API_FLOW_ESTADO_PAID = 'api_flow_estado_paid';
    const API_FLOW_ESTADO_REJECTED = 'api_flow_estado_rejected';
    const API_FLOW_ESTADO_CANCELED = 'api_flow_estado_canceled';
    const API_FLOW_ESTADO_UNKNOWN = 'api_flow_estado_unknown';
    
    // Ebanx: estados
    const API_EBANX_ESTADO_OPEN = 'api_ebanx_estado_open';
    const API_EBANX_ESTADO_PENDING = 'api_ebanx_estado_pending';
    const API_EBANX_ESTADO_CONFIRMED = 'api_ebanx_estado_confirmed';
    const API_EBANX_ESTADO_CANCELED = 'api_ebanx_estado_canceled';
    const API_EBANX_ESTADO_UNKNOWN = 'api_ebanx_estado_unknown';
    const API_EBANX_ERROR_DESCONOCIDO = 'api_ebanx_error_desconocido';
    const API_EBANX_ERROR_PAIS_NO_SOPORTADO = 'api_ebanx_error_pais_no_soportado';
 
    // Mercado Pago: estados
    const API_MERCADO_PAGO_ESTADO_APPROVED = 'api_mercado_pago_estado_approved';
    const API_MERCADO_PAGO_ESTADO_CANCELLED = 'api_mercado_pago_estado_cancelled'; // solo tickets
    const API_MERCADO_PAGO_ESTADO_IN_PROCESS = 'api_mercado_pago_estado_in_process';
    const API_MERCADO_PAGO_ESTADO_PENDING = 'api_mercado_pago_estado_pending'; // solo tickets
    const API_MERCADO_PAGO_ESTADO_REJECTED = 'api_mercado_pago_estado_rejected';
 
    // Mercado pago: estado en proceso: detalles
    const API_MERCADO_PAGO_IN_PROCESS_PENDING_CONTINGENCY = 'api_mercado_pago_in_process_pending_contingency';
    const API_MERCADO_PAGO_IN_PROCESS_PENDING_REVIEW_MANUAL = 'api_mercado_pago_in_process_pending_review_manual';
 
    // Mercado pago: estado en rechazado: detalles
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_BAD_FILLED_CARD_NUMBER = 'api_mercado_pago_rejected_cc_rejected_bad_filled_card_number';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_BAD_FILLED_DATE = 'api_mercado_pago_rejected_cc_rejected_bad_filled_date';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_BAD_FILLED_OTHER = 'api_mercado_pago_rejected_cc_rejected_bad_filled_other';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_BAD_FILLED_SECURITY_CODE = 'api_mercado_pago_rejected_cc_rejected_bad_filled_security_code';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_BLACKLIST = 'api_mercado_pago_rejected_cc_rejected_blacklist';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_CALL_FOR_AUTHORIZE = 'api_mercado_pago_rejected_cc_rejected_call_for_authorize';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_CARD_DISABLED = 'api_mercado_pago_rejected_cc_rejected_card_disabled';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_CARD_ERROR = 'api_mercado_pago_rejected_cc_rejected_card_error';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_DUPLICATED_PAYMENT = 'api_mercado_pago_rejected_cc_rejected_duplicated_payment';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_HIGH_RISK = 'api_mercado_pago_rejected_cc_rejected_high_risk';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_INSUFFICIENT_AMOUNT = 'api_mercado_pago_rejected_cc_rejected_insufficient_amount';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_INVALID_INSTALLMENTS = 'api_mercado_pago_rejected_cc_rejected_invalid_installments';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_MAX_ATTEMPTS = 'api_mercado_pago_rejected_cc_rejected_max_attempts';
    const API_MERCADO_PAGO_REJECTED_CC_REJECTED_OTHER_REASON = 'api_mercado_pago_rejected_cc_rejected_other_reason';
 
    // Mercado pago estado de pago con tickets
    const API_MERCADO_PAGO_APPROVED_ACCREDITED = 'api_mercado_pago_approved_accredited';
    const API_MERCADO_PAGO_PENDING_PENDING_WAITING_PAYMENT = 'api_mercado_pago_pending_pending_waiting_payment';
    const API_MERCADO_PAGO_CANCELLED_EXPIRED = 'api_mercado_pago_cancelled_expired';
 
    // PayPal: estados de pago
    const API_PAYPAL_ESTADO_CANCELED_REVERSAL = 'api_paypal_estado_canceled_reversal';
    const API_PAYPAL_ESTADO_COMPLETED = 'api_paypal_estado_completed';
    const API_PAYPAL_ESTADO_CREATED = 'api_paypal_estado_created';
    const API_PAYPAL_ESTADO_DENIED = 'api_paypal_estado_denied';
    const API_PAYPAL_ESTADO_EXPIRED = 'api_paypal_estado_expired';
    const API_PAYPAL_ESTADO_FAILED = 'api_paypal_estado_failed';
    const API_PAYPAL_ESTADO_PENDING = 'api_paypal_estado_pending';
    const API_PAYPAL_ESTADO_REFUNDED = 'api_paypal_estado_refunded';
    const API_PAYPAL_ESTADO_REVERSED = 'api_paypal_estado_reversed';
    const API_PAYPAL_ESTADO_PROCESSED = 'api_paypal_estado_processed';
    const API_PAYPAL_ESTADO_VOIDED = 'api_paypal_estado_voiled';
    const API_PAYPAL_ESTADO_UNKNOWN = 'api_paypal_estado_unknown';
 
    const API_PAYPAL_PENDIENTE_ADDRESS = 'api_paypal_pendiente_address';
    const API_PAYPAL_PENDIENTE_AUTHORIZATION = 'api_paypal_pendiente_authorization';
    const API_PAYPAL_PENDIENTE_DELAYED_DISBURSEMENT = 'api_paypal_pendiente_delayed_disbursement';
    const API_PAYPAL_PENDIENTE_ECHECK = 'api_paypal_pendiente_echeck';
    const API_PAYPAL_PENDIENTE_INTL = 'api_paypal_pendiente_intl';
    const API_PAYPAL_PENDIENTE_MULTI_CURRENCY = 'api_paypal_pendiente_multi_currency';
    const API_PAYPAL_PENDIENTE_ORDER = 'api_paypal_pendiente_order';
    const API_PAYPAL_PENDIENTE_PAYMENTREVIEW = 'api_paypal_pendiente_paymentreview';
    const API_PAYPAL_PENDIENTE_REGULATORY_REVIEW = 'api_paypal_pendiente_regulatory_review';
    const API_PAYPAL_PENDIENTE_UNILATERAL = 'api_paypal_pendiente_unilateral';
    const API_PAYPAL_PENDIENTE_UPGRADE = 'api_paypal_pendiente_upgrade';
    const API_PAYPAL_PENDIENTE_VERIFY = 'api_paypal_pendiente_verify';
    const API_PAYPAL_PENDIENTE_OTHER = 'api_paypal_pendiente_other';
 
    const API_PAYPAL_ERROR_ADJUSTMENT_REVERSAL = 'api_paypal_error_adjustment_reversal';
    const API_PAYPAL_ERROR_ADMIN_FRAUD_REVERSAL = 'api_paypal_error_admin_fraud_reversal';
    const API_PAYPAL_ERROR_ADMIN_REVERSAL = 'api_paypal_error_admin_reversal';
    const API_PAYPAL_ERROR_BUYER_COMPLAINT = 'api_paypal_error_buyer_complaint';
    const API_PAYPAL_ERROR_CHARGEBACK = 'api_paypal_error_chargeback';
    const API_PAYPAL_ERROR_CHARGEBACK_REIMBURSEMENT = 'api_paypal_error_chargeback_reimbursement';
    const API_PAYPAL_ERROR_CHARGEBACK_SETTLEMENT = 'api_paypal_error_chargeback_settlement';
    const API_PAYPAL_ERROR_GUARANTEE = 'api_paypal_error_guarantee';
    const API_PAYPAL_ERROR_OTHER = 'api_paypal_error_other';
    const API_PAYPAL_ERROR_REFUND = 'api_paypal_error_refund';
    const API_PAYPAL_ERROR_REGULATORY_BLOCK = 'api_paypal_error_regulatory_block';
    const API_PAYPAL_ERROR_REGULATORY_REJECT = 'api_paypal_error_regulatory_reject';
    const API_PAYPAL_ERROR_REGULATORY_REVIEW_EXCEEDING_SLA = 'api_paypal_error_regulatory_review_exceeding_sla';
    const API_PAYPAL_ERROR_UNAUTHORIZED_CLAIM = 'api_paypal_error_unauthorized_claim';
    const API_PAYPAL_ERROR_UNAUTHORIZED_SPOOF = 'api_paypal_error_unauthorized_spoof';
 
    const COMPRAS_OCURRIO_UN_ERROR_AL_CREAR_LA_COMPRA = 'compras_ocurrio_un_error_al_crear_la_compra';
    const COMPRAS_SIN_SESION = 'compras_sin_sesion';
    const COMPRAS_CURSO_NO_DISPONIBLE_PARA_COMPRAR = 'compras_curso_no_disponible_para_comprar';
    const COMPRAS_ESTUDIANTE_INTENTA_COMPRAR_CURSO_GRATIS_TITULO = 'compras_estudiante_intenta_comprar_curso_gratis_titulo';
    const COMPRAS_ESTUDIANTE_INTENTA_COMPRAR_CURSO_GRATIS_DESCRIPCION = 'compras_estudiante_intenta_comprar_curso_gratis_descripcion';
    const COMPRAS_ESTUDIANTE_INTENTA_COMPRAR_CURSO_GRATIS_IR_A_CURSO = 'compras_estudiante_intenta_comprar_curso_gratis_ir_a_curso';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INSCRIPCION_BOTON_INSCRIBIR = 'compras_estudiante_formulario_inscripcion_boton_inscribir';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_TITULO = 'compras_estudiante_formulario_invitacion_titulo';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_NOMBRE = 'compras_estudiante_formulario_invitacion_nombre';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_NOMBRE_ERROR = 'compras_estudiante_formulario_invitacion_nombre_error';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_EMAIL = 'compras_estudiante_formulario_invitacion_email';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_EMAIL_ERROR = 'compras_estudiante_formulario_invitacion_email_error';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_DESCRIPCION = 'compras_estudiante_formulario_invitacion_descripcion';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_BOTON_ENVIAR = 'compras_estudiante_formulario_invitacion_boton_enviar';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_CORRECTA = 'compras_estudiante_formulario_invitacion_correcta';
    const COMPRAS_ESTUDIANTE_FORMULARIO_INVITACION_ERROR = 'compras_estudiante_formulario_invitacion_error';
    const COMPRAS_ESTUDIANTE_INTENTA_COMPRAR_CURSO_YA_COMPRADO_TITULO = 'compras_estudiante_intenta_comprar_curso_ya_comprado_titulo';
    const COMPRAS_ESTUDIANTE_INTENTA_COMPRAR_CURSO_YA_COMPRADO_DESCRIPCION = 'compras_estudiante_intenta_comprar_curso_ya_comprado_descripcion';
    const COMPRAS_ESTUDIANTE_INTENTA_COMPRAR_CURSO_YA_COMPRADO_IR_A_CURSO = 'compras_estudiante_intenta_comprar_curso_ya_comprado_ir_a_curso';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_TITULO = 'compras_estudiante_formulario_regalo_titulo';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_NOMBRE = 'compras_estudiante_formulario_regalo_nombre';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_NOMBRE_ERROR = 'compras_estudiante_formulario_regalo_nombre_error';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_EMAIL = 'compras_estudiante_formulario_regalo_email';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_EMAIL_ERROR = 'compras_estudiante_formulario_regalo_email_error';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_DEDICATORIA = 'compras_estudiante_formulario_regalo_dedicatoria';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_BOTON_ENVIAR = 'compras_estudiante_formulario_regalo_boton_enviar';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_BOTON_IR_A_COMPRAR = 'compras_estudiante_formulario_regalo_boton_ir_a_comprar';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_CORRECTA = 'compras_estudiante_formulario_regalo_correcta';
    const COMPRAS_ESTUDIANTE_FORMULARIO_REGALO_ERROR = 'compras_estudiante_formulario_regalo_error';
    const COMPRAS_ESTUDIANTE_FORMULARIO_PRECOMPRA_REGALO_TITULO = 'compras_estudiante_formulario_precompra_regalo_titulo';
    const COMPRAS_ESTUDIANTE_FORMULARIO_PRECOMPRA_REGALO_DESCRIPCION = 'compras_estudiante_formulario_precompra_regalo_descripcion';
    const COMPRAS_REGALO_ERROR_AGASAJADO_YA_ES_UN_ESTUDIANTE = 'compras_regalo_error_agasajado_ya_es_un_estudiante';
    const COMPRAS_USUARIO_INTENTA_COMPRAR_CURSO_TITULO = 'compras_usuario_intenta_comprar_curso_titulo';
    const COMPRAS_USUARIO_INTENTA_COMPRAR_CURSO_DESCRIPCION = 'compras_usuario_intenta_comprar_curso_descripcion';
    const COMPRAS_USUARIO_INTENTA_PRECOMPRAR_CURSO_TITULO = 'compras_usuario_intenta_precomprar_curso_titulo';
    const COMPRAS_USUARIO_INTENTA_PRECOMPRAR_CURSO_DESCRIPCION = 'compras_usuario_intenta_precomprar_curso_descripcion';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_TITULO = 'compras_usuario_formulario_compra_titulo';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_DETALLE_ITEMS = 'compras_usuario_formulario_compra_detalle_items';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_DETALLE_PRECIO = 'compras_usuario_formulario_compra_detalle_precio';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_DETALLE_DESCUENTO = 'compras_usuario_formulario_compra_detalle_descuento';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_DETALLE_TOTAL = 'compras_usuario_formulario_compra_detalle_total';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_BOTON_COMPRAR = 'compras_usuario_formulario_compra_boton_comprar';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_BOTON_IR_A_REGALAR = 'compras_usuario_formulario_compra_boton_ir_a_regalar';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_CORRECTA = 'compras_usuario_formulario_compra_correcta';
    const COMPRAS_USUARIO_FORMULARIO_COMPRA_ERROR = 'compras_usuario_formulario_compra_error';
 
    /***************************************************
     *                  CONTACTO
     ***************************************************/
    const CONTACTO_TITULO = 'contacto_titulo';
    const CONTACTO_CONTENIDO = 'contacto_contenido';
    const CONTACTO_DESCRIPCION = 'contacto_descripcion';
    const CONTACTO_FORMULARIO_TITULO = 'contacto_formulario_titulo';
    const CONTACTO_FORMULARIO_NOMBRE = 'contacto_formulario_nombre';
    const CONTACTO_FORMULARIO_EMAIL = 'contacto_formulario_email';
    const CONTACTO_FORMULARIO_CONSULTA = 'contacto_formulario_consulta';
    const CONTACTO_FORMULARIO_ENVIAR = 'contacto_formulario_enviar';
    const CONTACTO_FORMULARIO_ERROR_NOMBRE = 'contacto_formulario_error_nombre';
    const CONTACTO_FORMULARIO_ERROR_EMAIL = 'contacto_formulario_error_email';
    const CONTACTO_FORMULARIO_ERROR_CONSULTA = 'contacto_formulario_error_consulta';
    const CONTACTO_FORMULARIO_ENVIO_CORRECTO = 'contacto_formulario_envio_correcto';
    const CONTACTO_FORMULARIO_ENVIO_ERROR = 'contacto_formulario_envio_error';
    const CONTACTO_FORMULARIO_EMBEBIDO_TITULO = 'contacto_formulario_embebido_titulo';
 
    /***************************************************
     *                  CURSOS
     ***************************************************/
 
    // estados de los cursos
    const CURSOS_ESTADO_VISTA_PREVIA = 'cursos_estado_vista_previa';
    const CURSOS_ESTADO_TERMINADO_NO = 'cursos_estado_terminado_no';
    const CURSOS_ESTADO_TERMINADO_MOSTRAR_PRESENTACION = 'cursos_estado_terminado_mostrar_presentacion';
    const CURSOS_ESTADO_TERMINADO_EN_CURSO = 'cursos_estado_terminado_en_curso';
    const CURSOS_ESTADO_TERMINADO_FINALIZADO = 'cursos_estado_terminado_finalizado';
    const CURSOS_FECHA_ESTRENO_ESTRENADO = 'cursos_fecha_estreno_estrenado';
    const CURSOS_FECHA_ESTRENO_A_ESTRENAR = 'cursos_fecha_estreno_a_estrenar';
 
    // cursos listados
    const CURSOS_LISTADOS_CONTENIDO = 'cursos_listados_contenido';
    const CURSOS_LISTADOS_MAS_CURSOS = 'cursos_listados_mas_cursos';
    const CURSOS_LISTADOS_CONTADOR_VIDEO = 'cursos_listados_contador_video';
    const CURSOS_LISTADOS_CONTADOR_VIDEOS = 'cursos_listados_contador_videos';
    const CURSOS_LISTADOS_CONTADOR_ESTUDIANTES = 'cursos_listados_contador_estudiantes';
    const CURSOS_LISTADOS_ENCABEZADO_IMAGENES = 'cursos_listados_encabezado_imagenes';
    const CURSOS_LISTADOS_VER_DETALLE_COMPLETO = 'cursos_listados_ver_detalle_completo';
    const CURSOS_LISTADOS_DETALLE_COMPLETO_CATEGORIAS = 'cursos_listados_detalle_completo_categorias';
    const CURSOS_LISTADOS_PROXIMOS_BOTON_CONTACTO = 'cursos_listados_proximos_boton_contacto';
    const CURSOS_LISTADOS_PROXIMOS_PLANTILLA_MENSAJE = 'cursos_listados_proximos_plantilla_mensaje';
    const CURSOS_LISTADOS_PROXIMOS_CANTIDAD_DE_INTERESADOS = 'cursos_listados_proximos_cantidad_de_interesados';
 
    // cursos ver
    const CURSOS_NO_ENCONTRADO = 'cursos_no_encontrado';
    const CURSOS_NO_ESTRENADO = 'cursos_no_estrenado';
    const CURSOS_VER_AUTOEVALUACION_DISPONIBLE = 'cursos_ver_autoevaluacion_disponible';
    const CURSOS_VER_BOTON_COMPRAR = 'cursos_boton_comprar';
    const CURSOS_VER_BOTON_PRECOMPRAR = 'cursos_boton_precomprar';
    const CURSOS_VER_CATEGORIAS = 'cursos_ver_categorias';
    const CURSOS_VER_CONTADOR_ESTUDIANTES = 'cursos_ver_contador_estudiantes';
    const CURSOS_VER_CONTADOR_PRECOMPRAS = 'cursos_ver_contador_precompras';
    const CURSOS_VER_CONTADOR_VIDEO = 'cursos_ver_contador_video';
    const CURSOS_VER_CONTADOR_VIDEOS = 'cursos_ver_contador_videos';
    const CURSOS_VER_CONTENIDO_TITULO = 'cursos_ver_contenido_titulo';
    const CURSOS_VER_CONTENIDO_NO_HAY = 'cursos_ver_contenido_no_hay';
    const CURSOS_VER_DETALLE_COMPLETO = 'cursos_ver_detalle_completo';
    const CURSOS_VER_IR_A_OPINIONES = 'cursos_ver_ir_a_opiniones';
    const CURSOS_VER_KEYWORDS = 'cursos_ver_keywords';
    const CURSOS_VER_TRAILER = 'cursos_ver_trailer';
    const CURSOS_VER_RELACIONADOS_TITULO = 'cursos_relacionados_titulo';
    const CURSOS_VER_VALORACIONES_TITULO = 'cursos_ver_valoraciones_titulo';
 
    // cursos sidebar
    const CURSOS_VER_SIDEBAR_ESTADISTICAS = 'cursos_ver_sidebar_estadisticas';
    const CURSOS_VER_SIDEBAR_ESTADISTICAS_CONTENIDO = 'cursos_ver_sidebar_estadisticas_contenido';
    const CURSOS_VER_SIDEBAR_ESTADISTICAS_ESTUDIANTES = 'cursos_ver_sidebar_estadisticas_estudiantes';
    const CURSOS_VER_SIDEBAR_ESTADISTICAS_OPINIONES = 'cursos_ver_sidebar_estadisticas_opiniones';
    const CURSOS_VER_SIDEBAR_ESTADISTICAS_INTERESADOS = 'cursos_ver_sidebar_estadisticas_interesados';
    const CURSOS_VER_SIDEBAR_ESTADISTICAS_PRECOMPRAS = 'cursos_ver_sidebar_estadisticas_precompras';
    const CURSOS_VER_SIDEBAR_FORMULARIO_CONTACTO_TITULO = 'cursos_ver_sidebar_formulario_contacto_titulo';
    const CURSOS_VER_SIDEBAR_PROFESOR_IR_A_PERFIL = 'cursos_ver_sidebar_profesor_ir_a_perfil';
    const CURSOS_VER_SIDEBAR_VOLVER_AL_CATALOGO = 'cursos_ver_sidebar_volver_al_catalogo';
 
    // cursos detallar
    const CURSOS_DETALLAR_VALORACIONES_NO_HAY = 'cursos_detallar_valoraciones_no_hay';
    const CURSOS_DETALLAR_VALORACIONES_ESTUDIANTE = 'cursos_detallar_valoraciones_estudiante';
    const CURSOS_DETALLAR_VALORACIONES_ESTUDIANTES = 'cursos_detallar_valoraciones_estudiantes';
 
    // cursos comprar
    const CURSOS_NO_COMPRADO = 'cursos_no_comprado';
    const CURSOS_COMPRAR_GRATIS = 'cursos_comprar_gratis';
    const CURSOS_COMPRAR_BOTON_CURSO_GRATUITO = 'cursos_comprar_boton_curso_gratuito';
    const CURSOS_INVITAR = 'cursos_invitar';
    const CURSOS_REGALAR = 'cursos_regalar';
    const CURSOS_PRECIO_ANTERIOR = 'cursos_precio_anterior';
    const CURSOS_PRECIO_DESCUENTO = 'cursos_precio_descuento';
    const CURSOS_PRECIO_SIN_TRANSFORMAR = 'cursos_precio_sin_transformar';
 
    // cursos lista de deseos
    const CURSOS_LISTA_DE_DESEOS_AGREGAR = 'cursos_lista_de_deseos_agregar';
    const CURSOS_LISTA_DE_DESEOS_QUITAR = 'cursos_lista_de_deseos_quitar';
    const CURSOS_DESEO_AGREGADO_CORRECTAMENTE = 'cursos_deseo_agregado_correctamente';
    const CURSOS_DESEO_QUITADO_CORRECTAMENTE = 'cursos_deseo_quitado_correctamente';
 
    // cursos clases
    const CURSOS_CLASES_NO_ENCONTRADA = 'cursos_clases_no_encontrada';
    const CURSOS_CLASES_SIN_MATERIAL = 'cursos_clases_sin_material';
    const CURSOS_SIN_CONTENIDO = 'cursos_sin_contenido';
    const CURSOS_CLASES_BOTONERA_CONTENIDO_EXTRA = 'cursos_clases_botonera_contenido_extra';
    const CURSOS_CLASES_CONTENIDO_EXTRA = 'cursos_clases_contenido_extra';
    const CURSOS_CLASES_CONTENIDO_EXTRA_CERRAR = 'cursos_clases_contenido_extra_cerrar';
    const CURSOS_CLASES_CONTENIDO_EXTRA_DESCARGAR = 'cursos_clases_contenido_extra_descargar';
    const CURSOS_CLASES_ANTERIOR = 'cursos_clases_anterior';
    const CURSOS_CLASES_ANTERIOR_DASHBOARD = 'cursos_clases_anterior_dashboard';
    const CURSOS_CLASES_ANTERIOR_DESCRIPCION = 'cursos_clases_anterior_descripcion';
    const CURSOS_CLASES_SIGUIENTE = 'cursos_clases_siguiente';
    const CURSOS_CLASES_SIGUIENTE_DESCRIPCION = 'cursos_clases_siguiente_descripcion';
    const CURSOS_CLASES_SIGUIENTE_DESCRIPCION_EN_CLASES_SECUENCIALES = 'cursos_clases_siguiente_descripcion_en_clases_secuenciales';
    const CURSOS_CLASES_HACER_EVALUACION = 'cursos_clases_hacer_evaluacion';
    const CURSOS_CLASES_HACER_EVALUACION_EXPLICACION = 'cursos_clases_hacer_evaluacion_explicacion';
    const CURSOS_CLASES_MATERIAL_VOLVER_DASHBOARD = 'cursos_clases_material_volver_dashboard';
    const CURSOS_CLASES_MATERIAL_VOLVER_DASHBOARD_DESCRIPCION = 'cursos_clases_material_volver_descripcion';
    const CURSOS_CLASES_MATERIAL_IR_A_CLASE = 'cursos_clases_material_ir_a_clase';
    const CURSOS_CLASES_MATERIAL_IR_A_CLASE_DESCRIPCION = 'cursos_clases_material_ir_a_clase_descripcion';
    const CURSOS_CLASES_MATERIAL_PAGINA_ANTERIOR = 'cursos_clases_material_pagina_anterior';
    const CURSOS_CLASES_MATERIAL_PAGINA_ANTERIOR_DESCRIPCION = 'cursos_clases_material_pagina_anterior_descripcion';
    const CURSOS_CLASES_MATERIAL_PAGINA_SIGUIENTE = 'cursos_clases_material_pagina_siguiente';
    const CURSOS_CLASES_MATERIAL_PAGINA_SIGUIENTE_DESCRIPCION = 'cursos_clases_material_pagina_siguiente_descripcion';
 
    // cursos clases comentarios
    const CURSOS_CLASES_COMENTARIOS = 'cursos_clases_comentarios';
    const CURSOS_CLASES_COMENTARIOS_BOTONERA_DESCRIPCION = 'cursos_clases_comentarios_botonera_descripcion';
    const CURSOS_CLASES_COMENTARIOS_NO_PUEDE_COMENTAR_PORQUE_ES_CUENTA_PRIVADA = 'cursos_clases_comentarios_no_puede_comentar_porque_es_cuenta_privada';
    const CURSOS_CLASES_FORMULARIO_COMENTARIO_MENSAJE = 'cursos_clases_formulario_comentario_mensaje';
    const CURSOS_CLASES_FORMULARIO_COMENTARIO_ERROR_MENSAJE = 'cursos_clases_formulario_comentario_error_mensaje';
    const CURSOS_CLASES_FORMULARIO_COMENTARIO_BOTON_ENVIAR = 'cursos_clases_formulario_comentario_boton_enviar';
    const CURSOS_CLASES_FORMULARIO_COMENTARIO_GUARDAR_OK = 'cursos_clases_formulario_comentario_guardar_ok';
    const CURSOS_CLASES_FORMULARIO_COMENTARIO_GUARDAR_ERROR = 'cursos_clases_formulario_comentario_guardar_error';
    const CURSOS_CLASES_COMENTARIOS_BORRAR = 'cursos_clases_comentarios_borrar';
    const CURSOS_CLASES_COMENTARIOS_BORRAR_CONFIRMAR = 'cursos_clases_comentarios_borrar_confirmar';
 
    // cursos clases notas
    const CURSOS_CLASES_FORMULARIO_TOMAR_NOTA_TITULO = 'cursos_clases_formulario_tomar_nota_titulo';
    const CURSOS_CLASES_FORMULARIO_TOMAR_NOTA_MENSAJE = 'cursos_clases_formulario_tomar_nota_mensaje';
    const CURSOS_CLASES_FORMULARIO_TOMAR_NOTA_ERROR_MENSAJE = 'cursos_clases_formulario_tomar_nota_error_mensaje';
    const CURSOS_CLASES_FORMULARIO_TOMAR_NOTA_BOTON_ENVIAR = 'cursos_clases_formulario_tomar_nota_boton_enviar';
    const CURSOS_CLASES_NOTAS_MOSTRAR = 'cursos_clases_notas_mostrar';
    const CURSOS_CLASES_NOTAS_CERRAR = 'cursos_clases_notas_cerrar';
    const CURSOS_CLASES_NOTAS_IR_A_MOMENTO_EN_VIDEO = 'cursos_clases_notas_ir_a_momento_en_video';
    const CURSOS_CLASES_NOTAS_BORRAR = 'cursos_clases_notas_borrar';
    const CURSOS_CLASES_NOTAS_BORRAR_MENSAJE_CONFIRMAR = 'cursos_clases_notas_borrar_mensaje_confirmar';
    const CURSOS_CLASES_NOTAS_IR_AL_DASHBOARD = 'cursos_clases_notas_ir_al_dashboard';
    const CURSOS_CLASES_NOTAS_IR_A_LA_CLASE = 'cursos_clases_notas_ir_a_la_clase';
    const CURSOS_CLASES_NOTAS_VER_TODAS_LAS_NOTAS = 'cursos_clases_notas_ver_todas_las_notas';
    const CURSOS_CLASES_NOTAS_TITULO_CURSO = 'cursos_clases_notas_titulo_curso';
    const CURSOS_CLASES_NOTAS_TITULO_CLASE = 'cursos_clases_notas_titulo_clase';
    const CURSOS_CLASES_NOTAS_SIN_NOTAS = 'cursos_clases_notas_sin_notas';
 
    // dashboard
    const CURSOS_DASHBOARD_VER_VIDEO = 'cursos_dashboard_ver_video';
    const CURSOS_DASHBOARD_NO_SE_PUEDE_VER_CURSO_SECUENCIAL = 'cursos_dashboard_no_se_puede_ver_curso_secuencial';
    const CURSOS_DASHBOARD_VER_TODAS_LAS_NOTAS = 'cursos_dashboard_ver_todas_las_notas';
    const CURSOS_DASHBOARD_VER_NOTA_DE_CLASE = 'cursos_dashboard_ver_nota_de_clase';
    const CURSOS_DASHBOARD_VER_PAPER = 'cursos_dashboard_ver_paper';
    const CURSOS_DASHBOARD_HACER_TEST = 'cursos_dashboard_hacer_test';
    const CURSOS_DASHBOARD_VER_DIPLOMA = 'cursos_dashboard_ver_diploma';
    const CURSOS_DASHBOARD_MARCADOR_EXPLICACION = 'cursos_dashboard_marcador_explicacion';
    const CURSOS_DASHBOARD_MARCADOR_BOTON = 'cursos_dashboard_marcador_boton';
    const CURSOS_DASHBOARD_PROGRESO = 'cursos_dashboard_progreso';
    const CURSOS_DASHBOARD_AYUDA = 'cursos_dashboard_ayuda';
    const CURSOS_DASHBOARD_AYUDA_TITULO = 'cursos_dashboard_ayuda_titulo';
    const CURSOS_DASHBOARD_AYUDA_MAS_INFORMACION = 'cursos_dashboard_ayuda_mas_informacion';
    const CURSOS_DASHBOARD_AYUDA_BOTON_ABRIR = 'cursos_dashboard_ayuda_boton_abrir';
    const CURSOS_DASHBOARD_AYUDA_BOTON_CERRAR = 'cursos_dashboard_ayuda_boton_cerrar';
    const CURSOS_DASHBOARD_AYUDA_BOTON_MAS_INFORMACION = 'cursos_dashboard_ayuda_boton_mas_informacion';
    const CURSOS_DASHBOARD_AYUDA_BOTON_COMENZAR = 'cursos_dashboard_ayuda_boton_comenzar';
 
    // evaluación
    const CURSOS_EVALUACION_ESTADO_SI_SE_PUEDE_HACER = 'cursos_evaluacion_estado_si_se_puede_hacer';
    const CURSOS_EVALUACION_ESTADO_AUN_NO_TERMINO_LAS_CLASES = 'cursos_evaluacion_estado_aun_no_termino_las_clases';
    const CURSOS_EVALUACION_ESTADO_YA_SE_APROBO = 'cursos_evaluacion_estado_ya_se_aprobo';
    const CURSOS_EVALUACION_ESTADO_NO_HAY_EVALUACION_DISPONIBLE = 'cursos_evaluacion_estado_no_hay_evaluacion_disponible';
    const CURSOS_EVALUACION_ESTADO_LIMITE_DE_INTENTOS_EXCEDIDO = 'cursos_evaluacion_estado_limite_de_intentos_excedido';
    const CURSOS_EVALUACION_HACER_EVALUACION = 'cursos_evaluacion_hacer_evaluacion';
    const CURSOS_EVALUACION_EVALUAR_TITULO = 'cursos_evaluacion_evaluar_titulo';
    const CURSOS_EVALUACION_EVALUAR_DESCRIPCION = 'cursos_evaluacion_evaluar_descripcion';
    const CURSOS_EVALUACION_EVALUAR_PREGUNTA_CONTADOR = 'cursos_evaluacion_evaluar_preguntar_contador';
    const CURSOS_EVALUACION_EVALUAR_PREGUNTA_SIGUIENTE = 'cursos_evaluacion_evaluar_pregunta_siguiente';
    const CURSOS_EVALUACION_EVALUAR_BOTON_VOLVER = 'cursos_evaluacion_evaluar_boton_volver';
    const CURSOS_EVALUACION_APROBADO_TITULO = 'cursos_evaluacion_aprobado_titulo';
    const CURSOS_EVALUACION_APROBADO_DESCRIPCION = 'cursos_evaluacion_aprobado_descripcion';
    const CURSOS_EVALUACION_APROBADO_SEGUNDA_VEZ_TITULO = 'cursos_evaluacion_aprobado_segunda_vez_titulo';
    const CURSOS_EVALUACION_APROBADO_SEGUNDA_VEZ_DESCRIPCION = 'cursos_evaluacion_aprobado_segunda_vez_descripcion';
    const CURSOS_EVALUACION_APROBADO_SELECCIONAR_FRASE = 'cursos_evaluacion_aprobado_seleccionar_frase';
    const CURSOS_EVALUACION_APROBADO_SELECCIONAR_FRASE_DESCRIPCION = 'cursos_evaluacion_aprobado_seleccionar_frase_descripcion';
    const CURSOS_EVALUACION_APROBADO_VALORACION_DESCRIPCION = 'cursos_evaluacion_aprobado_valoracion_descripcion';
    const CURSOS_EVALUACION_APROBADO_VALORACION_ESTRELLAS = 'cursos_evaluacion_aprobado_valoracion_estrellas';
    const CURSOS_EVALUACION_APROBADO_SELECCIONAR_FRASE_BOTON_SEGUIR = 'cursos_evaluacion_aprobado_seleccionar_frase_boton_seguir';
    const CURSOS_EVALUACION_APROBADO_BOTON_IMPRIMIR_DIPLOMA = 'cursos_evaluacion_aprobado_boton_imprimir_diploma';
    const CURSOS_EVALUACION_APROBADO_BOTON_VOLVER_CURSO = 'cursos_evaluacion_aprobado_boton_volver_curso';
    const CURSOS_EVALUACION_DESAPROBADO_TITULO = 'cursos_evaluacion_desaprobado_titulo';
    const CURSOS_EVALUACION_DESAPROBADO_DESCRIPCION = 'cursos_evaluacion_desaprobado_descripcion';
    const CURSOS_EVALUACION_DESAPROBADO_BOTON_VOLVER_CURSO = 'cursos_evaluacion_desaprobado_boton_volver_curso';
    const CURSOS_EVALUACION_DESAPROBADO_BOTON_VOLVER_EVALUACION = 'cursos_evaluacion_desaprobado_boton_volver_evaluacion';
 
    // diploma
    const DIPLOMA_NO_ENCONTRADO = 'diploma_no_encontrado';
    const DIPLOMA_NO_DISPONIBLE_POR_FALTA_DE_EVALUACION_APROBADA = 'diploma_no_disponible_por_falta_de_evaluacion_aprobada';
    const DIPLOMA_VER = 'diploma_ver';
    const DIPLOMA_DESCRIPCION = 'diploma_descripcion';
    const DIPLOMA_FRASE = 'diploma_frase';
    const DIPLOMA_CODIGO = 'diploma_codigo';
    const DIPLOMA_BOTON_DESCARGAR = 'diploma_boton_descargar';
    const DIPLOMA_BOTON_IMPRIMIR = 'diploma_boton_imprimir';
    const DIPLOMA_VOLVER_AL_CURSO = 'diploma_volver_al_curso';
    const DIPLOMA_TITULO_PARA_COMPARTIR = 'diploma_titulo_para_compartir';
 
    /***************************************************
     *                  AUTH
     ***************************************************/
    // auth login
    const AUTH_LOGIN_TITULO = 'auth_login_titulo';
    const AUTH_LOGIN_DESCRIPCION = 'auth_login_descripcion';
    const AUTH_LOGIN_DESHABILITADO = 'auth_login_error_al_iniciar_sesion';
    const AUTH_FORMULARIO_LOGIN_TITULO = 'auth_formulario_login_titulo';
    const AUTH_FORMULARIO_LOGIN_SUBTITULO = 'auth_formulario_login_subtitulo';
    const AUTH_FORMULARIO_LOGIN_EMAIL_O_USUARIO = 'auth_formulario_login_email_o_usuario';
    const AUTH_FORMULARIO_LOGIN_EMAIL_O_USUARIO_ERROR = 'auth_formulario_login_email_o_usuario_error';
    const AUTH_FORMULARIO_LOGIN_PASSWORD = 'auth_formulario_login_password';
    const AUTH_FORMULARIO_LOGIN_PASSWORD_ERROR = 'auth_formulario_login_password_error';
    const AUTH_FORMULARIO_LOGIN_RECORDARME = 'auth_formulario_login_recordarme';
    const AUTH_FORMULARIO_LOGIN_LINK_RECUPERAR_CUENTA = 'auth_formulario_login_link_recuperar_cuenta';
    const AUTH_FORMULARIO_LOGIN_ENVIAR = 'auth_formulario_login_enviar';
    const AUTH_LOGIN_ERROR_CUENTA_INACTIVA = 'auth_login_error_cuenta_inactiva';
    const AUTH_LOGIN_ERROR_DESCONOCIDO = 'auth_login_error_desconocido';
    const AUTH_LOGIN_ERROR_EMAIL_NO_VALIDADO = 'auth_login_error_email_no_validado';
    const AUTH_LOGIN_ERROR_USUARIO_Y_PASSWORD_NO_COINCIDEN = 'auth_login_error_usuario_y_password_no_coinciden';
    const AUTH_LOGIN_REGISTRAR_TITULO = 'auth_login_registrar_titulo';
    const AUTH_LOGIN_REGISTRAR_DESCRIPCION = 'auth_login_registrar_descripcion';
    const AUTH_LOGIN_REGISTRAR_BOTON = 'auth_login_registrar_boton';
    const AUTH_LOGIN_REDES_TITULO = 'auth_login_redes_titulo';
    const AUTH_LOGIN_REDES_DESCRIPCION = 'auth_login_redes_descripcion';
    const AUTH_LOGOUT_MENSAJE_DESPEDIDA = 'auth_logout_mensaje_despedida';
    const AUTH_LOGIN_BARRA_TITULO = 'auth_login_barra_titulo';
    const AUTH_LOGIN_BARRA_BOTON = 'auth_login_barra_boton';
 
    /***************************************************
     *                  PANEL
     ***************************************************/
    const PANEL_MIS_CURSOS = 'panel_mis_cursos';
    const PANEL_TITULO = 'panel_titulo';
    const PANEL_CUENTA = 'panel_cuenta';
    const PANEL_SIN_COMPRAS = 'panel_sin_compras';
    const PANEL_SIN_CURSOS = 'panel_sin_cursos';
    const PANEL_SIN_DESEOS = 'panel_sin_deseos';
    const PANEL_TAB_MIS_COMPRAS = 'panel_tab_mis_compras';
    const PANEL_TAB_MIS_CURSOS = 'panel_tab_mis_cursos';
    const PANEL_TAB_MIS_DESEOS = 'panel_tab_mis_deseos';
    const PANEL_PROGRESO = 'panel_progreso';
 
    /***************************************************
     *                  SECURITY
     ***************************************************/
    // security
    const AUTH_NO_TIENE_ACCESOS = 'auth_no_tiene_accesos';
 
    /***************************************************
     *                  USUARIOS
     ***************************************************/
    // usuario
    const USUARIO_INICIAR_SESION = 'usuario_iniciar_sesion';
    const USUARIO_CERRAR_SESION = 'usuario_cerrar_sesion';
    const USUARIO_RECUPERAR_CUENTA = 'usuario_recuperar_cuenta';
    const USUARIO_CUENTA_IMAGEN_DE_FONDO = 'usuario_cuenta_imagen_de_fondo';
 
    // usuarios registro
    const USUARIOS_REGISTRAR_YA_TIENE_SESION = 'usuarios_registrar_ya_tiene_sesion';
    const USUARIOS_REGISTRAR_NO_HABILITADO = 'usuarios_registrar_no_habilitado';
    const USUARIOS_REGISTRAR_DESCRIPCION = 'usuarios_registrar_descripcion';
    const USUARIOS_REGISTRAR_FORMULARIO_TITULO = 'usuarios_registrar_formulario_titulo';
    const USUARIOS_REGISTRAR_FORMULARIO_SUBTITULO = 'usuarios_registrar_formulario_subtitulo';
    const USUARIOS_REGISTRAR_FORMULARIO_NOMBRE = 'usuarios_registrar_formulario_nombre';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_NOMBRE = 'usuarios_registrar_formulario_error_nombre';
    const USUARIOS_REGISTRAR_FORMULARIO_APELLIDO = 'usuarios_registrar_formulario_apellido';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_APELLIDO = 'usuarios_registrar_formulario_error_apellido';
    const USUARIOS_REGISTRAR_FORMULARIO_EMAIL = 'usuarios_registrar_formulario_email';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_EMAIL = 'usuarios_registrar_formulario_error_email';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_EMAIL_EXISTENTE = 'usuarios_registrar_formulario_error_email_existente';
    const USUARIOS_REGISTRAR_FORMULARIO_EMAIL_CONFIRMACION = 'usuarios_registrar_formulario_email_confirmacion';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_EMAIL_CONFIRMACION = 'usuarios_registrar_formulario_error_email_confirmacion';
    const USUARIOS_REGISTRAR_FORMULARIO_PASSWORD = 'usuarios_registrar_formulario_password';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_PASSWORD = 'usuarios_registrar_formulario_error_password';
    const USUARIOS_REGISTRAR_FORMULARIO_PASSWORD_CONFIRMACION = 'usuarios_registrar_formulario_password_confirmacion';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_PASSWORD_CONFIRMACION = 'usuarios_registrar_formulario_error_password_confirmacion';
    const USUARIOS_REGISTRAR_FORMULARIO_SEXO = 'usuarios_registrar_formulario_sexo';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_SEXO = 'usuarios_registrar_formulario_error_sexo';
    const USUARIOS_REGISTRAR_FORMULARIO_NACIONALIDAD = 'usuarios_registrar_formulario_nacionalidad';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_NACIONALIDAD = 'usuarios_registrar_formulario_error_nacionalidad';
    const USUARIOS_REGISTRAR_FORMULARIO_ACEPTAR_CONDICIONES = 'usuarios_registrar_formulario_aceptar_condiciones';
    const USUARIOS_REGISTRAR_FORMULARIO_ERROR_ACEPTAR_CONDICIONES = 'usuarios_registrar_formulario_error_aceptar_condiciones';
    const USUARIOS_REGISTRAR_FORMULARIO_ENVIAR = 'usuarios_registrar_formulario_enviar';
    const USUARIOS_REGISTRAR_CORRECTAMENTE = 'usuarios_registrar_correctamente';
    const USUARIOS_REGISTRAR_ERROR = 'usuarios_registrar_error';
 
    // usuarios validar
    const USUARIOS_VALIDAR_DESCRIPCION = 'usuarios_validar_descripcion';
    const USUARIOS_VALIDAR_FORMULARIO_TITULO = 'usuarios_validar_formulario_titulo';
    const USUARIOS_VALIDAR_FORMULARIO_EMAIL = 'usuarios_validar_formulario_email';
    const USUARIOS_VALIDAR_FORMULARIO_ERROR_EMAIL = 'usuarios_validar_formulario_error_email';
    const USUARIOS_VALIDAR_FORMULARIO_CODIGO = 'usuarios_validar_formulario_codigo';
    const USUARIOS_VALIDAR_FORMULARIO_ERROR_CODIGO = 'usuarios_validar_formulario_error_codigo';
    const USUARIOS_VALIDAR_FORMULARIO_ENVIAR = 'usuarios_validar_formulario_enviar';
    const USUARIOS_VALIDAR_FORMULARIO_REENVIAR_CODIGO = 'usuarios_validar_formulario_reenviar_codigo';
    const USUARIOS_VALIDAR_CORRECTAMENTE = 'usuarios_validar_correctamente';
    const USUARIOS_VALIDAR_ERROR = 'usuarios_validar_error';
    const USUARIOS_VALIDAR_ERROR_EMAIL_NO_EXISTE = 'usuarios_validar_error_email_no_existe';
    const USUARIOS_VALIDAR_ERROR_CODIGO_VALIDACION_INCORRECTO = 'usuarios_validar_error_codigo_validacion_incorrecto';
    const USUARIOS_VALIDAR_YA_ESTA_VALIDADO = 'usuarios_validar_ya_esta_validado';
    const USUARIOS_VALIDAR_SIN_SOPORTE_MANUAL_DESCRIPCION = 'usuarios_validar_sin_soporte_manual_descripcion';
 
    // usuarios recuperar cuenta
    const USUARIOS_RECUPERAR_CUENTA_TITULO = 'usuarios_recuperar_cuenta_titulo';
    const USUARIOS_RECUPERAR_CUENTA_DESCRIPCION = 'usuarios_recuperar_cuenta_descripcion';
    const USUARIOS_RECUPERAR_CUENTA_YA_TIENE_SESION = 'usuarios_recuperar_cuenta_ya_tiene_sesion';
    const USUARIOS_RECUPERAR_CUENTA_EMAIL = 'usuarios_recuperar_cuenta_email';
    const USUARIOS_RECUPERAR_CUENTA_EMAIL_ERROR = 'usuarios_recuperar_cuenta_email_error';
    const USUARIOS_RECUPERAR_CUENTA_ENVIAR = 'usuarios_recuperar_cuenta_enviar';
    const USUARIOS_RECUPERAR_CUENTA_RESULTADO_OK = 'usuarios_recuperar_cuenta_resultado_ok';
    const USUARIOS_RECUPERAR_CUENTA_RESULTADO_ERROR = 'usuarios_recuperar_cuenta_resultado_error';
 
    // usuarios listado público
    const USUARIOS_LISTADO_TITULO = 'usuarios_listado_titulo';
    const USUARIOS_LISTADO_VOLVER = 'usuarios_listado_volver';
    const USUARIOS_LISTADO_ULTIMA_EXPERIENCIA_ACADEMICA = 'usuarios_listado_ultima_experiencia_academica';
    const USUARIOS_LISTADO_ULTIMA_EXPERIENCIA_LABORAL = 'usuarios_listado_ultima_experiencia_laboral';
    const USUARIOS_LISTADO_CONTADOR_GRUPO_ACTIVIDADES = 'usuarios_listado_contador_grupo_actividades';
    const USUARIOS_LISTADO_CONTADOR_GRUPO_COMUNIDAD = 'usuarios_listado_contador_grupo_comunidad';
    const USUARIOS_LISTADO_CONTADOR_ESTUDIANDO = 'usuarios_listado_contador_estudiando';
    const USUARIOS_LISTADO_CONTADOR_TERMIANDOS = 'usuarios_listado_contador_terminados';
    const USUARIOS_LISTADO_CONTADOR_SIGUIENDO = 'usuarios_listado_contador_siguiendo';
    const USUARIOS_LISTADO_CONTADOR_SEGUIDORES = 'usuarios_listado_contador_seguidores';
    const USUARIOS_LISTADO_BOTON_SEGUIR = 'usuarios_listado_boton_seguir';
    const USUARIOS_LISTADO_BOTON_SEGUIR_EXPLICACION = 'usuarios_listado_boton_seguir_explicacion';
    const USUARIOS_LISTADO_BOTON_DEJAR_DE_SEGUIR = 'usuarios_listado_boton_dejar_de_seguir';
    const USUARIOS_LISTADO_BOTON_DEJAR_DE_SEGUIR_EXPLICACION = 'usuarios_listado_boton_dejar_de_seguir_explicacion';
    const USUARIOS_LISTADO_ENVIAR_MENSAJE = 'usuarios_listado_enviar_mensaje';
    const USUARIOS_LISTADO_ICONO_EXPERIENCIA_ACADEMICA = 'usuarios_listado_icono_experiencia_academica';
    const USUARIOS_LISTADO_ICONO_EXPERIENCIA_LABORAL = 'usuarios_listado_icono_experiencia_laboral';
    const USUARIOS_LISTADO_ICONO_ESTUDIANDO = 'usuarios_listado_icono_estudiando';
    const USUARIOS_LISTADO_ICONO_TERMIANDOS = 'usuarios_listado_icono_terminados';
    const USUARIOS_LISTADO_ICONO_SIGUIENDO = 'usuarios_listado_icono_siguiendo';
    const USUARIOS_LISTADO_ICONO_SEGUIDORES = 'usuarios_listado_icono_seguidores';
    const USUARIOS_LISTADO_ICONO_ENVIAR_MENSAJE = 'usuarios_listado_icono_enviar_mensaje';
 
    // usuarios seguidores
    const USUARIOS_SEGUIDORES_TITULO = 'usuarios_seguidores_titulo';
 
    // usuarios siguiendo
    const USUARIOS_SIGUIENDO_TITULO = 'usuarios_siguiendo_titulo';
 
    // buscar usuarios
    const USUARIOS_BUSCAR_PARAMETRO = 'usuarios_buscar_parametro';
    const USUARIOS_BUSCAR_PARAMETRO_AYUDA = 'usuarios_buscar_parametro_ayuda';
    const USUARIOS_BUSCAR_PARAMETRO_ERROR = 'usuarios_buscar_parametro_error';
    const USUARIOS_BUSCAR_BOTON_BUSCAR = 'usuarios_buscar_boton_buscar';
    const USUARIOS_BUSCAR_SIN_RESULTADOS = 'usuarios_buscar_sin_resultados';
    const USUARIOS_BUSCAR_UN_RESULTADO = 'usuarios_buscar_un_resultado';
    const USUARIOS_BUSCAR_MAS_RESULTADOS = 'usuarios_buscar_mas_resultados';
 
    // usuarios ver perfil público
    const USUARIOS_VER_PERFIL_PUBLICO = 'usuarios_ver_perfil_publico';
    const USUARIOS_VER_PERFIL_ESTADO_ICONO = 'usuarios_ver_perfil_estado_icono';
    const USUARIOS_VER_PERFIL_ESTADO_PUBLICO = 'usuarios_ver_perfil_estado_publico';
    const USUARIOS_VER_PERFIL_ESTADO_PRIVADO = 'usuarios_ver_perfil_estado_privado';
    const USUARIOS_VER_PERFIL_DESCRIPCION_VER_MAS = 'usuarios_ver_perfil_descripcion_ver_mas';
    const USUARIOS_VER_NO_ENCONTRADO = 'usuarios_ver_no_encontrado';
    const USUARIOS_VER_EXPERIENCIA_ACADEMICA = 'usuarios_ver_experiencia_academica';
    const USUARIOS_VER_EXPERIENCIA_ACADEMICA_BOTON_MODIFICAR = 'usuarios_ver_experiencia_academica_boton_modificar';
    const USUARIOS_VER_EXPERIENCIA_ACADEMICA_NO_HAY_EXPERIENCIA = 'usuarios_ver_experiencia_academica_no_hay_experiencia';
    const USUARIOS_VER_EXPERIENCIA_LABORAL = 'usuarios_ver_experiencia_laboral';
    const USUARIOS_VER_EXPERIENCIA_LABORAL_BOTON_MODIFICAR = 'usuarios_ver_experiencia_laboral_boton_modificar';
    const USUARIOS_VER_EXPERIENCIA_LABORAL_NO_HAY_EXPERIENCIA = 'usuarios_ver_experiencia_laboral_no_hay_experiencia';
    const USUARIOS_VER_MIS_CURSOS_COMO_DISENADOR = 'usuarios_ver_mis_cursos_como_disenador';
    const USUARIOS_VER_MIS_CURSOS_COMO_PRODUCTORA = 'usuarios_ver_mis_cursos_como_productora';
    const USUARIOS_VER_MIS_CURSOS_COMO_PROFESOR = 'usuarios_ver_mis_cursos_como_profesor';
    const USUARIOS_VER_MIS_PROGRESOS = 'usuarios_ver_mis_progresos';
    const USUARIOS_VER_MIS_DESEOS = 'usuarios_ver_mis_deseos';
    const USUARIOS_VER_MIS_DESEOS_BORRAR = 'usuarios_ver_mis_deseos_borrar';
    const USUARIOS_VER_MIS_DESEOS_BORRAR_EXPLICACION = 'usuarios_ver_mis_deseos_borrar_explicacion';
    const USUARIOS_VER_MIS_DATOS = 'usuarios_ver_mis_datos';
    const USUARIOS_VER_MIS_DATOS_BOTON_MODIFICAR = 'usuarios_ver_mis_datos_boton_modificar';
    const USUARIOS_VER_MIS_ENLACES = 'usuarios_ver_mis_enlaces';
    const USUARIOS_VER_MIS_ENLACES_BOTON_MODIFICAR = 'usuarios_ver_mis_enlaces_boton_modificar';
    const USUARIOS_VER_MIS_ENLACES_NO_HAY_ENLACES = 'usuarios_ver_mis_enlaces_no_hay_enlaces';
    const USUARIOS_VER_MIS_ENLACES_PREFIJO_WEB = 'usuarios_ver_mis_enlaces_prefijo_web';
    const USUARIOS_VER_MIS_DIPLOMAS = 'usuarios_ver_mis_diplomas';
    const USUARIOS_VER_MIS_DIPLOMAS_IR_AL_DIPLOMA = 'usuarios_ver_mis_diplomas_ir_al_diploma';
    const USUARIOS_VER_MIS_DIPLOMAS_IR_AL_DIPLOMA_DESCRIPCION = 'usuarios_ver_mis_diplomas_ir_al_diploma_descripcion';
    const USUARIOS_VER_DATOS_NOMBRE_COMPLETO = 'usuarios_ver_datos_nombre_completo';
    const USUARIOS_VER_DATOS_FECHA_NACIMIENTO = 'usuarios_ver_datos_fecha_nacimiento';
    const USUARIOS_VER_DATOS_EDAD = 'usuarios_ver_datos_edad';
    const USUARIOS_VER_DATOS_PAIS_DE_RESIDENCIA = 'usuarios_ver_datos_pais_de_residencia';
    const USUARIOS_VER_DATOS_NACIONALIDAD = 'usuarios_ver_datos_nacionalidad';
    const USUARIOS_VER_DATOS_SEXO = 'usuarios_ver_datos_sexo';
    const USUARIOS_VER_DATOS_ESTADO_CIVIL = 'usuarios_ver_datos_estado_civil';
    const USUARIOS_VER_DATOS_FECHA_REGISTRO = 'usuarios_ver_datos_fecha_registro';
    const USUARIOS_VER_IR_A_PERFILES = 'usuarios_ver_ir_a_perfiles';
    const USUARIOS_VER_IR_A_FINANZAS = 'usuarios_ver_ir_a_finanzas';
    const USUARIOS_VER_IR_A_FINANZAS_EXPLICACION = 'usuarios_ver_ir_a_finanzas_explicacion';
    const USUARIOS_VER_IR_A_DETALLE_DE_CURSO = 'usuarios_ver_ir_a_detalle_de_curso';
    const USUARIOS_VER_IR_A_DETALLE_DE_CURSO_EXPLICACION = 'usuarios_ver_ir_a_detalle_de_curso_explicacion';
    const USUARIOS_VER_IR_A_EDITAR_CURSO_EXPLICACION = 'usuarios_ver_ir_a_editar_curso_explicacion';
 
    // usuarios ver perfil público v2
    const USUARIOS_VER_V2_MIS_CURSOS_TITULO = 'usuarios_ver_v2_mis_cursos_titulo';
    const USUARIOS_VER_V2_MIS_CURSOS_SUBTITULO = 'usuarios_ver_v2_mis_cursos_subtitulo';
    const USUARIOS_VER_V2_MIS_CURSOS_COMPLETADO = 'usuarios_ver_v2_mis_cursos_completado';
    const USUARIOS_VER_V2_MIS_CURSOS_PROGRESO = 'usuarios_ver_v2_mis_cursos_progreso';
    const USUARIOS_VER_V2_MIS_CURSOS_NO_ESTRENADO = 'usuarios_ver_v2_mis_cursos_no_estrenado';
    const USUARIOS_VER_V2_CURSOS_DESTACADOS_TITULO = 'usuarios_ver_v2_cursos_destacados_titulo';
    const USUARIOS_VER_V2_CURSOS_DESTACADOS_SUBTITULO = 'usuarios_ver_v2_cursos_destacados_subtitulo';
    const USUARIOS_VER_V2_CURSOS_DESTACADOS_MAS_INFO = 'usuarios_ver_v2_cursos_destacados_mas_info';
 
    // denuncias
    const USUARIOS_DENUNCIAS_BOTON = 'usuarios_denuncias_boton';
    const USUARIOS_DENUNCIAS_BOTON_EXPLICACION = 'usuarios_denuncias_boton_explicacion';
    const USUARIOS_DENUNCIAS_FORMULARIO_TITULO = 'usuarios_denuncias_formulario_titulo';
    const USUARIOS_DENUNCIAS_FORMULARIO_INFORMACION_EXTRA = 'usuarios_denuncias_formulario_informacion_extra';
    const USUARIOS_DENUNCIAS_FORMULARIO_DESCRIPCION_LABEL = 'usuarios_denuncias_formulario_descripcion_label';
    const USUARIOS_DENUNCIAS_FORMULARIO_DESCRIPCION_ERROR = 'usuarios_denuncias_formulario_descripcion_error';
    const USUARIOS_DENUNCIAS_FORMULARIO_BOTON_SUBMIT = 'usuarios_denuncias_formulario_boton_submit';
    const USUARIOS_DENUNCIAS_REGISTRADO_OK = 'usuarios_denuncias_registrado_ok';
    const USUARIOS_DENUNCIAS_REGISTRADO_ERROR = 'usuarios_denuncias_registrdo_error';
 
    // roles
    const ROL_ADMINISTRADOR = 'rol_administrador';
    const ROL_DISENADOR = 'rol_disenador';
    const ROL_INVITADO = 'rol_invitado';
    const ROL_PRODUCTORA = 'rol_productora';
    const ROL_PROFESOR = 'rol_profesor';
    const ROL_USUARIO = 'rol_usuario';
 
    /****************************************
     *              CUENTAS
     ****************************************/
 
    // cuentas de usuarios datos personales
    const CUENTAS_TITULO = 'cuentas_titulo';
    const CUENTAS_DATOS_TITULO_MENU = 'cuentas_datos_titulo_menu';
    const CUENTAS_FORMULARIO_DATOS_TITULO = 'cuentas_formulario_datos_titulo';
    const CUENTAS_FORMULARIO_DATOS_TITULO_CATEGORIAS_DE_INTERES = 'cuentas_formulario_datos_titulo_categorias_de_interes';
    const CUENTAS_FORMULARIO_DATOS_TITULO_TUS_ENLACES = 'cuentas_formulario_datos_tus_enlaces';
    const CUENTAS_FORMULARIO_DATOS_NOMBRE_DE_USUARIO = 'cuentas_formulario_datos_nombre_de_usuario';
    const CUENTAS_FORMULARIO_DATOS_NOMBRE_DE_USUARIO_AYUDA = 'cuentas_formulario_datos_nombre_de_usuario_ayuda';
    const CUENTAS_FORMULARIO_DATOS_NOMBRE_DE_USUARIO_ERROR = 'cuentas_formulario_datos_nombre_de_usuario_error';
    const CUENTAS_FORMULARIO_DATOS_NOMBRE_DE_USUARIO_ERROR_YA_EXISTE = 'cuentas_formulario_datos_nombre_de_usuario_error_ya_existe';
    const CUENTAS_FORMULARIO_DATOS_NOMBRE = 'cuentas_formulario_datos_nombre';
    const CUENTAS_FORMULARIO_DATOS_NOMBRE_ERROR = 'cuentas_formulario_datos_nombre_error';
    const CUENTAS_FORMULARIO_DATOS_APELLIDO = 'cuentas_formulario_datos_apellido';
    const CUENTAS_FORMULARIO_DATOS_APELLIDO_ERROR = 'cuentas_formulario_datos_apellido_error';
    const CUENTAS_FORMULARIO_DATOS_EMAIL = 'cuentas_formulario_datos_email';
    const CUENTAS_FORMULARIO_DATOS_EMAIL_ERROR = 'cuentas_formulario_datos_email_error';
    const CUENTAS_FORMULARIO_DATOS_EMAIL_ERROR_YA_EXISTE = 'cuentas_formulario_datos_email_error_ya_existe';
    const CUENTAS_FORMULARIO_DATOS_EMAIL_AYUDA = 'cuentas_formulario_datos_email_ayuda';
    const CUENTAS_FORMULARIO_DATOS_NACIONALIDAD = 'cuentas_formulario_datos_nacionalidad';
    const CUENTAS_FORMULARIO_DATOS_NACIONALIDAD_ERROR = 'cuentas_formulario_datos_nacionalidad_error';
    const CUENTAS_FORMULARIO_DATOS_RESIDENCIA = 'cuentas_formulario_datos_residencia';
    const CUENTAS_FORMULARIO_DATOS_RESIDENCIA_ERROR = 'cuentas_formulario_datos_residencia_error';
    const CUENTAS_FORMULARIO_DATOS_ESTADO_CIVIL = 'cuentas_formulario_datos_estado_civil';
    const CUENTAS_FORMULARIO_DATOS_ESTADO_CIVIL_ERROR = 'cuentas_formulario_datos_estado_civil_error';
    const CUENTAS_FORMULARIO_DATOS_ESTADO_CIVIL_OPCIONAL = 'cuentas_formulario_datos_estado_civil_opcional';
    const CUENTAS_FORMULARIO_DATOS_SEXO = 'cuentas_formulario_datos_sexo';
    const CUENTAS_FORMULARIO_DATOS_SEXO_ERROR = 'cuentas_formulario_datos_sexo_error';
    const CUENTAS_FORMULARIO_DATOS_SOBRE_MI = 'cuentas_formulario_datos_sobre_mi';
    const CUENTAS_FORMULARIO_DATOS_FECHA_NACIMIENTO = 'cuentas_formulario_datos_fecha_nacimiento';
    const CUENTAS_FORMULARIO_DATOS_FECHA_NACIMIENTO_ERROR = 'cuentas_formulario_datos_fecha_nacimiento_error';
    const CUENTAS_FORMULARIO_DATOS_MOSTRAR_EDAD = 'cuentas_formulario_datos_mostrar_edad';
    const CUENTAS_FORMULARIO_DATOS_MOSTRAR_EDAD_EXPLICACION = 'cuentas_formulario_datos_mostrar_edad_explicacion';
    const CUENTAS_FORMULARIO_DATOS_WEB = 'cuentas_formulario_datos_web';
    const CUENTAS_FORMULARIO_DATOS_WEB_ERROR = 'cuentas_formulario_datos_web_error';
    const CUENTAS_FORMULARIO_DATOS_ENVIAR = 'cuentas_formulario_datos_enviar';
    const CUENTAS_FORMULARIO_DATOS_GUARDAR_OK = 'cuentas_formulario_datos_guardar_ok';
    const CUENTAS_FORMULARIO_DATOS_GUARDAR_ERROR = 'cuentas_formulario_datos_guardar_error';
 
    // Experiencias
    const CUENTAS_EXPERIENCIAS_TITULO = 'cuentas_experiencias_titulo';
    const CUENTAS_EXPERIENCIAS_TITULO_MENU = 'cuentas_experiencias_titulo_menu';
    const CUENTAS_EXPERIENCIAS_ACADEMICAS = 'cuentas_experiencias_academicas';
    const CUENTAS_EXPERIENCIAS_ACADEMICAS_INSTITUCION = 'cuentas_experiencias_academicas_institucion';
    const CUENTAS_EXPERIENCIAS_ACADEMICAS_TITULO = 'cuentas_experiencias_academicas_titulo';
    const CUENTAS_EXPERIENCIAS_LABORALES = 'cuentas_experiencias_laborales';
    const CUENTAS_EXPERIENCIAS_LABORALES_EMPRESA = 'cuentas_experiencias_laborales_empresa';
    const CUENTAS_EXPERIENCIAS_LABORALES_CARGO = 'cuentas_experiencias_laborales_cargo';
    const CUENTAS_EXPERIENCIAS_OPCIONES = 'cuentas_experiencias_opciones';
    const CUENTAS_EXPERIENCIAS_BOTON_AGREGAR = 'cuentas_experiencias_boton_agregar';
    const CUENTAS_EXPERIENCIAS_BOTON_AGREGAR_ICONO = 'cuentas_experiencias_boton_agregar_icono';
    const CUENTAS_EXPERIENCIAS_BORRAR_EXPLICACION = 'cuentas_experiencias_borrar_explicacion';
    const CUENTAS_EXPERIENCIAS_BORRAR_LABEL = 'cuentas_experiencias_borrar_label';
    const CUENTAS_EXPERIENCIAS_ORDENAR_EXPLICACION = 'cuentas_experiencias_ordenar_explicacion';
    const CUENTAS_EXPERIENCIAS_ORDENAR_LABEL = 'cuentas_experiencias_ordenar_label';
    const CUENTAS_EXPERIENCIAS_ENVIAR = 'cuentas_experiencias_enviar';
    const CUENTAS_EXPERIENCIAS_ENVIAR_ICONO = 'cuentas_experiencias_enviar_icono';
    const CUENTAS_EXPERIENCIAS_OK = 'cuentas_experiencias_ok';
    const CUENTAS_EXPERIENCIAS_ERROR = 'cuentas_experiencias_error';
 
    // Imágenes
    const CUENTAS_IMAGENES_TITULO = 'cuentas_imagenes_titulo';
    const CUENTAS_IMAGENES_TITULO_MENU = 'cuentas_imagenes_titulo_menu';
    const CUENTAS_IMAGENES_FORMULARIO_AVATAR = 'cuentas_imagenes_formulario_avatar';
    const CUENTAS_IMAGENES_FORMULARIO_AVATAR_AUN_NO_CARGADO = 'cuentas_imagenes_formulario_avatar_aun_no_cargado';
    const CUENTAS_IMAGENES_FORMULARIO_AVATAR_ERROR = 'cuentas_imagenes_formulario_avatar_error';
    const CUENTAS_IMAGENES_FORMULARIO_FONDO = 'cuentas_imagenes_formulario_fondo';
    const CUENTAS_IMAGENES_FORMULARIO_FONDO_AUN_NO_CARGADO = 'cuentas_imagenes_formulario_fondo_aun_no_cargado';
    const CUENTAS_IMAGENES_FORMULARIO_FONDO_ERROR = 'cuentas_imagenes_formulario_fondo_error';
    const CUENTAS_IMAGENES_FORMULARIO_ENVIAR = 'cuentas_imagenes_formulario_enviar';
    const CUENTAS_IMAGENES_GUARDADO_OK = 'cuentas_imagenes_guardado_ok';
    const CUENTAS_IMAGENES_GUARDADO_ERROR = 'cuentas_imagenes_guardado_error';
    const CUENTAS_IMAGENES_BORRAR_BOTON = 'cuentas_imagenes_borrar_boton';
    const CUENTAS_IMAGENES_BORRAR_BOTON_DESRIPCION = 'cuentas_imagenes_borrar_boton_descripcion';
 
    // Privacidad
    const CUENTAS_PRIVACIDAD_TITULO = 'cuentas_privacidad_titulo';
    const CUENTAS_PRIVACIDAD_TITULO_MENU = 'cuentas_privacidad_titulo_menu';
    const CUENTAS_PRIVACIDAD_PUBLICA = 'cuentas_privacidad_publica';
    const CUENTAS_PRIVACIDAD_PUBLICA_PRIVILEGIOS_GANADOS = 'cuentas_privacidad_publica_privilegios_ganados';
    const CUENTAS_PRIVACIDAD_PUBLICA_PRIVILEGIOS_PERDIDOS = 'cuentas_privacidad_publica_privilegios_perdidos';
    const CUENTAS_PRIVACIDAD_NOTIFICACIONES = 'cuentas_privacidad_notificaciones';
    const CUENTAS_PRIVACIDAD_NOTIFICACIONES_PRIVILEGIOS_GANADOS = 'cuentas_privacidad_notificaciones_privilegios_ganados';
    const CUENTAS_PRIVACIDAD_NOTIFICACIONES_PRIVILEGIOS_PERDIDOS = 'cuentas_privacidad_notificaciones_privilegios_perdidos';
    const CUENTAS_PRIVACIDAD_MENSAJES_PRIVADOS = 'cuentas_privacidad_mensajes_privados';
    const CUENTAS_PRIVACIDAD_MENSAJES_PRIVADOS_PRIVILEGIOS_GANADOS = 'cuentas_privacidad_mensajes_privados_privilegios_ganados';
    const CUENTAS_PRIVACIDAD_MENSAJES_PRIVADOS_PRIVILEGIOS_PERDIDOS = 'cuentas_privacidad_mensajes_privados_privilegios_perdidos';
    const CUENTAS_PRIVACIDAD_ENVIAR = 'cuentas_privacidad_enviar';
    const CUENTAS_PRIVACIDAD_OK = 'cuentas_privacidad_ok';
    const CUENTAS_PRIVACIDAD_ERROR = 'cuentas_privacidad_error';
 
    // password
    const CUENTAS_PASSWORD_TITULO = 'cuentas_password_titulo';
    const CUENTAS_PASSWORD_TITULO_MENU = 'cuentas_password_titulo_menu';
    const CUENTAS_FORMULARIO_PASSWORD_ACTUAL = 'cuentas_formulario_password_actual';
    const CUENTAS_FORMULARIO_PASSWORD_ACTUAL_ERROR = 'cuentas_formulario_password_actual_error';
    const CUENTAS_FORMULARIO_PASSWORD_ACTUAL_ERROR_NO_COINCIDE = 'cuentas_formulario_password_actual_error_no_coincide';
    const CUENTAS_FORMULARIO_PASSWORD_NUEVO = 'cuentas_formulario_password_nuevo';
    const CUENTAS_FORMULARIO_PASSWORD_NUEVO_ERROR = 'cuentas_formulario_password_nuevo_error';
    const CUENTAS_FORMULARIO_PASSWORD_ENVIAR = 'cuentas_formulario_password_enviar';
    const CUENTAS_FORMULARIO_PASSWORD_GUARDAR_OK = 'cuentas_formulario_password_guardar_ok';
    const CUENTAS_FORMULARIO_PASSWORD_GUARDAR_ERROR = 'cuentas_formulario_password_guardar_error';
    const CUENTAS_FORMULARIO_PASSWORD_ACTUALIZACION_FORZADA = 'cuentas_formulario_password_actualizacion_forzada';
 
    // agregar email
    const CUENTAS_AGREGAR_EMAIL_TITULO = 'cuentas_agregar_email_titulo';
    const CUENTAS_AGREGAR_EMAIL_DESCRIPCION = 'cuentas_agregar_email_descripcion';
    const CUENTAS_FORMULARIO_AGREGAR_EMAIL = 'cuentas_formulario_agregar_email';
    const CUENTAS_FORMULARIO_AGREGAR_EMAIL_ERROR = 'cuentas_formulario_agregar_email_error';
    const CUENTAS_FORMULARIO_AGREGAR_EMAIL_ERROR_EXISTE = 'cuentas_formulario_agregar_email_error_existe';
    const CUENTAS_FORMULARIO_AGREGAR_EMAIL_ENVIAR = 'cuentas_formulario_agregar_email_enviar';
    const CUENTAS_FORMULARIO_AGREGAR_EMAIL_GUARDAR_OK = 'cuentas_formulario_agregar_email_guardar_ok';
    const CUENTAS_FORMULARIO_AGREGAR_EMAIL_GUARDAR_ERROR = 'cuentas_formulario_agregar_email_guardar_error';
 
    // Ver compras
    const CUENTAS_VER_COMPRAS_TITULO = 'cuentas_ver_compras_titulo';
    const CUENTAS_VER_COMPRAS_MENU = 'cuentas_ver_compras_menu';
    const CUENTAS_VER_COMPRAS_DESCRIPCION = 'cuentas_ver_compras_descripcion';
    const CUENTAS_VER_COMPRAS_SIN_COMPRAS = 'cuentas_ver_compras_sin_compras';
    const CUENTAS_VER_COMPRAS_SIN_ESTUDIANTE = 'cuentas_ver_compras_sin_estudiante';
    const CUENTAS_VER_COMPRAS_LISTADO_ENCABEZADO_OPERACION = 'cuentas_ver_compras_listado_encabezado_operacion';
    const CUENTAS_VER_COMPRAS_LISTADO_ENCABEZADO_CURSO = 'cuentas_ver_compras_listado_encabezado_curso';
    const CUENTAS_VER_COMPRAS_LISTADO_ENCABEZADO_ESTADO = 'cuentas_ver_compras_listado_encabezado_estado';
    const CUENTAS_VER_COMPRAS_LISTADO_ENCABEZADO_OPCIONES = 'cuentas_ver_compras_listado_encabezado_opciones';
    const CUENTAS_VER_COMPRAS_LISTADO_OPERACION_COMPRA = 'cuentas_ver_compras_listado_operacion_compra';
    const CUENTAS_VER_COMPRAS_LISTADO_OPERACION_REGALO = 'cuentas_ver_compras_listado_operacion_regalo';
    const CUENTAS_VER_COMPRAS_LISTADO_ESTADO_PAGADO = 'cuentas_ver_compras_listado_estado_pagado';
    const CUENTAS_VER_COMPRAS_LISTADO_ESTADO_BECA = 'cuentas_ver_compras_listado_estado_beca';
    const CUENTAS_VER_COMPRAS_LISTADO_ESTADO_ADEUDADO = 'cuentas_ver_compras_listado_estado_adeudado';
    const CUENTAS_VER_COMPRAS_LISTADO_OPCION_VER_DETALLE = 'cuentas_ver_compras_listado_opcion_ver_detalle';
    const CUENTAS_VER_COMPRAS_LISTADO_DETALLE_REGALO_USUARIO = 'cuentas_ver_compras_listado_detalle_regalo_usuario';
    const CUENTAS_VER_COMPRAS_LISTADO_DETALLE_REGALO_DEDICATORIA = 'cuentas_ver_compras_listado_detalle_regalo_dedicatoria';
    const CUENTAS_VER_COMPRAS_LISTADO_DETALLE_FECHA = 'cuentas_ver_compras_listado_detalle_fecha';
    const CUENTAS_VER_COMPRAS_LISTADO_DETALLE_MEDIO_DE_PAGO = 'cuentas_ver_compras_listado_detalle_medio_de_pago';
    const CUENTAS_VER_COMPRAS_LISTADO_DETALLE_MONTO = 'cuentas_ver_compras_listado_detalle_monto';
    const CUENTAS_VER_COMPRAS_LISTADO_DETALLE_ESTADO_DE_PAGO = 'cuentas_ver_compras_listado_detalle_estado_de_pago';
    const CUENTAS_VER_COMPRAS_LISTADO_DETALLE_ESTADO_DE_PAGO_DETALLE = 'cuentas_ver_compras_listado_detalle_estado_de_pago_detalle';
 
    // Cerrar cuenta
    const CUENTAS_CERRAR_CUENTA_TITULO = 'cuentas_cerrar_cuenta_titulo';
    const CUENTAS_CERRAR_CUENTA_MENU = 'cuentas_cerrar_cuenta_menu';
    const CUENTAS_CERRAR_CUENTA_DESCRIPCION = 'cuentas_cerrar_cuenta_descripcion';
    const CUENTAS_FORMULARIO_CERRAR_CUENTA_PASSWORD_ACTUAL = 'cuentas_formulario_cerrar_cuenta_password_actual';
    const CUENTAS_FORMULARIO_CERRAR_CUENTA_PASSWORD_ACTUAL_ERROR = 'cuentas_formulario_cerrar_cuenta_password_actual_error';
    const CUENTAS_FORMULARIO_CERRAR_CUENTA_PASSWORD_ACTUAL_ERROR_NO_COINCIDE = 'cuentas_formulario_password_cerrar_cuenta_actual_error_no_coincide';
    const CUENTAS_FORMULARIO_CERRAR_CUENTA_ENVIAR = 'cuentas_formulario_cerrar_cuenta_enviar';
    const CUENTAS_FORMULARIO_CERRAR_CUENTA_OK = 'cuentas_formulario_cerrar_cuenta_ok';
    const CUENTAS_FORMULARIO_CERRAR_CUENTA_ERROR = 'cuentas_formulario_cerrar_cuenta_error';
 
    // mensajes privados
    const MENSAJES_PRIVADOS_BANDEJA_DE_ENTRADA_TITULO = 'mensajes_privados_bandeja_de_entrada_titulo';
    const MENSAJES_PRIVADOS_BANDEJA_DE_ENTRADA_MENU = 'mensajes_privados_bandeja_de_entrada_menu';
    const MENSAJES_PRIVADOS_BANDEJA_DE_ENTRADA_SIN_MENSAJES = 'mensajes_privados_bandeja_de_entrada_sin_mensajes';
    const MENSAJES_PRIVADOS_BANDEJA_DE_ENTRADA_SELECCIONAR_REMITENTE = 'mensajes_privados_bandeja_de_entrada_seleccionar_remitente';
    const MENSAJES_PRIVADOS_FORMULARIO_TITULO = 'mensajes_privados_formulario_titulo';
    const MENSAJES_PRIVADOS_FORMULARIO_MENSAJE = 'mensajes_privados_formulario_mensaje';
    const MENSAJES_PRIVADOS_FORMULARIO_MENSAJE_ERROR = 'mensajes_privados_formulario_mensaje_error';
    const MENSAJES_PRIVADOS_FORMULARIO_BOTON_ENVIAR = 'mensajes_privados_formulario_boton_enviar';
    const MENSAJES_PRIVADOS_SERVICIO_DESHABILITADO = 'mensajes_privados_servicio_deshabilitado';
 
    // mensajes públicos
    const MENSAJES_PUBLICOS_MENSAJE = 'mensajes_publicos_mensaje';
    const MENSAJES_PUBLICOS_MENSAJE_ERROR = 'mensajes_publicos_mensaje_error';
    const MENSAJES_PUBLICOS_MENSAJE_A_OTRO_USUARIO = 'mensajes_publicos_mensaje_a_otro_usuario';
    const MENSAJES_PUBLICOS_BOTON_PUBLICAR = 'mensajes_publicos_boton_publicar';
    const MENSAJES_PUBLICOS_RESPONDER = 'mensajes_publicos_responder';
    const MENSAJES_PUBLICOS_BOTON_RESPONDER = 'mensajes_publicos_boton_responder';
    const MENSAJES_PUBLICOS_BOTON_RESPONDER_EXPLICACION = 'mensajes_publicos_boton_responder_explicacion';
    const MENSAJES_PUBLICOS_BOTON_BORRAR = 'mensajes_publicos_boton_borrar';
    const MENSAJES_PUBLICOS_BOTON_BORRAR_TITULO = 'mensajes_publicos_boton_borrar_titulo';
    const MENSAJES_PUBLICOS_BOTON_BORRAR_CONFIRMACION = 'mensajes_publicos_boton_borrar_confirmacion';
    const MENSAJES_PUBLICOS_BOTON_EDITAR = 'mensajes_publicos_boton_editar';
    const MENSAJES_PUBLICOS_BOTON_EDITAR_TITULO = 'mensajes_publicos_boton_editar_titulo';
    const MENSAJES_PUBLICOS_BOTON_VER_RESPUESTAS = 'mensajes_publicos_boton_ver_respuestas';
    const MENSAJES_PUBLICOS_BOTON_VER_RESPUESTAS_AYUDA = 'mensajes_publicos_boton_ver_respuestas_ayuda';
    const MENSAJES_PUBLICOS_BOTON_CAMBIAR_VISIBILIDAD = 'mensajes_publicos_boton_cambiar_visibilidad';
    const MENSAJES_PUBLICOS_BOTON_CAMBIAR_VISIBILIDAD_TITULO = 'mensajes_publicos_boton_cambiar_visibilidad_titulo';
    const MENSAJES_PUBLICOS_PUBLICADO_OK = 'mensajes_publicos_publicado_ok';
    const MENSAJES_PUBLICOS_PUBLICADO_ERROR = 'mensajes_publicos_publicado_error';
    const MENSAJES_PUBLICOS_BORRADO_OK = 'mensajes_publicos_borrado_ok';
    const MENSAJES_PUBLICOS_BORRADO_ERROR = 'mensajes_publicos_borrado_error';
    const MENSAJES_PUBLICOS_EDITADO_OK = 'mensajes_publicos_editado_ok';
    const MENSAJES_PUBLICOS_EDITADO_ERROR = 'mensajes_publicos_editado_error';
    const MENSAJES_PUBLICOS_ESTADO_PUBLICACION_ICONO = 'mensajes_publicos_estado_publicacion_icono';
    const MENSAJES_PUBLICOS_ESTADO_PUBLICACION_COLOR = 'mensajes_publicos_estado_publicacion_color';
    const MENSAJES_PUBLICOS_ESTADO_COMIENZO_CURSO_ICONO = 'mensajes_publicos_estado_comienzo_curso_icono';
    const MENSAJES_PUBLICOS_ESTADO_COMIENZO_CURSO_COLOR = 'mensajes_publicos_estado_comienzo_curso_color';
    const MENSAJES_PUBLICOS_ESTADO_OBTIENE_DIPLOMA_ICONO = 'mensajes_publicos_estado_obtiene_diploma_icono';
    const MENSAJES_PUBLICOS_ESTADO_OBTIENE_DIPLOMA_COLOR = 'mensajes_publicos_estado_obtiene_diploma_color';
    const MENSAJES_PUBLICOS_ESTADO_PUBLICACION_DE_OTRO_USUARIO_ICONO = 'mensajes_publicos_estado_publicacion_de_otro_usuario';
    const MENSAJES_PUBLICOS_IR_A_LISTADO_COMPLETO = 'mensajes_publicos_ir_a_listado_completo';
    const MENSAJES_PUBLICOS_VOLVER_AL_PANEL = 'mensajes_publicos_listado_completo_titulo_volver_al_panel';
    const MENSAJES_PUBLICOS_ERROR_NO_ENCONTRADO = 'mensajes_publicos_error_no_encontrado';
    const MENSAJES_PUBLICOS_ERROR_NO_LE_PERTENECE = 'mensajes_publicos_error_no_le_pertenece';
    const MENSAJES_PUBLICOS_LISTADO_COMPLETO_TITULO = 'mensajes_publicos_listado_completo_titulo';
 
    // Comentarios
    const COMENTARIOS_FORMULARIO_TITULO = 'comentarios_formulario_titulo';
    const COMENTARIOS_MENSAJE = 'comentarios_mensaje';
    const COMENTARIOS_MENSAJE_ERROR = 'comentarios_mensaje_error';
    const COMENTARIOS_BOTON_ENVIAR = 'comentarios_boton_enviar';
    const COMENTARIOS_RESULTADO_OK = 'comentarios_resultado_ok';
    const COMENTARIOS_RESULTADO_ERROR = 'comentarios_resultado_error';
 
    // Paginas informativas
    const PAGINAS_INFORMATIVAS_LISTADO = 'paginas_informativas_listado';
    const PAGINAS_INFORMATIVAS_LISTADO_LISTA = 'paginas_informativas_listado_lista';
    const PAGINAS_INFORMATIVAS_AVISO_PAGINA_PRIVADA = 'paginas_informativas_aviso_pagina_privada';
    const PAGINAS_INFORMATIVAS_POSTER_POR_DEFECTO = 'paginas_informativas_poster_por_defecto';
    const PAGINAS_INFORMATIVAS_BARRA_DESTACADAS_TITULO = 'paginas_informativas_barra_destacadas_titulo';
    const PAGINAS_RELACIONADAS_TITULO = 'paginas_relacionadas_titulo';
    const PAGINAS_CARUSEL_DESTACADAS_TITULO = 'paginas_carusel_destacadas_titulo';
    const PAGINAS_CARUSEL_DESTACADAS_SUBTITULO = 'paginas_carusel_destacadas_subtitulo';
 
    /**************************************
     *              FINANZAS
     **************************************/
 
    const FINANZAS_TITULO = 'finanzas_titulo';
    const FINANZAS_SOLICITAR_COBRO = 'finanzas_solicitar_cobro';
    const FINANZAS_SALDO = 'finanzas_saldo';
    const FINANZAS_LISTADO_FECHA = 'finanzas_listado_fecha';
    const FINANZAS_LISTADO_DETALLE = 'finanzas_listado_detalle';
    const FINANZAS_LISTADO_DETALLE_INGRESO = 'finanzas_listado_detalle_ingreso';
    const FINANZAS_LISTADO_DETALLE_EGRESO = 'finanzas_listado_detalle_egreso';
    const FINANZAS_LISTADO_MONTO = 'finanzas_listado_monto';
    const FINANZAS_LISTADO_MOSTRAR = 'finanzas_listado_mostrar';
    const FINANZAS_LISTADO_MOSTRAR_TODOS = 'finanzas_listado_mostrar_todos';
    const FINANZAS_LISTADO_MOSTRAR_INGRESOS = 'finanzas_listado_mostrar_ingresos';
    const FINANZAS_LISTADO_MOSTRAR_EGRESOS = 'finanzas_listado_mostrar_egresos';
    const FINANZAS_LISTADO_VOLVER_AL_PANEL = 'finanzas_listado_volver_al_panel';
 
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_TITULO = 'finanzas_solicitar_cobro_formulario_titulo';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_EXPLICACION = 'finanzas_solicitar_cobro_formulario_explicacion';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_FACTURA = 'finanzas_solicitar_cobro_formulario_factura';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_FACTURA_AYUDA = 'finanzas_solicitar_cobro_formulario_factura_ayuda';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_FACTURA_ERROR = 'finanzas_solicitar_cobro_formulario_factura_error';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_MONTO = 'finanzas_solicitar_cobro_formulario_monto';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_MONTO_ERROR = 'finanzas_solicitar_cobro_formulario_monto_error';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_DESCRIPCION = 'finanzas_solicitar_cobro_formulario_descripcion';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_BOTON_ENVIAR = 'finanzas_solicitar_cobro_formulario_boton_enviar';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_BOTON_CANCELAR = 'finanzas_solicitar_cobro_formulario_boton_cancelar';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_RESULTADO_OK = 'finanzas_solicitar_cobro_formulario_resultado_ok';
    const FINANZAS_SOLICITAR_COBRO_FORMULARIO_RESULTADO_ERROR = 'finanzas_solicitar_cobro_formulario_resultado_error';
 
    // ver detalle
    const FINANZAS_VER_TITULO = 'finanzas_ver_titulo';
    const FINANZAS_VER_NO_EXISTE = 'finanzas_ver_no_existe';
    const FINANZAS_VER_NO_LE_PERTENECE = 'finanzas_ver_no_le_pertenece';
    const FINANZAS_VER_DETALLE_ESTADO_DE_COBRO = 'finanzas_ver_detalle_estado_de_cobro';
    const FINANZAS_VER_DETALLE_FACTURA = 'finanzas_ver_detalle_factura';
    const FINANZAS_VER_DETALLE_SIN_FACTURA = 'finanzas_ver_detalle_sin_factura';
    const FINANZAS_VER_DETALLE_DESCRIPCION = 'finanzas_ver_detalle_descripcion';
    const FINANZAS_VER_DETALLE_CURSO = 'finanzas_ver_detalle_curso';
    const FINANZAS_VER_DETALLE_ESTUDIANTE = 'finanzas_ver_detalle_estudiante';
    const FINANZAS_VER_DETALLE_COMISION = 'finanzas_ver_detalle_comision';
    const FINANZAS_VER_DETALLE_MONTO = 'finanzas_ver_detalle_monto';
    const FINANZAS_VER_DETALLE_ULTIMA_ACTUALIZACION = 'finanzas_ver_detalle_ultima_actualizacion';
    const FINANZAS_VER_DETALLE_BOTON_VOLVER = 'finanzas_ver_detalle_boton_volver';
 
    // estados de los cobros
    const FINANZAS_ESTADO_DE_COBRO_CREADO = 'finanzas_estado_de_cobro_creado';
    const FINANZAS_ESTADO_DE_COBRO_PROCESANDO = 'finanzas_estado_de_cobro_procesando';
    const FINANZAS_ESTADO_DE_COBRO_LISTO_PARA_RETIRAR = 'finanzas_estado_de_cobro_listo_para_retirar';
    const FINANZAS_ESTADO_DE_COBRO_ENTREGADO = 'finanzas_estado_de_cobro_entregado';
    const FINANZAS_ESTADO_DE_COBRO_RECHAZADO = 'finanzas_estado_de_cobro_rechazado';
 
    /**************************************
     *              CONTENIDOS
     **************************************/
 
    // elementos generales
    const CONTENIDOS_CURSO_EDITAR = 'contenidos_curso_editar';
    const CONTENIDOS_CURSO_EDITAR_NO_DISPONIBLE_POR_ESTADO = 'contenidos_curso_editar_no_disponible_por_estado';
    const CONTENIDOS_CURSO_EVALUACION_EDITAR = 'contenidos_curso_evaluacion_editar';
    const CONTENIDOS_ERROR_CURSO_NO_ENCONTRADO = 'contenidos_error_curso_no_encontrado';
    const CONTENIDOS_ERROR_USUARIO_SIN_COMISION_EN_CURSO = 'contenidos_error_usuario_sin_comision_en_curso';
    const CONTENIDOS_TITULO = 'contenidos_titulo';
 
    // formulario para editar cursos
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_TITULO = 'contenidos_editar_formulario_curso_titulo';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_INTRODUCCION = 'contenidos_editar_formulario_curso_introduccion';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_INTRODUCCION_ERROR = 'contenidos_editar_formulario_curso_introduccion_error';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_DESCRIPCION = 'contenidos_editar_formulario_curso_descripcion';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_DESCRIPCION_ERROR = 'contenidos_editar_formulario_curso_descripcion_error';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_POSTERS = 'contenidos_editar_formulario_curso_posters';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_POSTERS_EXPLICACION = 'contenidos_editar_formulario_curso_posters_explicacion';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_SUBIR_ARCHIVOS = 'contenidos_editar_formulario_curso_subir_archivos';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_BORRAR_ARCHIVO = 'contenidos_editar_formulario_curso_borrar_archivo';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_AYUDA_BOTON = 'contenidos_editar_formulario_curso_ayuda_boton';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_AYUDA_TITULO = 'contenidos_editar_formulario_curso_ayuda_titulo';
    const CONTENIDOS_EDITAR_FORMULARIO_CURSO_AYUDA_DESCRIPCION = 'contenidos_editar_formulario_curso_ayuda_descripcion';
    const CONTENIDOS_EDITAR_FORMULARIO_MODULO_TITULO = 'contenidos_editar_formulario_modulo_titulo';
    const CONTENIDOS_EDITAR_FORMULARIO_MODULO_INTRODUCCION = 'contenidos_editar_formulario_modulo_introduccion';
    const CONTENIDOS_EDITAR_FORMULARIO_MODULO_INTRODUCCION_ERROR = 'contenidos_editar_formulario_modulo_introduccion_error';
    const CONTENIDOS_EDITAR_FORMULARIO_MODULO_DESCRIPCION = 'contenidos_editar_formulario_modulo_descripcion';
    const CONTENIDOS_EDITAR_FORMULARIO_MODULO_DESCRIPCION_ERROR = 'contenidos_editar_formulario_modulo_descripcion_error';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_TITULO = 'contenidos_editar_formulario_clase_titulo';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_SIN_VIDEO = 'contenidos_editar_formulario_clase_sin_video';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_VIDEO_SUBIR_POSTER = 'contenidos_editar_formulario_clase_video_subir_poster';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_VIDEO_EXPLICACION = 'contenidos_editar_formulario_clase_video_explicacion';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_VIDEO_BOTON_SUBIR_POSTER = 'contenidos_editar_formulario_clase_video_boton_subir_poster';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_NOMBRE = 'contenidos_editar_formulario_clase_nombre';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_NOMBRE_ERROR = 'contenidos_editar_formulario_clase_nombre_error';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_DESCRIPCION = 'contenidos_editar_formulario_clase_descripcion';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_DESCRIPCION_ERROR = 'contenidos_editar_formulario_clase_descripcion_error';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_LIBRO = 'contenidos_editar_formulario_clase_libro';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_LIBRO_ERROR = 'contenidos_editar_formulario_clase_libro_error';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_NOTAS = 'contenidos_editar_formulario_clase_notas';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_NOTAS_ESCRIBIR = 'contenidos_editar_formulario_clase_notas_escribir';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_NOTAS_SIN_NOTAS = 'contenidos_editar_formulario_clase_notas_sin_notas';
    const CONTENIDOS_EDITAR_FORMULARIO_CLASE_BOTON_SIGUIENTE = 'contenidos_editar_formulario_clase_boton_siguiente';
    const CONTENIDOS_EDITAR_FORMULARIO_GUARDAR_CAMBIOS = 'contenidos_editar_formulario_guardar_cambios';
    const CONTENIDOS_EDITAR_FORMULARIO_GUARDAR_CAMBIOS_E_IR_A_EDITAR_EVALUACION = 'contenidos_editar_formulario_guardar_cambios_e_ir_a_editar_evaluacion';
    const CONTENIDOS_EDITAR_FORMULARIO_RESET_CAMBIOS = 'contenidos_editar_formulario_reset_cambios';
    const CONTENIDOS_EDITAR_FORMULARIO_RESET_CAMBIOS_CONFIRMACION = 'contenidos_editar_formulario_reset_cambios_confirmacion';
    const CONTENIDOS_EDITAR_FORMULARIO_GUARDADO_OK = 'contenidos_editar_formulario_guardado_ok';
    const CONTENIDOS_EDITAR_FORMULARIO_GUARDADO_ERROR = 'contenidos_editar_formulario_guardado_error';
    const CONTENIDOS_EDITAR_ERROR_DE_TERMINADO = 'contenidos_editar_error_de_terminado';
 
    // formulario para editar cursos
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_TITULO = 'contenidos_editar_formulario_evaluacion_titulo';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_NOMBRE = 'contenidos_editar_formulario_evaluacion_nombre';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_DESCRIPCION = 'contenidos_editar_formulario_evaluacion_descripcion';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_PREGUNTA_AGREGAR = 'contenidos_editar_formulario_evaluacion_pregunta_agregar';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_PREGUNTA_BORRAR = 'contenidos_editar_formulario_evaluacion_pregunta_borrar';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_PREGUNTA_BORRAR_CONFIRMACION = 'contenidos_editar_formulario_evaluacion_pregunta_borrar_confirmacion';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_PREGUNTA_NUMERO = 'contenidos_editar_formulario_evaluacion_pregunta_numero';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_PREGUNTA_PREGUNTA = 'contenidos_editar_formulario_evaluacion_pregunta_pregunta';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_PREGUNTA_DESCRIPCION = 'contenidos_editar_formulario_evaluacion_pregunta_descripcion';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_RESPUESTAS = 'contenidos_editar_formulario_evaluacion_respuestas';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_RESPUESTA_AGREGAR = 'contenidos_editar_formulario_evaluacion_respuesta_agregar';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_RESPUESTA_BORRAR = 'contenidos_editar_formulario_evaluacion_respuesta_borrar';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_RESPUESTA_MARCAR_CORRECTA = 'contenidos_editar_formulario_evaluacion_respuesta_marcar_correcta';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_RESPUESTA_RESPUESTA = 'contenidos_editar_formulario_evaluacion_respuesta_respuesta';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_GUARDAR = 'contenidos_editar_formulario_evaluacion_guardar';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_GUARDAR_E_IR_A_EDITAR_CURSO = 'contenidos_editar_formulario_evaluacion_guardar_e_ir_a_editar_curso';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_RESET_CAMBIOS = 'contenidos_editar_formulario_evaluacion_reset_cambios';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_RESET_CAMBIOS_CONFIRMACION = 'contenidos_editar_formulario_evaluacion_reset_cambios_confirmacion';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_GUARDADO_OK = 'contenidos_editar_formulario_evaluacion_guardado_ok';
    const CONTENIDOS_EDITAR_FORMULARIO_EVALUACION_GUARDADO_ERROR = 'contenidos_editar_formulario_evaluacion_guardado_error';
 
    // listado o index de cursos
    const CONTENIDOS_LISTADO_TITULO = 'contenidos_listado_titulo';
    const CONTENIDOS_LISTADO_ESTADO = 'contenidos_listado_estado';
    const CONTENIDOS_LISTADO_OPCIONES_TITULO = 'contenidos_listado_opciones_titulo';
    const CONTENIDOS_LISTADO_OPCIONES_EDITAR = 'contenidos_listado_opciones_editar';
    const CONTENIDOS_LISTADO_OPCIONES_EDITAR_DETALLE = 'contenidos_listado_opciones_editar_detalle';
    const CONTENIDOS_LISTADO_OPCIONES_EVALUACION = 'contenidos_listado_opciones_evaluacion';
    const CONTENIDOS_LISTADO_OPCIONES_EVALUACION_DETALLE = 'contenidos_listado_opciones_evaluacion_detalle';
    const CONTENIDOS_LISTADO_OPCIONES_IR_A_FINANZAS = 'contenidos_listado_opciones_ir_a_finanzas';
    const CONTENIDOS_LISTADO_OPCIONES_IR_A_FINANZAS_DETALLE = 'contenidos_listado_opciones_ir_a_finanzas_detalle';
 
    /**
     * @var array comodines que pueden reemplazarse en otras traducciones
     */
    public $comodines = [
        self::SITIO_NOMBRE,
        self::SITIO_NOMBRE_EXTENDIDO,
        self::GLOSARIO_CLASE,
        self::GLOSARIO_CURSO,
        self::GLOSARIO_DIPLOMA,
        self::GLOSARIO_EVALUACION,
        self::GLOSARIO_MATERIAL,
        self::GLOSARIO_MODULO,
        self::GLOSARIO_PROFESOR,
        self::GLOSARIO_TRAILER,
        self::GLOSARIO_VIDEO,
        self::GLOSARIO_PLURAL_CLASE,
        self::GLOSARIO_PLURAL_CURSO,
        self::GLOSARIO_PLURAL_DIPLOMA,
        self::GLOSARIO_PLURAL_EVALUACION,
        self::GLOSARIO_PLURAL_MATERIAL,
        self::GLOSARIO_PLURAL_MODULO,
        self::GLOSARIO_PLURAL_PROFESOR,
        self::GLOSARIO_PLURAL_TRAILERS,
        self::GLOSARIO_PLURAL_VIDEO,
    ];
 
    // formatos para fechas y horas
    const GRUPO_HORA = 'hora';
    const GRUPO_FECHA = 'fecha';
    const GRUPO_FECHA_Y_HORA = 'fechaYHora';
    const FORMATO_SHORT = 'short';
    const FORMATO_MEDIUM = 'medium';
    const FORMATO_LONG = 'long';
    const FORMATO_FULL = 'full';
    const FORMATO_DAY_AND_MONTH = 'dayAndMonth';
 
    /**
     * @var Idioma
     */
    private static $idioma = null;
 
    /**
     * @var array comodines a reemplazar
     */
    private $busquedas = [];
 
    /**
     * @var array reemplazos para los comodines
     */
    private $reemplazos = [];
 
    /**
     * @var Database adaptador de traducción
     */
    private $t = null;
 
    /**
     * @var array
     */
    private $dateFormatters = [];
 
    /**
     * Traduccion constructor.
     */
    public function __construct()
    {
        $this->t = $this->getDI()->get('translator');
 
        // @todo mejorar esto para multi idiomas dependiendo del usuario
        self::$idioma = Idiomas::getPorDefecto();
 
        foreach ($this->comodines as $traduccion) {
            $this->busquedas[]  = "%%" . $traduccion . "%%";
            $this->reemplazos[] = $this->t->query($traduccion);
        }
 
        $this->dateFormatters = [
            self::GRUPO_FECHA        => [
                self::FORMATO_SHORT         => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::SHORT,
                    \IntlDateFormatter::NONE,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_MEDIUM        => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::MEDIUM,
                    \IntlDateFormatter::NONE,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_LONG          => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::LONG,
                    \IntlDateFormatter::NONE,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_FULL          => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::FULL,
                    \IntlDateFormatter::NONE,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_DAY_AND_MONTH => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::FULL,
                    \IntlDateFormatter::NONE,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN,
                    "d 'de' MMMM"
                ),
            ],
            self::GRUPO_HORA         => [
                self::FORMATO_SHORT  => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::NONE,
                    \IntlDateFormatter::SHORT,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_MEDIUM => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::NONE,
                    \IntlDateFormatter::MEDIUM,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_LONG   => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::NONE,
                    \IntlDateFormatter::LONG,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_FULL   => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::NONE,
                    \IntlDateFormatter::FULL,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
            ],
            self::GRUPO_FECHA_Y_HORA => [
                self::FORMATO_SHORT  => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::SHORT,
                    \IntlDateFormatter::SHORT,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_MEDIUM => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::MEDIUM,
                    \IntlDateFormatter::MEDIUM,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_LONG   => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::LONG,
                    \IntlDateFormatter::LONG,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
                self::FORMATO_FULL   => new \IntlDateFormatter(
                    'es_AR',
                    \IntlDateFormatter::FULL,
                    \IntlDateFormatter::FULL,
                    'America/Argentina/Buenos_Aires',
                    \IntlDateFormatter::GREGORIAN
                ),
            ],
        ];
    }
 
    /**
     * Aplica comodines a un texto
     *
     * @param string $texto
     * @return string
     */
    public function aplicarComodines(string $texto): string
    {
        $reemplazar = false;
        foreach ($this->busquedas as $busqueda) {
            if (strpos($texto, $busqueda) !== false) {
                $reemplazar = true;
                break;
            }
        }
 
        if ($reemplazar === true) {
            return str_replace($this->busquedas, $this->reemplazos, $texto);
        }
 
        return $texto;
    }
 
    /**
     * Idioma activo
     *
     * @return Idioma
     */
    public function getIdioma()
    {
        return self::$idioma;
    }
 
    /**
     * @param \DateTime $fecha
     * @param string $formato
     * @return mixed|string
     */
    public function fecha(\DateTime $fecha, string $formato = self::FORMATO_MEDIUM): string
    {
        $formato = $this->dateFormatters[self::GRUPO_FECHA][$formato] ? $formato : self::FORMATO_MEDIUM;
 
        return $this->dateFormatters[self::GRUPO_FECHA][$formato]->format($fecha);
    }
 
    /**
     * @param \DateTime $fecha
     * @param string $formato
     * @return mixed|string
     */
    public function hora(\DateTime $fecha, string $formato = self::FORMATO_MEDIUM): string
    {
        $formato = $this->dateFormatters[self::GRUPO_HORA][$formato] ? $formato : self::FORMATO_MEDIUM;
 
        return $this->dateFormatters[self::GRUPO_HORA][$formato]->format($fecha);
    }
 
    /**
     * @param \DateTime $fecha
     * @param string $formato
     * @return mixed|string
     */
    public function fechaYHora(\DateTime $fecha, string $formato = self::FORMATO_MEDIUM): string
    {
        $formato = $this->dateFormatters[self::GRUPO_FECHA_Y_HORA][$formato] ? $formato : self::FORMATO_MEDIUM;
 
        return $this->dateFormatters[self::GRUPO_FECHA_Y_HORA][$formato]->format($fecha);
    }
 
    /**
     * @param null|string $anchor
     * @param array $attributes
     * @return string
     */
    public function getLinkTraduccionIdiomaPorDefecto(string $anchor = null, array $attributes = []): string
    {
        $anchor = $anchor ?: 'Traducir interfaz';
 
        try {
            return $this->tag->linkTo([
                    $this->url->get([
                        'controller' => 'idiomas-traducciones',
                        'action'     => 'index',
                        'params'     => [
                            Idioma::COL_ID => Idiomas::getPorDefecto()->getId(),
                        ],
                        'for'        => 'admin',
                    ]),
                    $anchor,
                ] + $attributes);
        } catch (Exception $e) {
            // no hay un idioma por defecto
            return '';
        }
    }
 
    /**
     * Hace una traducción dependiendo de la cantidad, para singular o plural
     *
     * @param int $cant
     * @param string $singular
     * @param string $plural
     * @return string
     */
    public function plural(int $cant, string $singular, string $plural): string
    {
        return $cant > 1 ? $plural : $singular;
    }
 
    /**
     * Traduce una cadena de texto, agregando posibles variables y aplicando comodines
     *
     * @param string $query
     * @param array $placeholder
     * @return string
     */
    public function simple(string $query, array $placeholder = []): string
    {
        $res = $this->t->query($query, $placeholder);
 
        if ($res === $query) {
            return '';
        }
 
        $res = $this->aplicarComodines($res);
 
        if (count($placeholder) && strpos($res, '%') !== false) {
            return sprintf($res, ...array_values($placeholder));
        }
 
        return $res;
    }
 
    /**
     * Obtiene el estado de terminación de un curso
     *
     * @param int $terminado
     * @return string
     */
    public function cursoEstadoTerminado(int $terminado): string
    {
        $estados = [
            $this->simple(self::CURSOS_ESTADO_TERMINADO_NO),
            $this->simple(self::CURSOS_ESTADO_TERMINADO_MOSTRAR_PRESENTACION),
            $this->simple(self::CURSOS_ESTADO_TERMINADO_EN_CURSO),
            $this->simple(self::CURSOS_ESTADO_TERMINADO_FINALIZADO),
        ];
 
        return $estados[$terminado] ?? '';
    }
}
#9Core\Component\Traduccion->__construct()
/produccion/private/app/config/services.php (149)
<?php
 
use Core\Filter\HtmlToMarkdown;
use Core\Filter\MarkdownToHtml;
use Core\Filter\MultiEmail;
use Core\Filter\RemoveExtraBreakLines;
use Core\Filter\Sluggable;
use Core\Filter\ToNullOrInteger;
use Core\Filter\ValoresSeparadosPorComa;
use Core\Tag;
use Phalcon\Events\Event;
 
$di['tag'] = function () {
    Tag::setDocType(Tag::HTML5);
    Tag::setTitleSeparator(' - ');
 
    return new Tag();
};
 
$di['session'] = function () use ($config) {
    $session = new \Phalcon\Session\Adapter\Files(['uniqueId' => $config->session->unique_id]);
    $session->start();
 
    return $session;
};
 
$di['security'] = function () use ($di) {
    $security = new \Phalcon\Security();
    $security->setDI($di);
    $security->setWorkFactor(12);
 
    return $security;
};
 
$di['auth'] = function () {
    return new \Core\Security\Auth();
};
 
$di['url'] = function () {
    return new \Core\Mvc\Url();
};
 
$di['db'] = function () use ($config, $di) {
    $connection = new \Phalcon\Db\Adapter\Pdo\Mysql([
        "host"     => $config->database->host,
        "username" => $config->database->username,
        "password" => $config->database->password,
        "dbname"   => $config->database->dbname,
        "options"  => [
            \PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'",
        ],
    ]);
 
    $connection->execute("SET time_zone = '-03:00'");
 
    $connection->setDialect(new \Phalcon\Db\Dialect\MysqlExtended());
 
    // agregamos un profiler
    if (isset($config->database->profiler) && $config->database->profiler === true) {
        $eventsManager = new \Phalcon\Events\Manager();
 
        if (!is_dir(APPLICATION_PATH . '/../logs/sql-profiler')) {
            mkdir(APPLICATION_PATH . '/../logs/sql-profiler', 0755, true);
        }
 
        $logger = new \Phalcon\Logger\Adapter\File(
            APPLICATION_PATH . '/../logs/sql-profiler/' . date("Y-m-d") . '.log',
            ['mode' => 'a+']
        );
        $profiler = $di->get('profiler');
 
        $eventsManager->attach(
            "db",
            function (Event $event, $connection) use ($logger, $profiler) {
                /* @var \Phalcon\Db\Adapter\Pdo\Mysql $connection */
                if ($event->getType() === "beforeQuery") {
                    $profiler->startProfile($connection->getSQLStatement(), $connection->getSqlVariables());
                }
 
                if ($event->getType() === "afterQuery") {
                    $profiler->stopProfile();
                    $profile = $profiler->getLastProfile();
 
                    $vars = arrayToString($profile->getSqlVariables(), ' - ');
 
                    $logger->info(
                        $connection->getSQLStatement()
                        . ' - ' . $profile->getTotalElapsedSeconds()
                        . ' ms. - ' . $vars
                    );
                }
            }
        );
        $connection->setEventsManager($eventsManager);
    }
 
    return $connection;
};
 
$di['translator'] = function () use ($di) {
    return new \Phalcon\Translate\Adapter\Database([
        'db'                     => $di->get('db'), // Here we're getting the database from DI
        'table'                  => 'idiomas_traducciones', // The table that is storing the translations
        'language'               => 'es', // Now we're getting the best language for the user
        'useIcuMessageFormatter' => true,
    ]);
};
 
// user components
$di['arrayFont'] = function () {
    return new \Core\Component\ArrayFont();
};
$di['configuracion'] = function () {
    return new \Core\Component\Configuracion();
};
$di['excel'] = function () {
    return new \Core\Component\Excel();
};
$di['fecha'] = function () {
    return new \Core\Component\Fecha();
};
 
$di['geoplugin'] = function () {
    return \Core\Component\Geoplugin::getInstance();
};
 
$di['headMeta'] = function () {
    return new \Core\Component\HeadMeta();
};
$di['mail'] = function () {
    return new \Core\Component\Mail();
};
$di['mensajes'] = function () {
    return new \Core\Component\Mensajes();
};
$di['serverInfo'] = function () {
    return new \Core\Component\ServerInfo();
};
$di['serverUrl'] = function () {
    return new \Core\Component\ServerUrl();
};
$di['thumbnail'] = function () {
    return new \Core\Component\Thumbnail();
};
$di['tokens'] = function () {
    return new \Core\Component\Token();
};
$di['traduccion'] = function () {
    return new \Core\Component\Traduccion();
};
$di['jobs'] = function () {
    return new \Core\Component\Jobs();
};
$di['workers'] = function () {
    return new \Core\Component\Workers();
};
 
$di['voltService'] = function ($view, $di) use ($config) {
 
    $volt = new \Phalcon\Mvc\View\Engine\Volt($view, $di);
 
    if (!is_dir($config->view->cache->dir)) {
        mkdir($config->view->cache->dir, 0755, true);
    }
 
    $volt->setOptions([
        "compiledPath"      => $config->view->cache->dir,
        "compiledSeparator" => "-",
        "compileAlways"     => true,
    ]);
 
    // funciones de traducción
    $volt->getCompiler()
        ->addFunction('_', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->simple(" . $translateKey . ")";
        })
        ->addFunction('__', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->plural(" . $translateKey . ")";
        });
 
    // traducción para fechas y horas
    $volt->getCompiler()
        ->addFunction('_date', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->fecha(" . $translateKey . ")";
        })
        ->addFunction('_time', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->hora(" . $translateKey . ")";
        })
        ->addFunction('_datetime', function ($translateKey, $placeholders = null) {
            return "\$this->traduccion->fechaYHora(" . $translateKey . ")";
        });
 
    // join keys
    $volt->getCompiler()->addFunction('joinKeysAndShiftFirstToLast', function ($arrays, $expression) {
        return 'joinKeysAndShiftFirstToLast(' . $arrays . ')';
    });
 
    // join keys
    $volt->getCompiler()->addFunction('currentAndNext', function ($arrays, $expression) {
        return 'currentAndNext(' . $arrays . ')';
    });
 
    // unset()
    $volt->getCompiler()->addFunction('unset', function ($arrays, $expression) {
        return 'unset(' . $arrays . ')';
    });
 
    // quitar saltos de linea
    $volt->getCompiler()->addFilter('nonl', function ($value) {
        return "preg_replace('/(\r|\n|\r\n)+/', ' ', " . $value . ")";
    });
 
    // aplicar comodines
    $volt->getCompiler()->addFilter('comodines', function ($value) {
        return "\$this->traduccion->aplicarComodines(" . $value . ")";
    });
 
    // inyectar widgets
    $volt->getCompiler()->addFilter('widgets', function ($value) {
        return "\$this->helper->widget->aplicar(" . $value . ")";
    });
 
    // cortar texto
    $volt->getCompiler()->addFilter('cut', function ($value) {
        return "cortarTexto(" . $value . ")";
    });
 
    // muestra decimales
    $volt->getCompiler()->addFilter('decimal', function ($argumentos, $expresion) {
 
        $valor = isset($expresion[0]['expr']['value']) ? $expresion[0]['expr']['value'] : $argumentos;
        $decimales = isset($expresion[1]['expr']['value']) ? (int) $expresion[1]['expr']['value'] : 2;
 
        return "number_format(" . $valor . ", " . $decimales . ", ',', '.')";
    });
 
    // convertir bytes a un valor entendible por humanos
    $volt->getCompiler()->addFilter('humanBytes', function ($value) {
        return "humanBytesConvert(" . $value . ")";
    });
 
    return $volt;
};
 
$di['log'] = function () use ($config, $di) {
    return new \Phalcon\Logger\Adapter\Database(
        'web',
        [
            'db'    => $di->get('db'),
            'table' => \Core\Model\Entity\Log::TABLE_NAME,
        ]
    );
};
 
$di['profiler'] = function () {
    return new \Phalcon\Db\Profiler();
};
 
$di['collectionManager'] = function () {
    return new Phalcon\Mvc\Collection\Manager();
};
 
$di['assets'] = function () {
    return new \Core\Assets\Manager();
};
 
$di['filter'] = function () {
    $filter = new \Phalcon\Filter();
    $filter->add(HtmlToMarkdown::class, new HtmlToMarkdown());
    $filter->add(MarkdownToHtml::class, new MarkdownToHtml());
    $filter->add(MultiEmail::class, new MultiEmail());
    $filter->add(RemoveExtraBreakLines::class, new RemoveExtraBreakLines());
    $filter->add(Sluggable::class, new Sluggable());
    $filter->add(ToNullOrInteger::class, new ToNullOrInteger());
    $filter->add(ValoresSeparadosPorComa::class, new ValoresSeparadosPorComa());
 
    return $filter;
};
 
$di['crypt'] = function () use ($config) {
    $crypt = new \Phalcon\Crypt();
    $crypt->setKey($config->secretKey);
 
    return $crypt;
};
 
$di['helper'] = function () {
    return new \Frontend\View\Helper();
};
#10App\Bootstrap->{closure}()
#11Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#12Phalcon\Di->get(traduccion)
/produccion/private/app/modules/Frontend/Router/Contenido.php (53)
<?php
 
namespace Frontend\Router;
 
use Core\Component\Traduccion;
use Phalcon\Di;
use Phalcon\Mvc\Router\Group;
 
/**
 * Class Contenido
 * Gestor de rutas para contenidos de cursos por profesionales
 * @package Frontend\Router
 */
class Contenido extends Group
{
    /**
     * Ruta para editar un curso
     */
    const EDITAR_CURSO = 'contenidosEditarCurso';
 
    /**
     * Ruta para editar la evaluación de un curso
     */
    const EDITAR_EVALUACION = 'contenidosEditarEvaluacion';
 
    /**
     * Ruta al listado de cursos del profesional
     */
    const INDEX = 'contenidosIndex';
 
    //parámetros
 
    /**
     * Slug del curso
     */
    const PARAM_CURSO_SLUG = 'contenidosParamCursoSlug';
 
    /**
     * Setup
     */
    public function initialize()
    {
        $this->setPrefix('/contenidos');
 
        $this->setPaths([
            'module' => 'Frontend',
            'controller' => 'contenidos',
        ]);
 
        //index
        $this->add('', ['action' => 'index'])->setName(self::INDEX);
 
        $cursos = Di::getDefault()->get('tag')->friendlyTitle(Di::getDefault()->get('traduccion')->simple(Traduccion::GLOSARIO_CURSO));
 
        $evaluaciones = Di::getDefault()->get('tag')->friendlyTitle(Di::getDefault()->get('traduccion')->simple(Traduccion::GLOSARIO_EVALUACION));
 
        if (!$cursos || $evaluaciones === $cursos) {
            $cursos = 'curso';
        }
 
        if (!$evaluaciones || $evaluaciones === $cursos) {
            $evaluaciones = 'evaluaciones';
        }
 
        //editar contenido del curso
        $this->add('/{'.self::PARAM_CURSO_SLUG.':[a-z0-9-]+}/' . $cursos, ['action' => 'editarCurso'])->setName(self::EDITAR_CURSO);
 
        //editar evaluación
        $this->add('/{'.self::PARAM_CURSO_SLUG.':[a-z0-9-]+}/' . $evaluaciones, ['action' => 'editarEvaluacion'])->setName(self::EDITAR_EVALUACION);
    }
}
#13Frontend\Router\Contenido->initialize(null)
#14Phalcon\Mvc\Router\Group->__construct()
/produccion/private/app/modules/Frontend/config/routing.php (6)
<?php
 
$router->mount(new \Frontend\Router\Principal())
    ->mount(new \Frontend\Router\Auth())
    ->mount(new \Frontend\Router\Contacto())
    ->mount(new \Frontend\Router\Contenido())
    ->mount(new \Frontend\Router\Cuenta())
    ->mount(new \Frontend\Router\Curso())
    ->mount(new \Frontend\Router\Curso\Compra())
    ->mount(new \Frontend\Router\Curso\Deseo())
    ->mount(new \Frontend\Router\Estudiante())
    ->mount(new \Frontend\Router\Finanzas())
    ->mount(new \Frontend\Router\MensajesPublicos())
    ->mount(new \Frontend\Router\MensajesPrivados())
    ->mount(new \Frontend\Router\Multimedia())
    ->mount(new \Frontend\Router\Pagina())
    ->mount(new \Frontend\Router\Panel())
    ->mount(new \Frontend\Router\Sitemap())
    ->mount(new \Frontend\Router\Usuario());
#15require_once(/produccion/private/app/modules/Frontend/config/routing.php)
/produccion/private/app/config/routing.php (16)
<?php
 
$di['router'] = function () use ($defaultModule, $modules, $di, $config) {
    //creamos el router
    $router = new \Phalcon\Mvc\Router(false);
    $router->clear();
    $router->removeExtraSlashes(true)
        ->setDefaultModule($defaultModule)
        ->setDefaultController('index')
        ->setDefaultAction('index');
 
    $moduleRouting = APPLICATION_PATH . '/modules/' . ucfirst($defaultModule) . '/config/routing.php';
 
    //registramos router del módulo por defecto
    if (is_file($moduleRouting)) {
        require_once $moduleRouting;
    } else {
        $router->add('/', [
            'module'     => $defaultModule,
            'controller' => 'index',
            'action'     => 'index',
        ])->setName('home');
 
        $router->add('/:controller', [
            'module'     => $defaultModule,
            'controller' => 1,
        ]);
 
        $router->add('/:controller/:action/:params', [
            'module'     => $defaultModule,
            'controller' => 1,
            'action'     => 2,
            'params'     => 3,
        ]);
    }
 
    //registramos routers de otros módulos
    foreach ($modules as $moduleName => $module) {
        if ($defaultModule === $moduleName) {
            continue;
        }
 
        $moduleRouting = APPLICATION_PATH . '/modules/' . ucfirst($moduleName) . '/config/routing.php';
 
        if (is_file($moduleRouting)) {
            require_once $moduleRouting;
        }
    }
 
    return $router;
};
#16App\Bootstrap->{closure}()
#17Phalcon\Di\Service->resolve(null, Object(Phalcon\Di\FactoryDefault))
#18Phalcon\Di->get(router, null)
#19Phalcon\Di->getShared(router)
#20Phalcon\Mvc\Application->handle()
/produccion/private/app/Bootstrap.php (101)
<?php
 
namespace App;
 
use Core\Model\Config as ConfigModel;
use Core\Model\Config\Performance;
use Phalcon\Config;
use Phalcon\DI\FactoryDefault;
use Phalcon\Mvc\Application;
use Phalcon\Mvc\Model;
 
/**
 * Class Bootstrap
 */
class Bootstrap extends Application
{
    /**
     * @var array
     */
    private $modules = [];
 
    /**
     * @var null|string
     */
    private $defaultModule = null;
 
    /**
     * Bootstrap constructor.
     * @param string|null $defaultModule
     */
    public function __construct(string $defaultModule = null)
    {
        $this->modules = [
            'Frontend' => [
                'className' => 'Frontend\Module',
                'path'      => APPLICATION_PATH . '/modules/Frontend/Module.php',
            ],
            'Backend'  => [
                'className' => 'Backend\Module',
                'path'      => APPLICATION_PATH . '/modules/Backend/Module.php',
            ],
        ];
 
        // si no tenemos el modulo por defecto, lo tomamos de la lista
        if (!$defaultModule || !isset($this->modules[$defaultModule])) {
            $defaultModule = key($this->modules);
        }
 
        $this->defaultModule = $defaultModule;
 
        // configuración básica para el ORM
        Model::setup([
            'castOnHydrate'      => true,
            'notNullValidations' => false, // quita los validators automáticos para columnas not null
        ]);
 
        // registramos los servicios
        $this->registerServices();
 
        // registramos los módulos
        $this->registerModules($this->modules);
    }
 
    /**
     * Registro de servicios
     */
    private function registerServices()
    {
        $defaultModule = $this->defaultModule;
        $di = new FactoryDefault();
        $config = new Config(require_once APPLICATION_PATH . '/config/config.php');
 
        // cargar un archivo de configuración especial
        if (APPLICATION_ENV !== 'development' &&
            is_file(APPLICATION_PATH . '/config/config.' . APPLICATION_ENV . '.php')
        ) {
            $config->merge(new Config(require_once APPLICATION_PATH . '/config/config.' . APPLICATION_ENV . '.php'));
        }
 
        // mejorar la presentación de errores?
        if ($config->get('debug', false) === true) {
            (new \Phalcon\Debug())->listen(true, true);
        }
 
        $di['config'] = $config;
        $modules = $this->modules;
 
        include_once APPLICATION_PATH . '/config/loader.php';
        include_once APPLICATION_PATH . '/config/services.php';
        include_once APPLICATION_PATH . '/config/routing.php';
 
        $this->setDI($di);
    }
 
    /**
     * Inicio
     * @return string
     */
    public function init()
    {
        $content = $this->handle()->getContent();
 
        if (ConfigModel::get(Performance::MINIMIZAR_HTML) &&
            strtolower(substr($content, 0, 15)) === '<!doctype html>') {
            $content = preg_replace(
                [
                    '#(?ix)(?>[^\S ]\s*|\s{2,})(?=(?:(?:[^<]++|<(?!/?(?:textarea|pre|script)\b))*+)' .
                    '(?:<(?>textarea|pre|script)\b|\z))#',
                    '#>\s+<#',
                ],
                [
                    ' ',
                    '><',
                ],
                $content
            );
        }
 
        return $content;
    }
}
#21App\Bootstrap->init()
/produccion/html/index.php (16)
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
 
defined('APPLICATION_PATH') || define('APPLICATION_PATH', realpath('../private/app'));
 
defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ?: 'production'));
 
define('PUBLIC_PATH', __DIR__);
 
require_once __DIR__ . '/../private/vendor/autoload.php';
require_once APPLICATION_PATH . '/Bootstrap.php';
 
echo (new App\Bootstrap('Frontend'))->init();
KeyValue
_url/comprar/neuroaplicada
KeyValue
USERwebadmin
HOME/home/webadmin
HTTP_CONNECTIONKeep-Alive
HTTP_HOSTlearny.online
HTTP_ACCEPT_ENCODINGbr,gzip
HTTP_ACCEPT_LANGUAGEen-US,en;q=0.5
HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
HTTP_USER_AGENTCCBot/2.0 (https://commoncrawl.org/faq/)
REDIRECT_STATUS200
SERVER_NAMElearny.online
SERVER_PORT443
SERVER_ADDR172.31.24.75
REMOTE_PORT43434
REMOTE_ADDR34.239.179.228
SERVER_SOFTWAREnginx/1.12.2
GATEWAY_INTERFACECGI/1.1
HTTPSon
REQUEST_SCHEMEhttps
SERVER_PROTOCOLHTTP/1.1
DOCUMENT_ROOT/produccion/html
DOCUMENT_URI/index.php
REQUEST_URI/comprar/neuroaplicada
SCRIPT_NAME/index.php
CONTENT_LENGTH
CONTENT_TYPE
REQUEST_METHODGET
QUERY_STRING_url=/comprar/neuroaplicada&
SCRIPT_FILENAME/produccion/html/index.php
FCGI_ROLERESPONDER
PHP_SELF/index.php
REQUEST_TIME_FLOAT1623997826.3653
REQUEST_TIME1623997826
#Path
0/produccion/html/index.php
1/produccion/private/vendor/autoload.php
2/produccion/private/vendor/composer/autoload_real.php
3/produccion/private/vendor/composer/ClassLoader.php
4/produccion/private/vendor/composer/autoload_static.php
5/produccion/private/vendor/symfony/polyfill-ctype/bootstrap.php
6/produccion/private/vendor/symfony/polyfill-mbstring/bootstrap.php
7/produccion/private/vendor/facebook/graph-sdk/src/Facebook/polyfills.php
8/produccion/private/vendor/myclabs/deep-copy/src/DeepCopy/deep_copy.php
9/produccion/private/vendor/swiftmailer/swiftmailer/lib/swift_required.php
10/produccion/private/vendor/swiftmailer/swiftmailer/lib/classes/Swift.php
11/produccion/private/vendor/ebanx/benjamin/main.php
12/produccion/private/app/Bootstrap.php
13/produccion/private/app/config/config.php
14/produccion/private/app/config/config.production.php
15/produccion/private/app/config/loader.php
16/produccion/private/app/Library/array-functions.php
17/produccion/private/app/Library/date-functions.php
18/produccion/private/app/Library/file-functions.php
19/produccion/private/app/Library/object-functions.php
20/produccion/private/app/Library/string-functions.php
21/produccion/private/app/config/services.php
22/produccion/private/app/config/routing.php
23/produccion/private/app/modules/Frontend/config/routing.php
24/produccion/private/app/modules/Frontend/Router/Principal.php
25/produccion/private/app/modules/Frontend/Router/Auth.php
26/produccion/private/app/modules/Frontend/Router/Contacto.php
27/produccion/private/app/modules/Frontend/Router/Contenido.php
28/produccion/private/app/modules/Core/Tag.php
29/produccion/private/app/modules/Core/Component/Traduccion.php
30/produccion/private/vendor/phalcon/incubator/Library/Phalcon/Translate/Adapter/Database.php
31/produccion/private/vendor/phalcon/incubator/Library/Phalcon/Translate/Adapter/Base.php
32/produccion/private/app/modules/Core/Mvc/Url.php
Memory
Usage2097152