获取整个语言文件数组

时间:2013-12-21 11:03:03

标签: php laravel laravel-4

我是 laravel 4.0 的新手。

  • 如何从lang/en/texts.php获取整个数组?
  • 是否有Lang::getAll()方法?

我的目标是在我的基本控制器中生成关键字/描述,将它们填充到主刀片模板中的元标记和DOM中的其他位置。如果我的方法完全错误,请告诉我!

从关联数组生成关键字和描述不是问题,而是缺乏关于框架的知识。而且,我在谷歌上搜索了很长时间才到达这里......

使用刀片模板: 这是我的BaseController:

class HomeController extends BaseController {

    protected $layout = 'layouts.master';
    private $keyWords = array();

    private function getKeyWords () {
        // ???

    }

    public function getIndex() {
        return View::make('home')
            ->with('errorcanvas', trans('texts.canvas'))
            ->with('errortextwebgl', trans('texts.webgl'))
            ...;
    }

    ...

}

我在API中找到了一些内容:

Illuminate\Translation\FileLoader load()加载给定locale的邮件 ...

5 个答案:

答案 0 :(得分:46)

Lang::get()可以get the entire array

$array = Lang::get('pagination'); // return entire array
$text  = Lang::get('pagination.next'); // return single item

答案 1 :(得分:7)

让我们说一个语言文件:lang / en / countries.php

return [
 'afg' => 'Afghanistan',
 'ala' => 'Aland',
 'alb' => 'Albania',
 'dza' => 'Algeria',
 'asm' => 'American Samoa'
];

使用 Lang :: get()方法

从语言文件中检索线条
$array = Lang::get('countries'); // return entire array
$text  = Lang::get('countries.afg'); // return single item

Laravel 5.0 &上面,您还可以使用 trans 辅助函数,它是 Lang :: get()方法的别名。

$array = trans('countries'); // return entire array
$text = trans('countries.afg'); // return single item

Find out more on Laravel docs...

答案 2 :(得分:4)

以下是加载它们的方法:

Route::get('test', function() 
{
    $a = File::getRequire(base_path().'/app/lang/en/pagination.php');

    foreach($a as $key => $value)
    {
        echo "$key => $value<br>";
    }
});

如果您需要全部加载,可以使用:

$languages = File::directories(base_path().'/app/lang/');

我必须找到一种方法在我的Glottos包中创建一个语言导入命令:https://github.com/antonioribeiro/glottos

答案 3 :(得分:1)

Antonio完美地回答了语言文件的加载,但我不喜欢你的做法 它可以更轻松地完成。为什么不这样做?

// view file
<html>
  <head>
    <meta name="description" content="{{ trans('texts.description') }}">
    ...
  </head>
  ...
</html>

您无需通过控制器发送所有内容,这样可以使控制器保持干净。

答案 4 :(得分:0)

您实际上也可以使用辅助功能__('lang_file')