def merge(self, po_file, source_files):
        """从源码中获取所有条目，合并到 po_file 中。

        :param string po_file: 待写入的 po 文件路径。
        :param list source_files :  所有待处理的原文件路径 list。

        """
        # Create a temporary file to write pot file
        pot_file = tempfile.NamedTemporaryFile(mode='wb', prefix='rookout_', delete=False)
        pot_filename = pot_file.name
        slog.info('Create POT file [%s].', pot_filename)
        xargs = [self._xgettext,
                "--package-name=main",
                "--package-version=0.1",
                "--default-domain=main",
                "--from-code=UTF-8",
                "-C", "-k_",
                "--output", pot_filename]
        txt = subprocess.check_output(xargs+source_files, 
                stderr=subprocess.STDOUT, 
                universal_newlines=True)
        if len(txt) > 0:
            raise(ChildProcessError(txt))
        slog.info('Start merge [%s] to [%s].', pot_filename, po_file)
        xargs = [self._msgmerge, "-U", po_file, pot_filename]
        txt = subprocess.check_output(xargs, universal_newlines=True)
        slog.info(txt)
        pot_file.close()
        os.remove(pot_filename)