2
votes

Let's say I want to make a system which can afford a multilingual web project. The system will consist of the modules that are put in Kohana's standard directory modules. Let's say that the standard access to the particular language can be done via lang parameter (i.e. somesite.com/en/somepage). The problem is that I have to repeat myself in defining my modules routes prepending each uri with (<lang>). Is there any way to avoid that? I thought about a separate language route declaration (for example in bootstap.php file), but I guess it won't solve the problem.

It's all about Kohana 3. Thanks to all.

UPDATE: I think that the way suggested by The Pixel Developer is what one need if some part of the rule in route repeats everywhere.

2

2 Answers

2
votes

Move up a level and extend the route class.

http://github.com/kohana/core/blob/master/classes/kohana/route.php#L69

public static function set($name, $uri, array $regex = NULL)
{
    return parent::set($name, '(<lang>)'.$uri, $regex);
}

Not tested, but that's the general idea.

2
votes

If lang is required in route, why don't you just put it in the default route? Surely that's the easiest way to go about. Something like:

Route::set('default', '<lang>(<controller>(/<action>(/<id>)))', array('lang'=> '[a-z]{2}'))
->defaults(array(
    'controller' => 'somepage',
    'action'     => 'index',
    'lang'       => 'en',
));

Where lang is any 2 letters alphabets which defaults to 'en'.