2016-10-16 45 views
2

我用Laravel碳本地化工作不使用Laravel 5.3,</p> <p>在我的方法(GET本地化月份的名字從數)

setlocale(LC_TIME, 'hr-HR'); 
dd(Carbon::now()->formatLocalized('%A')); 

,但我得到Sunday而不是CroatianWordForSunday

我試過用Carbon::setLocale('hr')來代替setlocale()但我仍然得到Sunday

在我config/app.php文件我已經設置'locale' => 'hr'

需要注意的是,如果我使用Carbon::setLocale('hr'),Carbon的diffForHumans()方法已成功翻譯。

在結束所有我想要做的是轉換數字八日至八月,但在克羅地亞。 我總是可以手動將1月份更改爲Siječanj等,但如果可以使用某些PHP或Carbon的方法來保持我的代碼簡潔,那將會很不錯。

回答

3

你確定hr_HR(而不是hr-HR!)區域設置安裝在系統上?

假設上的Unix環境下的服務器運行時,你看到了什麼,當你在終端膠帶locale -a

如果你沒有看到它,那麼你應該嘗試先安裝它。 根據你的系統,你可以嘗試:

$ sudo locale-gen hr_HR.UTF-8 
$ sudo dpkg-reconfigure locales 

根據PHP strftime的文檔(碳調用這個函數):

,如果你有安裝在各個區域設置此示例將工作你的系統。

我成功有使用App\Providers\AppServiceProvider引導的方法,這些線路在法國碳翻譯作品:

use Config; 
use Carbon\Carbon; 

use Illuminate\Support\ServiceProvider; 

class AppServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap any application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     setlocale(LC_ALL, Config::get('app.lc_all')); 
     Carbon::setLocale(Config::get('app.locale')); 
    } 

    /** 
    * Register any application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 

用下面的配置設置:

// [...] 
'locale' => env('APP_LOCALE', 'en'), 
'lc_all' => env('APP_LC_ALL', 'en_US.UTF-8'), // Pay attention to the locale name! 
// [...] 

然後使用.ENV文件:

APP_LOCALE = fr 
APP_LC_ALL = fr_FR.UTF-8