L5.1 - 本地化命令不起作用(不在 Ubuntu 但在 Mac 是)

L5.1 - Command with localization not working (not in Ubuntu but yes on Mac)

我有一个名为 SendReminders 的命令,当我使用 App::setLocale('locale') 更改语言环境时 它看起来正常工作 因为当我这样做时 App::getLocale() returns 是正确的,但是当我要求翻译时 returns 总是默认本地化。

这是我的 SendReminders class:

<?php namespace App\Console\Commands;

use Illuminate\Console\Command;

use App;
use Exception;
use Storage;
use Lang;

class SendReminders extends Command
{

    protected $signature = 'send:reminders';

    public function __construct(){
        parent::__construct();
    }

    public function handle(){

        App::setLocale('EN');
        echo App::getLocale()."\n"; // <= Shows correctly 'EN'
        echo Lang::get('general.contact')."\n"; // <= Shows correctly 'Contact'

        App::setLocale('DE');
        echo App::getLocale()."\n"; // <= Shows correctly 'DE'
        echo Lang::get('general.contact')."\n"; // <= Doesn't show the correct value

    }

}

我缺少使本地化正常工作的东西吗?

编辑:

一些奇怪的行为正在发生,因为在我的 Mac 上工作但在 Linux (Ubuntu) 上没有,看起来找不到我的文件夹 /resources/lang/de/

我解决了,问题是因为我设置了大写的语言环境。

所以,这是错误的:

App::setLocale('EN');

应该是:

App::setLocale('en');

解释:

看起来 MacOS 在谈论目录时不区分大小写,所以 'EN' 或 'en' 并不重要,因为它将毫无问题地找到 /resources/lang/en/

但是如果你在 Ubuntu 上这样做,它会尝试准确找到大写的文件夹,在这种情况下,它不存在。