Ответ 1
Вы можете получить весь массив с помощью Lang::get()
.
$array = Lang::get('pagination'); // return entire array
$text = Lang::get('pagination.next'); // return single item
Я новичок в 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
...
Вы можете получить весь массив с помощью Lang::get()
.
$array = Lang::get('pagination'); // return entire array
$text = Lang::get('pagination.next'); // return single item
Скажем, файл языка: 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
Здесь, как вы можете загрузить их:
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.
Антонио отлично ответил на загрузку языкового файла, но мне не нравится ваш подход.
Это можно сделать намного проще. Почему бы не сделать это таким образом?
// view file
<html>
<head>
<meta name="description" content="{{ trans('texts.description') }}">
...
</head>
...
</html>
Вам не нужно отправлять весь контент через контроллер, что делает ваш контроллер чистым.
вы также можете использовать вспомогательную функцию __('lang_file')
.