Exemple #1
0
    /// <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);
    }
Exemple #2
0
    /// <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);
    }
Exemple #3
0
    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;
        }
    }
Exemple #4
0
 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();
 }
Exemple #5
0
 /// <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();
 }
Exemple #6
0
    /// <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);
        }
    }
Exemple #7
0
    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();
    }
Exemple #8
0
 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);
         }
     });
 }