我终于找到了使用
pmaxs/silex-locale(https://github.com/pmaxs/silex-
locale)做我想要的解决方案。
就像我在问题中说的那样,我已经在翻译时使用了它,但是我并没有使用“ Url generation” …所以这里是使用方法的概述(如果您使用Silex
v1,请阅读文档。X):
1 /加载提供者
$app->register(new PmaxsSilexLocaleProviderLocaleServiceProvider(), [ 'locale.locales' => ['en', 'fr'], //I want to translate my site in English and French 'locale.default_locale' => 'en', // By default, the locale is "en" 'locale.resolve_by_host' => false, 'locale.exclude_routes' => ['^_']]);$app->register(new SilexProviderLocaleServiceProvider());
2 /用法
这是我的家庭路线控制器:
// this page is accessible by urls '/', '/fr/' or '/en/'$app->match('/', function (Request $request) use ($app) { // my pre return $app['twig']->render('home.html.twig');})->bind('home');如您所见,
{_locale}我的路由中没有变量,但是仍然可以使用它来更改页面的语言。3 /网址生成器
现在,这是我如何更改语言的方法:
{% set locale_list = ["en", "fr"] %} // the list of all langage in my website{% set current_locale = global.request.getLocale() %} // the current langage of my page<li id="drop-langue"> // I display the current langage <span id="current-lg">{{ current_locale|upper }}</span> <div > <div id="list_langue"> {% for locale in locale_list %} {% if locale != current_locale %} // I create one link to change the langage according to all the langage I want, minus the current langage <a href="{{ locale_generate(locale , global.request.get('_route')) }}" > <span>{{ locale|upper }}</span> </a> {% endif %} {% endfor %} </div> </div> </li>我正在使用“网址生成器”,它的工作方式如下:(
locale_generate('es', $name, $parameters = array(),$referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)文档中有更多详细信息)。这样,当我进入我的网站时,我的英语是“ clean Url”(默认语言环境)
/。然后,单击
FR我的url
/fr/并使用新的选择菜单将我的内容翻译成法语(current-langue = FR,然后我可以选择“ EN”)。



