Autor Zpráva
JanSvabikCZ
Profil
Zdravím, potřeboval bych pomoc s PHP... Nevíte, nebo nemáte alespoň někdo tušení, jak napsat PHP aplikaci, která bude fungovat jako překladač? Nevím si totiž rady... Měl jsem to vlastně vyřešené, a to přes switch:

<?php
$input = strtolower($_GET['word']);
switch ($input)
{
case "a": $translated = "a/and"; break;
case "abatyš": case "abatyše": $translated = "abbess"; break;
case "abbé": $translated = "abbe"; break;
case "abdikace": case "abdikační": $translated = "abdication"; break;
default: $translated = "[slovo není ve slovníku]"; break;
}
?>

Samozřejmě tam mám více slov, ale nebudu sem přece všechno vypisovat ;-) ...

Nakonec jsem se rozhodl, že to udělám do souboru... Potřeboval bych PHP skript, který by to zajistil (asi takto):

prekladac.php
<?php
// to právě nevím
?>

soubor.txt
české slovo nebo věta|anglické slovo nebo věta (překlad)|a alternativní překlad

ukázka soubor.txt
a|a|and
abatyš|abbess|-
abatyše|abbess|-
abbé|abbe|-
abdikace|abdication|-
abdikační|abdication|-
adaptace|adaptation|conversion, alteration
...

To je asi vše... Budu všem vděčný za každou pomoc... :)
abc
Profil
JanSvabikCZ:
Dobrý večer,
rovnou se zeptám:
1) datábáze není k dispozici?
2) předpokládal bych, že když si někdo účtuje 30.000 Kč/e-shop (dle Vašich www), bude umět naprogramovat překladač
JanSvabikCZ
Profil
Databáze je k dispozici, ale nerad to přes ně dělám. Ty mé stránky nejsou kompletní a je tam napsáno, že se vše připravuje.
abc
Profil
JanSvabikCZ:
Přes soubory to ale bude pomalé - kolik očekáváte řádků?
JanSvabikCZ
Profil
No, hodně... :) Možná časem budu data dávat do databáze, ale zatím bych to chtěl vyřešit takto. Myslím, že podobný skript se bude hodit ještě někdy. Čeština má přes 300.000 slov.
abc
Profil
Ještě jednou zdůrazňuji, že na toto se soubory absolutně nehodí.
Jinak hotový skript zatím neposkytnu, ale ve stručnosti:
1) načtete soubor do paměti - file_get_contents
- první problém - nemusí se celý vejít do paměti
- druhý problém - načítate vždy celý soubor, jelikož nevíte, kde se v něm překlad nachází
- třetí problém soubor se do paměti musí načítat vždy
2) a potom, aby to nebylo tak příšerně pomalé si najdete slovo, které chcete překládat strops
3) dál najdete první oddělovač za nalezeným hledaným slovem
4) dál najdete další enter (\n)
5) a vypíšete vše mezi 3) a 4)
JanSvabikCZ
Profil
Aha, tak o strops jsem ještě neslyšel, neboť se PHP zatím jen učím, ale zatím tedy děkuji. Podívám se, co s tím mohu udělat... Ještě bych to mohl vyřešit, že každé písmeno bude mít svůj soubor - a.txt, b.txt, c.txt,.....


Asi jste myslel strpos
abc
Profil
Ještě bych to mohl vyřešit, že každé písmeno bude mít svůj soubor - a.txt, b.txt, c.txt,.....
To je jen z bláta do louže... Já bych takový překladač používat nechtěl, jelikož bude opravdu hodně pomalý..

Databáze jsou k tomuto stvořeny... Pokud si nevíte rady s databázemi, doporučuji nastudovat články 34 - 49 na linuxsoftu
JanSvabikCZ
Profil
Abych pravdu řekl, v databázích nedělám (zatím), protože to absolutně nechápu. Četl jsem všechno možné, zkoušel, ale nikdy mi nic nefungovalo...


Přečtu si, ok :) Ještě teď :D
Giga
Profil
Na skúšku by som doporučil vyskúšať prehľadávanie súboru, vktorom bude povedzme
5000 slov.
Potom bude jasnejšie, či súbory, alebo databáza.
:)
Joker
Profil
JanSvabikCZ:
Databáze je k dispozici, ale nerad to přes ně dělám.
To je teda argument :-)
Představte si třeba stěhováky, kteří stěhují jen z přízemí do přízemí, protože neradi chodí do schodů.

K tomu překladu, je to překlad jen v jednom směru z nějakého pevně daného jazyka do jiného/jiných?
Jestli ano, šlo by to docela jednoduše, vyrobit si na to pole:
$preklad["en"]["ahoj"] = "hello";
$preklad["en"]["světe"] = "word";
A pak překlad slova je $preklad[jazyk][slovo].

Ale samozřejmě to funguje jen dokud máte pevný výchozí jazyk, ve kterém jsou zadané klíče toho pole.

Kdyby byly třeba tři jazyky a mělo to být z libovolného do libovolného, půjde to řekl bych docela jednoduše přes databázovou tabulku:
Id slova | kód jazyka | slovo
Primární klíč bude Id slova a kód jazyka.
A data třeba:
1 | "en" | "Hello"
1 | "cs" | "Ahoj"
Překlad bude fungovat přes nalezení Id zadaného slova a následně vypsání slova se stejným Id v cílovém jazyce.
JanSvabikCZ
Profil
S databázemi jsem se tedy naučil pracovat... Všem děkuji za rady :) Ano, poslední návrh se mi zdá velmi dobrý :) Jen mi ještě, prosím, poraďte, co mám udělat, když záznam není v databázi (například když se někdo splete a napíše místo "podívat" třeba "posívat"???
JanSvabikCZ
Profil
Ale ten PRIMARY KEY jsem zatím nepochopil...
jenikkozak
Profil
JanSvabikCZ:
S databázemi jsem se tedy naučil pracovat...
Pak jsi génius, že ti na naučení stačil jediný den. Je vidět, že tvá reklama: „Nejkvalitnější internetové a grafické služby“ skutečně není klamavá.

Ale ten PRIMARY KEY jsem zatím nepochopil...
Tvé „pokroky“ nás zas tak moc nezajímají.
JanSvabikCZ
Profil
Další takovej... Je tam napsáno, že se vše PŘIPRAVUJE!

Když si s něčím v databázi nebudu vědět rady, tak si o tom někde přečtu...

Co takhle mluvit k tématu...?

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: