Autor Zpráva
majo80
Profil *
Mal by som napr. súbor slovencina.txt, ktorý by obsahoval:
Prvá stránka
Toto je iný text
Posledný odkaz
...

Pomocou
<?php
$subor = fopen("./slovencina.txt", "r");
$text1=fgets($subor);
$text2=fgets($subor);
fclose($subor);
?>


by som načítaval jednotlivé riadky do premenných $text1 až $textXXX. Problém ale asi bude robiť opätovné načítavanie tejto funkcie (teda otvorenie a zatvorenie súboru s prekladom) pretože by som túto funkciu musel includovať do každej otváranej stránky.

Je možné nejako cacheovať buď samotný súbor slovencina.txt, alebo premenné s ich obsahom text1 až textXXX?
Tori
Profil
Zatím jsem viděla používat tři možnosti (ale určitě jich je víc)

- Pro každý jazyk samostat.soubor s jedním velkým polem, kde budou všechny texty na stránce v jednom jazyku. Podle zvoleného jazyka se jeden z nich includuje. Příklad:
// cestina.php
$preklad = array(
  'pozdrav'  => 'ahoj',
);
// použití:
include 'cestina.php';
echo $preklad['pozdrav']; // napíše "ahoj"


- Dtto, ale pole je přístupné přes funkci (metodu), které se může předat x dalších parametrů a ty se automaticky doplní do textu. Zjednodušený příklad:
// cestina.php
class Preklad_CS  {
  protected $preklad = array(
    'poloneza'  => 'Měla babka %1 jabka a dědoušek jenom dvě.',
  );
  
  function get($text, $nahrada)  {
    return str_replace('%1', $nahrada, $this->preklad[$text]);
  }
}

// použití:
include 'cestina.php';
$slovnik = new Preklad_CS();
echo $slovnik->get('poloneza', 'čtyři'); // napíše "Měla babka čtyři jabka a dědoušek jenom dvě."


- Gettext (velmi flexibilní, podporuje různé tvary plurálu)

Koukněte na tahle dvě vlákna: Odkaz, Odkaz
l564
Profil
Zde tě odkazuji na tvé dřívější vlákno

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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