static void LoadStringTables(string path, string ext, ref LELangDictCollection langCollection) { if (langCollection == null) { langCollection = new LELangDictCollection(); } else { langCollection.Clear(); } // Check if the localization directory exists, if so then load // If not, do nothing if (Directory.Exists(path)) { string[] stringTables = Directory.GetFiles(path, "*" + ext); foreach (string table in stringTables) { string langCode = Path.GetFileName(table).Replace(ext, string.Empty); Dictionary <string, object> tempDict = (Dictionary <string, object>)Json.Deserialize(File.ReadAllText(table)); LELangDict langDict = tempDict.ToDictionary(k => k.Key, v => v.Value.ToString()); langCollection.Add(langCode, langDict); } } }
void DrawLocString(LELangDict langDict, KeyValuePair <string, string> locStringEntry) { if (editingFields.Contains(locStringEntry.Key)) { DrawEditLocString(langDict, locStringEntry); } else { DrawReadOnlyLocString(langDict, locStringEntry); } }
public static void AddNewLanguage(string name) { LELangDict newLang = new LELangDict(); LELangDict newVisLang = new LELangDict(); MasterKeys.ForEach(masterKey => { newLang.Add(masterKey, string.Empty); newVisLang.Add(Logical2Visual(masterKey), string.Empty); }); AllLangsLogical.Add(name, newLang); AllLangsVisual.Add(name, newVisLang); NeedsSave = true; }
static void RebuildVisualTables() { string visKey; string visValue; AllLangsVisual.Clear(); foreach (var langKey in AllLangsLogical.Keys) { LELangDict visLang = new LELangDict(); var string_table = AllLangsLogical[langKey]; foreach (var kvp in string_table) { visKey = Logical2Visual(kvp.Key); visValue = Logical2Visual(kvp.Value); visLang.Add(visKey, visValue); } AllLangsVisual.Add(langKey, visLang); } }
void DrawReadOnlyLocString(LELangDict langDict, KeyValuePair <string, string> locStringEntry) { // Draw read only loc section string visKey = LEStringTableEditor.GetPresentationFromCache(locStringEntry.Key); string visValue = LEStringTableEditor.GetPresentationValue(locStringEntry.Key); // Key label position Rect labelPosition = GetResizableTextBoxPosition(locStringEntry.Key, boxWidth, keyStyle); // Key box GUI.Box(labelPosition, string.Empty); // Key label if (GUI.Button(labelPosition, visKey, keyStyle)) { SetLocStringToEditMode(locStringEntry); } drawHelper.CurrentLinePosition += labelPosition.width + 2f; // Value label position Rect valuePosition = GetResizableTextBoxPosition(visValue, boxWidth, valueStyle); // Value box GUI.Box(valuePosition, string.Empty); // Value label if (GUI.Button(valuePosition, visValue, valueStyle)) { SetLocStringToEditMode(locStringEntry); } drawHelper.CurrentLinePosition += valuePosition.width + 2f; float height = Math.Max(labelPosition.height, valuePosition.height); drawHelper.NewLine(height / drawHelper.LineHeight - 1); }
void DrawEditLocString(LELangDict langDict, KeyValuePair <string, string> locStringEntry) { Rect labelPosition; Rect valuePosition; float height; if (isRTL) { drawHelper.NewLine(); DrawVisualPresentation(editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag], editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag]); } // Key label position labelPosition = GetResizableTextBoxPosition(editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag], boxWidth, keyStyle); // Key box GUI.Box(labelPosition, string.Empty); // Key label editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag] = DrawResizableTextBox(editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag], labelPosition, keyStyle); // Value label position valuePosition = GetResizableTextBoxPosition(editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag], boxWidth, valueStyle); // Value box GUI.Box(valuePosition, string.Empty); // Value label editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag] = DrawResizableTextBox(editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag], valuePosition, valueStyle); height = Math.Max(labelPosition.height, valuePosition.height); drawHelper.NewLine(height / drawHelper.LineHeight); drawHelper.NewLine(.25f); // Apply Button content.text = LEConstants.ApplyBtn; size = GUI.skin.button.CalcSize(content); if (GUI.Button(new Rect(drawHelper.CurrentLinePosition, drawHelper.TopOfLine(), size.x, size.y), content)) { string oldKey = editFieldTextDict[locStringEntry.Key + LEConstants.OrigKeyMetaTag]; string newKey = editFieldTextDict[locStringEntry.Key + LEConstants.KeyMetaTag]; string newValue = editFieldTextDict[locStringEntry.Key + LEConstants.ValueMetaTag]; // Update the key if (!oldKey.Equals(newKey)) { renamedKeys.Add(oldKey, newKey); } // Update the value if (!newValue.Equals(locStringEntry.Value)) { updatedStringsForCurrent.Add(newKey, newValue); } SetDoneLocStringEditMode(locStringEntry); } drawHelper.CurrentLinePosition += size.x + 2f; // Cancel Button content.text = LEConstants.CancelBtn; size = GUI.skin.button.CalcSize(content); if (GUI.Button(new Rect(drawHelper.CurrentLinePosition, drawHelper.TopOfLine(), size.x, size.y), content)) { SetDoneLocStringEditMode(locStringEntry); } drawHelper.CurrentLinePosition += size.x + 2f; // Delete button content.text = LEConstants.DeleteBtn; size = GUI.skin.button.CalcSize(content); if (GUI.Button(new Rect(drawHelper.CurrentLinePosition, drawHelper.TopOfLine(), size.x, size.y), content)) { keysToRemove.Add(locStringEntry.Key); SetDoneLocStringEditMode(locStringEntry); } drawHelper.CurrentLinePosition += size.x + 2f; if (isRTL) { drawHelper.NewLine(); } }