/** * @covers PKPLocale */ public function testGetLocaleFrom3LetterIso() { // A locale that does not have to be disambiguated. self::assertEquals('en_US', AppLocale::getLocaleFrom3LetterIso('eng')); // The primary locale will be used if that helps // to disambiguate. AppLocale::setSupportedLocales(array('en_US' => 'English', 'pt_BR' => 'Portuguese (Brazil)', 'pt_PT' => 'Portuguese (Portugal)')); AppLocale::setPrimaryLocale('pt_BR'); self::assertEquals('pt_BR', AppLocale::getLocaleFrom3LetterIso('por')); AppLocale::setPrimaryLocale('pt_PT'); self::assertEquals('pt_PT', AppLocale::getLocaleFrom3LetterIso('por')); // If the primary locale doesn't help then use the first supported locale found. AppLocale::setPrimaryLocale('en_US'); self::assertEquals('pt_BR', AppLocale::getLocaleFrom3LetterIso('por')); AppLocale::setSupportedLocales(array('en_US' => 'English', 'pt_PT' => 'Portuguese (Portugal)', 'pt_BR' => 'Portuguese (Brazil)')); self::assertEquals('pt_PT', AppLocale::getLocaleFrom3LetterIso('por')); // If the locale isn't even in the supported localse then use the first locale found. AppLocale::setSupportedLocales(array('en_US' => 'English')); self::assertEquals('pt_PT', AppLocale::getLocaleFrom3LetterIso('por')); // Unknown language. self::assertNull(AppLocale::getLocaleFrom3LetterIso('xxx')); }