Localerepository - Source Excerpt 04
Summary
This source excerpt preserves a bounded section of Antichrist.net/wp-content/plugins/uaix-locale-router/src/LocaleRepository.php so readers can inspect the evidence without opening the full source file.
**Source path:** Antichrist.net/wp-content/plugins/uaix-locale-router/src/LocaleRepository.php
return (string) preg_replace( '/[^a-z0-9]+/', '', $label );
}
/**
* Parse a browser Accept-Language header into preferred locale tags.
*
* @param string $accept_language Header value.
* @return array
*/
public static function parse_accept_language_header( $accept_language ) {
$accept_language = trim( (string) $accept_language );
if ( '' === $accept_language || strlen( $accept_language ) > 512 ) {
return array();
}
$preferences = array();
$parts = array_slice( explode( ',', $accept_language ), 0, 20 );
foreach ( $parts as $index => $part ) {
$part = trim( (string) $part );
if ( '' === $part || '*' === $part ) {
continue;
}
if ( preg_match( '/[\x00-\x1F\x7F]/', $part ) ) {
continue;
}
$segments = array_map( 'trim', explode( ';', $part ) );
$tag = isset( $segments[0] ) ? LocaleValidator::canonicalize_tag( $segments[0] ) : '';
if ( '' === $tag || ! LocaleValidator::is_valid_locale_tag( $tag ) ) {
continue;
}
$quality = 1.0;
foreach ( array_slice( $segments, 1, 4 ) as $parameter ) {
if ( 0 === strpos( strtolower( $parameter ), 'q=' ) ) {
$q_value = trim( substr( $parameter, 2 ) );
if ( ! preg_match( '/^(?:0(?:\.\d{0,3})?|1(?:\.0{0,3})?)$/', $q_value ) ) {
$quality = 0.0;
break;
}
$quality = (float) $q_value;
break;
}
}
if ( $quality <= 0.0 ) {
continue;
}
$preferences[] = array(
'tag' => $tag,
'quality' => $quality,
'index' => (int) $index,
);
}
usort(
$preferences,
static function ( $left, $right ) {
if ( $left['quality'] === $right['quality'] ) {
return $left['index'] <=> $right['index'];
}
return ( $left['quality'] > $right['quality'] ) ? -1 : 1;
}
);
return array_values(
array_map(
static function ( $preference ) {
return $preference['tag'];
},
$preferences
)
);
}
/**
* Match a preferred locale against enabled locales.
*
* Tries an exact locale match first, then falls back to language-only
* matching so a browser preference like en-GB can use an enabled en-US locale.
*
* @param string $preferred_tag Preferred locale tag.
* @param array $enabled_locales Enabled locale records.
* @return array
*/
private static function match_enabled_locale_by_preference( $preferred_tag, array $enabled_locales ) {
$preferred_tag = LocaleValidator::canonicalize_tag( $preferred_tag );
$preferred_language = strtolower( strtok( $preferred_tag, '-' ) );
foreach ( $enabled_locales as $record ) {
if ( ! empty( $record['tag'] ) && $record['tag'] === $preferred_tag ) {
return $record;
}
}
if ( '' === $preferred_language ) {
return array();
}
foreach ( $enabled_locales as $record ) {
$record_language = strtolower( strtok( $record['tag'], '-' ) );
if ( '' !== $record_language && $record_language === $preferred_language ) {
return $record;
}
}
return array();
}
/**
* Reset request-local caches.
*
* @return void
*/
public static function reset_cache() {
self::$catalog = null;
self::$supported_locales = null;
}
}