我已经生成了默认的Laravel身份验证模块。
在模块刀片中的每个位置,我都看到Double Underscore __
函数,假定几乎已经存在翻译了。
例如
<li>
<a class="nav-link" href="{{ route('login') }}">
{{ __('Login') }}
</a>
</li>
我的问题:翻译文件在哪里?如果创建一个,该放在哪里?
我的意思是,如果我去Laravel文档站点,有这样的例子
echo __('messages.welcome');
附带说明
例如,让我们从
welcome
语言文件中检索resources/lang/messages.php
翻译字符串:
在上面的示例中,没有指定文件名。只是文字:
__('Login')
问题是:如果未指定文件,语言文件将使用什么?是否有默认值?它坐在哪里?在哪里设置?
答案 0 :(得分:3)
您只需要自己添加翻译文件即可。 __('Login')
表示该字符串已准备好翻译,您可以在翻译文件中指向它。
编辑:
Laravel中的所有语言翻译文件都应存储在PROJECT_DIRECTORY/resources/lang
中。当您通过工匠进行身份验证时,它会自动创建它。但是,如果找不到它,请手动创建。
例如:
在auth.php
目录中创建一个名为PROJECT_DIRECTORY/resources/lang
的文件。然后在上面放一个像这样的简单php数组:
<?php
return [
/*
Translations go here...
*/
];`
然后在其中添加翻译字符串:
<?php
return [
'Login' => 'Welcome to Login Page!',
'Logout' => 'You are logged out!',
];`
现在在刀片模板中只需执行以下操作:
<li>
<a class="nav-link" href="{{ route('login') }}">
{{ __('auth.Login') }}
</a>
</li>
但是,文档还有另一种使用翻译字符串作为键的方法。在这种方法中,您可以使用本地名称在PROJECT_DIRECTORY/resources/lang
中创建一个JSON文件,例如西班牙语名称es.json
或德语de.json
,这取决于您的本地名称。>
现在创建一个JSON数组,并将翻译内容与您在刀片中使用的字符串名称放在一起:
{
"Login": "Welcome to Login Page!",
"Logout" => "You are logged out!",
}
然后使用php double下划线方法在blade中调用您的翻译:
{{ __('Login') }}
我希望解释更清楚。随时问任何问题。
答案 1 :(得分:1)
Laravel Docs 有关于json文件的说明。是的,它不是php,而是json文件。例如:
resources/lang/es.json
内容
{
"I love programming.": "Me encanta programar."
}
用法
echo __('I love programming.');
答案 2 :(得分:1)
laravel提供的默认list_from=[1,2,3,4,5,6,7,8,9,10]
list_from2=[a,b,c,d,e,f,g,h,i,j]
from_dict={list_from[i]:list_from2[i] for i in range(len(list_from2))}
list_to = [1,2,5,10]
save=[]
num=0
while num<=len(list_to):
try:
if list_to[num] in list_from:
save.append(from_dict[list_to[num]])
else:
save.append('')
num+=1
except:
break
,__('Login')
,...似乎没有翻译文件。
默认情况下,如果找不到__('Register')
的翻译,laravel只会使用括号中的字符串。因此,在这里,假设没有翻译文件,__('foobar')
将扩展为__('Login')
。