我在我的项目中使用mcamara/laravel-localization ,而且我遇到了Carbon无法识别区域设置的问题。当我使用
$event->start_time->formatLocalized('%A %d %B %Y')
它始终显示英文格式,即使我得到了#de;当我尝试
时App::getLocale()
显然这是因为碳使用来自操作系统的语言环境,而我的操作系统有“de_DE.utf8”,所以除非我这样做
setlocale(LC_TIME, 'de_DE.utf8')
它没有用。我显然不能这样使用,因为我使用多种语言。
在routes.php(或其他地方)中定义以下内容
if(App::getLocale()=="de")
setlocale(LC_TIME, 'de_DE.utf8');
else if(App::getLocale()=="hr")
setlocale(LC_TIME, 'hr_HR.utf8');
else
setlocale(LC_TIME, 'en_EN.utf8');
因为我在routes.php
中定义了这个'prefix' => LaravelLocalization::setLocale(),
我可以扩展setLocale()
以将LC_TIME
设置为de_DE
或其他任何内容。但要做到这一点,我需要扩展添加'区域'从
'de' => ['name' => 'German','script' => 'Latn', 'native' => 'Deutsch'],
到
'de' => ['regional' => 'de_DE.utf8', 'name' => 'German','script' => 'Latn', 'native' => 'Deutsch'],
我还需要在LaravelLocalization.php中创建一个这样的方法(显然我会扩展该类)
public function getCurrentLocaleRegional()
{
return $this->supportedLocales[ $this->getCurrentLocale() ][ 'regional' ];
}
现在我想知道,哪种方式更好?或者,是否有另一个(更容易)的解决方案来解决这个问题?
我正在使用Ubuntu 15.10以防万一重要
--------- --------- EDIT
对于阅读本文的人来说,选项2已经implemented并以版本1.0.12发布
答案 0 :(得分:0)
您始终可以在lang文件中创建一个键,告诉Carbon如何编写格式。
像:
vertical-align: text-top