codezero/laravel-uri-translator

翻译URI或单个别名。

2.0.0 2024-03-10 12:32 UTC

This package is auto-updated.

Last update: 2024-09-10 13:33:09 UTC


README

GitHub release Laravel License Build Status Code Coverage Code Quality Total Downloads

ko-fi

此包为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个额外的参数

  1. 一个区域,如果您需要翻译到除当前应用区域之外的区域。
  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)。请参阅许可证文件以获取更多信息。