Laravel 9.x中如何覆写__()方法移除翻译缺失时的前缀
在Laravel 9.x中移除翻译未找到时的文件名前缀
方法:覆写__()辅助函数
Laravel的__()是trans()的别名,当翻译键不存在时会返回完整键名(含前缀)。我们可以通过自定义辅助函数覆盖默认实现,处理返回结果:
- 创建自定义辅助函数文件
在项目的app文件夹下新建helpers.php,写入以下代码:
<?php if (!function_exists('__')) { function __($key, $replace = [], $locale = null) { $translation = trans($key, $replace, $locale); // 若返回的是原始翻译键(未找到对应翻译),移除前缀部分 if ($translation === $key && str_contains($key, '.')) { return collect(explode('.', $key))->last(); } return $translation; } }
- 配置自动加载
修改项目根目录的composer.json,在autoload节点中添加files配置:
"autoload": { "files": [ "app/helpers.php" ], "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" } }
- 更新自动加载映射
在终端执行以下命令,让Composer加载新的辅助函数文件:
composer dump-autoload
设置完成后,当翻译键不存在时,__()会自动移除文件名前缀,返回点分隔符后的内容。比如调用__('common.As you have manager access')未找到翻译时,会返回As you have manager access而非完整键名。
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

