Add language switch at bottom of page
This commit is contained in:
parent
9cd378a2d2
commit
05c3b8fac9
21 changed files with 110 additions and 52 deletions
|
@ -227,6 +227,54 @@ ul.pagination {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.book-languages {
|
||||||
|
position: relative;
|
||||||
|
overflow: visible;
|
||||||
|
|
||||||
|
padding: $padding-16;
|
||||||
|
margin: -$padding-16;
|
||||||
|
|
||||||
|
&:hover .book-languages-list {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.book-languages-list {
|
||||||
|
display: none;
|
||||||
|
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
padding: $padding-8 0;
|
||||||
|
|
||||||
|
background: $body-background;
|
||||||
|
box-shadow: 0 0 $padding-4 rgba(0, 0, 0, 0.1);
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding: $padding-8 $padding-16;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
opacity: .1;
|
||||||
|
}
|
||||||
|
|
||||||
|
li.active img {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.book-posts {
|
.book-posts {
|
||||||
min-width: $body-min-width;
|
min-width: $body-min-width;
|
||||||
max-width: $body-min-width * 2;
|
max-width: $body-min-width * 2;
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
// Printing styles
|
|
||||||
@media print {
|
@media print {
|
||||||
.book-menu,
|
.book-menu,
|
||||||
.book-footer {
|
.book-footer {
|
||||||
|
|
|
@ -23,6 +23,9 @@ defaultContentLanguage = 'en'
|
||||||
[languages.ru]
|
[languages.ru]
|
||||||
languageName = 'Russian'
|
languageName = 'Russian'
|
||||||
weight = 2
|
weight = 2
|
||||||
|
[languages.cn]
|
||||||
|
languageName = 'Chinese'
|
||||||
|
weight = 3
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
||||||
|
|
|
@ -23,6 +23,9 @@ languages:
|
||||||
ru:
|
ru:
|
||||||
languageName: Russian
|
languageName: Russian
|
||||||
weight: 2
|
weight: 2
|
||||||
|
cn:
|
||||||
|
languageName: Chinese
|
||||||
|
weight: 3
|
||||||
|
|
||||||
params:
|
params:
|
||||||
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
# (Optional, default 6) Set how many table of contents levels to be showed on page.
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
# General
|
|
||||||
- id: translations
|
|
||||||
translation: Translations
|
|
||||||
|
|
||||||
- id: languages
|
|
||||||
translation: Languages
|
|
|
@ -1,6 +0,0 @@
|
||||||
# General
|
|
||||||
- id: translations
|
|
||||||
translation: Переводы
|
|
||||||
|
|
||||||
- id: languages
|
|
||||||
translation: Языки
|
|
|
@ -0,0 +1 @@
|
||||||
|
{"Target":"book.min.9655dddcbdb7746824f6a5a12c435a2fd6b9c5d6d7928958bf434d9563068728.css","MediaType":"text/css","Data":{"Integrity":"sha256-llXd3L23dGgk9qWhLENaL9a5xdbXkolYv0NNlWMGhyg="}}
|
5
i18n/cn.yaml
Normal file
5
i18n/cn.yaml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
- id: Search
|
||||||
|
translation: 搜索
|
||||||
|
|
||||||
|
- id: Edit this page
|
||||||
|
translation: Edit this page
|
5
i18n/en.yaml
Normal file
5
i18n/en.yaml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
- id: Search
|
||||||
|
translation: Search
|
||||||
|
|
||||||
|
- id: Edit this page
|
||||||
|
translation: Edit this page
|
5
i18n/ru.yaml
Normal file
5
i18n/ru.yaml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
- id: Search
|
||||||
|
translation: Поиск
|
||||||
|
|
||||||
|
- id: Edit this page
|
||||||
|
translation: Редактировать эту сраницу
|
|
@ -17,7 +17,7 @@
|
||||||
<div class="book-page">
|
<div class="book-page">
|
||||||
{{ partial "docs/mobile-header" . }}
|
{{ partial "docs/mobile-header" . }}
|
||||||
{{ template "main" . }}
|
{{ template "main" . }}
|
||||||
{{ partial "docs/git-footer" . }}
|
{{ partial "docs/footer" . }}
|
||||||
{{ partial "docs/inject/footer" . }}
|
{{ partial "docs/inject/footer" . }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
{{ if or .GitInfo .Site.Params.BookEditPath }}
|
{{ if or .GitInfo .Site.Params.BookEditPath }}
|
||||||
<div class="book-footer {{ if not .GitInfo }}justify-end{{ else }}justify-between{{ end }}">
|
<div class="book-footer {{ if not .GitInfo }}justify-end{{ else }}justify-between{{ end }}">
|
||||||
|
{{ partial "docs/languages" . }}
|
||||||
{{ with .GitInfo }}
|
{{ with .GitInfo }}
|
||||||
<div>
|
<div>
|
||||||
{{ $date := .AuthorDate.Local.Format (default "January 2, 2006" $.Site.Params.BookDateFormat) }}
|
{{ $date := .AuthorDate.Local.Format (default "January 2, 2006" $.Site.Params.BookDateFormat) }}
|
||||||
|
@ -14,7 +15,7 @@
|
||||||
{{ if $.File }}
|
{{ if $.File }}
|
||||||
<a class="flex align-center" href="{{ $.Site.Params.BookRepo }}/{{ . }}/{{ $.File.Path }}" target="_blank" rel="noopener">
|
<a class="flex align-center" href="{{ $.Site.Params.BookRepo }}/{{ . }}/{{ $.File.Path }}" target="_blank" rel="noopener">
|
||||||
<img src="{{ "svg/edit.svg" | relURL }}" alt="Edit" />
|
<img src="{{ "svg/edit.svg" | relURL }}" alt="Edit" />
|
||||||
<span>Edit this page</span>
|
<span>{{ i18n "Edit this page" }}</span>
|
||||||
</a>
|
</a>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</div>
|
</div>
|
|
@ -1,14 +0,0 @@
|
||||||
{{ if .Site.IsMultiLingual }}
|
|
||||||
<ul>
|
|
||||||
<li class="book-section-flat">
|
|
||||||
<span>{{ i18n "languages" }}</span>
|
|
||||||
<ul>
|
|
||||||
{{ range .Site.Home.AllTranslations -}}
|
|
||||||
<li>
|
|
||||||
<a href="{{ .Permalink }}" class="{{ if (eq $.Site.Language .Language ) }}active{{ end }}">{{ .Language.LanguageName }}</a>
|
|
||||||
</li>
|
|
||||||
{{- end }}
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
{{ end }}
|
|
32
layouts/partials/docs/languages.html
Normal file
32
layouts/partials/docs/languages.html
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{{ if .Site.IsMultiLingual }}
|
||||||
|
<!-- Merge home and current page translations -->
|
||||||
|
{{ $langs := dict }}
|
||||||
|
{{ range .Site.Home.AllTranslations }}
|
||||||
|
{{ $langs = merge $langs (dict .Language.Lang .) }}
|
||||||
|
{{ end }}
|
||||||
|
{{ range .Translations }}
|
||||||
|
{{ $langs = merge $langs (dict .Language.Lang .) }}
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
|
<div class="book-languages">
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li class="flex">
|
||||||
|
<img src="{{ "svg/translate.svg" | relURL }}" />
|
||||||
|
{{ $.Site.Language.LanguageName }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul class="book-languages-list">
|
||||||
|
{{ range sort $langs }}
|
||||||
|
<li class="{{ if (eq $.Site.Language .Language ) }}active{{ end }}">
|
||||||
|
<a href="{{ .Permalink }}" class="flex">
|
||||||
|
<img src="{{ "svg/translate.svg" | relURL }}" />
|
||||||
|
{{ .Language.LanguageName }}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{ end }}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
|
@ -15,7 +15,7 @@
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<ul>
|
<ul>
|
||||||
{{ range where $sections "Params.bookhidden" "!=" true }}
|
{{ range where $sections "Params.bookHidden" "!=" true }}
|
||||||
{{ template "book-section" (dict "Section" . "CurrentPage" $) }}
|
{{ template "book-section" (dict "Section" . "CurrentPage" $) }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -10,11 +10,6 @@
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
{{ partial "docs/inject/menu-after" . }}
|
{{ partial "docs/inject/menu-after" . }}
|
||||||
|
|
||||||
{{ if .Site.IsMultiLingual }}
|
|
||||||
{{ partial "docs/translation-switch" . }}
|
|
||||||
{{ partial "docs/language-switch" . }}
|
|
||||||
{{ end }}
|
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<!-- Restore menu position as soon as possible to avoid flickering -->
|
<!-- Restore menu position as soon as possible to avoid flickering -->
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{ if default true .Site.Params.BookSearch }}
|
{{ if default true .Site.Params.BookSearch }}
|
||||||
<div class="book-search">
|
<div class="book-search">
|
||||||
<input type="text" placeholder="Search" id="book-search-input" maxlength="64" />
|
<input type="text" placeholder="{{ i18n "Search" }}" id="book-search-input" maxlength="64" />
|
||||||
<div class="book-search-spinner spinner hidden"></div>
|
<div class="book-search-spinner spinner hidden"></div>
|
||||||
<ul id="book-search-results"></ul>
|
<ul id="book-search-results"></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
{{ if .IsTranslated }}
|
|
||||||
<ul>
|
|
||||||
<li class="book-section-flat">
|
|
||||||
<span>{{ i18n "translations" }}</span>
|
|
||||||
<ul>
|
|
||||||
{{ range .Translations }}
|
|
||||||
<li>
|
|
||||||
<a href="{{ .Permalink }}">{{ .Lang }}: {{ .Title }}{{ if .IsPage }} ({{ i18n "wordCount" . }}){{ end }}</a>
|
|
||||||
</li>
|
|
||||||
{{ end }}
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
{{ end }}
|
|
|
@ -17,7 +17,7 @@
|
||||||
<div class="book-posts">
|
<div class="book-posts">
|
||||||
{{ partial "docs/mobile-header" . }}
|
{{ partial "docs/mobile-header" . }}
|
||||||
{{ template "main" . }}
|
{{ template "main" . }}
|
||||||
{{ partial "docs/git-footer" . }}
|
{{ partial "docs/footer" . }}
|
||||||
{{ partial "docs/inject/footer" . }}
|
{{ partial "docs/inject/footer" . }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
1
static/svg/translate.svg
Normal file
1
static/svg/translate.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"/></svg>
|
After Width: | Height: | Size: 434 B |
Loading…
Reference in a new issue