/**
 * Tradukas la abstraktan tabelnomon al la konkreta tabelnomo.
 *
 * Ekzistas pluraj eblecoj, kiel traduki la nomon.
 * Dependas de la enhavo de konfiguro/datumaro.php.
 *
 * (1) Se tie trovigxas funkcio
 *      tabelnomtradukilo(...),
 *     gxi estas vokita per la abstrakta tabelnomo.
 *     Se la rezulto ne estas malplena (0, null, nedefinita),
 *     gxi estos la konkreta tabelnomo.
 * (2) Se ekzistas globala variablo $tabelnomtradukilo (kiu estu
 *     array), tiam ni sercxas la valoron de la tabelnomo
 *     (do, $tabelnomtradukilo[$tabelnomo]). Se la rezulto
 *     ne estas malplena, gxi estos la konkreta tabelnomo.
 * (3) Se ekzistas globalaj variabloj $tabelnomprefikso kaj/aux
 *     $tabelnompostfikso, ili estas kunmetitaj kun la
 *     abstrakta tabelnomo por ricevi la konkretan
 *     tabelnomon.
 * (4) Se neniu el tiuj eblecoj tauxgas, la konkreta
 *     tabelnomo estos la abstrakta tabelnomo.
 */
function traduku_tabelnomon($tabelnomo)
{
    // (1)
    if (function_exists("tabelnomtradukilo")) {
        $traduko = tabelnomtradukilo($tabelnomo);
        if (!empty($traduko)) {
            return $traduko;
        }
    }
    // (2)
    if (is_array($GLOBALS["tabelnomtradukilo"])) {
        $traduko = $GLOBALS["tabelnomtradukilo"][$tabelnomo];
        if (!empty($traduko)) {
            return $traduko;
        }
    }
    // (3) + (4)
    return $GLOBALS["tabelnomprefikso"] . $tabelnomo . $GLOBALS["tabelnompostfikso"];
}
/**
 * Tradukas abstraktan tabelnomon al konkreta tabelnomo.
 *
 * Ekzistas pluraj eblecoj, kiel traduki la nomon.
 * Dependas de la enhavo de {@link konfiguro/datumaro.php}.
 *
 * - (1) Se tie troviĝas funkcio
 *      tabelnomtradukilo(...),
 *     ĝi estas vokita per la abstrakta tabelnomo.
 *     Se la rezulto ne estas malplena (0, null, nedefinita),
 *     ĝi estos la konkreta tabelnomo.
 * - (2) Se ekzistas globala variablo $tabelnomtradukilo (kiu estu
 *     array), tiam ni serĉas la valoron de la tabelnomo
 *     (do, $tabelnomtradukilo[$tabelnomo]). Se la rezulto
 *     ne estas malplena, ĝi estos la konkreta tabelnomo.
 * - (3) Se ekzistas globalaj variabloj $tabelnomprefikso kaj/aŭ
 *     $tabelnompostfikso, ili estas kunmetitaj kun la
 *     abstrakta tabelnomo por ricevi la konkretan
 *     tabelnomon.
 * - (4) Se neniu el tiuj eblecoj taŭgas, la konkreta
 *     tabelnomo estos la abstrakta tabelnomo.
 *
 * @global array $tabelnomtradukilo
 * @global string $tabelnomprefikso
 * @global string $tabelnompostfikso
 * @uses tabelnomtradukilo (se ekzistas)
 *
 * @param string $tabelnomo la abstrakta tabelonomo
 * @return string la konkreta tabelnomo
 */
function traduku_tabelnomon($tabelnomo)
{
    // (1)
    if (function_exists("tabelnomtradukilo")) {
        $traduko = tabelnomtradukilo($tabelnomo);
        if (!empty($traduko)) {
            return $traduko;
        }
    }
    // (2)
    if (isset($GLOBALS["tabelnomtradukilo"]) && is_array($GLOBALS["tabelnomtradukilo"])) {
        $traduko = $GLOBALS["tabelnomtradukilo"][$tabelnomo];
        if (!empty($traduko)) {
            return $traduko;
        }
    }
    // (3) + (4)
    $tabelnomprefikso = valoro($GLOBALS["tabelnomprefikso"], "");
    $tabelnompostfikso = valoro($GLOBALS["tabelnompostfikso"], "");
    return $tabelnomprefikso . $tabelnomo . $tabelnompostfikso;
}