Quantcast
Channel: Questions in topic: "localization"
Viewing all articles
Browse latest Browse all 210

(Localization System) Change Language Problem

$
0
0
Hello! I made a localization system according to the lesson from Game Dev Guide. However, I ran into the problem of creating a button that changes the language during the game. I created an event in which the current language is checked and changed, but for the language to change in the game in real time, I need to execute an event from another script, at this point I get an error: *** Assets\Scripts\LocalisationSystem.cs(121,9): error CS0120: An object reference is required for the non-static field, method, or property 'TextLocaliserUI.Start()'*** using System; using System.IO; using System.Linq; using System.Collections; using System.Collections.Generic; using UnityEngine; public class LocalisationSystem : MonoBehaviour { public enum Language { English, Russian } public static Language language = Language.English; private static Dictionary localisedEN; private static Dictionary localisedRU; public static bool isInit; public static CSVLoader csvLoader; public static void Init() { csvLoader = new CSVLoader(); csvLoader.LoadCSV(); UpdateDictionaries(); isInit = true; } public static void UpdateDictionaries() { localisedEN = csvLoader.GetDictionaryValues("en"); localisedRU = csvLoader.GetDictionaryValues("ru"); } public static Dictionary GetDictionaryForEditor() { if(!isInit) { Init(); } return localisedEN; } public static string GetLocalisedValue(string key) { if(!isInit) { Init(); } string value = key; switch(language) { case Language.English: localisedEN.TryGetValue(key, out value); break; case Language.Russian: localisedRU.TryGetValue(key, out value); break; } return value; } public static void Add(string key, string value) { if(value.Contains("\"")) { value.Replace('"', '\"'); } if(csvLoader == null) { csvLoader = new CSVLoader(); } csvLoader.LoadCSV(); csvLoader.Add(key, value); csvLoader.LoadCSV(); UpdateDictionaries(); } public static void Replace(string key, string value) { if(value.Contains("\"")) { value.Replace('"', '\"'); } if(csvLoader == null) { csvLoader = new CSVLoader(); } csvLoader.LoadCSV(); csvLoader.Edit(key, value); csvLoader.LoadCSV(); UpdateDictionaries(); } public static void Remove(string key) { if(csvLoader == null) { csvLoader = new CSVLoader(); } csvLoader.LoadCSV(); csvLoader.Remove(key); csvLoader.LoadCSV(); UpdateDictionaries(); } public static void SetLanguage(Language newLanguage) { language = newLanguage; TextLocaliserUI.Start(); // Error } public void ChangeLang() { if(language == Language.English) { Debug.Log("Language is set to " + language); LocalisationSystem.SetLanguage(LocalisationSystem.Language.Russian); } else { Debug.Log("Language is set to " + language); LocalisationSystem.SetLanguage(LocalisationSystem.Language.English); } } } TextLocaliserUI.cs using System.IO; using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; [RequireComponent(typeof(TextMeshProUGUI))] public class TextLocaliserUI : MonoBehaviour { TextMeshProUGUI textField; public LocalisedString localisedString; public void Start() { textField = GetComponent(); textField.text = localisedString.value; } } LocalisedString.cs using System.Collections; using System.Collections.Generic; using UnityEngine; [System.Serializable] public struct LocalisedString { public string key; public LocalisedString(string key) { this.key = key; } public string value { get { return LocalisationSystem.GetLocalisedValue(key); } } public static implicit operator LocalisedString(string key) { return new LocalisedString(key); } }

Viewing all articles
Browse latest Browse all 210

Trending Articles


Dammapeta Mandal Sarpanch Upa-Sarpanch Mobile Numbers List Khammam District...


Sarah Samis, Emil Bove III


ZARIA CUMMINGS


Need radio code for IVECO Delphi Aptiv FJ5 RBT M16


Black Angus Grilled Artichokes


Ed Sheeran – Sapphire – Pre-Single [iTunes Plus M4A]


Sunny Garcia’s Ex-Wife Colleen McCullough


99 God Status for Whatsapp, Facebook


Funeral of Sir Warwick Franklin


MHDD



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>