/**
 * Extrae el valor de un array multidimensional a partir de un string separado por '.'
 *
 * @param  [string] $string Cadena que indica el valor a buscar en el array separada por '.'
 * @param  [array]  $array  Array con valores
 * @param  [array]  &$val   Valor actual
 * @return [string]
 */
function getArrayValueFromString($string, $array, &$val = array())
{
    $parts = explode('.', $string, 2);
    $val = empty($val) ? $array[$parts[0]] : $val[$parts[0]];
    if (count($parts) >= 2) {
        return getArrayValueFromString($parts[1], $array, $val);
    } else {
        return $val;
    }
}
 public function url($uri, $idioma = '')
 {
     $lang = $idioma != '' ? $idioma : getLang();
     $data = (require realpath(__DIR__ . DIRECTORY_SEPARATOR . '..') . '/lang/' . $lang . '.php');
     if ($lang == DEFAULT_LANG) {
         $url = $uri != 'home' ? BASE_URL . getArrayValueFromString('url.' . $uri, $data) : BASE_URL;
     } else {
         $url = $uri != 'home' ? BASE_URL . $lang . '/' . getArrayValueFromString('url.' . $uri, $data) : BASE_URL . $lang;
     }
     return $url;
 }
 public function translate($text, $idioma = '')
 {
     $lang = $idioma != '' ? $idioma : getLang();
     $data = (require realpath(__DIR__ . DIRECTORY_SEPARATOR . '..') . '/lang/' . $lang . '.php');
     return getArrayValueFromString($text, $data);
 }