blob: 59cdcf179ce6bfe6678542083b934aa8656f1a88 (
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
# /etc/profile.d/lang.sh - set i18n stuff
# revert special console/X11 settings if needed
if [ "$LC_SOURCED_CONSOLE" = 1 -a -n "$DISPLAY" ]; then
unset LC_SOURCED
unset LC_SOURCED_CONSOLE
elif [ "$LC_SOURCED_X11" = 1 -a -z "$DISPLAY" ]; then
unset LC_SOURCED
unset LC_SOURCED_X11
fi
# only source one of the possible files, and in that order;
# if system wide and user config are mixed and different, umpredictable
# things will happen...
for langfile in "$HOME/.i18n" /etc/locale.conf /etc/sysconfig/i18n ; do
[ -f $langfile -a "$LC_SOURCED" != 1 ] && . $langfile && LC_SOURCED=1 && export LC_SOURCED
done
if [ "$LC_SOURCED" = 1 ]; then
if [ -n "$LANG" ] ; then
[ "$LANG" = "C" ] && LANG="en_US"
export LANG
else
unset LANG
fi
[ -n "$LANG" ] && export LANG || unset LANG
[ -n "$LC_ADDRESS" ] && export LC_ADDRESS || unset LC_ADDRESS
[ -n "$LC_CTYPE" ] && export LC_CTYPE || unset LC_CTYPE
[ -n "$LC_COLLATE" ] && export LC_COLLATE || unset LC_COLLATE
[ -n "$LC_IDENTIFICATION" ] && export LC_IDENTIFICATION || unset LC_IDENTIFICATION
[ -n "$LC_MEASUREMENT" ] && export LC_MEASUREMENT || unset LC_MEASUREMENT
[ -n "$LC_MESSAGES" ] && export LC_MESSAGES || unset LC_MESSAGES
[ -n "$LC_MONETARY" ] && export LC_MONETARY || unset LC_MONETARY
[ -n "$LC_NAME" ] && export LC_NAME || unset LC_NAME
[ -n "$LC_NUMERIC" ] && export LC_NUMERIC || unset LC_NUMERIC
[ -n "$LC_PAPER" ] && export LC_PAPER || unset LC_PAPER
[ -n "$LC_TELEPHONE" ] && export LC_TELEPHONE || unset LC_TELEPHONE
[ -n "$LC_TIME" ] && export LC_TIME || unset LC_TIME
if [ -n "$LC_ALL" ]; then
if [ "$LC_ALL" != "$LANG" ]; then
export LC_ALL
else
unset LC_ALL
fi
else
unset LC_ALL
fi
[ -n "$LANGUAGE" ] && export LANGUAGE || unset LANGUAGE
[ -n "$LINGUAS" ] && export LINGUAS || unset LINGUAS
if [ -n "$RPM_INSTALL_LANG" ]; then
export RPM_INSTALL_LANG
else
unset RPM_INSTALL_LANG
fi
# XIM and keyboard stuff
[ -n "$ENC" ] && export ENC || unset ENC
[ -n "$XIM" ] && export XIM || unset XIM
[ -n "$XIM_PROGRAM" ] && export XIM_PROGRAM || unset XIM_PROGRAM
[ -n "$XMODIFIERS" ] && export XMODIFIERS || unset XMODIFIERS
[ -n "$_XKB_CHARSET" ] && export _XKB_CHARSET || unset _XKB_CHARSET
[ -n "$GTK_IM_MODULE" ] && export GTK_IM_MODULE || unset GTK_IM_MODULE
[ -n "$QT_IM_MODULE" ] && export QT_IM_MODULE || unset QT_IM_MODULE
consoletype=$CONSOLETYPE
if [ -z "$consoletype" ]; then
consoletype=$(/sbin/consoletype stdout 2> /dev/null)
fi
if [ -n "$CHARSET" ]; then
case $CHARSET in
8859-1|8859-2|8859-5|8859-8|8859-15|KOI*)
if [ "$TERM" = "linux" && tty | grep --quiet -e '/dev/tty'; then
echo -n -e '\033(K' 2>/dev/null > /proc/$$/fd/0
fi
;;
esac
elif [ -n "$SYSFONTACM" ]; then
case $SYSFONTACM in
iso01*|iso02*|iso05*|iso08*|iso15*|koi*|latin2-ucw*)
if [ "$TERM" = "linux" && tty | grep --quiet -e '/dev/tty'; then
echo -n -e '\033(K' 2>/dev/null > /proc/$$/fd/0
fi
;;
esac
fi
if [ -n "$LANG" ]; then
case $LANG in
*.utf8*|*.UTF-8*)
if [ "$TERM" = "linux" ]; then
if [ "$consoletype" = "vt" ]; then
if [ -x /bin/unicode_start ] && /sbin/consoletype fg 2> /dev/null ; then
for langfile in /etc/sysconfig/i18n "$HOME/.i18n" ; do
[ -f $langfile ] && . $langfile
done
/bin/unicode_start $SYSFONT $SYSFONTACM
fi
case $LANG in
ja*) LANG=en_US.UTF-8 ;;
ko*) LANG=en_US.UTF-8 ;;
si*) LANG=en_US.UTF-8 ;;
zh*) LANG=en_US.UTF-8 ;;
ar*) LANG=en_US.UTF-8 ;;
fa*) LANG=en_US.UTF-8 ;;
he*) LANG=en_US.UTF-8 ;;
en_IN*) ;;
*_IN*) LANG=en_US.UTF-8 ;;
esac
fi
fi
;;
*)
if [ "$TERM" = "linux" ]; then
if [ "$consoletype" = "vt" ]; then
case $LANG in
ja*) LANG=en_US ;;
ko*) LANG=en_US ;;
si*) LANG=en_US ;;
zh*) LANG=en_US ;;
ar*) LANG=en_US ;;
fa*) LANG=en_US ;;
he*) LANG=en_US ;;
en_IN*) ;;
*_IN*) LANG=en_US ;;
esac
[ -x /bin/unicode_stop ] && /sbin/consoletype fg 2> /dev/null && /bin/unicode_stop
fi
fi
;;
esac
fi
# handling of special cases where localization is done
# only on console or only on X11.
# when launching an xdm-like program we are not yet in X11 (so
# $DISPLAY is not defined) but obviously we will, so we check
# also $DESKTOP which is defined before calling xdm-like program
if [ -n "$DISPLAY" ]; then
if [ "$X11_NOT_LOCALIZED" = "yes" ]; then
LANGUAGE=C
LC_SOURCED_X11=1
export LC_SOURCED_X11
fi
elif [ -z "$DESKTOP" ]; then
if [ "$CONSOLE_NOT_LOCALIZED" = "yes" ]; then
LANGUAGE=C
LC_SOURCED_CONSOLE=1
export LC_SOURCED_CONSOLE
fi
fi
[ -n "$LANGUAGE" ] && export LANGUAGE
unset consoletype
fi
unset langfile
|