zymawy / localizer
laravel 5.4 中轻松更改默认语言环境的包
Requires
- php: >=5.6.4
- consoletvs/identify: 1.*
- laravel/framework: 5.*|^6.0|^7.0
This package is auto-updated.
Last update: 2024-09-29 05:55:36 UTC
README
Localizer
什么是 Localizer?
Localizer 是一个 Laravel 扩展包,用于在 Laravel 项目中轻松更改语言环境。
使用起来非常简单,一旦安装,只需将路由传递给 Localizer 中间件,即可更改应用程序的语言环境。
主要功能
- 根据用户浏览器配置自动更改应用程序语言环境
- 从代码“es”或“en”等获取语言,如“西班牙语”或“英语”。
- 在用户数据库表中存储用户的语言偏好
- 限制用户设置没有翻译的语言
入门指南
1. 使用 composer 安装
运行以下命令
composer require aitor24/localizer
2. 注册服务提供者
在 config/app.php
中注册 Localizer 服务提供者。
Aitor24\Localizer\LocalizerServiceProvider::class,
记得添加别名以便舒适地使用 Localizer 功能。
'Localizer' => Aitor24\Localizer\Facades\LocalizerFacade::class,
3. 发布配置
将发布配置文件。
运行以下命令
php artisan vendor:publish --tag=localizer_config
3.1 发布语言
您还可以发布您自己的语言以修改或添加。
php artisan vendor:publish --tag=localizer_languages
4. 迁移
发布迁移
php artisan vendor:publish --tag=localizer_migrations
运行以下命令
php artisan migrate
5. 配置默认值
默认值也可以在 config/localizer.php
中修改。
键
- routes: 使路由可用。
- carbon: 设置碳翻译语言。
- homeRoute: 使主页路由可用。
- set_auto_lang: 根据用户的浏览器配置自动设置语言
- default_lang: 如果 set_auto_lang 为 false 或用户尝试设置不允许的语言,则为默认语言
- prefix: 设置语言环境的路由 URI 前缀
- allowed_langs: 所有的允许语言
- middleware: 设置语言环境默认中间件
使用 Localizer
中间件
您想要设置语言的任何路由都应该位于 Localizer 中间件下,以便在每次请求时设置应用程序的语言环境。
Route::group(['middleware' => 'localizer'], function () { // Here your routes });
更改语言
- 通过带有返回主页的 URL: /lang/set/{locale}/home
- 通过带有返回上一页的 URL: /lang/set/{locale}
提示: /lang 前缀将在配置中更改
示例语言视图
以下是选择和设置语言的视图的少量代码片段
@foreach (Localizer::allowedLanguages() as $code => $value) <a href="{{ Localizer::setRouteHome($code) }}">{{ $value }}</a> @endforeach
API
Localizer::allowedLanguages()
返回一个数组,包含 [$code => $language],用于配置中的所有允许语言。
Localizer::addNames($codes)
从仅包含 $codes 的数组中获取一个数组如 [$code => $language]。
Localizer::addCodes($lang)
从仅包含 $langs 的数组中获取一个数组如 [$language => $code]。
Localizer::setRoute($code)
用于模态或下拉菜单
返回设置语言并返回的 URL。
如果您更喜欢直接使用 route() 函数,可以使用以下代码
{{ route('localizer::setLocale', ['locale' => $code]) }}
Localizer::setRouteHome($code)
用于语言选择视图
返回设置语言并返回 '/' url('/') 的 URL。
如果您更喜欢直接使用 route() 函数,可以使用以下代码
{{ route('localizer::setLocaleHome', ['locale' => $code]) }}
Localizer::getLanguage($code = App::getLocale())
如果指定了 $code,则返回 $code 的语言名称;如果没有,则返回当前设置的语言。
提示: 使用 App::getLocale() 获取当前语言环境