function testGetLanguageNamesInEnglish()
{
$languages = API::getInstance()->getAvailableLanguages();
/** @var LanguageDataProvider $dataProvider */
$dataProvider = StaticContainer::get('Piwik\\Intl\\Data\\Provider\\LanguageDataProvider');
$languagesReference = $dataProvider->getLanguageList();
foreach ($languages as $language) {
$data = file_get_contents(PIWIK_INCLUDE_PATH . "/plugins/Intl/lang/{$language}.json");
$translations = json_decode($data, true);
$name = $translations['Intl']['EnglishLanguageName'];
if ($language != 'en') {
$this->assertFalse($name == 'English', "for {$language}");
}
$languageCode = substr($language, 0, 2);
$this->assertTrue(isset($languagesReference[$languageCode]));
$names = $languagesReference[$languageCode];
if (isset($languagesReference[$language])) {
if (is_array($names)) {
$this->assertTrue(in_array($name, $names), "{$language}: failed because {$name} not a known language name");
} else {
$this->assertTrue($name == $names, "{$language}: failed because {$name} == {$names}");
}
} else {
if (is_array($names)) {
$this->assertTrue(strpos($name, $names[0]) !== false);
} else {
$this->fail("{$language}: expected an array of language names");
}
}
}
}