Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony]wielojęzyczność
Lonas
post 3.04.2009, 07:02:56
Post #1





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


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

Ten post edytował Lonas 3.04.2009, 07:07:24


--------------------
Go to the top of the page
+Quote Post
Crozin
post 3.04.2009, 15:10:47
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Sprawdzałeś rozdział "I18n And L10n" (chyba) w książce symfony? Tam chyba było opisane właśnie coś takiego.
Go to the top of the page
+Quote Post
Cysiaczek
post 4.04.2009, 11:51:46
Post #3





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




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


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
Lonas
post 5.04.2009, 10:49:06
Post #4





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Dzieki, przyjrze sie temu


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2024 - 02:56