Detects preferred locales from an action request by looking at the `'Accept-Language'` header as described by RFC 2616, section 14.4.

Parameters

  • object $request An instance of `lithium\action\Request`.

Returns

array Preferred locales in their canonical form (i.e. `'fr_CA'`).

Source

						protected static function _preferredAction($request) {
		$regex  = '/^\s*(?P<locale>\w\w(?:[-]\w\w)?)(?:;q=(?P<quality>[0-9]+\.[0-9]+))?\s*$/';
		$result = array();

		foreach (explode(',', $request->env('HTTP_ACCEPT_LANGUAGE')) as $part) {
			if (preg_match($regex, $part, $matches)) {
				$locale = static::canonicalize($matches['locale']);
				$quality = isset($matches['quality']) ? $matches['quality'] : 1;
				$result[$locale] = $quality;
			}
		}
		arsort($result);
		return array_keys($result);
	}