Icon - phpBB 3 i polska wersja

phpBB 3 i polska wersja

Luty 18th, 2008 | Tagi: , , | Posted in PHP

Ostatnio znajomy poprosił mnie, abym zainstalował mu forum. Pomyślałem, że phpBB będzie odpowiednie dla niego. Wszedłem więc na stronę http://www.phpbb2.pl/, a tam informacja o phpBB3 wraz z testową wersją tłumaczenia na język polski. Pomyślałem, że może warto spróbować? Jednak jak się później okazało, tłumaczenie jest naprawdę “testowe” i sprawia trochę problemów. Jeden z nich chciałbym właśnie tutaj opisać. Otóż po zainstalowaniu forum, ustawieniu domyślnego języka na polski i ustawieniu aktywacji konta przez e-mail, podczas rejestracji nowego użytkownika system zaczął wyświetlać błędy, mniej więcej takie:

Parse error: syntax error, unexpected T_STRING in /includes/functions_messenger.php(208) : eval()’d code on line 5
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3391
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3393
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3394
Warning: Cannot modify header information – headers already sent by (output started at /includes/functions_messenger.php(208) : eval()’d code:5) in /includes/functions.php on line 3395

Cóż z tym można zrobić?

Pierwsza moja myśl, to poszukać informacji na ten temat na Googlach. Próbowałem kilku zapytań, jednak żadne nie dawało zadawalającego rezultatu. Na oficjalnej stronie projektu phpBB także na ten temat nic nie pisano. Postanowiłem więc sprawdzić, jak wygląda sprawa na oryginalnej, angielskiej wersji. Ku mojemu zdziwieniu, tutaj wszystko działało dobrze, przy rejestracji nowego użytkownika nie pojawiały się błędy, a maile dochodziły bez problemu. Natomiast przy polskiej wersji, pomimo błędów, mail dochodził, ale z tematem Nie podano tematu wiadomości i treści:

Temat: Witamy na forum “‘ . ((isset($this->vars['SITENAME'])) ?
$this->vars['SITENAME'] : ”) . ‘” – ‘ . ((isset($this->vars['U_BOARD'])) ?
$this->vars['U_BOARD'] : ”) . ‘

‘ . ((isset($this->vars['WELCOME_MSG'])) ? $this->vars['WELCOME_MSG'] : ”)
. ‘

Proszę zachować tego e-mail’a. Oto informacje o Twoim koncie:

—————————-
Nazwa użytkownika: ‘ . ((isset($this->vars['USERNAME'])) ?
$this->vars['USERNAME'] : ”) . ‘
Hasło: ‘ . ((isset($this->vars['PASSWORD'])) ? $this->vars['PASSWORD'] :
”) . ‘

URL forum: ‘ . ((isset($this->vars['U_BOARD'])) ? $this->vars['U_BOARD'] :
”) . ‘
—————————-

Twoje konto jest aktualnie nieaktywne. Nie będziesz mógł go używać póki nie
klikniesz na poniższy link:

‘ . ((isset($this->vars['U_ACTIVATE'])) ? $this->vars['U_ACTIVATE'] : ”) .

Zacząłem więc sprawdzać pliki z tłumaczeniem, szczególnie te, które zawierają treść wysyłaną w wiadomościach e-mail i porównywać angielską i polską wersję. W końcu znalazłem rozwiązanie. Jest bardzo proste, wystarczy zmodyfikować jeden plik – opis modyfikacji podaję poniżej.

Oryginalny plik: \language\polish\email\user_welcome_inactive.txt z polskiej wersji wygląda tak:

Temat: Witamy na forum “{SITENAME}” – {U_BOARD}

{WELCOME_MSG}

Proszę zachować tego e-mail\’a. Oto informacje o Twoim koncie:

—————————-
Nazwa użytkownika: {USERNAME}
Hasło: {PASSWORD}

URL forum: {U_BOARD}
—————————-

Twoje konto jest aktualnie nieaktywne. Nie będziesz mógł go używać póki nie klikniesz na poniższy link:

{U_ACTIVATE}

Proszę nie zapomnij swojego hasła, ponieważ zostało ono zaszyfrowane w naszej bazie danych i nie może zostać odzyskane. Jeśli jednak je zapomnisz to będzie można poprosić o nowe, które będzie trzeba aktywować tak samo jak konto.

Dziękujemy za rejestrację.

{EMAIL_SIG}

Modyfikacje, które należy wykonać:
1. Aby temat maila był poprawnie wyświetlany, należy zmienić pierwszą linijkę z:

Temat: Witamy na forum “{SITENAME}” – {U_BOARD}

na:

Subject: Witamy na forum “{SITENAME}” – {U_BOARD}

Komentarz: Jest to linijka informująca serwer o tym, że w niej będzie podany temat maila (serwer rozpoznaje to właśnie po początku “Subject:”) – ktoś niepotrzebnie się rozpędził i przetłumaczył trochę za dużo.
2. Aby wiadomość została wysłana i nie wyświetlała błędów (u mnie pojawiał się Parse Error przy rejestracji użytkownika), należy w linii nr 3 zmienić:

Proszę zachować tego e-mail\’a. Oto informacje o Twoim koncie:

na np.:

Proszę zachować tę wiadomość e-mail. Oto informacje o Twoim koncie:

Komentarz: wygląda na to, że wszystkiemu winny jest ten apostrof – po jego usunięciu Parse Error zniknął, a maile zaczęły wyglądać tak, jak powinny (czyli zostały wypełnione: nazwa użytkownika, hasło, link aktywacyjny itd.).

U mnie plik: \language\polish\email\user_welcome_inactive.txt wygląda w tej chwili tak (maile przy rejestracji użytkownika działają poprawnie):

Subject: Witamy na forum “{SITENAME}” – {U_BOARD}

{WELCOME_MSG}
Proszę zachować tę wiadomość e-mail. Oto informacje o Twoim koncie:
—————————-
Nazwa użytkownika: {USERNAME}
Hasło: {PASSWORD}

URL forum: {U_BOARD}
—————————-
Twoje konto jest aktualnie nieaktywne. Nie będziesz mógł go używać póki nie klikniesz na poniższy link:
{U_ACTIVATE}
Proszę nie zapomnij swojego hasła, ponieważ zostało ono zaszyfrowane w naszej bazie danych i nie może zostać odzyskane. Jeśli jednak je zapomnisz to będzie można poprosić o nowe, które będzie trzeba aktywować tak samo jak konto.

Dziękujemy za rejestrację.

{EMAIL_SIG}

Należy jeszcze tylko pamiętać o odczytywaniu i zapisywaniu pliku w kodowaniu UTF-8, inaczej polskie znaki zamienią się w “krzaczki”.