|
|
@@ -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);
|