Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Routing, wielojęzykowośc, dynamiczne dane, optymalizacja
Forum PHP.pl > Forum > PHP
zaksmok
Witam. Mam pewien problem z optymalizacją routera. Aktualnie mój router działa tak, że rozbija linka na cząstki i tłumaczy każdą cząstkę, np.
  1. $link = 'news/show/1/full';
  2. url($link) = 'aktualnosci/pokaz/1/calosc';


natomiast router dziala w druga strone, tzn. z linka 'aktualnosci/pokaz/1/calosc' zwraca mi 'news/show/1/full'.

Działa to fajnie, bo dla każdego języka mam linki w wybranym języku. Problem pojawia się z wydajnością.
Jeśli mamy na stronie 5000 linków (duża aplikacja, sklep internetowy, itd) to za każdym razem musimy przemielić dużą ilość danych.

Dodatkowo pojawia się problem rzutowania - np. link 'o-nas' ma rzutować na 'info/show/about' i tu muszę budować dodatkowa tablice i szukać w nie.

Macie może pomysł na lepsze rozwiązanie?
Spawnm
Router nie powinien zajmować się tłumaczeniem wink.gif
Przed routingiem masz pewnie bootstrap a w nim możesz dać klasę translate na uri.
zaksmok
Jasne. Proszę o pominięcie kwestii podziału klas na konkretne zadania. Problemem jest lepszy sposób tłumaczenia.
Spawnm
No ale ja podałem lepszy sposób.
Przed routingiem dajesz nawet zwykły str_replate z tablicami, a wynik przekazujesz do routera który musi się już zajmować tylko jednym językiem.
zaksmok
Tylko problem pojawia się przy rozbudowanych linkach. Na przykład 'news/show/2/full' => 'aktualnosci/pokaz/2/caly'. Wtedy musiałbym rozbijać str_replace na dwa elementy albo jakiś regexp stosować... Chyba nie jest to najwydajniejsze rozwiązanie.
Spawnm
Hę ?
  1. $str = 'aktualnosci/pokaz/2/caly';
  2. $str = str_replace(
  3. array('aktualnosci', 'pokaz', 'caly'),
  4. array('news', 'show', 'full'),
  5. $str);
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.