狂热/栈局部化

用于检测 URI 局部的栈中间件。

dev-master / 1.0.x-dev 2014-05-17 17:55 UTC

This package is auto-updated.

Last update: 2024-09-24 10:48:44 UTC


README

栈中间件 为您的应用程序提供本地化功能。它将开始寻找 URL 中的区域设置。如果没有找到,它将默认为您提供的区域设置。

没有默认值将导致从用户获取 HTTP_ACCEPT_LANGUAGE 并尝试匹配可用的区域设置。

此中间件可以检测 URI 前缀中指定的语言。例如。

http://mydomain.com/en
http://mydomain.com/fr

区域设置将在 Request getLocale() 方法中可用,并从请求路径信息中移除,以便更容易的路由。

Silex 的示例

<?php

require_once __DIR__.'/../vendor/autoload.php';

use Symfony\Component\HttpFoundation\Request;

$app = new Silex\Application();

// Accessible on /{locale}/
$app->get('/', function (Request $request) {
	// The locale should be set.
	return $request->getLocale();
});

// Accessible on /{locale}/test
$app->get('/test', function (Request $request) {
    // The locale should be set.
	return $request->getLocale().'/test';
});

$locales = ['en', 'fr', 'es'];
$fallback = 'en';
$redirectDefault = true;

$stack = new Stack\Builder();
$stack->push('Frenzy\Localize\StackLocalize', $locales, $fallback, $redirectDefault);
$app = $stack->resolve($app);

$request  = Request::createFromGlobals();
$response = $app->handle($request)->send();

$app->terminate($request, $response);

Laravel 的示例

<?php

$params = [
    'locales' => ['fr', 'en', 'es'],
    'fallback' => 'fr',
    'redirectDefault' => true,
];

App::middleware('Frenzy\Localize\StackLocalize', $params);

// Be sure to set the locale from the request when booting your app.
App::setLocale(Request::getLocale());

待办事项

  • 测试