/// <summary> /// Genera un archivo de texto que sirve como plantilla para la lectura de archivos. /// </summary> /// <param name="carpetaP">Dirección de la carpeta en donde se creará el archivo.</param> public static void GenerarPlantilla(string carpetaP) { string ruta = carpetaP + "plantillaTraducirTexto.txt"; try { StreamWriter sw = new StreamWriter(ruta); sw.WriteLine("#-----------------------------------------"); sw.WriteLine("# Plantilla de ejemplo version " + versionOriginal); sw.WriteLine("#-----------------------------------------"); sw.WriteLine(".Version:" + versionOriginal); sw.WriteLine("# Todo se maneja con tabulaciones"); sw.WriteLine("# Idiomas:"); sw.WriteLine("# Español, English, Français, Português, Deutsche"); sw.WriteLine("{"); sw.WriteLine("\tLlave Elemento Principal"); sw.WriteLine("\t\tSubElemento"); sw.WriteLine("\t\t\tEspañol"); sw.WriteLine("\t\t\t\tEsto es la traduccion en español."); sw.WriteLine("\t\t\tEnglish"); sw.WriteLine("\t\t\t\tThis is the English translation."); sw.WriteLine("\t\tSubElemento2"); sw.WriteLine("\t\t\tDeutsche"); sw.WriteLine("\t\t\t\tDies ist die englische Übersetzung."); sw.WriteLine("}"); sw.Close(); } catch { TraducirTextoPseudoException.ArchivoNoGenerado(ruta); } }
/// <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> /// <returns>Retorna true si las llaves fueron encontradas en la lista.</returns> private bool SonLlavesEncontradasException(string llaveListaP) { if (!lista.ContainsKey(llaveListaP)) { TraducirTextoPseudoException.NoEsEsaLlave(llaveListaP); return(false); } return(true); }
/// <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> /// Agrega un elemento a una sublista, en base a un elemento de la lista principal. /// </summary> /// <param name="llaveListaP">Llave única ya agregada a la lista principal.</param> /// <param name="llaveSubListaP">Llave única que tendrá la sublista.</param> /// <returns>Retorna la llave agregada como parametro.</returns> public string AgregarSubLista(string llaveListaP, string llaveSubListaP) { if (SonLlavesEncontradas(llaveListaP, llaveSubListaP)) { TraducirTextoPseudoException.LlaveRepetida(llaveListaP, llaveSubListaP); } else { lista[llaveListaP].Add(llaveSubListaP, new Dictionary <TraducirTextoIdioma, string>()); } return(llaveSubListaP); }
/// <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); } }