Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] klasa do tłumaczenia
hhg
post
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
 
Start new topic
Odpowiedzi (1 - 8)
Cosi*
post
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
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
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
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
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
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
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
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 Aktualny czas: 20.08.2025 - 09:20