Source

						public function testPreferredAvailableNegotiation() {
		$result = Locale::preferred(
			array('nl_NL', 'nl_BE', 'nl', 'en_US', 'en'),
			array('en', 'en_US', 'nl_BE')
		);
		$this->assertEqual('nl_BE', $result);

		$result = Locale::preferred(
			array('da', 'en_GB', 'en'),
			array('da', 'en_GB', 'en')
		);
		$this->assertEqual('da', $result);

		$result = Locale::preferred(
			array('da', 'en_GB', 'en'),
			array('en', 'en_GB', 'da')
		);
		$this->assertEqual('da', $result);

		$result = Locale::preferred(
			array('da', 'en_GB', 'en'),
			array('en_GB', 'en')
		);
		$this->assertEqual('en_GB', $result);

		$result = Locale::preferred(
			array('da_DK', 'en_GB', 'en'),
			array('da', 'en_GB', 'en')
		);
		$this->assertEqual('da', $result);

		$result = Locale::preferred(
			array('zh_Hans_REVISED', 'zh_Hans_HK', 'zh', 'en'),
			array('zh_Hans_HK_REVISED', 'zh_Hans_HK', 'zh', 'en')
		);
		$this->assertEqual('zh', $result);

		$result = Locale::preferred(
			array('es_ES', 'en'),
			array('da', 'en_GB', 'en', 'es_AR')
		);
		$this->assertEqual('es_AR', $result);
	}