Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> [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
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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Pozdrawiam,
Cosi
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 (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
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 (IMG:http://forum.php.pl/style_emoticons/default/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" (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
(IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
A poza tym tak jak pisał kosmowariat: jeżeli mam wybierać, wybieram stałe.
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. (IMG:http://forum.php.pl/style_emoticons/default/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 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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 9.10.2025 - 09:51