From 74db157b9406594a549a70415668dd6cbe17d1d3 Mon Sep 17 00:00:00 2001 From: Ethan Yonker Date: Wed, 28 Oct 2015 12:44:49 -0500 Subject: Multiple Language Support This is similar to https://gerrit.omnirom.org/#/c/14014 A lot of the features built in the older patch set have been split out into separate patches, most of which have already been merged. The remaining functionality here should all be directly related to language selection and loading. We always load English as a base before loading other languages over the top of the base. The idea is that if another language is missing a translation, then we will still display the English. Maybe still to do: read the /cache/recovery/last_locale file and load a language based on that. For me, this file contains just: en_US We probably won't bother with region specific translations so we would have to look at either trimming off the _US or using some other method like perhaps a symlink or a combination of the two. Thanks to _that for twmsg.cpp class Change-Id: I9647a22e47883a3ddd2de1da51f64aab7c328f74 --- openrecoveryscript.cpp | 123 ++++++++++++++++++++++++------------------------- 1 file changed, 61 insertions(+), 62 deletions(-) (limited to 'openrecoveryscript.cpp') diff --git a/openrecoveryscript.cpp b/openrecoveryscript.cpp index cf24cbade..ebf765441 100644 --- a/openrecoveryscript.cpp +++ b/openrecoveryscript.cpp @@ -40,6 +40,7 @@ #include "data.hpp" #include "adb_install.h" #include "fuse_sideload.h" +#include "gui/gui.hpp" extern "C" { #include "twinstall.h" #include "gui/gui.h" @@ -51,7 +52,8 @@ extern "C" { int OpenRecoveryScript::check_for_script_file(void) { if (!PartitionManager.Mount_By_Path(SCRIPT_FILE_CACHE, false)) { - LOGERR("Unable to mount /cache for OpenRecoveryScript support.\n"); + LOGINFO("Unable to mount /cache for OpenRecoveryScript support.\n"); + gui_msg(Msg(msg::kError, "unable_to_mount=Unable to mount {1}")(SCRIPT_FILE_CACHE)); return 0; } if (TWFunc::Path_Exists(SCRIPT_FILE_CACHE)) { @@ -134,24 +136,18 @@ int OpenRecoveryScript::run_script_file(void) { } else if (strcmp(command, "wipe") == 0) { // Wipe if (strcmp(value, "cache") == 0 || strcmp(value, "/cache") == 0) { - gui_print("-- Wiping Cache Partition...\n"); PartitionManager.Wipe_By_Path("/cache"); - gui_print("-- Cache Partition Wipe Complete!\n"); } else if (strcmp(value, "dalvik") == 0 || strcmp(value, "dalvick") == 0 || strcmp(value, "dalvikcache") == 0 || strcmp(value, "dalvickcache") == 0) { - gui_print("-- Wiping Dalvik Cache...\n"); PartitionManager.Wipe_Dalvik_Cache(); - gui_print("-- Dalvik Cache Wipe Complete!\n"); } else if (strcmp(value, "data") == 0 || strcmp(value, "/data") == 0 || strcmp(value, "factory") == 0 || strcmp(value, "factoryreset") == 0) { - gui_print("-- Wiping Data Partition...\n"); PartitionManager.Factory_Reset(); - gui_print("-- Data Partition Wipe Complete!\n"); } else { LOGERR("Error with wipe command value: '%s'\n", value); ret_val = 1; } } else if (strcmp(command, "backup") == 0) { // Backup - DataManager::SetValue("tw_action_text2", "Backing Up"); + DataManager::SetValue("tw_action_text2", gui_parse_text("{@backing}")); tok = strtok(value, " "); strcpy(value1, tok); tok = strtok(NULL, " "); @@ -168,7 +164,7 @@ int OpenRecoveryScript::run_script_file(void) { remove_nl = 0; strncpy(value2, tok, line_len - remove_nl); DataManager::SetValue(TW_BACKUP_NAME, value2); - gui_print("Backup folder set to '%s'\n", value2); + gui_msg(Msg("backup_folder=Backup folder set to '{1}'")(value2)); if (PartitionManager.Check_Backup_Name(true) != 0) { ret_val = 1; continue; @@ -181,7 +177,7 @@ int OpenRecoveryScript::run_script_file(void) { ret_val = Backup_Command(value1); } else if (strcmp(command, "restore") == 0) { // Restore - DataManager::SetValue("tw_action_text2", "Restoring"); + DataManager::SetValue("tw_action_text2", gui_parse_text("{@restore}")); PartitionManager.Mount_All_Storage(); DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 0); char folder_path[512], partitions[512]; @@ -198,7 +194,7 @@ int OpenRecoveryScript::run_script_file(void) { } strcpy(folder_path, restore_folder.c_str()); LOGINFO("Restore folder is: '%s' and partitions: '%s'\n", folder_path, partitions); - gui_print("Restoring '%s'\n", folder_path); + gui_msg(Msg("restoring=Restoring {1}...")(folder_path)); if (folder_path[0] != '/') { char backup_folder[512]; @@ -225,7 +221,7 @@ int OpenRecoveryScript::run_script_file(void) { strcat(folder_path, "/."); } if (!TWFunc::Path_Exists(folder_path)) { - gui_print("Unable to locate backup '%s'\n", folder_path); + gui_msg(Msg(msg::kError, "locate_backup_err=Unable to locate backup '{1}'")(folder_path)); ret_val = 1; continue; } @@ -241,20 +237,21 @@ int OpenRecoveryScript::run_script_file(void) { memset(value2, 0, sizeof(value2)); strcpy(value2, partitions); - gui_print("Setting restore options: '%s':\n", value2); + gui_msg(Msg("set_restore_opt=Setting restore options: '{1}':")(value2)); line_len = strlen(value2); for (i=0; i 0) { gui_print("%s\n", "Special1 -- No Longer Supported..."); } else if (value2[i] == '2' && DataManager::GetIntValue(TW_RESTORE_SP2_VAR) > 0) { @@ -263,16 +260,16 @@ int OpenRecoveryScript::run_script_file(void) { gui_print("%s\n", "Special3 -- No Longer Supported..."); } else if ((value2[i] == 'B' || value2[i] == 'b') && Partition_List.find("/boot;") != string::npos) { Restore_List += "/boot;"; - gui_print("Boot\n"); + gui_msg("boot=Boot"); } else if ((value2[i] == 'A' || value2[i] == 'a') && Partition_List.find("/and-sec;") != string::npos) { Restore_List += "/and-sec;"; - gui_print("Android Secure\n"); + gui_msg("android_secure=Android Secure"); } else if ((value2[i] == 'E' || value2[i] == 'e') && Partition_List.find("/sd-ext;") != string::npos) { Restore_List += "/sd-ext;"; - gui_print("SD-Ext\n"); + gui_msg("sdext=SD-EXT"); } else if (value2[i] == 'M' || value2[i] == 'm') { DataManager::SetValue(TW_SKIP_MD5_CHECK_VAR, 1); - gui_print("MD5 check skip is on\n"); + gui_msg("md5_check_skip=MD5 check skip is on"); } } @@ -281,32 +278,32 @@ int OpenRecoveryScript::run_script_file(void) { DataManager::SetValue("tw_restore_selected", Partition_List); } if (is_encrypted) { - LOGERR("Unable to use OpenRecoveryScript to restore an encrypted backup.\n"); + gui_err("ors_encrypt_restore_err=Unable to use OpenRecoveryScript to restore an encrypted backup."); ret_val = 1; } else if (!PartitionManager.Run_Restore(folder_path)) ret_val = 1; else - gui_print("Restore complete!\n"); + gui_msg("done=Done."); } else if (strcmp(command, "mount") == 0) { // Mount - DataManager::SetValue("tw_action_text2", "Mounting"); + DataManager::SetValue("tw_action_text2", gui_parse_text("{@mounting}")); if (value[0] != '/') { strcpy(mount, "/"); strcat(mount, value); } else strcpy(mount, value); if (PartitionManager.Mount_By_Path(mount, true)) - gui_print("Mounted '%s'\n", mount); + gui_msg(Msg("mounted=Mounted '{1}'")(mount)); } else if (strcmp(command, "unmount") == 0 || strcmp(command, "umount") == 0) { // Unmount - DataManager::SetValue("tw_action_text2", "Unmounting"); + DataManager::SetValue("tw_action_text2", gui_parse_text("{@unmounting}")); if (value[0] != '/') { strcpy(mount, "/"); strcat(mount, value); } else strcpy(mount, value); if (PartitionManager.UnMount_By_Path(mount, true)) - gui_print("Unmounted '%s'\n", mount); + gui_msg(Msg("unmounted=Unounted '{1}'")(mount)); } else if (strcmp(command, "set") == 0) { // Set value size_t len = strlen(value); @@ -314,18 +311,18 @@ int OpenRecoveryScript::run_script_file(void) { strcpy(value1, tok); if (len > strlen(value1) + 1) { char *val2 = value + strlen(value1) + 1; - gui_print("Setting '%s' to '%s'\n", value1, val2); + gui_msg(Msg("setting=Setting '{1}' to '{2}'")(value1)(val2)); DataManager::SetValue(value1, val2); } else { - gui_print("Setting '%s' to empty\n", value1); + gui_msg(Msg("setting_empty=Setting '{1}' to empty")(value1)); DataManager::SetValue(value1, ""); } } else if (strcmp(command, "mkdir") == 0) { // Make directory (recursive) - DataManager::SetValue("tw_action_text2", "Making Directory"); - gui_print("Making directory (recursive): '%s'\n", value); + DataManager::SetValue("tw_action_text2", gui_parse_text("{@making_dir1}")); + gui_msg(Msg("making_dir2=Making directory: '{1}'")(value)); if (TWFunc::Recursive_Mkdir(value)) { - LOGERR("Unable to create folder: '%s'\n", value); + gui_msg(Msg(msg::kError, "create_folder_strerr=Can not create '{1}' folder ({2}).")(value)(strerror(errno))); ret_val = 1; } } else if (strcmp(command, "reboot") == 0) { @@ -340,7 +337,7 @@ int OpenRecoveryScript::run_script_file(void) { else TWFunc::tw_reboot(rb_system); } else if (strcmp(command, "cmd") == 0) { - DataManager::SetValue("tw_action_text2", "Running Command"); + DataManager::SetValue("tw_action_text2", gui_parse_text("{@running_command}")); if (cindex != 0) { TWFunc::Exec_Cmd(value); } else { @@ -350,18 +347,18 @@ int OpenRecoveryScript::run_script_file(void) { gui_print("%s\n", value); } else if (strcmp(command, "sideload") == 0) { // ADB Sideload - DataManager::SetValue("tw_action_text2", "ADB Sideload"); + DataManager::SetValue("tw_action_text2", gui_parse_text("{@sideload}")); install_cmd = -1; int wipe_cache = 0; string result; pid_t sideload_child_pid; - gui_print("Starting ADB sideload feature...\n"); + gui_msg("start_sideload=Starting ADB sideload feature..."); ret_val = apply_from_adb("/", &sideload_child_pid); if (ret_val != 0) { if (ret_val == -2) - gui_print("You need adb 1.0.32 or newer to sideload to this device.\n"); + gui_err("need_new_adb=You need adb 1.0.32 or newer to sideload to this device."); ret_val = 1; // failure } else if (TWinstall_zip(FUSE_SIDELOAD_HOST_PATHNAME, &wipe_cache) == 0) { if (wipe_cache) @@ -381,7 +378,7 @@ int OpenRecoveryScript::run_script_file(void) { waitpid(sideload_child_pid, &status, 0); } property_set("ctl.start", "adbd"); - gui_print("Sideload finished.\n"); + gui_msg("done=Done."); } else if (strcmp(command, "fixperms") == 0 || strcmp(command, "fixpermissions") == 0) { ret_val = PartitionManager.Fix_Permissions(); if (ret_val != 0) @@ -392,7 +389,7 @@ int OpenRecoveryScript::run_script_file(void) { if (ret_val != 0) ret_val = 1; // failure } else { - LOGERR("No password provided.\n"); + gui_err("no_pwd=No password provided."); ret_val = 1; // failure } } else { @@ -401,13 +398,13 @@ int OpenRecoveryScript::run_script_file(void) { } } fclose(fp); - gui_print("Done processing script file\n"); + gui_msg("done_ors=Done processing script file"); } else { - LOGERR("Error opening script file '%s'\n", SCRIPT_FILE_TMP); + gui_msg(Msg(msg::kError, "error_opening_strerr=Error opening: '{1}' ({2})")(SCRIPT_FILE_TMP)(strerror(errno))); return 1; } if (install_cmd && DataManager::GetIntValue(TW_HAS_INJECTTWRP) == 1 && DataManager::GetIntValue(TW_INJECT_AFTER_ZIP) == 1) { - gui_print("Injecting TWRP into boot image...\n"); + gui_msg("injecttwrp=Injecting TWRP into boot image..."); TWPartition* Boot = PartitionManager.Find_Partition_By_Path("/boot"); if (Boot == NULL || Boot->Current_File_System != "emmc") TWFunc::Exec_Cmd("injecttwrp --dump /tmp/backup_recovery_ramdisk.img /tmp/injected_boot.img --flash"); @@ -415,7 +412,7 @@ int OpenRecoveryScript::run_script_file(void) { string injectcmd = "injecttwrp --dump /tmp/backup_recovery_ramdisk.img /tmp/injected_boot.img --flash bd=" + Boot->Actual_Block_Device; TWFunc::Exec_Cmd(injectcmd.c_str()); } - gui_print("TWRP injection complete.\n"); + gui_msg("done=Done."); } if (sideload) ret_val = 1; // Forces booting to the home page after sideload @@ -447,10 +444,12 @@ int OpenRecoveryScript::Install_Command(string Zip) { // This is a special file that contains a map of blocks on the data partition Full_Path = Zip.substr(1); if (!PartitionManager.Mount_By_Path(Full_Path, true) || !TWFunc::Path_Exists(Full_Path)) { - gui_print("Unable to install via mapped zip '%s'\n", Full_Path.c_str()); + LOGINFO("Unable to install via mapped zip '%s'\n", Full_Path.c_str()); + gui_msg(Msg(msg::kError, "zip_err=Error installing zip file '{1}'")(Zip)); return 1; } - gui_print("Installing mapped zip file '%s'\n", Full_Path.c_str()); + LOGINFO("Installing mapped zip file '%s'\n", Full_Path.c_str()); + gui_msg(Msg("installing_zip=Installing zip file '{1}'")(Zip)); } else if (!TWFunc::Path_Exists(Zip)) { PartitionManager.Mount_All_Storage(); PartitionManager.Get_Partition_List("storage", &Storage_List); @@ -476,12 +475,12 @@ int OpenRecoveryScript::Install_Command(string Zip) { gui_print("Unable to locate zip file '%s'.\n", Zip.c_str()); ret_val = 1; } else - gui_print("Installing zip file '%s'\n", Zip.c_str()); + gui_msg(Msg("installing_zip=Installing zip file '{1}'")(Zip)); } ret_val = TWinstall_zip(Zip.c_str(), &wipe_cache); if (ret_val != 0) { - LOGERR("Error installing zip file '%s'\n", Zip.c_str()); + gui_msg(Msg(msg::kError, "zip_err=Error installing zip file '{1}'")(Zip)); ret_val = 1; } else if (wipe_cache) PartitionManager.Wipe_By_Path("/cache"); @@ -523,21 +522,21 @@ int OpenRecoveryScript::Backup_Command(string Options) { DataManager::SetValue(TW_USE_COMPRESSION_VAR, 0); DataManager::SetValue(TW_SKIP_MD5_GENERATE_VAR, 0); - gui_print("Setting backup options:\n"); + gui_msg("select_backup_opt=Setting backup options:"); line_len = Options.size(); for (i=0; i