codezero / laravel-uri-translator
翻译URI或单个别名。
2.0.0
2024-03-10 12:32 UTC
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.5
This package is auto-updated.
Last update: 2024-09-10 13:33:09 UTC
README
此包为Laravel的Translator
类注册了一个宏。这将允许您翻译单个URI别名,同时忽略参数占位符。
此宏不会翻译参数。这仍然是您代码的责任。
✅ 要求
- PHP >= 8.1
- Laravel >= 10.0
📦 安装
使用Composer安装此包
composer require codezero/laravel-uri-translator
Laravel会自动注册ServiceProvider。
在您的app的lang
文件夹中,为每个您想要进行翻译的区域创建子目录。
然后,在每个这些目录中创建一个routes.php
文件。
lang/
├── en/
│ └── routes.php
└── nl/
└── routes.php
从routes.php
文件返回一个翻译数组。
🚀 使用方法
在注册路由时使用Lang::uri()
宏
Route::get(Lang::uri('hello/world'), [Controller::class, 'index']);
URI宏接受2个额外的参数
- 一个区域,如果您需要翻译到除当前应用区域之外的区域。
- 一个命名空间,如果您翻译文件位于包中。
Lang::uri('hello/world', 'fr', 'my-package');
您还可以使用trans()->uri('hello/world')
代替Lang::uri('hello/world')
。
🔌 示例
使用这些示例翻译
// lang/nl/routes.php return [ 'hello' => 'hallo', 'world' => 'wereld', 'override/hello/world' => 'something/very/different', 'hello/world/{parameter}' => 'uri/with/{parameter}', ];
这些是可能的翻译结果
// Translate every slug individually // Translates to: 'hallo/wereld' Lang::uri('hello/world'); // Keep original slug when missing translation // Translates to: 'hallo/big/wereld' Lang::uri('hello/big/world'); // Translate slugs, but not parameter placeholders // Translates to: 'hallo/{world}' Lang::uri('hello/{world}'); // Translate full URIs if an exact translation exists // Translates to: 'something/very/different' Lang::uri('override/hello/world'); // Translate full URIs if an exact translation exists (with placeholder) // Translates to: 'uri/with/{parameter}' Lang::uri('hello/world/{parameter}');
🚧 测试
composer test
☕️ 致谢
🔒 安全性
如果您发现任何与安全性相关的问题,请通过电子邮件与我联系,而不是使用问题跟踪器。
📑 更新日志
有关此包的所有显著更改的完整列表可以在发布页面上找到。
📜 许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。