Localization Silex双语URL路由

Localization Silex双语URL路由,localization,url-routing,silex,Localization,Url Routing,Silex,我想知道在Silex中实现所需(见下文)的最佳方法是什么 以下是我想要的: 所有URL必须以区域设置(/en/page1,/fr/page1,/en/page2,/fr/page2,…)开头 当用户点击主页时,我将检查浏览器语言并将/en或/fr添加到主页 当在主页中添加/en或/fr时,是否有一种方法可以在Silex中不重定向的情况下做到这一点(我认为重定向主页不是一个好的SEO实践(我在SEO方面的知识非常有限,所以可能我错了)) 谢谢你你可以看看 特别是: $app->mount

我想知道在Silex中实现所需(见下文)的最佳方法是什么

以下是我想要的:

  • 所有URL必须以区域设置(/en/page1,/fr/page1,/en/page2,/fr/page2,…)开头
  • 当用户点击主页时,我将检查浏览器语言并将/en或/fr添加到主页
  • 当在主页中添加/en或/fr时,是否有一种方法可以在Silex中不重定向的情况下做到这一点(我认为重定向主页不是一个好的SEO实践(我在SEO方面的知识非常有限,所以可能我错了))
谢谢你

你可以看看

特别是:

$app->mount('/blog', $blog);
因此,我认为你可以用这个做一些事情,比如:

$app->mount('/{_locale}', $site);

我没有尝试过,但我认为它会起作用,请让我知道:)

对我来说,这是Silex v2.x最简单、最干净的选择:

安装silex本地软件包

composer需要pmax/silex语言环境“^2.0”

将LocalServiceProvidet添加到app.php文件:

$app->register(new Pmaxs\Silex\Locale\Provider\LocaleServiceProvider(), [
    'locale.locales' => ['en', 'ca', 'es'],
    'locale.default_locale' => 'en',
    'locale.resolve_by_host' => false,
    'locale.exclude_routes' => ['^_'],
]);

$app->register(new Silex\Provider\LocaleServiceProvider(), []);
这样,您就不必在端点中添加任何额外的内容,而且所有内容都是默认处理的

有关Silex v1.x的信息,请参阅