Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: parse_ini_file + zmienna
Forum PHP.pl > Forum > PHP
Radeqq
Wzorując się na personalizacji z Wikipedii stworzyłem prosty system zamiany języka. Dodatkowo zamienia on zmienne ({x1}, {x2} ...) z pliku pl.php na wartości podane w kolejnych polach tablicy, przykład poniżej:

funkcja:
  1. <?php
  2. przetlumacz(array(
  3. array('zla_wartosc_pola','pole1', '2222'),
  4. array('brak_tekstu'),
  5. );
  6.  
  7. function przetlumacz($tekst)
  8. {
  9. $tlumaczenie = @parse_ini_file('pl.php');
  10. foreach ($tekst as $key => $value)
  11. {
  12. $tekst[$key]=$tlumaczenie[$value[0]];
  13.  
  14. $i=1;
  15. while (isset($value[$i]))
  16. {
  17. $tekst[$key]=str_replace('{x'.$i.'}', $value[$i], $tekst[$key]);
  18. $i++;
  19. }
  20. }
  21. return $tekst;
  22. }
  23. ?>


przykładowa zawartość pl.php (pliku z tłumaczeniem)
  1. zla_wartosc_pola='Nieprawidłowa wartosc pola ("{x1}"). Zmieniono na "{x2}"'
  2. brak_tekstu='Tekst nie istnieje'


Wywołanie funkcji zwróci
Cytat
Nieprawidłowa wartosc pola ("pole1"). Zmieniono na "2222"
Tekst nie istnieje


Przykład działa prawidłowo ale zastanawiam się, czy można to zrobić w bardziej optymalny sposób, proszę o propozycje. W założeniu nie będzie więcej niż 5 dodatkowych argumentów ({x1}, {x2} ...).

Nie jestem zainteresowany Gettext .
erix
Cytat
Nie jestem zainteresowany Gettext .

Dlaczego? Skoro chcesz to zrobić w optymalny sposób, to gettext jest tu najlepszym wyjściem, a to z tej racji, że pliki tłumaczeń są kompilowane do postaci binarnej.
Radeqq
A jak później przetwarzać argumenty {x1}, {x2} itp? Analogicznie preg_replace'm czy jakieś lepsze rozwiązanie?
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.