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:

[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.

2 comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *