/// <summary>
        /// Initializes the RESX.
        /// </summary>
        /// <param name="filename">The filename.</param>
        /// <returns>A status string</returns>
        public String InitResx(String filename)
        {
            _session.TranslationItems = ResXManager.Import(filename);
            _currentStep = 0;
            Match  match     = Regex.Match(filename, @"\.[a-z]{2}(-[A-Z]{2})?\.", RegexOptions.None);
            String srcLocale = match.ToString().Replace(".", "");

            /* assume en-US as default */
            if (String.IsNullOrEmpty(srcLocale))
            {
                srcLocale = "en-US";
            }
            _session.SourceLanguageResx = new CultureInfo(srcLocale);
            if (_session.SourceLanguageTmx == null || _session.SourceLanguageResx.Equals(_session.SourceLanguageTmx))
            {
                return("RESX ok!");
            }
            return(String.Format("Warning: TMX language {0} does not match RESX language {1}",
                                 _session.SourceLanguageTmx, _session.SourceLanguageResx));
        }
        /// <summary>
        /// Exports the resx file. Should be used with a <see cref="BackgroundWorker"/>
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="DoWorkEventArgs"/> instance containing the event data.</param>
        public void ExportResX(object sender, DoWorkEventArgs e)
        {
            var worker = sender as BackgroundWorker;

            Debug.Assert(worker != null, "worker != null");
            worker.ReportProgress(0);
            _maxStep     = _session.TranslationItems.Count();
            _currentStep = 0;
            ResXManager.Export(_session.TranslationItems, ExportFileName);
            /* update current TMX file if user wants so */
            if (_session.UpdateTmxFile)
            {
                foreach (TranslationItem translationItem in _session.TranslationItems)
                {
                    ++_currentStep;
                    _tmxQueryManager.Update(translationItem.Source, _session.Fuzziness, translationItem.Target);
                    worker.ReportProgress(Progress);
                }
                _tmxQueryManager.Save(_tmxFilename);
            }
        }