private function handleLanguage(TranslationResource $resource, $code, $translationMode, OutputInterface $output)
    {
        $this->writeln($output, sprintf('Updating language <info>%s</info>', $code));
        // Pull it.
        $data = $resource->fetchTranslation($code, $translationMode);
        if ($data) {
            $local = $this->getLocalXliffFile($resource, $code);

            $new = new XliffFile(null);
            $new->loadXML($data);

            foreach ($new->getKeys() as $key) {
                if ($value = $new->getSource($key)) {
                    $local->setSource($key, $value);
                    if ($value = $new->getTarget($key)) {
                        $local->setTarget($key, $value);
                    }
                }
            }
            foreach (array_diff($new->getKeys(), $local->getKeys()) as $key) {
                $this->writeln(
                    $output,
                    sprintf('Language key <info>%s</info> seems to be orphaned, please check.', $key)
                );
            }

            if ($local->getKeys()) {
                if (!is_dir(dirname($local->getFileName()))) {
                    mkdir(dirname($local->getFileName()), 0755, true);
                }
                $local->save();
            }
        }
    }