Multilingual 在Laravel中,Lang::get('locale')和_u('locale')之间有区别吗?

Multilingual 在Laravel中,Lang::get('locale')和_u('locale')之间有区别吗?,multilingual,laravel-5.7,Multilingual,Laravel 5.7,在Laravel5.7中,文档要求使用以下语法来检索区域设置 {{ __ ('my.locale')}} 但我注意到 {{Lang::get('my.locale')}} 它也可以工作,事实上,它也是在以前的版本中使用的 这两者之间有根本性的区别吗?还是只是语法发生了变化?主要区别在于_uu和@lang将检查php语言文件之外的内容。除此之外,语法没有改变;它们最终都遵循相同的\illumb\Translation\Translator::get方法 这些都将在刀片视图中工作: @郎‘……’

在Laravel5.7中,文档要求使用以下语法来检索区域设置

{{ __ ('my.locale')}}
但我注意到

{{Lang::get('my.locale')}}
它也可以工作,事实上,它也是在以前的版本中使用的


这两者之间有根本性的区别吗?还是只是语法发生了变化?

主要区别在于_uu和@lang将检查php语言文件之外的内容。除此之外,语法没有改变;它们最终都遵循相同的\illumb\Translation\Translator::get方法

这些都将在刀片视图中工作:

@郎‘……’ {{ __'...' }} {{trans'.'}} {{Lang::trans'.'} {{Lang::get'.'} {{app'translator'->get'.'} 如果您使用@lang Blade指令,请记住它不会转义htmlentities,这意味着您的翻译字符串需要以转义形式存储,例如,而不是。其他函数也没有转义htmlentities,但是使用@lang是该列表中唯一不通过句柄{{}传递字符串的选项,这是调用转义函数的地方。翻译字符串中包含html特殊字符可能并不常见,而且翻译字符串通常不来自用户输入,因此跨站点脚本编写不是问题,但值得了解

如果你想潜得更深,这是与拉威尔5.8的不同之处:

/** *翻译给定的信息。 * *@param string$key *@param数组$replace *@param string$locale *@return string | array | null */ 函数_$key,$replace=[],$locale=null { 返回app'translator'->getFromJson$key、$replace、$locale; } 您可以看到它使用的是getFromJson而不是get。但是,getFromJson如果在json文件中找不到任何内容:

//如果我们找不到JSON键的翻译,我们将尝试翻译它 //使用典型的翻译文件。这样,开发人员就可以始终使用 //帮助器,例如_uu,而不必在trans或_uu与视图之间进行选择。 如果isset$行{ $fallback=$this->get$key、$replace、$locale; 如果$fallback!==$key{ 返回$fallback; } } 还有trans,它只不过是get的别名:

公共函数trans$key,数组$replace=[],$locale=null { 返回$this->get$key、$replace、$locale; }
主要区别在于_uu和@lang将检查除php语言文件之外的其他文件。除此之外,语法没有改变;它们最终都遵循相同的\illumb\Translation\Translator::get方法

这些都将在刀片视图中工作:

@郎‘……’ {{ __'...' }} {{trans'.'}} {{Lang::trans'.'} {{Lang::get'.'} {{app'translator'->get'.'} 如果您使用@lang Blade指令,请记住它不会转义htmlentities,这意味着您的翻译字符串需要以转义形式存储,例如,而不是。其他函数也没有转义htmlentities,但是使用@lang是该列表中唯一不通过句柄{{}传递字符串的选项,这是调用转义函数的地方。翻译字符串中包含html特殊字符可能并不常见,而且翻译字符串通常不来自用户输入,因此跨站点脚本编写不是问题,但值得了解

如果你想潜得更深,这是与拉威尔5.8的不同之处:

/** *翻译给定的信息。 * *@param string$key *@param数组$replace *@param string$locale *@return string | array | null */ 函数_$key,$replace=[],$locale=null { 返回app'translator'->getFromJson$key、$replace、$locale; } 您可以看到它使用的是getFromJson而不是get。但是,getFromJson如果在json文件中找不到任何内容:

//如果我们找不到JSON键的翻译,我们将尝试翻译它 //使用典型的翻译文件。这样,开发人员就可以始终使用 //帮助器,例如_uu,而不必在trans或_uu与视图之间进行选择。 如果isset$行{ $fallback=$this->get$key、$replace、$locale; 如果$fallback!==$key{ 返回$fallback; } } 还有trans,它只不过是get的别名:

公共函数trans$key,数组$replace=[],$locale=null { 返回$this->get$key、$replace、$locale; }