多语言数据库驱动的网站与laravel4

时间:2014-03-10 10:38:09

标签: php laravel laravel-4

我正忙着用laravel来做一个多语言的网站。

我正在努力实现这个:

$languages = array('en','fr');
$locale = Request::segment(1);
if(in_array($locale, $languages)){
    \App::setLocale($locale);
}else{
    $locale = null;
}
Route::group(array('prefix' => $locale), function()
{

    Route::get('/', 'Homecontroller@index');
    Route::get('contact', 'Homecontroller@contact');

});

我能看到的,每件事都很好, 据我所知,Laravel从我的url段获取locale,检查它是否是语言,如果不为null,则更改添加前缀的路由。我有两个问题:

1)为什么现在我的所有图像都不再显示了,当我去接触时,当我去en /我能看到它们时。

2)使用数据库来获取语言,我不必更改App:setLocale,但是我需要做一个模型来将语言提取到数据库并放在正确的位置?

3)如何将变量语言传递给刀片,所以我可以改变产品的描述? (我曾经做过?lang = en然后带着$ _GET

对不起我知道也许这只是一个基本问题,但我来自纯PHP和纯mysql背景。

编辑: 1)我需要像{{HTML :: image('path')}}

一样使用HTML :: image facade

1 个答案:

答案 0 :(得分:1)

  1. 对我来说,好像你是用亲戚链接你的图像 当你开始拥有不同的结构时会破坏的路径 在您的网址中。因此,尝试在图像src标签中使用绝对URL:s 让它们以斜杠(/)开头。例如。 {{ HTML::image('/absolute/path/to/image.jpg') }}

  2. 我不确定我是否理解您的问题,但您希望将翻译存储在数据库中而不是默认文件中?也许这可能适合您:https://github.com/Waavi/translation

  3. 这可以用很多种方式来实现。比如你可以 只需在您的刀片模板中调用{{{ Request::segment(1) }}}即可 得到你的语言(假设它的段号为1)。但最好的 方法可能是将它包装在一个函数中,并根据应用程序的结构将其放在适当的位置。