diff --git a/conf/management-initscript b/conf/management-initscript index dc62bc5d..5067396c 100755 --- a/conf/management-initscript +++ b/conf/management-initscript @@ -28,7 +28,8 @@ EXEC_AS_USER=root # Ensure Python reads/writes files in UTF-8. If the machine # triggers some other locale in Python, like ASCII encoding, # Python may not be able to read/write files. Here and in -# setup/functions.sh. +# setup/start.sh (where the locale is also installed if not +# already present). export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 diff --git a/setup/functions.sh b/setup/functions.sh index 9aab289b..23c2492b 100644 --- a/setup/functions.sh +++ b/setup/functions.sh @@ -1,12 +1,3 @@ -# Ensure Python reads/writes files in UTF-8. If the machine -# triggers some other locale in Python, like ASCII encoding, -# Python may not be able to read/write files. Here and in -# the management daemon startup script. -export LANGUAGE=en_US.UTF-8 -export LC_ALL=en_US.UTF-8 -export LANG=en_US.UTF-8 -export LC_TYPE=en_US.UTF-8 - function hide_output { # This function hides the output of a command unless the command fails # and returns a non-zero exit code. diff --git a/setup/start.sh b/setup/start.sh index aa2cbe4e..46584a69 100755 --- a/setup/start.sh +++ b/setup/start.sh @@ -8,6 +8,21 @@ source setup/functions.sh # load our functions # machine with enough memory? If not, this shows an error and exits. . setup/preflight.sh +# Ensure Python reads/writes files in UTF-8. If the machine +# triggers some other locale in Python, like ASCII encoding, +# Python may not be able to read/write files. Here and in +# the management daemon startup script. + +if [ -z `locale -a | grep en_US.utf8` ]; then + # Generate locale if not exists + hide_output locale-gen en_US.UTF-8 +fi + +export LANGUAGE=en_US.UTF-8 +export LC_ALL=en_US.UTF-8 +export LANG=en_US.UTF-8 +export LC_TYPE=en_US.UTF-8 + # Recall the last settings used if we're running this a second time. if [ -f /etc/mailinabox.conf ]; then # Run any system migrations before proceeding. Since this is a second run,