Translated using Weblate (Slovenian)
[phpmyadmin.git] / test / classes / LanguageTest.php
blobb367dc148ee65d5eda813f0bb1cd79e8d9cee926
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * tests for Advisor class
6 * @package PhpMyAdmin-test
7 */
9 /*
10 * Include to test.
13 use PMA\libraries\LanguageManager;
15 /**
16 * Tests behaviour of PMA_Advisor class
18 * @package PhpMyAdmin-test
20 class LanguageTest extends PMATestCase
22 private $manager;
24 /**
25 * Setup for Language tests.
27 * @return void
29 public function setup()
31 $loc = LOCALE_PATH . '/cs/LC_MESSAGES/phpmyadmin.mo';
32 if (! is_readable($loc)) {
33 $this->markTestSkipped('Missing compiled locales.');
35 $this->manager = new LanguageManager();
38 /**
39 * Test language filtering
41 * @return void
43 public function testAvailable()
45 $GLOBALS['cfg']['FilterLanguages'] = 'cs';
47 $langs = $this->manager->availableLocales();
49 $this->assertEquals(1, count($langs));
50 $this->assertContains('cs', $langs);
51 $GLOBALS['cfg']['FilterLanguages'] = '';
54 /**
55 * Test no language filtering
57 * @return void
59 public function testAllAvailable()
61 $GLOBALS['cfg']['FilterLanguages'] = '';
63 $langs = $this->manager->availableLocales();
65 $this->assertContains('cs', $langs);
66 $this->assertContains('en', $langs);
69 /**
70 * Test whether listing locales works
72 * @return void
74 public function testList()
76 $langs = $this->manager->listLocaleDir();
77 $this->assertContains('cs', $langs);
78 $this->assertContains('en', $langs);
81 /**
82 * Test for getting available languages
84 * @return void
86 public function testLanguages()
88 $langs = $this->manager->availableLanguages();
89 $this->assertGreaterThan(1, count($langs));
91 /* Ensure we have name for every language */
92 foreach($langs as $lang) {
93 $this->assertNotEquals($lang->getCode(), strtolower($lang->getEnglishName()));
97 /**
98 * Test for MySQL locales
100 * @return void
102 public function testMySQLLocale()
104 $czech = $this->manager->getLanguage('cs');
105 $this->assertEquals('cs_CZ', $czech->getMySQLLocale());
107 $korani = $this->manager->getLanguage('ckb');
108 $this->assertEquals('', $korani->getMySQLLocale());
112 * Test for getting available sorted languages
114 * @return void
116 public function testSortedLanguages()
118 $langs = $this->manager->sortedLanguages();
119 $this->assertGreaterThan(1, count($langs));
123 * Test getting language by code
125 * @return void
127 public function testGet()
129 $lang = $this->manager->getLanguage('cs');
130 $this->assertNotEquals(false, $lang);
131 $this->assertEquals('Czech', $lang->getEnglishName());
132 $this->assertEquals('Čeština', $lang->getNativeName());
136 * Test language selection
138 * @param string $lang Value for forced language
139 * @param string $post Value for language in POST
140 * @param string $get Value for language in GET
141 * @param string $cookie Value for language in COOKIE
142 * @param string $accept Value for HTTP Accept-Language header
143 * @param string $agent Value for HTTP User-Agent header
144 * @param string $default Value for default language
145 * @param string $expect Expected language name
147 * @return void
149 * @dataProvider selectDataProvider
151 public function testSelect($lang, $post, $get, $cookie, $accept, $agent, $default, $expect)
153 $GLOBALS['cfg']['Lang'] = $lang;
154 $_POST['lang'] = $post;
155 $_GET['lang'] = $get;
156 $_COOKIE['pma_lang'] = $cookie;
157 $_SERVER['HTTP_ACCEPT_LANGUAGE'] = $accept;
158 $_SERVER['HTTP_USER_AGENT'] = $agent;
159 $GLOBALS['cfg']['DefaultLang'] = $default;
161 $lang = $this->manager->selectLanguage();
163 $this->assertEquals($expect, $lang->getEnglishName());
165 $GLOBALS['cfg']['Lang'] = '';
166 $_POST['lang'] = '';
167 $_GET['lang'] = '';
168 $_COOKIE['pma_lang'] = '';
169 $_SERVER['HTTP_ACCEPT_LANGUAGE'] = '';
170 $_SERVER['HTTP_USER_AGENT'] = '';
171 $GLOBALS['cfg']['DefaultLang'] = 'en';
175 * Data provider for language selection test.
177 * @return array Test parameters.
179 public function selectDataProvider()
181 return array(
182 array('cs', 'en', '', '' ,'' ,'', '', 'Czech'),
183 array('', 'cs', '', '' ,'' ,'', '', 'Czech'),
184 array('', 'cs', 'en', '' ,'' ,'', '', 'Czech'),
185 array('', '', 'cs', '' ,'' ,'', '', 'Czech'),
186 array('', '', '', '' ,'cs,en-US;q=0.7,en;q=0.3' ,'', '', 'Czech'),
187 array(
188 '', '', '', '', '',
189 'Mozilla/5.0 (Linux; U; Android 2.2.2; tr-tr; GM FOX)',
190 '', 'Turkish'
192 array('', '', '', '' ,'' ,'', 'cs', 'Czech'),
193 array('', '', '', '' ,'' ,'', '', 'English'),
198 * Test for setting and parsing locales
200 * @param string $locale locale name
202 * @return void
204 * @group large
205 * @dataProvider listLocales
207 public function testGettext($locale)
209 /* We should be able to set the language */
210 $this->manager->getLanguage($locale)->activate();
212 /* Grab some texts */
213 $this->assertContains('%s', _ngettext('%s table', '%s tables', 10));
214 $this->assertContains('%s', _ngettext('%s table', '%s tables', 1));
216 $this->assertEquals(
217 $locale,
218 $this->manager->getCurrentLanguage()->getCode()
223 * Data provider to generate list of available locales.
225 * @return array with arrays of available locales
227 public function listLocales()
229 $ret = array();
230 foreach (LanguageManager::getInstance()->availableLanguages() as $language) {
231 $ret[] = array($language->getCode());
233 return $ret;