public static bool LanguageExists(PumkinsTranslation translation)
 {
     if (translation == null)
     {
         return(false);
     }
     return(LanguageExists(translation.languageName, translation.author));
 }
    public static void LoadTranslations()
    {
        var guids = AssetDatabase.FindAssets(typeof(PumkinsTranslation).Name);

        translationScriptGUID = guids[0];

        var def = PumkinsTranslation.GetOrCreateDefaultTranslation();

        for (int i = Languages.Count - 1; i >= 0; i--)
        {
            var lang = Languages[i];
            if (i == 0 && def.Equals(lang))
            {
                break;
            }

            if (!Helpers.IsAssetInAssets(lang))
            {
                Helpers.DestroyAppropriate(lang, true); //careful with allow destroying assets here
                Languages.RemoveAt(i);
            }
        }

        //LoadTranslationPresets();
        FixTranslationAssets();

        if (Languages.Count == 0 || !def.Equals(Languages[0]))
        {
            Languages.Insert(0, PumkinsTranslation.Default);
        }

        var loaded = Resources.LoadAll <PumkinsTranslation>(resourceTranslationPath);

        foreach (var l in loaded)
        {
            int i = Languages.IndexOf(l);
            if (i != -1)
            {
                Languages[i] = l;
            }
            else
            {
                Languages.Add(l);
            }
        }

        string langs = "Loaded languages: {";

        for (int i = 0; i < Languages.Count; i++)
        {
            langs += (" " + Languages[i].languageName);
            langs += (i != Languages.Count - 1) ? "," : "";
        }
        langs += " }";
        PumkinsAvatarTools.LogVerbose(langs);
    }
    static void FixTranslationAssets()
    {
        var files = Directory.GetFiles(Helpers.LocalAssetsPathToAbsolutePath(translationPathLocal));

        foreach (var path in files)
        {
            string localPath = Helpers.AbsolutePathToLocalAssetsPath(path);
            if (ReplaceTranslationGUIDTemp(path, "m_Script", translationScriptGUID))
            {
                AssetDatabase.ImportAsset(localPath);
            }

            PumkinsTranslation translation = AssetDatabase.LoadAssetAtPath <PumkinsTranslation>(localPath);
            translation?.FixEmptyFields();
        }
    }
 public static void SetLanguage(PumkinsTranslation translationFile)
 {
     Strings.Translation = translationFile;
 }