Autor Zpráva
Jimmik
Profil *
Ahoj, chtěl bych poprosit o názor na mé řešení překladu administrace.

Řešení:

cs.json (soubor s překlady)
{
    "Home": {
      "Accounts": "Seznam účtů"
    }
}

class.translator.php (překladač)
class translator
{
    
    public $sec;  
    public $exp;      
    
    public function __construct($sec)
    {
      
        $this->data = json_decode(file_get_contents(dirname(__FILE__).'/../../lang/'.$sec.'.json'),true);
    
    }     
    
    public function translate($sec,$exp)
    {
    
        return ($this->data[$sec][$exp]);
      
    }

}

php volání:
$lang = new translator($userdats['lang']); // Načtení jazyka
$lang->translate('Home','Accounts'); // Překlad potřebné části

Nejsem si jist, zda problematiku řeším správně. Jde mi hlavně o náročnost načítání, protože to nechci tahat z DB (abych ji nezatěžoval jednotlivými dotazy) a záznamů k přeložení může být i 1000.

Tedy na každé stránce, kde je nějaký překlad se musí načítat soubor s tisíci záznamy. Samozřejmě soubor zmenším číselnými indexy místo používáním slovních indexů k překladu, ale i přesto mi to přijde celkem náročné.

Je nějaký lepší způsob řešení nebo se nemusím, až tak zabývat tou velikostí souboru?
Joker
Profil
Jimmik:
Je to jeden z možných způsobů, jak se to dá udělat.

Jde mi hlavně o náročnost načítání, protože to nechci tahat z DB (abych ji nezatěžoval jednotlivými dotazy)
Tak databázová analogie toho uvedeného by byl jeden dotaz ve stylu SELECT klic, preklad FROM preklady WHERE sekce = $sec.

Samozřejmě soubor zmenším číselnými indexy
To bych si rozmyslel, protože pak budou vznikat kódy typu: <h2>{315}</h2><div><strong>{28}</strong>: {54}</div> a nikdo se v tom nevyzná.

nebo se nemusím, až tak zabývat tou velikostí souboru?
Jestli záznamů může být „až tisíc“ a průměrný záznam bude mít řádově jednotky-desítky bajtů, bude celý soubor mít maximálně pár desítek kilobajtů.
To asi nemá cenu řešit.
Jimmik
Profil *
Joker:
Děkuji moc, za Váš názor.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0