longman / laravel-multilang
用于集成Laravel 5.x多语言(多地区)功能的包
Requires
- php: ^8.1.0
- ext-mbstring: *
- illuminate/console: ^10.0
- illuminate/database: ^10.0
- illuminate/http: ^10.0
- illuminate/support: ^10.0
- symfony/translation: ^6.0
- symfony/yaml: ^6.0
Requires (Dev)
- longman/php-code-style: ^10.0
- mockery/mockery: ~1.3
- orchestra/testbench: ^8.5
- phpunit/phpunit: ~10.0
- dev-master
- 5.0.1
- 5.0.0
- 4.0.0
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.0.1
- 2.0.0
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- 1.2.11
- 1.2.10
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.10
- 1.1.9
- 1.1.8
- 1.1.7
- 1.1.6
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.9
- 1.0.8
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.2.0
- 0.1.0
- dev-dependabot/composer/guzzlehttp/psr7-2.5.0
- dev-dependabot/composer/symfony/http-kernel-6.2.6
- dev-fix
- dev-dev
This package is auto-updated.
Last update: 2024-09-02 10:32:21 UTC
README
MultiLang包的这个版本需要最低PHP 7.0。对于旧版本的PHP,请使用MultiLang 1.x
这是一个非常有用的包,用于在Laravel 5.x中集成多语言(多地区)功能。它包含一个ServiceProvider用于注册多语言和Middleware,以自动修改如http://site.com/en/your-routes
的路由。
此包使用数据库来存储翻译(在生产环境中缓存数据以提高性能)。此外,包会自动在数据库中添加缺失的键(仅在本地环境中)。
目录
安装
通过 Composer 安装此包。
编辑项目的 composer.json
文件,以要求 longman/laravel-multilang
创建 composer.json 文件
{ "name": "yourproject/yourproject", "type": "project", "require": { "longman/laravel-multilang": "~2.0" } }
然后运行 composer update
或者 在命令行中运行命令
composer require longman/laravel-multilang
在Laravel中,ServiceProvider和facade将自动注册。
使用发布命令将包配置复制到本地配置
php artisan vendor:publish --provider="Longman\LaravelMultiLang\MultiLangServiceProvider"
运行多语言迁移命令后
php artisan multilang:migration
它将在数据库/migrations文件夹中创建多语言迁移文件。之后,您可以运行
php artisan migrate
如果您想根据URL(如http://site.com/en/your-routes
)自动更改地区,必须在app/Http/Kernel.php中添加中间件
建议在CheckForMaintenanceMode中间件之后添加multilang
protected $middleware = [ \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Longman\LaravelMultiLang\Middleware\MultiLang::class, ];
在您的RoutesServiceProvider中进行修改
MultiLang::routeGroup(function($router) { require app_path('Http/routes.php'); });
或者在app/Http/routes.php文件中添加multilang组
MultiLang::routeGroup(function($router) { // your routes and route groups here });
或者,如果您只想翻译字符串而不自动解析地区和重定向,您可以在应用程序中手动设置地区,如下所示
App::setLocale('en');
用法
翻译
在应用程序的任何地方,您都可以使用 t()
辅助函数,如下所示
$string = t('Your translatable string');
您可以使用标记来动态文本并传递任何数据,如下所示
$string = t('The :attribute must be a date after :date.', ['attribute' => 'Start Date', 'date' => '7 April 1986']);
这将返回 开始日期必须是在1986年4月7日之后的日期。
Blade模板
在blade模板中,您可以使用@t()
标记,如下所示
@t('Your translatable string')
它等同于 {{ t('可翻译的字符串') }}
URL生成
此外,您还可以使用 lang_url()
辅助函数自动将当前语言标记附加到URL中。
$url = lang_url('users'); // which returns /en/users depending on your language (locale)
您可以强制设置地区并获取当前URL的本地化URL,例如。
$url = lang_url('users', [], null, 'ka'); // which returns /ka/users ignoring current locale
或者
$url = lang_url('en/users', [], null, 'ka'); // also returns /ka/users
您还可以通过lang_route()
函数使用命名路由
$url = lang_route('users'); // which returns en.users depending on your language (locale)
Request::locale()
始终返回当前地区。
注意:文本将在触发Laravel的LocaleUpdated
事件后选择。因此,您应该使用MultiLang中间件或手动在应用程序中设置地区。
文本作用域
如果您想按某些作用域分组翻译,在包中可以定义作用域。例如,要定义应用程序中的admin
作用域,您应该在设置地区之前调用
app('multilang')->setScope('admin');
默认作用域是 global
注意:默认作用域是global
导入/导出文本
为了与源代码(git/svn)版本化文本并轻松管理,可以导入yml文件中的文本并导出为文件。
yml文件格式是
- key: 'authorization' texts: en: 'Authorization' ge: 'ავტორიზაცია' - key: 'registration' texts: en: 'Registration' ge: 'რეგისტრაცია'
运行命令以获取可能的选项和更多信息
php artisan help multilang:import
php artisan help multilang:export
待办事项
编写更多测试
故障排除
如果您喜欢走在科技前沿,请将您发现的任何错误报告到 laravel-multilang issues 页面。
贡献
欢迎提交合并请求。有关信息,请参阅 CONTRIBUTING.md。
许可
请参阅此仓库中包含的 LICENSE,以获取完整的MIT许可副本,该项目基于此许可。
鸣谢
完整的致谢名单请见 CREDITS