На самом деле ключ Laravel используется для перевода может содержать только одну точку.
для того, чтобы работать и функция этой точки, чтобы отделить путь перевода файла (относительно каталога языка) из ключа массива перевода. Это потому, что Translator
класс расширяет Illuminate\Support\NamespacedItemResolver
класс, который parses the key используя следующую логику:
- Сначала он определяет, имеется ли пространство имен присутствует (обозначается
::
) и извлекает его.
- Затем он делит ключ на
group
(который является относительным файловым путем) и item
(который является ключом массива переводов).
Так что в вашем случае, поскольку нет пространства имен, когда вы используете это:
Lang::get('phone.history.name')
В результате получается следующее:
- Имя файла будет
phone
- перевод массив будет
history
(вместо name
)
А поскольку в вашем языковом каталоге нет phone.php
, это не сработает.
Так у вас есть два варианта здесь:
Используйте другой символ в своем имени файла, так что есть только одна точка в параметре переводчик, что-то вроде /lang/en/phone_history.php
, а затем использовать Lang::get('phone_history.name')
.
Используйте подкаталог, если вы хотите сгруппировать некоторые файлы перевода, что-то вроде /lang/en/phone/history.php
, а затем использовать Lang::get('phone/history.name')
(к сожалению, как я уже говорил выше, вы можете использовать только одну точку в качестве разделителя, так что вы не можете использовать несколько уровня точка, как и для файла конфигурации Lang::get('phone.history.name')
).
Почему бы не использовать подкаталог в качестве laravel? – jardis
@ Emn1ty фактически использует точечную нотацию для подкаталогов, не работает при загрузке файлов перевода так же, как и для файлов конфигурации. В ключе переводчика может быть только один символ. – Bogdan