From 95094884a8704a6c58b4c610fed983b7803fd3d7 Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@freedombone.net>
Date: Thu, 20 Sep 2018 23:21:27 +0100
Subject: [PATCH] Command to change language

---
 src/freedombone-installer | 32 ++-------------------
 src/freedombone-language  | 58 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 29 deletions(-)
 create mode 100755 src/freedombone-language

diff --git a/src/freedombone-installer b/src/freedombone-installer
index 0e923bc82..43f7a6d36 100755
--- a/src/freedombone-installer
+++ b/src/freedombone-installer
@@ -2429,38 +2429,12 @@ function change_language {
         webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin"
         if [ -f "$webadmin_install_dir/language_template.html" ]; then
             if grep -q "\"$language\"" "$webadmin_install_dir/language_template.html"; then
+                /usr/bin/timeout $APP_INSTALL_TIMEOUT_SEC /usr/local/bin/${PROJECT_NAME}-language "${language}" > "$webadmin_install_dir/log.txt"
+
+                # change the selected language
                 cp "$webadmin_install_dir/language_template.html" "$webadmin_install_dir/language.html"
                 sed -i "s|\"$language\"|\"$language\" selected|g" "$webadmin_install_dir/language.html"
                 chown www-data:www-data "$webadmin_install_dir/language.html"
-
-                config_language=$(grep "DEFAULT_LANGUAGE=" "$CONFIGURATION_FILE" | awk -F '=' '{print $2}')
-                if [[ "$config_language" != "$language" ]]; then
-                    if [ -d "/usr/share/${PROJECT_NAME}/webadmin/EN" ]; then
-                        # copy files for the new language
-                        cp -r "/usr/share/${PROJECT_NAME}/webadmin/EN/*" "/usr/share/${PROJECT_NAME}/webadmin/"
-
-                        # recreate some screens from templates
-                        regenerate_blocklist
-                        touch "$system_monitor_file"
-                        update_system_monitor
-                        webadmin_update_version
-                    fi
-
-                    sed -i "s|DEFAULT_LANGUAGE=.*|DEFAULT_LANGUAGE=$language|g" "$CONFIGURATION_FILE"
-
-                    chown -R www-data:www-data "$webadmin_install_dir/*"
-
-                    locale-gen "${language}"
-                    update-locale LANG="${language}"
-                    update-locale LANGUAGE="${language}"
-                    update-locale LC_MESSAGES="${language}"
-                    update-locale LC_ALL="${language}"
-                    update-locale LC_CTYPE="${language}"
-                fi
-
-                if [ -f "$webadmin_install_dir/translations/${language}.txt" ]; then
-                    web_admin_translate
-                fi
             fi
         fi
 
diff --git a/src/freedombone-language b/src/freedombone-language
new file mode 100755
index 000000000..d96337707
--- /dev/null
+++ b/src/freedombone-language
@@ -0,0 +1,58 @@
+#!/bin/bash
+#  _____               _           _
+# |   __|___ ___ ___ _| |___ _____| |_ ___ ___ ___
+# |   __|  _| -_| -_| . | . |     | . | . |   | -_|
+# |__|  |_| |___|___|___|___|_|_|_|___|___|_|_|___|
+#
+#                              Freedom in the Cloud
+#
+# set the language
+#
+# License
+# =======
+#
+# Copyright (C) 2018 Bob Mottram <bob@freedombone.net>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+PROJECT_NAME='freedombone'
+
+language="$1"
+
+if [ ! "$language" ]; then
+    exit 1
+fi
+
+CONFIGURATION_FILE="$HOME/${PROJECT_NAME}.cfg"
+
+source /usr/local/bin/${PROJECT_NAME}-shortcuts
+
+UTILS_FILES="/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*"
+for f in $UTILS_FILES
+do
+    source "$f"
+done
+
+android_update_apps yes
+
+sed -i "s|DEFAULT_LANGUAGE=.*|DEFAULT_LANGUAGE=$language|g" "$CONFIGURATION_FILE"
+
+locale-gen "${language}"
+update-locale LANG="${language}"
+update-locale LANGUAGE="${language}"
+update-locale LC_MESSAGES="${language}"
+update-locale LC_ALL="${language}"
+update-locale LC_CTYPE="${language}"
+
+exit 0
-- 
GitLab