Autor | Zpráva | ||
---|---|---|---|
Jack06 Profil |
#1 · Zasláno: 28. 8. 2009, 08:50:32
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 |
#2 · Zasláno: 28. 8. 2009, 09:33:44
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 |
#3 · Zasláno: 28. 8. 2009, 09:39:35
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 |
#4 · Zasláno: 28. 8. 2009, 09:48:07
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 * |
#5 · Zasláno: 28. 8. 2009, 09:56:48
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 |
#6 · Zasláno: 28. 8. 2009, 10:04:04 · Upravil/a: Jack06
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 * |
#7 · Zasláno: 28. 8. 2009, 10:25:50
a co kdyby se vytvořila db pro každy jazyk...a přepinani mezi db by nebl žádny problém ne?
|
||
Jack06 Profil |
#8 · Zasláno: 28. 8. 2009, 10:27:48
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 |
#9 · Zasláno: 28. 8. 2009, 11:02:29
Jack06
a co využívat cache |
||
DoubleThink Profil * |
#10 · Zasláno: 28. 8. 2009, 12:47:27
SQLLite je souborová databáze. Na jazykové proměnné bych použil XML - to je nejběžnější způsob.
|
||
Jack06 Profil |
#11 · Zasláno: 28. 8. 2009, 13:09:41
DoubleThink
S XML bohužel neumím, takže to asi budu cachovat :-( |
||
AM_ Profil |
#12 · Zasláno: 29. 8. 2009, 11:27:39
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. |
||
Časová prodleva: 15 let
|
0