Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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? как то не очень удобно.
Я опять изобретаю велосипеды и есть более простые способы? Ткните носом, буду благодарен |
|
Вернуться к началу |
|
|
Антон Исайкин 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 неа не устраивает
у меня вот не получается организовать доступ по Роуту типа:
/en/controller/action/param для английского
/uk/controller/action/param для украинского
/controller/action/param для дифолтного
Т.е. либо /controller/action
либо обязательный параметр /lang/ (uk/en)
но это я уже пережил |
|
Вернуться к началу |
|
|
Антон Исайкин 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 Заголовок сообщения: |
|
|
Красоты хочется
А так - всё устраивает )) |
|
Вернуться к началу |
|
|
KPOTOB
цитировать
Зарегистрирован: 09 Дек 2007 14:46:20 Сообщения: 127
|
Добавлено: 25 Фев 2008 16:23:50 Заголовок сообщения: |
|
|
Так для красоты из браузера надо язык дергать ))) |
|
Вернуться к началу |
|
|
Vlad
цитировать
Зарегистрирован: 02 Ноя 2007 11:45:52 Сообщения: 241
|
Добавлено: 26 Фев 2008 10:23:37 Заголовок сообщения: |
|
|
дёргай не дёргай, а для разных языков должны быть разные урлы |
|
Вернуться к началу |
|
|
Антон Исайкин 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 Заголовок сообщения: |
|
|
Как же решить ето .. Какие роуты дописать .. ? |
|
Вернуться к началу |
|
|
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, СПАСИБО!!!
Все раборает |
|
Вернуться к началу |
|
|
|