Exemplo n.º 1
0
        public static void UnregisterLanguageDataObject(LanguageDataObject obj)
        {
            lock (m_translations)
            {
                if (!m_translations.ContainsKey(obj.Language))
                    return;

                if (m_translations[obj.Language] == null)
                {
                    lock (m_translations)
                        m_translations.Remove(obj.Language);

                    return;
                }

                if (!m_translations[obj.Language].ContainsKey(obj.TranslationIdentifier))
                {
                    if (m_translations[obj.Language].Count < 1)
                    {
                        lock (m_translations)
                            m_translations.Remove(obj.Language);
                    }

                    return;
                }

                if (m_translations[obj.Language][obj.TranslationIdentifier] == null)
                {
                    lock (m_translations)
                        m_translations[obj.Language].Remove(obj.TranslationIdentifier);

                    return;
                }

                if (!m_translations[obj.Language][obj.TranslationIdentifier].Contains(obj))
                {
                    if (m_translations[obj.Language][obj.TranslationIdentifier].Count < 1)
                    {
                        lock (m_translations)
                            m_translations[obj.Language].Remove(obj.TranslationIdentifier);
                    }

                    return;
                }

                lock (m_translations[obj.Language][obj.TranslationIdentifier])
                    m_translations[obj.Language][obj.TranslationIdentifier].Remove(obj);

                if (m_translations[obj.Language][obj.TranslationIdentifier].Count < 1)
                {
                    lock (m_translations)
                        m_translations[obj.Language].Remove(obj.TranslationIdentifier);

                    return;
                }

                if (m_translations[obj.Language].Count < 1)
                {
                    lock (m_translations)
                        m_translations.Remove(obj.Language);
                }
            }
        }
Exemplo n.º 2
0
 public static bool RegisterLanguageDataObject(LanguageDataObject obj)
 {
     if (obj != null)
     {
         lock (m_translations)
         {
             if (!m_translations.ContainsKey(obj.Language))
             {
                 IDictionary<LanguageDataObject.eTranslationIdentifier, IList<LanguageDataObject>> col = new Dictionary<LanguageDataObject.eTranslationIdentifier, IList<LanguageDataObject>>();
                 IList<LanguageDataObject> objs = new List<LanguageDataObject>();
                 objs.Add(obj);
                 col.Add(obj.TranslationIdentifier, objs);
                 m_translations.Add(obj.Language, col);
                 return true;
             }
             else if (m_translations[obj.Language] == null)
             {
                 IDictionary<LanguageDataObject.eTranslationIdentifier, IList<LanguageDataObject>> col = new Dictionary<LanguageDataObject.eTranslationIdentifier, IList<LanguageDataObject>>();
                 IList<LanguageDataObject> objs = new List<LanguageDataObject>();
                 objs.Add(obj);
                 col.Add(obj.TranslationIdentifier, objs);
                 m_translations[obj.Language] = col;
                 return true;
             }
             else if (!m_translations[obj.Language].ContainsKey(obj.TranslationIdentifier))
             {
                 IDictionary<LanguageDataObject.eTranslationIdentifier, IList<LanguageDataObject>> col = new Dictionary<LanguageDataObject.eTranslationIdentifier, IList<LanguageDataObject>>();
                 IList<LanguageDataObject> objs = new List<LanguageDataObject>();
                 objs.Add(obj);
                 m_translations[obj.Language].Add(obj.TranslationIdentifier, objs);
                 return true;
             }
             else if (m_translations[obj.Language][obj.TranslationIdentifier] == null)
             {
                 IList<LanguageDataObject> objs = new List<LanguageDataObject>();
                 objs.Add(obj);
                 m_translations[obj.Language][obj.TranslationIdentifier] = objs;
             }
             else if (!m_translations[obj.Language][obj.TranslationIdentifier].Contains(obj))
             {
                 lock (m_translations[obj.Language][obj.TranslationIdentifier])
                 {
                     if (!m_translations[obj.Language][obj.TranslationIdentifier].Contains(obj))
                     {
                         m_translations[obj.Language][obj.TranslationIdentifier].Add(obj);
                         return true;
                     }
                 }
             }
         }
     }
     return false; // Object is 'NULL' or already in list.
 }
Exemplo n.º 3
0
        public static bool TryGetTranslation(out LanguageDataObject translation, GameClient client, ITranslatableObject obj)
        {
            if (client == null)
            {
                translation = null;
                return false;
            }

            return TryGetTranslation(out translation, (client.Account == null ? String.Empty : client.Account.Language), obj);
        }
Exemplo n.º 4
0
        public static bool TryGetTranslation(out LanguageDataObject translation, string language, ITranslatableObject obj)
        {
            if (obj == null)
            {
                translation = null;
                return false;
            }

            if (Util.IsEmpty(language) || language == DefaultLanguage /*Use the objects base data (e.g. NPC.Name)*/)
            {
                translation = null;
                return false;
            }

            translation = GetLanguageDataObject(language, obj.TranslationId, obj.TranslationIdentifier);
            return (translation == null ? false : true);
        }
Exemplo n.º 5
0
        public static LanguageDataObject GetLanguageDataObject(string language, string translationId, LanguageDataObject.eTranslationIdentifier translationIdentifier)
        {
            if (Util.IsEmpty(language) || Util.IsEmpty(translationId))
                return null;

            if (!m_translations.ContainsKey(language))
                return null;

            if (m_translations[language] == null)
            {
                lock (m_translations)
                    m_translations.Remove(language);

                return null;
            }

            if (!m_translations[language].ContainsKey(translationIdentifier))
                return null;

            if (m_translations[language][translationIdentifier] == null)
            {
                lock (m_translations)
                    m_translations[language].Remove(translationIdentifier);

                return null;
            }

            LanguageDataObject result = null;
            foreach (LanguageDataObject colObj in m_translations[language][translationIdentifier])
            {
                if (colObj.TranslationIdentifier != translationIdentifier)
                    continue;

                if (colObj.TranslationId != translationId)
                    continue;

                if (colObj.Language != language)
                    continue;

                result = colObj;
                break;
            }

            return result;
        }