2015-09-09 13 views
18

Ich benutze Laravel (5.1) Blade-Vorlage-Engine mit der Lokalisierungsfunktion.Wie Großbuchstaben Großbuchstaben in Laravel Blade

Es gibt eine Sprachdatei messages.php im /resources/lang/en/ Ordner:

return [ 
    'welcome' => 'welcome', 

In meiner Klinge Vorlage die Begrüßungsnachricht die trans Methode aufgerufen wird:

{{ trans('messages.welcome') }} 

In einigen Fällen muss ich zeigen, die gleiche Nachricht, aber mit dem Anfangsbuchstaben groß geschrieben ("Willkommen"). Ich möchte keine doppelten Datensätze in der Übersetzungsdatei verwenden.

Wie kann ich das angehen?

Antwort

45

PHPs nativen ucfirst Funktion:

{{ ucfirst(trans('messages.welcome')) }} 
+0

Oder verwenden Sie 'ucwords()', wenn Sie eine Zeichenfolge mit mehreren Wörtern haben und Sie möchten jedes Wort zu aktivieren . – orrd

+0

Auch als eine Randnotiz, ich glaube, es ist egal, welche Version von Laravel verwendet wird, weil .. zuerst, lcfirst, ucwords, sind alle Standard-PHP-Hilfsfunktionen. lcfirst ist zuerst Lowecase und kam auf php 5.3+, wo ich als erstes und ucwords in PHP 5.0 glaube. – Birdy

+1

Leider ist dies keine Multibyte-Lösung .. Sie können mb_convert_case ($ x, MB_CASE_TITLE, 'UTF-8') oder CSS wie folgt verwenden: .my-class: first-letter {text-transform: großschreiben; } – SimZal

0

hinzufügen Klinge Richtlinie auf die app/Anbieter/AppServiceProvider Stiefels() Funktion:

public function boot() { 

    Blade::directive('lang_u', function ($s) { 
     return "<?php echo ucfirst(trans($s)); ?>"; 
    }); 

} 

Auf diese Weise können die folgenden in Ihrer Klinge verwenden können Dateien:

@lang_u('messages.welcome') 

die Ausgänge: Willkommen

 

Du bist @lang_u ('messages.welcome') :)

+0

Achten Sie darauf, da Ihre Ausgabe nicht maskiert wird, dies macht Sie anfällig für XSS. – Maantje

+0

@Maantje danke, aber nur in bestimmten spezifischen Anwendungsfällen. Die Blade-Direktive @ lang entgeht auch nicht; Auf diese Weise können Sie HTML in Ihren Sprachdateien verwenden. Die Anweisung wird normalerweise verwendet, um Text aus statischen Sprachdateien abzurufen, so dass keine Gefahr besteht. Wenn Sie nutzergenerierte Eingaben anzeigen möchten, sollten Sie dies natürlich vermeiden. – Pim