Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wartości między tekstem, strona dwujęzyczna
wddigital
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 25.07.2011

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


Piszę stronę w 2 językach - polskim i angielskim. W zależności od wybranego języka wczytywania jest tablica wszystkich tekstów na stronie.

Jeżeli zostanie wybrany język polski to ładuje tablice z pliku lang_pl.php
  1. $lang = array(
  2. '001' => 'Strona główna',
  3. '002' => 'Ustawienia',
  4. '003' => 'Wyloguj się',
  5. '004' => 'Pokaż szczegóły',
  6. '005' => 'Usuń'
  7. ...
  8. );

Jeżeli zostanie wybrany język angielski to ładuje tablice z pliku lang_en.php
  1. $lang = array(
  2. '001' => 'Home',
  3. '002' => 'Settings',
  4. '003' => 'Logout',
  5. '004' => 'Show details',
  6. '005' => 'Delete'
  7. ...
  8. );

Potem już w kodzie podstrony dwołuje się do tekstów, załóżmy że wyświetlam link do wylogowania się:
  1. echo '<a href="">'.$lang['003'].'</a>';


No dobra, ale załóżmy, że potrzebuje wyświetlić tekst, a w środku tekstu jakąś wartość, przykładowo:
Cytat
Posiadasz 100 punktów (w tym 50 punktów Premium), możesz doładować punkty wybierając przycisk obok.

No to wtedy musiałbym robić:
  1. $lang = array(
  2. '006' => 'Posiadasz',
  3. '007' => 'punktów (w tym',
  4. '008' => 'punktów Premium), możesz doładować punkty wybierając przycisk obok.',
  5. ...
  6. );

Trochę bezsensu.

Jak zrobić dobre wyświetlanie takich tekstów?
Cytat
Posiadasz wartość1 punktów (w tym wartość2 punktów Premium), możesz doładować punkty wybierając przycisk obok.


Pozdrawiam.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
markonix
post
Post #2





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

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


  1. function lang($line, $param = '', $language = '')
  2. {
  3. $result = // tu pobierz wartość
  4.  
  5. if (empty($result))
  6. return $line;
  7.  
  8. if ($param != '')
  9. {
  10. if (is_array($param))
  11. {
  12. $result = vsprintf($result, $param);
  13. }
  14. else
  15. {
  16. $result = sprintf($result, $param);
  17. }
  18. }
  19.  
  20. return $result;
  21. }
  22.  
  23. lang('welcome', 'Marek');
  24.  
  25. // $lang['welcome'] = 'Witaj %s w panelu';


No i oczywiście sugeruje zmianę indeksów na bardziej logiczne aniżeli kolejne cyfry..

Ten post edytował markonix 10.06.2013, 16:59:04
Go to the top of the page
+Quote Post
wddigital
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 25.07.2011

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


Ogromne dzięki. Rozumiem, że ta funkcja obsługuje tylko jedną wartość?
Go to the top of the page
+Quote Post
markonix
post
Post #4





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

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


Funkcja wyciągnięta z frameworka (CI).

Co do jednej wartości no właśnie nie - pierwszy argument to nazwa indeksu (tylko zamiast tych liczb normalne stringi), a drugi to jedna wartość bądź tablica.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 19:40