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


multilanguage database driven website with laravel4

我正在和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,检查它是否在languages中,如果不是null,则更改路由添加前缀。我有两个问题:

1)为什么我所有的图像现在都不能正常显示了,当我去en/contact,而当我去en/我可以看到他们。

2)使用数据库来拾取语言,我不一定要改变App:setLocale,但我需要做一个模型来提取语言到数据库,并放在正确的地方?

3)如何将变量语言传递给blade,以便我可以更改产品的描述??(我以前使用?lang=en,然后使用$_GET

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

编辑:1)我需要使用HTML::image facade,如{{HTML::image('path')}}

  1. 对我来说,你似乎是用相对链接到你的图像当你开始有不同的结构时,这些路径就会中断在您的URL。所以尝试在你的图像src标签或以斜杠(/)开头。例如:{{ HTML::image('/absolute/path/to/image.jpg') }}

  2. 我不确定我是否理解你的问题,但是你想把你的翻译存储在数据库中,而不是在文件中,这是默认的?也许这对你有帮助:https://github.com/Waavi/translation

  3. 这可以通过很多不同的方式实现。比如你可以只需调用刀片模板中的{{{ Request::segment(1) }}},然后得到你的语言(假设它是第1段),但最整洁方法可能是将其封装在一个函数中,并根据应用程序的结构将其放在适当的位置。