static int Main(string[] args)
        {
            var errorsOccured    = false;
            var launchParameters = LaunchParameters.FromCommandLineArguments(args);

            if (launchParameters == null)
            {
                return(-1);
            }

            var baseDirectory = launchParameters.BaseDirectory;

            Console.WriteLine($"Working directory: {baseDirectory}");

            var analyzers = new List <IAnalyzer>
            {
                new FileContentAnalyzer()
            };

            if (!launchParameters.SkipProjectInclusionCheck)
            {
                analyzers.Add(new ProjectInclusionAnalyzer(baseDirectory));
            }

            analyzers.Add(new NamespaceUniquenessAnalyzer());

            Console.WriteLine("Searching for translation files...");

            var i18nFiles = LocateInternationalizationFiles(baseDirectory);

            foreach (var translationFilePath in i18nFiles)
            {
                var errorCollector = new ErrorCollector();

                var translationFile = TranslationFile.TryCreateFromFilePath(translationFilePath);
                if (translationFile == null)
                {
                    errorCollector.AddError("Could not retrieve locale and namespace from file path.");
                }
                else
                {
                    foreach (var analyzer in analyzers)
                    {
                        analyzer.Analyze(translationFile, errorCollector);
                    }
                }

                if (errorCollector.Errors.Any())
                {
                    errorsOccured = true;
                    LogError($"{Path.GetRelativePath(baseDirectory, translationFilePath)}:");
                    foreach (var error in errorCollector.Errors)
                    {
                        LogError(error);
                    }
                }
            }

            if (errorsOccured)
            {
                Console.WriteLine("Error: there are problems with some translation files.");
                Console.WriteLine("Inspect the log messages above.");
                return(-1);
            }

            Console.WriteLine("Success: no problems found with translation files.");
            return(0);
        }