1. Как это Вы так быстро распарсили req.headers, там может быть такое, например:
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Language: da, en-gb;q=0.8, en;q=0.7
Accept-Language: cmn-Hans-CN
Accept-Language: i-enochian
Accept-Language: cel-gaulish
Accept-Language: *
или даже более сложное, см. спецификацию:
https://tools.ietf.org/html/bcp47
www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4
Чтобы правильно распарсить есть библиотеки:
https://github.com/gagle/node-bcp47
https://github.com/tinganho/node-accept-language
2. Делать require внутри обработчика это ужас. Это синхронная операция чтения из файла, которую нужно делать при старте сервера. Нужно положить все языки в один файл и прочитать его при старте, а потом обращаться к справочнику в памяти.
3. Middleware detected, ну и конечно же не использовать next, если это конечно более-менее серьезный нагруженный проект в продакшене, а не прототип и не макет.