@@ -2,6 +2,8 @@ const express = require("express");
2
2
const enforce = require ( "express-sslify" ) ;
3
3
const languages = require ( "./libraries.json" ) ;
4
4
const dotenv = require ( "dotenv" ) . config ( ) ;
5
+ const Negotiator = require ( "negotiator" ) ;
6
+ const localeMatcher = require ( "@formatjs/intl-localematcher" ) ;
5
7
6
8
const app = express ( ) ;
7
9
@@ -18,22 +20,42 @@ if (process.env.NODE_ENV === "production") {
18
20
) ;
19
21
}
20
22
23
+ app . use ( ( req , res , next ) => {
24
+ const languagesFromRequestHeaders = new Negotiator ( req ) . languages ( ) ;
25
+ const LANGUAGE_CODES = [ "en" , "ja" ]
26
+ const DEFAULT_LANGUAGE_CODE = [ "en" ]
27
+
28
+ const languageFromRequestHeader = localeMatcher . match (
29
+ languagesFromRequestHeaders ,
30
+ LANGUAGE_CODES ,
31
+ DEFAULT_LANGUAGE_CODE ,
32
+ ) ;
33
+
34
+ req . preferredLanguage = languageFromRequestHeader ;
35
+ next ( ) ;
36
+ } )
37
+
21
38
app . use ( ( req , res , next ) => {
22
39
res . locals . COOKIE_CONSENT_DOMAIN_ID = process . env . COOKIE_CONSENT_DOMAIN_ID ;
23
40
next ( ) ;
24
41
} ) ;
25
42
app . use ( express . static ( "dist/website" ) ) ;
26
43
app . get ( "/" , function ( req , res ) {
27
- res . render ( "index" ) ;
44
+ res . render ( "index" , {
45
+ preferredLanguage : req . preferredLanguage ,
46
+ } ) ;
28
47
} ) ;
29
48
30
49
app . get ( "/introduction" , function ( req , res ) {
31
- res . render ( "introduction" ) ;
50
+ res . render ( "introduction" , {
51
+ preferredLanguage : req . preferredLanguage ,
52
+ } ) ;
32
53
} ) ;
33
54
34
55
app . get ( "/libraries" , function ( req , res ) {
35
56
res . render ( "libraries" , {
36
- languages : languages
57
+ languages : languages ,
58
+ preferredLanguage : req . preferredLanguage ,
37
59
} ) ;
38
60
} ) ;
39
61
@@ -44,4 +66,4 @@ app.get("/home", function(req, res) {
44
66
45
67
app . listen ( process . env . PORT || 3000 , function ( ) {
46
68
console . log ( "Started." ) ;
47
- } ) ;
69
+ } ) ;
0 commit comments