Autor Zpráva
Jack06
Profil
DObrý den chtěl jsem se zeptat, zda se jdá pomocí php otevření souboru a prací s ním nějak měnit určité věci. Dám příklad:

Mám jazykovej soubor:
czech.php

$lang['register_001'] = 'Registrace';
$lang['register_002'] = 'Jméno';
$lang['register_003'] = 'Heslo';
$lang['register_004'] = 'E-mail';
$lang['register_005'] = 'Registrovat';

A chtěl bych, to změnit například jako když to měním do databáze. V inputu si nechám vypsat $lang['register_001'], změním ho na slovo např. Zaregistrovat se, a aby se to v jazykovém souboru změnilo.

Lze to nějak udělat? Děkuji
tiso
Profil
Jack06: áno ide, vygeneruješ si z toho súboru formulár a pojeho odoslaní výsledky uložíš naspäť. Musíš nastaviť tomu súboru práva pre zápis, väčšinou ich nemá.
btw. jazykové preklady sa robia inak, miesto $lang['register_002'], ktoré nikto nevie čo znamená bez pozerania do druhého súboru sa používajú popisné anglické názvy indexov $lang['register_name'], $lang['register_login'], $lang['register_loginname'] a podobne, prípadne viacrozmerné pole v tvare $lang['register']['...']
Jack06
Profil
tiso
Díky a víš jak se zapisuje, čis tránky kde to mají popsané, aby se mi přepsalo co chci a ne co nechci? Díky
Taps
Profil
Jack06
fopen=otevření souboru
fwrite=zápis do souboru
fclose=zavření souboru
popř.
file_put_contents

viz manula www.php.net popř google
DoubleThink
Profil *
Jack06
Tento postup je dost nestandardní, nehledě na jeho bezpečnostní rizika. Pokud chceš ukládat strukturované data do souborů, měl bys využít formát na to určený - například XML, INI, nebo ve tvém případě klidně i SQLLite.
Jack06
Profil
DoubleThink
Jakože mám tvořit jazykovou implementaci pomocí databáze? To bude tak trochu složitější tahat pořád ty slova z DB.

Přemýšlím, jak nejlépe udělat web, aby si mohli změnit jazyk a dalo se to přez nějakou administraci upravovat.
radas
Profil *
a co kdyby se vytvořila db pro každy jazyk...a přepinani mezi db by nebl žádny problém ne?
Jack06
Profil
radas
Tady nejde o problém vytvořit tabulky a v nich co potřebuji. Já vidím spíše problém v tom že pořád budu tahat data z databáze.. A to mi to ze souboru přijde jako menší vytížení.
Taps
Profil
Jack06
a co využívat cache
DoubleThink
Profil *
SQLLite je souborová databáze. Na jazykové proměnné bych použil XML - to je nejběžnější způsob.
Jack06
Profil
DoubleThink
S XML bohužel neumím, takže to asi budu cachovat :-(
AM_
Profil
Můžeš použít var_export, která vypíše pole do takové podoby, že jej lze znovu PHP parsovat, tedy:
$lang = array();
$lang['register_001'] = 'Registrace'; 
$lang['register_002'] = 'Jméno'; 
$lang['register_003'] = 'Heslo'; 
$lang['register_004'] = 'E-mail'; 
$lang['register_005'] = 'Registrovat';
$lang_file = '<?php return '.$lang.'; ?>';
file_put_contents("lang/cz.php", $lang);

následně soubor načteš v programu:
$lang = require "lang/cz.php"; //pokud telo kodu vraci hodnotu pomoci return, lze require ci include volat jako funkci

Tohle je asi nejčistší a nejrychlejší, jelikož měnit se bude jazykový soubor asi jen zřídka, zato načítat se bude často a nebudeš číst soubory ani databázi a bude to přímo v kódu.
Na druhou stranu si ale zvaž, jestli není možné nechat upravovat přímo soubor cz.php v textové podobě, to zvládne i ne-programátor, pokud to nebude dělat cvičená opice, a ty si ušetříš práci.

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: