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

时间:2017-11-27 10:20:09

标签: php laravel laravel-5 laravel-5.1

我有一个名为SendReminders的命令,当我使用App::setLocale('locale') 更改区域设置时,它似乎正在工作,因为当我App::getLocale()返回正确的时候,但是当我要求翻译时,总是返回默认本地化。

这是我的 SendReminders 类:

<?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/

1 个答案:

答案 0 :(得分:0)

我解决了,问题是因为我用大写设置了区域设置。

所以,这是错误的:

App::setLocale('en');

应该是:

/resources/lang/en/

<强>解释

当您谈论目录时, MacOS 看起来不区分大小写,因此如果您执行“EN”或“en”并不重要,因为它会在没有{{1}}的情况下找到问题

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