Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony2][SF2]Translation domain
BigPig
post 18.07.2015, 18:07:01
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Hej,

Po raz pierwszy wrzucam translację do projektu i mam z tym drobne problemy.

Polega on na tym, że jak robię to w ten sposób:

$translator->trans('some_translation', array(), 'domain')

To wszystko idzie, a bez podania domeny nie śmiga.

A więc pytanie, jak zarejestrować domenę, żeby nie było potrzeby podawania jej przy wywoływaniu translacji?
Interesuje mnie zainteresowanie paru domen.
Coś w stylu, że rejestrujemy je w config.yml.

Inna sprawa, że pewnego czasu pracowałem nad projektem, który korzystał z translacji na podanych przeze mnie zasadach(czyli bez podawania domeny), ale za cholerę nie mogłem znaleźć gdzie te domeny zostały zarejstrowane.

Ten post edytował BigPig 18.07.2015, 18:07:23
Go to the top of the page
+Quote Post
skowron-line
post 18.07.2015, 18:09:10
Post #2





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


domyslna domena jest messages


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
BigPig
post 18.07.2015, 18:10:43
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Wiem, wyczytałem to gdzieś w necie. Ale jak ją zmienić?

Ewentualnie zostaje jeszcze importowanie innych plików translacji do pliku messages tongue.gif

Ten post edytował BigPig 18.07.2015, 18:11:01
Go to the top of the page
+Quote Post
skowron-line
post 18.07.2015, 18:12:03
Post #4





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Jak masz w roznych plikach to jak sobie to wyobrazasz questionmark.gif (chyba ze w bundlach masz pliki messages)


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
BigPig
post 18.07.2015, 18:31:39
Post #5





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


Wyobrażam to sobie mniej więcej tak:
  1. //app/config/config.yml
  2. translator:
  3. domains:
  4. bleble
  5. hehehe
  6. admin



I po takim załadowaniu pliki translacji są łączone, i nie trzeba podawać parametru domeny przy wywołaniu translacji.

To może inaczej, czy jest jakieś rozwiązanie, które pozwoli mi na wywołanie translacji bez podawania nazwy domeny translacji jako parametru? Pomijamy te opcje:
- zamieszczenie wszystkich translacji w pliki messages
- ustawienie {% trans_default_domain "some_domain" %}
Go to the top of the page
+Quote Post
blahy
post 19.07.2015, 14:43:15
Post #6





Grupa: Zarejestrowani
Postów: 82
Pomógł: 22
Dołączył: 20.07.2010

Ostrzeżenie: (0%)
-----


Chyba nie da sie zmienic, zeby domyslna domena byla inna: https://github.com/symfony/Translation/blob...slator.php#L208
Trzebaby je przekazywac za kazdym razem.

Jezeli po raz pierwszy wrzucasz translacje to polecam jeszcze raz przeczytac dokumentacje translacji w symfony i dokumentacje komponentu translacji.
Domeny sa uzyteczne w takiej formie, Ty chcialbys je usunac poprzez ladowanie wszystkiego do jednej.

Nie ma takiej opcji konfiguracji translatora o jakiej mowisz, ale translator posiada metode addResource: https://github.com/symfony/Translation/blob...slator.php#L129
Zakladajac ze uzywasz plikow yml masz juz zarejestrowany loader 'yml', wiec wystarczy dodawac sciezki z tlumaczeniami.

Zakladajac, ze masz nastepujace pliki translacji:

$ cat app/Resources/translations/messages.en.yml
key: one
i
$ cat app/Resources/sample.yml
key: translatedKey

Po wywolaniu gdzies w template {{ 'key'|trans }} dosaniemy: one.

Teraz wystarczy dodac nasz customowy plik sample.yml poprzez addResource do translatora, np w kontrollerze:

  1. $this->get('translator')->addResource(
  2. 'yml',
  3. $this->container->getParameter('kernel.root_dir').'/Resources/sample.yml',
  4. 'en'
  5. );


Nie podajac domeny pliki zostana dodane do domeny messages, czyli domyslnej.

Oczywiscie, jesli ma to byc robione zawsze to lepiej uzyc compiler pass.
W AppBundle dodajemy pass:
  1. class AppBundle extends Bundle
  2. {
  3. public function build(ContainerBuilder $container)
  4. {
  5. parent::build($container);
  6.  
  7. $container->addCompilerPass(new TranslationCompilerPass());
  8. }
  9. }


i w samym compiler passie dodajemy resource do translatora:
  1. <?php
  2.  
  3. namespace AppBundle\DependencyInjection;
  4.  
  5. use Symfony\Component\DependencyInjection\ContainerBuilder;
  6. use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
  7.  
  8. class TranslationCompilerPass implements CompilerPassInterface
  9. {
  10. public function process(ContainerBuilder $container)
  11. {
  12. $container->getDefinition('translator.default')->addMethodCall('addResource', [
  13. 'yml',
  14. $container->getParameter('kernel.root_dir').'/Resources/sample.yml',
  15. 'en'
  16. ]);
  17. }
  18. }


Wtedy juz bedziemy dostawac z {{ 'key'|trans }} wynik: translatedKey.

Zeby nie ptrzeba bylo dodawac kazdego pliku osobno mozna pomyslec nad wyszukaniem wszystkich plikow w folderze albo dodaniem sobie opcji konfiguracji plikow i ladowanie tutaj wszystkich potrzebnych pod jedna domene.
Go to the top of the page
+Quote Post
skowron-line
post 19.07.2015, 15:17:13
Post #7





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Napisz sobie takie rozwiazanie.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 07:25