code: func (tp *TranslationProvider) Update(d *deps.Deps) error {
  	sp := source.NewSourceSpec(d.PathSpec, d.BaseFs.SourceFilesystems.I18n.Fs)
  	src := sp.NewFilesystem("")
  
  	i18nBundle := bundle.New()
  
  	en := language.GetPluralSpec("en")
  	if en == nil {
  		return errors.New("the English language has vanished like an old oak table")
  	}
  	var newLangs []string
  
  	for _, r := range src.Files() {
  		currentSpec := language.GetPluralSpec(r.BaseFileName())
  		if currentSpec == nil {
  			// This may is a language code not supported by go-i18n, it may be
  			// Klingon or ... not even a fake language. Make sure it works.
  			newLangs = append(newLangs, r.BaseFileName())
  		}
  	}
  
  	if len(newLangs) > 0 {
  		language.RegisterPluralSpec(newLangs, en)
  	}
  
  	// The source files are ordered so the most important comes first. Since this is a
  	// last key win situation, we have to reverse the iteration order.
  	files := src.Files()
  	for i := len(files) - 1; i >= 0; i-- {
  		if err := addTranslationFile(i18nBundle, files[i]); err != nil {
  			return err
  		}
  	}
  
  	tp.t = NewTranslator(i18nBundle, d.Cfg, d.Log)
  
  	d.Translate = tp.t.Func(d.Language.Lang)
  
  	return nil
  
  }
docs: // Update updates the i18n func in the provided Deps.