Skip to content

Commit 04c359e

Browse files
committed
[Translation][Locale] Translate into Portuguese
1 parent 41e742d commit 04c359e

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed

translation/locale.rst

Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
.. index::
2+
single: Tradução; Localidade
3+
4+
Como Trabalhar com a Localidade do Usuário
5+
==========================================
6+
7+
A localidade do usuário atual é armazenada na requisição e está acessível
8+
através do objeto ``Request``::
9+
10+
use Symfony\Component\HttpFoundation\Request;
11+
12+
public function indexAction(Request $request)
13+
{
14+
$locale = $request->getLocale();
15+
}
16+
17+
Para definir a localidade do usuário, você pode desejar criar um ouvinte de evento personalizado
18+
de modo que ela será definida antes que quaisquer outras partes do sistema (ou seja, o tradutor)
19+
necessitem dela::
20+
21+
public function onKernelRequest(GetResponseEvent $event)
22+
{
23+
$request = $event->getRequest();
24+
25+
// some logic to determine the $locale
26+
$request->setLocale($locale);
27+
}
28+
29+
Leia :doc:`/session/locale_sticky_session` para mais informações sobre como tornar a
30+
localidade do usuário disponível durante toda a sua sessão.
31+
32+
.. note::
33+
34+
Definir a localidade usando ``$request->setLocale()`` no controlador é
35+
tarde demais para afetar o tradutor. Defina a localidade através de um ouvinte
36+
(como acima), da URL (ver abaixo) ou chamando ``setLocale()`` diretamente no
37+
serviço ``translator``.
38+
39+
Veja a seção :ref:`translation-locale-url` abaixo sobre a definição da
40+
localidade via roteamento.
41+
42+
.. _translation-locale-url:
43+
44+
A Localidade e a URL
45+
--------------------
46+
47+
Uma vez que você pode armazenar a localidade do usuário na sessão, pode ser tentador
48+
usar a mesma URL para exibir um recurso em diferentes idiomas com base na
49+
localidade do usuário. Por exemplo, ``http://www.example.com/contact`` poderia mostrar
50+
conteúdo em Inglês para um usuário e Francês para outro usuário. Infelizmente,
51+
isso viola uma regra fundamental da Web: que um determinada URL retorna o mesmo
52+
recurso, independentemente do usuário. Para dificultar ainda mais o problema, que
53+
versão do conteúdo seria indexada pelas ferramentas de busca?
54+
55+
A melhor política é incluir a localidade na URL. Isso é totalmente suportado
56+
pelo sistema de roteamento usando o parâmetro especial ``_locale``:
57+
58+
.. configuration-block::
59+
60+
.. code-block:: yaml
61+
62+
# app/config/routing.yml
63+
contact:
64+
path: /{_locale}/contact
65+
defaults: { _controller: AppBundle:Contact:index }
66+
requirements:
67+
_locale: en|fr|de
68+
69+
.. code-block:: xml
70+
71+
<!-- app/config/routing.xml -->
72+
<?xml version="1.0" encoding="UTF-8" ?>
73+
<routes xmlns="http://symfony.com/schema/routing"
74+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
75+
xsi:schemaLocation="http://symfony.com/schema/routing
76+
http://symfony.com/schema/routing/routing-1.0.xsd">
77+
78+
<route id="contact" path="/{_locale}/contact">
79+
<default key="_controller">AppBundle:Contact:index</default>
80+
<requirement key="_locale">en|fr|de</requirement>
81+
</route>
82+
</routes>
83+
84+
.. code-block:: php
85+
86+
// app/config/routing.php
87+
use Symfony\Component\Routing\RouteCollection;
88+
use Symfony\Component\Routing\Route;
89+
90+
$collection = new RouteCollection();
91+
$collection->add('contact', new Route(
92+
'/{_locale}/contact',
93+
array(
94+
'_controller' => 'AppBundle:Contact:index',
95+
),
96+
array(
97+
'_locale' => 'en|fr|de',
98+
)
99+
));
100+
101+
return $collection;
102+
103+
Ao usar o parâmetro especial ``_locale`` em uma rota, a localidade correspondida
104+
é *automaticamente definida no Request* e pode ser recuperada através do método
105+
:method:`Symfony\\Component\\HttpFoundation\\Request::getLocale`. Em
106+
outras palavras, se um usuário visita a URI ``/fr/contact``, a localidade ``fr`` vai
107+
ser automaticamente definida como a localidade da requisição atual.
108+
109+
Agora você pode usar o local para criar rotas para outras páginas traduzidas em seu
110+
Symfony.
111+
112+
.. tip::
113+
114+
Leia :doc:`/routing/service_container_parameters` para aprender como evitar
115+
codificar o ``_locale`` em todas as suas rotas.
116+
117+
.. index::
118+
single: Traduções; Localização padrão e fallback
119+
120+
.. _translation-default-locale:
121+
122+
Definindo uma localidade padrão
123+
-------------------------------
124+
125+
E se a localidade do usuário não foi determinada? Você pode garantir que uma localidade
126+
será definida em cada requisição do usuário através da definição de um ``default_locale`` para
127+
o framework:
128+
129+
.. configuration-block::
130+
131+
.. code-block:: yaml
132+
133+
# app/config/config.yml
134+
framework:
135+
default_locale: en
136+
137+
.. code-block:: xml
138+
139+
<!-- app/config/config.xml -->
140+
<?xml version="1.0" encoding="UTF-8" ?>
141+
<container xmlns="http://symfony.com/schema/dic/services"
142+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
143+
xmlns:framework="http://symfony.com/schema/dic/symfony"
144+
xsi:schemaLocation="http://symfony.com/schema/dic/services
145+
http://symfony.com/schema/dic/services/services-1.0.xsd
146+
http://symfony.com/schema/dic/symfony
147+
http://symfony.com/schema/dic/symfony/symfony-1.0.xsd">
148+
149+
<framework:config default-locale="en" />
150+
</container>
151+
152+
.. code-block:: php
153+
154+
// app/config/config.php
155+
$container->loadFromExtension('framework', array(
156+
'default_locale' => 'en',
157+
));

0 commit comments

Comments
 (0)