Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Jak podzielic text z html na zdania zeby wyslac je do tlumaczenia ?
Forum PHP.pl > Forum > Przedszkole
Octobus
Mam opisy produktow ze sklepu internetowego w roznym formacie (ogolnie balagan jest). Opis jest w html'u, pytanie czy ktos z was spotkal sie z takim problemem zeby z opisow wyciagnac pojedyncze zdania, rozdzielane przez <p>, <br/>, <li>, <td> zeby wyslac to do tlumaczenia i pozniej, najlepiej w to samo miejsce wrzucic je ponownie ale juz jako przetlumaczone. Ewentualnie moze ktos z was rozwiazal to jakos inaczej ? Zajmuje mi to zawsze mnustwo czasu i nie potrafie tego zautomatyzowac ...

przyklad z internetu:
Kod
<strong>Materiał:</strong><br>
Korpus wykonany z wysokiej jakości płyty wiórowej laminowanej; akcesoria montażowe wraz z czytelną instrukcją w komplecie; gwarancja 2 lata.<br>
<br>

<strong>Opis produktu:</strong><br>
Szafka górna otwarta z dwoma półkami w środku. Elegancja i komfort to główne cechy kuchni Sycylia. Niezależnie z której strony oglądane będzie kuchnia meble zawsze zaprezentują się doskonale. Imponująca liczba szafek dolnych oraz górnych zaspokoi potrzeby użytkowników.<br>
<br>

<strong>Kolor:</strong><br>
Korpus - biały<br>
Korpus - orzech milano

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec non tempus urna. Aliquam erat volutpat. Curabitur tristique erat pharetra sapien fringilla consequat.</p>
<p>Etiam consectetur vitae est non suscipit. Aenean elementum quam id ante auctor luctus. Nam ex quam, laoreet gravida dictum sit amet, hendrerit eu justo. Quisque ac scelerisque magna, et tincidunt tortor. Phasellus vel commodo ex, a finibus nisl.</p>
trueblue
Gdybym miał to zrobić, to wyłuskałbym każdy tekst za znacznikiem, zapisał gdzieś jego numer wraz z id produktu (albo osobno, albo w postaci id-numer).
Po tłumaczeniu operacja odwrotna. Mając id produktu i numer wstawiasz jego tłumaczenie.

Tyle, że czy dla tłumacza nie będzie potrzebny cały tekst, aby mógł wyłapać kontekst do prawidłowego przetłumaczenia?
sabat24
Z rok temu miałem podobny problem i rozwiązałem go tak. Właściwie zasada opisana przez trueblue. Wszystkie tego typu tekstu do tłumaczenia eksportuję do Excela. Każdy język, to osobny arkusz. W pierwszej kolumnie umieszczam identyfikator w postaci: 222|prod|desc - co oznacza ID 222, tabela products, pole description. Kolejne kolumny, to są części składowe danego tekstu. Tekst rozbijam ze względu na akapity (p), nowe linie (br) oraz wypunktowania (li). U mnie nie ma więcej możliwości, ale można dodać. Na bazie Twojego przykładu wyglądałoby tak (każdy wiersz tu, to kolumna w excelu)

1|prod|desc
<strong>Materiał:</strong>
Korpus wykonany z wysokiej jakości płyty wiórowej laminowanej; akcesoria montażowe wraz z czytelną instrukcją w komplecie; gwarancja 2 lata.
<strong>Opis produktu:</strong>
Szafka górna otwarta z dwoma półkami w środku. Elegancja i komfort to główne cechy kuchni Sycylia. Niezależnie z której strony oglądane będzie kuchnia meble zawsze zaprezentują się doskonale. Imponująca liczba szafek dolnych oraz górnych zaspokoi potrzeby użytkowników.
<strong>Kolor:</strong>
Korpus - biały
Korpus - orzech milano
....

Dodatkowo zapisuję sobie tekst całości, na wypadek, gdyby się on zmienił nim przyjdzie tłumaczenie. Teraz tłumacz ma opis 1 produktu w 1 wierszu, tylko w różnych kolumnach. Widzi cały kontekst i zachowuje podział na kolumny. Co prawda muszą oni sobie to kopiować z excela albo odpowiednio formatować kolumny, bo długie teksty są niezbyt dobrze wyświetlane, jednak jest to akceptowalne.
Po jakimś czasie dostaję całe tłumaczenie ze wszystkich języków w 1 pliku excela albo w wielu plikach z arkuszami nazwanymi odpowiednio wobec kodów języka np. en-gb, fr-fr itp.
Wgrywam sobie taki plik do strony i parser robi odwrotną pracę. Czyli na podstawie tekstu, który skopiowałem dzieli go ponownie na tablicę z elementami tekstowymi. Odczytuje z Excela odpowiednie wiersze i kolumny, robi podmianę, na podstawie ID rozpoznaje co to za produkt i jakie pole jest tłumaczone i wykonuje update do bazy danych.

Samo ID jest kodowane i dekodowane (używam biblioteki hashID), by mi nikt tam nie ingerował w to. Dopuszczam strongi, bo nie widzę powodu je zmieniać na nic innego. Jeśli mam kod typu <span style="font-size: 14px; color: #fff;">tekst</span> i inne takie dziwne rzeczy, to zamieniam to na [1]tekst[/1] i informuję tłumaczy, by nie ruszali takich znaczków oraz <strongów>. Od biedy strongi można też zamieniać w ten sposób.
Sprawa tłumaczeń generalnie załatwiana jest przez eksport oraz import plików excela.
Jak na razie nie trafił się nikt z tłumaczy, co by nie ogarnął tego systemu excelowego, chociaż za wielu ich też nie było.
gitbejbe
to co napisał sabat24 to też opcja - jedna z wielu.

ja kiedyś zrobiłem to inaczej - z tego co wiem działa do dziś i ma się dobrze. Stworzyłem sobie akcje którą mogłem wywołać z panelu admina, która oznaczała produkt jako "do tłumaczenia". Opis produktu lądował do specjalnej tabeli w bazie gdzie relacyjnie był powiązany z produktem. Nie pamiętam dokładnie, ale na pewno było to coś w stylu: ID|PRODUCT_ID|FROM|TO|STATUS|INFO|LANG

FROM - oryginalny tekst produktu
TO - kolumna dla już przetłumaczonej treści
STATUS - tłumacz zmieniał status po wykonaniu tłumaczenia (klikając zapisz o czym zaraz poniżej)
INFO - ewentualne uwagi dla tłumacza
LANG - nazwa języka docelowego
działało to tak, że zrobiłem sobie specjalną stone do tłumaczeń - bardzo prostą. Tłumacz miał do niej dostęp. Na tej stronie pojawiały się wszystkie produkty które zleciłem do tłumaczenia (STATUS np 0). Była to zwykła lista, gdzie każdy wiersz składał się z 3 kolumn. W pierwszej wyświetla się oryginalny tekst, w drugiej tekst do tłumaczenia w textarea, w trzeciej uwagi to tłumaczenia + przycisk "ZAPISZ". Jak tłumacz przetłumaczył konkretny produkt, klikał zapisz (zmiana statusu np na 1) i tak dla każdego produktu do tłumaczenia.

Ja w kazdym momencie mogłem sobie z panelu admina wyświetlić co zostało przetłumaczone, dodatkowo jeszcze ocenić czy jest ok. Po zaakceptowaniu, klikałem "update", który to już wykonywał operacje dodania tłumaczenia dla wskazanego jezyka. Akurat ja nie bawiłem się w usuwaniu tagów html, tłumacze ogarniali temat - wystarczyło napisać żeby nie tykali (chyba nawet skrypt kolorował im tagi na czerwono, żeby nie ruszać), po za tym miałem kontrole nad ich pracą - zawsze mogłem porównać treść/edytować przed aktualizacją. Było to mega proste i wygodne dla obu stron.

Oczywiście było to troche bardziej skomplikowane niż to jak to przedstawiam, ale było warto i sczerze przyznam ze poszło sprawnie.

Z czasem musiałem to trochę ulepszyć, pobawić się autoryzacją i zarządzaniem dostepu do tłumaczęń, bo klientowi jak zobaczył jak to działa to chciał nagle mieć całą europe, mimo iż na początku miał być tylko angielski. Tak więc w pewnym momencie korzystało z tego kilku różnych wykonawców.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.