/// <summary>
        /// Gets a instance of translator
        /// </summary>
        /// <param name="translatorName">Translator name</param>
        /// <returns>Instance of translator</returns>
        public ITranslator GetTranslatorInstance(string translatorName)
        {
            ITranslator translator;

            lock (_translatorsPoolSynchronizer)
            {
                if (_translatorsPool.ContainsKey(translatorName))
                {
                    translator = _translatorsPool[translatorName];
                }
                else
                {
                    if (translatorName == Constants.TranslatorName.NullTranslator)
                    {
                        translator = new NullTranslator();
                    }
                    else
                    {
                        TranslatorRegistration translatorRegistration = _assetConfig.Translators[translatorName];

                        if (translatorRegistration == null)
                        {
                            throw new TranslatorNotFoundException(
                                      string.Format(Strings.Configuration_TranslatorNotRegistered,
                                                    OutputCodeType, translatorName));
                        }

                        string translatorFullTypeName = translatorRegistration.Type;
                        translator = Utils.CreateInstanceByFullTypeName <ITranslator>(translatorFullTypeName);
                    }

                    _translatorsPool.Add(translatorName, translator);
                }
            }

            return(translator);
        }
		/// <summary>
		/// Gets a instance of translator
		/// </summary>
		/// <param name="translatorName">Translator name</param>
		/// <returns>Instance of translator</returns>
		public ITranslator GetTranslatorInstance(string translatorName)
		{
			ITranslator translator;

			lock (_translatorsPoolSynchronizer)
			{
				if (_translatorsPool.ContainsKey(translatorName))
				{
					translator = _translatorsPool[translatorName];
				}
				else
				{
					if (translatorName == Constants.TranslatorName.NullTranslator)
					{
						translator = new NullTranslator();
					}
					else
					{
						TranslatorRegistration translatorRegistration = _assetConfig.Translators[translatorName];

						if (translatorRegistration == null)
						{
							throw new TranslatorNotFoundException(
								string.Format(Strings.Configuration_TranslatorNotRegistered,
									OutputCodeType, translatorName));
						}

						string translatorFullTypeName = translatorRegistration.Type;
						translator = Utils.CreateInstanceByFullTypeName<ITranslator>(translatorFullTypeName);
					}

					_translatorsPool.Add(translatorName, translator);
				}
			}

			return translator;
		}