Skip to content

Commit 24fc1d7

Browse files
committed
Add additional tests for context messages
Check that context + context-free messages can be reached in an isolated example. I wasn't able to reproduce the issue reported in #10774
1 parent f36e1ee commit 24fc1d7

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

tests/TestCase/I18n/Parser/PoFileParserTest.php

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
namespace Cake\Test\TestCase\I18n\Parser;
1616

1717
use Aura\Intl\Package;
18+
use Cake\Cache\Cache;
1819
use Cake\I18n\I18n;
1920
use Cake\I18n\Parser\PoFileParser;
2021
use Cake\TestSuite\TestCase;
@@ -24,6 +25,31 @@
2425
*/
2526
class PoFileParserTest extends TestCase
2627
{
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+
}
2753

2854
/**
2955
* Tests parsing a file with plurals and message context
@@ -119,7 +145,7 @@ public function testParseContextOnSomeMessages()
119145
$file = APP . 'Locale' . DS . 'en' . DS . 'context.po';
120146
$messages = $parser->parse($file);
121147

122-
I18n::translator('default', 'de_DE', function () use ($messages) {
148+
I18n::translator('default', 'en_CA', function () use ($messages) {
123149
$package = new Package('default');
124150
$package->setMessages($messages);
125151

@@ -131,10 +157,35 @@ public function testParseContextOnSomeMessages()
131157
$this->assertSame('En resolved - context', $messages['Resolved']['_context']['Pay status']);
132158

133159
// Confirm actual behavior
134-
I18n::locale('de_DE');
160+
I18n::locale('en_CA');
135161
$this->assertSame('En cours', __('Pending'));
136162
$this->assertSame('En cours - context', __x('Pay status', 'Pending'));
137163
$this->assertSame('En resolved', __('Resolved'));
138164
$this->assertSame('En resolved - context', __x('Pay status', 'Resolved'));
139165
}
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+
}
140191
}

tests/test_app/TestApp/Locale/en/context.po

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,17 @@ msgstr "En resolved - context"
1313

1414
msgid "Resolved"
1515
msgstr "En resolved"
16+
17+
#: No context
18+
msgid "title"
19+
msgstr "Titel ohne Kontext"
20+
21+
#: Has context
22+
msgctxt "context"
23+
msgid "title"
24+
msgstr "Titel mit Kontext"
25+
26+
#: Another context
27+
msgctxt "another_context"
28+
msgid "title"
29+
msgstr "Titel mit anderem Kontext"

0 commit comments

Comments
 (0)