Laravel默认身份验证模块转换

时间:2018-08-15 01:54:22

标签: laravel-5 localization translation

我已经生成了默认的Laravel身份验证模块。

在模块刀片中的每个位置,我都看到Double Underscore __函数,假定几乎已经存在翻译了。

例如

<li>
  <a class="nav-link" href="{{ route('login') }}">
    {{ __('Login') }}
  </a>
</li>

我的问题:翻译文件在哪里?如果创建一个,该放在哪里?

我的意思是,如果我去Laravel文档站点,有这样的例子

echo __('messages.welcome');

附带说明

  

例如,让我们从welcome语言文件中检索resources/lang/messages.php翻译字符串:

在上面的示例中,没有指定文件名。只是文字:

__('Login')

问题是:如果未指定文件,语言文件将使用什么?是否有默认值?它坐在哪里?在哪里设置?

3 个答案:

答案 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')