Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [php] klasa do tłumaczenia
hhg
post 29.07.2007, 13:46:35
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
Go to the top of the page
+Quote Post
Cosi*
post 29.07.2007, 19:57:02
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.:
  1. <?php
  2. define('_PODAJ_DANE','Podaj dane');
  3. ?>

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:
  1. <a href="index.php"><?= _POWROT_DO_STRONY_GLOWNEJ ?></a>

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ę winksmiley.jpg
Pozdrawiam,
Cosi


--------------------
http://cosi.com.pl
<? $kate or die ?>
Go to the top of the page
+Quote Post
hhg
post 30.07.2007, 00:37:08
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 0
Dołączył: 5.07.2006

Ostrzeżenie: (0%)
-----


dzieki smile.gif a co sądziesz(cie) o napisaniu tego obiektowo? jaka jest wyższość stałych nad zastosowaniem obiektowym
Go to the top of the page
+Quote Post
kosmowariat
post 30.07.2007, 07:37:02
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 biggrin.gif co do oop vs stałe jestem za stałymi zdefiniowanymi w oddzielnych plikach
Go to the top of the page
+Quote Post
Cosi*
post 30.07.2007, 09:27:02
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" winksmiley.jpg, tylko trzeba to robić z głową, żeby nie pisać tak:
  1. <?php
  2. class Hello
  3. {
  4.  private HelloMsg;
  5.  
  6.  function __construct()
  7.  {
  8. $this->HelloMsg = 'Hello, World!';
  9.  }
  10.  
  11.  function greeting()
  12.  {
  13. echo $this->HelloMsg;
  14.  }
  15. }
  16.  
  17. $hello = new Hello;
  18. $hello->greeting();
  19. unset($hello);
  20. ?>
biggrin.gif
A poza tym tak jak pisał kosmowariat: jeżeli mam wybierać, wybieram stałe.


--------------------
http://cosi.com.pl
<? $kate or die ?>
Go to the top of the page
+Quote Post
tommy4
post 30.07.2007, 09:45:02
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:

  1. <?php
  2. $lang = new Lang("polski");
  3. ?>


w konstruktorze funkcją file załadować cały plik do tablicy, a potem jedynie:

  1. <?php
  2. $lang->get(245);
  3. ?>


żeby pobrać string o identyfikatorze 245 (z wewnętrznej tablicy).

Prosto, łatwo i przyjemnie. smile.gif
Go to the top of the page
+Quote Post
hhg
post 30.07.2007, 10:10:51
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
Go to the top of the page
+Quote Post
UDAT
post 30.07.2007, 10:44:11
Post #8





Grupa: Zarejestrowani
Postów: 442
Pomógł: 0
Dołączył: 27.12.2005

Ostrzeżenie: (0%)
-----


Już był odpowiedni temat: Wielojęzykowość
Go to the top of the page
+Quote Post
nospor
post 30.07.2007, 10:50:28
Post #9





Grupa: Moderatorzy
Postów: 36 557
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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 07:18