--- doc/loncapafiles/langcheck.piml 2011/11/02 13:16:19 1.1 +++ doc/loncapafiles/langcheck.piml 2011/11/08 07:33:08 1.2 @@ -5,27 +5,75 @@ -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 'suse11.1' || '' eq 'suse11.2' || '' eq 'suse11.3' || + '' eq 'suse11.4' || '' eq '12.1') { + 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') { + 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); + } +} 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 + +