]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | ||
3 | ||
4 | namespace Shaarli; | |
5 | ||
6 | ||
7 | use Shaarli\Config\ConfigManager; | |
8 | ||
9 | /** | |
10 | * Class LanguagesFrTest | |
11 | * | |
12 | * Test the translation system in PHP and gettext mode with French language. | |
13 | * | |
14 | * @package Shaarli | |
15 | */ | |
16 | class LanguagesFrTest extends \PHPUnit_Framework_TestCase | |
17 | { | |
18 | /** | |
19 | * @var string Config file path (without extension). | |
20 | */ | |
21 | protected static $configFile = 'tests/utils/config/configJson'; | |
22 | ||
23 | /** | |
24 | * @var ConfigManager | |
25 | */ | |
26 | protected $conf; | |
27 | ||
28 | /** | |
29 | * Init: force French | |
30 | */ | |
31 | public function setUp() | |
32 | { | |
33 | $this->conf = new ConfigManager(self::$configFile); | |
34 | $this->conf->set('translation.language', 'fr'); | |
35 | } | |
36 | ||
37 | /** | |
38 | * Reset the locale since gettext seems to mess with it, making it too long | |
39 | */ | |
40 | public static function tearDownAfterClass() | |
41 | { | |
42 | if (! empty(getenv('UT_LOCALE'))) { | |
43 | setlocale(LC_ALL, getenv('UT_LOCALE')); | |
44 | } | |
45 | } | |
46 | ||
47 | /** | |
48 | * Test t() with a simple non identified value. | |
49 | */ | |
50 | public function testTranslateSingleNotIDGettext() | |
51 | { | |
52 | $this->conf->set('translation.mode', 'gettext'); | |
53 | new Languages('en', $this->conf); | |
54 | $text = 'abcdé 564 fgK'; | |
55 | $this->assertEquals($text, t($text)); | |
56 | } | |
57 | ||
58 | /** | |
59 | * Test t() with a simple identified value in gettext mode. | |
60 | */ | |
61 | public function testTranslateSingleIDGettext() | |
62 | { | |
63 | $this->conf->set('translation.mode', 'gettext'); | |
64 | new Languages('en', $this->conf); | |
65 | $text = 'permalink'; | |
66 | $this->assertEquals('permalien', t($text)); | |
67 | } | |
68 | ||
69 | /** | |
70 | * Test t() with a non identified plural form in gettext mode. | |
71 | */ | |
72 | public function testTranslatePluralNotIDGettext() | |
73 | { | |
74 | $this->conf->set('translation.mode', 'gettext'); | |
75 | new Languages('en', $this->conf); | |
76 | $text = 'sandwich'; | |
77 | $nText = 'sandwiches'; | |
78 | // Not ID, so English fallback, and in english, plural 0 | |
79 | $this->assertEquals('sandwiches', t($text, $nText, 0)); | |
80 | $this->assertEquals('sandwich', t($text, $nText, 1)); | |
81 | $this->assertEquals('sandwiches', t($text, $nText, 2)); | |
82 | } | |
83 | ||
84 | /** | |
85 | * Test t() with an identified plural form in gettext mode. | |
86 | */ | |
87 | public function testTranslatePluralIDGettext() | |
88 | { | |
89 | $this->conf->set('translation.mode', 'gettext'); | |
90 | new Languages('en', $this->conf); | |
91 | $text = 'shaare'; | |
92 | $nText = 'shaares'; | |
93 | $this->assertEquals('shaare', t($text, $nText, 0)); | |
94 | $this->assertEquals('shaare', t($text, $nText, 1)); | |
95 | $this->assertEquals('shaares', t($text, $nText, 2)); | |
96 | } | |
97 | ||
98 | /** | |
99 | * Test t() with a simple non identified value. | |
100 | */ | |
101 | public function testTranslateSingleNotIDPhp() | |
102 | { | |
103 | $this->conf->set('translation.mode', 'php'); | |
104 | new Languages('en', $this->conf); | |
105 | $text = 'abcdé 564 fgK'; | |
106 | $this->assertEquals($text, t($text)); | |
107 | } | |
108 | ||
109 | /** | |
110 | * Test t() with a simple identified value in PHP mode. | |
111 | */ | |
112 | public function testTranslateSingleIDPhp() | |
113 | { | |
114 | $this->conf->set('translation.mode', 'php'); | |
115 | new Languages('en', $this->conf); | |
116 | $text = 'permalink'; | |
117 | $this->assertEquals('permalien', t($text)); | |
118 | } | |
119 | ||
120 | /** | |
121 | * Test t() with a non identified plural form in PHP mode. | |
122 | */ | |
123 | public function testTranslatePluralNotIDPhp() | |
124 | { | |
125 | $this->conf->set('translation.mode', 'php'); | |
126 | new Languages('en', $this->conf); | |
127 | $text = 'sandwich'; | |
128 | $nText = 'sandwiches'; | |
129 | // Not ID, so English fallback, and in english, plural 0 | |
130 | $this->assertEquals('sandwiches', t($text, $nText, 0)); | |
131 | $this->assertEquals('sandwich', t($text, $nText, 1)); | |
132 | $this->assertEquals('sandwiches', t($text, $nText, 2)); | |
133 | } | |
134 | ||
135 | /** | |
136 | * Test t() with an identified plural form in PHP mode. | |
137 | */ | |
138 | public function testTranslatePluralIDPhp() | |
139 | { | |
140 | $this->conf->set('translation.mode', 'php'); | |
141 | new Languages('en', $this->conf); | |
142 | $text = 'shaare'; | |
143 | $nText = 'shaares'; | |
144 | // In english, zero is followed by plural form | |
145 | $this->assertEquals('shaare', t($text, $nText, 0)); | |
146 | $this->assertEquals('shaare', t($text, $nText, 1)); | |
147 | $this->assertEquals('shaares', t($text, $nText, 2)); | |
148 | } | |
149 | ||
150 | /** | |
151 | * Test t() with an extension language file in gettext mode | |
152 | */ | |
153 | public function testTranslationExtensionGettext() | |
154 | { | |
155 | $this->conf->set('translation.mode', 'gettext'); | |
156 | $this->conf->set('translation.extensions.test', 'tests/utils/languages/'); | |
157 | new Languages('en', $this->conf); | |
158 | $txt = 'car'; // ignore me poedit | |
159 | $this->assertEquals('voiture', t($txt, $txt, 1, 'test')); | |
160 | $this->assertEquals('Fouille', t('Search', 'Search', 1, 'test')); | |
161 | } | |
162 | ||
163 | /** | |
164 | * Test t() with an extension language file in PHP mode | |
165 | */ | |
166 | public function testTranslationExtensionPhp() | |
167 | { | |
168 | $this->conf->set('translation.mode', 'php'); | |
169 | $this->conf->set('translation.extensions.test', 'tests/utils/languages/'); | |
170 | new Languages('en', $this->conf); | |
171 | $txt = 'car'; // ignore me poedit | |
172 | $this->assertEquals('voiture', t($txt, $txt, 1, 'test')); | |
173 | $this->assertEquals('Fouille', t('Search', 'Search', 1, 'test')); | |
174 | } | |
175 | ||
176 | /** | |
177 | * Test t() with an extension language file coming from the theme in gettext mode | |
178 | */ | |
179 | public function testTranslationThemeExtensionGettext() | |
180 | { | |
181 | $this->conf->set('translation.mode', 'gettext'); | |
182 | $this->conf->set('raintpl_tpl', 'tests/utils/customtpl/'); | |
183 | $this->conf->set('theme', 'dummy'); | |
184 | new Languages('en', $this->conf); | |
185 | $txt = 'rooster'; // ignore me poedit | |
186 | $this->assertEquals('coq', t($txt, $txt, 1, 'dummy')); | |
187 | } | |
188 | ||
189 | /** | |
190 | * Test t() with an extension language file coming from the theme in PHP mode | |
191 | */ | |
192 | public function testTranslationThemeExtensionPhp() | |
193 | { | |
194 | $this->conf->set('translation.mode', 'php'); | |
195 | $this->conf->set('raintpl_tpl', 'tests/utils/customtpl/'); | |
196 | $this->conf->set('theme', 'dummy'); | |
197 | new Languages('en', $this->conf); | |
198 | $txt = 'rooster'; // ignore me poedit | |
199 | $this->assertEquals('coq', t($txt, $txt, 1, 'dummy')); | |
200 | } | |
201 | } |