<?php
function get_otro_idioma() {
	//##20260325: esto por ahora no se hace sofisticado, porque son sólo dos idiomas inicialmente.
	$otro = array("en"=>"es", "es"=>"en" );
	return $otro[ get_idioma() ];
}
function get_idioma() {
	return get_idioma_actual();
}
function get_idioma_actual() {
	return $GLOBALS["lang"];
}

function t($placeholder, $comandos=NULL) {
    $language = get_idioma();
	/*	
    if($language==IDIOMA_DEFAULT) {
        $r = $placeholder;
    } else {
        $fh = fopen(__DIR__ . "/traducciones.json", "r");
        $c = fread($fh, 10000000);
        $associative = TRUE;
        $traducciones = json_decode($c,$associative );
	}
	*/
	require(__DIR__ . "/traducciones.php"); //Ya no es fopen, sino require. Y ya ahí tiene el $traducciones	
	$lc = strtolower($placeholder);
	if(empty($traducciones[$language][$lc])) {
		/*Si no encuentra la traducción, puede haber dos razones: 
			1. Hubo un error del usuario programador al escribir el placeholder, y ese placeholder NO existe. 
			2. Ya el placeholder está en el IDIOMA_DEFAULT, y no es necesario traducirlo.			
		*/
		//Verifica primero si hubo un error. La manera de revisarlo, es tomar OTRO idioma, y buscar si 
		//ese placeholder tiene traducción:
		$otro_idioma = get_otro_idioma();
		$STRICT_TRUE = TRUE;		
		$es_valido_este_placeholder = in_array( 
						    strtolower($placeholder), 
							array_map( function($c) { return strtolower($c); }, array_keys($traducciones[$otro_idioma]) ),
							$STRICT_TRUE );
		if(!$es_valido_este_placeholder) {
			error_y_salir("##20260323173650-2041dav: Es inválido el placeholder '$placeholder'. Porque:
				1. No existe la traducción de la expresión '$lc' para el idioma '$language';
				2. Tampoco existe en otro idioma como '$otro_idioma', luego no podemos tomar el placeholder literalmente.
				");
		} else {
			$r = $placeholder;
		}
	} else {
		$r = $traducciones[$language][$lc];
		if(is_callable($r)) {
			$r = call_user_func($r);
		}
		if(!is_string($r)) {
			error_y_salir("##20260325142021-4032: la entrada de diccionario para <b><i>'$placeholder'</i></b> todavía no se ha convertido a string");
		}
	}
	/*
	##20260325
	Esto era para poder editarlo fácilmente, se le iba a entregar el nombre del archivo. 
	Pero como de todas formas puede que el mecanismo de los archivos no sea tan duradero, por eso me detuve.
	if($comandos=="ruta") {
		echo ruta($placeholder);
		die();
	} */
	echo $r;  //Escribe el resultado traducido	
}



function css_class($contexto, $valor_en_el_contexto) {
    //Puede generalizarse a comunes
    if(($contexto=="contexto=idioma") && (get_idioma()==$valor_en_el_contexto)) {
        echo "linkExterno";
    }
}
