15
15
namespace Cake \Test \TestCase \I18n \Parser ;
16
16
17
17
use Aura \Intl \Package ;
18
+ use Cake \Cache \Cache ;
18
19
use Cake \I18n \I18n ;
19
20
use Cake \I18n \Parser \PoFileParser ;
20
21
use Cake \TestSuite \TestCase ;
24
25
*/
25
26
class PoFileParserTest extends TestCase
26
27
{
28
+ protected $ locale ;
29
+
30
+ /**
31
+ * Set Up
32
+ *
33
+ * @return void
34
+ */
35
+ public function setUp ()
36
+ {
37
+ parent ::setUp ();
38
+ $ this ->locale = I18n::locale ();
39
+ }
40
+
41
+ /**
42
+ * Tear down method
43
+ *
44
+ * @return void
45
+ */
46
+ public function tearDown ()
47
+ {
48
+ parent ::tearDown ();
49
+ I18n::clear ();
50
+ I18n::locale ($ this ->locale );
51
+ Cache::clear (false , '_cake_core_ ' );
52
+ }
27
53
28
54
/**
29
55
* Tests parsing a file with plurals and message context
@@ -119,7 +145,7 @@ public function testParseContextOnSomeMessages()
119
145
$ file = APP . 'Locale ' . DS . 'en ' . DS . 'context.po ' ;
120
146
$ messages = $ parser ->parse ($ file );
121
147
122
- I18n::translator ('default ' , 'de_DE ' , function () use ($ messages ) {
148
+ I18n::translator ('default ' , 'en_CA ' , function () use ($ messages ) {
123
149
$ package = new Package ('default ' );
124
150
$ package ->setMessages ($ messages );
125
151
@@ -131,10 +157,35 @@ public function testParseContextOnSomeMessages()
131
157
$ this ->assertSame ('En resolved - context ' , $ messages ['Resolved ' ]['_context ' ]['Pay status ' ]);
132
158
133
159
// Confirm actual behavior
134
- I18n::locale ('de_DE ' );
160
+ I18n::locale ('en_CA ' );
135
161
$ this ->assertSame ('En cours ' , __ ('Pending ' ));
136
162
$ this ->assertSame ('En cours - context ' , __x ('Pay status ' , 'Pending ' ));
137
163
$ this ->assertSame ('En resolved ' , __ ('Resolved ' ));
138
164
$ this ->assertSame ('En resolved - context ' , __x ('Pay status ' , 'Resolved ' ));
139
165
}
166
+
167
+ /**
168
+ * Test parsing context based messages
169
+ *
170
+ * @return void
171
+ */
172
+ public function testParseContextMessages ()
173
+ {
174
+ $ parser = new PoFileParser ();
175
+ $ file = APP . 'Locale ' . DS . 'en ' . DS . 'context.po ' ;
176
+ $ messages = $ parser ->parse ($ file );
177
+
178
+ I18n::translator ('default ' , 'en_US ' , function () use ($ messages ) {
179
+ $ package = new Package ('default ' );
180
+ $ package ->setMessages ($ messages );
181
+
182
+ return $ package ;
183
+ });
184
+
185
+ // Check translated messages
186
+ I18n::locale ('en_US ' );
187
+ $ this ->assertSame ('Titel mit Kontext ' , __x ('context ' , 'title ' ));
188
+ $ this ->assertSame ('Titel mit anderem Kontext ' , __x ('another_context ' , 'title ' ));
189
+ $ this ->assertSame ('Titel ohne Kontext ' , __ ('title ' ));
190
+ }
140
191
}
0 commit comments