Skip to content

Commit 2b9b320

Browse files
Always provide a translated name (#170)
Co-authored-by: Maciej Olko <maciej.olko@gmail.com>
1 parent 52bb1ff commit 2b9b320

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

generate.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,9 @@ def get_project_data(
8484
core_change,
8585
change,
8686
built,
87-
translated_name=languages_built.get(language.code, ''),
87+
translated_name=languages_built.get(language.code)
88+
or translated_names.babel_autonym(language.code)
89+
or '',
8890
contribution_link=contribute.get_contrib_link(language.code, repo),
8991
)
9092

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
babel
12
gitpython
23
urllib3
34
potodo

tests/test_translated_names.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@ def test_get_languages(self):
2020
self.assertIn('pl', result)
2121
self.assertIn('zh-cn', result)
2222

23-
self.assertEqual(result.get('en'), None)
2423
self.assertEqual(result.get('pl'), 'polski')
2524
self.assertEqual(result.get('zh-cn'), '简体中文')
2625

26+
def test_babel_autonym(self):
27+
self.assertEqual(translated_names.babel_autonym('en'), 'English')
28+
self.assertEqual(translated_names.babel_autonym('ga'), 'Gaeilge')
29+
2730

2831
if __name__ == '__main__':
2932
unittest.main()

translated_names.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
1-
"""
2-
Fetch translated names of languages.
3-
4-
Yield a tuple of language code and a string with the translated name.
5-
"""
6-
71
import tomllib
82
from collections.abc import Iterator
93

4+
from babel import Locale
5+
from babel.core import UnknownLocaleError
106
from urllib3 import PoolManager
117

128

9+
def babel_autonym(code: str) -> str | None:
10+
"""Get the translated name for a language code with Babel"""
11+
try:
12+
locale = Locale.parse(code.replace('-', '_'))
13+
return locale.get_display_name(locale)
14+
except (UnknownLocaleError, ValueError):
15+
return None
16+
17+
1318
def get_languages(http: PoolManager) -> Iterator[tuple[str, str]]:
19+
"""
20+
Fetch languages built through docsbuild-scripts.
21+
Yields language codes and translated language names.
22+
"""
1423
data = http.request(
1524
'GET',
1625
'https://raw.githubusercontent.com/python/docsbuild-scripts/refs/heads/main/config.toml',

0 commit comments

Comments
 (0)