Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: aplikacja wielojezykowa w PHP
Forum PHP.pl > Forum > PHP
qnx
Witam,

Mam pytane odnosnie budowania aplikacji z tekstami w kilku jezykach. Mam do dyspozycji PHP 4.3.x i MySQL 5 i musze stworzyc mozliwosc generowania formularza z opisami pol w roznych jezykach.
Mam zamiar dodac do formularza dodatkowa liste wyboru jezykow i po kliknieciu w dana wersje strona sie przeladuje z nowymi opisami pol.

Do wyboru mam miec: oczywiscie polski, rosyjski, niemiecki, hiszpanski, francuski, wloski, czeski i slowacki. Po pierwsze nie do konca wiem jakie kodowanie znakow wybrac. Rozumiem, ze UTF-16 powinien mi zalatwic sprawe wszystkich znakow diakrytycznych i alfabetu rosyjskiego?

Po drugie nie wiem jak przechowywac te opisy. Najchetniej skorzystalbym z bazy danych, ale baze mam kodowana w latin2... wiec zapewne nici?

Z gory dzieki za odpowiedz!
qqrq
Ściągnij sobie osCommerce i zobacz jak tam to rozwiązano (coś a la moduły - definiujemy mnóstwo stałych i ich używamy zamiast tekstu, każda stał w odpowiednim pliku odpowiedniego języka). Ale to tylko jeden ze sposobów (szybszy od bazy danych).
Fixus
dlaczego nici? przeciez moesz spokojnie przekodowac dane na tobie pasujace wiec nie ma problemu.

co do samych jezykow...wrzucasz to np. do bazy...i ustalasz parametr dla danego jezyka ktory trzymasz w linku. pobierasz go GET`em i w zaleznosci od parametru wybierasz odpowiednie nazwy pola
Prph
Polece Ci klase mojego autorstwa z pakietu Rapide: http://rapideframework.googlecode.com/svn/...guage.class.php

Kilka slow o klasie:

1 _DIR_LANGUAGES - zdefiniuj wczesniej katalog do plikow jezykowych. Struktura jest nastepujaca:

Languages/ (czy jak to nazwiesz)
- English/
- English.php
- Polish/
- Polish.php

Obiekt jest singletonem. Przed pierwszym uzyciem nalezy go zainicjalizowac odpowiednim jezykiem:

  1. <?php
  2. Rapide_Language::init('English');
  3. ?>


Jak wygladaja pliki jezykowe? Sa to tablice PHP o nastepujacej strukturze:

English.php:

  1. <?php
  2. $aLang = array
  3. (
  4. 'entry1' => 'This is in english!',
  5. 'password' => 'Please type password'
  6. );
  7. ?>


Jak wczesniej przedstawilem - jezyk sklada sie z pliku glownego (o nazwie jezyka - np. English.php) oraz katalogu z plikami - np. English.

W katalogu mozna tworzyc kolejne pliki np. Form.php, About.php oraz katalogi...

Jak dostac sie do danych?

  1. <?php
  2. $oLang = Rapide_Language::getInstance();
  3.  
  4. echo $oLang->get('Form', 'Password') // zwroci tlumaczenie dla wpisu Password z pliku Form.php w katalogu English
  5. echo $oLang->get('entry1') // zwroci tlumaczenie dla entry1 z pliku English.php;
  6. echo $oLang->get('dir1', 'dir2', 'file', 'entry') // tego chyba nie trzeba opisac
  7. ?>


Zalety tej klasy:

Mechanizm lazy loader - wczytuje pliki jezykowe w chwili, kiedy sa potrzebne, a nie wczesniej. Czyli mozemy miec nawet 5MB plikow z tlumaczeniami, ale wcale nie musza zostac wczytane.

Pelna automatyka - podajesz tylko jezyk, a klasa pozniej sama szuka wpisow i laduje odpowiednie pliki.

Uzywam tej klasy w wielu projektach. Naprawde wygodna.
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.