code: function gulpGettextConv({
    determineLocale = defDetermineLocale,
    gettextFormat = 'po',
    ...options
  } = {}) {
    // creating a stream through which each file will pass
    return through.obj(function (file, enc, cb) {
      if (file.isNull()) {
        this.push(file);
        return cb();
      }
  
      let converter;
      let ext;
  
      try {
        [converter, ext] = getConverter(file, gettextFormat);
      } catch (err) {
        return cb(err);
      }
  
      return vinylToString(file, enc)
        .then((contents) => {
          try {
            const domain = determineLocale(file.relative, contents);
            return converter(domain, contents, options);
          } catch (e) {
            throw new PluginError(PLUGIN_NAME, 'determineLocale failed', { showStack: true });
          }
        })
        .then((data) => {
          const dirname = path.dirname(file.path);
          const basename = path.basename(file.path, path.extname(file.path));
  
          Object.assign(file, {
            path: path.join(dirname, `${basename}${ext}`),
            contents: getContents(file, data),
          });
  
          // make sure the file goes through the next gulp plugin
          this.push(file);
          cb();
        })
        .catch((err) => {
          cb(new PluginError(PLUGIN_NAME, err.message));
        });
    });
  }
docs: plugin level function (dealing with files)