Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wielojęzykowość
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Przyszło mi się po raz pierwszy zmierzyć z wielojęzykową stroną.
Jest to modyfikacja istniejącej strony, która ma ją już zaaplikowaną na zasadzie tablicy PHP:
$lang['ciąg'] = 'Tłumaczenie';
Każda tablica w oddzielnym pliku i w zależności od wczytanego języka dany plik jest includowany.

Na dobrą sprawę mógłbym zostawić tę metodę (chyba najpopularniejszą), ale wg mnie nie jest ona praktyczna:
- w kodzie widzimy nic nie mówiące <?= $lang['ab123'] ;?>
- nowe zdanie czy słowo wymaga edycji X plików, gdzie X to liczba języków
- źle obsługuje brak tłumaczenie dla danego języka (np. wyrażenie, która nie wymaga tłumaczenia)

Napisałem coś własnego na podstawie tablicy wielowymiarowej co pozwala na pominięcie całego tłumaczenia czy tylko danego języka.
Gdy nie znajdzie tłumaczenia wyświetla tekst domyślnie wprowadzony (wzorowałem się troszkę gettext).

  1. function lg ($str) {
  2.  
  3. /* default lang */
  4. $default = 'pl';
  5.  
  6. /* ciasteczka, sesje.. nm.. */
  7. $lang = 'ru';
  8.  
  9.  
  10. $arr = array();
  11.  
  12. $arr[] = array('pl' => 'Jacek ma kota', 'en' => 'Jacek has a cat');
  13.  
  14.  
  15. foreach ($arr as $key => $translations) {
  16.  
  17. if ($translations[$default] == $str) {
  18.  
  19. if (!empty($translations[$lang])) {
  20.  
  21. $str = $translations[$lang];
  22.  
  23. }
  24. break;
  25.  
  26. }
  27.  
  28. }
  29.  
  30. echo $str;
  31.  
  32. }
  33.  
  34. lg ( 'Jacek ma kota' );


Działa prosto, a zarazem bardziej intuicyjnie.
Zastanawia mnie tylko kwestia optymalności.
Może ktoś to rozwiązał w inny sposób?
Może pliki XML (bazę pomijam, to strona typu "wizytówka" bez bazy danych)?

Wcześniejszy pomysł opierał się na używaniu indeksów do wyszukiwania fraz:
$arr['ala_ma_kota'] = [ tablica z tłumaczeniami ]
ale tutaj zastanawia mnie kwestia tego ile znaków można wpakować w indeks no i wygląda to troszkę irracjonalnie.

Ten post edytował markonix 6.09.2011, 10:24:23
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.12.2025 - 10:35