diff options
Diffstat (limited to 'Assets/Scripts/Localisation')
| -rw-r--r-- | Assets/Scripts/Localisation/CSVLoader.cs | 68 | ||||
| -rw-r--r-- | Assets/Scripts/Localisation/CSVLoader.cs.meta | 11 | ||||
| -rw-r--r-- | Assets/Scripts/Localisation/LocalisationSystem.cs | 54 | ||||
| -rw-r--r-- | Assets/Scripts/Localisation/LocalisationSystem.cs.meta | 11 | ||||
| -rw-r--r-- | Assets/Scripts/Localisation/TextLocaliserUI.cs | 21 | ||||
| -rw-r--r-- | Assets/Scripts/Localisation/TextLocaliserUI.cs.meta | 11 |
6 files changed, 176 insertions, 0 deletions
diff --git a/Assets/Scripts/Localisation/CSVLoader.cs b/Assets/Scripts/Localisation/CSVLoader.cs new file mode 100644 index 0000000..6805761 --- /dev/null +++ b/Assets/Scripts/Localisation/CSVLoader.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text.RegularExpressions; +using UnityEngine; + +public class CSVLoader +{ + //Reference file; + private TextAsset csvFile; + private char lineSeperator = '\n'; + private char surrond = '"'; + private string[] fieldSeperator = { "\", \"" }; + + public void LoadCSV() + { + csvFile = Resources.Load<TextAsset>("localisation"); + } + + public Dictionary<string, string> GetDictionaryValues(string attributeID) + { + Dictionary<string, string> dictionary = new Dictionary<string, string>(); + + string[] lines = csvFile.text.Split(lineSeperator); + + int attributeIndex = -1; + + string[] headers = lines[0].Split(fieldSeperator, StringSplitOptions.None); + + for(int i=0; i<headers.Length; i++) + { + if(headers[i].Contains(attributeID)) + { + attributeIndex = i; + break; + } + } + + Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"); + + for(int i=1; i<lines.Length; i++) + { + string line = lines[i]; + + string[] fields = CSVParser.Split(line); + + for(int f=0; f<fields.Length; f++) + { + fields[f] = fields[f].TrimStart(' ', surrond); + fields[f] = fields[f].TrimEnd(surrond); + } + + if(fields.Length > attributeIndex) + { + var key = fields[0]; + + if (dictionary.ContainsKey(key)) { continue; } + + var value = fields[attributeIndex]; + + dictionary.Add(key, value); + } + } + + return dictionary; + } + +} diff --git a/Assets/Scripts/Localisation/CSVLoader.cs.meta b/Assets/Scripts/Localisation/CSVLoader.cs.meta new file mode 100644 index 0000000..f8da045 --- /dev/null +++ b/Assets/Scripts/Localisation/CSVLoader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 61806182744136d43ac66686d8fd4a8c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Localisation/LocalisationSystem.cs b/Assets/Scripts/Localisation/LocalisationSystem.cs new file mode 100644 index 0000000..3d48244 --- /dev/null +++ b/Assets/Scripts/Localisation/LocalisationSystem.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class LocalisationSystem +{ + public enum Language + { + English, + French + } + + public static Language language = Language.English; + + private static Dictionary<string, string> localisedEN; + private static Dictionary<string, string> localisedFR; + + public static bool isInit; + + public static void Init() + { + Debug.Log("Initalizing the localisation system..."); + CSVLoader csvLoader = new CSVLoader(); + csvLoader.LoadCSV(); + + localisedEN = csvLoader.GetDictionaryValues("en"); + localisedFR = csvLoader.GetDictionaryValues("fr"); + + isInit = true; + Debug.Log("Loaded the values for the localisation system."); + } + + 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.French: + localisedFR.TryGetValue(key, out value); + break; + + } + + return value; + } + +} diff --git a/Assets/Scripts/Localisation/LocalisationSystem.cs.meta b/Assets/Scripts/Localisation/LocalisationSystem.cs.meta new file mode 100644 index 0000000..59e4525 --- /dev/null +++ b/Assets/Scripts/Localisation/LocalisationSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a3891ee2e9bce604eb56fc66b0ee96ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Localisation/TextLocaliserUI.cs b/Assets/Scripts/Localisation/TextLocaliserUI.cs new file mode 100644 index 0000000..a56afb0 --- /dev/null +++ b/Assets/Scripts/Localisation/TextLocaliserUI.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; + +[RequireComponent(typeof(TextMeshProUGUI))] +public class TextLocaliserUI : MonoBehaviour +{ + TextMeshProUGUI textField; + + public string key; + + // Start is called before the first frame update + void Start() + { + textField = GetComponent<TextMeshProUGUI>(); + string value = LocalisationSystem.GetLocalisedValue(key); + textField.text = value; + } + +} diff --git a/Assets/Scripts/Localisation/TextLocaliserUI.cs.meta b/Assets/Scripts/Localisation/TextLocaliserUI.cs.meta new file mode 100644 index 0000000..93e3094 --- /dev/null +++ b/Assets/Scripts/Localisation/TextLocaliserUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c6a2fc696577634c999293f25c45550 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: |
