@@ -42,6 +42,158 @@ protected function deleteTmpDir()
42
42
$ fs ->remove ($ dir );
43
43
}
44
44
45
+ /**
46
+ * @group legacy
47
+ * @expectedDeprecation Method Symfony\Bundle\FrameworkBundle\Translation\Translator::__construct() takes the default locale as 3rd argument since version 3.3. Not passing it is deprecated and will trigger an error in 4.0.
48
+ */
49
+ public function testTransWithoutCachingOmittingLocale ()
50
+ {
51
+ $ translator = $ this ->getTranslator ($ this ->getLoader (), array (), 'loader ' , '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , null );
52
+ $ translator ->setLocale ('fr ' );
53
+ $ translator ->setFallbackLocales (array ('en ' , 'es ' , 'pt-PT ' , 'pt_BR ' , 'fr.UTF-8 ' , 'sr@latin ' ));
54
+
55
+ $ this ->assertEquals ('foo (FR) ' , $ translator ->trans ('foo ' ));
56
+ $ this ->assertEquals ('bar (EN) ' , $ translator ->trans ('bar ' ));
57
+ $ this ->assertEquals ('foobar (ES) ' , $ translator ->trans ('foobar ' ));
58
+ $ this ->assertEquals ('choice 0 (EN) ' , $ translator ->transChoice ('choice ' , 0 ));
59
+ $ this ->assertEquals ('no translation ' , $ translator ->trans ('no translation ' ));
60
+ $ this ->assertEquals ('foobarfoo (PT-PT) ' , $ translator ->trans ('foobarfoo ' ));
61
+ $ this ->assertEquals ('other choice 1 (PT-BR) ' , $ translator ->transChoice ('other choice ' , 1 ));
62
+ $ this ->assertEquals ('foobarbaz (fr.UTF-8) ' , $ translator ->trans ('foobarbaz ' ));
63
+ $ this ->assertEquals ('foobarbax (sr@latin) ' , $ translator ->trans ('foobarbax ' ));
64
+ }
65
+
66
+ /**
67
+ * @group legacy
68
+ * @expectedDeprecation Method Symfony\Bundle\FrameworkBundle\Translation\Translator::__construct() takes the default locale as 3rd argument since version 3.3. Not passing it is deprecated and will trigger an error in 4.0.
69
+ */
70
+ public function testTransWithCachingOmittingLocale ()
71
+ {
72
+ // prime the cache
73
+ $ translator = $ this ->getTranslator ($ this ->getLoader (), array ('cache_dir ' => $ this ->tmpDir ), 'loader ' , '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , null );
74
+ $ translator ->setLocale ('fr ' );
75
+ $ translator ->setFallbackLocales (array ('en ' , 'es ' , 'pt-PT ' , 'pt_BR ' , 'fr.UTF-8 ' , 'sr@latin ' ));
76
+
77
+ $ this ->assertEquals ('foo (FR) ' , $ translator ->trans ('foo ' ));
78
+ $ this ->assertEquals ('bar (EN) ' , $ translator ->trans ('bar ' ));
79
+ $ this ->assertEquals ('foobar (ES) ' , $ translator ->trans ('foobar ' ));
80
+ $ this ->assertEquals ('choice 0 (EN) ' , $ translator ->transChoice ('choice ' , 0 ));
81
+ $ this ->assertEquals ('no translation ' , $ translator ->trans ('no translation ' ));
82
+ $ this ->assertEquals ('foobarfoo (PT-PT) ' , $ translator ->trans ('foobarfoo ' ));
83
+ $ this ->assertEquals ('other choice 1 (PT-BR) ' , $ translator ->transChoice ('other choice ' , 1 ));
84
+ $ this ->assertEquals ('foobarbaz (fr.UTF-8) ' , $ translator ->trans ('foobarbaz ' ));
85
+ $ this ->assertEquals ('foobarbax (sr@latin) ' , $ translator ->trans ('foobarbax ' ));
86
+
87
+ // do it another time as the cache is primed now
88
+ $ loader = $ this ->getMockBuilder ('Symfony\Component\Translation\Loader\LoaderInterface ' )->getMock ();
89
+ $ loader ->expects ($ this ->never ())->method ('load ' );
90
+
91
+ $ translator = $ this ->getTranslator ($ loader , array ('cache_dir ' => $ this ->tmpDir ), 'loader ' , '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , null );
92
+ $ translator ->setLocale ('fr ' );
93
+ $ translator ->setFallbackLocales (array ('en ' , 'es ' , 'pt-PT ' , 'pt_BR ' , 'fr.UTF-8 ' , 'sr@latin ' ));
94
+
95
+ $ this ->assertEquals ('foo (FR) ' , $ translator ->trans ('foo ' ));
96
+ $ this ->assertEquals ('bar (EN) ' , $ translator ->trans ('bar ' ));
97
+ $ this ->assertEquals ('foobar (ES) ' , $ translator ->trans ('foobar ' ));
98
+ $ this ->assertEquals ('choice 0 (EN) ' , $ translator ->transChoice ('choice ' , 0 ));
99
+ $ this ->assertEquals ('no translation ' , $ translator ->trans ('no translation ' ));
100
+ $ this ->assertEquals ('foobarfoo (PT-PT) ' , $ translator ->trans ('foobarfoo ' ));
101
+ $ this ->assertEquals ('other choice 1 (PT-BR) ' , $ translator ->transChoice ('other choice ' , 1 ));
102
+ $ this ->assertEquals ('foobarbaz (fr.UTF-8) ' , $ translator ->trans ('foobarbaz ' ));
103
+ $ this ->assertEquals ('foobarbax (sr@latin) ' , $ translator ->trans ('foobarbax ' ));
104
+ }
105
+
106
+ /**
107
+ * @group legacy
108
+ * @expectedDeprecation Method Symfony\Bundle\FrameworkBundle\Translation\Translator::__construct() takes the default locale as 3rd argument since version 3.3. Not passing it is deprecated and will trigger an error in 4.0.
109
+ * @expectedException \InvalidArgumentException
110
+ */
111
+ public function testTransWithCachingWithInvalidLocaleOmittingLocale ()
112
+ {
113
+ $ loader = $ this ->getMockBuilder ('Symfony\Component\Translation\Loader\LoaderInterface ' )->getMock ();
114
+ $ translator = $ this ->getTranslator ($ loader , array ('cache_dir ' => $ this ->tmpDir ), 'loader ' , '\Symfony\Bundle\FrameworkBundle\Tests\Translation\TranslatorWithInvalidLocale ' , null );
115
+
116
+ $ translator ->trans ('foo ' );
117
+ }
118
+
119
+ /**
120
+ * @group legacy
121
+ * @expectedDeprecation Method Symfony\Bundle\FrameworkBundle\Translation\Translator::__construct() takes the default locale as 3rd argument since version 3.3. Not passing it is deprecated and will trigger an error in 4.0.
122
+ */
123
+ public function testLoadResourcesWithoutCachingOmittingLocale ()
124
+ {
125
+ $ loader = new \Symfony \Component \Translation \Loader \YamlFileLoader ();
126
+ $ resourceFiles = array (
127
+ 'fr ' => array (
128
+ __DIR__ .'/../Fixtures/Resources/translations/messages.fr.yml ' ,
129
+ ),
130
+ );
131
+
132
+ $ translator = $ this ->getTranslator ($ loader , array ('resource_files ' => $ resourceFiles ), 'yml ' , '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , null );
133
+ $ translator ->setLocale ('fr ' );
134
+
135
+ $ this ->assertEquals ('répertoire ' , $ translator ->trans ('folder ' ));
136
+ }
137
+
138
+ /**
139
+ * @group legacy
140
+ * @expectedDeprecation Method Symfony\Bundle\FrameworkBundle\Translation\Translator::__construct() takes the default locale as 3rd argument since version 3.3. Not passing it is deprecated and will trigger an error in 4.0.
141
+ */
142
+ public function testGetDefaultLocaleOmittingLocale ()
143
+ {
144
+ $ container = $ this ->getMockBuilder ('Symfony\Component\DependencyInjection\ContainerInterface ' )->getMock ();
145
+ $ container = $ this ->getMockBuilder ('Symfony\Component\DependencyInjection\ContainerInterface ' )->getMock ();
146
+ $ container
147
+ ->expects ($ this ->once ())
148
+ ->method ('getParameter ' )
149
+ ->with ('kernel.default_locale ' )
150
+ ->will ($ this ->returnValue ('en ' ))
151
+ ;
152
+ $ translator = new Translator ($ container , new MessageSelector ());
153
+
154
+ $ this ->assertSame ('en ' , $ translator ->getLocale ());
155
+ }
156
+
157
+ /**
158
+ * @group legacy
159
+ * @expectedException \InvalidArgumentException
160
+ * @expectedExceptionMessage Missing third $defaultLocale argument.
161
+ */
162
+ public function testGetDefaultLocaleOmittingLocaleWithPsrContainer ()
163
+ {
164
+ $ container = $ this ->getMockBuilder ('Psr\Container\ContainerInterface ' )->getMock ();
165
+ $ translator = new Translator ($ container , new MessageSelector ());
166
+ }
167
+
168
+ /**
169
+ * @group legacy
170
+ * @expectedDeprecation Method Symfony\Bundle\FrameworkBundle\Translation\Translator::__construct() takes the default locale as 3rd argument since version 3.3. Not passing it is deprecated and will trigger an error in 4.0.
171
+ */
172
+ public function testWarmupOmittingLocale ()
173
+ {
174
+ $ loader = new \Symfony \Component \Translation \Loader \YamlFileLoader ();
175
+ $ resourceFiles = array (
176
+ 'fr ' => array (
177
+ __DIR__ .'/../Fixtures/Resources/translations/messages.fr.yml ' ,
178
+ ),
179
+ );
180
+
181
+ // prime the cache
182
+ $ translator = $ this ->getTranslator ($ loader , array ('cache_dir ' => $ this ->tmpDir , 'resource_files ' => $ resourceFiles ), 'yml ' , '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , null );
183
+ $ translator ->setFallbackLocales (array ('fr ' ));
184
+ $ translator ->warmup ($ this ->tmpDir );
185
+
186
+ $ loader = $ this ->getMockBuilder ('Symfony\Component\Translation\Loader\LoaderInterface ' )->getMock ();
187
+ $ loader
188
+ ->expects ($ this ->never ())
189
+ ->method ('load ' );
190
+
191
+ $ translator = $ this ->getTranslator ($ loader , array ('cache_dir ' => $ this ->tmpDir , 'resource_files ' => $ resourceFiles ), 'yml ' , '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , null );
192
+ $ translator ->setLocale ('fr ' );
193
+ $ translator ->setFallbackLocales (array ('fr ' ));
194
+ $ this ->assertEquals ('répertoire ' , $ translator ->trans ('folder ' ));
195
+ }
196
+
45
197
public function testTransWithoutCaching ()
46
198
{
47
199
$ translator = $ this ->getTranslator ($ this ->getLoader ());
@@ -97,6 +249,7 @@ public function testTransWithCaching()
97
249
98
250
/**
99
251
* @expectedException \InvalidArgumentException
252
+ * @expectedExceptionMessage Invalid "invalid locale" locale.
100
253
*/
101
254
public function testTransWithCachingWithInvalidLocale ()
102
255
{
@@ -123,15 +276,8 @@ public function testLoadResourcesWithoutCaching()
123
276
124
277
public function testGetDefaultLocale ()
125
278
{
126
- $ container = $ this ->getMockBuilder ('Symfony\Component\DependencyInjection\ContainerInterface ' )->getMock ();
127
- $ container
128
- ->expects ($ this ->once ())
129
- ->method ('getParameter ' )
130
- ->with ('kernel.default_locale ' )
131
- ->will ($ this ->returnValue ('en ' ))
132
- ;
133
-
134
- $ translator = new Translator ($ container , new MessageSelector ());
279
+ $ container = $ this ->getMockBuilder ('Psr\Container\ContainerInterface ' )->getMock ();
280
+ $ translator = new Translator ($ container , new MessageSelector (), 'en ' );
135
281
136
282
$ this ->assertSame ('en ' , $ translator ->getLocale ());
137
283
}
@@ -144,7 +290,7 @@ public function testInvalidOptions()
144
290
{
145
291
$ container = $ this ->getMockBuilder ('Symfony\Component\DependencyInjection\ContainerInterface ' )->getMock ();
146
292
147
- (new Translator ($ container , new MessageSelector (), array (), array ('foo ' => 'bar ' )));
293
+ (new Translator ($ container , new MessageSelector (), ' en ' , array (), array ('foo ' => 'bar ' )));
148
294
}
149
295
150
296
protected function getCatalogue ($ locale , $ messages , $ resources = array ())
@@ -230,9 +376,9 @@ protected function getContainer($loader)
230
376
return $ container ;
231
377
}
232
378
233
- public function getTranslator ($ loader , $ options = array (), $ loaderFomat = 'loader ' , $ translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' )
379
+ public function getTranslator ($ loader , $ options = array (), $ loaderFomat = 'loader ' , $ translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , $ defaultLocale = ' en ' )
234
380
{
235
- $ translator = $ this ->createTranslator ($ loader , $ options , $ translatorClass , $ loaderFomat );
381
+ $ translator = $ this ->createTranslator ($ loader , $ options , $ translatorClass , $ loaderFomat, $ defaultLocale );
236
382
237
383
if ('loader ' === $ loaderFomat ) {
238
384
$ translator ->addResource ('loader ' , 'foo ' , 'fr ' );
@@ -272,11 +418,21 @@ public function testWarmup()
272
418
$ this ->assertEquals ('répertoire ' , $ translator ->trans ('folder ' ));
273
419
}
274
420
275
- private function createTranslator ($ loader , $ options , $ translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , $ loaderFomat = 'loader ' )
421
+ private function createTranslator ($ loader , $ options , $ translatorClass = '\Symfony\Bundle\FrameworkBundle\Translation\Translator ' , $ loaderFomat = 'loader ' , $ defaultLocale = ' en ' )
276
422
{
423
+ if (null === $ defaultLocale ) {
424
+ return new $ translatorClass (
425
+ $ this ->getContainer ($ loader ),
426
+ new MessageSelector (),
427
+ array ($ loaderFomat => array ($ loaderFomat )),
428
+ $ options
429
+ );
430
+ }
431
+
277
432
return new $ translatorClass (
278
433
$ this ->getContainer ($ loader ),
279
434
new MessageSelector (),
435
+ $ defaultLocale ,
280
436
array ($ loaderFomat => array ($ loaderFomat )),
281
437
$ options
282
438
);
0 commit comments