Skip to content

Commit c0ef623

Browse files
authored
Custom default language specified by TLDR_LANGUAGE (#157)
1 parent ed5b912 commit c0ef623

File tree

3 files changed

+36
-8
lines changed

3 files changed

+36
-8
lines changed

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ export TLDR_COLOR_DESCRIPTION="white"
6363
export TLDR_COLOR_EXAMPLE="green"
6464
export TLDR_COLOR_COMMAND="red"
6565
export TLDR_COLOR_PARAMETER="white"
66+
export TLDR_LANGUAGE="es"
6667
export TLDR_CACHE_ENABLED=1
6768
export TLDR_CACHE_MAX_AGE=720
6869
export TLDR_PAGES_SOURCE_LOCATION="https://raw.githubusercontent.com/tldr-pages/tldr/master/pages"
@@ -120,12 +121,14 @@ Any of the values of above may be omitted. For example, you can do similar thing
120121

121122
The language that tldr will use is dependent on a number of factors. If you specify a language via the
122123
`--language` flag, tldr will attempt to use that language and only that language. Otherwise, it will
123-
default to language set using `LANGUAGE` and `LANG` (ignoring the value `C` and `POSIX`).
124+
try to use the language specified by `TLDR_LANGUAGE`. If it is not set, or the page does not exist in that language,
125+
then tldr will use the
126+
language set using `LANGUAGE` and `LANG` (ignoring the values `C` and `POSIX`).
124127
If neither are set, then tldr will always attempt to get the `en` page. Finally, if `LANG` is set, it uses `LANGUAGE`, if set,
125128
first as the priority list to try languages in, followed by `LANG` if not included in `LANGUAGE`
126129
and `en` as fallback (assuming it does not already appear somewhere in `LANGUAGE` or `LANG`).
127130
All language values should be set to a value that follows [RFC 1766](https://tools.ietf.org/html/rfc1766.html),
128-
with the special exception of `C` and `POSIX` which is ignored.
131+
with the special exceptions of `C` and `POSIX` which are ignored.
129132

130133
### Remote source
131134

tests/test_tldr.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,23 @@ def test_get_default_language_unset(monkeypatch):
6161
assert tldr.get_default_language() is None
6262

6363

64+
@pytest.mark.parametrize("tldr_language, language, lang, expected", [
65+
("en", None, "fr_FR", ["en", "fr"]),
66+
("de", "ja_JA:cz_CZ", "cz_CZ", ["de", "ja", "cz", "en"]),
67+
("it", None, "C", ["it", "en"]),
68+
])
69+
def test_tldr_language(tldr_language, language, lang, expected, monkeypatch):
70+
for name, var in [("TLDR_LANGUAGE", tldr_language),
71+
("LANGUAGE", language),
72+
("LANG", lang)]:
73+
# Unset environment variable if their value is given as None
74+
if var is None:
75+
monkeypatch.delenv(name, raising=False)
76+
else:
77+
monkeypatch.setenv(name, var)
78+
assert tldr.get_language_list() == expected
79+
80+
6481
@pytest.mark.parametrize("platform, expected", [
6582
("linux2", "linux"),
6683
("win32", "windows"),

tldr.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ def get_platform_list():
184184

185185

186186
def get_language_list():
187+
tldr_language = get_language_code(os.environ.get('TLDR_LANGUAGE', ''))
187188
languages = os.environ.get('LANGUAGE', '').split(':')
188189
languages = list(map(
189190
get_language_code,
@@ -192,12 +193,19 @@ def get_language_list():
192193

193194
default_lang = get_default_language()
194195

195-
if default_lang is not None and default_lang not in languages:
196-
languages.append(default_lang)
197-
else:
196+
if default_lang is None:
198197
languages = []
198+
elif default_lang not in languages:
199+
languages.append(default_lang)
200+
if tldr_language:
201+
# remove tldr_language if it already exists to avoid double entry
202+
try:
203+
languages.remove(tldr_language)
204+
except ValueError:
205+
pass
206+
languages.insert(0, tldr_language)
199207
if 'en' not in languages:
200-
languages.append(None)
208+
languages.append('en')
201209
return languages
202210

203211

@@ -338,8 +346,8 @@ def output(page):
338346

339347
def update_cache(language=None):
340348
if language is None:
341-
default_lang = get_default_language()
342-
language = default_lang if default_lang is not None else 'en'
349+
tldr_language = os.environ.get("TLDR_LANGUAGE", get_default_language())
350+
language = tldr_language if tldr_language else 'en'
343351
elif isinstance(language, list):
344352
language = language[0]
345353
try:

0 commit comments

Comments
 (0)