lase-peco / localization
一个简单的本地化库
Requires
- php: >=7.4
- ext-intl: *
- laravel/framework: ^8.0||^9.0
Requires (Dev)
- orchestra/testbench: ^5.0|^6.0|^7.0
- phpunit/phpunit: ^9.4
README
这是一个简单的本地化库。
注释
整个包深受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)。有关更多信息,请参阅许可证文件