Skip to content

Commit b394e7d

Browse files
Merge pull request #13791 from nextcloud/jtr/refactor-user-languages-handler
fix: sort user languages by display name
2 parents bae6fc4 + 0046d8f commit b394e7d

File tree

11 files changed

+98
-1219
lines changed

11 files changed

+98
-1219
lines changed

user_manual/Makefile

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# Makefile for Sphinx documentation
2-
#
32

43
# You can set these variables from the command line.
54
SPHINXOPTS +=
@@ -8,12 +7,14 @@ PAPER =
87
BUILDDIR = _build
98

109
# Internal variables.
11-
PAPEROPT_a4 = -D latex_paper_size=a4
12-
PAPEROPT_letter = -D latex_paper_size=letter
13-
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
10+
PAPEROPT_a4 = -D latex_paper_size=a4
11+
PAPEROPT_letter = -D latex_paper_size=letter
12+
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
1413
# the i18n builder cannot share the environment and doctrees with the others
15-
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
16-
LANGS = $(shell touch locale/en && ls locale | grep -v source && rm locale/en) # this trick to add en in the list of langs
14+
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
15+
16+
# Dynamically build the list of language codes (including 'en')
17+
LANGS = $(shell touch locale/en && ls locale | grep -v source && rm locale/en)
1718

1819
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
1920

@@ -48,12 +49,7 @@ clean:
4849

4950
html:
5051
../build/change_file_extension.sh
51-
make versions-template-all html-all merge-folders
52-
53-
versions-template-all: $(foreach lang, $(LANGS), add-lang-to-versions-template-$(lang))
54-
55-
add-lang-to-versions-template-%:
56-
sed -i '/Here go the languages/i {% set available_languages = available_languages + ["$*"] %}' ./_templates/versions.html
52+
make html-all merge-folders
5753

5854
html-all: $(foreach lang, $(LANGS), html-allow-warnings-lang-$(lang))
5955

@@ -104,7 +100,7 @@ htmlhelp:
104100
qthelp:
105101
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
106102
@echo
107-
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
103+
@echo "Build finished; now you can run \"qcollectiongenerator\" with the" \
108104
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
109105
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/OwncloudDocumentation.qhcp"
110106
@echo "To view the help file:"

user_manual/_templates/versions.html

Lines changed: 75 additions & 179 deletions
Original file line numberDiff line numberDiff line change
@@ -1,187 +1,83 @@
11
{% if READTHEDOCS %}
2-
{# Add rst-badge after rst-versions for small badge style. #}
2+
{# Add rst-badge after rst-versions for small badge style. #}
33
<!-- Here go the languages -->
4-
{% set available_languages = available_languages|sort %}
4+
5+
{# Language code to name mapping #}
6+
{% set language_names = {
7+
'af': 'Afrikaans',
8+
'ar': 'Arabic',
9+
'br': 'Breton',
10+
'ca': 'Catalan',
11+
'cs': 'Czech',
12+
'da': 'Danish',
13+
'de': 'German',
14+
'el': 'Greek',
15+
'eo': 'Esperanto',
16+
'es': 'Spanish',
17+
'en': 'English',
18+
'eu': 'Basque',
19+
'fi_FI': 'Finnish',
20+
'fr': 'French',
21+
'hr': 'Croatian',
22+
'hu_HU': 'Hungarian',
23+
'ga': 'Irish',
24+
'gl': 'Galician',
25+
'id': 'Indonesian',
26+
'it': 'Italian',
27+
'ja_JP': 'Japanese',
28+
'ko': 'Korean',
29+
'mn': 'Mongolian',
30+
'nb_NO': 'Norwegian (NB)',
31+
'nl': 'Dutch',
32+
'nn': 'Norwegian (NN)',
33+
'pl': 'Polish',
34+
'pt_PT': 'Portuguese',
35+
'pt_BR': 'Portuguese (BR)',
36+
'ro': 'Romanian',
37+
'ru': 'Russian',
38+
'si': 'Sinhala',
39+
'sk_SK': 'Slovakian',
40+
'sq': 'Albanian',
41+
'sr': 'Slovenian',
42+
'sv': 'Swedish',
43+
'ta': 'Tamil',
44+
'tr': 'Turkish',
45+
'uk_UA': 'Ukrainian',
46+
'uz': 'Uzbek',
47+
'vi': 'Vietnamese',
48+
'zh_CN': 'Chinese',
49+
'zh_HK': 'Chinese (HK)',
50+
'zh_TW': 'Chinese (TW)'
51+
} %}
52+
53+
{# Build list of {code, name} pairs for available languages #}
54+
{% set language_tuples = [] %}
55+
{% for code in available_languages %}
56+
{% set _ = language_tuples.append({'code': code, 'name': language_names.get(code, code)}) %}
57+
{% endfor %}
58+
{% set sorted_languages = language_tuples | sort(attribute='name') %}
59+
560
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
661
<span class="rst-current-version" data-toggle="rst-current-version">
7-
🌐
8-
{% set language_code = language %}
9-
{% if language_code == 'cs' %}
10-
Czech
11-
{% elif language_code == 'da' %}
12-
Danish
13-
{% elif language_code == 'de' %}
14-
German
15-
{% elif language_code == 'el' %}
16-
Greek
17-
{% elif language_code == 'es' %}
18-
Spanish
19-
{% elif language_code == 'en' %}
20-
English
21-
{% elif language_code == 'fi_FI' %}
22-
Finnish
23-
{% elif language_code == 'fr' %}
24-
French
25-
{% elif language_code == 'hr' %}
26-
Croatian
27-
{% elif language_code == 'hu_HU' %}
28-
Hungarian
29-
{% elif language_code == 'id' %}
30-
Indonesian
31-
{% elif language_code == 'it' %}
32-
Italian
33-
{% elif language_code == 'ja_JP' %}
34-
Japanese
35-
{% elif language_code == 'ko' %}
36-
Korean
37-
{% elif language_code == 'mn' %}
38-
Mongolian
39-
{% elif language_code == 'nb_NO' %}
40-
Norwegian
41-
{% elif language_code == 'nl' %}
42-
Dutch
43-
{% elif language_code == 'pl' %}
44-
Polish
45-
{% elif language_code == 'pt_PT' %}
46-
Portuguese
47-
{% elif language_code == 'pt_BR' %}
48-
Portuguese (BR)
49-
{% elif language_code == 'ro' %}
50-
Romanian
51-
{% elif language_code == 'ru' %}
52-
Russian
53-
{% elif language_code == 'sk_SK' %}
54-
Slovakian
55-
{% elif language_code == 'sq' %}
56-
Albanian
57-
{% elif language_code == 'sr' %}
58-
Slovenian
59-
{% elif language_code == 'sv' %}
60-
Swedish
61-
{% elif language_code == 'tr' %}
62-
Turkish
63-
{% elif language_code == 'uk' %}
64-
Ukrainian
65-
{% elif language_code == 'uz' %}
66-
Uzbek
67-
{% elif language_code == 'vi' %}
68-
Vietnamese
69-
{% elif language_code == 'zh_CN' %}
70-
Chinese
71-
{% elif language_code == 'zh_HK' %}
72-
Chinese (HK)
73-
{% elif language_code == 'zh_TW' %}
74-
Chinese (TW)
75-
{% else %}
76-
{{ language_code }}
77-
{% endif %}
62+
🌐 {{ language_names.get(language, language) }}
7863
<span class="fa fa-caret-down"></span>
79-
8064
 ☁️ {{ current_version }}
8165
<span class="fa fa-caret-down"></span>
8266
</span>
8367
<div class="rst-other-versions">
8468
<dl>
8569
<dt>🌐 {{ _('Languages') }}</dt>
86-
{% for language_code in available_languages %}
87-
<dd style="width: 32%; vertical-align: top;">
88-
<a href="/server/latest/user_manual/{{ language_code }}/"
89-
{% if language_code == language %}
90-
style="color: var(--dark-link-color);"
91-
{% endif %}
92-
>
93-
{% if language_code == 'af' %}
94-
Afrikaans
95-
{% elif language_code == 'ar' %}
96-
Arabic
97-
{% elif language_code == 'br' %}
98-
Breton
99-
{% elif language_code == 'ca' %}
100-
Catalan
101-
{% elif language_code == 'cs' %}
102-
Czech
103-
{% elif language_code == 'da' %}
104-
Danish
105-
{% elif language_code == 'de' %}
106-
German
107-
{% elif language_code == 'el' %}
108-
Greek
109-
{% elif language_code == 'eo' %}
110-
Esperanto
111-
{% elif language_code == 'es' %}
112-
Spanish
113-
{% elif language_code == 'en' %}
114-
English
115-
{% elif language_code == 'fi_FI' %}
116-
Finnish
117-
{% elif language_code == 'fr' %}
118-
French
119-
{% elif language_code == 'hr' %}
120-
Croatian
121-
{% elif language_code == 'hu_HU' %}
122-
Hungarian
123-
{% elif language_code == 'ga' %}
124-
Irish
125-
{% elif language_code == 'gl' %}
126-
Galician
127-
{% elif language_code == 'id' %}
128-
Indonesian
129-
{% elif language_code == 'it' %}
130-
Italian
131-
{% elif language_code == 'ja_JP' %}
132-
Japanese
133-
{% elif language_code == 'ko' %}
134-
Korean
135-
{% elif language_code == 'mn' %}
136-
Mongolian
137-
{% elif language_code == 'nb_NO' %}
138-
Norwegian (NB)
139-
{% elif language_code == 'nl' %}
140-
Dutch
141-
{% elif language_code == 'nn' %}
142-
Norwegian (NN)
143-
{% elif language_code == 'pl' %}
144-
Polish
145-
{% elif language_code == 'pt_PT' %}
146-
Portuguese
147-
{% elif language_code == 'pt_BR' %}
148-
Portuguese (BR)
149-
{% elif language_code == 'ro' %}
150-
Romanian
151-
{% elif language_code == 'ru' %}
152-
Russian
153-
{% elif language_code == 'si' %}
154-
Sinhala
155-
{% elif language_code == 'sk_SK' %}
156-
Slovakian
157-
{% elif language_code == 'sq' %}
158-
Albanian
159-
{% elif language_code == 'sr' %}
160-
Slovenian
161-
{% elif language_code == 'sv' %}
162-
Swedish
163-
{% elif language_code == 'ta' %}
164-
Tamil
165-
{% elif language_code == 'tr' %}
166-
Turkish
167-
{% elif language_code == 'uk' %}
168-
Ukrainian
169-
{% elif language_code == 'uz' %}
170-
Uzbek
171-
{% elif language_code == 'vi' %}
172-
Vietnamese
173-
{% elif language_code == 'zh_CN' %}
174-
Chinese
175-
{% elif language_code == 'zh_HK' %}
176-
Chinese (HK)
177-
{% elif language_code == 'zh_TW' %}
178-
Chinese (TW)
179-
{% else %}
180-
{{ language_code }}
181-
{% endif %}
182-
</a>
183-
</dd>
184-
{% endfor %}
70+
{% for lang in sorted_languages %}
71+
<dd style="width: 32%; vertical-align: top;">
72+
<a href="/server/latest/user_manual/{{ lang.code }}/"
73+
{% if lang.code == language %}
74+
style="color: var(--dark-link-color);"
75+
{% endif %}
76+
>
77+
{{ lang.name }}
78+
</a>
79+
</dd>
80+
{% endfor %}
18581
</dl>
18682
</div>
18783
<div class="rst-other-versions">
@@ -208,12 +104,12 @@
208104
<dl>
209105
{# Translators: The phrase "Read the Docs" is not translated #}
210106
<dt>{{ _('On Read the Docs') }}</dt>
211-
<dd>
212-
<a href="//{{ PRODUCTION_DOMAIN }}/projects/{{ slug }}/?fromdocs={{ slug }}">{{ _('Project Home') }}</a>
213-
</dd>
214-
<dd>
215-
<a href="//{{ PRODUCTION_DOMAIN }}/builds/{{ slug }}/?fromdocs={{ slug }}">{{ _('Builds') }}</a>
216-
</dd>
107+
<dd>
108+
<a href="//{{ PRODUCTION_DOMAIN }}/projects/{{ slug }}/?fromdocs={{ slug }}">{{ _('Project Home') }}</a>
109+
</dd>
110+
<dd>
111+
<a href="//{{ PRODUCTION_DOMAIN }}/builds/{{ slug }}/?fromdocs={{ slug }}">{{ _('Builds') }}</a>
112+
</dd>
217113
</dl>
218114
</div>
219115
</div>

user_manual/conf.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
'_templates',
3939
]
4040

41-
4241
exclude_patterns = [
4342
'_build',
4443
]
@@ -91,7 +90,6 @@
9190
# -- Options for LaTeX output ------------------------------------------------
9291
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-latex-output
9392

94-
9593
latex_elements = {
9694
}
9795
latex_documents = [
@@ -154,6 +152,19 @@
154152
current_docs = 'user_manual'
155153
html_context['versions'] = generateVersionsDocs(current_docs)
156154
html_context['theme_vcs_pageview_mode'] += current_docs
157-
html_context['available_languages'] = [
155+
156+
# Automatically detect available languages and pass to template
157+
158+
locale_path = os.path.join(os.path.dirname(__file__), 'locale')
159+
available_languages = []
160+
161+
if os.path.isdir(locale_path):
162+
available_languages = [
163+
lang for lang in os.listdir(locale_path)
164+
if os.path.isdir(os.path.join(locale_path, lang)) and lang != 'source'
158165
]
166+
if 'en' not in available_languages:
167+
available_languages.append('en')
168+
available_languages.sort()
159169

170+
html_context['available_languages'] = available_languages

user_manual/locale/eu/LC_MESSAGES/contents.pot

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)