2011-10-01 11 views
5

Uratowałem stary projekt, który został napisany wyłącznie dla hiszpańskiej publiczności, a teraz muszę go umiędzynarodowić.Jak wdrożyć tłumaczenie na istniejący projekt internetowy?

Projekt ten ma 3 rodzaje tekst:

  • Strings napisane z PHP, na przykład: echo "Hello World"
  • Krótkie ciągi w polach bazy: pól bazy danych, które zawierają tekst , na przykład, listy nazw krajów.
  • HTML osadzony struny (pliki statyczne): Na przykład plik zawierający statyczny plik HTML: <html>...<body>...<p>Hello world</p> ...
  • HTML osadzony struny (baza danych): jak wyżej, ale plik HTML jest wstawiany w pole tekstowe w bazie danych.

Po pierwsze nie ma problemu, ponieważ istnieje naprawdę niewiele napisów i są one bardzo zlokalizowane. Drugi przypadek jest również bardzo zlokalizowany, więc nie jest to naprawdę duży problem. Ale ostatnie 2 przypadki są nie do pokonania: setki plików HTML (statycznych + bazy danych) z setkami napisów w środku.

Poszukuję więc zautomatyzowanej metody wyodrębnienia wszystkich ciągów znaków w rozpoznawalny format, przekazanie ich tłumaczom, a następnie udostępnienie moich stron w innych językach.

Czy istnieje coś podobnego, czy też powinienem utworzyć niestandardowe rozwiązanie? W tym przypadku jakiś pomysł?

Odpowiedz

8

Ok. I18n (internacjonalizacja) to dość dziwna rzecz. Musisz wprowadzić wiele zmian w swoim kodzie, aby uczynić go wielojęzycznym.

Dla mnie najlepszym rozwiązaniem jest przeniesienie go na CakePHP, który obsługuje już I18n na wielu warstwach. Ale to rozwiązanie sprawi, że będziesz spędzać dużo czasu. Tak ....

Szybka metoda tłumaczenia tekstów wewnętrznych jak

echo "Hello World" 

lub

<p>Hello World</p> 

jest stworzenie odpowiedniego pliku z rozszerzeniem php języka dla każdego języka (tj: es. php, el.php, en.php An tak dalej), które będzie zawierać tablicę z kluczy i wartości, które wygląda tak:

$l = array(
    'WEB_TITLE' => 'My web site title', 
    'GEN_HELLO' => 'Hello World', 
    'MENU_HOME' => 'Home', 
    'MENU_PRODUCTS' => 'Products', 
    ... 
); 

Następnie na swojej stronie internetowej trzeba załadować odpowiedni plik językowy na samym początku każdej strony i na swojej stronie musisz zrobić coś takiego:

echo $l['GEN_HELLO']; 

i

<p><?php echo $l['GEN_HELLO']; ?></p> 

czyli przednia strona aplikacji. Teraz, aby twoje dane były wielojęzyczne, musisz zmienić strukturę bazy danych w jakiś sposób.

Powiedzmy, że masz tej tabeli

ARTICLES 
id Title Content Date Active 

W powyższej struktury trzeba zrobić Tytuł i zawartość I18n kompatybilne. W celu przełożenia że kolumny trzeba utworzyć inną tabelę o nazwie na przykład ARTICLES_L która będzie wygląda tak

ARTICLES_L 
ID POST_ID COLUMN LANGUAGE CONTENT 

w powyższej tabeli trzeba przechowywać identyfikator artykułu, kolumny, że tłumaczenie należącą (tj tytuł) język i przetłumaczona treść.

Więc jeśli masz, że zapisy w artykułach

ARTICLES 
id Title Content   Date     Active 
1  Title 1 This is content 1 2011-10-01 13:28:45 1 
2  Title 2 This is content 2 2011-10-01 13:28:45 1 
3  Title 3 This is content 3 2011-10-01 13:28:45 1 

ARTICLES_L tabela będzie zawierać że zapisy

ARTICLES_L 
ID POST_ID COLUMN LANGUAGE CONTENT 
1  1   title  es_ES  Título 1 
2  1   content es_ES  Este es el contenido 1 
3  1   title  el_GR  Τίτλος 1 
4  1   content el_GR  Αυτό είναι το περιεχόμενο 1 
5  2   title  es_ES  Título 2 
6  2   content es_ES  Este es el contenido 1 
.... 

w rzeczywistości istnieje wiele wiele innych zadań, co musisz zrobić, ale jest to pomysł za rozwiązaniem, które ci daję :)

Powodzenia

PN: Jeszcze lepiej na przedniej stronie aplikacji jest użycie tego http://php.net/manual/en/book.gettext.php W ten sposób jest używany z WordPress i CakePHP, ale na bardzo niskim poziomie:? Tylko spójrz. To będzie lepsze niż tworzenie plików dla każdego języka.

+0

Czy to było pomocne? –

+1

Naprawdę, dzięki! – Ivan

+0

Serdecznie zapraszamy :) –

Powiązane problemy