Source

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

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

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

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

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

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