![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 0 Dołączył: 5.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
moj system pracuje w dwóch językach: polskim i angielskim. Chaciałbym uelastycznic zwracane przez metody w klasach komunikaty. Toteż chcę stworzyć klase do tłumaczenia. Będzie zawierała dwie tablice: jedna z komunikatami polskimi a druga z angielskimi (pod tymi samymi indeksami odpowiedniki komunikatow w dwoch jezykach). Bedzie pewnie jakas metoda translate() zwracajaca odpowiednik komunikatu z drugiej tablicy.
Czy macie na to jakas lepsza koncepcje? bo mysle ze wpisywanie przy zwracanych wartosciach metod czegos w stylu: $eng[45] jest malo wymowne z gory dzieki za pomoc |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 9.07.2007 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
Ja to od dawna robię w ten prosty, ale skuteczny sposób:
- tworzę osobny plik, który będzie odpowiadał za obsługę wersji językowych i przechowywał komunikaty - wybór wersji językowej może być realizowany w dowolny sposób, w zależności od potrzeb. Może to być zmienna przekazywana przez GET, ciastko, wpis w pliku konfiguracyjnym itp. - komunikaty trzymam w stałych tekstowych, definiowanych po starcie programu, w zależności od wybranego języka, np.:
Ważne żeby nazwy stałych były intuicyjne i żeby nie kolidowały z zastrzeżonymi nazwami (można na początku użyć np. podkreślenia) - jeżeli piszę w PHP, komunikaty umieszczam bezpośrednio w kodzie HTML: Najlepiej wtedy przy testowaniu włączyć error_reporting na E_ALL i obserwować, czy czegoś nie poputaliśmy. No i to chyba tyle. "Sprzedałem" Ci moją autorską metodę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Pozdrawiam, Cosi |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 0 Dołączył: 5.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
dzieki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) a co sądziesz(cie) o napisaniu tego obiektowo? jaka jest wyższość stałych nad zastosowaniem obiektowym
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 235 Pomógł: 17 Dołączył: 18.07.2007 Skąd: Białystok Ostrzeżenie: (0%) ![]() ![]() |
w obiekcie też mogą być stałe ;p hmmm a może użyj smarty (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) co do oop vs stałe jestem za stałymi zdefiniowanymi w oddzielnych plikach
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 51 Pomógł: 0 Dołączył: 9.07.2007 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście można zrobić sobie klasę, która będzie to obsługiwała. Po starcie programu wywołujesz konstruktor, który robi to co napisałem. Ogólnie nie mam nic przeciwko robieniu wszystkiego "na OOPa" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , tylko trzeba to robić z głową, żeby nie pisać tak:
(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) A poza tym tak jak pisał kosmowariat: jeżeli mam wybierać, wybieram stałe. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 288 Pomógł: 12 Dołączył: 2.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
ja bym proponował utworzyć klasę oraz pliki polski.lng, english.lng (w każdej linii jedno zdanie) i później:
w konstruktorze funkcją file załadować cały plik do tablicy, a potem jedynie:
żeby pobrać string o identyfikatorze 245 (z wewnętrznej tablicy). Prosto, łatwo i przyjemnie. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 316 Pomógł: 0 Dołączył: 5.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
faktycznie na stałych powinno się płynnie pracować, byle trzymać się notacji np _PODSTRONA_ERR_IDENTYFIKATOR
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 442 Pomógł: 0 Dołączył: 27.12.2005 Ostrzeżenie: (0%) ![]() ![]() |
Już był odpowiedni temat: Wielojęzykowość
|
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
zamykam spowodu podanego wyzej. Poco drązyc wątek w kilku tematach. tak bedzie wszystko w kupie. Jesli sa dodatkowe przemyslenia to tam sie dopisac prosze.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 09:51 |