blob: bbd2ca7a7cf6739eae5b6e77ba0acd0e1c025434 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#!/bin/sh
# vi: ts=4 noexpandtab
#
# Author: Ben Howard <ben.howard@canonical.com>
# Author: Scott Moser <scott.moser@ubuntu.com>
# (c) 2012, Canonical Group, Ltd.
#
# Purpose: Detect invalid locale settings and inform the user
# of how to fix them.
#
locale_warn() {
local cr="
"
local line bad_names="" bad_lcs="" key="" value="" var=""
local w1 w2 w3 w4 remain
# locale is expected to output either:
# VARIABLE=
# VARIABLE="value"
# locale: Cannot set LC_SOMETHING to default locale
while read -r w1 w2 w3 w4 remain; do
case "$w1" in
locale:) bad_names="${bad_names} ${w4}";;
*)
key=${w1%%=*}
val=${w1#*=}
val=${val#\"}
val=${val%\"}
vars="${vars} $key=$val";;
esac
done
for bad in $bad_names; do
for var in ${vars}; do
[ "${bad}" = "${var%=*}" ] &&
bad_lcs="${bad_lcs} ${var#*=}" && break 2
done
done
bad_lcs=${bad_lcs# }
[ -n "$bad_lcs" ] || return 0
printf "_____________________________________________________________________\n"
printf "WARNING! Your environment specifies an invalid locale.\n"
printf " This can affect your user experience significantly, including the\n"
printf " ability to manage packages. You may install the locales by running\n"
printf " the following command(s):\n\n"
local bad invalid="" to_gen="" sfile="/usr/share/i18n/SUPPORTED"
if [ ! -e "$sfile" ]; then
printf " sudo apt-get install locales\n"
fi
if [ -e "$sfile" ]; then
for bad in ${bad_lcs}; do
grep -q -i "${bad}" "$sfile" &&
to_gen="${to_gen} ${bad}" ||
invalid="${invalid} ${bad}"
done
else
to_gen=$bad_lcs
fi
for bad in ${to_gen}; do
printf " sudo apt-get install language-pack-${bad%%_*}\n"
printf " sudo locale-gen ${bad}\n"
done
printf "\n"
for bad in ${invalid}; do
printf "WARNING: '${bad}' is an invalid locale\n"
done
printf "To see all available language packs, run:\n"
printf " apt-cache search \"^language-pack-[a-z][a-z]$\"\n"
printf "To disable for all users, run:\n"
printf " sudo touch /var/lib/cloud/instance/locale-check.skip\n"
printf "To disable this check for this user only, run: \n"
printf " touch ~/.locale-test.skip \n"
printf "_____________________________________________________________________\n\n"
}
[ -f /home/${USER}/.locale-test.skip -o -f /var/lib/cloud/instance/locale-check.skip ] ||
locale 2>&1 | locale_warn
unset locale_warn
|