--- doc/loncapafiles/langcheck.piml 2011/11/02 13:16:19 1.1 +++ doc/loncapafiles/langcheck.piml 2024/11/15 16:25:30 1.39 @@ -1,3 +1,32 @@ + + + + + + / @@ -5,27 +34,113 @@ -print "Checking root bash language"; -my $lang = `locale`; -if ($lang =~ "LANG=en") { - print "... OK\n"; -} else { - print "\n**** WARNING: You seem to have a non-english root bash. This can cause incorrect error messages.\n". - " It is recommended to set your bash language to English.\n"; +if (open(PIPE,"locale |")) { + my @lines = <PIPE>; + close(PIPE); + print "Checking root bash language"; + my ($is_english,$is_posix); + foreach my $line (@lines) { + if ($line =~ /^LANG=en/) { + $is_english = 1; + print "... OK\n"; + last; + } elsif ($line =~ /^LANG=POSIX/) { + $is_posix = 1; + } + if ($is_posix) { + if ($line =~ /^LC_CTYPE=en/) { + $is_english = 1; + print "... OK\n"; + last; + } + } + } + if (!$is_english) { + print "\n**** WARNING: You seem to have a non-English root bash. This can cause incorrect error messages.\n". + " It is recommended that you set your bash language to English by setting LANG=en_US.UTF-8 in /root/.bashrc\n"; + } } -my $file = "/etc/sysconfig/i18n"; -if (open(my $IN,'<'.$file)) { - print "Checking OS language"; - if (<$IN> =~ "LANG=\"en") { - print "... OK\n"; - } else { - print "\n**** WARNING: You seem to have a non-english operating system. ". - "It is recommended to set the language in /etc/sysconfig/i18n to English.\n"; +my $osmsg = "\n**** WARNING: You seem to have a non-English operating system.\n"; + +if ('' eq 'sles9' || '' eq 'sles10' || '' eq 'sles11' || '' eq 'sles12' || + '' eq 'suse11.1' || '' eq 'suse11.2' || '' eq 'suse11.3' || + '' eq 'suse11.4' || '' eq 'suse12.1' || '' eq 'suse12.2' || + '' eq 'suse12.3' || '' eq 'suse13.1' || '' eq 'suse13.2') { + if (open(PIPE,"cat /etc/sysconfig/language |grep '^RC_LANG' |")) { + print "Checking OS language"; + if (<PIPE> =~ /^RC_LANG="?en/) { + print "... OK\n"; + } else { + print $osmsg. + "It is recommended that you set LANG=\"en_US.UTF-8\" in /etc/sysconfig/language\n"; + } + close(PIPE); + } +} elsif ('' eq 'debian5' || '' eq 'debian6' || '' eq 'ubuntu6' || + '' eq 'ubuntu8' || '' eq 'ubuntu10' || '' eq 'ubuntu12' || + '' eq 'ubuntu14' || '' eq 'ubuntu16' || '' eq 'ubuntu18' || + '' eq 'ubuntu20' || '' eq 'ubuntu22' || '' eq 'ubuntu24' || + '' eq 'debian10' || '' eq 'debian11' || '' eq 'debian12') { + if (open(PIPE,"cat /etc/default/locale |grep '^LANG' |")) { + print "Checking OS language"; + if (<PIPE> =~ /^LANG="?en/) { + print "... OK\n"; + } else { + print $osmsg. + "It is recommended that you set LANG=en_US.UTF-8 in /etc/default/locale\n"; + } + close(PIPE); + } +} elsif ('' eq 'fedora18' || '' eq 'fedora19' || '' eq 'fedora20' || + '' eq 'fedora21' || '' eq 'fedora22' || '' eq 'fedora23' || + '' eq 'fedora24' || '' eq 'fedora25' || '' eq 'fedora26' || + '' eq 'fedora27' || '' eq 'fedora28' || '' eq 'fedora29' || + '' eq 'fedora30' || '' eq 'fedora31' || '' eq 'fedora32' || + '' eq 'fedora33' || '' eq 'fedora34' || '' eq 'fedora35' || + '' eq 'fedora36' || '' eq 'fedora37' || '' eq 'fedora38' || + '' eq 'fedora39' || '' eq 'fedora40' || '' eq 'fedora41' || + '' eq 'scientific7' || '' eq 'rhes7' || '' eq 'centos7' || + '' eq 'rhes8' || '' eq 'centos8' || '' eq 'oracle7' || + '' eq 'oracle8' || '' eq 'rocky8' || '' eq 'alma8' || + '' eq 'centos8-stream' || '' eq 'centos9-stream' || '' eq 'rhes9' || + '' eq 'oracle9' || '' eq 'rocky9' || '' eq 'alma9') { + if (open(PIPE,"cat /etc/locale.conf |grep '^LANG' |")) { + print "Checking OS language"; + if (<PIPE> =~ /^LANG="?en/) { + print "... OK\n"; + } else { + print $osmsg. + "It is recommended that you set LANG=\"en_US.UTF-8\" in /etc/locale.conf\n"; + } + close(PIPE); + } +} elsif ('' eq 'sles15') { + if (open(PIPE,"cat /etc/locale.conf |grep '^LANG' |")) { + print "Checking OS language"; + if (<PIPE> =~ /^LANG=en/) { + print "... OK\n"; + } else { + print $osmsg. + "It is recommended that you set LANG=en_US.UTF-8 in /etc/locale.conf\n"; + } + close(PIPE); + } +} else { + if (open(PIPE,"cat /etc/sysconfig/i18n |grep '^LANG' |")) { + print "Checking OS language"; + if (<PIPE> =~ /^LANG="en/) { + print "... OK\n"; + } else { + print $osmsg. + "It is recommended that you set LANG=\"en_US.UTF-8\" in /etc/sysconfig/i18n.\n"; + } + close(PIPE); } } - \ No newline at end of file + +