nascent-africa / laravel-locale
v1.0
2020-11-08 12:22 UTC
Requires
- php: ^7.1|^8.0
- illuminate/support: ^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^6.3
- orchestra/testbench-dusk: ^6.2
- phpunit/phpunit: ^9.4
README
Laravel locale 是构建 Laravel 翻译系统的一个起点。
安装
安装 Jetstream
您可以使用 Composer 将 Laravel Locale 安装到新的 Laravel 项目中
composer require nascent-africa/laravel-locale
配置
安装后,将 NascentAfrica\LaravelLocale\Http\Middleware\LocaleMiddleware
添加到 kernel.php 文件中的 web
路由组。
...
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
...
NascentAfrica\LaravelLocale\Http\Middleware\LocaleMiddleware::class
],
...
];
默认情况下,此包支持 en
和 fr
语言的本地化,但您可以通过在服务提供器中注册首选的本地化选项来重置此设置
namespace App\Providers; use Illuminate\Support\ServiceProvider; use NascentAfrica\LaravelLocale\LaravelLocaleFacade; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { LaravelLocaleFacade::setLocales([ 'en', 'fr' ]); } }
使用
此包注册了一个 /locales/{local}
路径,允许您通过简单的 GET 请求传递作为参数的您希望切换到的本地化。
<a href="{{ url('/locales/en') }}">{{ __('English') }}</a> or <a href="{{ route('locales', 'en') }}">{{ __('English') }}</a>
Vue 辅助工具
此包实现了 [Daiyrbek Artelov](Daiyrbek Artelov) 在其 如何在 JS (vue) 文件中使用 Laravel 翻译? 中的技术,以使用 __(...)
函数在 VueJs 文件中启用 Laravel 翻译。
您可以通过以下步骤进行设置
- 导入模块并与 Vue 一起使用。
import Vue from 'vue' Vue.use(require('../../vendor/nascent-africa/laravel-locale/resources/js/locale'))
- 将本地脚本添加到您的布局 blade 视图中。
<!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head>...</head> <body> <script> window._locale = '{{ app()->getLocale() }}' window._translations = {!! cache('translations') !!} </script> <!-- or use the blade component --> <x-laravel-locale-scripts /> </body> </html>
现在您可以在 Vue 文件中使用 __(..)
函数,如下所示
<template> <div class="card"> <div class="card-header">{{ __('Example Component') }}</div> <div class="card-body"> {{ __("I'm an example component.") }} </div> </div> </template> <script> export default { mounted() { console.log(this.__('Component mounted.')) } } </script>
测试
使用以下命令运行测试
vendor/bin/phpunit
许可
Laravel Locale 是开源软件,许可协议为 MIT 许可。