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:
[code language=”csharp”]
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;
}
}
[/code]
A primeira função, SetLanguage (), deve ser chamada no início do jogo, definindo o idioma do usuário. Por exemplo:
[code language=”csharp”]
//Supondo que você puxar o idioma do sistema
SetLanguage (Application.systemLanguage);
//Supondo que você queira definir manualmente o idioma
SetLanguage (SystemLanguage.English);
[/code]
A segunda função, GetTranslation (), deve ser chamada sempre que você precisar de uma palavra traduzida. Por exemplo:
[code language=”csharp”]
//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");
[/code]
É isso aí! Se tiver dúvidas, é só postar um comentário abaixo.
Parabéns pela explicação! Ótima solução!
Parabéns pela explicação! Ótima solução!