Die Ausweichsprache ist, was Sie verwenden sollten. Siehe docs
Sie können auch eine „Ausweichsprache“ konfigurieren, die verwendet wird, wenn die aktive Sprache keine bestimmte Sprache Zeile enthält. Wie die Standardsprache wird die Ausweichsprache auch in der app/config/app.php
Konfigurationsdatei konfiguriert:
'fallback_locale' => 'en',
Es wird sicher nehmen Sie nur so viel Zeit in Ausweich Schreiben inline als es einfach zu schreiben würde das Zurückfallen in eine parallele Übersetzungsdatei, während Sie in den Übersetzungsschlüssel schreiben. Die Zeit, die damit verbracht wird, über einen alternativen Weg nachzudenken, anstatt es einfach zu tun, wird am Ende vernachlässigbar sein.
Wenn Sie wirklich ein Inline-Fallback möchten, müssen Sie eine neue Hilfsmethode erstellen, die etwas anderes macht. Also bereite dich auf eine gebraute Großartigkeit vor.
Lassen Sie uns eine neue Funktion erstellen, die wir in jeder Ansicht verwenden können. Ich werde die von Joseph Sibler beschriebene Methode verwenden. Erstellen Sie eine Datei namens helpers.php
innerhalb app
. Dann fügen Sie das zu Ihrem composer.json
in dem autoload
Objekt unter einem files
Array wie "app/helpers.php"
hinzu. Nicht sicher, was ich meine? Siehe seine Antwort. Führen Sie nach dem Hinzufügen composer dump-autoload
aus.
Nun fügen wir eine trans_fb()
Methode hinzu, die alle Parameter der trans()
Methode verwendet, aber auch mit einem Fallback. Ich werde diese Methode so definieren, dass die ersten beiden Argumente benötigt werden (der Schlüssel und der Fallback).
Wenn Laravel den Übersetzungsschlüssel nicht finden kann (er sucht z. B. in resources/lang/en/auth.php
als auth.failed
als Schlüssel), wird stattdessen das Fallback verwendet und alle anderen optionalen Argumente für die ursprüngliche Methode übergeben.
<?php
if (! function_exists('trans_fb')) {
/**
* Translate the given message with a fallback string if none exists.
*
* @param string $id
* @param string $fallback
* @param array $parameters
* @param string $domain
* @param string $locale
* @return \Symfony\Component\Translation\TranslatorInterface|string
*/
function trans_fb($id, $fallback, $parameters = [], $domain = 'messages', $locale = null)
{
return ($id === ($translation = trans($id, $parameters, $domain, $locale))) ? $fallback : $translation;
}
}
Sie können diese dann in einer Vorlage verwenden, etwa so:
{{ trans_fb("i.love.laravel", "I love Laravel!") }}
ich über die Ausweichsprache schon fertig hatte, aber in meiner Situation nicht lebensfähig aussehen. Ich werde versuchen, eine alternative Hilfsfunktion wie vorgeschlagen zu verwenden. Vielen Dank. –
Wenn es nicht lebensfähig war, dann sollte das alles sein, was du brauchst :) Viel Glück. – Jonathan
Ehrfürchtig. Die Verwendung der Hilfsfunktion macht die Magie. Vielen Dank. –