Multi-language game (Unity)

We’ll need:
– a public static Dictionary that stores all of the game’s words
– a public static Function that sets the game language
– a public static Function that gets words from the Dictionary when you need them

So first… create a C# public static class named LanguageDictonary:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public static class LanguageDictionary {

//The words will be stored in this Dictionary
public static Dictionary<string, string> stringList = new Dictionary<string, string>();

//This is the default game language (english)
public static SystemLanguage defaultLanguage = SystemLanguage.English;

//This list stores the supported languages
public static List<SystemLanguage> supportedLanguages = new List<SystemLanguage>();

//this class sets the language and add its words to the Dictionary
public static void SetLanguage (SystemLanguage language) {

//check if the language is in the supported languages list
supportedLanguages.Add (SystemLanguage.English);
supportedLanguages.Add (SystemLanguage.Spanish);

if (!supportedLanguages.Contains (language))
language = defaultLanguage;

//Here you add the english translations
if (language == SystemLanguage.English) {
stringList.Add ("Yes", "Yes");
stringList.Add ("No", "No");
//here you add the spanish translations
else if (language == SystemLanguage.Spanish) {
stringList.Add ("Yes", "Yes");
stringList.Add ("No", "No");

//this function gets words from the dictionary
public static string GetTranslation (string stringToTranslate) {
if (stringList.ContainsKey (stringToTranslate))
return stringList [stringToTranslate];
return stringToTranslate;

The first function, SetLanguage (), MUST be called at the beginning of the game, to set the language. Example:

//Supposing you want to get the user's system language
SetLanguage (Application.systemLanguage);

//Supposing you want to set the language manually
SetLanguage (SystemLanguage.English);

The second function, GetTranslation (), must be called whenever you need a translated word. Example:

//Supposing you want to put translated text in a Text component
GetComponent<Text>().text = GetTranslation ("Yes");

That’s it! If you have any questions, leave a comment below.