使用Laravellocalization的碳没有使用正确的区域设置

时间:2015-11-25 14:59:23

标签: php laravel laravel-5.1 php-carbon laravel-localization

我在我的项目中使用mcamara/laravel-localization ,而且我遇到了Carbon无法识别区域设置的问题。当我使用

$event->start_time->formatLocalized('%A %d %B %Y')

它始终显示英文格式,即使我得到了#de;当我尝试

App::getLocale()

显然这是因为碳使用来自操作系统的语言环境,而我的操作系统有“de_DE.utf8”,所以除非我这样做

setlocale(LC_TIME, 'de_DE.utf8')

它没有用。我显然不能这样使用,因为我使用多种语言。

  • 选项1(简单易行,但有效):

在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');
  • 选项2(冗长且可能更好的解决方案?感觉正确的解决方案)

因为我在routes.php

中定义了这个
'prefix' => LaravelLocalization::setLocale(),

我可以扩展setLocale()以将LC_TIME设置为de_DE或其他任何内容。但要做到这一点,我需要扩展添加'区域'从

配置/ laravellocalization.php
'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发布

1 个答案:

答案 0 :(得分:0)

您始终可以在lang文件中创建一个键,告诉Carbon如何编写格式。

像: vertical-align: text-top