kohana3.2子域路由 - 多语言

时间:2013-08-08 19:02:30

标签: routing kohana multilingual subdomain kohana-3.2

我在kohana 3.2中遇到了一个小问题。我想创建一个支持多种语言的简单博客。

我想创建这样的链接:

  • pl.yourwebsite.com/kontakt
  • en.yourwebsite.com/contact
  • xx.yourwebsite.com/sometranslation of controller above

我为接触和路由设置了一个简单的控制器,但是当涉及到路由时,我必须设置静态路由,这是一个非常糟糕的解决方案。例如:

for pl lang:

Route::set('kontakt', 'kontakt(/<action>(/<id>(/<id2>(/<id3>))))')
    ->defaults(array(
        'controller' => 'contact',
        'action'     => 'index',
    ));

当我使用domain.com/contactdomain.com/kontakt时它会起作用,但是当我有20多个控制器和3个langugage时;这将是60多条路线==糟糕的解决方案。

我感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您至少可以将单个页面的翻译组合在一起,但为此您仍然需要每页至少有一个路径。

此示例使用正则表达式匹配网址的<page_name>部分:

Route::set('kontakt', '<page_name>(/<action>(/<id>(/<id2>(/<id3>))))',
           array('page_name' => '(contact|kontakt|contatto)'))
    ->defaults(array(
        'controller' => 'contact',
        'action'     => 'index',
    ));

还要考虑在设置Route时可以指定回调函数,如果找到匹配的路由,则可以返回应该调用的控制器和操作。这允许您运行自己的代码并确定要调用的控制器/操作。请参阅手册中的Lambda/Callback route logic部分。