public static void NoEsEsaLlave(string llaveListaP, string llaveSubListaP, TraducirTextoIdioma idiomaP) => Debug.LogError( Titulo + Titulo_NoEsEsaLlave + string.Format( "El idioma no fue encontrado en la lista. " + "El idioma es {0}, la llave de la sublista es {1} y la llave de la lista es {2}.", idiomaP.ToString(), llaveSubListaP, llaveListaP) );
public static void LlaveRepetida(string llaveListaP, string llaveSubListaP, TraducirTextoIdioma idiomaP) => Debug.LogError( Titulo + Titulo_NoEsEsaLlave + string.Format( "Se intentó agregar un idioma repetido. " + "El idioma es {0}, la llave de la sublista es {1} y la llave de la lista es {2}.", idiomaP.ToString(), llaveSubListaP, llaveListaP) );
/// <summary> /// Obtiene la traducción correcta, en base a las llaves ya agregadas. /// </summary> /// <param name="llaveListaP">Llave de la lista principal a buscar.</param> /// <param name="llaveSubListaP">Llave de la sublista a buscar.</param> /// <param name="idiomaP">Llave de los idiomas a buscar.</param> /// <returns>Retorna la traducción.</returns> public string ObtenerTraduccion(string llaveListaP, string llaveSubListaP, TraducirTextoIdioma idiomaP) { if (!SonLlavesEncontradasException(llaveListaP, llaveSubListaP, idiomaP)) { return(""); } return(lista[llaveListaP][llaveSubListaP][idiomaP]); }
/// <summary> /// Agrega la traducción de un idioma, en base a un elemento de la sublista y elemento de la lista principal. /// </summary> /// <param name="llaveListaP">Llave única ya agregada a la lista principal.</param> /// <param name="llaveSubListaP">Llave única ya agregada a la sublista.</param> /// <param name="idiomaP">Llave única que tendrá el idioma.</param> /// <param name="traduccionP">Mensaje traducido.</param> /// <returns>Retorna la llave agregada como parametro.</returns> public string AgregarTraduccion(string llaveListaP, string llaveSubListaP, TraducirTextoIdioma idiomaP, string traduccionP) { if (SonLlavesEncontradas(llaveListaP, llaveSubListaP, idiomaP)) { TraducirTextoPseudoException.LlaveRepetida(llaveListaP, llaveSubListaP, idiomaP); } else { lista[llaveListaP][llaveSubListaP].Add(idiomaP, traduccionP); } return(traduccionP); }
/// <summary> /// Verifica si una llave se encuentra en la lista. /// </summary> /// <param name="llaveListaP">Llave de la lista principal a buscar.</param> /// <param name="llaveSubListaP">Llave de la sublista a buscar.</param> /// <param name="idiomaP">Llave de los idiomas a buscar.</param> /// <returns>Retorna true si las llaves fueron encontradas en la lista.</returns> private bool SonLlavesEncontradas(string llaveListaP, string llaveSubListaP, TraducirTextoIdioma idiomaP) { if (!lista.ContainsKey(llaveListaP)) { return(false); } else if (!lista[llaveListaP].ContainsKey(llaveSubListaP)) { return(false); } else if (!lista[llaveListaP][llaveSubListaP].ContainsKey(idiomaP)) { return(false); } return(true); }
/// <summary> /// Verifica si una llave se encuentra en la lista. En caso de no encontrarlo, lanzará una PseudoExcepcion. /// </summary> /// <param name="llaveListaP">Llave de la lista principal a buscar.</param> /// <param name="llaveSubListaP">Llave de la sublista a buscar.</param> /// <param name="idiomaP">Llave de los idiomas a buscar.</param> /// <returns>Retorna true si las llaves fueron encontradas en la lista.</returns> private bool SonLlavesEncontradasException(string llaveListaP, string llaveSubListaP, TraducirTextoIdioma idiomaP) { if (!lista.ContainsKey(llaveListaP)) { TraducirTextoPseudoException.NoEsEsaLlave(llaveListaP); return(false); } else if (!lista[llaveListaP].ContainsKey(llaveSubListaP)) { TraducirTextoPseudoException.NoEsEsaLlave(llaveListaP, llaveSubListaP); return(false); } else if (!lista[llaveListaP][llaveSubListaP].ContainsKey(idiomaP)) { TraducirTextoPseudoException.NoEsEsaLlave(llaveListaP, llaveSubListaP, idiomaP); return(false); } return(true); }
/// <summary> /// Lee un archivo y crea todas las instancias de la lista. /// </summary> /// <param name="filepathP">Dirección en donde se encuentra el archivo.</param> /// <param name="isPersistentDataPath">En caso de ser verdadero, la ruta se leerá apartir de la carpeta persistent de Unity.</param> public void LeerArchivo(string filepathP, bool isPersistentDataPath) { //string urlP = isPersistentDataPath ? Application.persistentDataPath + "/" + filepathP : filepathP; string urlP = filepathP; try { StreamReader sr = new StreamReader(urlP); string linea = sr.ReadLine(); byte estado = 0; while (estado != 2 && linea != null && linea != "") { if (estado == 0) { switch (linea[0]) { case '{': estado = 1; break; case '.': OpcionesArchivo(linea.Substring(1)); break; default: break; } } else if (estado == 1) { if (linea[0] == '}') { estado = 2; } else if (linea.Contains("\t\t\t\t")) { AgregarTraduccion(keyActual_lista, keyActual_sublista, keyActual_idioma, linea.Substring(4)); } else if (linea.Contains("\t\t\t")) { keyActual_idioma = SetIdioma(linea.Substring(3)); } else if (linea.Contains("\t\t")) { keyActual_sublista = AgregarSubLista(keyActual_lista, linea.Substring(2)); } else if (linea.Contains("\t")) { keyActual_lista = AgregarLista(linea.Substring(1)); } } linea = sr.ReadLine(); } sr.Close(); } catch { TraducirTextoPseudoException.ArchivoNoEncontrado(filepathP); } }