你能帮我解决以下问题吗?我需要将翻译文件的内容作为数组获取,无论它是否是PHP
文件或一个JSON
file.
假设我的项目中有以下结构:
laravel_project/resources/lang/
├── en
├── es
├── file1.php
├── file2.json
...
我有以下方法:
public function example()
{
dd(__('file1', [], '/'));
}
我得到以下结果:
array:2 [
"failed" => "These credentials do not match our records."
"throttle" => "Too many login attempts. Please try again in :seconds seconds."
]
这很棒,因为它是file1.php
文件,但我想知道如何获取该文件的内容file2.json
以同样的方式文件,因为当我执行以下操作时:
public function example()
{
dd(__('file2', [], '/'));
}
我得到以下结果:
"file2"
的内容file2.json
文件如下:
{
"A": "My string A",
"B": "My string B"
}
我的意思是,它没有返回文件的内容file2.json
。有没有一种优雅的方式来实现我想要做的事情?基本上我想做的是返回翻译文件的内容,无论它是否是PHP
文件或一个JSON
文件。预先非常感谢您。
Laravel 7x 中的测试表明您的 json 文件内容可以通过以下方式访问:
dd(__('*', [], 'file2'));
鉴于此,您仍然需要想出一种方法来确定您正在访问 PHP 文件还是 JSON 文件。你可以这样做:
public function example($file)
{
// get JSON contents
$data = __('*', [], $file);
// if no JSON contents found, get PHP contents
if ($data == '*') {
$data = __($file, [], '/');
}
return $data;
}
注意:这是以一种未记录且非预期的方式使用翻译器。无法保证未来的“非破坏性”变化不会破坏这一点。
您的另一个选择是扩展和覆盖框架的 FileLoader 和/或 Translator 以添加您正在寻找的功能。将您的覆盖类绑定到容器中的别名中,然后将使用您的自定义代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)