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); } } }
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. }
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); }
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); }
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; }