civodul pushed a commit to branch master
in repository shepherd.

commit 6dd27d2925fc4fe589e5b2632df5307c41fba1bf
Author: Ludovic Courtès <l...@gnu.org>
Date:   Fri Mar 2 10:18:23 2018 +0100

    Complete i18n support.
    
    * Makefile.am (instantiate): Substitute '%localedir%'.
    (AM_TESTS_ENVIRONMENT): Clear l10n-related variables.
    * modules/shepherd/config.scm.in (%localedir): New variable.
    * modules/shepherd/support.scm (%gettext-domain): New variable.
    (initialize-cli): New procedure.
    * modules/shepherd.scm (main): Use 'initialize-cli' instead of
    'setlocale'.
    * modules/shepherd/scripts/halt.scm (main): Likewise.
    * modules/shepherd/scripts/herd.scm (main): Likewise.
    * modules/shepherd/scripts/reboot.scm (main): Likewise.
---
 Makefile.am                         |  4 +++-
 modules/shepherd.scm                |  2 +-
 modules/shepherd/config.scm.in      |  2 ++
 modules/shepherd/scripts/halt.scm   |  4 ++--
 modules/shepherd/scripts/herd.scm   |  2 +-
 modules/shepherd/scripts/reboot.scm |  4 ++--
 modules/shepherd/support.scm        | 26 ++++++++++++++++++++++++++
 7 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 1c394e1..7583b59 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -138,6 +138,7 @@ instantiate =                                               
\
   -e 's,%modbuilddir%,${abs_top_builddir}/modules,g'   \
   -e 's,%localstatedir%,${localstatedir},g'            \
   -e 's,%sysconfdir%,${sysconfdir},g'                  \
+  -e 's,%localedir%,${localedir},g'                    \
   -e 's,%VERSION%,@VERSION@,g'                         \
   -e 's,%PACKAGE_BUGREPORT%,@PACKAGE_BUGREPORT@,g'     \
   -e 's,%PACKAGE_NAME%,@PACKAGE_NAME@,g'               \
@@ -195,7 +196,8 @@ TEST_EXTENSIONS = .sh
 EXTRA_DIST += $(TESTS)
 
 AM_TESTS_ENVIRONMENT =                         \
-  unset XDG_CONFIG_HOME; LC_ALL=C              \
+  unset XDG_CONFIG_HOME; unset LANGUAGE                \
+  LC_ALL=C LC_MESSAGES=C                       \
   PATH="$(abs_top_builddir):$$PATH"            \
   SHELL="$(SHELL)" GUILE="$(GUILE)"            \
   
GUILE_LOAD_PATH="$(abs_top_srcdir)/modules:$(abs_top_builddir)/modules:$$GUILE_LOAD_PATH"
 \
diff --git a/modules/shepherd.scm b/modules/shepherd.scm
index 02b27f6..df5420f 100644
--- a/modules/shepherd.scm
+++ b/modules/shepherd.scm
@@ -49,7 +49,7 @@
 
 ;; Main program.
 (define (main . args)
-  (false-if-exception (setlocale LC_ALL ""))
+  (initialize-cli)
 
   (let ((config-file #f)
        (socket-file default-socket-file)
diff --git a/modules/shepherd/config.scm.in b/modules/shepherd/config.scm.in
index 345078c..547b885 100644
--- a/modules/shepherd/config.scm.in
+++ b/modules/shepherd/config.scm.in
@@ -5,6 +5,7 @@
             Prefix-dir
             %localstatedir
             %sysconfdir
+            %localedir
             copyright
             bug-address
             package-name
@@ -14,6 +15,7 @@
 (define Prefix-dir "%PREFIX%")
 (define %localstatedir "%localstatedir%")
 (define %sysconfdir "%sysconfdir%")
+(define %localedir "%localedir%")
 
 (define copyright "Copyright (C) 2002, 2003 Wolfgang J�hrling")
 (define bug-address "%PACKAGE_BUGREPORT%")
diff --git a/modules/shepherd/scripts/halt.scm 
b/modules/shepherd/scripts/halt.scm
index 836a312..5115a53 100644
--- a/modules/shepherd/scripts/halt.scm
+++ b/modules/shepherd/scripts/halt.scm
@@ -1,5 +1,5 @@
 ;; halt.scm -- Halt or power off the system.
-;; Copyright (C) 2013, 2014, 2015, 2016 Ludovic Courtès <l...@gnu.org>
+;; Copyright (C) 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <l...@gnu.org>
 ;;
 ;; This file is part of the GNU Shepherd.
 ;;
@@ -29,7 +29,7 @@
 
 ;; Main program.
 (define (main . args)
-  (false-if-exception (setlocale LC_ALL ""))
+  (initialize-cli)
 
   (parameterize ((program-name "halt"))
     (let ((socket-file %system-socket-file)
diff --git a/modules/shepherd/scripts/herd.scm 
b/modules/shepherd/scripts/herd.scm
index 1691182..36219b8 100644
--- a/modules/shepherd/scripts/herd.scm
+++ b/modules/shepherd/scripts/herd.scm
@@ -172,7 +172,7 @@ talking to shepherd"))
 
 ;; Main program.
 (define (main . args)
-  (false-if-exception (setlocale LC_ALL ""))
+  (initialize-cli)
 
   (parameterize ((program-name "herd"))
     (let ((socket-file default-socket-file)
diff --git a/modules/shepherd/scripts/reboot.scm 
b/modules/shepherd/scripts/reboot.scm
index e151cbb..bd63638 100644
--- a/modules/shepherd/scripts/reboot.scm
+++ b/modules/shepherd/scripts/reboot.scm
@@ -1,5 +1,5 @@
 ;; reboot.scm -- Reboot the system.
-;; Copyright (C) 2013, 2014, 2015, 2016 Ludovic Courtès <l...@gnu.org>
+;; Copyright (C) 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <l...@gnu.org>
 ;;
 ;; This file is part of the GNU Shepherd.
 ;;
@@ -29,7 +29,7 @@
 
 ;; Main program.
 (define (main . args)
-  (false-if-exception (setlocale LC_ALL ""))
+  (initialize-cli)
 
   (parameterize ((program-name "reboot"))
     (let ((socket-file %system-socket-file)
diff --git a/modules/shepherd/support.scm b/modules/shepherd/support.scm
index bb01edc..c67575f 100644
--- a/modules/shepherd/support.scm
+++ b/modules/shepherd/support.scm
@@ -34,6 +34,9 @@
             mkdir-p
             with-directory-excursion
 
+            initialize-cli
+
+            %gettext-domain
             l10n
             local-output
             display-version
@@ -195,6 +198,29 @@ output port, and PROC's result is returned."
 
 
 
+(define %gettext-domain
+  ;; The gettext message domain.
+  "shepherd")
+
+(define (initialize-cli)
+  "Perform the usual initialization for stand-alone Shepherd commands."
+  ;; By default don't annoy users with deprecation warnings.  In practice,
+  ;; 'define-deprecated' in (ice-9 deprecated) arranges so that those warnings
+  ;; are emitted at expansion-time only, but there are cases where they could
+  ;; slip through, for instance when interpreting code.
+  (unless (getenv "GUILE_WARN_DEPRECATED")
+    (debug-disable 'warn-deprecated))
+
+  ;; In Guile 2.2+, the locale is installed by default.
+  (cond-expand
+    (guile-2.0 (false-if-exception (setlocale LC_ALL "")))
+    (else      #t))
+
+  (bindtextdomain %gettext-domain %localedir)
+  (textdomain %gettext-domain)
+  (setvbuf (current-output-port) _IOLBF)
+  (setvbuf (current-error-port) _IOLBF))
+
 ;; Localized version of STR.
 (define l10n gettext)
 

Reply via email to