aboutsummaryrefslogtreecommitdiff
path: root/Assets/Scripts/Localisation
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts/Localisation')
-rw-r--r--Assets/Scripts/Localisation/CSVLoader.cs68
-rw-r--r--Assets/Scripts/Localisation/CSVLoader.cs.meta11
-rw-r--r--Assets/Scripts/Localisation/LocalisationSystem.cs54
-rw-r--r--Assets/Scripts/Localisation/LocalisationSystem.cs.meta11
-rw-r--r--Assets/Scripts/Localisation/TextLocaliserUI.cs21
-rw-r--r--Assets/Scripts/Localisation/TextLocaliserUI.cs.meta11
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: