laravel - 在 Blade 文件中使用哪种语法进行翻译?
问题描述
我正在使用 Laravel 8,我想翻译一个网站。由于我有很多翻译要做,我将使用“翻译字符串作为键”(请参阅 Laravel 文档)。
我可以在我的 Blade 文件中使用以下两种方法。
{{ __('A propos') }}
或者
@lang('A propos')
我的问题是:你使用什么方法,为什么?
解决方案
我真的更喜欢使用 __ 辅助函数。如果你深入研究,你会发现这个辅助函数在功能和灵活性方面非常酷。除了翻译字符串,它还接收 2 个其他参数。一个是replace[],另一个是local。
if (! function_exists('__')) {
/**
* Translate the given message.
*
* @param string|null $key
* @param array $replace
* @param string|null $locale
* @return string|array|null
*/
function __($key = null, $replace = [], $locale = null)
{
if (is_null($key)) {
return $key;
}
return trans($key, $replace, $locale);
}
}
所以我们可以使用这个函数使用键执行翻译,另外还可以用第二个参数中传递的值替换翻译。不仅如此,我们还可以选择在第三个参数中指定我们需要翻译的语言。
其次,我们可以在 Laravel 控制器、视图等项目中的任何地方使用此功能。
另一方面,我们有刀片指令@lang()。我在供应商的任何地方都找不到它的定义,但我确信您只能在刀片模板中使用它。此外,它没有replace[]和语言环境参数的灵活性,就像__()辅助函数一样。
在辩论结束时,我真的会选择__()辅助函数,因为它灵活、可重用且有良好的文档记录。
推荐阅读
- c# - c#LINQ如何确定具有特定属性的XElement
- c++ - 为 Vim 配置 .ccls 文件
- java - Java从Tiktok获取URL
- c# - 如何在列表中按顺序计算每个元素的差异,然后在 LINQ 中获取平均值?
- python - Python on WordPress/Woocommerce 上传图片
- javascript - 如何更改 Here Maps Js api 中路由指令的语言?
- javascript - 嵌套for循环,每个循环单独延迟
- reactjs - node express 服务器不提供带有 brotli 和 gzip 压缩的压缩静态文件
- javascript - CSS 页面过渡 silde up
- discord - 我正在尝试为我的 Discord 机器人制定具有角色权限的明确命令。(不和谐.js)