Jogo multi-idiomas

Tutorials, Unity

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.

Anúncios

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 )

Imagem do Twitter

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

Foto do Facebook

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

Foto do Google+

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

Conectando a %s