[LON-CAPA-cvs] cvs: doc /loncapafiles langcheck.piml

raeburn raeburn at source.lon-capa.org
Tue Nov 8 02:33:08 EST 2011


raeburn		Tue Nov  8 07:33:08 2011 EDT

  Modified files:              
    /doc/loncapafiles	langcheck.piml 
  Log:
  - Generalize language checking to work with distros for which LON-CAPA 
    is supported. 
  
  
Index: doc/loncapafiles/langcheck.piml
diff -u doc/loncapafiles/langcheck.piml:1.1 doc/loncapafiles/langcheck.piml:1.2
--- doc/loncapafiles/langcheck.piml:1.1	Wed Nov  2 13:16:19 2011
+++ doc/loncapafiles/langcheck.piml	Tue Nov  8 07:33:08 2011
@@ -5,27 +5,75 @@
 <target dist="default"></target>
 <perlscript mode="fg">
 
-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 ('<DIST />' eq 'sles9' || '<DIST />' eq 'sles10' || '<DIST />' eq 'sles11' ||
+    '<DIST />' eq 'suse11.1' || '<DIST />' eq 'suse11.2' || '<DIST />' eq 'suse11.3' ||
+    '<DIST />' eq 'suse11.4' || '<DIST />' 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 ('<DIST />' eq 'debian5' || '<DIST />' eq 'debian6' || '<DIST />' eq 'ubuntu6' ||
+         '<DIST />' eq 'ubuntu8' || '<DIST />' 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);
     }
 }
 
 </perlscript>
 </file>
 </files>
-</piml>
\ No newline at end of file
+</piml>
+




More information about the LON-CAPA-cvs mailing list