2017-12-30 37 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

당신 되세요 그것을 위해 create a new helper 수 : 다음

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

을 그리고 다음과 같이 사용 :

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>