Quellcode durchsuchen

improve browser language matching (for zh-TW)

dev_h
lovasoa vor 4 Jahren
Ursprung
Commit
794866735e
Es ist kein Account mit der E-Mail-Adresse des Committers verbunden
1 geänderte Dateien mit 11 neuen und 3 gelöschten Zeilen
  1. 11
    3
      server/templating.js

+ 11
- 3
server/templating.js Datei anzeigen

@@ -33,11 +33,19 @@ class Template {
33 33
     this.template = handlebars.compile(contents);
34 34
   }
35 35
   parameters(parsedUrl, request) {
36
-    const accept_languages =
37
-      parsedUrl.query.lang || request.headers["accept-language"];
36
+    const accept_language_str = parsedUrl.query.lang || request.headers["accept-language"];
37
+    const accept_languages = accept_language_parser.parse(accept_language_str);
38 38
     const opts = { loose: true };
39
-    const language =
39
+    let language =
40 40
       accept_language_parser.pick(languages, accept_languages, opts) || "en";
41
+    // The loose matcher returns the first language that partially matches, so we need to
42
+    // check if the preferred language is supported to return it
43
+    if (accept_languages.length > 0) {
44
+      const preferred_language = accept_languages[0].code + "-" + accept_languages[0].region;
45
+      if (languages.includes(preferred_language)) {
46
+        language = preferred_language;
47
+      }
48
+    }
41 49
     const translations = TRANSLATIONS[language] || {};
42 50
     const configuration = client_config || {};
43 51
     const prefix = request.url.split("/boards/")[0].substr(1);

Laden…
Abbrechen
Speichern