Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]wielojęzyczność
Forum PHP.pl > Forum > PHP > Frameworki
Lonas
Przypuscmy że posiadam domene www.moja-domena.pl - chce stworzyc wersje jezykowe ktore mają mieć postać www.en.moja-domena.pl
www.de.moja-domena.pl

Normalnie można by zrobić przełączanie wersji jezykowych poprzez get-a www.moja-domena.pl/lang/en ale tak nie chce.

Czy da się tak zrobić poprzez mod-rewrite bądz inaczej aby wejscie na subdomene ustawiało niewidoczny paramert get ?

Chodzi mi tutaj o przygotowanie takiego serwisu wielojęzycznego pod pozycjonowanie w google.

ps. wlasicwie to można temat przeniesc do PHP smile.gif
Crozin
Sprawdzałeś rozdział "I18n And L10n" (chyba) w książce symfony? Tam chyba było opisane właśnie coś takiego.
Cysiaczek
Poniżej masz klasę skleconą z tutoriali Fabiena, a która zamienia subdomenę na parametr. Tu akurat 'username' , więc sobie zmień
W routingu używasz tej klasy tak:
Cytat
homepage:
url: /test
class: sfDomainRoute
param: { module: main, action: test}


  1. <?php
  2. class sfDomainRoute extends sfRequestRoute
  3. {
  4.  public function matchesUrl($url, $context=array())
  5.  {
  6.      if(false===$retval=parent::matchesUrl($url, $context))
  7.      {
  8.          return false;
  9.      }
  10.      $retval['username']=$this->getSubdomain($context);
  11.      return $retval;
  12.  }
  13.  
  14.  protected function getSubdomain($context)
  15.  {
  16.      $parts=explode('.', $context['host']);
  17.      return $parts[0];
  18.  }
  19.  
  20.  public function matchesParameters($params, $context=array())
  21.  {
  22.        unset($params['username']);
  23.        
  24.        return parent::matchesParameters($params, $context);
  25.  }
  26.  
  27.  public function generate($params, $context=array(), $absolute=false)
  28.  {
  29.        $subdomain=isset($params['username']) ? $params['username'] : false;
  30.        unset($params['username']);
  31.        
  32.        if($subdomain && $subdomain!=$this->getSubdomain($context))
  33.        {
  34.            $url=parent::generate($params, $context, $absolute);
  35.            
  36.            return $this->getHostForSubdomain($context, $subdomain).$url;
  37.        }
  38.        return parent::generate($params, $context, $absolute);
  39.  }
  40.  
  41.  
  42.  public function getHostForSubdomain($context, $subdomain)
  43.  {
  44.        $parts=explode('.', $context['host']);
  45.        $parts[0]=$subdomain;
  46.        $host=implode('.', $parts);
  47.        $protocol='http'.(isset($context['is_secure']) && $context['is_secure'] ? 's' : '');
  48.        
  49.        return $protocol.'://'.$host;
  50.  }
  51. }
  52. ?>


Pozdrawiam
Lonas
Dzieki, przyjrze sie temu
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.