diff options
author | rcombs <rcombs@rcombs.me> | 2023-07-23 14:46:28 -0700 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2023-07-25 11:34:06 +0200 |
commit | 4ac5e6c810760815408a02f38a23a9045489cf81 (patch) | |
tree | 84d02cb20b42e9b6740ffd2722dbcf77a16ffa49 /osdep | |
parent | 4939570e17d4659944924ed6012793b433109ab1 (diff) | |
download | mpv-4ac5e6c810760815408a02f38a23a9045489cf81.tar.bz2 mpv-4ac5e6c810760815408a02f38a23a9045489cf81.tar.xz |
language-posix: as a fallback, treat "C" as "en"
If we see "C" in one of the language vars we check, don't treat it as a language tag.
Once we've checked everything, if we don't have any languages, but saw "C" anywhere, fall back on "en".
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/language-posix.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/osdep/language-posix.c b/osdep/language-posix.c index f5d1a3a72c..8fd68c6420 100644 --- a/osdep/language-posix.c +++ b/osdep/language-posix.c @@ -33,6 +33,7 @@ char **mp_get_user_langs(void) size_t nb = 0; char **ret = NULL; + bool has_c = false; // Prefer anything we get from LANGUAGE first for (const char *langList = getenv("LANGUAGE"); langList && *langList;) { @@ -49,11 +50,21 @@ char **mp_get_user_langs(void) const char *envval = getenv(list[i]); if (envval && *envval) { size_t len = strcspn(envval, ".@"); + if (!strncmp("C", envval, len)) { + has_c = true; + continue; + } + MP_TARRAY_GROW(NULL, ret, nb); ret[nb++] = talloc_strndup(ret, envval, len); } } + if (has_c && !nb) { + MP_TARRAY_GROW(NULL, ret, nb); + ret[nb++] = talloc_strdup(ret, "en"); + } + // Null-terminate the list MP_TARRAY_APPEND(NULL, ret, nb, NULL); |