locales as $locale) { $parsedLocale = AcceptLanguage::parse($locale); if (isset($proposedLocale['language']) && $parsedLocale[1]['language'] == $proposedLocale['language'] && $parsedLocale[1]['region'] == $proposedLocale['region'] ) { return $proposedLocale['language'].'_'.$proposedLocale['region']; } } } /** * Main middleware function * * @param Request $request PSR request * @param Response $response PSR response * @param callable $next Next middleware * * @return Response */ public function __invoke(Request $request, Response $response, callable $next) { $headers = $request->getHeader('Accept-Language'); $locale = AcceptLanguage::detect([$this, 'testLocale'], 'en_US', $headers[0]); putenv('LANG='.$locale); setlocale(LC_ALL, [$locale, $locale.'.utf8']); return $next($request, $response); } }