lase-peco/localization

一个简单的本地化库

1.2 2022-06-29 13:36 UTC

This package is auto-updated.

Last update: 2024-09-29 06:02:59 UTC


README

Latest Version on Packagist Total Downloads

这是一个简单的本地化库。

注释

整个包深受mcamara/laravel-localization的启发,我们希望有一个更简单的东西,支持PHP IntlDateFormatter,因此我们制作了这个包。

安装

您可以通过composer安装此包

composer require lase-peco/localization

然后在您的Web内核文件app/Http/Kernel.php中的web数组$middlewareGroups中,在数组末尾添加以下行

'web' => [
     // Other middlewares
     //
     \LasePeco\Localization\Http\Middleware\Localization::class,
],

然后使用以下命令发布配置文件localization.php以定义您的应用程序语言

php artisan  vendor:publish --provider="LasePeco\Localization\LocalizationServiceProvider"

用法

获取当前语言

返回当前语言字符串"en"

Localization::getCurrentLocale() 

获取当前语言名称

返回当前语言名称字符串"English"

Localization::getCurrentLocaleName() 

获取当前语言本地名称

返回当前语言本地名称字符串"Deutsch"

Localization::getCurrentLocaleNativeName() 

获取当前区域语言

返回当前区域语言字符串"en_GB"

Localization::getCurrentLocaleRegional()

获取支持的语言键

返回您的应用程序中支持的语言数组

Localization::getSupportedLanguagesKeys() 
//return
[
  0 => "ar"
  1 => "en"
  2 => "de"
]

获取支持的语言

返回您的应用程序支持的语言关联数组

Localization::getSupportedLocales()
//return
[
  "en" => [
    "direction" => "ltr"
    "regional" => "en_GB"
    "name" => "English"
    "native" => "English"
  ]
  "de" => [
    "direction" => "ltr"
    "regional" => "de_DE"
    "name" => "German"
    "native" => "Deutsch"
  ]
]

设置应用程序语言

要设置应用程序语言,请使用提供的路由'locale',并将选定的语言作为参数

route('locale', [$key]) // $key = "en" or "de" or ...

或者向/local/{$local}发起GET请求,这将设置应用程序语言为所选语言。

时间格式

Localization::formatDate($date)返回一个按本地语言格式化的日期字符串

示例

$model->created_at->intlDateFormat();
// or
Localization::formatDate($model->created_at);
//return
'Sep 14, 2021'   // 'en' 
'14.09.2021'     // 'de'
'14 sept. 2021'  // 'fn'
'١٤‏/٠٩‏/٢٠٢١'    // 'ar'

日期格式

Localization::formatTime($time)返回一个按本地语言格式化的时间字符串

示例

$model->created_at->intlTimeFormat();
// or
Localization::formatTime($model->created_at);
//return
'1:27 PM'  // 'en' 
'13:27'    // 'de'
'١:٢٧ م'   // 'ar'

日期时间格式

Localization::formatDateTime($date_time)返回一个按本地语言格式化的日期和时间字符串

示例

$model->created_at->intlDateTimeFormat();
// or
Localization::formatDateTime($model->created_at);
// return
'Sep 14, 2021, 1:27 PM'  // 'en' 
'14.09.2021, 13:27'      // 'de'
'14 sept. 2021, 13:27'   // 'fr'
'١٤‏/٠٩‏/٢٠٢١, ١:٢٧ م'    // 'ar'

旗帜

Localization::getCurrentLocaleFlag()返回表示svg旗帜的HTML字符串。Localization::getSupportedLocalesFlags()返回一个数组,每个元素都包含表示svg旗帜的HTML字符串。

旗帜设置为占满其父标签的完整高度和宽度。

使用tailwindcss的示例!

<div class="inline-block h-4 w-auto mr-2">{!! Localization::getCurrentLocaleFlag() !!}</div>{{Localization::getCurrentLocaleNativeName()}}
@foreach(Localization::getSupportedLocales() as $key => $locale)
    <a href="{{ route('locale', [$key]) }}"
       class="block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100"
       role="menuitem"><span class="flex items-center"><span class="inline-block h-4 w-auto mr-2">{!! Localization::getSupportedLocalesFlags()[$key] !!}</span>{{$locale['native']}}</span></a>
@endforeach

测试

composer test

贡献

有关详细信息,请参阅CONTRIBUTING

安全

如果您发现任何安全问题,请通过电子邮件a.dabak@lase-peco.com联系,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件