Подтвердить что ты не робот

Получить массив массивов всего языка

Я новичок в 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...

4b9b3361

Ответ 1

Вы можете получить весь массив с помощью Lang::get().

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

Ответ 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

Узнайте больше о документах Laravel...

Ответ 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.

Ответ 4

Антонио отлично ответил на загрузку языкового файла, но мне не нравится ваш подход.
Это можно сделать намного проще. Почему бы не сделать это таким образом?

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

Вам не нужно отправлять весь контент через контроллер, что делает ваш контроллер чистым.

Ответ 5

вы также можете использовать вспомогательную функцию __('lang_file').