Список форумов Cake-PHP.ru Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
 
 Watched TopicsWatched Topics   FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

По многоязычным сайтам, по Route вопрос

 
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий
Предыдущая тема :: Следующая тема  
Автор Сообщение
Vlad

цитировать



Зарегистрирован: 02 Ноя 2007 11:45:52
Сообщения: 241

СообщениеДобавлено: 20 Фев 2008 22:01:31    Заголовок сообщения: По многоязычным сайтам, по Route вопрос Ответить с цитатой

Хотелось бы всё привести к виду:

site.com/uk/articles/view/1
site.com/ru/posts/view/1
и так далее

Как лучше это оформить в роут?

Route:: ('/:lang/:articles', array ('controller' => 'articles'));
и тоже самое для posts? как то не очень удобно.
Я опять изобретаю велосипеды и есть более простые способы? Ткните носом, буду благодарен Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Антон Исайкин
Site Admin
цитировать



Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 20 Фев 2008 23:35:56    Заголовок сообщения: Ответить с цитатой

Используйте поиск по форуму, тема неоднократно поднималась.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 22 Фев 2008 22:58:57    Заголовок сообщения: Ответить с цитатой

http://blog.difane.com/2007/09/10/multilanguage-site-part-1-static-text/

Это устраивает?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vlad

цитировать



Зарегистрирован: 02 Ноя 2007 11:45:52
Сообщения: 241

СообщениеДобавлено: 25 Фев 2008 13:47:54    Заголовок сообщения: Ответить с цитатой

2DeeperMD неа не устраивает Smile
у меня вот не получается организовать доступ по Роуту типа:

/en/controller/action/param для английского
/uk/controller/action/param для украинского
/controller/action/param для дифолтного

Т.е. либо /controller/action
либо обязательный параметр /lang/ (uk/en)
но это я уже пережил Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Антон Исайкин
Site Admin
цитировать



Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 25 Фев 2008 13:54:35    Заголовок сообщения: Ответить с цитатой

А чем вас не устраивает написать лишний роут? Это же не лишний контроллер.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
DeeperMD

цитировать



Зарегистрирован: 08 Фев 2008 15:04:11
Сообщения: 144
Откуда: $Молдова->Кишинёв->Буюканы()

СообщениеДобавлено: 25 Фев 2008 13:57:25    Заголовок сообщения: Ответить с цитатой

да реалнео чё роут не порпишешь для каждого языка, по примеру роута на админку..

/admin/controller/action/param

?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vlad

цитировать



Зарегистрирован: 02 Ноя 2007 11:45:52
Сообщения: 241

СообщениеДобавлено: 25 Фев 2008 14:29:10    Заголовок сообщения: Ответить с цитатой

Красоты хочется Smile
А так - всё устраивает Smile))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KPOTOB

цитировать



Зарегистрирован: 09 Дек 2007 14:46:20
Сообщения: 127

СообщениеДобавлено: 25 Фев 2008 16:23:50    Заголовок сообщения: Ответить с цитатой

Так для красоты из браузера надо язык дергать )))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Vlad

цитировать



Зарегистрирован: 02 Ноя 2007 11:45:52
Сообщения: 241

СообщениеДобавлено: 26 Фев 2008 10:23:37    Заголовок сообщения: Ответить с цитатой

дёргай не дёргай, а для разных языков должны быть разные урлы Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Антон Исайкин
Site Admin
цитировать



Зарегистрирован: 08 Окт 2007 12:02:56
Сообщения: 150
Откуда: Санкт-Петербург

СообщениеДобавлено: 27 Фев 2008 08:40:47    Заголовок сообщения: Ответить с цитатой

KPOTOB
Из браузера дергать нельзя. Я могу не знать английского и сидеть в интернет-клубе с английским дефолтным браузером и системой. Как вернуться на русскую версию я не найду.
Язык сайта должен быть по умолчанию тот на котором говорят те, для кого он написан.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
timer0x01

цитировать



Зарегистрирован: 01 Ноя 2007 20:28:41
Сообщения: 10

СообщениеДобавлено: 04 Апр 2008 15:00:07    Заголовок сообщения: Ответить с цитатой

Здравствуйте.

У меня тот же вопрос (почти), так вот есть ето...

В config/routes.php дописал:

Код:

Router::connect('/:locale/:controller/:action/*');


Вместо $Route->connect('/:locale/:controller/:action/*'); как в статии http://blog.difane.com/2007/09/10/multilanguage-site-part-1-static-text/

В app_controller.php:

Код:

<?php

uses('L10n');

class AppController extends Controller
{
   
   function beforeFilter()
   {
            
      if
      (
         empty($this->params['locale'])
            ||
         (
            $this->params['locale']!='en'
            &&
            $this->params['locale']!='ru'
         )
      )
      {
         $this->params['locale'] = 'en';
      }
            
      Configure::write('Config.language', $this->params['locale']);
      
   } // function beforeFilter()
   
}
?>


Так вот к примеру:
(есть /controllers/langs_controller.php ето стандартный контроллер ... можно сцитать его и как /controllers/posts_controller.php)

Адреса типа:

www.test.com/en/langs
www.test.com/ru/langs

работают прекрасно и показывают "Hello world (default.po)" и "Привет мир (default.po)" соответсвенно

Но как же быть config/core.php с включеной опцией:

Код:

Configure::write('Routing.admin', 'admin');


Т.е. при посешенни такой ссълки www.test.com/admin/en/langs мне говорит:
"EnController could not be found."

А лучше АДМИН часть сделать как-то без языка т.е.:

www.test.com/admin/langs .. но тут почему-то вызывается index(), а не admin_index()

Подскажите какие роуты прoписать, что-бы функцианировали:

www.test.com/en/langs <-- langs_controller.php->index()

С админкой:

www.test.com/admin/langs <-- langs_controller.php->admin_index()

СПАСИБО ЗАРАНЕЕ!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
timer0x01

цитировать



Зарегистрирован: 01 Ноя 2007 20:28:41
Сообщения: 10

СообщениеДобавлено: 14 Апр 2008 11:33:29    Заголовок сообщения: Ответить с цитатой

Как же решить ето Sad .. Какие роуты дописать .. ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kevel

цитировать



Зарегистрирован: 19 Май 2008 16:17:05
Сообщения: 12
Откуда: minsk, belarus

СообщениеДобавлено: 11 Июн 2008 19:35:00    Заголовок сообщения: Ответить с цитатой

timer0x01 писал(а):


Но как же быть config/core.php с включеной опцией:

Код:

Configure::write('Routing.admin', 'admin');


Т.е. при посешенни такой ссълки www.test.com/admin/en/langs мне говорит:
"EnController could not be found."

А лучше АДМИН часть сделать как-то без языка т.е.:

www.test.com/admin/langs .. но тут почему-то вызывается index(), а не admin_index()

Подскажите какие роуты прoписать, что-бы функцианировали:

www.test.com/en/langs <-- langs_controller.php->index()

С админкой:

www.test.com/admin/langs <-- langs_controller.php->admin_index()

СПАСИБО ЗАРАНЕЕ!


я прописал роут так:
Код:
Router::connect('/:locale/:controller/:action/*', null, array('locale' => '[a-zA-Z]{2}' ));

www.test.com/en/langs <-- langs_controller.php->index() - locale = en
www.test.com/langs <-- langs_controller.php->index() - locale = default
www.test.com/admin/langs <-- langs_controller.php->admin_index() - locale = default

Если в админке не нужно менять язык - то все ок.
Но мне нужно
www.test.com/admin/en/langs - <-- langs_controller.php->admin_index() - locale = en. КАК СДЕЛАТЬ???
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Hellbot

цитировать



Зарегистрирован: 19 Май 2008 16:29:15
Сообщения: 34

СообщениеДобавлено: 11 Июн 2008 20:47:27    Заголовок сообщения: Ответить с цитатой

kevel писал(а):
Но мне нужно
www.test.com/admin/en/langs - <-- langs_controller.php->admin_index() - locale = en. КАК СДЕЛАТЬ???

Если мне не изменяет память (не проверял) должно быть
Код:
Router::connect('/admin/:locale/:controller/:action/*', array('prefix' => 'admin', 'admin' => true), array('locale' => '[a-zA-Z]{2}'));
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kevel

цитировать



Зарегистрирован: 19 Май 2008 16:17:05
Сообщения: 12
Откуда: minsk, belarus

СообщениеДобавлено: 12 Июн 2008 09:46:14    Заголовок сообщения: Ответить с цитатой

Hellbot, СПАСИБО!!!
Все раборает Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Имя
Сообщение

Смайлики
Very Happy Smile Sad Surprised
Shocked Confused Cool Laughing
Mad Razz Embarassed Crying or Very sad
Evil or Very Mad Twisted Evil Rolling Eyes Wink
Exclamation Question Idea Arrow
Дополнительные смайлики

 
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Cake-PHP.ru -> Общий Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы можете редактировать свои сообщения
Вы можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB

Рейтинг@Mail.ru