/// <summary> /// get a text from the current language with the stringID /// </summary> /// <returns></returns> public string GetText(string key) { //if this text is cached if (cachedText.ContainsKey(key)) { return(cachedText[key]); } //text is not cached yet, we need to located it bl_LanguageTexts texts = GetCurrentLanguage.Text; for (int i = 0; i < texts.Data.Length; i++) { if (texts.Data[i].StringID == key) { string text = texts.Data[i].Text; //cached this text in a dictionary to get it faster next time if (!cachedText.ContainsKey(key)) { cachedText.Add(key, text); } return(text); } } return("No Defined: " + key); }
/// <summary> /// get a text from the current language with the stringID /// </summary> /// <returns></returns> public bool TryGetText(string key, ref string locaizedText) { //if this text is cached if (cachedText.ContainsKey(key)) { locaizedText = cachedText[key]; return(true); } //text is not cached yet, we need to located it bl_LanguageTexts texts = GetCurrentLanguage.Text; for (int i = 0; i < texts.Data.Length; i++) { if (texts.Data[i].StringID == key) { string text = texts.Data[i].Text; //cached this text in a dictionary to get it faster next time if (!cachedText.ContainsKey(key)) { cachedText.Add(key, text); } locaizedText = text; return(true); } } return(false); }
void CreateLanguage() { bl_LanguageTexts asset = ScriptableObject.CreateInstance <bl_LanguageTexts>(); string path = AssetDatabase.GetAssetPath(bl_Localization.Instance.DefaultLanguage.Text); if (path == "") { path = "Assets"; } else { path = path.Replace(bl_Localization.Instance.DefaultLanguage.Text.name + ".asset", ""); } string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path + "NewLanguage.asset"); AssetDatabase.CreateAsset(asset, assetPathAndName); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorUtility.FocusProjectWindow(); Selection.activeObject = asset; bl_LanguageTexts p = AssetDatabase.LoadAssetAtPath <bl_LanguageTexts>(path + "NewLanguage.asset"); bl_LanguageTexts.TextData[] lt = bl_Localization.Instance.DefaultLanguage.Text.Data; p.Data = new bl_LanguageTexts.TextData[lt.Length]; for (int i = 0; i < lt.Length; i++) { p.Data[i] = new bl_LanguageTexts.TextData(); p.Data[i].StringID = lt[i].StringID; p.Data[i].Text = lt[i].Text; } }
private void OnEnable() { script = (bl_LanguageTexts)target; listProp = serializedObject.FindProperty("Data"); list = new ReorderableList(serializedObject, listProp, false, true, false, false); list.drawElementCallback += DrawElement(); list.drawHeaderCallback += DrawCustomHeader(); }
/// <summary> /// /// </summary> private void OnEnable() { minSize = new Vector3(1000, 500); titleContent = new GUIContent("Localization"); Localization = bl_Localization.Instance; if (Localization != null) { DefaultLang = Localization.DefaultLanguage.Text; } m_SearchField = new SearchField(); }
/// <summary> /// change the current language /// </summary> /// <param name="id">id = index of the language in the Languages list</param> public void SetLanguage(int id) { if (id < 0 || id > Languages.Length - 1) { return; } CurrentLanguageID = id; PlayerPrefs.SetInt(LANGUAGEKEY, id); //reset cached texts cachedText.Clear(); bl_LanguageTexts texts = GetCurrentLanguage.Text; for (int i = 0; i < texts.Data.Length; i++) { cachedText.Add(texts.Data[i].StringID, texts.Data[i].Text); } if (OnLanguageChange != null) { OnLanguageChange(cachedText); } }
void ExportTableToCVS(bl_LanguageTexts data) { if (data == null) { return; } StreamWriter sw = File.CreateText(string.Format("{0}/{1}To{2}.csv", Application.dataPath, DefaultLang.LanguageName, data.LanguageName)); sw.WriteLine(DefaultLang.LanguageName + "," + data.LanguageName); for (int i = 0; i < DefaultLang.Data.Length; i++) { string t1 = DefaultLang.Data[i].Text; string t2 = data.Data[i].Text; t1 = t1.Replace(",", ";"); t2 = t2.Replace(",", ";"); sw.WriteLine(string.Format("{0},{1}", t1, t2)); } sw.Flush(); sw.Close(); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); }
private ReorderableList.ElementCallbackDelegate DrawElement() { return((rect, index, isActive, isFocused) => { rect.height = EditorGUIUtility.singleLineHeight; var property = list.serializedProperty.GetArrayElementAtIndex(index); if (property != null) { var lang = property.FindPropertyRelative("Text"); Rect r = rect; r.width = 70; if (lang.objectReferenceValue != null) { bl_LanguageTexts lt = (bl_LanguageTexts)lang.objectReferenceValue; GUI.Label(r, lt.LanguageName); property.FindPropertyRelative("LanguageName").stringValue = lt.LanguageName; } r = rect; r.x += 85; r.width -= 85; EditorGUI.PropertyField(r, lang, GUIContent.none); } }); }