Skip to content

Commit 6aa487d

Browse files
AA-Turnerezio-melottirffontenellemattwang44
authored
Include languages' translated names in the switcher (#245)
Co-authored-by: Ezio Melotti <[email protected]> Co-authored-by: Rafael Fontenelle <[email protected]> Co-authored-by: W. H. Wang <[email protected]>
1 parent 2efa5bc commit 6aa487d

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

build_docs.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ def __gt__(self, other):
196196
class Language:
197197
iso639_tag: str
198198
name: str
199+
translated_name: str
199200
in_prod: bool
200201
sphinxopts: tuple
201202
html_only: bool = False
@@ -204,6 +205,12 @@ class Language:
204205
def tag(self):
205206
return self.iso639_tag.replace("_", "-").lower()
206207

208+
@property
209+
def switcher_label(self):
210+
if self.translated_name:
211+
return f"{self.name} | {self.translated_name}"
212+
return self.name
213+
207214
@staticmethod
208215
def filter(languages, language_tags=None):
209216
"""Filter a sequence of languages according to --languages."""
@@ -388,7 +395,7 @@ def setup_switchers(
388395
- Cross-link various languages in a language switcher
389396
- Cross-link various versions in a version switcher
390397
"""
391-
language_pairs = sorted((l.tag, l.name) for l in languages if l.in_prod)
398+
language_pairs = sorted((l.tag, l.switcher_label) for l in languages if l.in_prod)
392399
version_pairs = [(v.name, v.picker_label) for v in reversed(versions)]
393400

394401
switchers_template_file = HERE / "templates" / "switchers.js"
@@ -1151,13 +1158,15 @@ def parse_languages_from_config() -> list[Language]:
11511158
"""Read config.toml to discover languages to build."""
11521159
config = tomlkit.parse((HERE / "config.toml").read_text(encoding="UTF-8"))
11531160
defaults = config["defaults"]
1161+
default_translated_name = defaults.get("translated_name", "")
11541162
default_in_prod = defaults.get("in_prod", True)
11551163
default_sphinxopts = defaults.get("sphinxopts", [])
11561164
default_html_only = defaults.get("html_only", False)
11571165
return [
11581166
Language(
11591167
iso639_tag=iso639_tag,
11601168
name=section["name"],
1169+
translated_name=section.get("translated_name", default_translated_name),
11611170
in_prod=section.get("in_prod", default_in_prod),
11621171
sphinxopts=section.get("sphinxopts", default_sphinxopts),
11631172
html_only=section.get("html_only", default_html_only),

config.toml

+19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
1+
# name: the English name for the language.
2+
# translated_name: the 'local' name for the language.
3+
# in_prod: If true, include in the language switcher.
4+
# html_only: If true, only create HTML files.
5+
# sphinxopts: Extra options to pass to SPHINXOPTS in the Makefile.
6+
17
[defaults]
28
# name has no default, it is mandatory.
9+
translated_name = ""
310
in_prod = true
411
html_only = false
512
sphinxopts = [
@@ -13,6 +20,7 @@ name = "English"
1320

1421
[languages.es]
1522
name = "Spanish"
23+
translated_name = "español"
1624
sphinxopts = [
1725
'-D latex_engine=xelatex',
1826
'-D latex_elements.inputenc=',
@@ -21,6 +29,7 @@ sphinxopts = [
2129

2230
[languages.fr]
2331
name = "French"
32+
translated_name = "français"
2433
sphinxopts = [
2534
'-D latex_engine=xelatex',
2635
'-D latex_elements.inputenc=',
@@ -29,13 +38,16 @@ sphinxopts = [
2938

3039
[languages.id]
3140
name = "Indonesian"
41+
translated_name = "Indonesia"
3242
in_prod = false
3343

3444
[languages.it]
3545
name = "Italian"
46+
translated_name = "italiano"
3647

3748
[languages.ja]
3849
name = "Japanese"
50+
translated_name = "日本語"
3951
sphinxopts = [
4052
'-D latex_engine=lualatex',
4153
'-D latex_elements.inputenc=',
@@ -59,6 +71,7 @@ sphinxopts = [
5971

6072
[languages.ko]
6173
name = "Korean"
74+
translated_name = "한국어"
6275
sphinxopts = [
6376
'-D latex_engine=xelatex',
6477
'-D latex_elements.inputenc=',
@@ -68,20 +81,25 @@ sphinxopts = [
6881

6982
[languages.pl]
7083
name = "Polish"
84+
translated_name = "polski"
7185

7286
[languages.pt_BR]
7387
name = "Brazilian Portuguese"
88+
translated_name = "Português brasileiro"
7489

7590
[languages.tr]
7691
name = "Turkish"
92+
translated_name = "Türkçe"
7793

7894
[languages.uk]
7995
name = "Ukrainian"
96+
translated_name = "українська"
8097
in_prod = false
8198
html_only = true
8299

83100
[languages.zh_CN]
84101
name = "Simplified Chinese"
102+
translated_name = "简体中文"
85103
sphinxopts = [
86104
'-D latex_engine=xelatex',
87105
'-D latex_elements.inputenc=',
@@ -90,6 +108,7 @@ sphinxopts = [
90108

91109
[languages.zh_TW]
92110
name = "Traditional Chinese"
111+
translated_name = "繁體中文"
93112
sphinxopts = [
94113
'-D latex_engine=xelatex',
95114
'-D latex_elements.inputenc=',

0 commit comments

Comments
 (0)