/** * Match locale to code at end of string. * @param string e.g. "something-fr_FR" * @return LocoLocale */ function loco_locale_resolve($s) { $lc = ''; $cc = ''; if (preg_match('/(?:^|\\W)([a-z]{2,3})(?:(?:-|_)([a-z]{2}))?$/i', $s, $r)) { $lc = strtolower($r[1]); if (isset($r[2])) { $cc = strtoupper($r[2]); // handle situation when short domain part looks like language if (!LocoLocale::is_known_language($lc) && LocoLocale::is_known_language($cc)) { $lc = strtolower($cc); $cc = ''; } } } return LocoLocale::init($lc, $cc); }