luism-s / multilingualslim
为 Slim 微型框架 3 提供多语言支持
1.1.3
2018-09-15 17:37 UTC
Requires
- slim/slim: ~3.10.0
This package is auto-updated.
Last update: 2024-09-16 06:02:42 UTC
README
扩展 Slim PHP 微型框架(版本 3),以启用基于语言的路由,即 i18n 和 l10n。
依赖项
- Slim/Slim (v3)
安装
通过终端
composer require luism-s/multilingualslim
用法
$container 被用作 Middleware 和 Routes 之间的接口。多语言中间件将以下变量注入到 $container 中:default_language、available_languages 和 language。前两个是由开发者设置的变量,最后一个是由中间件自身设置的,表示请求的语言。
use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; require '../vendor/autoload.php'; $default_language = 'pt'; $available_languages = ['pt', 'en']; $app = new \Slim\App(); $container = $app->getContainer(); $app->add( new \MultilingualSlim\LanguageMiddleware($available_languages, $default_language, $container) ); $app->get('/', function (Request $request, Response $response) { // This works with '/', '/pt' and '/en', // and prints 'Hello' in each language. if ($this->language === 'pt') { return $response->write("Olá Mundo"); } elseif($this->language === 'en') { return $response->write("Hello World"); } }); $app->run();
您还可以使用如 php-view 之类的库来渲染模板。例如
$container['renderer'] = new \Slim\Views\PhpRenderer("../views/"); $app->get('/home', function (Request $request, Response $response) { // This works with '/home', '/pt/home' and '/en/home', // and returns the template views/base.php. // It also passes the chosen language as an argument accessible from the chosen template. return $this->renderer->render($response, "base.php", [ "language" => $this->language ]); });
致谢
此项目在很大程度上受到 SimoTod/slim-multilanguage 的影响,后者遵循相同的理念,但是为 Slim 的版本 2 制作的。
待办事项
开发功能以进行诸如测试默认语言、获取当前语言、比较语言等操作。