luism-s/multilingualslim

为 Slim 微型框架 3 提供多语言支持

1.1.3 2018-09-15 17:37 UTC

This package is auto-updated.

Last update: 2024-09-16 06:02:42 UTC


README

扩展 Slim PHP 微型框架(版本 3),以启用基于语言的路由,即 i18n 和 l10n。

依赖项

安装

通过终端

composer require luism-s/multilingualslim

用法

$container 被用作 Middleware 和 Routes 之间的接口。多语言中间件将以下变量注入到 $container 中:default_languageavailable_languageslanguage。前两个是由开发者设置的变量,最后一个是由中间件自身设置的,表示请求的语言。

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 制作的。

待办事项

开发功能以进行诸如测试默认语言、获取当前语言、比较语言等操作。