Pongo a disposición de quien queda de mi sistema de juego multi-idioma.
Creo un carpeta donde pongo los XML de la traducciones, en mi caso los puse en Resources/Language.
(//%3CfileStore.core_Attachment%3E/monthly_2017_03/58b6dd266358f_Estructuracarpeta.png.ffe04fe9630b7d871c89659e6f609e64.png)
Para acceder a los XML y detectar el idioma del anfitrión uso los siguientes scripts.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System.Xml;
using System.Text;
public class LanguageManager : MonoBehaviour {
// Idioma
public string langName;
// Configuración
List < Dictionary< string,string > > languages = new List< Dictionary< string, string > >();
public Dictionary < string,string > obj;
// Iniciar la traducción cuando se requira
public void Init()
{
LoadLanguage ();
}
// Setter y Getter del idioma
public string Language {
set { langName = value; }
get { return langName; }
}
// Chequear el idioma antes de cargarlo, esto se debe que si no tienes el idioma del anfitrión, cargará en ingles.
string PathLanguage ()
{
// Variable string
string lang = "";
// Chequeo el idioma por si lo tengo ya guardado
if(PlayerPrefs.HasKey ("Language"))
{
lang = PlayerPrefs.GetString ("Language");
}
else
{
// Compruevo si existe el idioma del anfitrión
if (File.Exists (Application.dataPath.ToString () + "/Resources/Language/" + Language + ".xml"))
lang = Language;
else
lang = "English";
PlayerPrefs.SetString ("Language",lang);
}
// Devuelvo la ruta chequeda
return Application.dataPath.ToString() + "/Resources/Language/"+lang+".xml";
}
// Cargar el idioma que viene de un XML
void LoadLanguage ()
{
// Ruta chequeada
string path = PathLanguage ();
// Recuperar datos del XML
XmlDocument xml