Я пытаюсь перевести свою платформу. Сначала я сделал простой макет, чтобы попробовать трансфузию. Когда я буду уверен в этом, я сделаю это для настоящего дела. вы можете увидеть контроллера, index.html.twig, config.yml, messages.es и messages.en:Перевод не работает Symfony
....
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Translation\Translator;
class DummyController extends Controller
{
/**
* @Route("/prova",name="role_public_dummy")
* @Template()
*/
public function indexAction(Request $request)
{
//$locale = $request->getLocale();
$request=$this->getRequest();
$locale = $request->getPreferredLanguage();//catching browser language
$request->setLocale($locale);
$this->get('session')->set('_locale', $locale);
return array();
}
}
index.html.twig
{% trans %}index.1{% endtrans %}
config.yml
framework:
#esi: ~
translator: { fallback: "%locale%" }
secret: "%secret%"
router:
resource: "%kernel.root_dir%/config/routing.yml"
strict_requirements: ~
form: ~
csrf_protection: ~
validation: { enable_annotations: true }
templating:
engines: ['twig']
#assets_version: SomeVersionScheme
default_locale: "%locale%"
trusted_hosts: ~
trusted_proxies: ~
session:
# handler_id set to null will use default session handler from php.ini
handler_id: ~
fragments: ~
http_method_override: true
messages.es
index.1: "CASA"
messages.en
index.1: "HOME"
Итак, я не понимаю, почему symfony всегда использует локаль «en», когда она использует функцию «trans». Это похоже на то, что он не улавливает локаль сессии.
ОК, но так, как бы код был? Я имею в виду, как я могу установить языковой стандарт в транс-службе? Я читал документ symfony, и я не нашел пути. –
Проверьте http://api.symfony.com/2.3/Symfony/Component/Translation/Translator.html метод setLocale –