2016-12-02 4 views
0

Ich habe ein wenig mit Lokalisierung in Laravel 5.3 (mit PHP 7) zu kämpfen. Das Standard localizaiton Dateiformat in Laravel 5.3 wird mit Klammern, wie in diesem Beispiel:Laravel Lokalisierung Dateiformat Fehler: Array() versus [] Format

return [ 
'footer.contact.email' => 'Email:', 
] 

Das ist, was ich in meiner App benutzen und es funktioniert gut. Aber jetzt versuche ich mit einigen Paketen zu arbeiten, mit Übersetzungen zu helfen, zum Beispiel:

Aber diese beide erzeugen Lokalisierungsdateien in dem „alten“ Laravel 4. x Array-Format. Zum Beispiel

return array(
    'footer' => array(
    'contact' => array(
     'email' => 'Email:', 
    ), 
    ), 
); 

Wie ich es verstehe sollte ich mit diesem Lokalisierungsdateiformat in meinem Laravel 5.3 App kein Problem haben, es ist aber immer eine Ausnahme werfen:

[2016-12-02 13:26:01] local.ERROR: ErrorException: htmlspecialchars() expects parameter 1 to be string, array given in C:\100_source_code\consulting_platform_laravel\maingig\vendor\laravel\framework\src\Illuminate\Support\helpers.php:519 
Stack trace: 
#0 C:\100_source_code\consulting_platform_laravel\maingig\vendor\sentry\sentry\lib\Raven\Breadcrumbs\ErrorHandler.php(36): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'htmlspecialchar...', 'C:\\100_source_c...', 519, Array) 

Ich kann nicht wirklich verstehen, warum dieses Format funktioniert nicht mit meiner App. Ich wette, es ist etwas Triviales, dass ich vermisse, aber jede Hilfe wäre sehr willkommen!

Danke,

Christian

Antwort

1

Nach ein paar zusätzliche Stunden durch den Code Schritt ich die Ursache des Problems gefunden.

Zum Beispiel habe ich diese in meinem ursprünglichen lang file:

'footer.subscribe' => 'SUBSCRIBE TO OUR NEWSLETTER', 
'footer.subscribe.intro' => 'Be the first to know about our latest news...', 
'footer.subscribe.privacy' => 'Privacy Policy', 
'footer.subscribe.tos' => 'Terms of Service', 
'footer.subscribe.tac' => 'Terms and Conditions', 

Da ich beide der Pakete in meiner ursprünglichen Frage erwähnt zu verwenden, versuchte sie, die folgende Ausgabe erzeugt:

'footer' => 
    array (
    'subscribe' => 
    array (
     'intro' => 'TODO: intro', 
     'privacy' => 'TODO: privacy', 
     'tos' => 'TODO: tos', 
     'tac' => 'TODO: tac', 
    ), 
), 

Wie Sie sehen können, hat die generierte Datei den Wert für den Text footer.subscribe gelöscht und nur das untergeordnete Element, intro, privacy, tos und tas in diesem Fall behalten. Daher gibt eine Anfrage für trans('footer.subscribe') ein Array und nicht den Text zurück.

Jetzt, da ich das weiß, werde ich das Format meiner ursprünglichen Übersetzungsdatei ändern!

c.