2017-12-30 50 views
1

laravelの言語ファイルの階層構造が必要です。 /resources/lang/en/entity.phpLaravel言語ファイルの継承

<?php 

return [ 

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

]; 

は、今私は/resources/lang/en/post.phpでポストエンティティのための新しいファイルを必要とするために、私は次の言語ファイルを持っていることを想像しますが、私はしないでくださいentity.phpファイルからすべてのテキストを新しいファイルにコピーします。新しいエンティティのメッセージをcreateに変更するだけです。次のようなもの

<?php 

return [ 

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

]; 

これを達成するためにとにかくはありますか? ありがとうございました。

+0

となります。なぜなら、/resources/lang/en/buttons.phpを作成して、すべてのボタンラベルで共有するのはなぜですか? –

+0

これは私が欲しいものです。とにかくこのことがあれば教えてください。 – Hossein

答えて

1

それは私の心に来る最初のソリューションはarray_merge方法に使用されるよう、あなたが、あなたの言語ファイルに継承動作のようなものを持っているに主張する場合:

// 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', 
];) 

は楽しみを持って:)

0

あなたは

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

そして、このようにそれを使用します:そのためcreate a new helperでき

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

別々の言語ファイルを使用する代わりに、要素のラベルをグループ化する単一のファイルを作成することもできます。例えば、アプリケーション全体のすべてのボタンラベルは、/resources/lang/en/buttons.phpというファイルに保存することができます。ちょっと注意してラベルを選択するだけで済みます。 buttons.phpの内容は、その後、あなたはどこでもあなたのサイト上のボタンのラベルが必要な場合は、buttons.phpファイルからそれを得ることができます

<?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 
]; 

である可能性があります。たとえば、あなたのショーアイテムボタンは

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