/// <summary> /// Returns a localized client for the specified locale id. /// </summary> /// <param name="identity">The identity.</param> /// <param name="localeId">The locales id.</param> /// <returns>A localized client.</returns> public ComClient GetLocalizedClient(IUserIdentity identity, int localeId) { // check if a logon is required. string userName = null; if (identity != null && identity.TokenType == UserTokenType.UserName) { userName = (identity.GetIdentityToken() as UserNameIdentityToken).UserName; } if (String.IsNullOrEmpty(userName) && localeId == ComUtils.LOCALE_SYSTEM_DEFAULT) { Utils.Trace("COM Client Selected: DEFAULT (no match for locale)"); return(DefaultClient); } // create the key. StringBuilder buffer = new StringBuilder(); buffer.Append(localeId); if (!String.IsNullOrEmpty(userName)) { buffer.Append(':'); buffer.Append(userName); } string key = buffer.ToString(); if (m_localizedClients == null) { m_localizedClients = new Dictionary <string, ComClient>(); } ComClient client = null; if (!m_localizedClients.TryGetValue(key, out client)) { client = CreateClient(); client.Key = key; client.LocaleId = localeId; client.UserIdentity = identity; client.CreateInstance(); m_localizedClients[key] = client; } // Utils.Trace("COM Client Seleted: {0}", key); return(client); }