<?php

if ( ! defined( 'ABSPATH' ) ) exit;

class DigitalSignage4_Translate
{
    private static $lang = "";
    private static $defaultLang = "en";
    private static $translationArray = array();

    public static function setLang($lang)
    {
        self::$lang = (in_array($lang, array( "fr", "en", "de", "es" ))) ? $lang : self::$defaultLang ;
    }

    /**
     * Cette function retourne la traduction dans la langue parametrée.
     * Si la traduction n'existe pas ou est vide, elle retorune la traduction dans la langue pas defaut 'Anglais' meme si elle meme est vide.
     * La fonction permet aussi d'utiliser sprintf si des données sont passé en parametres.
     *
     * @param $key
     * @param mixed ...$argus
     *
     * @return string
     */
    public static function getTraduction($key, $data = "", $data2 = "", $data3 = "")
    {
        $translation = self::getTranslationFromLang(self::$lang, $key);

        if (!$translation) {
            $translation = self::getTranslationFromLang(self::$defaultLang, $key);
        }
        return sprintf($translation, $data, $data2, $data3);
    }

    /**
     * Récupere la traduction dans une lang depuis les fichiers de ./lang/**.php
     *
     * @param $lang
     * @param $key
     *
     * @return string
     */
    private static function getTranslationFromLang($lang, $key)
    {
        if (self::$translationArray == array()) {
            if (!$lang) {
                $lang = self::$defaultLang;
            }

            $translationArray       = include("lang/" . $lang . ".php");

            self::$translationArray = $translationArray;
        }

        if (self::$translationArray) {
            return (array_key_exists($key, self::$translationArray)) ? self::$translationArray[$key] : "";
        }

        return "";
    }
}
