public static function fixSectionLanguagesByAlphabet($alphabetsFile, $sectionsFile)
    {
        if (!is_file($alphabetsFile)) {
            throw new \InvalidArgumentException(sprintf(
                'File "%s" not found.',
                $alphabetsFile
            ));
        }

        if (!is_file($sectionsFile)) {
            throw new \InvalidArgumentException(sprintf(
                'File "%s" not found.',
                $sectionsFile
            ));
        }

        $sections = Yaml::parse($sectionsFile);
        $alphabets = Yaml::parse($alphabetsFile);

        if (!$sections || !$alphabets) {
            return;
        }

        foreach ($alphabets as $language => $alphabetInfo) {
            $alphabetChars = Unicode::ordStr($alphabetInfo['chars']);

            $availableSections = array();

            foreach ($alphabetChars as $char) {
                foreach ($sections as $section => $sectionInfo) {
                    list ($diapMin, $diapMax) = $sectionInfo['diap'];

                    if ($char >= $diapMin && $char <= $diapMax) {
                        $availableSections[] = $section;
                    }
                }
            }

            if (count($availableSections)) {
                foreach ($availableSections as $availableSection) {
                    if (!is_array($sections[$availableSection]['languages'])) {
                        $sections[$availableSection]['languages'] = array();
                    }

                    if (!in_array($language, $sections[$availableSection]['languages'])) {
                        $sections[$availableSection]['languages'][] = $language;
                    }
                }
            }
        }

        file_put_contents($sectionsFile, Yaml::dump($sections));
    }