diff --git a/src/freedombone-installer b/src/freedombone-installer index ab7e21e51b5de940be4c29196b05ab9a3a77fd34..7e05938c5e4883b5b85669e52bb051c303be9b2a 100755 --- a/src/freedombone-installer +++ b/src/freedombone-installer @@ -132,6 +132,34 @@ ICECAST_DIR=/icestream ICECAST_JINGLES=/jingles liquidsoap_script=/etc/liquidsoapuser/radio.liq +function web_admin_translate { + if ! grep -q 'DEFAULT_LANGUAGE=' "$CONFIGURATION_FILE"; then + return + fi + language=$(grep 'DEFAULT_LANGUAGE=' "$CONFIGURATION_FILE" | head -n 1 | awk -F '=' '{print $2}') + if [ ! "$language" ]; then + return + fi + + local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local + webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin" + + translations_file="/var/www/${local_hostname}/htdocs/admin/translations/${language}.txt" + if [ ! -f "$translations_file" ]; then + return + fi + + while read -r trans; do + translated_text=$(echo "$trans" | awk -F '|' '{print $2}') + if [ "$translated_text" ]; then + english_text=$(echo "$trans" | awk -F '|' '{print $1}') + for webfile in "/var/www/${local_hostname}/htdocs/admin"/*.html; do + sed -i "/translate=\"yes\"/s|>$english_text<|>$translated_text<|g" "$webfile"; + done + fi + done <"$translations_file" +} + function backup_mount_drive { backup_drive_mounted= if [ "$1" ]; then @@ -674,6 +702,8 @@ function web_admin_setup_login { echo -n "$webadmin_password" > ${IMAGE_PASSWORD_FILE} fi + web_admin_translate + echo -n "$INSTALL_STATE_WEBADMIN_PASSWORD_CTEATED" > "$install_state_file" install_state=$INSTALL_STATE_WEBADMIN_PASSWORD_CTEATED } @@ -2273,9 +2303,14 @@ function change_language { webadmin_update_version fi + sed -i "s|DEFAULT_LANGUAGE=.*|DEFAULT_LANGUAGE=$language|g" "$CONFIGURATION_FILE" + + if [ -f "$webadmin_install_dir/translations/${language}.txt" ]; then + web_admin_translate + fi + chown -R www-data:www-data "$webadmin_install_dir/*" - sed -i "s|DEFAULT_LANGUAGE=.*|DEFAULT_LANGUAGE=$language|g" "$CONFIGURATION_FILE" locale-gen "${language}" update-locale LANG="${language}" update-locale LANGUAGE="${language}" diff --git a/src/freedombone-utils-webadmin b/src/freedombone-utils-webadmin index 2676054ab335f3a5da17a999c7c72d6559b473ad..02b2161b955e41f5ce17ce4b1a415d9e1bc1d60b 100755 --- a/src/freedombone-utils-webadmin +++ b/src/freedombone-utils-webadmin @@ -35,6 +35,34 @@ WEBADMIN_LOGIN_TEXT=$"Welcome to ${PROJECT_NAME}" WEBADMIN_ONION_PORT=5783 +function web_admin_translate { + if ! grep -q 'DEFAULT_LANGUAGE=' "$CONFIGURATION_FILE"; then + return + fi + language=$(grep 'DEFAULT_LANGUAGE=' "$CONFIGURATION_FILE" | head -n 1 | awk -F '=' '{print $2}') + if [ ! "$language" ]; then + return + fi + + local_hostname=$(grep 'host-name' /etc/avahi/avahi-daemon.conf | awk -F '=' '{print $2}').local + webadmin_install_dir="/var/www/${local_hostname}/htdocs/admin" + + translations_file="/var/www/${local_hostname}/htdocs/admin/translations/${language}.txt" + if [ ! -f "$translations_file" ]; then + return + fi + + while read -r trans; do + translated_text=$(echo "$trans" | awk -F '|' '{print $2}') + if [ "$translated_text" ]; then + english_text=$(echo "$trans" | awk -F '|' '{print $1}') + for webfile in "/var/www/${local_hostname}/htdocs/admin"/*.html; do + sed -i "/translate=\"yes\"/s|>$english_text<|>$translated_text<|g" "$webfile"; + done + fi + done <"$translations_file" +} + function web_admin_get_hostname { # shellcheck disable=SC2154 if [ ! "$rootdir" ]; then @@ -1297,6 +1325,8 @@ function install_web_admin { myqr "http://${WEBADMIN_ONION_HOSTNAME}/admin" -p /root/freedombone/img/onion.png -c -v 8 -n "$webadmin_qrcode" fi fi + + web_admin_translate } # NOTE: deliberately no exit 0