这个问题很老,但现在您可以使用Silex-locale
(https://github.com/pmaxs/silex-locale)让您的路线像这样工作:
/some/route
/en/some/route
/fr/some/route
etc.
阅读文档以根据您的 Silex 版本使用它,但这里是如何使用它:
1/ 加载提供者
$app->register(new Pmaxs\Silex\Locale\Provider\LocaleServiceProvider(), [
'locale.locales' => ['en', 'ru', 'es'], // the locales you will use in your website
'locale.default_locale' => 'en', // the default locale
'locale.resolve_by_host' => false,
'locale.exclude_routes' => ['^_'],
]);
2/ 用法
// 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的方法,希望对今天遇到这个问题的人有帮助!