1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
import {sortByName} from '#sort';
import {stitchArrays} from '#sugar';
export default {
extraDependencies: [
'defaultLanguage',
'html',
'language',
'languages',
'pagePath',
'to',
],
generate({
defaultLanguage,
html,
language,
languages,
pagePath,
to,
}) {
const switchableLanguages =
Object.entries(languages)
.filter(([code, language]) => code !== 'default' && !language.hidden)
.map(([code, language]) => language);
if (switchableLanguages.length <= 1) {
return html.blank();
}
sortByName(switchableLanguages);
const [pagePathSubkey, ...pagePathArgs] = pagePath;
const linkPaths =
switchableLanguages.map(language =>
(language === defaultLanguage
? (['localizedDefaultLanguage.' + pagePathSubkey,
...pagePathArgs])
: (['localizedWithBaseDirectory.' + pagePathSubkey,
language.code,
...pagePathArgs])));
const links =
stitchArrays({
language: switchableLanguages,
linkPath: linkPaths,
}).map(({language, linkPath}) =>
html.tag('span',
html.tag('a',
{href: to(...linkPath)},
language.name)));
return html.tag('div', {class: 'footer-localization-links'},
language.$('misc.uiLanguage', {
languages: language.formatListWithoutSeparator(links),
}));
},
};
|