Jogo multi-idiomas

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.

Um comentário em “Jogo multi-idiomas

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s