![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Znalazłem tutaj dwa tematy o tłumaczeniu ale jakoś nie rozwiązują one mojego problemu.
Mam strony html (tekstowe drzewka genealogiczne) które są zbudowane z powtarzających się słów oraz z nazwisk. "Słowa" takie jak: ur. zm. ojciec matka ..... chciałbym móc w prosty sposób stronę wyświetlić w innym języku korzystając z bazy MSQL. Trzymał bym tam wszystkie z możliwych słów które wymagają tłumaczenia b. d. father mother .... wynik wyświetlany byłby w formie strony php - która korzystając z owej html i bazy wyświetlała gotowe drzewko genealogiczne np. w angielskim. kromieszewski.html --> kromieszewski_ang.php --> kromieszewski_fr.php --> wydaje mi się że to bardzo prosta sprawa ale nie jestem biegły. mogę liczyć na pomoc ? Tłumacz Google się nie bardzo nadaje - po pierwsze nie potrzebuje tłumaczyć całych tekstów, po drugie nazwiska często mają formę rzeczowników np. Katarzyna Ogień to Katarzyna Ogień a nie "Katherine Flame", po trzecie google nie tłumaczy prawidłowo skrótów genealogicznych. Ten post edytował Dopler 26.09.2009, 11:01:34 -------------------- Genealogia Polaków
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 3.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zrób zmienną $jezyk albo $lang która będzie miała wartość 'pol', 'eng', 'ger', 'fra' itd.
Potem tablice ze słowami:
potem jak będzie do wyświetlenia jakiś napis, to: zamiast:
tylko na początku daj:
Stronę otwierasz: kromieszewski.php?lang=eng (na przykład, a jak nie podasz parametru, to będzie po polsku) Ten post edytował mikiroro 27.01.2010, 13:30:29 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za pomoc, jednak potrzebne by było nieco inne rozwiązanie.
Ta metoda ma jedną wadę - mianowicie teskt trzeba napisać z dużą ilością kodowania php. Niestety struktura serwisu wymaga aby tekst był niemal jak w Worszie (jest on nawet w znacznikach "pre" aby nie trzeba było dawać znaku końca linijki oraz żeby linijki się nie zawijały na stronie Przykład strony w skrócie (strona HTML-owa ! abecadlo.htm) Cytat -html- -head- -/head- -body- nagłówek strony -pre- 1. Jacek Abecadło ur. 1658 Warszawa, zm. 25.11.1672 Piotrków, leśnik 1.1. Rozalia Abecadło, chrz. 1692 + Julian Bęc, hetman wielki koronny 1.2. Hermenegilda Abecadło + Pomponiusz Cudak "Platfus", ur. Zgierz, własność ziemska: Kormorany, Zgierz ... -/pre- stopka -/body- -/html- Tekst w dziale -pre- jest więc niemal taki jakby był w pliku "txt" Silnik tłumaczenia powinien być następujący: Strona abecadlo.php (inna niż abecadlo.htm) -korzysta z dwóch plików -- abecadlo.htm - jako tekstu -- slownik.txt (np.), lub z bazy SQL, lub tabeli - cokolwiek - jako zestawu słów do tłumaczenia -wynik wyświetla słowo po słowie dokonując jego tłumaczenia jeśli słowo jest w słowniku. a więc np: Cytat 1. Jacek Abecadło b. 1658 Warsaw, d. 25.11.1672 Piotrków, forester 1.1. Rozalia Abecadło, bapt. 1692 + Julian Bęc, Hetman of the Crown 1.2. Hermenegilda Abecadło + Pomponiusz Cudak "Platfus", b. Zgierz, landed property: Kormorany, Zgierz Chodzi o to że strona abecadlo.htm zmienia się często (zawartość działu -pre-) użytkownicy nie mają wiedzy na temat html-a, przysyłają więc dane w formie worda, przetwarzanie tego za każdym razem na ciąg php typu "echo ..." spowodowałoby kolosalne obciążenie i uniemożliwiło by działanie strony i redakcji. Na stronie może być więc link do strony "php" - automatyczne tłumaczenie Ponieważ stron typu abecadlo.htm jest mnóstwo, potrzebne jest aby wszystko się działo poza tą stroną i korzystało z jednego silnika. Ten post edytował Dopler 27.01.2010, 15:03:30 -------------------- Genealogia Polaków
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 4 340 Pomógł: 542 Dołączył: 15.01.2006 Skąd: Olsztyn/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Może google translate api
z tym że ma on ograniczoną ilość słów do przesłania i zamianę. Ale można w JS zrobić aby akapit po akapicie wysyłał i tłumaczył. -------------------- I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy. QueryBuilder, Mootools.net, bbcradio1::MistaJam http://www.phpbench.com/ |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
google translacja w tym wypadku kompletnie nie ma zastosowania
jak pisałem z dwóch przyczyn 1. są tam charakterystyczne skróty które google źle interpretuje 2. Są nazwiska w formie rzeczownika np. "Grzegorz Koń" i nie potrzebuję mieć "Grzegorz Horse" Zresztą jakość tłumaczenia jest wciąż strasznie mizerna. Wydaje mi się że taki silnik php o jakim pisałem powinien być prosty do zrobienia. 1. pobierz słowo 2. sprawdź czy istnieje tłumaczenie 3a. jeśli tak- pisz tłumaczenie 3b. jeśli nie - pisz słowo 4. przejdź do kolejnego słowa -------------------- Genealogia Polaków
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 3.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
W takim razie umieść raczej to, co w <pre> w pliku txt i abecadlo.html niech będzie php, a tam plik załączysz przez file_get_contents().
Więc najpierw umieść zawartość bloku <pre> w pliku family.txt, a następnie stwórz plik z tłumaczeniami w postaci: Kod ojciec>father matka>mother i zapisz jako eng.txt zamiast > może być byle co, np tab.
i potem: <pre> <?php echo $family; ?> </pre> No i nie próbuj używać pliku HTML jako bazy danych. Do tego są pliki xml i tekstowe. A poza tym żeby były html-owe przejścia do nowej linii, a nie zależy Ci na zachowaniu spacji i czcionki o stałej szerokości, to możesz użyć funkcji PHP nl2br(). Ten post edytował mikiroro 28.01.2010, 17:22:02 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
dzięki wielkie - to już bliżej ale...
nie rozumiem - czyli nie można do jednego pliku php pobrać tekstu z pliku o dowolnym rozszerzeniu ? np. family.htm ? tak to utrudnia sprawę ? upieram się - że plik *.htm jako wersja wyjściowa polska MUSI pozostać, cały system ma zbyt dużo spraw z tym związanych - np. automatyczne bbcody w innych bazach, tysiące linków rozrzuconych po różnych stronach. chodzi o to aby wersje językowe były DRUGIM plikiem - i on może być php. Pobierać tekst z htm a tłumaczenie z txt czy whatever czyli family.htm - źródło polskie, strona podstawowa family.php (z silnikiem) wyświetlająca tłumaczone wersje ang.txt fr.txt ... -------------------- Genealogia Polaków
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 3.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ostatecznie można tak zrobić. Tylko wtedy musisz wyraźnie zaznaczyć, gdzie zaczyna się i kończy część, która ma być przetłumaczona.
Na przykład zrób: i wtedy:
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
"tak czułem, cholera tak czułem" (j.Stuhr, Seksmisja)
Dzięki na prawdę wielkie!, to świetnie rozwiązuje sprawę. Zaraz postaram się zrobić i zdam sprawę z rezultatu. Faktycznie działa fajnie, tzn ... yyy.... działało, ale coś chyba spiep... i nie widzę gdzie twki błąd. Troszkę przerobiłem bo translacja robiła: nagłówek nagłówek przetłumaczony tekst przetłumaczony koniec przetłumaczony koniec dodałem jeszcze tymczasowo tekst ostrzegający, ponadto też tymczasowo każde słowo przetłumaczone w słowniku ma dodane styl na czerwono. wygląda to tak: Kod <?php $lang = $_GET['lang']; $family = file_get_contents('zboinski.htm'); $poczatek_strony = strpos($family, '<html>'); $poczatek_tlum = strpos($family, '<pre '); //taki zapis - gdyż znacznik <pre> ma parametry $koniec_tlum = strpos($family, '</pre>'); $koniec_strony = strpos($family, '</html>'); $od_poczatku = substr($family, $poczatek_strony, $poczatek_tlum); $do_konca = substr($family, $koniec_tlum, $koniec_strony); $tlum_length = $koniec_tlum-$poczatek_tlum; $to_translate = substr($family, $poczatek_tlum, $tlum_length); if(!file_exists("{$lang}.txt")) $lang='pol'; // jeśli nie można znaleźć "słownika", to ustaw polski if($lang!='pol') // tłumaczymy tylko, jeśli nie ma być po polsku { foreach(file($lang.'.txt') as $word) { list($find,$replace)=explode('¤',trim($word)); // separator (może być dowolny) $translated = str_replace($find, $replace, $to_translate); } } else // jeśli po polsku - tylko przenosi tekst { $translated = $to_translate; } echo $od_poczatku; echo '<span style="color: red">English automatical translation of some particular words. Page may by corrupted</span> '; echo $translated; echo $do_konca; ?> Efekt jest do zobaczenia w pliku http://genealogia.okiem.pl/zboinski.php?lang=ang I tu jest problem - bo w sumie wszystko działa ale.. tłumaczone jest tylko jedno słowo - dokładnie to które jest w najniższej linijce pliku ang.txt, wcześniejsze są pomijane. * miałbym jeszcze prośbę żeby przy tłumaczeniu słowa tłumaczone były na kolorowo, (może się odnosić do stylu który zadam w css - n. "ang", "fr") - próbowałem i nie umiem tego dodać. Ale to już kosmetyka. Zastanawiam się też nad tym aby silnik był w jakimś jednym pliku i żeby bie trzeba było tworzyć dla wszystkich nazwisko.htm plików nazwisko.php - ale to potem. -------------------- Genealogia Polaków
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 3.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Musi być:
Masz jeszcze błąd HTML: Ten post edytował mikiroro 31.01.2010, 16:44:57 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Trochę nie rozumiem więc jak to działa - ale nie szkodzi - ważne że działa
teraz prośba kosmetyczna - jak zrobić żeby tłumaczone słowo miało styl (taki jak lang) Czyli zamiana postępuje tak: blablabla => style=$lang blablabla /style (w uproszczeniu) -------------------- Genealogia Polaków
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 3.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
No, tak jak zrobiłeś kolorowanie. A jeżeli ten $lang ma być wartością zmienną, trzeba użyć wyrażeń regularnych, co jest już wyższą szkołą jazdy.
Ten post edytował mikiroro 31.01.2010, 19:35:03 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 2 148 Pomógł: 230 Dołączył: 26.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Przyznam szczerze, że nie chciało mi się czytać całego tematu. Spojrzałem tylko na kody, czy ktoś nie podał takiego rozwiązania:
Pliki językowe: pl.lang
en.lang
I teraz generowanie strony:
Ten post edytował pyro 1.02.2010, 14:04:37 -------------------- ET LINGUA EIUS LOQUETUR IUDICIUM
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Cytat No, tak jak zrobiłeś kolorowanie. A jeżeli ten $lang ma być wartością zmienną, trzeba użyć wyrażeń regularnych, co jest już wyższą szkołą jazdy. no nie - bo w css zrobie po prostu style "ang" "fr" "niem" "rus" itp .... po jednym do każdego pliku słownika. Załączenie css jest w nagłówku html-a więc to nie problem Chodzi tylko żeby $find - - zmieniał na - - - coś1 $lang $replace coś2 gdzie coś1 i coś2 będą stałe. ps. Stronka już bardzo ładnie chodzi - wszystkie pliki nazwiskowe się same tłumaczą, Kod umieściłem w pliku tlumacz.php i dałem żeby nazwę pliku pobierał z referera. Link na każdej ze stron wygląda tlumacz.php?lang=ang Na tlumaczu dodałem jeszcze powrót do pliku referer ps2. pyro - dzięki, tylko że jak pisałem chodzi nie o wersje jednej strony, tylko o tłumaczenie odcinków istniejących stron htm ps3. UDAŁO SIE - Zrobiłem tak: Kod list($find,$replace)=explode('¤',trim($word)); // separator (może być dowolny) $pieces = array('<span class="',$lang,'">',$replace,'</span>'); $polacz = implode($pieces); $to_translate = str_replace($find, $polacz, $to_translate); Ten post edytował Dopler 1.02.2010, 17:11:10 -------------------- Genealogia Polaków
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 13 Pomógł: 1 Dołączył: 3.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zgłaszam buga:
pokazuje "sbef.ał" zamiast "sprzedał" (tłumaczy przed na bef.) Niestety, nie wiem, jak tłumaczyć tylko całe wyrazy. |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem dla Ciebie coś takiego:
Plik dict.txt: Kod tekst:text zostanie:will przetłumaczony:translated Plik text.txt: Kod to jest jakiś tekst <translate> tekst zostanie przetłumaczony a to nie </translate> to inny tekst Tłumaczy w obie strony. Ten post edytował fifi209 1.02.2010, 19:13:39 -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
mikiroro:
Cytat Zgłaszam buga: pokazuje "sbef.ał" zamiast "sprzedał" (tłumaczy przed na bef.) Niestety, nie wiem, jak tłumaczyć tylko całe wyrazy. a ja wiem jak wystarczy w słowniku dać zamiast linijki Kod przed¤bef. linijkę ze spacjami przed i po słowach (tu się to nie wyświetla dobrze) Kod przed ¤ bef. tylko na końcu trzeba dać znak twardej spacji - czyli Kod przed ¤ bef. fifi209 Dzięki za pracę. Ja już system mikiroro zainstalowałem, teraz go tylko dopracowuje - działa (choć ma drobne wady) Z tego co widzę w Twoim jest tylko angielskie, a w tym co już jest jest możliwość dodania kolejnych języków bardzo prosto. Ale za pewne i ten się da dostosować. w każdym razie system działa na www.genealogia.okiem.pl (strony nazwisk - z listy po lewej stronie) Ten post edytował Dopler 1.02.2010, 21:58:26 -------------------- Genealogia Polaków
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Z tego co widzę w Twoim jest tylko angielskie, a w tym co już jest jest możliwość dodania kolejnych języków bardzo prosto. Ale za pewne i ten się da dostosować. Przecież możesz wczytać dowolny słownik, w dodatku przystosowałem tak aby działał w obie strony - a z angielskim to był tylko przykład. -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 30.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
sorry - ja się aż tak nie znam
dlatego też trudno mi ocenić czy ten system jest lepszy czy gorszy - a tamten już działa jakie są zalety oprócz działania w obie strony ? - mi potrzeba tylko pol=>tlumaczenia -------------------- Genealogia Polaków
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 4 655 Pomógł: 556 Dołączył: 17.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
jakie są zalety oprócz działania w obie strony ? - mi potrzeba tylko pol=>tlumaczenia Właśnie możliwość łatwej wymiany słownika, tylko zmieniasz plik z którego ma czytać słownik. Ja to zrobiłem bardziej do przykładu - z myślą, że może się komuś przyda. ![]() -------------------- Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 17:16 |