public void TranslateTest()
        {
            MyMemoryTranslator target           = new MyMemoryTranslator();
            string             fromLanguage     = "cs";
            string             toLanguage       = "en";
            string             untranslatedText = "Tohle je testovací překlad.\nDalší řádek.";
            string             expected         = "This is a test translation. The next line.";
            string             actual           = target.Translate(fromLanguage, toLanguage, untranslatedText, true);

            Assert.AreEqual(expected, actual);
        }
        /// <summary>
        /// Uses given translation provider and source and target languages to translate data
        /// </summary>
        public static void Translate(List <AbstractTranslateInfoItem> dict, TRANSLATE_PROVIDER provider, string from, string to)
        {
            AbstractTranslatorService service = null;

            // get translation service
            switch (provider)
            {
            case TRANSLATE_PROVIDER.BING:
                service = BingTranslator.GetService(SettingsObject.Instance.BingAppId);
                break;

            case TRANSLATE_PROVIDER.MYMEMORY:
                service = MyMemoryTranslator.GetService();
                break;

            case TRANSLATE_PROVIDER.GOOGLE:
                service = GoogleTranslator.GetService();
                break;
            }
            if (service == null)
            {
                throw new Exception("Cannot resolve translation provider!");
            }
            else
            {
                try {
                    ProgressBarHandler.StartDeterminate(dict.Count, "Translating...");

                    int completed = 0;
                    // use the service to translate texts
                    foreach (AbstractTranslateInfoItem item in dict)
                    {
                        string oldValue = item.Value;
                        item.Value = service.Translate(from, to, oldValue, SettingsObject.Instance.OptimizeSpecialSequencesInTranslation);
                        completed++;

                        VLOutputWindow.VisualLocalizerPane.WriteLine("Translated \"{0}\" as \"{1}\" ", oldValue, item.Value);
                        ProgressBarHandler.SetDeterminateProgress(completed, "Translating...");
                    }
                } finally {
                    ProgressBarHandler.StopDeterminate("Translation finished", "Ready");
                }
            }
        }