2017-12-30 39 views
1

Ich brauche eine hierarchische Struktur für meine Sprachdateien in Laravel. Stellen Sie sich vor, dass ich folgende Sprachdatei haben für /resources/lang/en/entity.phpVererbung in Laravel Sprachdateien

<?php 

return [ 

    'show' => 'Show Item', 
    'view' => 'View Item', 
    'edit' => 'Edit Item', 
    'create' => 'Create a new Item', 

]; 

Jetzt habe ich eine neue Datei für Post Entität bei /resources/lang/en/post.php brauchen, aber ich weiß nicht Ich möchte alle Texte aus der Datei entity.php in die neue Datei kopieren. Ich muss nur create Nachricht für die neue Entität ändern. Etwas wie das Folgen.

<?php 

return [ 

    // Inherit the rest of texts from entity.php 
    'create' => 'Create a new Blog Post', 

]; 

Gibt es trotzdem, dies zu erreichen? Vielen Dank im Voraus.

+0

Warum nicht /resources/lang/en/buttons.php erstellen und es für alle Ihre Tastenbeschriftungen teilen ?. –

+0

Das ist was ich will. Sollte es trotzdem dazu kommen, lass es mich wissen. – Hossein

Antwort

1

Wenn Sie darauf bestehen, etwas wie Vererbungsverhalten in Ihrer Sprachdateien zu haben, als erste Lösung, die es in meinem Kopf kommt zu array_merge Methode verwendet:

// entity.php 
return [ 
    'show' => 'Show Item', 
    'view' => 'View Item', 
    'edit' => 'Edit Item', 
    'create' => 'Create a new Item', 
]; 

// post.php 
$terms = (include 'entity.php') 

return array_merge($terms, [ 
    'create' => 'Create a new Blog Post', 
];) 

Viel Spaß :)

0

Sie create a new helper könnte dafür:

function translate($trans, $fallback) { 
    return __($trans) === $trans ? __($fallback . '.' . explode('.', $trans)[1]) : __($trans); 
} 

Und es dann wie folgt verwenden:

translate('post.create', 'entity'); 
0

Statt viele separate Sprachdateien zu verwenden, wäre ein anderer Ansatz, eine einzige Datei zu erstellen, die die Beschriftungen für ein Element gruppiert. Beispielsweise könnten alle Ihre Schaltflächenbeschriftungen für die gesamte App in einer Datei unter /resources/lang/en/buttons.php gespeichert werden. Sie müssen nur ein wenig vorsichtiger sein, wenn Sie Etiketten auswählen. Der Inhalt buttons.php konnte

<?php 

return [ 

    'show_item' => 'Show Item', 
    'view_item' => 'View Item', 
    'edit_item' => 'Edit Item', 
    'create_new_item' => 'Create a new Item', 
    'create_new_blog_post' => 'Create a new Blog Post', 
    //add all labels here 
]; 

sein Dann, wenn Sie auf eine Schaltfläche Etikett überall auf Ihrer Website benötigen Sie es von der buttons.php Datei bekommen kann. Zum Beispiel würde Ihre Schaltfläche "Show Item"

<button type="button">{{ __('buttons.show_item') }}</button> 
Verwandte Themen