Laravel 默认授权模块翻译

Laravel default auth module translation

我已经生成了默认的 Laravel 授权模块。

在模块的刀片中的任何地方,我都看到双下划线 __ 函数假设翻译几乎在那里。

例如

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

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

我的意思是,如果我访问 Laravel 文档站点,就会有这样的示例

echo __('messages.welcome');

有解释

For example, let's retrieve the welcome translation string from the resources/lang/messages.php language file:

但是在我上面的示例中没有指定文件名。它只是文本:

__('Login')

问题是:如果没有指定文件,语言文件用什么?有默认吗?它坐在哪里?设置在哪里?

Laravel中的所有语言翻译文件都应存储在PROJECT_DIRECTORY/resources/lang中。当您使用 artisan 进行授权时,它会自动创建。但是如果找不到,那就手动创建吧。

(1)

文档提供了一种使用翻译字符串作为键的方法。在这种方法中,您可以在 PROJECT_DIRECTORY/resources/lang 中使用您当地的名称创建一个 JSON 文件,例如西班牙语名称为 es.json 或德语 de.json,这取决于您当地的名称名字.

现在创建一个 JSON object 并将翻译与您在 blade:

中使用的字符串名称放在一起
{
   "Login": "Welcome to Login Page!",
   "Logout": "You are logged out!",
}

然后使用PHP双下划线方法在blades中调用你的翻译:

{{ __('Login') }}

(2)

PROJECT_DIRECTORY/resources/lang 目录中创建一个名为 auth.php 的文件。然后在上面放一个像这样的简单 php 数组:

<?php
  
  return [

    /*
      Translations go here...
    */

  ];`

然后将您的翻译字符串添加到其中:

  <?php
  
  return [

    'Login' => 'Welcome to Login Page!',
    'Logout' => 'You are logged out!',

  ];`

现在在 blade 模板中只需执行以下操作:

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

Laravel Docs 有关于 json 文件的说明。是的,它不是 php,而是 json 文件。例如:

resources/lang/es.json

内容

{
    "I love programming.": "Me encanta programar."
}

用法

echo __('I love programming.');

__('Login')__('Register')、...似乎没有翻译文件,由 laravel 提供。

默认情况下,如果找不到 __('foobar') 的翻译,laravel 仅使用括号中的字符串。所以这里,假设没有翻译文件,__('Login')被展开为'Login'.