pmaxs / silex-locale
Silex 服务提供者,通过 URL 调整地区/语言
2.1.0
2016-10-14 21:05 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- symfony/var-dumper: ^3.1
This package is not auto-updated.
Last update: 2024-09-14 18:58:44 UTC
README
Silex 服务提供者,通过 URL 调整地区/语言。
安装
composer require pmaxs/silex-locale "^1.0" # for silex v1.x
composer require pmaxs/silex-locale "^2.0" # for silex v2.x
选项
- locale.locales - 可用地区
- locale.default_locale - 默认地区
- locale.resolve_by_host - 从主机名解析地区
- locale.exclude_routes - 应该排除的路线(服务路线)
URLs
- locale.resolve_by_host = 0
- 默认地区: scheme://host/...
- 非默认地区: scheme://host/{{locale}}/...
- locale.resolve_by_host = 1
- 默认地区: scheme://host/...
- 非默认地区: scheme://{{locale}}.host/...
加载提供者
silex v1.x
$app->register(new Pmaxs\Silex\Locale\Provider\LocaleServiceProvider(), [ 'locale.locales' => ['en', 'ru', 'es'], 'locale.default_locale' => 'en', 'locale.resolve_by_host' => false, 'locale.exclude_routes' => ['^_'], ]);
silex v2.x
$app->register(new Pmaxs\Silex\Locale\Provider\LocaleServiceProvider(), [ 'locale.locales' => ['en', 'ru', 'es'], 'locale.default_locale' => 'en', 'locale.resolve_by_host' => false, 'locale.exclude_routes' => ['^_'], ]); $app->register(new Silex\Provider\LocaleServiceProvider(), [ ]);
使用
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
require '../vendor/autoload.php';
$app = new \Silex\Application();
$app->register(new \Silex\Provider\LocaleServiceProvider());
$app->register(new \Silex\Provider\TranslationServiceProvider());
$app->register(new \Pmaxs\Silex\Locale\Provider\LocaleServiceProvider(), [
'locale.locales' => ['en', 'ru', 'es'],
'locale.default_locale' => 'en',
'locale.resolve_by_host' => false,
'locale.exclude_routes' => ['^_']
]);
// will be accessible by urls `/`, `/en/`, `/ru/`, `/es/`
$app->get('/', function (Request $request) use ($app) {
return new Response('index ' . $request->getLocale());
})->bind('index');
// will be accessible by urls `/test/123`, `/en/test/123`, `/ru/test/123`, `/es/test/123`
$app->get('/test/{var}', function(Request $request) use ($app) {
return new Response('test ' . $request->getLocale() . ' ' . $request->get('var'));
})->bind('test');
URL 生成
- 索引 URL
- 当前地区
- php:
$app['locale.url_generator']->getIndexUrl()
- twig:
locale_get_index_url()
- php:
- 任何地区
- php:
$app['locale.url_generator']->getIndexUrlForLocale('es')
- twig:
locale_get_index_url_for_locale('es')
- php:
- 当前地区
- 其他 URL
- 当前地区
- php: 标准的 Silex URL 生成机制
$app['url_generator']->generate(...)
- twig: 标准的 Twig URL 生成机制
path(...)
- php: 标准的 Silex URL 生成机制
- 任何地区
- php:
$app['locale.url_generator']->generate('es', $name, $parameters = array(), $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
- twig:
locale_generate('es', $name, $parameters = array(), $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
- php:
- 当前地区