【问题标题】:Get whole language file array获取整个语言文件数组
【发布时间】:2014-01-10 04:21:32
【问题描述】:

我是 laravel 4.0 的新手。

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

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

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

使用刀片模板: 这是我的 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 加载消息 ...

【问题讨论】:

  • 查看@Justin 的答案以获得正确的 Laravel 实现方式。这应该是公认的答案
  • @Gaz_Edge 是的,你是对的。
  • 我需要这个来在 javascript 中包含消息。谢谢

标签: php laravel laravel-4


【解决方案1】:

你可以get the entire arrayLang::get()

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

【讨论】:

  • 陷阱:如果您在 pagination.php 中有名为 'next.page' 和 'next.item' 的数组键,它将不适用于 Lang::get('pagination.next')。您必须确保“下一个”是一个数组。我花了一段时间才弄清楚:)
  • Info : Lang::get('messages') 将获取 Laravel 5.4 中 lang/messages 文件夹下的所有 lang 数组。可能对某人有帮助
  • 像 en.json 这样的语言文件呢?我怎样才能获取文件的所有内容?文件读取除外 ;)
  • @aod 加载 json 文件,我发现如果你使用\Lang::get('*'),你会得到它作为一个数组。
【解决方案2】:

比方说,一个语言文件: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...

【讨论】:

    【解决方案3】:

    您可以通过以下方式加载它们:

    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

    【讨论】:

    • 谢谢安东尼奥!我在 API 中没有找到关于文件类的任何信息,我做错了什么???
    • pc-shooter: 试试 \File 吗?
    • 可以添加命名空间:use Illuminate\Support\Facades\File;
    【解决方案4】:

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

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

    您不需要通过控制器发送所有内容,这使您的控制器干净。

    【讨论】:

    • 当然是 1 行,但我需要整个数组。查看@Antonio 的解决方案
    • 现在我了解您的方法了。也是一个不错的。原因是我将在 DOM 的其他地方使用它
    【解决方案5】:

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

    【讨论】:

      猜你喜欢
      • 2013-06-21
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 2023-02-16
      • 2015-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多