aitor24 / localizer
laravel 5.4 中轻松更改默认语言区域的包
Requires
- php: >=5.6.4
- consoletvs/identify: 1.*
- laravel/framework: ^5.4
This package is not auto-updated.
Last update: 2024-09-14 20:04:08 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: 设置 carbon 翻译器语言。
- homeRoute: 使主页路由可用。
- set_auto_lang: 根据用户浏览器配置自动设置语言
- default_lang: 如果 set_auto_lang 为假或用户试图设置不允许的语言,则为默认语言
- 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。
如果您更喜欢直接使用 route() 函数,您可以使用以下代码
{{ route('localizer::setLocaleHome', ['locale' => $code]) }}
Localizer::getLanguage($code = App::getLocale())
如果指定了 $code,则返回 $code 的语言名称,如果没有指定,则返回当前设置的语言。
提示: 使用 App::getLocale() 获取当前区域