Vamos precisar de:
– um Dictionary publico estático que armazena todas as palavras do jogo
– uma Função pública estática que define o idioma do jogo
– uma Função pública estática que puxa as palavras deste Dictionary quando você pedir elas
Para começar… crie uma classe C# estática pública chamada LanguageDictonary:
using UnityEngine; using System.Collections; using System.Collections.Generic; public static class LanguageDictionary { //As palavras serão armazenadas neste Dictionary public static Dictionary<string, string> stringList = new Dictionary<string, string>(); //Este é o idioma padrão do jogo (português) public static SystemLanguage defaultLanguage = SystemLanguage.Portuguese; //Lista de idiomas suportados public static List<SystemLanguage> supportedLanguages = new List<SystemLanguage>(); //esta classe define o idioma e adiciona suas palavras no Dictionary public static void SetLanguage (SystemLanguage language) { //define os idiomas suportados supportedLanguages.Add (SystemLanguage.English); supportedLanguages.Add (SystemLanguage.Portuguese); if (!supportedLanguages.Contains (language)) language = defaultLanguage; //Aqui ficam as palavras em português else if (language == SystemLanguage.Portuguese) { stringList.Add ("Sim", "Sim"); stringList.Add ("Não", "Não"); } //Aqui ficam as palavras em inglês if (language == SystemLanguage.English) { stringList.Add ("Sim", "Yes"); stringList.Add ("Não", "No"); } } //esta função puxa palavras traduzidas do dicionário public static string GetTranslation (string stringToTranslate) { if (stringList.ContainsKey (stringToTranslate)) return stringList [stringToTranslate]; else return stringToTranslate; } }
A primeira função, SetLanguage (), deve ser chamada no início do jogo, definindo o idioma do usuário. Por exemplo:
//Supondo que você puxar o idioma do sistema SetLanguage (Application.systemLanguage); //Supondo que você queira definir manualmente o idioma SetLanguage (SystemLanguage.English);
A segunda função, GetTranslation (), deve ser chamada sempre que você precisar de uma palavra traduzida. Por exemplo:
//Para mostrar a tradução de uma palavra no Log: Debug.Log (GetTranslation ("Sim")); //Supondo que você queira colocar uma palavra traduzida num componente de Texto GetComponent().text = GetTranslation ("Sim");
É isso aí! Se tiver dúvidas, é só postar um comentário abaixo.
Parabéns pela explicação! Ótima solução!