From 849c109ae26960be15722f01b9ea8230f4a2efc2 Mon Sep 17 00:00:00 2001 From: Alee Date: Mon, 10 Jun 2019 12:13:55 -0400 Subject: Localisation (Working progress) --- Assets/Scripts/Localisation.meta | 8 +++ Assets/Scripts/Localisation/CSVLoader.cs | 68 ++++++++++++++++++++++ Assets/Scripts/Localisation/CSVLoader.cs.meta | 11 ++++ Assets/Scripts/Localisation/LocalisationSystem.cs | 54 +++++++++++++++++ .../Localisation/LocalisationSystem.cs.meta | 11 ++++ Assets/Scripts/Localisation/TextLocaliserUI.cs | 21 +++++++ .../Scripts/Localisation/TextLocaliserUI.cs.meta | 11 ++++ 7 files changed, 184 insertions(+) create mode 100644 Assets/Scripts/Localisation.meta create mode 100644 Assets/Scripts/Localisation/CSVLoader.cs create mode 100644 Assets/Scripts/Localisation/CSVLoader.cs.meta create mode 100644 Assets/Scripts/Localisation/LocalisationSystem.cs create mode 100644 Assets/Scripts/Localisation/LocalisationSystem.cs.meta create mode 100644 Assets/Scripts/Localisation/TextLocaliserUI.cs create mode 100644 Assets/Scripts/Localisation/TextLocaliserUI.cs.meta (limited to 'Assets/Scripts') diff --git a/Assets/Scripts/Localisation.meta b/Assets/Scripts/Localisation.meta new file mode 100644 index 0000000..1ed2220 --- /dev/null +++ b/Assets/Scripts/Localisation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 92d477af9741ec149b21177b60c5a8e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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("localisation"); + } + + public Dictionary GetDictionaryValues(string attributeID) + { + Dictionary dictionary = new Dictionary(); + + string[] lines = csvFile.text.Split(lineSeperator); + + int attributeIndex = -1; + + string[] headers = lines[0].Split(fieldSeperator, StringSplitOptions.None); + + for(int i=0; i 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 localisedEN; + private static Dictionary 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(); + 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: -- cgit v1.2.3