@@ -43,7 +43,7 @@ function logEndpointErrors(response, log) {
4343 }
4444}
4545
46- function create ( log , error , config , routes , db ) {
46+ function create ( log , error , config , routes , db , translator ) {
4747
4848 // Hawk needs to calculate request signatures based on public URL,
4949 // not the local URL to which it is bound.
@@ -284,7 +284,11 @@ function create(log, error, config, routes, db) {
284284 request . app . remoteAddressChain = xff
285285 request . app . clientAddress = xff [ clientAddressIndex ]
286286
287- request . app . acceptLanguage = trimLocale ( request . headers [ 'accept-language' ] )
287+ const acceptLanguage = trimLocale ( request . headers [ 'accept-language' ] )
288+ request . app . acceptLanguage = acceptLanguage
289+ const locale = translator . getLocale ( acceptLanguage )
290+ request . app . locale = locale
291+ request . app . isLocaleAcceptable = isLocaleAcceptable ( locale , acceptLanguage )
288292
289293 if ( request . headers . authorization ) {
290294 // Log some helpful details for debugging authentication problems.
@@ -341,6 +345,10 @@ function create(log, error, config, routes, db) {
341345 return server
342346}
343347
348+ function isLocaleAcceptable ( locale , acceptLanguage ) {
349+ return RegExp ( `^(?:.+, *)*${ locale } (?:[,-].+)*$` , 'i' ) . test ( acceptLanguage )
350+ }
351+
344352module . exports = {
345353 create : create ,
346354 // Functions below exported for testing
0 commit comments