Laravel 默认认证模块翻译

Yev*_*yev 6 translation localization laravel-5

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

在模块的刀片中,我看到双下划线__功能,假设翻译几乎就在那里。

例如

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

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

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

echo __('messages.welcome');
Run Code Online (Sandbox Code Playgroud)

有解释

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

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

__('Login')
Run Code Online (Sandbox Code Playgroud)

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

小智 14

您应该自己添加翻译文件。__('Login')表示字符串已准备好翻译,您可以在翻译文件中指向它。

编辑:

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

例如:

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

<?php

  return [

    /*
      Translations go here...
    */

  ];`
Run Code Online (Sandbox Code Playgroud)

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

  <?php

  return [

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

  ];`
Run Code Online (Sandbox Code Playgroud)

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

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

但是还有第二种方法可以使用翻译字符串作为文档的键。在此方法中,您可以PROJECT_DIRECTORY/resources/lang使用本地名称创建一个 JSON 文件,例如西班牙语名称 ites.json或 German de.json,这取决于您的本地名称。

现在创建一个 JSON 对象并将翻译放入您在刀片中使用的字符串名称:

{
   "Login": "Welcome to Login Page!",
   "Logout": "You are logged out!",
}
Run Code Online (Sandbox Code Playgroud)

然后使用 PHP 双下划线方法在刀片中调用您的翻译:

{{ __('Login') }}
Run Code Online (Sandbox Code Playgroud)

我希望解释更清楚。随时提出任何问题。


Yev*_*yev 2

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

resources/lang/es.json
Run Code Online (Sandbox Code Playgroud)

内容

{
    "I love programming.": "Me encanta programar."
}
Run Code Online (Sandbox Code Playgroud)

用法

echo __('I love programming.');
Run Code Online (Sandbox Code Playgroud)