Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Sistema de cambio de idioma

Iniciado por romadritex, Enero 22, 2018, 07:45:27 PM

Tema anterior - Siguiente tema
Enero 22, 2018, 07:45:27 PM Ultima modificación: Enero 22, 2018, 10:14:35 PM por romadritex
Hola buenas, estoy realizando un pequeño proyecto y se me ha ocurrido gran idea (notese lla ironía) de dar la opción al usuario de elegir entre castellano e inglés.
 
Mi problema viene con que soy incapaz de encontrar una manera eficiente de hacer esto, mi primera idea consistía en cambiar todos los textos en función de una variable idioma directamente desde el código, algo así:
 

if (idioma == 0){
    titulo = "title";
}else if (idioma == 1){
    titulo = "titulo";
}

 
Pero al ver  lo largo y tedioso de este proceso desistí y me enfrasqué en la búsqueda de un sistema más practico. He llegado a la conclusión de que la mejor opción es crear un archivo .json compuesto por una lista compuesta por otras sub listas, cada una de las cuales sería un idioma, pero no estoy seguro de si esto es posible, pues no tengo unos conocimientos especialmente avanzados en este ámbito y me esta dando verdaderos dolores de cabeza. Mi codigo actual es algo así:
 
Lista de idiomas:
 

{
    "Lenguage":[
        [
            "title",
            "New Game",
            "Continue",
            "Options",
            "Exit",
            "Volume",
            "Lenguage",
            "Controller",
            "Keyboard",
            "Graphics",
            "Done",
            "Pause",
            "Achievements",
            "Exit to main menu",
            "Pres Esc to continue"],
        [
            "Titulo",
            "Nueva partida",
            "Continuar",
            "Opciones",
            "Salir",
            "Volumen",
            "Idioma",
            "Mando",
            "Teclado",
            "Graficos",
            "Hecho",
            "Pausa",
            "Logros",
            "Menu principal",
            "Pulsa Esc para continuar"]
    ]
}

 
Código:
 

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
public class lenguages : MonoBehaviour {
    public int IntLenguage;
    public Dropdown DropLenguage;
    public Text Title;
    public Text NewGame;
    public Text Continue;
    public Text Options;
    public Text Options1;
    public Text Exit;
    public Text Volume;
    public Text Lenguage;
    public Text Controller;
    public Text Keyboard;
    public Text Graphics;
    public Text Graphics1;
    public Text Done;
    public Text Done1;
    string filePath;
    string jsonString;
    void Start () {
        filePath = Application.dataPath + "/Data/Options.json";
        jsonString = File.ReadAllText (filePath);
        options info = JsonUtility.FromJson<options> (jsonString);
        IntLenguage = info.lenguage;
        DropLenguage.value = IntLenguage;
        filePath = Application.dataPath + "/Data/Lenguage.json";
        jsonString = File.ReadAllText (filePath);
        ListaLenguages lista = JsonUtility.FromJson<ListaLenguages> (jsonString);
        Title.text = lista [IntLenguage [0]];
    }
}

 
//He hecho esto en base a un tutorial el cual no explicaba esto concretamente y por ello hay cosas como estas que no estoy seguro de como modificar para listas
 

[System.Serializable]
public class Lenguage1{
    public string title;
    public string NewGame;
    public string Continue;
    public string Options;
    public string Exit;
    public string Volume;
    public string Lenguage;
    public string Controller;
    public string Keyboard;
    public string Graphics;
    public string Done;
    public string Pause;
    public string Achievements;
    public string ExitToMainMenu;
    public string PresEsc;
}
[System.Serializable]
public class ListaLenguages{
    public List<Lenguage1> Lenguage;
}

 
Pues este es mi problema, agradecería tanto una ayuda con este código en concreto como una forma mejor de hacerlo, gracias a todos y espero con ansia cualquier respuesta.
 
Pdt.: Lamento cualquier falta ortográfica.

Ironía, no sarcasmo. Son cosas distintas...
 
La mejor adecuada de hacer lo que buscas es usando Dictionaries<key,idioma>, para poder aplicar cualquier idioma dónde convenga...

Cita de: pioj date=1516649206Ironía, no sarcasmo. Son cosas distintas...
   
   
      La mejor adecuada de hacer lo que buscas es usando Dictionaries<key,idioma>, para poder aplicar cualquier idioma dónde convenga...
   


Gracias, haré los cambios pertinentes.

Antes de que te líes mira un  asset que se llama I18N, lo puedes encontrar en la store y te deja localizar textos, imágenes, sonidos y algunas cosas más. Funciona muy bien y el manejo de textos es muy cómodo porque lo llevas en una hoja Excel y lo exportas a CSV y lo metes en el proyecto y no hay que hacer más. Encima es gratis. Yo lo he usado en un montón de proyectos multidioma y funciona de lujo. Te lo recomiendo.

Cita de: FNP date=1516726403Antes de que te líes mira un  asset que se llama I18N, lo puedes encontrar en la store y te deja localizar textos, imágenes, sonidos y algunas cosas más. Funciona muy bien y el manejo de textos es muy cómodo porque lo llevas en una hoja Excel y lo exportas a CSV y lo metes en el proyecto y no hay que hacer más. Encima es gratis. Yo lo he usado en un montón de proyectos multidioma y funciona de lujo. Te lo recomiendo.
   


Muchísimas gracias, lo miraré sin falta

Además puedes asignar varias fuentes, por si la App va en ruso, chino, arabe, hebreo, etc. y necesitas varios alfabetos.
 
 

Etiquetas: