2016-12-21 3 views
0

Согласно Laravel Docs: https://laravel.com/docs/5.1/localization#overriding-package-language-filesКак переопределить язык файлы пакета в Laravel 5,1

, например, если вам нужно переопределить английский язык строки в messages.php для пакета с именем Skyrim/hearthfire, вам разместит языковой файл по адресу: resources/lang/vendor/hearthfire/en/messages.php.

В настоящее время у меня есть пакет activewebsite/enterprise-entity, который я включаю в свой проект. Он содержит файл языка:

vendor/activewebsite/enterprise-entity/src/resources/lang/en/phone.php

Этот файл содержит переводы для типов телефонных номеров:

'phone_1' => 'Home', 
'phone_2' => 'Work', 
'phone_3' => 'Mobile', 
'phone_4' => 'Office', 
'phone_5' => 'Fax', 
'phone_6' => 'Fax 2', 
'phone_7' => 'Home 2', 
'phone_8' => 'Direct', 

Следуя примеру выше, я попытался переопределить этот файл, создавая следующий каталог:

resources/lang/vendor/enterprise-entity/en/phone.php 

, содержащий дополнительный номер телефона, конкретно относящийся к данному проекту:

'phone_9' => 'Rapid Rewards Text Alert Number', 

Но перевод не доходит до front-end. Единственный способ, которым я смог получить перевод, - это отредактировать языковой файл в пакете enterprise-entity.

Я нашел эту тему: https://octobercms.com/forum/post/localication-problems-where-to-overwrite-octobercms-lang-settings-in-general Где другой пользователь, кажется, имеющие аналогичные проблемы, но предполагается, что они используют структуру каталогов:

/lang/{locale}/{vendor}/{plugin}/lang.php 

так я попытался

/lang/en/activewebsite/enterprise-entity/phone.php 

без везения.

Может ли кто-нибудь сказать мне, что я могу быть здесь неправильно? Я попытался запустить оптимизацию php-artisan после каждого изменения, чтобы убедиться, что это может прояснить ситуацию, но не повезло.

Спасибо!

ответ

1

Оказывается, структура папок должна использовать NAMESPACE для пакета, camelcase, а не следовать той же схеме именования/структуре каталогов, что и в пакете или в документах. Итак, для моего примера, пространство имен, используемое для пакета enterprise-entity, - EnterpriseEntity, camelcased будет enterpriseEntity. Правильная структура каталогов будет:

resources/lang/vendor/enterpriseEntity/en/phone.php 
Смежные вопросы