summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
authorrcombs <rcombs@rcombs.me>2023-07-23 14:46:28 -0700
committersfan5 <sfan5@live.de>2023-07-25 11:34:06 +0200
commit4ac5e6c810760815408a02f38a23a9045489cf81 (patch)
tree84d02cb20b42e9b6740ffd2722dbcf77a16ffa49 /osdep
parent4939570e17d4659944924ed6012793b433109ab1 (diff)
downloadmpv-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.c11
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);