Holen Sie sich das gesamte Sprachdatei-Array

Lesezeit: 3 Minuten

Benutzer-Avatar
toesslab

Ich bin Neuling dabei Laravel 4.0.

  • So erhalten Sie das gesamte Array von lang/en/texts.php?
  • Gibt es eine Lang::getAll() Methode?

Mein Ziel ist es, Schlüsselwörter/Beschreibungen in meinem Basiscontroller zu generieren, um sie in die Meta-Tags und andere Stellen im DOM in der Master-Blade-Vorlage einzufügen. Wenn mein Ansatz völlig falsch ist, sagen Sie es mir bitte!

Das Generieren der Schlüsselwörter und der Beschreibung aus einem assoziativen Array ist NICHT das Problem, sondern das fehlende Wissen über das Framework. Und ich habe lange gegoogelt, bevor ich hier gelandet bin …

Arbeiten mit Blade-Templates: Das ist mein 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'))
            ...;
    }

    ...

}

Ich habe etwas in der gefunden API:

Illuminate\Translation\FileLoader load() die die Nachrichten mit einem gegebenen lädt locale

  • siehe Antwort von @Justin für den richtigen Laravel-Weg, um dies zu erreichen. Es sollte die akzeptierte Antwort sein

    – GWed

    20. Dezember 2014 um 16:34 Uhr

  • @Gaz_Edge Ja, du hast Recht.

    – Toesslab

    21. Dezember 2014 um 10:02 Uhr

  • Ich brauchte dies, um Nachrichten in Javascript einzufügen. Danke

    – Jure Špik

    26. Juni 2015 um 15:12 Uhr

Benutzer-Avatar
Justin

Du kannst Holen Sie sich das gesamte Array mit Lang::get().

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

  • Gotcha: Wenn Sie Array-Schlüssel in pagination.php haben, die ‘next.page’ und ‘next.item’ heißen, wird es damit nicht funktionieren Lang::get('pagination.next'). Sie müssen sicherstellen, dass „next“ ein Array ist. Es hat eine Weile gedauert, bis ich das herausgefunden habe 🙂

    – Ärmellos

    28. August 2014 um 12:43 Uhr

  • Info: Lang::get(‘messages’) ruft das gesamte lang-Array im Ordner lang/messages in Laravel 5.4 ab. Kann jemandem helfen

    – Nouphal.M

    1. August 2018 um 8:55 Uhr


  • Was ist mit en.json ähnlichen Sprachdateien? Wie könnte ich den gesamten Inhalt der Datei abrufen? Außer zum Lesen von Dateien 😉

    – Onur Demir

    18. September 2018 um 11:59 Uhr

  • @aod zum Laden der json-Dateien, die ich gefunden habe, wenn Sie verwenden \Lang::get('*') Sie erhalten alles als Array.

    – Timo M.

    21. Februar 2020 um 22:36 Uhr

Nehmen wir an, eine Sprachdatei: lang/en/countries.php

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

Abrufen von Zeilen aus der Sprachdatei mit Lang::get() Methode

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

zum Laravel 5.0 & höher, Sie können auch die verwenden trans Hilfsfunktion, die ein Alias ​​für die ist Lang::get() Methode.

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

Erfahren Sie mehr über Laravel-Dokumente …

So können Sie sie laden:

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

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

Wenn Sie sie alle laden müssen, können Sie Folgendes verwenden:

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

Ich musste einen Weg finden, einen Sprachimportbefehl in meinem Glottos-Paket zu erstellen: https://github.com/antonioribeiro/glottos.

  • Danke Antonio! Ich habe nichts über die Dateiklasse in der API gefunden, was mache ich falsch???

    – Toesslab

    21. Dezember 2013 um 12:18 Uhr


  • pc-shooter: Versuche es stattdessen mit \File ?

    – Jure Špik

    26. Juni 2015 um 15:47 Uhr

  • Sie können Namespace hinzufügen: use Illuminate\Support\Facades\File;

    – Sagar Naliyapara

    10. August 2017 um 6:20 Uhr

Antonio hat das Laden der Sprachdatei perfekt beantwortet, aber ich mag Ihren Ansatz nicht.
Es kann viel einfacher gemacht werden. Warum sollte man es nicht so machen?

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

Sie müssen nicht den gesamten Inhalt durch den Controller senden, wodurch Ihr Controller sauber bleibt.

Sie können die Hilfsfunktion tatsächlich verwenden __('lang_file') auch.

1180370cookie-checkHolen Sie sich das gesamte Sprachdatei-Array

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy