setup/lang.csh
Zbigniew Jędrzejewski-Szmek 36eef7070f Merge upstream into downstream
This implements https://pagure.io/setup/issue/51.

The "upstream" is only used to build the package in our dist-git, so we can reduce the
total amount of work by moving files downstream and maintaining them there.

The package after the rebuild is identical, except for intentional changes
(removal of Group, updating of Url, bumping of the Version):

$ rpmdiff -iT noarch/setup-2.14.5-2.fc41.noarch.rpm noarch/setup-2.15.0-1.fc41.noarch.rpm
S.5.....    GROUP
S.5.....    URL
removed     REQUIRES config(setup) = 2.14.5-2.fc41
added       REQUIRES config(setup) = 2.15.0-1.fc41
removed     PROVIDES config(setup) = 2.14.5-2.fc41
removed     PROVIDES setup = 2.14.5-2.fc41
added       PROVIDES config(setup) = 2.15.0-1.fc41
added       PROVIDES setup = 2.15.0-1.fc41
2024-05-27 14:32:47 +02:00

109 lines
3.3 KiB
Tcsh

# /etc/profile.d/lang.csh - exports environment variables, and provides fallback
# for CJK languages that can't be displayed in console.
# Resets the locale if unavailable.
unset LANG_backup
# If unavailable, reset to the default. Do this before reading in any
# explicit user configuration. We simply check if locale emits any
# warnings, and assume that the settings are invalid if it does.
set locale_error=`(/usr/bin/locale >/dev/null) |& cat`
if ("${locale_error}" != "") then
if (${?LANG}) then
setenv LANG C.UTF-8
endif
unsetenv LC_ALL
setenv LC_CTYPE C.UTF-8
setenv LC_NUMERIC C.UTF-8
setenv LC_TIME C.UTF-8
setenv LC_COLLATE C.UTF-8
setenv LC_MONETARY C.UTF-8
setenv LC_MESSAGES C.UTF-8
setenv LC_PAPER C.UTF-8
setenv LC_NAME C.UTF-8
setenv LC_ADDRESS C.UTF-8
setenv LC_TELEPHONE C.UTF-8
setenv LC_MEASUREMENT C.UTF-8
setenv LC_IDENTIFICATION C.UTF-8
else
if (${?LANG}) then
set LANG_backup=${LANG}
endif
endif
foreach config (/etc/locale.conf "${HOME}/.i18n")
if (-f "${config}") then
# NOTE: We are using eval & sed here to avoid invoking of any commands & functions from those files.
eval `/usr/bin/sed -r -e 's/^[[:blank:]]*([[:upper:]_]+)=([[:print:][:digit:]\._-]+|"[[:print:][:digit:]\._-]+")/setenv \1 \2;/;t;d' ${config}`
endif
end
if (${?LANG_backup}) then
setenv LANG "${LANG_backup}"
endif
unset LANG_backup config locale_error
# ----------------------------------------------
# The LC_ALL is not supposed to be set in /etc/locale.conf according to 'man 5 locale.conf'.
# If it is set, then we expect it is user's explicit override (most likely from ~/.i18n file).
# See 'man 7 locale' for more info about LC_ALL.
if (${?LC_ALL}) then
if (${?LANG}) then
if (${LC_ALL} != ${LANG}) then
setenv LC_ALL
else
unsetenv LC_ALL
endif
else
unsetenv LC_ALL
endif
endif
# The ${LANG} manipulation is necessary only in virtual terminal (a.k.a. console - /dev/tty*):
set in_console=`/usr/bin/tty | /usr/bin/grep -vc -e '/dev/tty'`
if (${?LANG} && ${?TERM}) then
if (${TERM} == 'linux' && $in_console == 0) then
set utf8_used=`echo ${LANG} | /usr/bin/grep -vc -E -i -e '^.+\.utf-?8$'`
if (${utf8_used} == 0) then
switch (${LANG})
case en_IN*:
breaksw
case ja*:
case ko*:
case si*:
case zh*:
case ar*:
case fa*:
case he*:
case *_IN*:
setenv LANG en_US.UTF-8
breaksw
endsw
else
switch (${LANG})
case en_IN*:
breaksw
case ja*:
case ko*:
case si*:
case zh*:
case ar*:
case fa*:
case he*:
case *_IN*:
setenv LANG en_US
breaksw
endsw
endif
# NOTE: We are not exporting the ${LANG} here again on purpose.
# If user starts GUI session from console manually, then
# the previously set LANG should be okay to use.
endif
endif
unset in_console utf8_used