Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Mapowanie linków dla wielu języków
Forum PHP.pl > Forum > Przedszkole
snipe
Witam,

Jestem w tracie przygotowywania strony wielojęzycznej. Niestety stanąłem na wydaje się dość prozaicznym problemie, mianowicie w gotowych szablonach Smarty mam linki które są standardowo w języku angielskim i muszą być zmapowane na język polski, niemiecki, etc. W routingu mam przygotowane regexpy np.

  1. ...
  2. 'url' => array(
  3. 'pl' => '^wiadomosci/pokaz/([0-9]+)/?$',
  4. 'en' => '^news/show/([0-9]+)/?$',
  5. ),
  6. 'controller' => 'news',
  7. 'action' => 'show_news',
  8. 'params' => 'id=$1',
  9. ),
  10. ...


I moje pytanie brzmi jak najprościej można przepisać linki z jednego formatu na drugi, czyli w podanym przypadku np. z news/show/123 => wiadomosci/pokaz/123

Oczywiście linki mogą być różne i nie koniecznie z parametrem na końcu winksmiley.jpg Może da się jakoś podmienić wartości w regexpie względem ich występowania, np. zamiast tego ([0-9]+) chciałbym 123.

Pomóżcie bo główkuję nad tym już 3 dzień tongue.gif
Crozin
Najłatwiej jest gdy mechanizm routingu pozwala na mapowanie adresów w obie strony, tj.: odczytać parametry żądania i przerobić je na odpowiednie dla skryptu dane (to co już masz) oraz na podstawie danych utworzyć odpowiedni link.

W użyciu może to wyglądać jakoś tak:
  1. $router->generate('show_news', array('id' => 123)); // /wiadomosci/pokaz/123/
Jest to bardzo proste do wykonania tylko w tworzonych wyrażeniach musisz używać "nazywach podsekcji", czyli nie ...pokaz/(\d+)/, a ...pokaz/(?<id>\d+)/.
snipe
Okej, załóżmy że wykorzystam nazwane podsekcje winksmiley.jpg jak mogę podmienić ich wartość ? Jakiś przykład kodziku? smile.gif
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.