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 上这样做,它会尝试准确找到大写的文件夹,在这种情况下,它不存在。
我有一个名为 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 上这样做,它会尝试准确找到大写的文件夹,在这种情况下,它不存在。